Hà Nội, ngày 28 tháng 10 năm 2008 Trang 9 Danh mục thuật ngữ Tiếng Anh Tiếng Việt Peer-to-peer Mạng ngang hàng Peer Đồng đẳng trong mạng ngang hàng Node Một thiết bị ố n i mạng một pee
Trang 1LUẬ N VĂN TH C SĨ KHOA H Ạ Ọ C
NGÀNH: CÔNG NGH THÔNG TIN Ệ
Trang 2I H C BÁCH KHOA HÀ NỘI -
1B
LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH: CÔNG NGH THÔNG TIN Ệ
3898
THUẬT TOÁN CHORD
NGÔ HOÀNG GIANG
HÀ NỘI 2008
Trang 3hiệu năng của thuật toán Chord Error! Bookmark not defined.LỜI CAM ĐOAN Error! Bookmark not defined.LỜI CẢM ƠN Error! Bookmark not defined.Mục lục 1Danh mục các thuật ngữ và từ viết tắt Error! Bookmark not defined.Danh mục hình vẽ Error! Bookmark not defined.Danh mục các thuật toán Error! Bookmark not defined.Danh mục các bảng Error! Bookmark not defined.Lời mở đầu Error! Bookmark not defined.Chương 1 Lý thuyết tổng quan Error! Bookmark not defined.1.1 Lý thuyết chung về về mạng P2P Error! Bookmark not defined.1.1.1 Khái niệm mạng P2P Error! Bookmark not defined.1.1.2 Quá trình phát triển của các hệ thống P2P Error! Bookmark not defined.
1.1.3 Ứng dụng p2p Error! Bookmark not defined.1.1.4 Các vấn đề đối với mạng p2p hiện nay Error! Bookmark not defined.1.2 Lý thuyết về Distributed Hash Table (DHT) Error! Bookmark not defined 1.2.1 Hash Table (bảng băm) Error! Bookmark not defined.1.2.2 Distributed Hash Table Error! Bookmark not defined.1.3 Giới thiệu một số DHT Error! Bookmark not defined.1.3.1 Chord Error! Bookmark not defined.1.3.2 Kademlia Error! Bookmark not defined.1.3.3 Tapestry Error! Bookmark not defined.1.3.4 Kelips Error! Bookmark not defined.1.4 Các phương pháp đánh giá, thử nghiệm mạng P2P Error! Bookmark not defined
1.4.1 Khảo sát các simulator mô phỏng mạng overlay Error! Bookmark not defined
1.4.2 P2PSim Error! Bookmark not defined.Chương 2 Đánh giá hiệu năng một số DHT Error! Bookmark not defined.2.1 Bài toán thực tế Error! Bookmark not defined.2.2 Đánh giá hiệu năng một số DHT Error! Bookmark not defined.2.2.1 Mục tiêu và cơ sở lý luận Error! Bookmark not defined.2.2.2 Quá trình thực nghiệm và phương pháp đánh giá hiệu năng Error! Bookmark not defined
Trang 42.2.5 Đánh giá ảnh hưởng của các tham số thiết kế đến hiệu năng các DHT
Error! Bookmark not defined
Chương 3 Cải tiến hiệu năng của Chord Error! Bookmark not defined.3.1 Hạn chế của giao thức Chord Error! Bookmark not defined.3.2 Giải pháp cải tiến giao thức Chord Error! Bookmark not defined.3.3 Giải pháp duy trì vòng dùng cơ chế lock Error! Bookmark not defined.3.3.1 Mục tiêu Error! Bookmark not defined.3.3.2 Cơ chế làm việc Error! Bookmark not defined.3.4 Giải pháp caching proxy Error! Bookmark not defined.3.4.1 Mục tiêu Error! Bookmark not defined.3.4.2 Cơ chế làm việc Error! Bookmark not defined.3.5 Giải pháp dùng nhân bản đối xứng cải tiến Error! Bookmark not defined.3.5.1 Mục tiêu Error! Bookmark not defined.3.5.2 Cơ chế làm việc Error! Bookmark not defined.Kết luận Error! Bookmark not defined.Tài liệu tham khảo Error! Bookmark not defined
Trang 5LỜI CAM ĐOAN
Luận văn thạc sỹ này do tôi nghiên cứu và thực hiện dưới sự hướng dẫn của Thầy giáo TS Nguyễn Chấn Hùng Để hoàn thành bản luận văn này, ngoài các tài liệu tham khả đ o ã liệt kê, tôi cam đoan không sao chép các công trình hoặc thiết kế tốt nghiệp của người khác
Hà Nội, ngày 28 tháng 10 năm 2008
(Ký và ghi rõ họ tên)
Ngô Hoàng Giang
Trang 6LỜI CẢM ƠN
Trước hết tôi vô cùng biết ơn sâu sắc đến Thầy giáo TS Nguyễn Chấn Hùng – người đã tr c ti ự ếp dành nhi u th ề ời gian tận tình hướ ng d ẫn, cung cấp những thông tin quý báu giúp đỡ tôi hoàn thành bản luận văn này
Tôi xin chân thành cả m n Ban lãnh đạo Trung tâm mạng thông tin – ơ Trường Đại học Bách khoa Hà Nội, nơi tôi đang công tác đã tạo nhiề đ ề u i u kiệ n
độ ng viên khích lệ tôi có thể để hoàn thành b n lu n văn này ả ậ
Sau cùng tôi xin bày tỏ lòng biế ơ t n đến người thân cùng b n bè ạ đồng nghiệp, những người luôn cổ vũ động viên tôi hoàn thiện bản luận văn này
Hà Nội, ngày 28 tháng 10 năm 2008
Ngô Hoàng Giang
Trang 9Danh mục thuật ngữ
khoảng thời gian
Trang 11Hình 2.12 Ảnh hưởng c a tham s “base” đối v i hi u n ng c a Tapestry (trái) và ủ ố ớ ệ ă ủtham số “gossip interval” đối với hiệu năng của mạng Kelips trong mạng 1000 nodes khi các node join/leave với interval=600sU 65
Hình 2.13 Biểu di n convex hull c a successor stabilization interval (trái) và finger ễ ủstabilization interval (phải ) trong m ng Chord 1000 node khi các node join/leave với ạinterval=600sU 66
Trang 12Danh mục thuật toán
Trang 14là mạng structured overlay dựa trên khả năng l u tr và tìm ki m d li u hi u qu của ư ữ ế ữ ệ ệ ả
cơ chế bảng băm phân tán (Distributed Hash Table hay DHT)
Các DHT được thiết kế để làm trong môi trường tương đối ổn định với các peer
là máy tính Tuy nhiên, vài năm gầ đn ây, các thiết bị nối m ng ngày càng phong phú, ạ
đa d ng nh tivi hay các thi t b wireless nh đ ệạ ư ế ị ư i n tho i, PDA, … Các thi t b này k t ạ ế ị ếnối và rời khỏi mạng sau một thời gian ngắn (churn rate cao) khiến cho thông tin v ềcác peer trên mạng liên tục thay đổi dẫn đến hi u năng của các DHT giảm sút rõ rệt ệ
Đánh giá và c i thi n hi u n ng c a các DHT trong đ ềả ệ ệ ă ủ i u ki n m ng churn rate cao là ệ ạbài toán đang rất được quan tâm hiện nay
Luận văn bao gồm ba phần Phần thứ nhất tóm tắt lý thuyết chung về mạng peer-to-peer Phần thứ hai, luận văn phân tích, đánh giá hiệu năng c a một số DHT nổi ủtiếng như Chord, Kademlia, Tapestry, Kelips trong đ ềi u kiện mạng churn rate cao Dựa trên kết quả đạt được, luận văn phân tích h n chạ ế của giao th c Chord và đưa ra gi i ứ ảpháp cải tiến hiệu năng của giao thức này trong đ ềi u kiện churn rate cao
Các kết quả nghiên cứu trong luận v n ã được công bố trên một số bài báo ă đquốc tế và trong nước [15, 16, 17, 18]
Trang 15Chương 1. 0BLý thuyết tổng quan
1.1.1 Khái niệm mạng P2P
Trong khoảng 10 năm trở lạ đi ây, l nh v c P2P nh n được s quan tâm c a r t ĩ ự ậ ự ủ ấnhiều nhóm nghiên cứu, c a các công ty, trường đại h c và ã có nh ng bước phát ủ ọ đ ữtriển mạnh mẽ Ngày nay các ứng d ng peer-to-peer được s dụụ ử ng r ng rãi cho nhi u ộ ềmục đích khác nhau như chia sẻ tài nguyên và nội dung, chat, chơi game, …
Cũng giống như các xu hướng đang trong quá trình phát triển khác, hiện nay chưa có một định nghĩa chính xác về ạ m ng P2P Dưới đây là m t s định ngh a v P2P: ộ ố ĩ ề
Theo Oram, P2P là một lớp các ứng d ng tận dụng các tài nguyên như bộụ nh , ớ
năng lực xử lý, nội dung, … tại các đ ểm cuối trong mạng Internet Bởi vì truy cập vào icác tài nguyên phân tán này cũng có nghĩa là hoạt động trong một môi trường liên kết không ổn định và với địa chỉ IP có thể thay đổi, các node P2P ph i ho t động ngoài h ả ạ ệthống DNS và có quyền tự trị cao hoặc hoàn toàn tự trị
Theo Miller, P2P là một kiến trúc trong đó các máy tính có vai trò và trách
nhiệm như nhau Mô hình này đối lập với mô hình client/server truyền thống, trong ó đ
một số máy tính được dành riêng để phục vụ các máy tính khác P2P có năm đặc đ ểm: i
− Vi c truy n d li u và thông tin gi a các peer trong m ng dễ dàng ệ ề ữ ệ ữ ạ
− Các peer v a có th ho t động nh client v a có th ho t động nh server ừ ể ạ ư ừ ể ạ ư
− N i dung chính trong m ng được cung c p b i các peer ộ ạ ấ ở
− M ng trao quy n i u khi n và tự ịạ ề đ ề ể tr cho các peer
− M ng h tr các peer không k t n i thường xuyên và các peer không có địa chỉ ạ ỗ ợ ế ố
IP cố định
Theo P2P Working Group: P2P computing là sự chia s tài nguyên và d ch v ẻ ị ụ
bằng cách trao đổi trực tiếp giữa các hệ thống Tài nguyên và dịch vụ ở đây bao gồm
Trang 16thông tin, chu kỳ ử x lý, không gian lưu trữ Peer-to-peer computing tận d ng sụ ức m nh ạtính toán của các máy tính cá nhân và kết n i mố ạng, cho phép doanh nghiệp tận dụng sức mạnh tổng hợp của các client
Các định nghĩa về P2P thống nhất ở mộ ốt s khái ni m: chia s tài nguyên, t ệ ẻ ựtrị/phân tán, địa chỉ IP động, vai trò vừa là client vừa là server
1.1.2 Quá trình phát triển của các hệ thống P2P
Peer-to-Peer là thuật ngữ tương đối mới trong l nh v c m ng và các hệ thống ĩ ự ạphân tán Theo Oram, P2P computing bắt đầu tr thành đề tài được nhi u người quan ở ềtâm từ giữa những n m 2000 Trong khoảng thời gian từ đă ó đến nay, P2P trải qua vài thế h , mệ ỗi thế hệ được phát triển với những động cơ, mục đích của mình
Thế h th ệ ứ nhấ t
Thế hệ P2P đầu tiên bắt u vớ ựđầ i s xu t hi n c a ng d ng chia s file Napster ấ ệ ủ ứ ụ ẻNapster và các ứng dụng khác trong thế hệ th nh t s dụng mô hình centralized ứ ấ ửdirectory Đây là mô hình hybrid P2P trong đó hầu hết các peer trong hệ thống có vai trò như nhau, một số peer có vai trò lớn hơn và được gọi là các server
Hình 1.1 cho thấy m t ví d về mô hình centralized directory Trong mô hình ộ ụnày, các peer muốn chia sẻ file với các peer khác sẽ thông báo với server về các file này Khi một peer muốn tìm m t file nào ộ đó, nó sẽ gửi yêu c u đến server, d a trên các ầ ựthông tin đã thu th p được, server s tìm ra các peer chứa file đó và trả kếậ ẽ t qu tìm ảkiếm cho peer yêu cầu K t quế ả trả ề v là peer phù hợp dựa trên một số thông số như ố t c
độ kế ốt n i, kích thước file, … Sau khi nh n ậ được kết quả, peer tìm kiếm sẽ trao đổi file trực tiếp với peer chứa file mà không thông qua server nữa
Trang 17Hình 1.1 Mô hình centralized directory
Đóng góp chính c a th hệ ứủ ế th nh t là ã đưa ra ki n trúc m ng không xem các ấ đ ế ạmáy tính như client và server mà xem chúng như các máy cung cấp và sử dụng tài nguyên với vai trò tương đương nhau Mô hình centralized directory cho phép tìm kiếm thông tin trong không gian lưu trữ một cách nhanh chóng, tuy nhiên, đ ểi m y u c a c a ế ủ ủ
mô hình này là tính khả mở vì t i trên index server s tăả ẽ ng tuy n tính v i s lượng peer ế ớ ốĐồng thời các h th ng s dụng mô hình này, đ ểệ ố ử i n hình là Napster còn gặp vấn đề về bản quyền các tài nguyên
Thế h th ệ ứ hai
Thế hệ th hai b t đầu v i các ng d ng nh Gnutella, Freenet làm vi c mô ứ ắ ớ ứ ụ ư ệhình flooded requests Mô hình này không có bất kỳ server nào, các peer bình đẳng như nhau Các hệ thống peer to peer thế hệ ứ th hai là các h th ng peer to peer thu n ệ ố ầtúy Không giống thế hệ th nh t, các peer không thông báo về các nội dung chúng ứ ấchia sẻ, khi một peer muốn tìm kiếm một file, nó gửi yêu cầu tới các peer kết n i trố ực tiếp v i nó, n u các peer ó không tìm th y file, m i peer s gửớ ế đ ấ ỗ ẽ i yêu c u tìm ki m đến ầ ế
Trang 18các peer kết n i trố ực tiếp với nó, quá trình cứ diễn ra như vậy cho đến khi request b ịtimeout Quá trình gửi yêu cầu tìm kiếm đi như vậy gọi là flooding XHình 1.2X biểu di n ễmột mô hình flooding request
Hình 1.2 Mô hình flooding request
Thế hệ ứ th hai xóa b được m t s i m x lý t p trung trong m ng nh ng tính ỏ ộ ố đ ể ử ậ ạ ưkhả mở còn kém h n do m ng s dụơ ạ ử ng thu t toán flooding sinh ra quá nhi u traffic ậ ềThêm nữa, các mạng làm việc theo mô hình này không đảm bảo sẽ tìm được dữ liệu có trên mạng do phạm vi tìm kiếm bị giới hạn Một số mạng trong th hệ ứế th hai đưa ra một số cải ti n Freenet đưa ra mô hình document routing, trong ó d li u được l u ế đ ữ ệ ưtrên trên node có id tương tự ớ v i id của dữ liệu và các query được chuyển tiếp dựa trên
id của dữ liệu tìm kiếm Kazza, Gnutella sử ụ d ng khái niệm super peer trong đó một số node hoạt động như directory service, giảm lượng flooding trong mạng
Trang 19Thế h th ệ ứ ba
S ự đơn giản trong giải pháp và kh năả ng xóa b i m t p trung, chuy n trách ỏ đ ể ậ ểnhiệm pháp lý về phía người s dụử ng c ng nh hạũ ư n ch vềế tính kh mởả do l u lượng ưquá lớ đn ã thu hút cộng đồng nghiên cứu về mạng và các h th ng m Bài toán đặt ra ệ ố ởcho cộng đồng nghiên cứu là xây dựng m t mạng P2P overlay khả mởộ không có iểm đ
đ ềi u khi n t p trung N lựể ậ ỗ c gi i quy t bài toán này là s xu t hi n c a “structured P2P ả ế ự ấ ệ ủoverlay networks”
Thế hệ thứ ba được khởi đầu với các dự án nghiên cứu nh Chord, CAN, Pastry, ưTapestry và P-Grid Các dự án này đưa ra khái niệm Distributed Hash
Table (DHT) Mỗi peer trong hệ thống có một ID thu được từ việc b m các đặc thu c ă ộtính đặc trưng của peer ó nh địa ch IP hay public key M i data item c ng có m t ID đ ư ỉ ỗ ũ ộthu được theo cách tương tự với các peer Hash table lưu data dưới d ng c p key-value ạ ặNhư vậy, node ID và c p key-value được b m vào cùng một không gian ID Các node ặ ăsau đó được nối với nhau theo một topology nào đó Quá trình tìm kiếm dữ liệu trở thành quá trình định tuyến với kích thước bảng định tuyến nh và chiều dài đường đi ỏcực đại Thế hệ thứ ba đảm bảo xác xuất tìm thấy thông tin cao
Các DHT được xây dựng nh m m c ích cho phép các peer ho t động như một ằ ụ đ ạcấu trúc dữ liệu phân tán với hai hàm chính Put(key,value) và Get(Key) Hàm Put lưu
dữ liệu tại một peer nào đó sao cho bất kỳ peer nào c ng có th tìm được b ng hàm Get ũ ể ằCác hàm này hoàn thành sau khi đi qua một số nhỏ các chặng Giải pháp DHT đảm bảo cho mạng có tính khả mở và kh năả ng tìm th y thông tin cao trong khi v n hoàn ấ ẫtoàn phân tán DHT đang được xem như là cách tiếp c n hậ ợp lý cho vấn đề định vị và định tuyến trong các h thốệ ng P2P C ng đồng nghiên c u ã đưa ra nhi u DHT khác ộ ứ đ ềnhau Mỗi DHT hoạt động theo nguyên lý chung và có ư đ ểu i m riêng, Chord với thiết
k ế đơn giản, Tapestry và Pastry giải quyết được vấn proximity routing, … đề
Trang 201.1.3 Ứng dụng p2p
Các ứng dụng p2p có thể chia vào bốn nhóm:
Chia sẻ file (file sharing): lưu trữ và chia sẻ nội dung là ng d ng thành công ứ ụnhất của công nghệ p2p Các ứng dụng chia sẻ file tập trung vào việ ưc l u tr thông tin ữtrên các peer khác nhau trên mạng và lấy thông tin từ các peer ó Các ng d ng thu c đ ứ ụ ộnhóm này bao gồm Napster, Gnutella, Freenet, Kazaa, Chord, …
Tính toán phân tán (distributed computing): các ứng dụng thuộc nhóm này sử
dụng tài nguyên từ các máy tính được nối m ng Ý tưởng chính c a các ng d ng tính ạ ủ ứ ụtoán phân tán là các chu kỳ xử lý nhàn r i trên b t k máy tính n i m ng nào đều có ỗ ấ ỳ ố ạthể được sử dụng cho việc giải quyết bài toán trên các máy yêu cầu nhiều n ng l c tính ă ựtoán SETI (Search for Ex-traterrestrial Intelligence) là một dự án nghiên c u khoa học ứnhằm mục đích xây dựng m t máy tính ảo khổng lồ từ sứộ c m nh c a các máy tính n i ạ ủ ốmạng trong chù kỳ nhàn rỗi của chúng
Cộng tác (collaboration): các ứng d ng c ng tác p2p cho phép người s dụng ụ ộ ửcộng tác với nhau ở mứ ức ng d ng Các ng d ng này rấ đụ ứ ụ t a dạng, từ instant messaging, chat đến game online hay các ứng d ng chia sẻ sử dụụ ng trong thương m i, ạgiáo dục hay môi trường gia đình
Platform (nền): các platform p2p cung cấp hạ ầ t ng h tr các ng d ng s d ng ỗ ợ ứ ụ ử ụ
cơ chế p2p Các thành phần p2p được sử dụng bao g m naming, discovery, ồcommunication, security và resource aggregation JXTA là một p2p platform cung cấp
hạ tầng tính toán và lập trình mạng
1.1.4 Các vấn đề đối với mạng p2p hiện nay
Các hệ thống p2p có nhiề ư đ ểu u i m so với các hệ thống client-server truyền thống như tính kh mở, khả năả ng ch u l i, hiệị ỗ u n ng Tuy nhiên các h th ng p2p ang ă ệ ố đ
phải đối mặt với một số vấ đề: n
Trang 21Bảo mật (security): các cài đặt phân tán phát sinh thêm một số vấn đề bảo mật
so với kiến trúc client-server truyền thống Bởi vì trong hệ thống p2p các peer là động
và không tin tưởng lẫn nhau nên để đạ đượt c m c b o m t cao trong các h th ng p2p ứ ả ậ ệ ố
sẽ khó hơn trong các hệ thống client-server Các cơ chế bảo mật truyền thống để bảo vệ
dữ liệu và hệ thống khỏi tấn công, xâm nhập như firewall không thể bảo v th ng p2p ệ ốbởi vì các hệ thống này phân tán và các cơ chế bảo m t có th ng n ch n, h n ch quá ậ ể ă ặ ạ ếtrình truyền thông p2p Do đó cần đưa ra các khái ni m b o m t m i cho phép tương ệ ả ậ ớtác và xử lý phân tán trong các hệ thống p2p
Tính tin cậy (reliability): m t hộ ệ thống tin cậy là một hệ ống có khả nă th ng h i ồ
phục sau khi xuất hiện lỗi Các cơ chế đảm bả độ tin cậo y trong m ng p2p bao g m ạ ồnhân bản dữ liệu, phát hiện và khôi phục node b lỗị i, xây d ng nhi u c ch đảm b o ự ề ơ ế ảthông tin định vị, tránh “single point of failure” và đảm bảo nhiều đường đi tới dữ liệu
Tính linh hoạt (flexibility): một trong những tính ch t quan trọng nhất trong các ấ
hệ thống p2p là các peer tự chủ, chúng có thể join/leave bất kỳ lúc nào Các hệ thống p2p gầ đn ây có quy mô lớ đ ền, i u khi n phân tán và hoạt động trong môi trường động ể
Để giải quy t v n đề quy mô và tính động củế ấ a các h th ng p2p, khi xây d ng các h ệ ố ự ệthống p2p cần chú ý đến khả ă n ng i u chỉnh và tự ổđ ề t chức
Cân bằng tải (load balancing) : vấn đề phân tán dữ liệu và tính toán rất quan
trọng đối với hiệu quả hoạ động của các mạng p2p Một trong những giải pháp cho t vấn đề phân tán này là distributed hash table (DHT) Trong cách tiếp cận này, cân bằng tải được xem xét trên hai khía cạnh: cân bằng không gian địa chỉ tức là cân b ng phân ằphối của không gian key address trên các node và cân bằng item trong trường hợp phân phối của các item trong không gian địa chỉ không thể là ngẫu nhiên Cân bằng tải gi a ữcác node tính toán trong hệ thống p2p cũng có thể được cài đặt sử dụng mô hình t tổ ựchức dựa trên agent
Trang 221.2 Lý thuyết về Distributed Hash Table (DHT)
1.2.1 Hash Table (bảng băm)
Một hash table là một cấu trúc dữ liệu ánh xạ giữa key và value Tức là tương
ứng v i m t key, hash table s tr về mộớ ộ ẽ ả t value Để th c hi n vi c ánh x , hash table ự ệ ệ ạ
sử dụng hash function tính toán vị trí lưu value dựa trên key Hash function phải đảm bảo: tránh xung đột và dễ dàng thực hiện Tránh xung đột nghĩa là ánh xạ giữa không gian key và không gian địa chỉ phải đều và ngẫu nhiên đến mức có th ể
1.2.2 Distributed Hash Table
Distributed Hash Table (DHT) là thuật toán đượ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, khả mở, hiệu qu và có khả năng chịu lỗi ả
DHT là một hash table được cài đặt như một h th ng phân tán C ng nh một ệ ố ũ ưhash table thông thường, DHT cung cấp ánh x từạ key đến value Nh ng không gi ng ư ốnhư hash table thông thường, các value trong một DHT được l u trên các node khác ưnhau trong mạng chứ không ph i l u trong mộ ấả ư t c u trúc d li u c c b Thông qua m t ữ ệ ụ ộ ộkey, value tương ng ứ được lưu tại một node phù hợp trên mạng hoặc được lấy về từ node tương ứng trên mạng
Trong một DHT, key được tính ra từ value T t c các key đều nằm trên cùng ấ ảmột không gian địa chỉ Các ứng dụng file sharing thường sử dụng không gian địa ch ỉ
160 bit Để xác định node nào lưu value nào, mỗi node phải có một ID trong không gian địa chỉ giống như không gian địa chỉ của key Các DHT đưa ra khái ni m khoảng ệcách giữa hai ID (một key có thể xem như ID của value) Khi đó value được lưu trên node có ID gần với ID của value nhất
Để lưu m t value trên m ng, m t node g i thông i p yêu c u l u dộ ạ ộ ử đ ệ ầ ư ữ liệu tới một contact phù hợp được chọn ra từ bảng routing table, trong b ng routing table, ả
Trang 23contact 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ế ục như vậy, p tthông đ ệi p được chuyển tiếp trên mạng cho đến khi nó g p node có ID gần với ID của ặ
dữ liệu nhất và value được lưu trên node này
Để tìm một value, thủ tục c ng tương t , node 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 dữ liệu, node lưu dữ liệu sẽ được tìm ra và node này sẽ trả
dữ liệu cho node tìm kiếm
Distributed Hash Tables có các ư đ ểu i m khác biệt so với dịch vụ hướng Server truyền thống:
Client-− 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 túy
− 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 peer 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 node join vào mạng và leave 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ạ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ữ, tìm kiếm dữ liệu thông qua hai hàm insert và lookup
Trang 24Hình 1.3 Distributed Hash Table
Trong phần này chúng ta sẽ xem xét một số well-known DHT như Chord, Kelips, Tapestry, Kademlia Ta phân tích các DHT này dựa trên một số khía c nh nhạ ư sau:
Overlay Graph (sơ đồ m ng overlay): đây là tiêu chuẩn chính để phân biệt các hệ ạ
thống v i nhau Đối với mỗi overlay graph, chúng ta sẽ xem xét graph và bảng định ớtuyến của mỗi node trong graph
Mapping Items Onto Nodes (ánh xạ giữa item và node): đối với mỗi overlay
graph, chúng ta quan tâm đến mối quan hệ giữa ID c a node và ID c a các item l u ủ ủ ưtrên node đó, t c là một item cụ thể sẽ được lưu trên node nào ứ
Lookup process (tiến trình tìm kiếm): tiến trình tìm ki m trên một mạng diễn ra ếnhư thế nào và hiệu năng c a quá trình tìm ki m liên quan ch t ch đến lo i overlay ủ ế ặ ẽ ạgraph của mạng ó đ
Joins, Leaves và Maintenance (gia nhập, rời khỏi mạng và duy trì) : chúng ta sẽ
xem một node mới được thêm vào graph như thế nào và một node rời graph như thế nào Do các node trong mạng thường xuyên join, leave nên cần có mộ ố ết s ti n trình
Trang 25maintenance để xử lý các thay đổi trong m ng, chúng ta quan tâm đến các ti n trình ạ ếnày diễn ra như thế nào và chi phí thực hiện các tiến trình này
Replication và fault tolerance (nhân bản và chịu lỗi): bên cạnh các node r i ờkhỏi mạng có báo trước, một số node có thể đột ngột rời khỏi mạng do m t số nguyên ộnhân như mấ đ ệt i n, đường truy n h ng, …, trường h p này khó x lý h n trường h p ề ỏ ợ ử ơ ợcác node thông báo đến các node khác trước khi rời khỏi mạng Replication là một giải pháp cho trường hợp các node rời khỏi mạng mà không báo trước
Upper services và applications (ứng dụng và dịch vụ bên trên): m t sộ ố ứ ng dụng
và dịch vụ đ ã được phát triển sử ụ d ng DHT
Implementation (cài đặt): liệt kê m t số cài đặt của các DHT ộ
1.3.1 Chord
Overlay graph
Chord sử ụ d ng m t không gian ID vòng tròn kích thước N Một node Chord với ộ
ID là u có một con tr tớỏ i node đầu tiên đứng sau nó trong không gian ID theo chi u ềkim đồng hồ, ký hiệu là Succ(u) và một con trỏ tới node đứng trước nó trong không gian ID, ký hiệu là Pred(u) Các node tạo thành một danh sách liên kết hai chiều
Bên cạnh ó, một node Chord lưu M = log2(N) con trỏ gọđ i là các finger T p ậcác finger của node Chord u được xác định như sau Fu = {(u, Succ(u + 2i−1))}, 1 i ≤ ≤
M Với cách lựa chọn finger th này, tong mạng Chord, các node quan sát không gian ế
ID vòng như là không gian này bắt đầu t ID c a chúng Đồng th i v i cách l a ch n ừ ủ ờ ớ ự ọfinger của Chord, không gian ID sẽ được chia đôi, nửa thứ nhất cũng được chia đôi, rồi phần tư thứ nhất lại được chia đôi, …
Hình 1.4 cho thấy m t m ng v i không gian ID N = 16, mỗi node có ộ ạ ớM=log2(N)= 4 finger Mạng có các node với ID lần lượt là 0, 3, 5, 9, 11, 12 Cách xây
Trang 26dựng bảng finger table được thể hiện trong XHình 1.4X(b) Node n chọn các finger của nó
bằng cách xem nó như là đ ểm khởi đầu của không gian ID, rồi chọn finger là isuccessor của các ID n + 20, n + 21, n + 22, và n + 23 ID cuối cùng n + 23 chia không gian ID thành hai phần bằng nhau, ID trước đó n + 22 chia nửa thứ nhất thành hai phần bằng nhau, ID n + 21 chia phần tư đầu tiên thành hai phần bằng nhau, tương tự ID n +
20 chia phần tám thứ nhất thành hai phần bằng nhau Tuy nhiên, có thể không có node
có ID giống v i ID tạ đ ểớ i i m chia, khi đó successor của ID tạ đ ểi i m chia được chọn làm finger XHình 1.4X(c) cho thấy bảng định tuyến của node 3 và node 11
Trang 27Hình 1.4 (a) M ột mạng Chord vớ i 6 node, 5 item và N=16 (b) Nguyên t ắ c chung c a ủ
bảng routing table (c) Bảng routing table của node 3 và node 11
Trang 28Mapping Items Onto Nodes
Như chúng ta thấy trên XHình 1.4X, một item được l u trên node đầu tiên mà theo ưsau nó theo chiều kim đồng hồ trong không gian ID Các item với ID tương ứng 2, 3, 6, 10,13 được lưu trong các node trên mạng như sau: {2,3} được l u t i node 3; {6} được ư ạlưu tại node 9; {10} được lưu tại node 11; và {13} được lưu tại node 0
8 nhất trong bảng finger của nó Node 5 thấy rằng 8 nằm giữa nó và successor của nó (node 9), do đó nó trả về kết qu 9 theo đường i ngược l i Sau khi nh n được câu tr ả đ ạ ậ ảlời, tầng ứng dụng trên node 11 sẽ liên lạc vớ ầi t ng ng d ng trên node 9 và yêu c u ứ ụ ầlưu một số giá trị với key là 8 Bất kỳ node nào muốn tìm kiếm key 8 đều thực hiện quá trình tương tự và trong không quá M chặng, một node s tìm ra node l u các d li u ẽ ư ữ ệ
ứng v i key 8 Nói chung, trong i u kiệớ đ ề n thông thường, m t tìm ki m s hoàn thành ộ ế ẽtrong O(log2(N)) chặng
Joins, Leaves and Maintenance
Khi node n muốn join vào mạng, nó phải tìm ID của mình thông qua một số contact trong mạng và chèn bản thân nó vào vòng giữa successor s c a nó và ủpredecessor của s sử dụng m t thu t toán stabilization ch y định k B ng định tuy n ộ ậ ạ ỳ ả ếcủa n được khởi tạo bằng cách copy bảng định tuyến của s hoặc yêu cầu s tìm các finger của n Tập các node cầ đ ền i u chỉnh b ng định tuyếả n sau khi n join vào m ng nh ạ ờcác node này đều chạy thuật toán stabilization định k Nhi m v cu i cùng là chuy n ỳ ệ ụ ố ể
Trang 29một phần các item đang lưu trên node s có ID nhỏ ơ h n ho c bằng n sao node n Việc di ặchuyển dữ liệu này được thực hiện bởi tầng ứng d ng c a n và s ụ ủ
Giả mã của các quá trình tìm kiếm successor của node n, khởi tạo bảng định tuyến của n, cập nhật bảng finger của các node liên quan và quá trình stabilization như sau:
//yêu c u node n tìm successor c a id ầ ủ
Thuật toán 1.1 Giả mã tìm node successor của ID n
#define successor finger[1].node
// node n join vào m ng; ạ
// n’ là m t node tùy ý trong m ng ộ ạ
Trang 30successor.predecessor = n;
for i = 1 m-1 to
if (finger[i+1].start [n, finger[i].node)) ∈ finger[i+1].node = finger[i].node;
Trang 3126 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
Trang 32Hình 1.5 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 toán stabilization
Hình 1.6 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 ẽ
Trang 33Sau đó 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ó màu đen, nh ng ph n không đổi có màu xám ữ ầ
Hình 1.6 (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
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
Trang 34Upper 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
Implementation
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ó ự
Trang 35Hình 1.7.Con trỏ ủ c a node 3 (0011) trong Kademlia
Kademlia không lưu một danh sách các node gần với nó trong không gian ID như successor list của Chord Tuy nhiên với mỗi cây con trong không gian ID, node lưu tới k contact thay vì một contact nếu có thể và gọi một nhóm không nhiều h n k ơcontact trong một cây con là subtree
Mapping items onto nodes
Kademlia định nghĩa khái niệm khoảng cách giữa hai ID là k t qu XOR c a hai ế ả ủ
ID Một item được lưu trên node mà khoảng cách giữa hai ID là nhỏ nhất
Trang 36trả về, node l i ch n α node ng u nhiên và l p l i quá trình tương t cho đến khi ID ạ ọ ẫ ặ ạ ựđược tìm thấy
Khi một node muốn chèn một item mới nào đó, nó sẽ lưu item t i k node g n ạ ầnhất với ID Do sử dụng so kh p prefix nên m t lookup s được th c hi n trong ớ ộ ẽ ự ệO(log(N)) chặng
Joins, leave and maintenance
Một node tìm thấy node gần nó nhất thông qua bất kỳ contact ban đầu nào và
khởi tạo bảng định tuyến của nó bằng cách yêu cầu node đó tìm kiếm các node trong các cây con khác nhau
Nếu một k-bucket được bổ xung quá nhiều node từ một cây con nào ó, quy t c đ ắthay thế least-recently-used sẽ được áp dụng
Tuy nhiên Kademlia sử dụng m t th ng kê t các nghiên c u v peer-to-peer ộ ố ừ ứ ềcho rằng m t node nế độ u ã kết nối trong một khoảng thời gian dài nhiều kh năả ng s ẽtiếp tục ở lại m ng trong mộạ t th i gian dài n a Do ó, Kademlia có th bỏ qua thông ờ ữ đ ểtin về các node mới nếu nó đã biết nhiều node ổn định trong cây con đó
Việc maintenance bảng định tuyến sau khi node join/leave được thực hiện nh ờ
sử dụng l u lượng lookup, k thu t này khác v i k thu t stabilization c a Chord ư ỹ ậ ớ ỹ ậ ủXOR metric dẫn đến m i node nhận được truy vấn tọ ừ node chứa trong bảng định tuyến
của nó Do đó, nhận được một thông đ ệp từ mội t node nào ó trong cây con chính là đmột cập nhật k-bucket của cây con đó Cách tiếp cận này rõ ràng là tối thiểu hóa chi phí bảo trì
Một nhi m v b o trì khác là dựa vào việc nhận được nhiều truy vấn từ một cây ệ ụ ảcon, Kademlia cập nhật latency của các node trong m t k-bucket c thộ ụ ể Việc này cải thiện sự lựa ch n node cho quá trình tìm ki m và có th nói r ng Kademlia c ng chú ý ọ ế ể ằ ũ
đế độn trễ và tính v trí c a các node ị ủ
Trang 37Replication and Fault Tolerance
Khả năng ch u l i c a Kademlia ph thu c ch yếị ỗ ủ ụ ộ ủ u vào liên k t b n v ng trong ế ề ữk-bucket bởi vì Kademlia lưu k contact cho mỗi cây con, đ ềi u này giúp cho khả năng graph bị đứt liên kết thấp
Kademlia lưu k phiên bản của m t item trên k node g n id c a item nh t, các ộ ầ ủ ấnode này được republish định kỳ Chính sách cho việc republish này là bấ ỳt k node nào
thấy nó gần với item ID hơn các node khác mà nó biết sẽ báo cho k-1 node còn lại biết
Applications and Implementation
Kademlia được chấp nhận rộng rãi thông qua hai ứng dụng chia sẻ file là Overnet và Emule
1.3.3 Tapestry
Overlay graph
Tapestry cũng t chức các ID trong không gian vòng tròn N Các ID được biểu ổdiễn theo base β
Trang 38Hình 1.8 Minh họa cách chọn b ảng định tuyế n c ủ a m t node Tapestry ộ
Hàng thứ nhất trong bảng định tuy n của một node ch a các node có ID khác ế ứvới ID của node đó ở chữ số ứ th nh t Tương t nh v y, hàng th hai trong bảng nh ấ ự ư ậ ứ đị
Trang 39tuyến chứa các node có ID giống với ID của node đó ở chữ số ứ th nh t nh ng khác ấ ư ởchữ số thứ hai Các hàng còn lại của bảng định tuyế được tổn ch c tương tựứ nh v y ư ậ
Hình 1.8 minh họa cách chia không gian ID c a Tapestry ủ
Để tăng tính d phòng, mỗự ở i m c, m i contact l i được d phòng b i c contact ứ ỗ ạ ự ởcùng nhóm Một node Tapestry có bảng định tuyến với logβN mức, mỗi mức có c × β contact Như ậ v y bảng định tuyến của Tapestry có kích thước c × β × logβN
Mapping items onto nodes
Tapestry ánh xạ ID của item tới một node duy nhất gọi là root của ID Nếu tồn tại node N có ID bằng với ID của item thì node được gọi là root của item đó Nếu không tồn tại node có ID bằng v i ID c a item thì item ớ ủ được ánh xạ vào node có ID gần ID của nó nhất Tapestry không chuyển item đến node nào đó trên mạng mà chỉ thiết lập con trỏ trên các node nằm trên đường đi từ node chứa item tới node root của item trỏ ớ t i item
Lookup process
Quá trình định tuyến của Tapestry diễn ra như sau Để tìm một node gần với
một ID x nhất, node sẽ dùng bảng định tuyến kiểm tra từ trên xuống dưới xem x rơi vào khoảng ID nào Nếu x rơi vào kho ng ID khác với khoảả ng ID của node, node sẽ chuyển tiếp truy v n tới contact của nó nằm trong khoảấ ng ID ó Quá trình c di n ra đ ứ ễnhư vậy cho đến khi đến node root của x Nếu trong bảng định tuyến của node không tồn tại contact như vậy, node sẽ chuyển tiếp truy vấn tới node có ID g n v i x nh t ầ ớ ấ
Trang 40Quá trình định tuyến được minh họa trong XHình 1.9
Hình 1.9 Đường đi của thông đ ệ i p từ node 5230 t ới node 42AD
Để thông báo về sự tồn t i c a m t item I, node n l u item định kỳ gửi thông ạ ủ ộ ư
đ ệi p đến root c a item ó M i node d c đường i c a thông i p s lưủ đ ỗ ọ đ ủ đ ệ ẽ u m t con tr ộ ỏánh xạ (I,n) thay vì lưu lại bản thân item Khi có vài bản sao của một item trên một số node, m i node sỗ ẽ thông báo về bản sao nó l u M t node nh n được nhi u thông báo ư ộ ậ ề
về một item, nó sẽ lưu ánh xạ theo thứ tự latency
Quá trình publishing được minh họa trong XHình 1.10