Khơng gian khóa của Chord

Một phần của tài liệu (LUẬN văn THẠC sĩ) bảng băm phân tán và định tuyến trên mạng ngang hàng (Trang 59 - 73)

3 Định tuyến trên mạng ngang hàng

3.4 Khơng gian khóa của Chord

nhiệm cho tất cả các khố phía trước gần nhất của nó theo chiều ngược chiều kim đồng hồ.

Hình 3.4 là một ví dụ đơn giản về khơng gian khố của Chord. Mỗi chuỗi

định danh có độ dài là3–bit nên hệ thống sẽ có8 khố được đánh số từ000 đến

111. Trong ví dụ này, nút 001 là successor của khố 001, nút 100 là successor

của các khoá 010, 011 và 100,...

Định tuyến

Cho một khơng gian khóa Chord, tất cả các khố được sắp xếp và liên kết

giữa khoá và nút là duy nhất. Vì vậy, mỗi cặp khố/giá trị được cấp phát và được quản lý là duy nhất.DHT được hình thành bởi tập tất cả các cặpkhoá/giá trị trên tất cả các nút trong vịng trịn định danh Chord. Các khóa để tra cứu

và cập nhật hoạt động hiệu quả nên việc định vị các nút chịu trách nhiệm cho các khóa trong thực tế được thực hiện một cách nhanh chóng.

Chord có thuật tốn định tuyến vơ cùng đơn giản, số trạng thái trên mỗi nút được yêu cầu là rất ít. Mỗi nút cần lưu trữ nútsuccessor của nó trên khơng

Hình 3.5: Bảng finger trong các nút mạng

gian khoá. Khi cần tra cứu một khoá, mỗi nút sẽ chuyển tiếp truy vấn tới nút

successor của nó trong khơng gian khố. Một trong số các nút sẽ quyết định khố nằm giữa nó và successor của nó. Do vậy, khố phải được lưu trữ bởi

successor của nó. Do đó, successor sẽ truyền kết quả trở lại nút truy vấn gốc. Rõ ràng, nếu áp dụng cách này thì số lượng thơng điệp tuyến tính được gửi đi trong trường hợp xấu nhất sẽ bằng số nút trong vòng tròn. Bởi vậy, Chord đã thêm vào cơ chế mới để tăng cường việc tìm kiếm khố.

Mỗi nút duy trì một bảng định tuyến, được gọi là bảng finger (xem Hình 3.5), liên kết đến các nút khác trong khơng gian khố. Với một khơng gian khố có độ dài l–bit thì bảng finger có tối đa l mục. Giả sử, trên nút có khố là n,

thì hàng thứ i trong bảng định tuyến chính là nút successor đầu tiên cách nút

n ít nhất 2i−1 vị trí (tức là nút successor của vị trí n+ 2i−1 ).

Bảng finger lưu trữ hầu hết l mục, kích thước của nó phụ thuộc vào số lượng khố hoặc nút được hình thành trong DHT. Mỗi dịng của bảng định tuyến

bao gồm khố, địa chỉ IP, số cổng và có thể có một vài thơng tin kế tốn khác (book–keeping). Thậm chí với số lượng khố rất lớn, thì cũng chỉ có một lượng

tương đối nhỏ dữ liệu trên mỗi nút mà có thể ảnh hưởng tới việc quản lý và tìm kiếm. Mỗi dịng trong bảng finger của mỗi nút cung cấp thông tin về các nút gần với nó nhất và khoảng cách liên kết giữa nút này và các nút có thơng tin trong bảng finger được tăng lên theo lũy thừa cơ số hai.

Thuật toán định tuyến Chord khai thác thông tin được lưu trữ trong bảng

finger của mỗi nút. Một nút sẽ chuyển tiếp truy vấn khoá k cho nút tiền nhiệm (predecessor) của k trên khơng gian khố thơng qua bảng finger. Khi truy vấn

tìm được nút n mà k nằm giữa nút n và successor của n trên khơng gian khố, nút n sẽ báo cáo rằng successor của n là câu trả lời của truy vấn.

Như vậy, cho dù khố k có ở xa so với nút gốc, truy vấn vẫn sẽ được định tuyến trên một khoảng cách lớn trên không gian định tuyến trong một bước. Cho các đoạn lũy thừa hai của bảng finger, mỗi bước định tuyến sẽ bao phủ ít

nhất một nửa khoảng cách còn lại trên khơng gian khố giữa nút hiện tại và nút đích. Kết quả này dẫn đến trung bình có O(log(N)) bước định tuyến cho một vịngChord với N nút tham gia. Stoica và đồng nghiệp đã chứng minh thời gian tra cứu trung bình là 12log(N) bước.

Khả năng tự tổ chức

