1. Trang chủ
  2. » Luận Văn - Báo Cáo

Kỹ thuật bảng băm phân tán trên mạng ngang hàng giải pháp kiến trúc mở và ứng dụng

125 28 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 125
Dung lượng 2,4 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 2

Mục lục

PHẦN MỞI ĐẦU 3

Nhiệm vụ của luận văn 6

Nội dung luận văn 6

Lời cảm ơn 8

Danh mục thuật ngữ 9

Phần I MẠNG NGANG HÀNG VÀ CÁC HỆ THỐNG DHTs 10

1.1 Hệ thống ngang hàng 10

1.1.1 Overlay network 11

1.1.2 Quá trình phát triển của các hệ thống P2P 11

1.1.3 Phân loại ứng dụng trên mạng ngang hàng 15

1.1.4 Các ứng dụng trên mạng ngang hàng 16

1.2 Tìm hiểu DHT- Bảng băm phân tán 19

1.2.1 DHT là gì? 19

1.2.2 Lịch sử phát triển của DHTs 22

1.2.3 Sức mạnh của DHTs 25

1.2.4 Các thuộc tính quan trọng của DHTs 29

1.2.5 Bảo mật và xác thực 30

1.2.6 Các thao tác khác của DHT 31

1.3 Giới thiệu một số DHT 32

1.3.1 Chord [11] 33

1.3.2 Kademlia [16] 39

1.3.3 Tapestry[14] 42

1.4 Kết luận 47

Phần II: BAMBOO DHT VÀ OPENDHT 49

2.1 Bamboo 49

2.1.1 Tổng quan về Bamboo 49

2.1.2 Ưu điểm của Bamboo DHTs 55

2.1.3 Hạn chế của DHTs 56

2.1.4 DHT Geometries (Sơ đồ của DHT) 58

2.1.5 Hoạt động Lookup 60

Trang 3

2.1.5 DHT Storage 62

2.1.6 DHT chia sẻ giữa các ứng dụng 63

2.1.7 Chia sẻ một DHT giữa các Client 66

2.1.8 Cân bằng tải 66

2.2 OpenDHT 68

2.2.1 Tổng quan về Thiết kế 70

2.2.2 Các giao diện 73

2.2.3 Phân bổ lưu trữ 83

2.2.4 Đánh giá 89

2.2.5 Đánh giá dựa trên việc triển khai 94

2.3 Kết luận 101

Phần III: ỨNG DỤNG MINH HỌA 102

3.1 Mục tiêu của chương trình 102

3.2 Thiết kế 102

3.2.1 Các API được sử dụng 105

3.2.2 Cấu trúc của mạng multicast và việc join vào mạng 106

3.2.3 Cơ chế truyền thông điệp 111

3.3 Triển khai ứng dụng và đánh giá 112

PHẦN KẾT LUẬN 117

TÓM TẮT NỘI DUNG ĐỀ TÀI 119

Tóm tắt tiếng Việt 119

Tóm tắt tiếng Anh 121

Abstract 121

TÀI LIỆU THAM KHẢO 123

Trang 4

PH ẦN MỞI ĐẦU

Mạng internet đã làm thay đổi thế giới với sự ra đời của các trang thông tin, các dịch

vụ tìm kiếm, kinh doanh điện tử… Nó đã ảnh hưởng lớn đến đời sống thường nhật của mọi cư dân trên hành tinh Trên mạng internet người ta có thể đặt vé máy bay, rao bán nhà đất, tìm hướng dẫn chỉ đường hay tìm đọc nhanh nhất các thông tin thời sự quốc tế…

Chính sự phát triển và phổ biến của các giao dịch internet đã tạo nên những thách thức mới cho các nhà cung cấp (NCC) dịch vụ NCC phải đảm bảo hệ thống vẫn đứng vững khi có số lượng người truy cập lớn Những dịch vụ càng thông dụng thì càng phải chịu đựng được lượng người truy cập lớn Ví dụ, một số trang web tìm kiếm phục vụ hàng triệu người tìm kiếm thông tin đồng thời Một đĩa nhạc hay mới phát hành hoặc một phần mềm thông dụng đưa ra một phiên bản mới thì có số lượng người rất lớn truy cập hoặc tải về từ một trang web trong một thời gian ngắn Muốn vậy, hệ thống đó phải là một hệ thống xử lý phân tán, có một cơ chế quản lý tài nguyên thông minh và có một

số khả năng khác như dưới đây

Đầu tiên, thiết kế của hệ thống đó phải Scalable (khả năng mở rộng về quy mô) Đó là

một hệ thống mà kích cỡ của hệ thống luôn tương ứng với khả năng đáp ứng của nó

Hệ thống càng mở rộng thì khả năng phục vụ người dùng/số giao dịch càng nhiều Hệ thống cũng không phụ thuộc vào bất kỳ một thành phần nào đó, để tránh hiện tượng nghẽn cổ chai dẫn đến giảm hiệu năng của hệ thống và nó cũng tránh cho hệ thống bị sụp đổ khi thành phần đó bị lỗi Với một hệ thống có thiết kế Scalable thì ta có thể tăng kích cỡ khi khi hệ thống có nhưu cao hoặc giảm kích cỡ khi hệ thống có nhưu cầu thấp Thứ hai, hệ thống đó phải self-managing (khả năng tự quản lý) Hệ thống đó phải có khả năng tự động cân bằng tải, đảm bảo an toàn dữ liệu hệ thống Trong trường hợp như trên khi ta tăng kích cỡ của hệ thống thì nó sẽ phải tự nhận biết các thành phần

Trang 5

thêm vào và chia sẻ tải cho những phần mới thêm đó Ngược lại khi giảm kích cỡ của

hệ thống thì nó cũng tự động khôi phục lại giữ liệu mà phần bị tháo đi đã mang đi Với một hệ thống lớn và động thì thuộc tính này là hết sức quan trọng

Thứ ba, hệ thống đó phải có khả năng fault-tolerant (khả năng chịu lỗi) Với một hệ thống lớn thì xác suất xảy ra lỗi tại các bộ phận là rất lớn, hệ thống vẫn phải hoạt động tốt khi số lượng bộ phận bị lỗi nằm trong một tỉ lệ cho phép

