Hình 2.4 mô tả mạng JXTA ảo hoạt ựộng ở lớp trên cùng của bất kỳ mạng nào như Internet hoặc non-IP và cho phép các peer tương tác trực tiếp và tổ chức một cách ựộc lập.
Hình 2.4. Mô hình mạng JXTẠ
Theo mô hình mạng JXTA ta có thể thấy JXTA có các ựặc tắnh như:
Ớ Khả năng phối hợp hoạt ựộng (Interoperability): đây là một ựặc tắnh quan trọng của JXTA, tức là các peer dễ dàng ựịnh vị lẫn nhau và dễ dàng trao ựổi thông tin với nhau cũng như các peer dễ dàng tham gia vào các hệ thống P2P khác nhaụ Do vậy các hệ thống P2P khác nhau có thể dễ dàng
phối hợp hoạt ựộng với nhaụ Vắ dụ: Có thể phối hợp hệ thống P2P chia sẻ file nói chung (Gnuttela) và chia sẻ nhạc (Napster).
Ớ Không phụ thuộc vào platform (Platform independence): Tức là nó không phụ thuộc vào ngôn ngữ lập trình, không phụ thuộc vào hệ ựiều hành và không phụ thuộc vào thủ tục mạng, giao thức mạng (TCP/IP, BluetoothẦ). Tóm lại JXTA có thể chạy trên nhiều ngôn ngữ lập trình, nhiều giao thức và hệ ựiều hành khác nhaụ
Ớ Tắnh phổ biến (Ubiquity): Tức là JXTA có thể hoạt ựộng trên tất cả các thiết bị số (digital device):
- Thiết bị ựiện tử dân dụng. - Sensor. - PDẠ - Mobile phonẹ - PC. 2.6. Ưu nhược ựiểm của JXTA Ưu ựiểm:
Ớ Các hệ thống xây dựng dựa trên JXTA có khả năng tương tác với các ứng dụng khác. Nhiều ứng dụng và dịch vụ xây dựng trên cùng framework có thể tương tác với nhau một cách dễ dàng. Chúng có thể thuộc về các tổ chức khác nhau và hệ thống P2P khác nhaụ Vai trò của JXTA trong mạng P2P tương tự như vai trò của trình duyệt trên trong internet. Và những người phát triển JXTA không cần sử dụng quá nhiều thời gian cho việc phát triển các lớp bên dưới bởi vì nó ựã ựược phát triển và họ chỉ cần tập trung vào ứng dụng ựang phát triển.
Ớ Công nghệ JXTA ựược dựa trên việc sử dụng các giao thức, như thế người phát triển không cần làm việc với platform cụ thể. JXTA không cần phiên bản ứng dụng khác nhau cho các platform khác nhaụ JXTA ựộc lập với các ngôn ngữ lập trình và như thế người phát triển C có thể làm giống như người phát triển Javạ
Ớ Kỹ thuật P2P hiện tại phụ thuộc vào kỹ thuật vận chuyển như TCP hay UDP... JXTA cố gắng ựể ựộc lập với lớp vận chuyển khác nhau như TCP, UDP...
Ớ Các peer JXTA có thể là bất cứ thiết bị số nào như ựiện thoại di ựộng, PC, router... Như thế JXTA chiến thắng giới hạn giao tiếp hiện tại giữa các PC.
Ớ JXTA sử dụng ựịnh dạng XML ựể gửi quảng bá và messagẹ JXTA tăng sự mở rộng của nó bằng việc sử dụng ựịnh dạng chuẩn như XML nhưng nó cần làm việc nhiều hơn với XML parser cho các thiết bị như ựiện thoại di ựộng.
Nhược ựiểm: Vì JXTA vẫn ựang trong giai ựoạn phát triển. Một vài thay ựổi sẽ ựến trong giao diện, giao thức, và sự bổ sung sẽ ảnh hưởng ựến ứng dụng phát triển hiện tạị
2.7. Các phiên bản và tương lai của JXTA Các phiên bản JXTA : Các phiên bản JXTA : Ớ JXTA 1.0 (2001) - Chỉ hỗ trợ J2MẸ - Hỗ trợ ngôn ngữ C, Javạ Ớ JXTA 2.0 (2004) - Hỗ trợ cho J2SE, J2MẸ
- Hỗ trợ các ngôn ngữ Java, C, Perl, Python, Rubỵ
Tương lai của JXTA :
Ớ Cộng ựồng phát triển mở:
- JXTA là dự án mã nguồn mở.
- Xây dựng bởi rất nhiều chuyên gia trên thế giớị
- Môi trường cộng tác phát triển trên nền Web (jxtạorg). - được sự hỗ trợ rất lớn của cộng ựồng các nhà phát triển P2P.
Ớ Ứng dụng ngày càng rộng rãi:
- Truyền thông không dây: JXTA for J2MẸ - Chắnh phủ: Video conference, e-Government.
- Giải trắ: Game online, Music sharing.
- Các ứng dụng truyền thông và cộng tác: File sharing, chat, các ứng dụng chia sẻ có thể sử dụng cho quản lý, giáo dụcẦ
Chương 3
NGHIÊN CỨU GIAO THỨC CHORD TRÊN MẠNG NGANG HÀNG
Chương này sẽ trình bày những vấn ựề cơ bản của giao thức Chord. Mở ựầu chương là những giới thiệu qua về mạng ngang hàng dựa trên bảng băm phân tán (thế hệ mạng ngang hàng thứ ba) bao gồm những khái niệm về: Bảng băm phân tán (Distributed Hash Table) và những ựặc ựiểm chắnh của mạng ngang hàng dựa trên bảng băm phân tán. Phần tiếp theo của chương này sẽ tập trung vào vấn ựề cốt lõi của chương ựó là giao thức Chord. đây là một trong những DHTs ựơn giản nhưng hiệu quả. Phần này sẽ trình bày về mô hình hệ thống, cấu trúc vòng tròn Chord, phân tắch tiến trình tìm kiếm dữ liệu, vấn ựề ổn ựịnh khi các Node gia nhập và rời khỏi mạng, ựồng thời ựưa ra các giải pháp ựể nâng cao hiệu năng của Chord dưới ựiều kiện churn rate caọ
3.1. Thế hệ mạng P2P dựa trên bảng băm phân tán
Mạng ngang hàng ựã trải qua ba thế hệ. Trong ựó thế hệ thứ ba ựược biết ựến với cái tên là mạng ngang hàng dựa trên bảng băm phân tán. Thế hệ thứ ba ựược bắt ựầu với các dự án nghiên cứu như Chord, Patry, P-grid và Tapestrỵ Các dự án này ựều tập trung nghiên cứu về bảng băm phân tán (Distributed Hash Table). Một Node trong các hệ thống này có thể ựược nhận dạng dựa trên việc băm một vài thuộc tắnh ựặc trưng của Node như ựịa chỉ IP của Nodẹ
3.1.1.Bảng băm phân tán 3.1.1.1.Hàm băm
Vào những năm 1953, nhà toán học Hans P.Luhn, lúc ựó ựang làm việc cho IBM ựã mô tả và thử một hàm toán học mới mà nó có thể tạo ra các biến ngẫu nhiên với một ựịnh dạng duy nhất. Khái niệm này có thể cho phép tìm ựược dữ liệu nhanh hơn mà máy tắnh không cần phải ựọc mọi dòng của văn bản, thay vào ựó nó cho phép truy nhập tới các chỉ số trong một mảng tuyến tắnh sau này ựưa ra khái niệm về chuỗị Với chuỗi (chaining) này, Luhn ựã nảy ra một ý tưởng là sử dụng một không gian ảo trong ma trận ựể lưu trữ dữ liệu theo thứ tự và từ ựó thực hiện các tìm kiếm bên ngoàị
Mặc dù Luhn ựã ựưa ra thuật ngữ ỘbămỢ nhưng nó chưa ựược viết thành tài liệụ Dumey ựã mô tả về kỹ thuật băm ựầu tiên trong cuốn sách của ông ỘComputers and AutomationỢ. Năm 1956, Dumey ựã tiến xa hơn một bước khi ông ựề xuất một hàm băm ựơn giản ựó là thực hiện phép chia cho một số nguyên tố và số dư ựược sử dụng như ựịa chỉ băm.
Bảng băm (Hash Table) bao gồm nhiều mảng kết hợp và ựược biết ựến như là bảng tìm kiếm. Những bảng này lần lượt ựược sử dụng ựể liên kết ựến nguồn tài nguyên. để có thể ánh xạ một giá trị ựến một khóa thì hàm băm ựược sử dụng. Hàm băm sẽ thực hiện băm giá trị có liên quan ựến thông tin về tài nguyên ựể thu ựược một khóạ Khi một khóa ựược tạo ra thì nó sẽ ựược ánh xạ tới không gian ma trận, trong không gian ma trận này thì mỗi tài nguyên ựược kết hợp với một khóạ Một hàm băm tốt khi ựó ta có thể xem rằng các khóa ựược phân tán và ngẫu nhiên.
Giả sử ta có một từ ỘcanỢ và từ này có thể ựược biểu diễn bởi x, và ta thực hiện băm x bởi một hàm băm h. Tức là:
0 ≤ h(x) ≤ n Ờ 1
Ở ựây n là số không gian có trong bảng băm. Giả sử n = 97, các bước thực hiện có thể ựược diễn tả như sau:
Ớ Bước 1: Chuyển giá trị của trường khóa ỘcanỢ thành một chuỗi các giá trị thập phân sử dụng bảng mã ASCII (American Standard Code for Information Interchange), kết quả là: 99, 97, 110.
Ớ Bước 2: Cộng các giá trị ta ựược kết quả là 306.
Ớ Bước 3: thực hiện phép tắnh: 306 mod 97 ta ựược số dư là 15.
Ớ Bước 4: Gán từ ỘcanỢ với số 15.
Vắ dụ ở trên chỉ là một hàm băm ựơn giản. Nó có thể tránh ựược những xung ựột bởi vì kắch thước của bảng băm là một số nguyên cố ựịnh (n = 97). Tuy nhiên, nếu bảng này có kắch thước không xác ựịnh thì rất khó ựể xác ựịnh các khóa ựược ánh xạ ở ựâu trong không gian của bảng băm và vấn ựề xung ựột hoàn toàn có thể xảy rạ
Các hàm mật mã (Criptographic Hashs) thường ựược sử dụng trong DHTs nhằm tạo ra các message digests, ựể kết hợp một tài nguyên với một khóạ Hàm mật mã
thường ựược sử dụng là SHẠ Phiên bản hàm mật mã SHA-1 vẫn ựược sử dụng rộng rãi ngày nay. Chuẩn của thuật toán SHA bao gồm bốn thuật toán tắnh hash code ựó là: SHA-1, SHA-256, SHA-384, và SHA-512 dùng ựể tắnh rút gọn dữ liệu ựiện tử (Message). Khi message có ựộ dài nhỏ hơn 264 bit (dùng SHA-1 và SHA- 256) hoặc nhỏ hơn 2128 bit (dùng SHA-384 và SHA-512) sẽ cho output ra là gọi là message digest. Message digest này có ựộ dài từ 160 ựến 512 bit tùy thuộc vào thuật toán ựược dùng. SHA ựược mặc ựịnh sử dụng với một thuật toán mã hóa khác như thuật toán chữ ký số (Digital Signature Algorithms). Những thuật toán này luôn luôn ựảm bảo sự an toàn, bởi vì sự tắnh toán ựều là không thể trong cả hai trường hợp sau:
Ớ Không thể tìm ra ựược message gốc khi mà biết ựược message digest.
Ớ Không thể có hai message gốc khác nhau mà lại có cùng message digest. Mỗi thuật toán SHA trên ựều tiến hành qua hai quá trình, quá trình thứ nhất là tiền xử lý (Preprocessing) và quá trình thứ hai là quá trình tắnh hash (Hash Computation). Quá trình tiền xử lý ban ựầu sẽ chuyển message thành một khối m bit và ựồng thời thiết lập các giá trị sẽ ựược sử dụng trong quá trình tắnh hash. Quá trình tắnh hash sẽ tạo ra một sự sắp xếp các message, lặp ựi lặp lại quá trình tạo ra một chuỗi các hash code, và giá trị cuối cùng sẽ ựược dùng ựể tạo message digest.
Trong bốn thuật toán về SHA nói trên, các thuật toán khác nhau về kắch cỡ của khối dữ liệu ựầu vào, về khối dữ liệu ựầu rạ Bảng 3.1 sau ựây mô tả chi tiết về các thuật toán SHA nói trên:
3.1.1.2.Khái niệm bảng băm phân tán
Như vậy, chúng ta có thể hình dung về bảng băm là cấu trúc dữ liệu sử dụng hàm băm nhằm ánh xạ các khóa (Keys) với các giá trị băm (Hash Values) ựể xác ựịnh nơi lưu trữ tài nguyên. Bảng băm cho phép truy cập tới các khóa một cách nhanh chóng thông qua thuật toán tìm kiếm.
Bảng băm phân tán (Distributed Hash Table) tức là bảng băm ựược phân tán trên tất cả các Node tham gia trong mạng. Một tên ựược sử dụng ựể nhận dạng một Nodẹ Bảng băm phân tán cung cấp một dịch vụ tìm kiếm giống như một bảng băm (gồm tên và khóa) ựược cất giữ tại DHT và bất kỳ Node tham gia nào cũng có thể khôi phục hiệu quả khóa có liên hệ với tên ựã chọ Chịu trách nhiệm về việc bảo trì sự ánh xạ từ tên ựến khóa ựược phân cho các Node, như vậy một sự thay ựổi trong tập hợp những người tham gia mạng sẽ gây ra sự tan rã là nhỏ nhất. điều này cho phép DHT với quy mô số Node rất lớn có thể xử lý các Node khi ựi vào hoặc ra khỏi mạng.
3.1.1.3.Mô hình bảng băm phân tán
Trong mạng, các máy ựược gọi là các Node và tài nguyên ựược gọi là các ựối tượng. Một tên ựược sử dụng ựể nhận dạng một Node và nói chung mỗi Node chỉ có một tên trong một không gian tên. Một tên tiêu biểu cho một Node trong Internet chắnh là ựịa chỉ IP của nó. Mỗi Node sẽ ựược tham chiếu ựến một số nhận dạng duy nhất trong một không gian nhận dạng. Trong mạng ngang hàng thì số nhận dạng của Node có ựược từ việc băm tên của Node (chắnh là ựịa chỉ IP của Node): P = hash(IP). Một khoá là nhận dạng duy nhất của tài nguyên và có thể có ựược từ việc băm tên của tài nguyên giống như K = hash(V). Trong kỹ thuật DHT của mạng ngang hàng, các tài nguyên có liên hệ với các khoá (tạo ra bằng cách băm tên tài nguyên), mỗi Node trong hệ thống sẽ xử lý một phần không gian băm và chịu trách nhiệm cất giữ một phạm vi nhất ựịnh của khoá. Chức năng DHT cho phép các Node lưu vào và lấy ra ựược các tài nguyên dựa trên khoá của chúng, và nó tỏ ra rất hữu ắch cho những hệ thống phân tán lớn. Hình 3.1 thể hiện mô hình bảng băm phân tán.
Hình 3.1. Bảng băm phân tán.
Theo mô hình này thì bảng băm phân tán chứa các Key và Datạ Key ở ựây chắnh là thông tin về tài nguyên ựược chia sẻ trên mạng ngang hàng còn Data là thông tin về các Node ựang chia sẻ tài nguyên ựó. Khi một Node chia sẻ một tài nguyên nào ựó thì ựầu tiên hàm băm sẽ thực hiện băm ựịa chỉ IP của Node ta ựược Data và băm tên của tài nguyên ựược chia sẻ ựể ựược Keỵ Sau ựó, Key và Data sẽ ựược lưu trữ trong bảng băm phân tán thể hiện bằng thủ tục: Insert(Key,Data). Khi một Node tìm kiếm tài nguyên trên mạng thì tên tài nguyên cần tìm kiếm cũng ựược băm ra ựể ựược Keỵ Sau ựó Key sẽ ựược tìm kiếm trên bảng băm phân tán thể hiện bằng hàm: Lookup(Key). Bảng băm phân tán sẽ trả kết quả cho Node ựang tìm kiếm. Kết quả tìm kiếm ở ựây chứa thông tin về ựịa chỉ IP của những Node ựang nắm giữ tài nguyên cần tìm kiếm. Từ ựó, Node tìm kiếm có thể liên kết trực tiếp tới Node nguồn ựể lấy tài nguyên.
Bảng băm phân tán hỗ trợ nhiều loại giao thức như: Chord, CAN, Kademlia, Pastry, Tapestry, P_Grid, Kelips. Bài luận này sẽ tập trung nghiên cứu về Chord. đây là một giao thức ựơn giản nhưng rất hiệu quả và chắnh xác.
3.1.2.Ưu ựiểm của thế hệ mạng ngang hàng dựa trên bảng băm phân tán Thế hệ mạng ngang hàng dựa trên bảng băm phân tán có nhiều ưu ựiểm nổi trội so với các thế hệ mạng ngang hàng trước ựó. điểm quan trọng nhất trong mạng ngang hàng là sự ựịnh vị có hiệu quả vị trắ của Node lưu trữ tài nguyên mong muốn trong hệ thống. Node phải có thể ựi vào và rời bỏ hệ thống thường xuyên mà không ảnh hưởng tới hệ thống và tải phải ựược cân bằng trên những Node ựang tồn tạị Ở
thế hệ thứ nhất của mạng ngang hàng có sự tồn tại của máy chủ chỉ mục ựể tìm tài nguyên mong muốn. Với hệ thống tập trung, máy chủ chỉ mục sẽ lưu trữ tất cả các thông tin về ựịa chỉ của tài nguyên. Khi một Node yêu cầu một tài nguyên nó sẽ tìm kiếm tại máy chủ và trả lại ựịa chỉ tài nguyên mong muốn, rồi truy nhập tới Node lưu trữ tài nguyên ựể lấy về. Hệ thống này tuy ựơn giản nhưng tồn tại những vấn ựề làm cho nó không thắch hợp với hệ thống lớn. đó là trong mạng có thể xảy ra tình trạng lỗi ựơn, lưu lượng mạng và lưu trữ tập trung vào máy chủ nên dễ xảy ra tình trạng quá tải, rớt mạng. Ở thế hệ thứ hai của mạng ngang hàng thì lại không có thông tin ựể ựịnh vị tài nguyên, sử dụng cơ chế phát quảng bá ựể truy tìm tài nguyên. điểm bất lợi của nó là không có nội dung tin cậy ựể ựịnh vị thông tin, sử dụng nhiều tài nguyên mạng cho việc tìm kiếm.
Chắnh những ựiểm bất lợi của hai thế hệ ựầu ựã dẫn ựến sự ra ựời của thế hệ thứ ba với kỹ thuật DHT. Mạng ngang hàng dựa trên bảng băm phân tán có những ưu ựiểm chắnh sau:
Ớ Khả năng phân quyền: Các Node trong hệ thống ựược thiết lập không cần bất kỳ trung tâm phối hợp nàọ
Ớ Khả năng mở rộng: Hệ thống hoạt ựộng có hiệu quả thậm trắ với hàng trăm, hàng nghìn Nodẹ
Ớ Khả năng chịu lỗi: Hệ thống vẫn làm việc có hiệu quả thậm trắ khi Node