Bảng băm phõn tỏn (DHT) là kỹ thuật đƣợc sử dụng trong cỏc ứng dụng P2P. DHT cho phộp quản lý mạng P2P theo đỳng nghĩa với độ tin cậy cao, tớnh khả mở, hiệu quả và cú khả năng chịu lỗi.
DHT là một bảng băm đƣợc cài đặt nhƣ một hệ thống phõn tỏn. Cũng nhƣ một bảng băm thụng thƣờng, DHT cung cấp ỏnh xạ từ khúa đến giỏ trị. Nhƣng khụng giống nhƣ bảng băm thụng thƣờng, cỏc giỏ trị trong một DHT đƣợc lƣu trờn cỏc nỳt khỏc nhau trong mạng chứ khụng phải lƣu trong cỏc cấu trỳc dữ liệu cục bộ. Thụng qua một cặp khúa – giỏ trị tƣơng ứng đƣợc lƣu tại một nỳt phự hợp trờn mạng hoặc đƣợc lấy về từ nỳt tƣơng ứng trờn mạng.
Trong một DHT, khúa đƣợc tớnh ra từ giỏ trị. Tất cả cỏc khúa đều nằm trờn cựng một khụng gian địa chỉ. Cỏc ứng dụng chia sẻ file dữ liệu thƣờng sử dụng khụng gian địa chỉ 160 bit. Để xỏc định nỳt nào lƣu giỏ trị nào, mỗi nỳt phải cú một ID trong khụng gian địa chỉ giống nhƣ khụng gian địa chỉ của khúa. Cỏc DHT đƣa ra khỏi niệm khoảng cỏch giữa hai ID (một khúa cú thể xem nhƣ ID của giỏ trị). Khi đú giỏ trị đƣợc lƣu trờn nỳt cú ID gần với ID của giỏ trị đú nhất.
Để lƣu một giỏ trị trờn mạng, một nỳt gửi thụng điệp yờu cầu lƣu trữ dữ liệu tới một liờn hệ phự hợp đƣợc chọn ra từ bảng bảng định tuyến, trong bảng bảng định tuyến liờn hệ này cú ID gần với ID của dữ liệu cần lƣu nhất. Quỏ trỡnh cứ tiếp tục nhƣ vậy, thụng điệp đƣợc chuyển tiếp trờn mạng cho đến khi nú gặp nỳt cú ID gần với ID của dữ liệu nhất và giỏ trị đƣợc lƣu trờn nỳt này.
Để tỡm một giỏ trị thủ tục cũng tƣơng tự, nỳt cần tỡm dữ liệu sẽ gửi đi thụng điệp tỡm kiếm dữ liệu. Sau quỏ trỡnh chuyển tiếp thụng điệp giống nhƣ quỏ trỡnh chuyển tiếp thụng điệp lƣu trữ dữ liệu, nỳt lƣu trữ dữ liệu sẽ đƣợc tỡm ra và nỳt này sẽ trả dữ liệu cho nỳt tỡm kiếm.
Hỡnh 1.8: Lưu trữ và tỡm kiếm dữ liệu trong DHT
Trong hỡnh 1.8 là vớ dụ về sự ỏnh xạ tờn file trong DHT tới cỏc url. Cỏc cặp khúa- giỏ trị đƣợc gỏn cho cỏc nỳt a, b ,c , d, e và mỗi nỳt sẽ đƣợc định tuyến đến một nỳt khỏc. Cú nỳt khụng cần ngăn nhớ, nhƣ nỳt b. Nếu nỳt d
đƣợc yờu cầu tỡm ra tập tin abc.txt thỡ nú sẽ yờu cầu nỳt a , a sẽ yờu cầu e và kết quả trả về sẽ là tập tin abc.txt.
DHT cú cỏc ƣu điểm khỏc biệt so với dịch vụ hƣớng Client – Server truyền thống.
DHT cho phộp hoạt động phõn tỏn, khụng cần duy trỡ một server trung tõm để điều khiển hoạt động của mạng P2P. Cũng vỡ vậy, cỏc ứng dụng P2P sử dụng DHT là cỏc ứng dụng P2P thuần tuý.
Hệ thống cú tớnh khả mở, nghĩa là hệ thống vẫn hoạt động tốt ngay cả với số lƣợng node và lƣu lƣợng trờn mạng lớn.
Tải đƣợc cõn bằng giữa cỏc nỳt trong mạng.
Hệ thống dựa trờn giả định rằng mạng khụng tĩnh và cỏc thay đổi xuất hiện thƣờng xuyờn với cỏc nỳt tham gia vào mạng và rời bỏ khỏi mạng (cũn gọi là churn)
Việc định tuyến và lấy dữ liệu nhanh và cú thể hoàn thành trong thời gian tỷ lệ loga.
Hệ thống đảm bảo mạnh mẽ, nghĩa là nú cú thể đứng vững ngay cả khi bị tấn cụng trờn diện rộng.
DHT cung cấp dịch vụ lƣu trữ và tỡm kiếm dữ liệu thụng qua hai hàm là insert và lookup.
Hỡnh 1.9: Kiến trỳc bảng băm phõn tỏn