n.join(n’)
predecessor = nil;
successor = n’.find_successor(n);
// định kỳ kiểm tra successor đứng ngay n và báo cho successor //biết về n
Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
47 x = successor.predecessor; if ( x ∈ (n, successor)) successor = x; successor.notify(n); // n’ nghĩ n’ là predecessor của n n.notify(n’)
if (predecessor is nil or n’ ∈ (predecessor,n))
predecessor = n’ ;
//định kỳ cập nhật các finger trong bảng finger table
n.fix_finger()
i = random index > 1 into finger []
finger[i].node = find_successor(finger[i].start);
Thuật tốn 2.3. Giả mã cho q trình stabilization
Hình 2.3 cho chúng ta thấy một ví dụ về q trình join vào mạng của một node. Giả sử node 21 có successor là node 32, trên node 32 đang lưu các key 24 và 30. Node 26 join vào mạng, sau quá trình tìm kiếm, node 26 biết node 32 là successor của mình, nó trỏ con trỏ successor của mình vào node 32 và báo cho node 32 biết. Node 32 sau khi được báo thì trỏ con trỏ predecessor vào node 26. Node 26 copy các key tương ứng với nó (key 24) từ node 32. Đến định kỳ, N21 chạy quá trình stabilize, lúc này con trỏ successor vẫn trỏ vào node 32. Node 21 hỏi node 32 về predecessor của node 32, lúc này predecessor của 32 là 26. Sau khi nhận được câu trả lời, N21 trỏ con trỏ successor vào node 26 và báo cho node 26 biết nó là predecessor của node 26. Node 26 trỏ con trỏ predecessor vào node 21
Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
48
Hình 2.8. Quá trình một node join vào mạng
Quá trình rời khỏi mạng có báo trược được thực hiện như sau: node sắp rời khỏi mạng chuyển các key nó đang lưu sang successor của nó rồi báo cho các node predecessor và successor. Bảng định tuyến của các node liên quan sẽ được cập nhật khi các node này chạy thuật tốn stabilization.
Hình 2.4 dưới đây cho chúng ta một ví dụ về bảng định tuyến của các node khi có sự join/leave. Ban đầu mạng có 3 node với ID là 0, 1, 3, bảng định tuyến của chúng được cho thấy trên hình vẽ.
Sau đó node 6 join vào mạng rồi node 3 rời khỏi mạng, bảng định tuyến của các node và sự thây đổi bảng định tuyến được thể hiện trong hình vẽ với những phần thay đổi có
Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
49
màu đen, những phần khơng đổi có màu xám.
Hình 2.9. (a) Bảng finger và vị trí của key sau khi node 6 join. (b)Bảng finger và vị trí của key sau khi node 3 leave. của key sau khi node 3 leave.
Replication and Fault Tolerance
Các node rời khỏi mạng đột ngột có hai tác động tiêu cực. Thứ nhất là dẫn đến mất dữ liệu lưu trên các node này, thứ hai một phần của vòng bị mấtl liên kết dẫn đến một số ID sẽ khơng được tìm thấy. Có thể xảy ra tình huống một dãy các node liền nhau cùng rời khỏi mạng đột ngột. Chord giải quyết vấn đề này bằng cách cho mỗi node lưu một danh sách log2(N) node theo sau nó trong khơng gian ID. Danh sách này có hai mục đích, thứ nhất là nếu một node phát hiện successor của nó khơng hoạt động, nó sẽ thay thế bằng node ngay cạnh trong successor list, thứ hai, mọi dữ liệu được lưu trên một node nào đó cũng được lưu trên các node trong successor list. Dữ liệu chỉ bị mất hay vòng chỉ bị đứt khi có log2(N) + 1 node liên tiếp fail đồng thời.
Upper Services and Applications
Một số ứng dụng như cooperative file-system [14], một ứng dụng đọc/ghi hệ thống file và một DNS đã được xây dựng dựa trên Chord. Đồng thời, một thuật toán broadcast cũng được phát triển cho Chord
Luận văn thạc sỹ KHMT Chương 2. Các cơ chế bảng băm phân tán trong mạng ngang hàng
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
50
Cài đặt chính của Chord được thực hiện bằng nghôn ngữ C++. Thêm nữa, một C++ discrete-event simulator cũng đã được xây dựng. Naanou là một cài đặt C# của Chord với một ứng dụng chia sẻ file được xây dựng dựa trên nó.
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
51
Chƣơng 3. Chƣơng trình thử nghiệm
3.1. Bài toán thực tế
Hầu hết các DHTs được thiết kế để hoạt động với các peer là máy tính. Đây là mơi trường có độ ổn định khá cao, tức là khoảng thời gian từ lúc một node gia nhập cho đến khi rời khỏi mạng tương đối dài. Trong môi trường này, các DHTs hoạt động với hiệu năng tương đối cao.
Hiệu năng của một DHTs được đánh giá thông qua hai tham số chính là tỷ lệ tìm kiếm dữ liệu thành cơng khi dữ liệu có trên mạng và độ trễ tìm kiếm.
Vài năm trở lại đây các sản phẩm cho người sử dụng có thể nối mạng phát triển hết sức mạnh mẽ và đa dạng, các sản phầm khơng chỉ có máy tính mà cịn có các thiết bị như điện thoại, PDA, tivi, …. Cũng giống như người sử dụng máy tính, người sử dụng các thiết bị này cũng có nhu cầu chia sẻ, khai thác nguồn tài nguyên hết sức phong phú trên mạng P2P, đặc biệt là các tài nguyên như video, audio. Tuy nhiên thời gian kết nối mạng của các thiết bị này thường rất ngắn, thậm chí có thể tính bằng giây, dẫn đến sự bất ổn định của mạng. Các DHTs vốn được thiết kế để hoạt động với các peer là máy tính lúc này khơng đáp ứng được yêu cầu về hiệu năng do khoảng thời gian các peer ở trên mạng quá ngắn. Một mạng như vậy người ta gọi là mạng có churn rate cao.
Một bài toán mới đặt ra cho cộng đồng nghiên cứu P2P là xây dựng các mạng P2P thích nghi được với môi trường churn rate cao. Một trong những giải pháp được nhiều người quan tâm là cải tiến các DHTs hiện có để chúng hoạt động hiệu quả ngay cả trong mơi trường có churn rate cao. Việc đưa ra được giải pháp cải tiến hiệu năng cần căn cứ vào một số cơ sở, một trong những cơ sở quan trọng là việc đánh giá hiệu năng của các DHTs trong môi trường mới.
Việc đánh giá hiệu năng của các DHTs nhằm tạo cơ sở cho việc đưa ra các giải pháp cải tiến hiệu năng của chúng đồng thời giúp các ứng dụng lựa chọn, sử dụng các DHTs hiệu quả hơn.
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
52
Đánh giá hiệu năng của các DHT bao gồm nhiều khía cạnh:
- Xác định ngưỡng churn rate mà các DHT hoạt động tốt.
- Phân tích ảnh hưởng của tham số thiết kế đến hiệu năng của DHT. - So sánh hiệu năng của các DHT khác nhau.
- Đánh giá tính khả mở của các DHT.
Các đánh giá được thực hiện trong dải churn rate rộng từ cao đến thấp, đặc biệt chú trọng đến trường hợp churn rate cao. Khi churn rate càng cao, độ ổn định của mạng càng thấp thì hiệu năng của các DHTs càng giảm. Do đó một trong những nhiệm vụ đầu tiên của phần đánh giá hiệu năng là xác định ngưỡng churn rate mà các DHT hoạt động với hiệu năng cao.
Đánh giá ảnh hưởng của các tham số thiết kế đến hiệu năng một DHTs cho phép xác định các tham số quan trọng đối với hiệu năng của DHT và xác định khoảng giá trị của các tham số trong đó DHTs làm việc tốt.
3.2. Khảo sát các simulator mô phỏng mạng overlay
Cộng đồng nghiên cứu sử dụng khá nhiều simulator khác nhau, có simulator đang được phát triển, có simulator khơng được phát triển tiếp.
Simulator Ngôn ngữ Trạng thái License
P2Psim C++ Active GPL
PeerSim Java Active LGPL
Query-Cycle
Simulator Java Inactive Apache
Narses Java Inactive GPL-like
Neurogrid Java Inactive GPL
GPS Java Inactive Open-Source, No
License
Overlay Weaver Java Active Apache
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
53
PlanetSim Java Active LGPL
Bảng 3.1. Trạng thái phát triển của các simulator
Đặc điểm của các simulator như sau:
Simulator Kiến trúc Tính dễ dùng
Tính khả mở (max nodes)
P2Psim Discrete-event cho mạng P2P có cấu trúc Rất ít tài liệu 3000 node
PeerSim
Query-Cycle hoặc
Discrete – event cho mạng khơng cấu trúc. Có thể mô phỏng node j oining, departing và failing.
Chỉ có mơ phỏng Query -
Cycle là có tài liệu 106 node
Narses Discrete-event, flow - based
topology có thể điều chỉnh
600 node, tùy thuộc vào
topology bên dưới 600 node
Overlay Weaver
Giả lập phân tán và một số giải thuật cho
structured overlay
Tài liệu về API và mã nguồn
tốt 4000 node
PlanetSim Mô phỏng discrete - event, sử dụng API chung Có tài liệu về thiết kế và API
100.000 node Neurogrid Discrete-event cho mạng khơng có cấu trúc, có thể chỉnh sửa để sử dụng cho mạng có cấu trúc
Có tài liệu mở rộng trên web 300.000 node
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
54
Simulator Thống kê Underlying network
P2Psim Cung cấp một lượng hữu hạn
thống kê.
end-to-end time graph, G2 graph, GT-ITM, random, và Euclidean
PeerSim Có thể cài đặt các component
để thống kê dữ liệu Khơng được mơ hình hóa
Narses Có hỗ trợ nhưng phải cài đặt Một số topology
Overlay Weaver Không thể thu thập thống kê Khơng được mơ hình hóa
PlanetSim Khơng có cơ chế thu thập thống
kê nhưng có thể xem trực quan Một số ít topology
Neurogrid Cần sửa mã nguồn Khơng được mơ hình hóa
Bảng 3.2. Đặc điểm của các simulator
3.3. Phần mềm mô phỏng P2PSim
P2PSim là phần mềm mã nguồn mở, đa tiến trình, discrete event để mơ phỏng mạng overlay có cấu trúc với nhiều topology khác nhau như end-to-end time graph, G2 graph, GT-ITM, random, và Euclidean. P2PSim do một nhóm nghiên cứu mạng P 2P tại Đ ạ i h ọ c MIT phát triển. P2PSim được nhiều nhóm nghiên cứu sử dụng để nghiên cứu DHTs.
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
55
Nó có thể mơ phỏng sáu loại giao thức DHTs khác nhau: Chord, Accordion, Koorde, Kelips, Tapestry, Kademlia. P2PSim hoạt động trên hệ điều hành Unix. P2Psim giúp hiểu mã nguồn của các giao thức mạng ngang hàng và so sánh sự khác nhau giữa các giao thức về độ tiện lợi, khả năng thực hiện.
Số node mà P2PSim có thể mơ phỏng phụ thuộc vào giao thức thiết kế và tối đa có thể lên đến 3000 node (giao thức Chord).
Cài đặt
- P2Psim được cài đặt và dịch trên hệ điều hành Unix. Để cài đặt ta cần lấy file nguồn p2psim-0.3.tar.gz tại địa chỉ web:
http://pdos.csail.mit.edu/p2psim/howto.html.
- Để chạy P2PSim cần các gói GCC2.95.3. Để cài đặt GCC ta thực hiện các
bước sau: $ cp gcc-2.95.3.tar.gz /usr/local $ tar –zxvf gcc-2.95.3.tar.gz $ mv gcc-** gcc $ cd gcc $ ./configure --prefix=/usr/local/gcc $ make bootstrap $ make install $ export CC=/usr/local/gcc/bin/gcc $ export CXX=/usr/local/gcc/bin/g++ $ export CPP=/usr/local/gcc/bin/cpp
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
56
- Sau đó ta cài P2PSim. Để cài P2PSim ta thực hiện các bước sau:
$ cp p2psim-0.3.tar.gz /usr/local/src $ tar –zxvf p2psim-0.3.tar.gz
$ cd p2psim-0.3
#Apply patch for Chord protocol
$ cp chord.diff /usr/local/src/p2psim-0.3/protocol $ patch -p0 < chord.diff
$ ./configure
$ make
3.3.1. Các bước mô phỏng với phần mềm P2PSim
Để thực hiện mô phỏng với phần mềm P2PSim ta thực hiện các bước sau:
Bƣớc 1: Tạo một File Topology Euclide ngẫu nhiên sử dụng Perl script
$./generate.pl rtt nodenumber > topology_nodenumber_rtt.txt
Script này có hai tham số đó là:
+ RTT: Là khoảng cách giữa hai Node. + Nodenumber: Là số Node trong mạng
Bƣớc 2: Lựa chọn các tham số để mô phỏng. Các tham số này được khai báo trong
File argument. Các tham số mô phỏng bao gồm:
+ Lifemean: Thời gian tồn tại trung bình của Node trên mạng.
+ Deathmean: Thời gian khơng tồn tại trung bình của Node trên mạng.
+ Lookupmean: Thời gian trung bình một Node sinh ra một yêu cầu tìm kiếm. + Exittime: Thời gian thực hiện mô phỏng.
+ Stattime: Thời gian thực hiện thu thập các thông số thống kê.
Bƣớc 3: Lựa chọn các tham số của DHT trong File argument. Đối với Chord sẽ bao
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
57
+ Base: Xác định số finger trong bảng định tuyến. Nó xác định có bao nhiêu trạng thái ChordFingerPNS giữ (b-1)*logb(n).
+ Successors: Số Successor.
+ Pnstimer: Khoảng thời gian giữa hai lần Chord thực hiện cập nhật lại bảng định tuyến của mỗi Node.
+ Basictimer: Là khoảng thời gian giữa hai lần Chord thực hiện cập nhật lại successor và predecessor của mỗi Node.
+ Succlisttimer: Là khoảng thời gian giữa hai lần Chord cập nhật lại danh sách successor của mỗi Node.
+ Maxlookuptime: Là thời gian tối đa tìm kiếm lại. Nó xác định khi nào từ bỏ việc tìm kiếm lại sau khi nhận các kết quả tìm kiếm khơng chính xác. Nếu Maxlookuptime = 0 tức là khơng thực hiện việc tìm kiếm lại.
+ Recurs: Là để xác định việc tìm kiếm theo kiểu lặp hay theo kiểu đệ quy. Recurs = 1 tức là tìm kiếm theo kiểu đệ quy. Recurs = 0 tức là tìm kiếm theo kiểu lặp.
Bƣớc 4: Chạy mô phỏng. Cú pháp như sau:
$ scripts/run-simulations.pl --protocol protocol_name --topology topology_file -- logdir log_directory --args args_ file.
+ Ta cần truyền vào các tham số là: Tên giao thức DHTs, tên File topology của mạng, thư mục chứa File log, tên File argument.
Bƣớc 5: Kết hợp các kết quả. Bước này thực hiện kết hợp kết hợp các File ở trên lại
thành một File đầu ra duy nhất. Cú pháp:
$ scripts/merge-stats.pl --args protocol_args log/*.log > protocol_out
Bƣớc 6: Vẽ đồ thị kết quả mô phỏng. Cú pháp:
$ scripts/make-graph.pl --dat protocol_out --x BW_TOTALS:live_bw --y CORRECT_LOOKUPS:lookup_mean --convex both.
+ Ta cần truyền vào các tham số: File protocol_out là File kết quả của bước 5, các tham số trục x, trục y.
Luận văn thạc sỹ KHMT Chương trình thử nghiệm
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
58
3.3.2. Kịch bản mô phỏng
Sử dụng phần mềm P2PSim để mơ phỏng Chord: Kích thước của mạng là 100node, 250node, 500node và 1000node. RTT (round trip-time) trung bình khoảng 2 giây thiết lập giữa một cặp node bất kì. Ta tiến hành mơ phỏng để đánh giá hai tham số có liên quan đến hiệu năng của Chord là tỷ lệ tìm kiếm lỗi và trễ trung bình tìm kiếm thành công trong một số điều kiện khác nhau như số lượng node thay đổi, khoảng thời gian các node liên tục đến và rời khỏi mạng (churn rate) thay đổi, để từ đó rút ra một số nhận xét về những thay đổi này đến hiệu năng của Chord. Kịch bản mô phỏng và giá trị các tham số của Chord được lựa chọn như bảng dưới đây.
Bảng 3.3. Các kịch bản mô phỏng
Bảng 3.4. Các tham số của Chord
3.3.3. Đánh giá hiệu năng giao thức Chord trong mạng ngang hàng thông qua kết quả mô phỏng kết quả mô phỏng
a) Kết quả mô phỏng ảnh hưởng của Churn rate đến tỷ lệ tìm kiếm lỗi
Network size (nodes) RTT (s) Churn rate (s)
100,250,500,1000 0.5,1,2,3 10,60,120,300,600