Hệ thống Chord như mô tả ở trên cho phép các nút tham gia và rời bỏ hệ thống một cách dễ dàng cũng như chống lại các nút lỗi một cách hiệu quả nhất.

• Tham gia

Thứ tự để một nút mới tham gia vào Chord như sau: nút mới phải quyết định giá trị khố n của nó. Giao thức gốc của Chord không áp đặt và hạn chế lựa chọn này. Với một nút mới n, các nút o khác phải biết về sự tồn tại củan trong hệ thống. Bằng việc truy vấn đếno với khoá mà nút n sở hữu,

n nhận được successor s của nó. n thơng báo sự hiện diện của nó dẫn đến việc phải cập nhật predecessor của s thành n. Sau đó, nút n sẽ xây dựng bảngfinger bằng việc thực hiện các truy vấn tớio để tìm các successor tại

các vị trí n+ 20, n+ 21, n+ 22,... Lúc này, n có bảng finger của nó và các con trỏ liên kết đến successor là hợp lệ. Tuy nhiên, n khơng có mặt trong

bảng finger của các nút khác. Đặc biệt, n không biết predecessor của nó cũng như successor mới từ đó thuật tốn tra cứu khơng thích hợp cho việc quyết định predecessor của một nút.

• Giao thức ổn định

Chord giới thiệu giao thức ổn định để xác nhận và cập nhật các con trỏ

successor đến các nút tham gia và rời bỏ hệ thống. Tính ổn định địi hỏi phải bổ sung thêm một con trỏ predecessor và thực hiện cập nhật định kỳ trên mọi nút. Hàm ổn định của nút k yêu cầu successor của k trả lại predecessor của nó là p. Nếu p bằng k, k và successor chấp nhận là

predecessor và successor tương ứng của nhau. Thực tế, p nằm giữa k và

successor của nó chỉ ra là p hiện tại đã được thêm vào vòng Chord như là một successor của k. Do đó, nút k cập nhật các con trỏ successor của nó tới p và thơng báo p trở thành predecessor của nó.

Với giao thức ổn định, nút mới n khơng chủ động xác định predecessor.

Thay vào đó, predecessor tự phát hiện và sửa các con trỏ successor và

predecessor không ổn định bằng cách chạy một thủ tục nào đó (thủ tục

stabilize()). Sau khi nútnđã học được cácpredecessor của nó, nó sao chép tồn bộ khố mà nó chịu trách nhiệm, các khoá này nằm giữa predecessor

của n và n, trong khi đó predecessor của n xóa các khố này.

Lúc này, tất cả các con trỏ successor được cập nhật và các truy vấn có thể được định tuyến đúng đắn mặc dù hơi chậm. Từ đó, nút mới n khơng xuất hiện trong bảng finger của nút khác, nó chuyển tiếp truy vấn tới

predecessor của n ngay cả khi n là phù hợp hơn. Sau đó, nút predecessor

của n cần phải chuyển tiếp truy vấn tới n theo con trỏ successor của nó. Số lượng nút trong bảng finger cần cập nhật theo thứ tự là O(log(N)) với

hệ thống có N nút. Dựa vào việc bố trí của bảng finger, một nút mới có

thể xác định các nút với bảngfinger quá hạn nhưpredecessor(n+ 2i−1) với

1< i≤l. Tuy nhiên, ảnh hưởng của bảng finger quá hạn nên hiệu quả tra cứu là rất nhỏ và trong khi đối mặt với nhiều nút tham gia, việc cập nhật bảng finger là khá tốn kém. Do đó, Chord ít khi cập nhật bảng finger.

Tương tự giao thức ổn định, giao thức sửa bảng finger cho mỗi nút n sẽ chạy theo chu kỳ. Giao thức sửa bảngfinger đặt cho hàng i (1< i≤l)của bảng finger một giá trị ngẫu nhiên và thực hiện tìmsuccessor thực sự cho vị trí n+ 2i−1.

• Nút lỗi

Chord giải quyết các nút lỗi với nhiều cấp độ. Để phát hiện các nút lỗi, tất cả liên lạc với các nút khác cần phải được kiểm tra trong thời gian chờ. Khi đó, một nút phát hiện nút lỗi của bảng finger trong khi tra cứu, nó sẽ chọn nút tốt nhất trước nút đó trong bảng định tuyến của nó. Từ đó, khoảng thời gian chờ ngắn là đủ, hiệu quả tra cứu không bị ảnh hưởng trong trường hợp này. Giao thức sửa đảm bảo các nút lỗi được xóa khỏi bảng finger.

