3.2.9.1.Các ñiểm yếu của Chord trong ñiều kiện Churn rate rất cao
Trong ñiều kiện churn rate rất cao (Node join/leave hệ thống liên tục) Chord cho thấy một số ñiểm yếu:
• Quá trình bảo trì (maintenance) không ñảm bảo ñược ñộ chính xác của các bảng ñịnh tuyến: Quá trình ổn ñịnh (stabilization) ñược thực hiện theo ñịnh kỳ, trong khoảng thời gian sau khi Node join/leave và trước khi quá trình stabilization (successor list, finger table) hoàn tất, tìm kiếm một Key có thể:
+ Bị fail do Node fail hoặc mới gia nhập hệ thống nhưng hệ thống chưa biết (successor list không chính xác). Do vậy cần một quá trình maintenance tích cực (active) hơn, phản ứng ngay với các thay ñổị
+ Bị chậm (latency lớn) do bảng finger table có tỷ lệ không chính xác caọ Do vậy, cần một quá trình bảo trì tích cực hơn, phản ứng ngay với các thay ñổi nếu muốn tăng hiệu năng.
• Chord không thực hiện sao chép (replication) các Key trong hệ thống, trong ñiều kiện churn rate rất cao, node chứa thông tin dễ bị fail hoặc không tìm thấỵ Do vậy, cần thực hiện sao chép sẽ tăng khả năng thành công.
• Chord không có cơ chế lưu trữ (caching) kết quả tìm kiếm. Vì vậy, nếu có cơ chế caching, hiệu năng tìm kiếm có thể cao hơn.
3.2.9.2.Các giải pháp nâng cao hiệu năng của Chord
Căn cứ vào các ñiểm yếu của Chord, ñể nâng cao hiệu năng (ñược ñánh giá bằng tỷ lệ tìm kiếm thành công và trễ tìm kiếm thành công trung bình) của Chord ta có thể thực hiện một số giải pháp sau:
• Caching proxỵ
• Active maintenancẹ
• Replication.
Ạ Caching Proxy
Cấu trúc
Trên vòng Chord có một số caching proxy, mỗi proxy chịu trách nhiệm các Node trong một dải ID trên không gian ID. Ví dụ: Mỗi proxy chịu trách nhiệm cho dải ID ñứng trước nó trong không gian ID tính từ proxy ñứng ngay trước nó.
Hoạt ñộng
• Khi một Node lookup một Key K, kết quả trả về là ID của Node chịu trách nhiệm cho K sẽ ñược trả về cho Node tìm kiếm và cho proxy, proxy lưu kết quả này vào trong cachẹ Ví dụ bao gồm Key K, Node ID, Node IP, time, frequency, …
• Khi một Node tìm kiếm một Key K, nó sẽ thực hiện ñồng thời lookup thông thường theo bảng ñịnh tuyến và gửi thẳng lookup request ñến caching proxỵ Nếu trong proxy có lưu Key K và Node chịu trách nhiệm cho Key K, proxy sẽ trả kết quả cho Node ñang tìm kiếm.
• Sau một thời gian, kết quả lưu trên caching proxy sẽ bị timeout. Kết quả nào bị timeout trước có thể xác ñịnh dựa trên các tiêu chí khác nhau (ví dụ dựa vào tần suất tìm kiếm, thời gian truy vấn cuối cùng).
Nhận xét:
• Ưu ñiểm: Caching proxy nâng cao hiệu năng của hệ thống (giảm latency).
• Nhược ñiểm: Dữ liệu có thể không chính xác nếu proxy không kịp cập nhật.
B. Active maintenance
Khi Node N join vào hệ thống. Theo thuật toán Chord, Node N sẽ trỏ con trỏ successor vào Node successor của nó và thông báo tới Node successor ñể trỏ con trỏ predecessor vào N. Predecessor của N chỉ cập nhật successor và Node N cập nhật
predecessor sau khi quá trình stabilization thực hiện và hoàn tất. Do vậy, khi churn rate cao, successor list sẽ không ñược cập nhật kịp thờị
Giải pháp active maintenance không dùng DHT proxy:
• Khi N gia nhập hệ thống và tìm ñược successor của nó, successor của N sẽ nhận N là predecessor ñồng thời nó sẽ thông báo predecessor cũ về thay ñổi này, predecessor cũ sẽ ngay lập tức cập nhật thay ñổi (predecessor cũ nhận N là successor mới và N nhận nó làm predecessor của mình).
• Ưu ñiểm: Sẽ cập nhật ngay successor list khi thay ñổi xảy rạ
Giải pháp active maintenance dùng DHT proxy:
• Cấu trúc: Trong không gian ID có một số proxy ñược phân bố ngẫu nhiên, mỗi proxy lưu cấu trúc mạng (successor list) của dải ID từ proxy trước ñến nó.
• Hoạt ñộng: Mỗi Node gia nhập hệ thống sẽ thông báo cho proxy chịu trách nhiệm cho nó, proxy sẽ căn cứ vào ID của Node mới gia nhập hệ thống và ID của các Node ñã có trong hệ thống ñể chèn Node mới vào vị trí thích hợp rồi báo cho Node mới successor và predecessor của nó. Khi một Node nhận thấy successor của nó rời khỏi hệ thống, nó sẽ báo cho proxy biết ñể cập nhật.
• Ưu ñiểm:Khi nhiều Node join/leave ở các vị trí gần nhau, hệ thống vẫn ñược cập nhật kịp thời và chính xác.
• Nhược ñiểm: Khả năng mở rộng mạng có thể bị ảnh hưởng. C. Replication
• Chord không hề cung cấp cơ chế sao lưu (replication) dữ liệu trên mạng.
• Giải pháp: Tiến hành sao lưu key K tại r Node ngay sau Node M chịu trách nhiệm cho K. Khi ñó thuật toán tìm kiếm chuyển thành tìm kiếm một dải ID liên tiếp. Có thể tiến hành tìm kiếm ñồng thời key K tại vài Node (ví dụ tại Node M và Node M + [r/2] ) ñể tăng khả năng thành công .
• Ưu ñiểm: Tăng khả năng thành công.
Chương 4
ðÁNH GIÁ HIỆU NĂNG CỦA GIAO THỨC CHORD
TRÊN MẠNG NGANG HÀNG
Chương này sẽ mô phỏng một vài tham số có liên quan ñến hiệu năng của giao thức Chord. Cụ thể là tỷ lệ tìm kiếm lỗi (fraction of failed lookups), trễ tìm kiếm thành công trung bình (medium successful lookup latency) và tỷ lệ tìm kiếm thành công. Mở ñầu chương là những giới thiệu qua về các phương pháp nghiên cứu mạng ngang hàng, ñồng thời trình bày các ưu nhược ñiểm của từng phương pháp nghiên cứu, từ ñó lựa chọn phương pháp mô phỏng bằng phần mềm P2Psim. Phần tiếp theo của chương sẽ giới thiệu cách thức ñể thực hiện mô phỏng với phần mềm P2PSim, các tham số cần cài ñặt với giao thức Chord khi thực hiện mô phỏng giao thức nàỵ Phần cuối cùng của chương là một vài kết quả mô phỏng với các tham số là tỷ lệ tìm kiếm lỗi, tỷ lệ tìm kiếm thành công, và trễ tìm kiếm thành công trung bình trong một số ñiều kiện khác nhau của mạng như số lượng Node trong mạng thay ñổi, churn rate thay ñổi, RTT thay ñổi từ ñó ñưa ra những nhận xét và ñánh giá về các yếu tố có ảnh hưởng ñến hiệu năng của Chord.
4.1. Các phương pháp nghiên cứu và ñánh giá mạng ngang hàng hàng
4.1.1.Phương pháp phân tích
Người ta tổ chức phân bố các máy trong mạng theo một quy luật toán học nhất ñịnh. Căn cứ vào các phép biến ñổi toán học, các ñịnh lý, tính chất ñể phân tích mạng. Phương pháp này thu ñược ñộ chính xác rất cao khi ñánh giá các tham số của mạng. Tuy vậy nó chỉ thích hợp với mô hình có topo mạng ñơn giản, tuân theo quy luật sắp xếp. Nói chung, trong thực tế thì mạng rất phức tạp, các ñiểm trong mạng sắp xếp một cách ngẫu nhiên và mạng thường rất lớn. Lúc ñó phương pháp phân tích không thể ñưa ra kết quả chính xác ñược. Khi dùng phương pháp phân tích thì nhiều tham số phức tạp của mạng bị bỏ quạ ðây là phương pháp ñược sử dụng trong nghiên cứu ñánh giá những tham số ñơn giản.
4.1.2.Phương pháp thử nghiệm
Sử dụng phương pháp phân tích tỏ ra khá phức tạp, một giải pháp ñược ñặt ra là chạy thử nghiệm với hệ thống thực. Nhưng hệ thống P2P có thể gồm có một số lớn các Node, bất kỳ sự thử nghiệm nào thậm chí trên một quy mô tương ñối nhỏ khoảng vài nghìn Node là không thực tế thậm chí không thực hiện ñược. Khi ñưa những thay ñổi vào thử nghiệm như thay ñổi giao thức ñang chạy trên các Node và topo của mạng thì sẽ rất khó và thời gian thử nghiệm chắc chắn sẽ lớn. Vì vậy phương pháp này cũng chỉ ñược thực hiện tại các cơ quan, tổ chức khi cần những kết quả ñánh giá một mạng mớị Ví dụ như tổ chức PlanetLab ñã cung cấp 753 Node tại 363 site ñể kiểm tra mạng. Các mạng P2P thường có số lượng các Node tham gia rất lớn nên phương pháp thử nghiệm gặp rất nhiều khó khăn và ít ñược dùng.
4.1.3.Phương pháp mô phỏng
ðây là phương pháp có thể giải quyết những khó khăn của các phương pháp trên và trong thực tế hay sử dụng. Người ta xây dựng các phần mềm ñể mô phỏng mạng, với các tham số ñưa vào phần mềm sẽ xử lý ñưa ra các kết quả. Căn cứ vào các kết quả ñó ta có thể ñánh giá chất lượng của một mạng P2P, ñộ tối ưu của một thuật toán trong mạng. Tuy vậy phương pháp mô phỏng vẫn còn tồn tại những hạn chế, do ñó nên kết hợp với các phương pháp trên ñể ñánh giá mạng có hiệu quả. Hiện nay có nhiều phần mềm mô phỏng ñể ñánh giá mạng P2P.
Bảng 4.1 dưới ñây trình bày các phần mềm mô phỏng mạng P2P cùng với giao thức và ñặc tính của nó.
Bảng 4.1. Các phần mềm mô phỏng.
Mỗi phần mềm mô phỏng có những ñặc ñiểm riêng và phương thức mô phỏng riêng, tùy vào từng trường hợp và mục ñích cụ thể mà ta sử dụng các phần mềm trên ñể mô phỏng.
Bài luận này sẽ tập trung ñi sâu vào phương pháp thứ ba ñó là phương pháp mô phỏng ñể nghiên cứu và ñánh giá hiệu năng của giao thức Chord trên mạng ngang hàng.
4.2. ðánh giá hiệu năng của giao thức Chord trên mạng ngang hàng bằng phương pháp mô phỏng hàng bằng phương pháp mô phỏng
4.2.1.Các tham số mô phỏng ñể ñánh giá hiệu năng của giao thức Chord trên mạng ngang hàng
Trong bài luận này, có ba tham số chính ñược tập trung ñánh giá ñó là: trễ tìm kiếm thành công trung bình, tỷ lệ tìm kiếm lỗi, và tỷ lệ tìm kiếm thành công.
Trong ñó, trễ tìm kiếm thành công trung bình (tính bằng ñơn vị thời gian ms) là khoảng thời gian từ khi một Node ñưa ra yêu cầu tìm kiếm trên mạng cho ñến khi nhận ñược kết quả tìm kiếm và kết quả tìm kiếm ñó là chính xác. ðộ trễ tìm kiếm thành công trung bình này càng nhỏ càng tốt. ðộ trễ này phụ thuộc vào từng giao
thức DHT. Mỗi giao thức DHT khác nhau sẽ có ñộ trễ khác nhaụ Mặt khác, ñối với mỗi giao thức DHT cũng có một vài yếu tố ảnh hưởng ñến ñộ trễ này chẳng hạn như số lượng Node, sự thay ñổi của mạng (ñặc trưng bởi churn rate), khoảng cách giữa các Node mạng. Bài luận này chỉ tập trung vào giao thức Chord và ñánh giá các yếu tố có liên quan ñến trễ tìm kiếm thành công trung bình ñối với giao thức Chord.
Tỷ lệ tìm kiếm lỗi cũng là một trong những tham số quan trọng ñể ñánh giá hiệu năng của mạng. Tỷ lệ tìm kiếm lỗi càng nhỏ càng tốt. Cũng giống như trễ tìm kiếm thành công trung bình thì tỷ lệ tìm kiếm lỗi cũng phụ thuộc vào từng giao thức DHT. Mỗi giao thức DHT sẽ có một tỷ lệ tìm kiếm lỗi khác nhau và tỷ lệ tìm kiếm lỗi có thể dùng ñể ñánh giá tính hiệu quả của các DHT. Mặt khác với mỗi giao thức DHT lại có nhiều yếu tố ảnh hưởng ñến tỷ lệ tìm kiếm lỗi chẳng hạn như: Số lượng Node trong mạng, sự thay ñổi của mạng... Các yếu tố này sẽ ñược phân tích và ñánh giá cụ thể ở phần tiếp theo của chương.
4.2.2.Giới thiệu phần mềm P2PSim
P2PSim là phần mềm có thể mô phỏng mạng có cấu trúc. Nó có thể mô phỏng sáu loại giao thức DHTs khác nhau: Chord, Accordion, Koorde, Kelips, Tapestry, Kademliạ P2PSim có mã nguồn mở, nó có thể hoạt ñộng trên các 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ới giao thức Chord nó có thể mô phỏng ñến 3000 Nodẹ
4.2.2.1. Cài ñặt phần mềm P2PSim
• 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/howtọ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:
$ 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
• 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
4.2.2.2. 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
$./generatẹpl rttnodenumber > topology_nodenumber_rtt.txt
Script này có hai tham số ñó là:
+ RTT: Là khoảng thời gian thiết lập giữa một cặp Node bất kì. + 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.
+ 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 gồm các tham số sau:
+ Base: Xác ñịnh cơ sở của 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 Nodẹ
+ 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 Nodẹ
+ 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 Nodẹ
+ Maxlookuptime: Là thời gian tối ña tìm kiếm lạị 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ạị
+ Recurs: Là ñể xác ñịnh việc tìm kiếm theo kiểu lặp hay theo kiểu ñệ quỵ Recurs = 1 tức là tìm kiếm theo kiểu ñệ quỵ 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_ filẹ
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 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
$ 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 ỵ
4.2.3.Cài ñặt mô phỏng
Ta sẽ sử dụng phần mềm P2PSim ñể mô phỏng Chord: Kích thước của mạng là 100 Node, 250 Node, 500 Node và 1000 Nodẹ RTT (round trip-time) trung bình khoảng 0.5s, 1s, 2s, và 3s thiết lập giữa một cặp Node bất kì. Ta tiến hành mô phỏng ñể ñánh giá các tham số có liên quan ñến hiệu năng của Chord là tỷ lệ tìm kiếm lỗi, tỷ lệ tìm kiếm thành công và trễ tìm kiếm thành công trung bình 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, RTT 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à