3 Định tuyến trên mạng ngang hàng
2.9 Tra cứu khóa
cả các mục dữ liệu trong nút 000 mà có giá trị băm là 101, 110 và 111 sẽ được chuyển vào nút vừa thêm vào như Hình 2.9. Tương tự, một nút khi rời khỏi mạng, nó sẽ chuyển hết dữ liệu được lưu trữ trong nó cho nút kế tiếp theo chiều kim đồng hồ.
Để tra cứu khoá, mỗi nút trong mạng duy trì một bảng định tuyến đến các nút có vị trí làk+ 001, k+ 010, ...,k+ 100 như Hình 2.9. Nếu các vị trí này khơng phải là các nút sử dụng được thì hệ thống sẽ tìm nút sử dụng được gần nhất theo chiều kim đồng hồ. Trong Hình 2.9, nút 001 + 001 = 010 và 001 + 010 = 011
khơng sử dụng được (vì khơng có nút mạng tương ứng với các khóa này) nên nút gần nhất sẽ là nút 100 và nút 101 không sử dụng được nên nút gần nhất sẽ là nút 100. Giả sử, nút 001 có u cầu tìm vị trí nút lưu mục dữ liệu có khố là
110. Nó sẽ tìm trên bảng định tuyến của nó nút có giá trị lớn hơn hoặc bằng giá
trị của mục dữ liệu. Ở đây, nút 111 sẽ là nút lưu mục dữ liệu mà ta cần tìm.
2.3.3 Tính chất của DHT
• Tự chủ và phi tập trung: các nút tự hình thành hệ thống mà khơng có sự phối hợp bất kỳ của trung tâm nào.
• Khả năng chịu lỗi: hệ thống rất đáng tin cậy thậm chí ngay cả với trường hợp các nút tham gia, rời đi và bị lỗi liên tục.
• Khả năng mở rộng: hệ thống hoạt động hiệu quả ngay cả khi số nút rất lớn.
Các đặc trưng của DHT:
• Ngược lại với hệ thống ngang hàng khơng có cấu trúc, mỗi nút trong DHT
quản lý một lượng nhỏ các tham chiếu tới các nút khác. Số lượng tham chiếu có thể phụ thuộc vào số lượng nút trong mạng hoặc các cấu hình của mạng.
• Bằng việc ánh xạ các nút và các mục dữ liệu vào cùng một không gian địa chỉ, việc định tuyến tới một nút dẫn đến việc định tuyến tới các mục dữ liệu mà nút đó chịu trách nhiệm.
• Truy vấn được định tuyến thông qua một số lượng nhỏ các nút để đến nút đích. Vì tập các tham chiếu của mỗi nút là nhỏ, một mục dữ liệu có thể được xác định chính xác vị trí bằng việc định tuyến qua một vài bước. Nút đầu tiên của một tra cứu có thể tới bất kỳ nút nào trong DHT.
• Bằng việc phân phối các định danh của các nút và các mục dữ liệu một cách đều nhau trong khơng gian khóa nên việc tải các mục dữ liệu thu được là cân bằng giữa tất cả các nút.
• Vì khơng có bất kỳ nút nào có vai trị khác nhau trong hệ thống nên việc hình thành các điểm nóng và thắt nút cổ chai có thể tránh được. Cũng như việc rời đi hoặc bị loại bỏ của các nút khơng ảnh hưởng đáng kể đến DHT.
Do đó,DHT được xem là một hệ thống tốt để chống lại các lỗi ngẫu nhiên cũng như các cuộc tấn cơng.
• Hệ thống đưa ra được câu trả lời chắc chắn về kết quả của truy vấn. Nếu mục dữ liệu được lưu trữ trong hệ thống, nó chắc chắn sẽ được tìm thấy.
2.3.4 Cấu trúc của DHT
Cấu trúc của DHT được chia thành ba phần chính như sau:
• Khơng gian khố (keyspace) trừ tượng: ví dụ như một tập các chuỗi có độ dài l–bit trong thuật tốn Chord,...
• Phân hoạch khơng gian khố (keyspace partitioning): một cơ chế chia quyền sở hữu của khơng gian khố cho các nút tham gia.
• Mạng chồng lấn (overlay network): mạng được hình thành khi các nút kết nối với nhau cho phép hệ thống tìm được nút chứa khố trong khơng gian khoá.
2.3.5 Các cơ chế của DHT
Truy vấn và lưu trữ dữ liệu phân tán là mục đích chính của DHT. Trong
phần này, ta sẽ thảo luận về các cơ chế chung trong việc quản lý dữ liệu (chèn và truy vấn dữ liệu) và các nút mạng (tham gia, rời bỏ và bị lỗi).
Trước tiên, một nút cần phải tham gia vào trong hệ thống DHT thì mới có thể truy vấn và lưu trữ dữ liệu. Các nút mới tham gia vào hệ thống dẫn đến sự thay đổi về mặt cơ sở hạ tầng củaDHT nên các thông tin định tuyến và dữ liệu cần phải được điều chỉnh. Lúc này, các nút mới có thể chèn các mục dữ liệu vào hệ thống cũng như lấy các dữ liệu khác từ nó. Trong trường hợp một nút bị lỗi hoặc rời khỏi hệ thống thì DHT cần phải tự phát hiện và điều chỉnh.
Sau đây là các cơ chế chung của DHT trong việc quản lý các nút mạng:
Một nút muốn tham gia vào DHT cần trải qua bốn bước. Bước thứ nhất, nút mới sẽ liên lạc với hệ thống bằng cách sử dụng các phương thức lan tỏa để lấy thông tin của một vài nút bất kỳ đã tham gia. Các nút này được coi là các điểm vào (entry point) cho đến khi nút mới là một thành viên chính thức của DHT. Bước thứ hai, nút mới cần phải được gán một phần
của không gian địa chỉ logic. Tùy thuộc vào các cài đặt của DHT cụ thể mà một nút có thể chọn một phần bất kỳ hoặc cụ thể cho nó hoặc là nó sẽ quyết định dựa trên trạng thái hiện tại của hê thống. Bước tiếp theo, các thông tin định tuyến trong hệ thống sẽ được cập nhất để phản ánh sự xuất hiện của nút mới. Cuối cùng, nút mới sẽ truy vấn tồn bộ các cặp (khóa, giá trị) mà nó phải chịu trách nhiệm từ các nút đã lưu trữ chúng trước đây.
• Xử lý lỗi
Các nút lỗi phải được xem là xảy ra thường xuyên trong hệ thống phân tán gồm nhiều các nút mạng khơng đáng tin và có kết nối khơng đảm bảo. Do đó, các thao tác phi cục bộ (non–local) trong DHT cần phải chống lại các nút lỗi khác. Điều này ảnh hưởng tới thiết kế tự tổ chức của các thuật toánDHT. Chúng phải được thiết kế để ln ln hồn thành mục tiêu và
đối phó với tất cả các gián đoạn có thể xảy ra.
Ví dụ, thủ tục tra cứu thường được thiết kế để sử dụng các đường thay thế để đi đến đích khi một nút trong đường đi ban đầu bị lỗi. Đây là một ví dụ về phản ứng phục hồi, nghĩa là, một lỗi được xử lý trong một thao tác chuẩn của DHT. Rất nhiều ứng dụng DHT có cơ chế phục hồi chủ động để duy trì các thơng tin định tuyến. Do đó, các nút trong DHT thăm dị các nút khác một cách định kỳ để kiểm tra xem liệu các nút khác có hoạt động hay khơng. Nếu khơng hoạt động thì các mục định tuyến tương ứng sẽ được thay thế bởi các nút khác.
Hơn nữa, các nút lỗi dẫn đến việc phân hoạch lại không gian địa chỉ của
DHT. Điều này có thể địi hỏi các cặp (khóa, giá trị) phải được di chuyển
giữa các nút và các thao tác duy trì được thêm vào để phù hợp với yêu cầu cân bằng tải mới. Khi một nút bị lỗi thì các dữ liệu mà nó lưu trữ sẽ bị mất trừ khi DHT có cơ chế nhân bản dữ liệu ra nhiều nút khác nhau. Một vài DHT có cách tiếp cận mềm hơn (soft–state) nghĩa là nó khơng đảm bảo tính bền vững của dữ liệu. Các mục dữ liệu thường được lược bớt khỏi DHT nếu chúng không được các ứng dụng cập nhật định kỳ. Do đó, một nút lỗi dẫn đến mất các dữ liệu tạm thời của ứng dụng cho đến khi nó được cập nhật.
• Rời bỏ
Theo ngun tắc, một nút rời khỏi DHT có thể được đối xử như một nút lỗi. Tuy nhiên, các ứng dụng DHT thường yêu cầu các nút rời đi thông báo cho hệ thống trước khi thực sự rời bỏ. Điều này cho phép các nút khác sao chép dữ liệu từ nút sẽ rời đi và cập nhật thông tin định tuyến ngay lập tức để đảm bảo hiệu quả định tuyến.
2.3.6 Các giao diện DHT
Về mặt chức năng của DHT thì chúng ta có thể nhìn nhận nó dưới hai góc độ là i) DHT được xem như một hệ thống định tuyến hoặc ii) một hệ thống lưu trữ. Cách nhìn nhận thứ nhất tập trung vào việc phân phối các tài nguyên đến các nút dựa trên các khóa tương ứng của các tài ngun. Cịn đối với cách nhìn nhận thứ hai thì DHT được xem như là một hệ thống tương tự một bảng băm. Hai khái niệm này được thể hiện trong các ứng dụng cài đặt từng giao diện DHT cụ thể.
• Giao diện định tuyến
gian địa chỉ logic, không gian này chia đều cho các nút tham gia. Một định danh bất kỳ trong khơng gian khóa có thể sử dụng giống như một địa chỉ đích của một thơng điệp. Do đó,DHT có chức năng chuyển tiếp một thông điệp với một định danh cụ thể đến nút mạng chịu trách nhiệm lưu trữ định danh này.
Một giao diện với hai phép toán nguyên thủy là đã đủ để xây dựng các ứng dụng phân tán trên nền tảng này. Phép toán nguyên thủy send sử dụng định danh của nút đích trong thơng điệp và gửi thơng điệp này từ một nút bất kỳ trong hệ thống đến nút đích. Phép tốnreceive truyền thơng điệp đến và định danh của nút đích đến ứng dụng tại nút nhận.
Tất cả các phép toán khác như xử lý các nút đến, đi hoặc sửa chữa sẽ được cài đặt trong bản thân DHT và trong suốt với các ứng dụng. Nói chung, lõi của DHT thì rất ít chức năng nhưng rìa của hệ thống thì rất linh hoạt cho việc thiết kế các ứng dụng. Trong thực tế, lưu trữ và truy vấn dữ liệu với các chiến lược cân bằng tải được cài đặt trên giao điện định tuyến.
• Giao diện lưu trữ
Giống như một hệ thống lưu trữ, một DHT cài đặt một giao diện cho việc lưu trữ liên tục và tin cậy trong việc truy vấn dữ liệu trong môi trường phân tán. Trên mỗi nút, các giao diện ứng dụng cung cấp hai phép toán nguyên thủy của bảng băm là phép put và get. Phép put lấy một cặp (khóa, giá trị) và lưu chúng vào nút chịu trách nhiệm cho định danh key.
Tương tự, phép get với một định danh sẽ lấy được giá trị tương ứng. Các cài đặt của giao diện này thêm vào DHT một mức độ phức tạp khác ngồi độ chính xác và hiệu quả định tuyến. Các lớp lưu trữ cần phải đối phó với các nút lỗi, ngăn chặn mất dữ liệu từ các nút lỗi dựa vào cơ chế nhân bản, đạt được cân bằng tải, quản trị,...
2.3.7 Nhận xét
DHT cung cấp một giao diện hiệu quả cho việc định tuyến và quản lý dữ liệu trong các hệ thống phân tán. Bằng việc rải các thông tin định tuyến và dữ liệu trên nhiều nút mạng, vấn đề mở rộng của hệ thống tập trung đã tránh được trong khi việc truy vấn dữ liệu hiệu quả đáng kể hơn trong các hệ thống khơng có cấu trúc. Ngồi ra, giao diện chung của DHT hỗ trợ hàng loạt các ứng dụng và người dùng.
Một số thách thức trong khâu thiết kế DHT gồm:
• Hiệu quả định tuyến:
Độ trễ định tuyến và các thao tác tra cứu bị ảnh hưởng bởi cấu trúc của khơng gian địa chỉ, thuật tốn định tuyến, số lượng tham chiếu đến các nút khác, khả năng nhận biết của các giao thức tầng IP,...
• Chi phí quản lý:
Giá của việc duy trì DHT phụ thuộc vào các yếu tố như số lượng mục dữ liệu trong bảng định tuyến, số lượng liên kết đến các nút khác và giao thức phát hiện lỗi,...
• Tính động:
Một lượng lớn các nút tham gia và rời bỏ DHT gây ra áp lực lớn cho tính ổn định của hệ thống, giảm hiệu quả định tuyến, phát sinh lưu lượng quản lý bổ sung, thậm chí dẫn đến phân mảnh hoặc làm sụp đổ cả hệ thống.
Tuy còn tồn tại một vài thách thức nhưng các thuật toán, được phát triển bởi các nhà khoa học, nghiên cứu, đã giải quyết được chúng. DHT tỏ ra rất hiệu quả đối với các hệ thống có yêu cầu mở rộng cao, linh hoạt, nhanh chóng,... Chính vì vậy, chương tiếp theo luận văn sẽ phân tích và áp dụng nguyên lý của
Chương 3
Định tuyến trên mạng ngang hàng
3.1 Định tuyến trên P2P có sử dụng DHT
Trong các phương pháp định tuyến truyền thống được trình bày ở Chương 1, mỗi phương pháp đều có những hạn chế nhất định. Áp dụngDHT cho việc định tuyến trên mạng ngang hàng là một giải pháp tốt khắc phục được các nhược điểm của các phương pháp đã có.
Để mạng ngang hàng hoạt động theo nguyên tắc của DHT, ta coi các nút
mạng hoạt động như các thùng khoá. DHT cung cấp một thuật toán tra cứu hiệu quả và chính xác, vì vậy một nút mạng muốn truy vấn một dữ liệu nào đó ta chỉ cần thực hiện thuật toán tra cứu là xác định được vị trí của nút mạng đang lưu trữ dữ liệu cần tìm. Do vậy, thuật tốn định tuyến trong mạng sử dụng
DHT được giải quyết bằng bài toán tra cứu khố.
Trong thực tế, có nhiều phương pháp khác nhau để định tuyến trong mạng ngang hàng có sử dụng DHT, các phương pháp này đều dựa trên nguyên tắc cơ
bản là mỗi nút sẽ biết thông tin của một vài nút khác bằng cách lưu trữ một số hữu hạn các liên kết đến nút đó. Khi nhận được thơng điệp với một khóa của nút đích mà nó khơng chịu trách nhiệm lưu trữ thì nó sẽ chuyển thơng điệp đó sang một nút khác mà nó biết. Q trình này được thực hiện đệ quy cho tới khi nút đích được tìm thấy.
Việc chọn đường đi tiếp theo được quyết định bằng một thuật toán định tuyến và các số liệu định tuyến của nút hiện tại. Một loại số liệu định tuyến cơ bản là độ “gần gũi”: thông điệp luôn được chuyển tới nút quản lý khố gần nhất với khố của nút đích của thơng điệp. Trong trường hợp lý tưởng, thơng điệp đến được đích của nó với số lượng nút phải qua là ít nhất. Rõ ràng, nếu các nút bị lỗi hoặc thông tin bảng định tuyến không đúng hoặc bị giới hạn thì tính ổn định của hệ thống là các bài toán thách thức đối với việc thiết kết thuật toán và các số liệu.
Có rất nhiều thuật tốn định tuyến trong mạng ngang hàng có áp dụng nguyên tắc của DHT. Các thuật tốn này được chứng minh là có khả năng mở
rộng số lượng nút tham gia tốt, định vị dữ liệu chính xác với độ trễ thấp, việc quản lý các nút tham gia và rời bỏ hệ thống linh hoạt, dễ dàng trong việc bảo trì bảng định tuyến trên mỗi nút và đảm bảo sự cân bằng về lượng tài nguyên mà mỗi nút tham gia vào mạng đóng góp. Phần tiếp theo, luận văn xin trình bày hai thuật tốn định tuyến (tra cứu) tiêu biểu trong mạng ngang hàng áp dụng nguyên lý DHT là thuật toán CAN và thuật toán Chord. Các so sánh,
đánh giá giữa các thuật tốn cũng sẽ được trình bày ở phần này.
3.2 Thuật tốn CAN và Chord
Phần này sẽ đi phân tích chi tiết hai thuật tốn triển khai giao diện DHT
tiêu biểu. Sau đó, chúng tơi sẽ tiến hành cài đặt các thuật toán và đánh giá về khả năng định tuyến của chúng trong trường hợp số lượng nút mạng thay đổi trong môi trường mơ phỏng.
3.2.1 Thuật tốn CAN
CAN (Content Addressable Network) được Ratnasamy và đồng nghiệp đưa ra năm 2001 [24]. Việc định vị dữ liệu và định tuyến các thơng điệp trong CAN
Hình 3.1: Mạng CAN 2–chiều với 6 nút. Mỗi nút được gán cho một zone và các nútđược phân biệt bởi biên của mỗizone tương ứng