Độ chính xác của thơng tin về successor và tính chính xác của tra cứu là đặc biệt quan trọng và cần phải duy trì. Ví dụ, nếu ba nút đầu tiên trong bảng finger của nút n đồng thời bị lỗi thì bảng finger f tiếp theo cịn sống có thể khơng thực sự là successor cịn sống s. Do đó, nút n sẽ giả sử rằng một khố k nào đó được cấp phát tại f mặc dù nó được cấp phát tại s và theo đó sẽ gửi câu trả lời sai cho truy vấn từk. Giao thức ổn định có thể bị

lỗi tương tự khi nhiều nút bị lỗi thậm chí nếu bảng finger sống cũng được sử dụng cho việc lưu trữ các successor bị lỗi.

Để duy trì một con trỏ successor hợp lệ trong khi xuất hiện nhiều nút lỗi đồng thời, một nút sẽ nắm giữ một danh sách successor có độ dài r. Thay

vì sử dụng một con trỏ successor, nó sẽ sử dụng r successor đầu tiên của một nút. Khi đó, một nút phát hiện các successor bị lỗi của nó, nó sẽ trả lại nút successor cịn sống tiếp theo trong danh sách. Trong khi chạy giao thức ổn định, danh sáchsuccessor với các nút lỗi được sửa chữa bằng cách làm tăng nó với việc thêm vào các successor từ các nút còn sống trong danh sách. Vòng Chord chỉ bị ảnh hưởng nếu tất cả các nút trong danh sách successor đồng thời bị lỗi.

Một nút bị lỗi khơng chỉ có nghĩa là khơng thể kết nối được với nó mà dữ liệu nó quản lý cũng bị mất. Dữ liệu bị mất từ một nút có thể được ngăn chặn bằng việc nhân bản dữ liệu cho các nút khác. Trong Chord, nút successor của nút lỗi sẽ chịu trách nhiệm cho các khố và dữ liệu của nút lỗi. Do đó, một ứng dụng tiện ích của Chord sẽ nhân bản dữ liệu cho nút

successor.

• Rời bỏ

Xử lý các nút chủ động rời khỏi hệ thống cũng tương tự như việc xử lý các nút lỗi nhưng khơng ảnh hưởng tới tính ổn định của mạng. Tuy nhiên, xử lý nút chủ động rời khỏi mạng sẽ hiệu quả hơn vì nút lỗi cần phải được phát hiện và sửa chữa lại. Do đó, một nút rời khỏi mạng có thể chuyển các khố và các tài ngun mà nó đang quản lý, lưu trữ chosuccessor của mình và thơng báo tới tất cảsuccessor và predecessor. Điều này đảm bảo dữ liệu

mà nó nắm giữ khơng bị mất và thơng tin định tuyến vẫn cịn ngun vẹn.

3.2.3 So sánh khả năng định tuyến giữa thuật toán CAN và

Chord

Hai thuật toán CAN và Chord đều cài đặt giao diện DHT nhưng có cách tổ chức các nút mạng khác nhau. Phần này, chúng ta sẽ đi thực hiện các thực nghiệm để đánh giá hiệu quả định tuyến của hai thuật toán trên với số lượng

nút mạng và các tham số khác nhau.

Kịch bản thực nghiệm

Thực nghiệm được thực hiện trong hai bước như sau:

• Bước 1: Xây dựng một mạng ngang hàng mô phỏng với số nút cho trước. Trong Bảng 3.1, cột thứ nhất chứa thông tin về số lượng nút mạng trong mỗi thức nghiệm. Số lượng nút mạng ít nhất là 128 và nhiều nhất là 8192 nút mạng. Thực nghiệm sau sẽ tăng số nút mạng lên gấp hai lần thực nghiệm trước.

Trong bước này, chương trình mơ phỏng sẽ tạo ra các nút mạng (được lưu trữ trong bộ nhớ máy tính). Các nút mạng này sẽ tự động liên kết với nhau để hình thành lên một mạng chồng lấn.

• Bước 2:Tính thời gian định tuyến trung bình trong mỗi trường hợp tương ứng với số nút mạng. Thời gian định tuyến được tính bằng thời gian chuyển tiếp thơng điệp từ nút nguồn cho đến khi nhận lại được kết quả (nếu khơng nhận được kết quả trả về thì khơng tính truy vấn này vì trong mơi trường mơ phỏng, xác suất xảy ra trường hợp này rất thấp). Mỗi lần thực nghiệm sẽ thực hiện định tuyến 50 lần, và thời gian định tuyến trung bình sẽ được tính bằng tổng thời gian chia cho số lần định tuyến.

Ở bước này, các nút sẽ tự sinh ra các thông điệp một cách ngẫu nhiên và gửi thơng điệp này đi đến nút đích và chờ thơng điệp phải hồi trở lại. Thời gian định tuyến của một thơng điệp được tính bằng thời gian từ lúc thơng điệp được gửi đi đến lúc nút nguồn nhận lại được thông điệp trả lời.

Kết quả