Hiện này, mạng ngang hàng là một trong những hướng tiếp cận rất tốt để thỏa mãn các thuộc tính trên Đó là một kiến trúc mà các thành phần trong mạng có chức năng và khả năng như nhau Tất cả các máy tham gia đều đóng góp tài nguyên, bao gồm băng thông, lưu trữ, và khả năng tính toán Do đó khi càng nhiều máy tham gia thì khả năng tổng thể của hệ thống mạng càng lớn Tính chất phân tán của mạng ngang hàng giúp cho mạng hoạt động tốt khi một số máy gặp sự cố

Sự tiến hóa về cấu trúc mạng đã làm cho mạng ngang hàng ngày càng trở lên mạnh mẽ Một trong những cấu trúc đó là DHT (Bảng Băm Phân Tán, tiếng Anh: Distributed Hash Table) Hệ thống này định nghĩa liên kết giữa các nút mạng trong mạng theo một thuật toán cụ thể, đồng thời xác định chặt chẽ mỗi nút mạng sẽ chịu trách nhiệm đối với một phần dữ liệu chia sẻ trong mạng Với cấu trúc này, khi một máy cần tìm một

dữ liệu, nó chỉ cần áp dụng một giao thức chung để xác định nút mạng nào chịu trách nhiệm cho dữ liệu đó và sau đó liên lạc trực tiếp đến nút mạng đó để lấy kết quả Hiện nay có rất nhiều giải pháp khác nhau để xây dựng một DHT, người ta phân chia các giải pháp đó theo cấu trúc mạng và thuật toán định tuyến Có một số cấu trúc nổi tiếng bao gồm Chord, CAN, Kademlia, Pastry, Tapestry và Bamboo [10]

Trong luận văn này tôi sẽ trình bày những tìm hiểu của mình về một trong những DHT nêu trên, đó là Bamboo Nó được đánh giá là một DHT khá mạnh mẽ Giao diện cho các thao ra nhập/rời khỏi mạng là khá đơn giản Mỗi node đều có thuật toán duy trì số lượng con trỏ đến các node hàng xóm là hàm logarithmic của kích cỡ mạng, như vậy

Trang 6

kích cỡ mạng có thể tăng rất nhanh mà băng thông để lưu trữ con trỏ các node hàng xóm tăng không đáng kể Chi phí cho việc định tuyến, lưu trữ và truy cập cũng được giới hạn bởi hàm logarithmic của kích cỡ mạng, hơn nữa người ta còn dùng thuật toán

để xác định các node hàng xóm gần nhau về mặt vật lý để làm tăng tốc độ liên lạc giữa các node Người ta chứng minh mạng vẫn hoạt động tốt, không bị mất dữ liệu ngay cả khi số lượng node trên mạng bị lỗi khá cao hoặc tốc độ các nodes tham gia và rời khỏi mạng cao Cơ chế hoạt động của Bamboo là hoàn toàn tự tổ chức, tự duy trì Trong triển khai thực tế Với thời gian ngắn là 6 phút, có 1000 node trong mạng Bamboo trong ModelNet vẫn đáp ứng cho các thao tác lấy dữ liệu từ một node bất kỳ trong vòng ½ giây [1] Bamboo cũng là một hệ thống đáng tin cậy, với hiệu năng lưu trữ lớn

đã triển khai 200-300 nodes trên PlanetLab[1]

OpenDHT [1] là một dịch vụ DHT công cộng được thiết kế để dễ dàng phát triển, triển khai và duy trì các ứng dụng DHT Nó khắc phục được nhược điểm khó phát triển của các ứng dụng DHT truyền thống bằng cách sử dụng một mạng DHT có sẵn để cung cấp dịch vụ cho nhiều ứng dụng khác nhau Do đó các ứng dụng OpenDHT chỉ cần truy cập dịch vụ này thông qua các giao diện đơn giản mà không phải triển khai DHT cho riêng mình Hơn nữa, với các ứng dụng OpenDHT còn cho phép truyền thông vượt qua NAT hoặc Firewall OpenDHT không chỉ hỗ trợ cho các giao diện đơn giản, bảo mật, nó cũng hỗ trợ một số chức năng phức tạp trong truyền thông bằng cách sử dụng thêm một số thư viện khác OpenDHT còn bảo đảm sự công bằng trong chia sẻ lưu trữ giữa các client trong hệ thống OpenDHT đang được triển khai trên PlanetLab, và người dùng hoàn toàn có thể tương tác với nó thông qua RPC

Trang 7

Nhi ệm vụ của luận văn

Thứ nhất, tìm hiểu và khảo sát các khái niệm liên quan, cấu trúc mạng và các thuật toán trong bảng băm phân tán Tìm hiểu một số hệ thống bảng băm phân tán đã được phát triển và triển khai trên thực tế Qua đó đánh giá, nhận xét các ưu và nhược điểm của của kiến trúc bảng băm phân tán

Thứ hai, tìm hiểu về cấu trúc mạng, cơ chế hoạt động của OpenDHT (giải pháp mở của bảng băm phân tán) Tìm hiểu sâu các khía cạnh kỹ thuật của hệ thống Đánh giá khả năng ứng dụng so với hệ thống bảng băm phân tán truyền thống Kết hợp tìm hiểu một

hệ thống cụ thể

Thứ ba, vận dụng các kiến thức đã tìm hiểu ở trên Cài đặt một ứng dụng minh họa dựa trên kiến trúc mở của bảng băm phân tán

N ội dung luận văn

Sau đây là kết quả thực hiện luận văn Luận văn được trình bày theo các phân sau:

• Phần 1: Mạng ngang hàng và các hệ thống DHT Ở đây trình bày một cách tổng quát nhất về mạng ngang hàng bao gồm khái niệm chung, quá trình phát triển, các kiến trúc và ứng dung tiêu biểu Sau đó đi sâu vào một kiến trúc của mạng ngang hàng đó là DHT, tìm hiểu kiến trúc và cơ chế làm việc chung của DHT, các loại ứng dụng, ưu và nhược điểm Tìm hiểu các mạng DHT tiêu biểu đang được sử dụng trên thực tế

• Phần 2: Tìm hiểu về Bamboo và OpenDHT Trong phần này ta đi sâu vào một DHT mà ta sử dụng trong luận văn là Bamboo Sau đó ta tìm hiểu về OpenDHT đây là nội dung chính của luận văn, ta sẽ đi sâu vào các vấn đề của một mạng OpenDHT là sự chia sẻ (về hiệu năng và về bộ nhớ) của các node trong mạng

Ta cũng đánh giá khả năng hoạt động của chúng qua các thực nghiệm

• Phần 3: Xây dựng một ứng dụng dựa trên OpenDHT Ứng dụng mà ta xây dựng

