Giải pháp khắc phục lỗi trong truyền thông multicast dựa trên nền mạng ngang hàng chord

Tuy đã góp phần giải quyết được những điểm chưa phù hợp khi áp dụng mô hình mạng ngang hàng Chord cho mục đích truyền thông multicast, nhưng do thời gian thực hiện nghiên cứu có hạn, giao thức đưa ra trong khóa luận này vẫn còn những tồn tại chưa giải quyết được. Thứnhất, ý tưởng của giải pháp đưa ra là sửdụng các node con của một node N để phát hiện lỗi xảy ra ởnode N, rồi thông báo cho node cha của N để xử lý. Giải pháp đưa ra đã thực hiện tốt ý tưởng. Tuy nhiên, với vấn đề lỗi xảy ra ởcảnode N và node cha của nó, giao thức xử lý chưa được cài đặt thành công.

pdf50 trang | Chia sẻ: lylyngoc | Lượt xem: 2687 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giải pháp khắc phục lỗi trong truyền thông multicast dựa trên nền mạng ngang hàng chord, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
multicast có yêu cầu mạng phủ trước hay không, người ta phân loại các giao thức truyền tin multicast tầng ứng dụng thành hai loại: mesh-first và tree-first. Trong mô hình truyền tin kiểu tree-first, các node khi tham gia vào cây multicast sẽ tự tìm cho mình một node cha từ các node thành viên trước đó của cây. Việc chọn node cha thường được thực hiện dựa trên một số tiêu chí như cân bằng băng thông giữa các node hoặc đảm bảo độ sâu của cây cân bằng giữa các nhánh. Ưu điểm của mô hình này là các node có thể chọn node cha, do đó có thể tránh được tình trạng một node nào đó phải Khóa luận tốt nghiệp 13 Phạm Duy Thăng chịu tải quá cao. Tuy nhiên nhược điểm của mô hình này là khi một node nào đó bị lỗi, việc khôi phục lại cây multicast để đảm bảo luồng dữ liệu cho các node con là tương đối khó khăn do mỗi node biết rất ít thông tin về các node khác trong mạng. Hình 4. Mạng phủ 7 node (a) và cây multicast xây dựng trên mạng phủ (b) Trong mô hình truyền tin kiểu tree-first, các node trước khi tham gia vào cây phải là thành viên của một mạng phủ nào đó, và giữa chúng đã tồn tại các liên kết với nhau dạng lưới. Sau đó, cây multicast sẽ được xây dựng dựa trên các liên kết của mạng phủ này. Ưu điểm của mô hình này là khả năng chịu lỗi cao do mỗi node tồn tại nhiều liên kết với các node khác trong mạng. Tuy nhiên nhược điểm của mô hình này là rất khó để thực hiện cân bằng tải và cân bằng độ trễ giữa các node do phụ thuộc vào kiến trúc mạng phủ. Khóa luận tốt nghiệp 14 Phạm Duy Thăng Chương 2 – Truyền tin multicast trên nền mạng ngang hàng có cấu trúc Chord 2.1. Khái niệm mạng ngang hàng Hiện nay, trong một số lĩnh vực mà giới hạn tài nguyên phần cứng không đủ để đáp ứng nhu cầu thực tế của người sử dụng, mô hình máy chủ - máy khách truyền thống đã tỏ rõ những nhược điểm của nó. Giải pháp đã và đang được nghiên cứu nhiều năm nay đó là thay thế mô hình máy chủ - máy khách bằng việc sử dụng mạng ngang hàng. Mạng ngang hàng (tiếng Anh: peer-to-peer network), còn gọi là mạng đồng đẳng, là một mạng máy tính trong đó hoạt động của mạng chủ yếu dựa vào khả năng tính toán và băng thông của các máy tham gia chứ không tập trung vào một số nhỏ các máy chủ trung tâm như các mạng thông thường [4]. Hình 5 minh họa cấu trúc của một mạng ngang hàng nhỏ. Hình 5. Mô hình mạng ngang hàng Mạng ngang hàng thường được sử dụng để kết nối các máy thông qua một lượng kết nối dạng ad hoc. Mạng ngang hàng có nhiều ứng dụng. Ứng dụng thường xuyên gặp nhất là chia sẻ tệp tin, tất cả các dạng như âm thanh, hình ảnh, dữ liệu,... hoặc để truyền dữ liệu thời gian thực như điện thoại VoIP. Khóa luận tốt nghiệp 15 Phạm Duy Thăng Một mạng ngang hàng đúng nghĩa không có khái niệm máy chủ và máy khách, nói cách khác, tất cả các máy tham gia đều bình đẳng và được gọi là peer, là một nút mạng đóng vai trò đồng thời là máy khách và máy chủ đối với các máy khác trong mạng. Một số mạng hay kênh như Napster, IRC (thuộc thế hệ thứ nhất) sử dụng mô hình máy chủ-máy khách cho một số tác vụ và mô hình ngang hàng cho những tác vụ khác. Ngược lại, các mạng như Gnutella hay Freenet (thế hệ thứ 2) sử dụng mô hình ngang hàng cho tất cả các tác vụ, nên các mạng này thường được xem như là mạng ngang hàng đúng nghĩa (thực ra Gnutella vẫn sử dụng một số máy chủ để giúp các máy trong mạng tìm kiếm địa chỉ IP của nhau). Vậy sử dụng mạng ngang hàng mang lại những lợi thế gì? Chúng ta sẽ xét đến các ưu điểm của mạng ngang hàng trong phần kế tiếp. 2.1.1. Ưu điểm của mạng ngang hàng  Một mục đích quan trọng của mạng đồng đằng là trong mạng 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 có nhiều máy tham gia mạng thì khả năng tổng thể của hệ thống mạng càng lớn. Đây là các ưu điểm rất phù hợp để sử dụng cho mục đích truyền tin multicast. Ngược lại, trong cấu trúc máy chủ-máy khách, nếu số lượng máy chủ là cố định, thì khi số lượng máy khách tăng lên khả năng chuyển dữ liệu cho mỗi máy khách sẽ giảm xuống. Tính chất phân tán của mạng ngang hàng cũng giúp cho mạng hoạt động tốt khi một số máy gặp sự cố. Đối với cấu trúc tập trung, chỉ cần máy chủ gặp sự cố thì cả hệ thống sẽ ngưng trệ. Còn đối với mạng ngang hàng các máy tính có thể tham gia và rời khỏi mạng bất kì lúc nào mà mạng vẫn hoạt động bình thường, các máy tính còn lại vẫn có thể trao đổi thông tin và chia sẻ tài nguyên với nhau. Trong mạng ngang hàng dữ liệu trên các máy tính được đem ra chia sẻ nên một máy tính có thể thực hiện vai trò giống server để chia sẻ cho các máy tính khác. Các máy tính sau khi được chia sẻ dữ liệu cũng có thể tham gia chia sẻ cho các máy tính khác. Như vậy sẽ tăng số bản sao dữ liệu và giúp cho việc chia sẻ dữ liệu nhanh chóng. Khóa luận tốt nghiệp 16 Phạm Duy Thăng Đối với mạng Napster, thuật ngữ ngang hàng nói lên tính chất quan trọng của giao thức giao tiếp ngang hàng, còn thực ra thành công của Napster phải nhờ vào sự liên kết chặt chẽ giữa các máy tham gia với máy chủ trung tâm lưu trữ danh sách nội dung tệp trên các máy tham gia. Nhờ vậy việc tìm kiếm trở nên nhanh và hiệu quả hơn, tuy nhiên, đây cũng chính là điểm yếu dẫn đến các rắc rối pháp lý mà kết cục là sự sụp đổ của Napster. 2.1.2. Mạng ngang hàng không có  cấu trúc và mạng ngang hàng có cấu trúc  Mạng phủ ngang hàng bao gồm tất cả các nút mạng đại diện cho các máy tham gia và các liên kết giữa các nút mạng này. Một liên kết tồn tại giữa hai nút mạng khi một nút mạng biết vị trí của nút mạng kia. Dựa vào cấu trúc liên kết giữa các nút mạng trong mạng phủ ta có thể phân loại mạng ngang hàng thành 2 loại: có cấu trúc hay không cấu trúc. Mạng ngang hàng không cấu trúc Hình 6. Một mạng ngang hàng không cấu trúc sử dụng một máy tính server Hình 6 minh họa một mạng ngang hàng không có cấu trúc. Một mạng ngang hàng được gọi là mạng ngang hàng không cấu trúc khi các liên kết giữa các nút mạng trong mạng phủ được thiết lập ngẫu nhiên (tức là không theo qui luật nào). Những mạng như Khóa luận tốt nghiệp 17 Phạm Duy Thăng thế này dễ dàng được xây dựng vì một máy mới khi muốn tham gia mạng có thể lấy các liên kết có sẵn của một máy khác đang ở trong mạng và sau đó dần dần tự bản thân nó sẽ thêm vào các liên kết mới của riêng mình. Khi một máy muốn tìm một dữ liệu trong mạng ngang hàng không cấu trúc, yêu cầu tìm kiếm sẽ được truyền trên cả mạng để tìm ra càng nhiều máy chia sẻ càng tốt. Hình 7. Mô hình chia sẻ file của Napster Napster (hình 7) là mạng ngang hàng không cấu trúc đầu tiên thu hút được đông đảo người sử dụng trên mạng. Đây là sự kết hợp của một mạng ngang hàng peer to peer và một số máy chủ trung tâm để duy trì kết nối hệ thống và danh sách dữ liệu được chia sẻ trong mạng. Ngoài việc là một mạng peer to peer, Napster cũng giống như một mạng với các máy chủ. Chính các máy chủ này làm cho việc tìm kiếm dữ liệu và chia sẻ giữa các máy tính trong mạng tốt hơn, tạo nên mô hình mạng peer to peer đầu tiên cuốn hút Khóa luận tốt nghiệp 18 Phạm Duy Thăng được số lượng lớn người dùng với các dịch vụ chia sẻ file dữ liệu, file nhạc trên mạng Internet. Napster gồm 2 thành phần, thứ nhất là máy chủ trung tâm và thứ hai là các ứng dụng trên các máy tính kết nối với nhau. Một máy tính tham gia vào mạng sẽ kết nối với máy chủ trung tâm và đưa danh sách file chia sẻ trong máy tính lên máy chủ này. Những máy tính khi tìm kiếm dữ liệu sẽ tìm kiếm thông tin về từ khóa trên máy chủ trung tâm để biết máy tính nào hiện đang giữ file chia sẻ đó. Để tìm kiếm một file, một truy vấn sẽ được gửi đi tới máy chủ trung tâm cùng với từ khóa tìm kiếm. Máy chủ trung tâm sẽ tìm trong danh sách các file chia sẻ được đưa lên bởi các máy tính và trả về địa chỉ IP của máy tính lưu giữ file chia sẻ này. Sau đó sẽ là kết nối trực tiếp giữa máy tính yêu cầu và máy tính giữ file chia sẻ, dữ liệu được truyền giữa hai máy tính giống như trong một mạng ngang hàng. Hình 8. Tìm kiếm dữ liệu chia sẻ trong Gnutella Khóa luận tốt nghiệp 19 Phạm Duy Thăng Bên cạnh Napster, một mô hình mạng ngang hàng không cấu trúc khác cũng rất nổi tiếng là Gnutella. Gnutella là một mạng ngang hàng thuần và chủ yếu dựa trên mạng ngang hàng không có cấu trúc. Một phiên bản thương mại của Gnutella là Limewire. Các máy tính trong Gnutella được mô tả như là những “servent”, những thành viên trong mạng và được chia sẻ file trong mạng. Các máy tính khác có thể lấy được những file chia sẻ này. Việc tìm kiếm file trên mạng mô tả trong hình 8, khi một máy tính A tìm kiếm file X, nó sẽ gửi một truy vấn broadcast tới tất cả các máy tính nó biết, được coi là hàng xóm của nó. Truy vấn sau đó sẽ được chuyển dần qua các bước và tới được máy tính có chứa file X. Gnutella có mã nguồn mở và có giao thức mô tả rõ ràng trên mạng Internet, bất cứ ai quan tâm cũng có thế tìm hiểu và phát triển để tạo ra một mạng ngang hàng của riêng mình với các tính năng muốn có. Mạng ngang hàng có cấu trúc Hệ thống mạng ngang hàng không cấu trúc thể hiện nhược điểm: không có gì đảm bảo tìm kiếm sẽ thành công. Đối với tìm kiếm các dữ liệu phổ biến được chia sẻ trên nhiều máy, tỉ lệ thành công là khá cao, ngược lại, nếu dữ liệu chỉ được chia sẻ trên một vài máy thì xác suất tìm thấy là khá nhỏ. Tính chất này là hiển nhiên vì trong mạng ngang hàng không cấu trúc, không có bất kì mối tương quan nào giữa một máy và dữ liệu nó quản lý trong mạng, do đó yêu cầu tìm kiếm được chuyển một cách ngẫu nhiên đến một số máy trong mạng. Số lượng máy trong mạng càng lớn thì khả năng tìm thấy thông tin càng nhỏ. Một nhược điểm khác của hệ thống này là do không có định hướng, một yêu cầu tìm kiếm thường được chuyển cho một số lượng lớn máy trong mạng làm tiêu tốn một lượng lớn băng thông của mạng, dẫn đến hiệu quả tìm kiếm chung của mạng thấp. Khóa luận tốt nghiệp 20 Phạm Duy Thăng Mạng ngang hàng có cấu trúc khắc phục nhược điểm của mạng không cấu trúc bằng cách sử dụng hệ thống 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 phủ 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ả. Hình 10 minh họa cho mạng ngang hàng có cấu trúc Chord. Các node liên kết với nhau theo một vòng tròn, và các thông điệp được gửi đi dựa vào đó. System P2P Decentraliz Centralized Unstructured Structured Hybrid CAN CHORD Gnutella KaZaA Hình 9. Mạng ngang hàng có cấu trúc thuộc nhánh các hệ thống phân tán trong các mô hình mạng ngang hàng Khóa luận tốt nghiệp 21 Phạm Duy Thăng Hình 10. Mạng ngang hàng có cấu trúc Chord dạng vòng tròn Trong mạng ngang hàng có cấu trúc, tài nguyên được phân bố một cách hợp lý để không có một máy tính nào lưu giữ quá nhiều dữ liệu dẫn đến quá tải thông tin định tuyến. Do mạng là có cấu trúc nên các thông điệp chuyển đi giữa các máy tính để duy trì mạng ngang hàng được giảm xuống mức tối thiểu. Băng thông của mạng được dành nhiều hơn cho việc chia sẻ tài nguyên. Việc tìm kiếm thông tin trong mạng ngang hàng có cấu trúc cũng nhanh hơn trong mạng không cấu trúc. Nếu như mạng không có cấu trúc các máy tính gửi thông điệp broadcast để tìm kiếm thông tin thì trong mạng có cấu trúc một máy tính chỉ cần gửi thông điệp tìm kiếm qua một số máy tính. Giao thức tìm kiếm chung trong mạng sẽ đảm bảo thông tin được tìm kiếm chính xác. Một số mạng ngang hàng có cấu trúc nổi tiếng bao gồm Chord, CAN, Kademlia, Pastry và Tapestry. Trong đó Chord và CAN được mô tả chi tiết, đã được mô phỏng và cho kết quả qua các bài báo. Phần tiếp theo sẽ trình bày chi tiết về giao thức mạng ngang hàng Chord. Khóa luận tốt nghiệp 22 Phạm Duy Thăng 2.2. Giao thức Chord Chord [9] là một trong những giao thức mạng ngang hàng có cấu trúc dùng bảng băm phân tán. Chord hiện đang được phát triển tại MIT. 2.2.1. Bảng băm phân tán  Bảng băm phân tán (Distributed hash tables) là một giải thuật cung cấp dịch vụ tìm kiếm tương tự cấu trúc dữ liệu bảng băm: Một cặp {khóa, giá trị} được lưu trữ vào trong bảng băm phân tán, và bất kỳ node tham gia nào cũng có thể đưa ra một khóa và dễ dàng truy vấn lấy giá trị tương ứng. Trách nhiệm duy trì ánh xạ từ không gian khóa vào giá trị được phân tán ra các node, nên khi thay đổi số node tham gia không ảnh hưởng đáng kể đến hoạt động của hệ thống. Điều này cho phép bảng băm phân tán có thể mở rộng ra một số lượng rất lớn các node tham gia mà vẫn quản lý được sự ra vào liên tục của các node, cũng như sự gián đoạn của một số node. Mỗi bảng băm phân tán đều cần có một không gian địa chỉ. Mỗi khóa sẽ lấy một giá trị từ không gian này. Kích thước không gian địa chỉ thường gặp nhất là 2160 (mỗi khóa là một số nhị phân 160 bit). Các node và dữ liệu sẽ được ánh xạ vào cùng một không gian địa chỉ sử dụng hàm băm SHA-1. Với mỗi node, hàm băm sẽ băm địa chỉ IP của node đó để thu được một khóa 160 bit, gọi là định danh node (node identifier hay nodeID). Định danh node được sử dụng để xác định vị trí của node trong bảng băm. Như vậy mỗi node sẽ có một địa chỉ duy nhất, và do không gian khóa là rất lớn nên cũng có thể xem là mỗi địa chỉ tương ứng với một node duy nhất. Đối với dữ liệu, mỗi file dữ liệu cũng được gắn với một định danh. Định danh của dữ liệu được băm từ tên file dữ liệu hoặc băm từ nội dung của file, là giá trị duy nhất trong không gian địa chỉ. Mỗi node sẽ quản lý một khoảng giá trị nhất định trong không gian địa chỉ. Dữ liệu được lưu ở node và được quản lý thông qua định danh. Khi một node muốn tìm kiếm một dữ liệu trong bảng băm phân tán, nó sẽ gửi truy vấn lần lượt qua các node khác. Nội dung truy vấn chính là định danh của dữ liệu. Khi một node lưu trữ dữ liệu có định danh trên nhận được truy vấn thì nó sẽ trả về dữ liệu yêu cầu. Như vậy, việc tìm kiếm dữ liệu trong bảng băm phân tán sẽ luôn thực hiện được. Tuy nhiên vấn đề đặt ra là khi số lượng node tham gia lớn thì việc tìm kiếm sẽ diễn ra như Khóa luận tốt nghiệp 23 Phạm Duy Thăng thế nào để đảm bảo tính hiệu quả về mặt thời gian và tính ổn định khi liên tục có các node gia nhập và rời khỏi bảng băm. 2.2.2. Băm đồng nhất  Hàm băm đồng nhất sử dụng SHA-1 để gán cho mỗi node và khóa một định danh (tiếng Anh: identifier) m-bit. Định danh của node là kết quả của hàm băm với đầu vào là địa chỉ IP của node trong khi định danh của khóa sinh ra từ việc băm khóa đó. Sau đây ta sẽ sử dụng thuật ngữ “khóa” cho cả khóa và ánh xạ của nó qua hàm băm, nghĩa của nó sẽ phụ thuộc vào ngữ cảnh sử dụng. Tất cả các định danh được xếp theo thứ tự vào vòng tròn định danh mô-đun 2m. Khóa k sẽ được gắn cho node đầu tiên có định danh bằng hoặc lớn hơn (định danh của) k trong không gian định danh. Node này được gọi là node kế tiếp (successor node) của k, ký hiệu là successor (k). Nếu các định danh được xếp vào vòng tròn các số từ 0 đến 2m – 1 thì successor (k) chính là node đầu tiên theo chiều kim đồng hồ tính từ k. Vòng tròn này gọi là vòng Chord (Chord ring). Hình 11 là vòng Chord với m = 3. Không gian khóa gồm có 8 số (từ 0 đến 7). Vòng Chord có tất cả 3 node tham gia, quản lý 4 khóa. Node kế tiếp của định danh 5 là node 0, do đó khóa 5 được lưu ở node 0. Tương tự với các khóa khác. Khóa luận tốt nghiệp 24 Phạm Duy Thăng Hình 11. Vòng tròn Chord với 3 node và lưu trữ 4 khóa 2.2.3. Định tuyến thông báo  Chúng ta có thể tìm kiếm đích đến cho các thông báo theo mô hình tìm kiếm tuyến tính: Mỗi thông điệp tìm kiếm sẽ được gửi lần lượt qua các node trên vòng tròn Chord cho đến khi tìm được dữ liệu cần tìm. Tuy nhiên, tìm kiếm tuyến tính yêu cầu một số lượng thông điệp tăng tuyến tính theo số lượng node. Và rõ ràng điều này làm giảm hiệu suất tìm kiếm của hệ thống khi số lượng node tăng. Để tăng tốc quá trình tìm kiếm, mạng Chord duy trì thêm thông tin định tuyến. Mỗi node n trong vòng Chord duy trì thêm một bảng định tuyến gồm m hàng (m là số bit để biểu diễn không gian khóa), gọi là bảng finger. Hàng thứ i trong bảng finger của node n xác định node đầu tiên s theo sau node n bởi ít nhất 2i-1 trong vòng tròn định danh, nghĩa là: s = successor (n + 2i-1). Node s này được gọi là finger thứ i của node n, và được ký hiệu là n.finger (i). Finger đầu tiên của node n chính là node kế tiếp của node n trong vòng Chord, tức là successor (n). Hình 12 minh họa việc bổ sung các bảng finger vào một mạng Chord trong trường hợp m = 3. Khóa luận tốt nghiệp 25 Phạm Duy Thăng Hình 12. Mạng Chord với các bảng finger Mô hình này có hai đặc điểm quan trọng. Thứ nhất, mỗi node chỉ lưu giữ thông tin về một số nhỏ các node khác, và có nhiều thông tin về các node ở gần hơn các node ở xa. Thứ hai, bảng finger của một node thường không chứa đủ thông tin để có thể ngay lập tức xác định được successor của một khóa k bất kỳ. Trong mô hình tìm kiếm mở rộng, khi một node n muốn xác định successor của khóa k, quá trình tìm kiếm sẽ được thực hiện như sau: - Node n tự kiểm tra khóa k, nếu nó thấy khóa k nằm trong khoảng không gian định danh từ n tới successor (n), thì việc tìm kiếm trả về successor (n). - Nếu khóa k nằm ngoài đoạn [n, successor (n)], n sẽ tìm trong bảng finger của mình một node n’ có định danh lớn nhất ngay trước k, sau đó chuyển tiếp truy vấn tìm kiếm cho n’. Quá trình trên được thực hiện liên tiếp cho tới khi xác định được successor (k). Bài báo đã chứng minh được rằng với mô hình tìm kiếm mở rộng, số node cần liên lạc để có thể tìm thấy một successor trong một mạng N-node là O(log N). Như vậy, so với mô hình tìm kiếm tuyến tính, mô hình tìm kiếm mở rộng tuy không cải thiện tính đúng Khóa luận tốt nghiệp 26 Phạm Duy Thăng đắn của các phép tìm kiếm nhưng rõ ràng mô hình tìm kiếm mở rộng tối ưu hơn rất nhiều về mặt thời gian. Nếu sử dụng mô hình tìm kiếm mở rộng, chúng ta có thể thấy được khả năng mở rộng của mạng Chord. 2.2.4. Khắc phục lỗi trong giao thức Chord  Trên thực tế hoạt động của mạng ngang hàng, có thể có các node mới tham gia vào mạng ngang hàng. Các node đang tham gia, nếu không còn nhu cầu nữa có thể rời khỏi mạng bất cứ lúc nào. Hơn nữa, các node tham gia mạng ngang hàng là các thực thể trên mạng máy tính, do đó có thể xảy ra lỗi tại các node này do nhiều nguyên nhân, khiến việc truyền tin bị gián đoạn. Kích thước mạng ngang hàng càng lớn thì số node tham gia mới, rời khỏi mạng hoặc xảy ra lỗi càng lớn. Giao thức Chord đã xử lý khá tốt các trường hợp trên, đảm bảo được tính ổn định của toàn mạng. Node mới tham gia và quá trình đồng bộ Để đảm bảo sự hoạt động ổn định của toàn bộ mạng khi có node mới tham gia vào mạng, hoặc khi có node rời khỏi mạng, Chord đã sử dụng một giao thức đồng bộ hoạt động định kỳ để cập nhật lại bảng finger và con trỏ successor của các node. Đoạn giả mã của các hàm tham gia và đồng bộ được thể hiện trên hình 13. Trước hết, chúng ta định nghĩa khái niệm node đứng trước (predecessor) của node n: nếu n là node kế tiếp của node p thì p là node đứng trước của node n, ký hiệu p = predecessor(n). Khi một node n là node đầu tiên tham gia mạng Chord, nó sẽ gọi hàm create() để khởi tạo vòng Chord mới. Nếu node n tham gia vào một mạng có sẵn, nó sẽ liên lạc với một node n’ trong mạng, sau đó yêu cầu n’ tìm giá trị successor(n). Khóa luận tốt nghiệp 27 Phạm Duy Thăng Hình 13. Đoạn giả mã của các hàm trong quá trình đồng bộ Định kỳ, node n phải gọi hàm stablilize() để thực hiện việc ổn định hóa. Hàm này có nhiệm vụ kiểm tra nếu tồn tại một node n’ nằm giữa n và successor(n) thì gán lại con trỏ successor của n là n’. Sau đó, n yêu cầu n’ kiểm tra và cập nhật n là predecessor của n’ thông qua hàm notify(). Khóa luận tốt nghiệp 28 Phạm Duy Thăng Định kỳ, node n cũng phải gọi hàm fix_fingers() để cập nhật lại bảng finger của mình. Cuối cùng, n sẽ gọi hàm check_predecessor() một cách định kỳ để kiển tra xem node đứng trước nó có bị gián đoạn hay không. Nếu có, n tự thiết lập lại con trỏ predecessor của nó thành con trỏ NULL. Như vậy, giao thức đồng bộ như trên đã giải quyết được các vấn đề node tham gia, node rời mạng, đảm bảo được sự hoạt động ổn định của toàn bộ mạng Chord. Node lỗi và danh sách successor Tính đúng đắn của giao thức Chord phụ thuộc vào điều kiện là mỗi node đều biết successor của nó. Tuy nhiên, điều kiện này có thể bị vi phạm nếu như có lỗi xảy ra ở các node. Hình 14. Sơ đồ một mạng Chord với 9 node tham gia Khóa luận tốt nghiệp 29 Phạm Duy Thăng Ví dụ, trên hình 14, nếu như các node 14, 21 và 32 xảy ra lỗi cùng một lúc và bị gián đoạn, node 8 không có khả năng nhận biết được rằng node 38 hiện là successor của nó, bởi vì không có bản ghi nào trong bảng finger của nó trỏ đến node 38. Như vậy, node 8 sẽ nhận sai successor, điều này ảnh hưởng trực tiếp đến tính đúng đắn của toàn bộ mạng Chord. Để tăng cường sự an toàn cho toàn bộ mạng Chord, giao thức Chord quy định thêm rằng mỗi node trong mạng phải duy trì một danh sách successor gồm r node, chứa r successor đầu tiên của node đó. Nếu successor trực tiếp (node kế tiếp) của một node không hoạt động, node đó có thể thay thế successor bởi bản ghi tiếp theo trong danh sách successor. Nếu xảy ra lỗi cùng lúc tại tất cả r successor thì mạng Chord có thể bị sụp đổ, tuy nhiên điều này rất khó có thể xảy ra nếu giá trị r được lựa chọn hợp lý. Như vậy, để duy trì danh sách successor, chúng ta cần sửa đổi lại hàm stablilize(). Node n sẽ đồng bộ danh sách successor của nó với node p là successor trực tiếp của n bằng cách copy toàn bộ danh sách successor của p, rồi loại đi bản ghi cuối cùng và thêm p vào đầu danh sách. Nếu node n nhận thấy successor trực tiếp của nó lỗi, n sẽ chọn ra node đầu tiên còn hoạt động tốt trong danh sách làm successor mới của mình, rồi lại đồng bộ danh sách successor với node này. Bài báo [9] cũng tính toán và chứng minh rằng với r = Ω(logN) thì hoạt động của mạng Chord trở nên tối ưu. 2.3. Truyền tin multicast trên nền mạng ngang hàng có cấu trúc Chord Chúng ta đã có những khái niệm cơ bản về giao thức mạng ngang hàng Chord và truyền thông multicast tầng ứng dụng. Chúng ta có thể thấy được rằng Chord là giao thức mạng ngang hàng ở tầng ứng dụng, có khả năng quản lý một số lượng lớn các node tham gia, có khả năng hoạt động được trong môi trường lỗi cao, tần suất vào/ra của các node lớn. Hơn nữa, bảng finger giúp cho giao thức Chord có được khả năng định tuyến rất tốt, với số bước để thực hiện việc định tuyến đạt mức tối thiểu. Do đó, có thể sử dụng mạng ngang hàng giao thức Chord làm mạng phủ để triển khai truyền thông multicast tầng ứng dụng. Khóa luận tốt nghiệp 30 Phạm Duy Thăng Hình 15. Truyền thông multicast trên mạng Chord Hình 15 minh họa quá trình truyền thông multicast dựa trên nền mạng ngang hàng sử dụng giao thức Chord. Trong truyền thông multicast, việc truyền tin sẽ thực hiện theo sơ đồ dạng cây, node nguồn sẽ truyền luồng dữ liệu cho một số node con. Đến lượt mình, mỗi node con lại truyền luồn dữ liệu đó cho một số node khác. Quá trình này được thực hiện liên tục cho tới khi tất cả các node tham gia vào nhóm multicast đều đã nhận được luồng dữ liệu. Khi đó, sơ đồ truyền dữ liệu qua các node được gọi là cây multicast. Dựa vào bảng finger của giao thức Chord, quá trình xây dựng cây multicast và truyền dữ liệu sẽ được thực hiện như sau: • Các node con của node nguồn chính là các bản ghi trong bảng finger của nó. Node nguồn chỉ trực tiếp truyền dữ liệu cho các node này, gọi là các node con cấp một. Khóa luận tốt nghiệp 31 Phạm Duy Thăng • Cùng với quá trình truyền dữ liệu, node nguồn sẽ phân công khoảng multicast cho mỗi node con cấp một. Khoảng multicast này là khoảng định danh bắt đầu từ node con đó tới ngay trước node con kế tiếp. Node con cấp một sẽ phải đảm bảo luồng dữ liệu multicast phải được phát đến tất cả các node có định danh nằm trong khoảng định danh mà mình phụ trách. • Đến lượt mình, các node con cấp một trực tiếp truyền dữ liệu multicast cho các bản ghi trong bảng finger của nó và có định danh nằm trong quản multicast mà nó quản lý. Chúng ta gọi các node này là node con cấp hai. • Mỗi node con cấp hai lại được giao quản lý một khoảng multicast nhỏ hơn, bắt đầu từ nó đến trước node con kế tiếp. • Quá trình này được thực hiện đến khi tất cả các node đều đã nhận được luồng multicast. Như vậy, chúng ta có thể thấy rằng nếu thực hiện multicast theo phương thức này, tất cả các node trong mạng Chord đều sẽ chắc chắn nhận được dữ liệu. Việc định tuyến hoàn toàn dựa vào bảng finger của giao thức Chord, do đó rất nhanh chóng, hiệu quả và dễ cài đặt. Nhược điểm của phương pháp này là cây multicast được xây dựng là cây lệch trái. Các node ở cuối vòng tròn Chord thường có độ sâu lớn hơn nhiều so với các node ở đầu vòng tròn. Do đó, độ trễ tương đối của dữ liệu nhận được giữa các node là không đều nhau. Tuy nhiên, nếu hàm băm được xây dựng tốt thì có thể làm giảm đáng kể sự chênh lệch trên. * * * Trong chương này, chúng ta đã có những khái niệm cơ bản nhất về truyền thông multicast và truyền thông multicast trên mạng ngang hàng Chord. Trong chương tiếp theo, tôi sẽ trình bày các vấn đề lỗi ảnh hưởng lớn đến sự ổn định và hiệu năng của quá trình truyền thông multicast trên nền mạng ngang hàng giao thức Chord. Tôi cũng sẽ đề ra giải pháp để khắc phục các vấn đề đó. Khóa luận tốt nghiệp 32 Phạm Duy Thăng Chương 3 – Khắc phục lỗi trong truyền thông multicast trên nền mạng ngang hàng giao thức Chord Phần đầu của chương này nêu những hạn chế khi sử dụng giao thức mạng ngang hàng Chord để triển khai truyền tin multicast và vấn đề lỗi trong truyền thông multicast dựa trên mạng Chord. Phần tiếp theo đề ra giao thức khắc phục lỗi ba pha, nhằm giải quyết vấn đề lỗi đã nêu, từ đó nâng cao độ ổn định và hiệu năng của toàn bộ quá trình truyền thông multicast. 3.1. Vấn đề lỗi và vai trò của việc khắc phục lỗi trong truyền thông multicast trên nền mạng Chord Với giao thức đồng bộ và danh sách successor được trình bày trong phần trước, chúng ta có thể thấy rằng mạng Chord có thể hoạt động ổn định trong môi trường có nhiều node mới tham gia cũng như rời mạng, đồng thời khả năng chịu lỗi của mạng Chord cũng tương đối cao. Như vậy, ta có thể thấy khi áp dụng mạng ngang hàng Chord để thực hiện truyền thông multicast sẽ có nhiều lợi thế. Tuy nhiên, giao thức Chord chưa có phương pháp nào để giải quyết vấn đề chính khi truyền thông multicast. Trong quá trình truyền thông multicast theo sơ đồ cây, một cây multicast được xây dựng. Theo đó, mỗi node sẽ chỉ truyền luồng dữ liệu cho một số node con nhất định, và các node con này lại truyền luồng dữ liệu con đó cho các node khác. Mỗi node N (trừ các node lá) sẽ là nguồn của một cây multicast con, và chịu trách nhiệm đảm bảo luồng dữ liệu phải được truyền đến tất cả các node trong cây con đó. Tuy nhiên, nếu node N bị lỗi, cần phải có một cơ chế để thay thế node N, đảm bảo quá trình nhận dữ liệu của toàn bộ các node thuộc cây con N (các node P, Q trên hình 16). Khóa luận tốt nghiệp 33 Phạm Duy Thăng Trong các bài báo về multicast [6, 7, 8, 9, 10, 11], đã có các phương pháp khắc phục được đưa ra, nhằm tìm node cha mới cho các node con của node bị lỗi. Tuy nhiên, các phương pháp đó không phù hợp với mô hình truyền thông multicast dựa trên mạng ngang hàng Chord. Thứ nhất, cây multicast xây dựng dựa trên nền tảng mạng Chord là cây multicast có cấu trúc động. Do mạng ngang hàng Chord liên tục có các node mới tham gia vào mạng và các node rời khỏi mạng, bảng finger và danh sách successor của các node trong mạng liên tục thay đổi. Chỉ một node vào hoặc ra khỏi mạng đã có thể làm ảnh hưởng đến bảng finger của rất nhiều node. Do đó, cấu trúc của cây multicast xây dựng trên mạng Chord liên tục bị xáo trộn. Vai trò của các node trong cây thường xuyên thay đổi. Do đó nếu một node lưu thông tin của node khác nhằm thực hiện việc thay thế cho node cha bị lỗi, thì thông tin đó sẽ rất nhanh chóng bị lỗi thời. Thứ hai, do đặc thù của giao thức Chord, mỗi node nắm được rất ít thông tin về cấu trúc của toàn bộ cây multicast. Do quá trình truyền dữ liệu được định tuyến dựa vào bảng finger, mỗi node chỉ biết được các node con của nó trong cây multicast. Các node không I F N M P Q Hình 16. Sơ đồ một cây multicast Khóa luận tốt nghiệp 34 Phạm Duy Thăng thể biết được node nào thực sự là node cha của nó do cấu trúc cây multicast liên tục thay đổi. Chord cũng chưa cung cấp phương thức nào để một node lưu thông tin node cha hiện thời của nó. Trong các nghiên cứu về multicast tầng ứng dụng trước đây, một phương pháp thường được đề ra để giải quyết node cha lỗi là các node con tìm một node cùng cấp với node cha để thay thế khi node cha xảy ra lỗi. Tuy nhiên trong mạng Chord, việc tìm một node như vậy gần như là không thể do chính node cha cũng không có thông tin nào về các node cùng cấp với mình trong cây multicast. Ngoài ra, việc sử dụng mạng Chord để phục vụ truyền thông multicast còn có một điểm hạn chế khác. Các phương thức đồng bộ và khắc phục lỗi của giao thức Chord đều là các hàm hoạt động định kỳ. Như vậy có nghĩa là nếu có lỗi xảy ra tại một node, lỗi chỉ có thể được phát hiện ra bởi node successor và node predecessor của node lỗi thông qua các hàm kiểm tra định kỳ. Tiếp đó, các node khác cũng sẽ dần nhận được thông tin về node lỗi sau khi hàm fix_finger(), cũng là một hàm được gọi định kỳ, thực hiện xong. Ta có thể thấy độ trễ để một lỗi được khôi phục sẽ là rất lớn, và điều này là khó chấp nhận đối với các ứng dụng truyền multicast. 3.2. Giải pháp đề xuất Để có thể đưa ra được giao thức khắc phục lỗi hiệu quả cho truyền multicast trên nền mạng Chord, chúng ta cần tập trung giải quyết các vấn đề đã nêu ở phần trước. Giao thức đưa ra phải khắc phục được vấn đề độ trễ của các phương thức đồng bộ định kỳ trong mạng Chord. Để làm được điều đó, giao thức đưa ra phải đảm bảo tính phản ứng, có nghĩa là các hàm giải quyết vấn đề phải được gọi sớm nhất có thể sau khi có lỗi xảy ra. Như vậy có nghĩa là phải có cơ chế phát hiện lỗi tốt hơn. Ta có thể thấy rằng trong quá trình truyền multicast, luồn dữ liệu được truyền liên tục từ node cha sang node con. Do đó, nếu xảy ra lỗi ở node cha, node con có thể nhận biết được do luồng dữ liệu bị gián đoạn. Từ đó, có thể thấy rằng vai trò phát hiện lỗi nên thuộc về các node con. Nói cách khác, mỗi node sẽ có trách nhiệm giám sát node cha của mình, nếu luồng dữ liệu bị gián đoạn thì sẽ thực hiện kiểm tra tình trạng của node cha. Giao thức đưa ra cũng cần phải cung cấp cho mỗi node thêm thông tin về các node khác trong mạng. Khóa luận tốt nghiệp 35 Phạm Duy Thăng Mặt khác, ta thấy rằng tại mỗi node N, dữ liệu mà nó nhận được do node cha cung cấp. Khoảng multicast mà N chịu trách nhiệm cũng do node cha của N phân phối, và là một phần của khoảng multicast của node cha. Do đó nếu node N lỗi thì node cha của phải có trách nhiệm với khoảng multicast của N. Tóm lại, để có thể khắc phục các vấn đề lỗi xảy ra ở một node N, cần phải có sự tham gia cả node cha và các node con của node N. Các node con của N sẽ được cung cấp thông tin về node cha của N. Nếu các node con nhận thấy rằng có lỗi xảy ra ở node N, chúng sẽ thông báo cho node cha của N. Đến lượt mình, node cha của N sẽ tìm một node khác thay thế cho N, chịu trách nhiệm cho khoảng multicast của N. Chúng ta sẽ gọi đây là giao thức khắc phục lỗi ba pha. 3.3. Ba pha của giao thức khắc phục lỗi Từ ý tưởng trên, tôi đề ra giao thức khắc phục lỗi gồm ba pha như sau: • Pha thứ nhất: Thông báo thông tin cây multicast • Pha thứ hai: Phát hiện lỗi và thông báo lỗi • Pha thứ ba: Khắc phục lỗi Sau đây chúng ta sẽ đi vào chi tiết nội dung của các pha của giao thức. Quy ước: Trong cây multicast, khi một node F truyền dữ liệu cho node N thì node F được gọi là node cha của node N. Nếu node G là node cha của node F thì G được gọi là node ông của node N. 3.3.1. Thông báo thông tin cây multicast  Trong pha này, mỗi node F có trách nhiệm thông báo cho các node con về node cha của F. Ví dụ trong hình 17, node F có trách nhiệm phải thông báo cho các node con N, M và P thông tin về node F. Các node N, M và P sẽ lưu thông tin đó lại. Chi tiết giao thức như sau: • Mỗi node có một thuộc tính father, dùng để lưu thông tin node cha, và thuộc tính grandfather, dùng để lưu thông tin node ông. Khóa luận tốt nghiệp 36 Phạm Duy Thăng • Mỗi khi node F nhận được luồng multicast mới, nó thay đổi thuộc tính father, đồng thời gửi thông điệp cho các node con, yêu cầu các node con thay đổi thuộc tính grandfather. • Mỗi khi node F thay đổi một bản ghi trong bảng finger, nó cũng gửi yêu cầu node con mới (được trỏ bởi bản ghi mới thay đổi) cập nhật lại thuộc tính grandfather thành node cha của node F. • Mỗi node khi nhận được thông tin về node ông của mình thì lưu thông tin này vào thuộc tính granfather. Như vậy, nhờ pha thông báo thông tin cây multicast, mỗi node sẽ có thêm thông tin về cấu trúc của cây. Hình 17. Giải pháp chống lỗi cho truyền tin multicast trên nền mạng Chord Khóa luận tốt nghiệp 37 Phạm Duy Thăng 3.3.2. Phát hiện lỗi và thông báo lỗi  Pha này nhằm xây dựng tính phản ứng cho giao thức khắc phục lỗi. Phương pháp phát hiện lỗi được xây dựng dựa trên tính chất của quá trình truyền thông multicast: luồng dữ liệu thường được truyền liên tục. Do đó, nếu luồng dữ liệu bị gián đoạn, node nhận dữ liệu có thể nghi ngờ rằng có lỗi xảy ra tại node cha của nó. Trong pha này, mỗi node có trách nhiệm phát hiện sớm nhất lỗi xảy ra (nếu có) ở node cha. Lỗi được phát hiện sẽ được thông báo cho node ông của nó, là node có trách nhiệm xử lý lỗi. Chi tiết giao thức như sau: • Trong quá trình truyền thông multicast, nếu sau một khoảng thời gian delta, node con N không nhận được dữ liệu từ node cha F, N sẽ thực hiện việc gửi thông điệp kiểm tra tới F để xác định xem có phải node F gặp lỗi hay không. Khoảng thời gian delta trên phụ thuộc vào mục đích sử dụng của hệ thống multicast (luồng dữ liệu là liên tục hay gián đoạn và mức độ gián đoạn). • Nếu như không có lỗi xảy ra tại node F, node này khi nhận được thông điệp kiểm tra sẽ gửi thông điệp trả lời, nhằm mục đích thông báo cho node con rằng F vẫn còn hoạt động. • Nếu sau một khoảng thời gian chờ đợi, node N không nhận được thông điệp trả lời, nó sẽ kết luận là node cha F gặp lỗi. Trong trường hợp này, N sẽ gửi một thông điệp thông báo lỗi cho node ông của N (node cha của node F). Nội dung thông điệp thông báo lỗi có chứa thông tin về node F. Ví dụ như trên hình 16, trong quá trình node F truyền dữ liệu cho node N, nếu N nhận thấy có lỗi ở node F, node N sẽ thông báo lỗi này cho node ông của nó là node G. 3.3.3. Khắc phục lỗi  Nếu một node G nhận được thông báo lỗi chứa thông tin node F, nó sẽ kiểm tra xem F có phải là một node con của nó hay không. Nói cách khác, G sẽ kiểm tra bảng finger của nó, xem F có phải là một bản ghi trong bảng finger hay không. Nếu đúng, G sẽ tiến hành việc cập nhật đột xuất bản ghi đó bằng cách gọi hàm fix_finger(). Nếu không phải, G sẽ bỏ qua thông điệp. Khóa luận tốt nghiệp 38 Phạm Duy Thăng Như vậy, nếu node F lỗi, có thể sẽ có nhiều hơn một thông điệp thông báo lỗi từ các node con của F gửi cho G. Tuy nhiên, chỉ có thông báo đầu tiên được xử lý, vì khi các thông điệp sau đến, lỗi đã được xử lý rồi. Việc cập nhật lại bảng finger như trên sẽ đảm bảo được việc truyền multicast trong khoảng multicast mà F phụ trách. Khoảng multicast này sẽ được bàn giao lại cho node F’ được trỏ bởi bản ghi mới, node này sẽ là node thay thế cho node F lỗi. Node F’ sẽ dựa vào bảng finger của mình để thực hiện việc truyền multicast cho khoảng đó (cấu trúc cây multicast có thể thay đổi do bảng finger của F’ khác bảng finger của F). Như vậy, chúng ta có thể thấy rằng giao thức khắc phục lỗi ba pha đã giải quyết được các vấn đề đã nêu trong mục 3.1. Giao thức khắc phục lỗi được thiết kế theo hình thức phản ứng, nhằm giải quyết sớm nhất lỗi xuất hiện, đảm bảo sự ổn định cho quá trình truyền thông multicast. Giao thức khắc phục lỗi cũng không làm ảnh hưởng nhiều đến bằng thông chung của toàn mạng do số lượng gói tin kiểm soát ít. Giao thức khắc phục lỗi ba pha dễ cài đặt, do không thay đổi nhiều đến giao thức Chord cũng như giao thức truyền multicast trên nền mạng ngang hàng Chord. 3.4. Các vấn đề khác Giao thức khắc phục lỗi ba pha đã nêu đã giải quyết thành công các vấn đề đã nêu ở mục 3.1. Tuy nhiên, giao thức này lại mở ra một vấn đề mới. Ý tưởng của giải pháp đưa ra là sử dụng các node con của một node N để phát hiện lỗi xảy ra ở node N, rồi thông báo cho node cha của N để xử lý. Giải pháp đưa ra đã thực hiện tốt ý tưởng. Tuy nhiên, trong giải pháp chưa đưa ra được hướng giải quyết cho trường hợp có lỗi xảy ra ở cả node N và node cha của nó. Vấn đề này có thể giải quyết theo phương thức sau: • Nếu node N sau khi thông báo lỗi cho node ông thì lập tức liên lạc với finger xa nhất còn hoạt động trong bảng finger của mình, đăng ký làm node con tạm thời của finger đó. • Nếu mỗi node khi nhận được một yêu cầu làm node con tạm thời từ một node khác, thì thêm node yêu cầu vào danh sách node con tạm thời. Trong quá trình truyền tin multicast, sau khi truyền tin cho các node con trong bảng Khóa luận tốt nghiệp 39 Phạm Duy Thăng finger xong thì tiến hành truyền tin cho các node con trong danh sách node con tạm thời. • Nếu sau khi node N đăng ký làm node con tạm thời của một node F’, node N lại nhận được một luồng multicast khác từ node F’’ khác F’, N gửi thông điệp thông báo cho N’ ngừng gửi luồng multicast, đồng thời thay đổi thuộc tính father thành F’’ Khóa luận tốt nghiệp 40 Phạm Duy Thăng Chương 4 – Kết quả thực nghiệm và đánh giá Trong chương này, giao thức khắc phục lỗi ba pha đã đề ra sẽ được áp dụng vào một ứng dụng cụ thể: ứng dụng truyền video sử dụng multicast trên nền mạng ngang hàng giao thức Chord. Chúng ta sẽ xem xét xem tỷ lệ thành công của giải pháp chống lỗi là bao nhiêu. Đồng thời, chúng ta cũng sẽ có những kết quả đánh giá hiệu năng của giải pháp chống lỗi dựa trên việc đo đạc các thông số liên quan đến độ trễ và số gói tin điều khiển. 4.1. Ứng dụng truyền video theo phương thức multicast dựa trên nền mạng ngang hàng Chord Ứng dụng truyền video được sử dụng trong khóa luận là ứng dụng truyền multicast theo phương thức multicast dựa trên nền mạng ngang hàng Chord. Ứng dụng gồm hai phần: phần máy chủ giành cho nguồn phát video và phần máy khách giành cho các node nhận. Tất cả các node nguồn và node nhận đều là các node tham gia vào một mạng ngang hàng Chord. Trên mỗi node, cổng truyền và nhận gói tin điều khiển của giao thức Chord và cổng truyền/nhận gói tin video multicast là các cổng khác nhau. Việc truyền các gói tin điều khiển của giao thức Chord được thực hiện trên nền giao thức giao vận UDP có bổ sung các cơ chế truyền tin tin cậy, trong khi việc truyền các gói tin video multicast sử dụng giao thức UDP đơn thuần, không có cơ chế truyền tin tin cậy. Hình 18. Kiến trúc chương trình phía máy chủ Khóa luận tốt nghiệp 41 Phạm Duy Thăng Hình 19. Kiến trúc chương trình phía máy khách Việc triển khai truyền video multicast sử dụng bảng finger của các node để định tuyến, tuy nhiên quá trình truyền hoàn toàn tách biệt với giao thức Chord. Hình 18 và hình 19 thể hiện sự liên quan giữa chức năng truyền video multicast (xây dựng trong các lớp WebcamServer và WebcamClient) và giao thức Chord. Trong phần xây dựng giao thức Chord, lớp Node chứa các thuộc tính và phương thức của giao thức Chord, trong khi lớp MessageHandler có chức năng liên kết lớp Node với giao thức UDP tầng giao vận, đồng thời bổ sung cơ chế tin cậy cho giao thức UDP. Ứng dụng phần giành cho máy chủ (nguồn phát video) có hai hàm chính: hàm captureImage() được sử dụng để lấy hình ảnh video từ camera, và hàm SendBroadcastImage() được sử dụng để gửi hình ảnh đã lấy cho các node tham gia cây multicast. Ở ứng dụng máy chủ, chức năng định tuyến sử dụng bảng finger phục vụ cho quá trình truyền multicast được tích hợp vào trong hàm SendBroadcastImage(), gửi hình ảnh đã nhận được tới tất cả các node có trong bảng finger, cũng như thông báo cho mỗi node biết khoảng multicast mà nó chịu trách nhiệm. Ứng dụng phần giành cho máy khách (các node nhận video) gồm ba luồng chạy độc lập: • Receive(): Nhận các gói tin hình ảnh đến và xếp vào một hàng đợi. Khóa luận tốt nghiệp 42 Phạm Duy Thăng • ProcessPacket(): Xử lý các gói tin trong hàng đợi gói tin để xếp vào hàng đợi hình ảnh và thực hiện việc gọi hàm FowardPacket() để chuyển tiếp gói tin cho các node khác trong cây multicast. • Show(): Biểu diễn các hình ảnh đã được xử lý ra màn hình của máy khách. Ở ứng dụng phía máy khách, chức năng định tuyến multicast sử dụng bảng finger được tích hợp vào trong hàm ForwardPacket(), gửi các gói tin hình ảnh đến cho các node thuộc bảng finger và nằm trong khoảng multicast mà nó quản lý, đồng thời gửi khoảng multicast của các node con cho các node này. Khóa luận tốt nghiệp 43 Phạm Duy Thăng 4.2. Triển khai giao thức khắc phục lỗi ba pha cho ứng dụng truyền video multicast Hình 20.Triển khai giao thức khắc phục lỗi ba pha Để triển khai giao thức khắc phục lỗi ba pha, chúng ta thực hiện lần lượt từng pha theo thứ tự. Tất cả các công đoạn triển khai được minh họa trên hình 20. Pha thứ nhất, pha thông báo thông tin cây multicast, được triển khai ở lớp Node của giao thức Chord. Lớp Node sẽ được bổ sung hai thuộc tính là Father lưu thông tin node cha và Grandfather lưu thông tin node ông. Chức năng thông báo thông tin node ông được thực hiện bởi hàm requestUpdateGrandfather(), được gọi từ trong thân Khóa luận tốt nghiệp 44 Phạm Duy Thăng hàm WebcamClient.Receive() mỗi khi node nhận được một luồng video từ một node cha mới. Mỗi khi node con nhận được thông điệp thông báo thông tin node ông, nó tiến hành cập nhật thuộc tính Grandfather. Pha thứ hai là pha phát hiện lỗi và thông báo lỗi. Chức năng phát hiện lỗi được cài đặt trong hàm WebcamClient.Receive(). Chức năng phát hiện lỗi được thực hiện nhờ một đồng hồ. Nếu đồng hồ nhận thấy sau một khoảng thời gian delta mà vẫn không có gói tin multicast truyền đến, nó sẽ gọi phương thức thông báo lỗi requestUpdateEntry(). Phương thức này được cài đặt trong lớp node. Khi phương thức này được gọi, node sẽ gửi một gói tin tới node ông yêu cầu cập nhật lại finger trỏ tới node cha. Pha thứ ba là pha xử lý lỗi, được cài đặt trong lớp Node. Mỗi khi nhận được gói tin thông báo lỗi, phương thức OnRequestUpdateEntry() sẽ được gọi để cập nhật lại entry tương ứng với node được thông báo (nếu có). Giá trị delta phụ thuộc vào độ liên tục của dữ liệu truyền đi (số gói tin trong mỗi giây), sẽ được lựa chọn sau khi có đo đạc cụ thể. 4.3. Mô hình thực nghiệm Việc chạy thử chương trình và đo đạc được thực hiện trên môi trường mạng LAN. Số node tham gia là 6 - 9 node, trong đó có 1 node đóng vai trò nguồn phát video(chạy chương trình phía máy chủ) và các node còn lại đóng vai trò các node nhận video (chạy chương trình máy khách). Việc truyền video được thực hiện trong suốt quá trình thực nghiệm. Trong suốt quá trình này, việc gửi và nhận các gói tin điều khiển của giao thức Chord và các gói tin multicast đều được ghi lại trong các tệp ghi log. Để xác định tính hiệu quả của giao thức khắc phục lỗi, sau khi quá trình truyền multicast đã ổn định, lần lượt cho các node tham gia rời mạng, và theo dõi luồng multicast truyền đến tất cả node con của các node rời mạng. Từ đó đưa ra các kết luận về tỷ lệ thành công của giao thức và độ trễ để cây multicast được khôi phục. Khóa luận tốt nghiệp 45 Phạm Duy Thăng 4.4. Các kết quả thực nghiệm Trước tiên, ta tiến hành đo đạc số gói tin multicast được truyền từ nguồn tới một node trong mỗi giây. Ta tiến hành theo dõi trên một node con của nguồn, trong hai khoảng thời gian khác nhau là 5 giây và 10 giây. Số lần thực hiện đo đạc là 3 lần Kêt quả đo đạc được thể hiện trong bảng sau: Số gói tin nhận Khoảng thời gian (miligiây) Lần đo 1 Lần đo 2 Lần đo 3 Trung bình 5000 149 147 145 147 10000 297 251 298 282 Result (gói/giây) 28.8 Khoảng cách 2 gói 34.72 Như vậy khi truyền trong mạng LAN, chúng ta có thể chọn giá trị delta là 347 miligiây, tương ứng với việc chúng ta chịu mất mát (hoặc trễ) tối đa 10 gói tin liên tục. Chúng ta sẽ sử dụng giá trị này để cài đặt giao thức khắc phục lỗi. Tiếp theo, chúng ta tiến hành đo độ trễ trung bình của quá trình khôi phục. Việc đo đạc sẽ tiến hành với ứng dụng truyền video multicast trước và sau khi bổ sung giao thức khắc phục lỗi. Áp dụng giao thức 6 node 9 node Trung bình Trước (ms) 11220 12003 1542 9876 13786 2546 11235 11543 9218.88 Sau (ms) 1245 2354 2322 1564 2454 4328 2835 4102 2650.5 Như vậy, chúng ta có thể thấy được rằng sau khi áp dụng giao thức khắc phục lỗi ba pha, độ trễ (đơn vị: miligiây) của quá trình khôi phục đã giảm rất nhiều. Điều này có nghĩa là các node con sẽ mất ít thời gian chờ đợi hơn khi node cha bị lỗi, hay nói cách khác, hiệu suất của giao thức đã được cải thiện rõ rệt. Khóa luận tốt nghiệp 46 Phạm Duy Thăng Chương 5 – Kết quả và hướng phát triển Thay cho lời kết luận, tôi xin trình bày đánh giá công việc thực hiện được và đưa ra các định hướng cho các công việc sẽ xây dựng tiếp theo. 5.1. Đánh giá kết quả Khóa luận trình bày về giải pháp khắc phục lỗi cho quá trình truyền thông multicast trên nền mạng ngang hàng giao thức Chord. Tôi đã trình bày các vấn đề lỗi xảy ra trong truyền thông multicast trên nền mạng Chord, cũng như đã đưa ra giao thức để giải quyết các vấn đề đó. Giao thức đưa ra đã khắc phục được những điểm chưa phù hợp khi áp dụng mô hình mạng ngang hàng giao thức Chord cho mục đích truyền thông multicast, đồng thời vẫn giữ được những ưu điểm của mô hình. Kết quả thực nghiệm cũng đã đưa ra những đánh giá bước đầu về tính khả thi và tính hiệu quả của giải pháp khắc phục lỗi. Như vậy, khi khắc phục được các vấn đề lỗi còn tồn tại, ta đã nâng cao tính ứng dụng của mô hình truyền thông multicast dựa trên nền mạng ngang hàng Chord. Nhờ vào việc phân tán tài nguyên của toàn mạng lên các node tham gia, đồng thời vẫn đảm bảo được độ tin cậy, mô hình này hiện có thể áp dụng được vào cho các mục đích phân phát dữ liệu đa phương tiện trên mạng internet như truyền hình trực tuyến, hội nghị trực tuyến,… 5.2. Vấn đề còn tồn tại và hướng phát triển tiếp theo Tuy đã góp phần giải quyết được những điểm chưa phù hợp khi áp dụng mô hình mạng ngang hàng Chord cho mục đích truyền thông multicast, nhưng do thời gian thực hiện nghiên cứu có hạn, giao thức đưa ra trong khóa luận này vẫn còn những tồn tại chưa giải quyết được. Thứ nhất, ý tưởng của giải pháp đưa ra là sử dụng các node con của một node N để phát hiện lỗi xảy ra ở node N, rồi thông báo cho node cha của N để xử lý. Giải pháp đưa ra đã thực hiện tốt ý tưởng. Tuy nhiên, với vấn đề lỗi xảy ra ở cả node N và node cha của nó, giao thức xử lý chưa được cài đặt thành công. Khóa luận tốt nghiệp 47 Phạm Duy Thăng Thứ hai, giao thức cũng chưa đưa ra được giải pháp để giải quyết cho tình huống có hai node cùng gửi luồng dữ liệu multicast đến một node N. Do quá trình thực hiện việc đồng bộ bảng finger và danh sách successor trong mạng Chord được thực hiện định kỳ nên có thể xảy ra trường hợp bảng finger được đồng bộ chậm. Do đó hoàn toàn có thể xảy ra trường hợp có một node nhận được hai luồng multicast, nghĩa là node đó có hai node cha. Trong trường hợp này giao thức khắc phục lỗi sẽ hoạt động sai. Do giao thức còn một số tồn tại chưa giải quyết được, nên trong thời gian tới, để hoàn thiện giải pháp cần tập trung giải quyết các vấn đề đó. Tôi cũng sẽ kết hợp với một số nghiên cứu khác để thực hiện việc triển khai giao thức vào một ứng dụng thực tế như truyền hình ảnh trong hội nghị trực tuyến. Khóa luận tốt nghiệp 48 Phạm Duy Thăng Tài liệu tham khảo Tiếng Việt [1] Hoàng Ngọc Khánh. Xây dựng giao thức mạng ngang hàng có cấu trúc Chord. Khóa luận tốt nghiệp Đại học Công nghệ, 2008. [2] Nguyễn Hữu Tú. Triển khai multicast trên mạng ngang hàng có cấu trúc Chord. Khóa luận tốt nghiệp Đại học Công nghệ, 2008. [3] Giới thiệu về multicast. [4] Mạng đồng đẳng, C4%91%E1%BA%B3ng Tiếng Anh [5] M. Amad, A. Meddahi. A Scalable Approach for Application Layer Multicast in P2P Networks. PerCom 2008. [6] Miguel Castro, Peter Druschel,… Scribe: A large-scale and decentralized application-level multicast infrastructure, 2002. [7] Jung-Rung Han. Failure Recovery with Priority Progress Multicast. B.Sc., The University of British Columbia, 2003. Khóa luận tốt nghiệp 49 Phạm Duy Thăng [8] Gifford Jannotti, et al. Overcast: Reliable multicasting with an overlay network, 2000. [9] Ion Stoica, Robert Morris,… Chord: a scalable peer-to-peer lookup protocol for internet applications, 2003. [10] Guang Tan; Stephen. A. Jarvis. Improving the Fault Resilience of Overlay Multicast for Media Streaming, 2007 [11] Guang Tan; Stephen. A. Jarvis. Stochastic Analysis and Improvement of the Reliability of DHT-Based Multicast. INFOCOM 2007. [12] Multicast. [13] Peer-to-peer computer network, [14] RFC791 – Internet Protocol

Các file đính kèm theo tài liệu này:

  • pdfkltn_pham_duy_thang_4792.pdf