Bảng 3.1 thể hiện quan hệ giữa số lượng nút mạng và thời gian định tuyến trung bình khi áp dụng thuật tốn CAN 2–chiều, 3–chiều và thuật toán Chord.

Số lượng nút mạng CAN 2D CAN 3D Chord 128 0.1500580969 0.2178938356 0.0426247554 256 0.1994710127 0.3032350783 0.0415086840 512 0.2298036937 0.3713765900 0.0952941536 1024 0.3093046722 0.4559075342 0.1259631849 2048 0.4452054795 0.5529904599 0.2960035470 4096 0.5858304795 0.7119771282 0.7147596624 8192 0.8543297456 0.8567606409 1.4540423190 Bảng 3.1: Quan hệ giữa số lượng nút mạng và thời gian định tuyến trung bình

Nhận xét

Hình 3.6 cho ta thấy rằng, khi số lượng nút mạng tăng lên sẽ làm tăng thời gian định tuyến trung bình. Tuy nhiên, trong thực nghiệm này chỉ cho ta thấy: số lượng nút mạng tăng theo hàm mũ (cơ số 2) nhưng thời gian định tuyến trung bình của thuật tốn CAN có tốc độ tăng tuyến tính. Đồng thời, khi số chiều trong khơng gian khóa của thuật tốn CAN tăng lên thì thời gian định tuyến trung bình của thuật tốn này giảm đi. Dễ dàng giải thích được điều này là vì khi số chiều tăng lên thì số lượng các nút hàng xóm của mỗi nút cũng tăng theo (số hàng xóm tối đa là 2d với d là số chiều). Do số lượng hàng xóm nhiều lên việc tìm tới đích của thơng điệp sẽ được thực hiện nhanh chóng hơn.

Trong khi đó, đối với thuật tốn Chord, số lượng nút hàng xóm của mỗi nút

là cố định (tối đa bằng độ dài khóa), chính vì thế khi số nút mạng tăng lên thì thời gian định tuyến trung bình tăng nhanh so với thuật tốn CAN. Nhưng bù

lại, trong trường hợp xảy ra sự cố thì thuật tốn Chord nhanh chóng phát hiện được vị trí xảy ra lỗi bằng cách kiểm tra định kỳ các nút mạng được lưu trữ trong bảng finger và sửa chữa lại nó. Cịn đối với CAN, sẽ khó khăn hơn trong

việc thu hồi lại cáczone đã cấp phát nên việc tăng số chiều của khơng gian khóa trong CAN khơng tốt trong trường hợp các mạng hay xảy ra lỗi.

Kết luận

Kết quả thu được

Mơ hình mạng ngang hàng đã và đang chứng tỏ vai trò quan trọng của mình trong các hoạt động thực tiễn. Tuy nhiên, vẫn cịn tồn tại trong nó nhiều vấn đề thách thức cần phải nghiên cứu và giải quyết. Luận văn tập trung và giải quyết bài toán định tuyến trong mạng ngang hàng nhằm nâng cao độ chính xác của định tuyến và giảm độ trễ. Những kết quả mà luận văn đã đạt được như sau:

• Thứ nhất, luận văn đi trình bày những kiến thức tổng quan về mạng ngang hàng và các ứng dụng của mạng ngang hàng đã và đang được triển khai trong thực tế. Qua đó, ta có thể thấy được vai trò quan trọng của mạng ngang hàng trong truyền thơng và nó vẫn là xu hướng của tương lai. Từ những phân tích về lợi ích và sự phát triển nhanh chóng của mạng ngang hàng có thể thấy mơ hình mạng ngang hàng sẽ thay thế được các mơ hình mạng truyền thống. Tuy nhiên, để đạt được điều đó, mơ hình mạng ngang hàng cần phải giải quyết rất nhiều vấn đề thách thức, những vấn đề này được đặt ra bởi chính bản thân mơ hình mạng cũng như các yếu tố khách quan khác như hạng tầng mạng, phần cứng,... Hiện nay, có rất nhiều các nghiên cứu đi sâu vào tìm hiểu và giải quyết các vấn đề thách thức còn lại của mạng ngang hàng.

• Thứ hai, một trong những hướng tiếp cận mới để giải quyết bài toán định tuyến trong mạng ngang hàng đó là áp dụng ý tưởng bảng băm phân tán.

Trong Chương 2, luận văn trình bày những kiến thức về bảng băm, bảng băm ổn định và bảng băm phân tán. Theo thứ tự sắp xếp, các bảng băm sau sẽ khắc phục những nhược điểm và cải tiến các ưu điểm của bảng băm

Một phần của tài liệu (LUẬN văn THẠC sĩ) bảng băm phân tán và định tuyến trên mạng ngang hàng (Trang 59 - 73)

Tải bản đầy đủ (PDF)

(73 trang)