ở đây là ứng dụng multicast Trong đó trình bày việc thiết kế xây dựng một ứng

Trang 8

dụng OpenDHT Mục đích là đánh giá khả năng triển khai thực tế một ứng dụng OpenDHT, tìm hiểu xâu hơn các APIs để sử dung khi xây dựng một ứng dụng OpenDHT Xây dựng thuật toán Multicast trên OpenDHT để phát triển các ứng dung khác hoàn thiện hơn và có chiều sâu hơn

Trang 9

L ời cảm ơn

Trước tiên, tôi xin bày tỏ lòng cảm ơn đến thầy giáo hướng dẫn TS Nguyễn Khánh Văn Thầy đã hướng tôi đến một đề tài mà tôi cảm thấy rất thích thú và hữu ích cho tôi trong công việc sau này Đặc biệt là nhưng chỉ dẫn khoa học và sự tận tâm hướng dẫn giúp đỡ tôi hoàn thành luận văn

Xin chân thành cảm ơn các thầy cô trong viện CNTT trường ĐHBK Hà Nội, Viện đào tạo sau đại học trường ĐHBK Hà Nội, trường ĐHBK Hà Nội nơi tôi đã được học tập suốt những năm đại học và cao học

Cuối cùng tôi xin gửi lời cảm ơn đến bạn bè, người thân và các bạn (các anh chị) cùng lớp CNTT K79 Những người đã luôn bên cạnh giúp đỡ, động viên tôi trong suốt chặng đường vừa qua và những chặng đường sắp tới

Trang 10

Danh m ục thuật ngữ

Peer-to-peer Mạng ngang hàng

Node Một thiết bị nối mạng (một peer)

item Một đơn vị dữ liệu

Structured Có cấu trúc

Overlay Mạng được xây dựng trên các mạng khác

Hash table Bảng băm

Distributed hash table Bảng băm phân tán

Join Gia nhập (mạng ngang hàng)

Leave Rời khỏi (mạng ngang hàng)

Failure Lỗi

Churn rate Số lượng peer rời khỏi/gia nhập mạng trong một khoảng

thời gian

put Lưu trữ dữ liệu vào bảng băm

get Truy cập dữ liệu từ bảng băm

Trang 11

Ph ần I MẠNG NGANG HÀNG VÀ CÁC HỆ THỐNG DHTs

Nội dung chính của phần này là tìm hiểu các khái niệm của mạng ngang hàng, bảng băm phân tán Qua đó ta hiểu được lịch sử hình thành cũng như biết được thế nào là một bảng băm phân tán, các thuộc tính quan trong của một bảng băm phân tán, cơ chế hoạt động chung của nó thế nào Phần này cũng tìm hiểu cấu trúc của một số DHT nổi tiếng, qua đó ta có cái nhìn toàn diện hơn về hệ thống Bamboo mà ta sẽ tìm hiểu ở phần sau

Mạng P2P không có khái niệm máy trạm (client) hay máy chủ (server), mà chỉ có khái niệm các nodes (peers) đóng vai trò như cả client và server

Hình 1.1 Mô hình client/server và mô hình P2P

Trang 12

1.1.1 Overlay network

Là mạng máy tính được xây dựng trên nền của một mạng khác Các nodes trong mạng overlay được xem là nối với nhau bằng liên kết ảo (logical links), mỗi liên kết ảo có thể bao gồm rất nhiều các liên kết vật lí của mạng nền Rất nhiều các mạng P2P được gọi

là overlay networks vì nó được xây dựng và hoạt động trên nền của Internet VD:

Gnutella, Freenet, DHTs ….Dial-up Internet cũng là một overlay network trên nền telephone network

Khái niệm overlay Networks trong DHT nói lên phương thức kết nối giữa các nodes trong mạng, vì các nodes được kết nối với nhau qua một mạng hiện có, chẳng hạn như Internet, khái niêm overlay networks sử dụng để cung cấp chức năng định tuyến Hiện

có mạng lưới sau đó sẽ gọi tắt là underlay-networks Nếu underlay-networks là Internet, thì việc định tuyến dựa vào sự trao đổi giữa các nodes trong DHT, và mỗi tuyến đi qua

đó trong các tuyến được lựa chọn trong underlay Overlay Networks cũng được sử dụng trong nhưng bối cảnh khác, chẳng hạn như để xây dựng mạng riêng ảo (VPN) Thuật ngữ cấu trúc overlay Networks được sử dụng để phân biệt với các mạng Overlay được tạo ra bởi DHTs từ các Overlay Networks Hình minh họa 1.9 một Overlay Networks và tương ứng của nó underlay Networks

Gần đây đã người ta cố gắng để xây dựng overlays mà sử dụng một underlay mà cung cấp nhiều dịch vụ hơn so với mạng Internet ROFL thay thế các định tuyến dịch vụ của Internet với một DHT, trong khi VRR có một cách tiếp cận tương tự cho mạng không dây

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

Trang 13

Hình 1.2 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

Trang 14

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 cá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 Hình 1.3 biểu diễn một mô hình flooding request

Trang 15

Hình 1.3 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 16

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 …

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

Trang 17

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

để thiết lập mạng P2P

2 Mạng chia sẻ file P2P:

Trang 18

Là mạng P2P phổ biến và nổi tiếng nhất trên Internet hiện nay Chức năngchủ yếu của mạng là cho phép tìm kiếm và truyền dữ liệu dựa trên giao thức IP (Internet Protocol)

Để truy cập vào mạng P2P này, người dùng chỉ cần download và cài đặt phần mềm ứng dụng phù hợp cho máy tính của mình Có nhiều mạng P2P và phần mềm ứng dụng P2P tồn tại hiện nay Một số phần mềm chỉ sử dụng được cho 1 mạng P2P nhất định, một số hoạt động được với nhiều mạng P2P khác nhau Một số mạng P2P nổi tiếng trên Internet gồm: eDonkey, BitTorent, Gnutella

3 Phần mềm ứng dụng P2P

Các phần mềm ứng dụng P2P cần đạt được 7 tiêu chí căn bản sau:

1 Giao diện người dùng không nằm trong trình duyệt (web browser)

2 Các máy tính trong hệ thống có thể đóng vai trò như cả máy trạm và máy chủ

3 Phần mềm dễ sử dụng và được tích hợp nhiều tính năng tốt

4 Ứng dụng hỗ trợ người dùng tạo nội dung và thêm chức năng

5 Ứng dụng cho phép tạo kết nối đến người dùng khác

6 Ứng dụng có nét “mới” và “thú vị”

7 Phần mềm ứng dụng hỗ trợ đa giao thức trên mạng

Một số phần mềm ứng dụng P2P nổi tiếng hiện nay bao gồm: Kazza, eMule, Bittorent, Limewire …

Giới thiệu Kazaa:

-Download: www.kazaa.com

-Sử dụng P2P technology (người dùng có thể kết nối trực tiếp với người dùng khác) -Kazaa cho phép: Tìm và download các files đã được chia sẻ bởi những nhà cung cấp chuyên nghiệp và người dùng

-Kazza có sử dụng những kết nối nhanh với các SuperNodes: Mỗi SuperNode chứa danh sách các files chia sẻ bởi người dùng và nơi lưu trữ file

Giới thiệu Emule:

-Download: www.emule.com

Trang 19

-Một trong những phần mềm chia sẻ file P2P lớn nhất giữa các Clients trên Internet -Verson mới nhất: eMule 0.49b

-Có thể sử dụng eMule để chia sẻ và download tất cả các loại files trên Internet

Giới thiệu Skype:

-Download: www.skype.com

-Là phần mềm P2P VoIP phát triển bởi những người đã làm Kazaa

-Skype cho phép người dùng đàm thoại và gửi message tới người dùng Skype khác -Đây là một overlay network, có 2 loại nodes: Original Host (OH) và Super nodes (SN)

+ OH là một phần mềm ứng dụng cho phép sử dụng để đàm thoại và gửi message + Những node có địa chỉ IP tĩnh, CPU, memory, băng thông đủ mạnh thì có thể được xem xét chọn làm super node

Hình 1.4 Mô hình skype

+ OH kết nối với một SN và phải đăng kí với Skype login server để login thành công

Trang 20

1.2 Tìm hi ểu DHT- Bảng băm phân tán

value c ủa một key tương ứng Trong kịch bản sử dụng điển hình, một client đưa ra một

key mà nó mong mu ốn lấy được những values tương ứng Qua đó, client cung cấp keys

tại bất kỳ một trong các nodes, sau đó sẽ thực hiện việc lookup operation và trả lại những values có keys tương ứng Ngoài ra, một DHT còn có các thao tác khác để quản

lý các bản ghi, ví dụ như insert và delete bản ghi

Hình 1.5 Một ví dụ bảng băm

Trang 21

Các đại diện của các cặp giá trị key/value có thể được tùy biến Ví dụ, key có thể là một

chuỗi ký tự hay một đối tượng Tương tự như vậy, values có thể là một chuỗi ký tự, một số, hoặc một số nhị phân đại diện của một đối tượng bất kỳ Các đại diện trên thực

tế sẽ phụ thuộc vào các ứng dụng cụ thể

Một điều quan trọng trong tính chất của DHTs là hiệu quả xử lý với số lượng lớn bản ghi Hơn nữa, số lượng các nodes có thể rất lớn, từ một vài nodes đến nhiều ngàn hoặc hàng triệu nodes Vì không giới hạn lưu trữ/bộ nhớ và khả năng chi phí của insert và update các bản ghi, việc định vị lưu trữ các bản ghi trong mỗi node là rất mềm dẻo Vì vậy, mỗi node có trách nhiệm lưu trữ một số lượng bản ghi nhất định, đó gọi là lưu trữ cục bộ

Trang 22

Như đã nói ở trên, mỗi node sẽ có thể lookup các values tương ứng với một key nào đó

Vì tất cả các bản ghi không được lưu trữ tại tất cả các node, nên ta phải có một thao tác định tuyến tới một node có thể lưu trữ các bản ghi được yêu cầu Đối với mục đích này, mỗi node có một bảng định tuyến có chứa đường đi đến nodes khác, gọi là các node’s

neighbors Vì v ậy, một truy vấn được chuyển thông qua các neighbors như vậy và cuối

cùng nó đạt tới node có khả năng cung cấp cho các key Hình 1.7 Minh họa một DHT

là sự ánh xạ các URL hiện thời đại diện cho vị trí của file

của files Các bản ghi của DHT được phân phối cho các nodes a, b, c, d, và e, và các nodes giữ định tuyến đến nhau Nếu một ứng dụng tạo ra một yêu cầu tra cứu node d

để tìm hiểu hiện nay vị trí của file abc.txt, d sẽ gửi các yêu cầu một node, và sẽ định tuyến các yêu cầu node e, mà có thể trả lời các yêu cầu từ đó hiểu biết URL của liên kết với các key abc.txt Lưu ý rằng không phải tất cả các node cần thiết để lưu trữ bản ghi, ví dụ như node b

Trang 23

Để 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, contact này có ID thỏa mãn nhất (Theo một tiêu trí nào đó) 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 node có ID thỏa mãn nhất 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

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

Hình 1.8 Kiến trúc của một ứng dụng trên DHT

Các DHTs đầu tiên xuất hiện vào năm 2001, và xây dựng trên một trong hai ý tưởng đưa ra vào năm 1997 [10]:

Trang 24

• Consistent hashing, đó là một cấu trúc hasing trong caching web trong nhiều nodes, theo đó số lượng của cache items cần bị xáo trộn là nhỏ nhất khi các nodes được thêm vào hoặc gỡ bỏ

• PRR2 hoặc Plaxton Mesh, là một cấu trúc cho phép client định tuyến cho các node có cho các một đối tượng, nó yêu cầu một bảng định tuyến nhỏ

overlay-networks được xây dựng Thông điệp nội bộ giữa các nodes trong overlay-overlay-networks di chuyển theo các vòng Topology của overlay-networks, nhưng thực chất thông qua các liên kết và định tuyến cho rằng hình thức underlay mạng

Trong các hệ thống DHTs đầu tiên, Chord [11] được xây dựng trên Consistent hashing, nhưng thay thế các thông tin chung của toàn bộ mạng bằng một bảng định tuyến tại mỗi node Chord đã được tái sử dụng các thiết kế của các hệ thống DHTs khác như Koorde, EpiChord, Chord #, và Distributed k-ary (DKS)[10]

Trang 25

Tương tự như vậy, PRR là nền tảng của DHTs Tapestry và Pastry Một số hệ thống mở rộng PRR sao cho hệ thống hoạt động trong khi các nodes được joining, leaving, và failing

Content-Addressable Networks (CAN) và P-Grid không trực tiếp xây dựng dựa trên các ý tưởng đó, mặc dù nó một số điểm tương đồng với PRR.[10]

Tính năng phân biệt của DHTs(Distinguishing Features of DHTs) Như trên đã trình bày, các mô tả của một DHT tương tự như hệ thống tên miền (DNS), cho phép khách hàng để truy vấn bất kỳ máy chủ DNS cho các địa chỉ IP được liên kết với một tên máy chủ DHTs cũng có thể được sử dụng để cung cấp một dịch vụ như vậy Đã có những

đề xuất như vậy, và nó đã được đánh giá bằng thực nghiệm Các thử nghiệm ban đầu cho thấy hoạt động kém hiệu quả, mặc dù những lỗ lực gần đây đã cải thiện phần nào hiệu quả của các hệ thống DNS Tuy nhiên, DHTs có những thuộc tính khác khiến nó phân biệt khỏi hệ thống DNS

Thuộc tính phân biệt giữa DHT và DNS là tổ chức dữ liệu của nó là tự quản lý Cấu trúc bên trong để config bằng tay của các hệ thống DNS là rất nhiều và phức tạp Kiến trúc bên trong của DNS là một cấu trúc hình cây, trong đó được chia thành các khu tương ứng với các nhánh của cây Các máy chủ trong mỗi khu vực phải chịu trách nhiệm cho một khu vực của không gian tên Ví dụ, các máy chủ trong một vùng cụ thể

có thể chịu trách nhiệm đối với tất cả các tên miền kết thúc bằng Com Các máy chủ chịu trách nhiệm về những tên và cả ánh xạ đến địa chỉ IP của nó, hoặc các tách ra các vùng nhỏ hơn mỗi vùng nhỏ là môt máy chủ Ví dụ, trong khu vực máy chủ Com trên

có thể tách ra các máy chủ nhỏ hơn chỉ chịu trách nhiệm ánh xạ các tên có kết thúc abcd.com Toàn bộ cấu trúc của cây này được xây dựng bằng tay

DHTs ngược lại với DNS, tự động quyết định mà node trả lại các bản ghi Nếu nodes hiện đang lưu trữ một số bản ghi đã được gỡ bỏ khỏi hệ thống DHT tự quản lý bằng cách sao chép các bản ghi đó sang các nodes khác Vì vậy, nodes có thể tiếp tục tham gia và rời khỏi hệ thống Các DHT sẽ đảm bảo rằng các bảng định tuyến luôn được cập

Trang 26

nhật, và các bản ghi được phân phối, chẳng hạn rằng các hoạt động cơ bản vẫn làm việc Điều này join hoặc leave các nodes được gọi tắt là churn hoặc network dynamism Một tính năng chủ chốt của DHTs là khả năng chịu lỗi Điều này ngụ ý rằng lookups vẫn có thể thực hiện được ngay cả khi có một số nodes bị lỗi Vì vậy lỗi có thể được bỏ qua đến một mức độ nào đó miễn là có một số trả lời của các bản ghi trên một số nodes còn sống

1.2.3 Sức mạnh của DHTs

Dưới đây là một số điểm mạnh của DHTs được các nghiên cứu trước đây đề cập đến

Một chủ đề nghiên cứu trung tâm của các hệ thống DHTs đầu tiên đã được đưa ra là làm thế nào để giảm số lần re-routes, thường gọi tắt là hops, của bất cứ yêu cầu tìm kiếm sẽ có được trước khi đến với responsible node (node đáp ứng) Có hai lý do Đầu tiên, số hop tỉ lệ thuận với số lần truyền thông điệp như vậy sẽ tốn thời gian và hiệu năng Do đó, giảm bớt số hops thường làm giảm thời gian để thực hiện một lookup Thứ hai, càng có nhiều hops, các xác suất gặp phải các nodes bị lỗi là cao hơn trong khi thực hiện lookup

Nhiều nghiên cứu cũng đã được tiến hành về cách giảm kích cỡ của bảng định tuyến

(routing tables) Nguyên nhân chính là các thành phần trong bảng định tuyến (routing

tables) luôn được cập nhật các nodes luôn luôn join và leave khỏi hệ thống Điều này

được gọi tắt là Topology maintenance Thông thường, điều này được thực hiện bằng

cách dò tìm sự các nodes trong bảng định tuyến tại những thời gian để đảm bảo rằng các thông tin định tuyến được cập nhật Tuy nhiên, phương pháp tiếp cận lazy

Topology maintenance cũng được sử dụng, đó là nodes được thêm vào hoặc gỡ bỏ ra bảng định tuyến khi việc tìm kiếm phát hiện ra một nodes mới (thêm vào bảng định tuyến) hoặc một node bị lỗi (gỡ bỏ ra khỏi bảng định tuyến) Nói chung, nếu các bảng định tuyến lớn, thì tốn nhiều băng thông là cần thiết để duy trì nó

Trang 27

Có một ràng buộc giữa các số lượng tối đa hops và kích cỡ của bảng định tuyến Nhìn chung, số lượng của bảng định tuyến càng lớn thì số hops càng nhỏ, và ngược lại Một số DHTs [11, 13, 14] có thể đảm bảo việc tìm kiếm các các bản ghi bằng số lượng hops ít hơn hoặc bằng hàm logarithm của số nodes Ví dụ, một hệ thống có chứa 1024 nodes, thì số lượng tối đa các hops để nhảy tới đích là log2(1024) = 10 Đồng thời, mỗi node cần phải lưu giữ một bảng định tuyến có kích thước là logarithmic số nodes Trong nhiều hệ thống hàm logarithm có thể được cấu hình như là một tham số của hệ thống Trong tất cả các hệ thống dựa trên PRR, kích thước các bảng định tuyến là k*L, trong đó k được đặt bằng cơ sở trừ đi 1, và L là logarithm của kích thước hệ thống với

cơ sở là k Ví dụ, nếu các cơ sở được đặt là 2, số lượng tối đa hops trong một node hệ thống có 4096 node sẽ là log2 (4096) = 12, trong khi kích thước bảng định tuyến của nó

sẽ là 1*log2(4096) = 12 Nếu đặt cơ sở là 16, các số lượng tối đa hops trong một node

4096 hệ thống sẽ được log16(4096) = 3, trong khi kích thước bảng định tuyến sẽ được 15*log16 (4096) = 45

Ta đề cập đến hai trường hợp thú vị là nói đến cấu hình cơ bản Một là để đặt cơ sở cho vuông gốc của hệ thống kích cỡ Như vậy, tất cả các truy vấn có thể được giải quyết trong tối đa hai hops Điều này có thể được xem bởi sau công thức toán học sau, khi n được đặt thành số lượng các nodes trong hệ thống:

Các cài đặt ở trên của bảng định tuyến vuông gốc và hai hop tra cứu là thiết lập trong

hệ thống như Kelips và Tulip Thứ hai, bảng routing table chứa toàn bộ số nodes trong

hệ thống, trong đó có trường hợp tất cả các truy vấn có thể được giải quyết trong một hop, từ logn (n) = 1

Hiện nay, chúng ta đã đề cập đến các hệ thống định tuyến trong đó có các bảng kích thước tăng lên như là số lượng các nodes tăng Tuy nhiên, chẳng hạn như các hệ thống

Trang 28

CAN cố định kích thước của bảng định tuyến Các số lượng tối đa hops sau đó sẽ được theo thứ tự của hình vuông gốc của số nodes

Một câu hỏi đặt ra là số lượng routing table là bao nhiêu để có thể để giảm số lượng tối

đa hops Một kết quả được biết từ lý thuyết đồ thị, gọi là bị ràng buộc Moore tối ưu cho

số lượng tối đa hops một hệ thống n nodes có thể đảm bảo nếu mỗi node có log(n) con trỏ đến các nodes khác Những trạng thái với n nodes, khi mỗi node có log(n) giá trị định tuyến, số lượng tối đa hops được cung cấp bởi bất kỳ hệ thống có thể không được tiệm cận với giá trị AError! Bookmark not defined.A

))log(log(

)log(

n

n

Một số hệ thống, chẳng hạn như Koorde và Distance Halving, có thể thực sự đảm bảo tối đa số hops là

n với log(n) con trỏ định tuyến [1] Trong khi việc thiết kế các hệ thống này

đã được chỉ ra, một phương pháp tiếp cận đơn giản đã được đề nghị để đạt được cùng một kết quả Nếu mỗi node, thêm hiểu biết thêm mình có một bảng định tuyến hàng

xóm (neighbors’ routing table), thì số lượng các hops sẽ được tối ưu thêm so với các

hệ thống cũ DHTs Lưu ý rằng Topology maintanance nhằm tránh việc thêm giá trị vào các bảng định tuyến

Số lượng các hops không chỉ xác định thời gian để tiếp cận với các điểm đến, độ trễ của mạng (network latencies) và tốc độ của các node cũng tương đối quan trọng Một minh họa đơn giản là một kịch bản hai hop hệ thống thông điệp từ một tuyến đường đến Nhật Bản và Châu Âu quay lại sẽ lớn hơn rất nhiều là các hop trên cùng một khu vực Đối với ví dụ khác, hãy cân nhắc việc định tuyến từ các node vào node d đến e trên Overlay của mô tả Hình 1.9 Mất hai hops trên overlay network thông qua để vượt qua con đường d-a-e Nhưng trên underlay nó phải đi qua 5 hops hops thông qua con đường d-f-g-e-a-e

Trang 29

Một thước đo được gọi là stretch thường được sử dụng để nhấn mạnh những chi phí thời gian trễ của DHTs Stretch của việc tìm đường là thời gian dành cho DHT để định tuyến thông qua các tuyến đường đó, là chi phí thời gian từ node nguồn đến đích để giao tiếp Một ví dụ minh họa, nếu một trong các lookup DHT đi các máy x1, x2 xn,

và d (xi, xj) là thời gian để gửi một thông điệp từ xi tới xj, Như vậy công thức để tính

stretch là

),1(

),1(

)2,1(

xn x d

xn xn d x

x

d + + − stretch của toàn bộ hệ thống là stretch lớn nhất

cho bất kỳ tuyến đường nào Trong thực tế, chúng ta đã so sánh thời gian cho các DHT

để định tuyến một thông điệp thông qua nodes khác nhau, với thời gian nguồn và đích

đã truyền đạt trực tiếp mà không có sự tham gia của DHT Thông báo rằng trong thực

tế, nguồn và đích không thường lấy thông tin của nhau (thường chỉ có một chiều), từ mỗi node chỉ biết một phần nhỏ của các nodes khác

Một số DHTs, chẳng hạn như những DHT dựa trên PRR, được cấu trúc như vậy có thể

có một số mềm dẻo trong lựa chọn giữa các nodes trong bảng định tuyến [13,14] Do vậy, mỗi node có cố gắng chọn những nodes trong các bảng định tuyến có độ trễ nhỏ

Điều này thường được gọi là sự lựa chọn các nodes hàng xóm gần (proximity

neighborn Selection PNS) Các hệ thống khác không có sự mềm dẻo này, nhưng thay vào đó vì tăng kích thước của bảng định tuyến để có nhiều nodes để lựa chọn khi định tuyến Kỹ thuật này được gọi tắt là lựa chọn tuyến đường gần (proximity route

selection PRS) Th ử nghiệm đã chỉ ra rằng PNS cho stretch thấp hơn PRS

Vì số lượng các nodes tăng, nó sẽ trở thành thách thức không nhỏ cho mỗi node trong việc tìm kiếm các nodes có trễ thấp nhất Lý do là các node cần thăm dò nhiều nodes trước khi tìm ra những node gần nhất Hoạt động trên mạng hỗn tạp cho thấy cách thức này có thể được thực hiện một cách mềm dẻo Ví dụ, trong Vivaldi , mỗi node tập hợp những thông tin trễ từ một số máy khác và sau đó mỗi node sẽ nhận được một vị trí phối hợp trong một không gian hợp lý Ví dụ đơn giản, không gian 3-chiều, mỗi node

sẽ nhận được một tổng hợp (x, y, z) phối hợp Các tọa độ tính được khoảng cách

Trang 30

Euclidean giữa hai nodes tổng hợp các ước tính mạng lưới tọa độ trễ giữa hai nodes Sự phát triển ở chỗ một node không cần phải trực tiếp giao tiếp với các node khác để biết mức độ trễ khi tương tác với nó, nhưng có thể ước tính các trễ tổng hợp từ các tọa độ của các node, mà nó có thể nhận được từ nodes khác hoặc từ một dịch vụ

Chúng ta tổng hợp và tóm tắt các thuộc tính quan trọng nhất mà định tuyến được mở rộng Việc định tuyến có thể được mở rộng Số lượng các hops luôn nhỏ hơn hoặc bằng log(n) và mỗi node cũng chỉ chứa số lượng các con trỏ node nhỏ hơn hoặc bằng log(n), trong môt hệ thống có n nodes

Các con trỏ nodes phân tán đều Mỗi node lưu trữ trung bình d/n bản ghi, trong đó d là

số lượng các bản ghi trong DHT, và n là số nodes

Quy mô của hệ thống có tính động Mỗi thao tác join/leave của một node trung bình đòi hỏi phải phân phối lại d/n bản ghi, trong d là số lượng các bản ghi trong DHT, và n

là số nodes

DHTs tự quản lý các bản ghi và thông tin định tuyến khi:

Nodes join, thông tin định tuyến được cập nhật vào các nodes tạo mới, và các bản ghi trong routing table được phân phối lại

Nodes leave, thông tin định tuyến được cập nhật lại, và các bản ghi trong routing table được phân phối lại trước khi node đó rời khỏi hệ thống

Nodes fail Các nodes fail được tìm ra và thông tin định tuyến được cập nhật để ghi nhận chúng Routing table sẽ tự động khôi phục

Ngoài việc trên, một số hệ thống tự quản lý tải trên các nodes, trong khi những hệ thống khác tự quản lý để khôi phục lại từ các mối đe dọa an ninh

Trang 31

Hình 1.10: Một tấn công Sybil Node c đại diện cho các nodes c, d, và e trong overlay

network

Bảo mật cần phải được xem xét cho tất cả các hệ thống phân tán, và DHTs không phải

là ngoại lệ Một trong những loại hình cụ thể của cuộc tấn công đó đã được nghiên cứu

là Sybil attack[15] Các cuộc tấn công này là một host độc hại đã join tham gia các DHT với nhiều nhận dạng (xem hình 1.10) Do vậy, bất kỳ kỹ thuật mà dựa vào một số yêu cầu chính xác để phát hiện các kết quả độc hại hoặc phát hiện hành vi ứng xử trở nên không có hiệu quả Để chống lại sự tấn công này là sử dụng một số phương tiện để thiết lập sự nhận dạng của các nodes

Một cách để nhận dạng của các nodes của DHT là sử dụng khóa công khai trong mã hóa Mỗi node trong DHT được xác minh để có một chứng nhận hợp lệ tạo ra bởi trusted certificate authority Do đó, các nodes trong DHT có thể được coi là đáng tin cậy Sự giả định này có ý nghĩa trung tâm của hệ thống, chẳng hạn như Grid hoặc hệ thống file system Tuy nhiên, điều này không khả thi đối với một hệ thống mở, chẳng hạn như là một hệ thống thoại Internet như Skype

Trang 32

Tạo ra nhận dạng node dạng bằng cách sử dụng chứng nhận là không đủ để đảm bảo an ninh Thậm chí những nodes tin cậy chính là nhứng nodes độc hại hoặc những node kẻ thù Vì vậy, an ninh phải được xem xét ở tất cả các cấp và các giao thức của hệ thống cần phải được thiết kế như vậy là khó để lạm dụng hệ thống

Các vấn đề về an ninh xem xét cho DHTs bị tấn công khi định tuyến Ví dụ, một node

có thể định tuyến sai node, hay sai hướng định tuyến Hầu hết các kỹ thuật để ngăn chặn các loại tấn công có liên quan đến việc xác minh không thay đổi của thuộc tính hệ thống, chẳng hạn như bảo đảm rằng luôn luôn làm cho tiến trình định tuyến về hướng điểm đến Nodes độc hại cũng có thể từ chối sự tồn tại của dữ liệu Điều này có thể ngăn ngừa được bằng cách so sánh các kết quả từ các bản sao khác nhau, với điều kiện

là các bản sao không phải là từ Sybil attack [15] Cuối cùng, DHT cũng có tấn công từ chối dịch vụ, chẳng hạn như cho phép nhiều nodes join và leave hệ thống một cách thường xuyên, như vậy hệ thống sẽ đổ vỡ

Cuối cùng, không thể dừng lại từ nodes có hành vi độc hại, đặc biệt là trong một quy

mô một overlay lớn và mở cho bất kỳ người dùng nào và không sử dụng khóa công khai Một câu hỏi quan trọng là làm sao để định được những nodes là đáng tin cậy và những nodes độc hại Một trong những giải pháp này là đoán nhận hành vi trong quá khứ và lịch sử của node như là một biểu hiện của nó sẽ hành xử như thế nào trong

tương lai Nghiên cứu về trust managerment bằng cách thu thập, xử lý, và phổ biến

thông tin phản hồi về quá khứ của hành vi tham gia nodes

Trang 33

trong bảng chữ cái alphabetical Ví dụ, trong môi trường tính toán lưới, các keys trong DHT có thể đại diện cho khả năng của CPU Theo đó, một ứng dụng có thể đưa ra yêu cầu tìm kiếm tất cả các giá trị với các keys nằm trong khoảng 2000 – 5000 MHz Range queries trong DHT lần đầu tiên được đề cập bởi Andrzejak và Xu [12] Sau đó được phát triển trên tất cả các DHT bởi các nghiên cứu khác Thực tế có một số nodes lưu trữ nhiều bản ghi hơn so với các node khác, vì vậy các luồng khi thực hiện range queries là không cân bằng, các hệ thống Mercury và SkipNet thực hiện các range queries mà bỏ qua được vấn đề này Vấn đề này cũng là một vấn đề cần nghiên cứu Group Communication Các thông tin tìm đường trong đó đã được lưu trong các hệ thống DHTs có thể được sử dụng cho mục đích group communication Các thông tin tìm đường đó được sử dụng cả trong thao tác lookups và trong cả group communication Routing tables trong DHT được sử dụng để broadcast một thông điệp

từ một node đến tất các các nodes khác trong overlay network Ta có thể cài đặt các nodes có thể nhận thông điệp trong một số bước nhất định, hoặc một số node có khả năng forward thông điệp tới một vài nodes khác

1.3 Gi ới thiệu một số DHT

Trong phần này chúng ta sẽ xem xét một số well-known DHT như Chord, 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

Trang 34

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 maintenance để 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 [11]

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

Trang 35

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.11 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 dựng bảng finger table được thể hiện trong Hình 1.11(b) Node n chọn các finger của nó bằng cách xem nó như là điểm khởi đầu của không gian ID, rồi chọn finger là successor 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 + 23chia 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 Hình 1.4(c) cho thấy bảng định tuyến của node 3 và node 11

Trang 36

Hình 1.11 (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

Mapping Items Onto Nodes

Như chúng ta thấy trên Hình 1.11, 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

Lookup Process

Quá trình tìm kiếm là kết quả tự nhiên của cách chia không gian ID Cả việc chèn và tìm kiếm dữ liệu đều dựa trên việc tìm ID successor của một ID Ví dụ, khi node 11

Trang 37

muốn chèn một item mới với ID là 8, lookup được chuyển tiếp tới node 3 là node đứng trước gần node 8 nhất trong bảng finger của node 11 Node lại thực hiện quá trình tương tự, nó chuyển tiếp yêu cầu tới node 5 là node đứng trước gần 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 mộ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

Hình 1.12 cho chúng ta thấy một ví dụ về quá trình join vào mạng của một node

Giả sử node 21 có successor là node 32, trên node 32 đang lưu các key 24 và 30 Node

26 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

Trang 38

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

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

Trang 39

Hình 1.13 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ẽ

Sau đó 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

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ất 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

Trang 40

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

Upper 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ó

1.3.2 Kademlia [16]

Overlay graph

Kademlia graph tổ chức các ID trong không gian vòng tròn trong đó ID của các node là

lá của cây nhị phân, vị trí của các node được xác định bằng prefix của ID Các ID trong Kademlia được biểu diễn theo cơ sở nhị phân Mỗi node chia cây nhị phân thành các cây nhị phân con liên tiếp mà không chứa ID của node và lưu ít nhất một contact trong mỗi cây con này Ví dụ, một node với ID là 3 có biểu diễn nhị phân 0011 trong không gian ID N=16 Do prefix với độ dài 1 là 0 nên nó cần biết một node với chữ số đầu tiên

là 1 Tương tự như vậy, do prefix với độ dài 2 là 00 nên node cần biết một node với prefix là 01 Prefix với độ dài 3 là 001, node cần biết một node khác với prefix 000 Cuối cùng, do prefix với độ dài bằng 4 là 0011 nên nó cần biết node có prefix là 0010 Quy tắc này được minh họa trong Hình 1.14 dưới đây:

Ngày đăng: 25/02/2021, 16:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[6] Ion Stoica, Daniel Adkins, Shelley Zhuang, Scott Shenker, and Sonesh Surana. Internet indirection infrastructure Sách, tạp chí
Tiêu đề: Internet indirection infrastructure
Tác giả: Ion Stoica, Daniel Adkins, Shelley Zhuang, Scott Shenker, Sonesh Surana
[9] A. Demers, S. Keshav, and S. Shenker. Analysis and simulation of a fair queuing algorithm [10] Frank Dabek. A Distributed Hash Table Sách, tạp chí
Tiêu đề: Analysis and simulation of a fair queuing algorithm
Tác giả: A. Demers, S. Keshav, S. Shenker
[12] A. Rowstron and P. Druschel. Pastry: Scalable, distributed object location and routing for large scale peer-to-peer systems Sách, tạp chí
Tiêu đề: Pastry: Scalable, distributed object location and routing for large scale peer-to-peer systems
Tác giả: A. Rowstron, P. Druschel
[13] K. Aberer, P. Cudr´ e-Mauroux, A. Datta, Z. Despotovic, M. Hauswirth, M. Punceva, and R. Schmidt. P-Grid: a self-organizing structured P2P system Sách, tạp chí
Tiêu đề: P-Grid: a self-organizing structured P2P system
Tác giả: K. Aberer, P. Cudré-Mauroux, A. Datta, Z. Despotovic, M. Hauswirth, M. Punceva, R. Schmidt
[16] Petar Maymounkov and David Mazieres. Kademlia: A peer-to-peer information system based on the XOR metric Sách, tạp chí
Tiêu đề: Kademlia: A peer-to-peer information system based on the XOR metric
Tác giả: Petar Maymounkov, David Mazieres
[18] F. Dabek, J. Li, E. Sit, J. Robertson, M. F. Kaashoek, and R. Morris. Designing a DHT for low latency and high throughput Sách, tạp chí
Tiêu đề: Designing a DHT for low latency and high throughput
Tác giả: F. Dabek, J. Li, E. Sit, J. Robertson, M. F. Kaashoek, R. Morris
[24] Gupta, K. Birman, P. Linga, A. Demers, and R. van Renesse. Kelips: Building an Efficient and Stable P2P DHT Through Increased Memory and Background Overhead Sách, tạp chí
Tiêu đề: Kelips: Building an Efficient and Stable P2P DHT Through Increased Memory and Background Overhead
Tác giả: K. Gupta, P. Birman, A. Linga, R. Demers, R. van Renesse
[25] P. Goyal, H.M. Vin, and H. Cheng. Start-time fair queuing: A scheduling algorithm for integrated services packet switching networks Sách, tạp chí
Tiêu đề: Start-time fair queuing: A scheduling algorithm for integrated services packet switching networks
Tác giả: P. Goyal, H.M. Vin, H. Cheng
[26] Zhou Hu. NAT Traversal Techniques and Peer-to-Peer Applications Sách, tạp chí
Tiêu đề: NAT Traversal Techniques and Peer-to-Peer Applications
Tác giả: Zhou Hu
[3] Gnutella http://www.gnutella.com [4] Napster http://www.napster.com Link
[7] S. Rhea, B. Godfrey, B. Karp, J. Kubiatowicz, S. Ratnasamy, S. Shenker, I. Stoica, and H. Yu. OpenDHT: a public DHT service and its uses Khác
[8] Charles Blake and Rodrigo Rodrigues. High availability, scalable storage, dynamic peer networks: Pick two Khác
[11] Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan.Chord: A scalable peer-to-peer lookup service for Internet applications Khác
[14] Ben Y. Zhao, Ling Huang, Jeremy Stribling, Sean C. Rhea, Anthony D. Joseph, and John D. Kubiatowicz. Tapestry: A resilient global-scale overlay for service deployment Khác
[17] A. Gupta, B. Liskov, and R. Rodrigues. Efficient routing for peer-to-peer overlays Khác
[19] K. Gummadi, R. Gummadi, S. Gribble, S. Ratnasamy, S. Shenker, and I. Stoica. The impact of DHT routing geometry on resilience and proximity Khác
[20] A. Rowstron and P. Druschel. Storage management and caching in past, a large-scale, persistent peer-to-peer storage utility Khác
[21] M. F. Kaashoek and D. R. Karger. Koorde: A Simple Degree-optimal Distributed Hash Table Khác
[22] Timothy Roscoe and Steven Hand. Palimpsest: Soft-capacity storage for planetary scale services Khác
[23] Matthias Ruhl and David R. Karger. Simple efficient load balancing algorithms for peer -to-peer systems Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w