Thông điệp Hello

Một phần của tài liệu IP multicast và ứng dụng (Trang 43)

4. Kết cấu của luận văn

2.2.1.1 Thông điệp Hello

Cũng giống nhƣ giao thức DVMRP, PIM-DM sử dụng cơ chế tìm kiếm hàng xóm để thiết lập mối liên kết với router hàng xóm. Trong PIM-DMv1 thông điệp tìm kiếm có tên là Router Query đƣợc đóng gói trong thông điệp IGMP và đƣợc gửi tới địa chỉ 224.0.0.2 (địa chỉ all-routers). Trong PIM-DMv2 thông điệp thăm dò có tên là Hello đƣợc gửi theo chu kỳ 30 giây tới địa chỉ 224.0.0.13 (địa chỉ all-PIM-routers). Trong thông điệp Hello chứa một giá trị Holdtime để thông báo cho các máy nhận biết khoảng thời gian hiệu lực của kết nối giữa hai máy bị hết nếu không có thông điệp Hello khác đƣợc gửi trong thời gian đó.

2.2.1.2 Router được chỉ định

Ngoài việc thiết lập mối liên kết hàng xóm, thông điệp PIM Hello cũng đƣợc sử dụng để tìm ra router đƣợc chỉ định để gửi dữ liệu (Designated Router – DR) cho mạng đa truy cập. Thông qua thông điệp Hello các router sẽ biết đƣợc router nào trên mạng có giá trị địa chỉ IP cao nhất, và router đó đƣợc chọn làm

DR cho mạng. Khi trong một phân đoạn mạng có nhiều router cùng tồn tại, ngƣời quản trị mạng thông thƣờng cần chỉ định một router là DR. Tuy nhiên việc thay đổi địa chỉ IP của router để chỉ định một router là DR thƣờng khó khăn hoặc không thể thực hiện. Để thực hiện điều này, trong thông điệp PIMv2 Hello thêm vào một lựa chọn về độ ƣu tiên DR-Priority. Khi đó các router có độ ƣu tiên cao sẽ đƣợc chọn làm DR, nếu có hai hay nhiều router cùng độ ƣu tiên thì giá trị IP đƣợc so sánh để bầu chọn.

2.2.1.3 Cây phân phối multicast

Bởi vì PIM-DM là một giao thức dense mode, cây nguồn (hay cây đƣờng đi ngắn nhất) đƣợc sử dụng để chỉ ra quá trình phân phối dữ liệu tới các máy nhận trên mạng. Các cây nguồn đƣợc xây dựng bằng cách sử dụng cơ chế quảng bá và loại bỏ (flood and prune) ngay khi nguồn multicast bắt đầu truyền dữ liệu. Không nhƣ DVMRP là giao thức sử dụng bảng định tuyến multicast của riêng nó, PIM- DM sử dụng thông tin về hàng xóm của nó để xây dụng cây nguồn. Trong PIM- DM các router kết nối với nguồn đƣợc cho là ở trên cây đƣờng đi ngắn nhất SPT và các hàng xóm PIM-DM khác ở các nhánh phía duới của nguồn dữ liệu. Cây SPT ban đầu chính là cây quảng bá (broadcast tree) bởi vì router gửi dữ liệu tới tất cả các hàng xóm của nó, mà không biết trên các router đó có tồn tại các máy nhận dữ liệu hay không. Hình 2.9 thể hiện một ví dụ về việc quảng bá dữ liệu multicast trên mạng PIM-DM xuống cây quảng bá multicast.

Trong mạng trên hình 2.9, nguồn dữ liệu multicast gửi dữ liệu tới router A và B từ đó gửi tiếp xuống các router PIM-DM phía dƣới là router C và D. Ta thấy rằng luồng dữ liệu ban đầu trƣớc khi có các hoạt động cắt nhánh có nhiều đƣờng đi dƣ thừa, nhƣ là router C nhận hai luồng dữ liệu giống nhau, hay router C và D cùng gửi dữ liệu tới một phân đoạn mạng. Cây quảng bá này sẽ đƣợc điều chỉnh để loại bỏ dƣ thừa khi quá trình loại bỏ nhánh đƣợc hoàn tất.

Hình 2.9: Cây phân phối PIM-DM

2.2.2 Cắt nhánh

Các router PIM-DM gửi thông điệp cắt nhánh Prune lên router phía trên của nó khi có một trong các điều kiện sau: khi dữ liệu đến từ một giao diện không phải là giao diện RPF hay khi một router nhận thấy phân đoạn mạng phía sau nó không tồn tại các máy nhận muốn nhận dữ liệu từ nhóm multicast. Trên hình 2.10, giả sử metric cho đƣờng đi từ router A đến C tốt hơn đƣờng đi từ router B đến C, lúc đó router C gửi thông điệp Prune tới router B vì dữ liệu đến nó trên giao diện không phải là giao diện RPF đối với nguồn.

Ở bƣớc tiếp theo, router B phản hồi lại thông điệp Prune đƣợc gửi từ C và đƣờng đi từ router B đến router C bị loại bỏ khỏi cây multicast. Ngoài ra router I là một router lá không có các máy nhận dữ liệu kết nối tới, vì thế nó gửi một thông điệp Prune tới router E. Router E phản hồi lại bằng cách loại bỏ đƣờng đi tới router I và bởi vì router E cũng không có các máy nhận dữ liệu kết nối trực tiếp nó cũng sẽ gửi dữ liệu tới router C và D. Tuy nhiên vì máy nhận 1 kết nối trực tiếp tới cùng giao diện, router C và D sẽ bỏ qua thông điệp Prune từ E. Điều đó có nghĩa dữ liệu từ nguồn vẫn tiếp tục đƣợc gửi tới router E và E tiếp tục gửi thông điệp Prune lên router C và D.

Hình 2.10: Cắt nhánh trong PIM-DM bƣớc 1

Hình 2.11: Cắt nhánh trong PIM-DM bƣớc 2

Trong cơ chế cắt nhánh trên mạng đa truy cập, các router PIM-DM mong muốn nhận thông điệp Join từ các hàng xóm để phản hồi lại thông điệp Prune của hàng xóm khác trên cùng một giao diện. Router G và H trong hình 2.12 là một ví dụ của cơ chế hoạt động trên.

Hình 2.12: Cắt nhánh trong PIM-DM bƣớc 3

G là một node lá và không có các máy nhận dữ liệu kết nối tới vì thế nó gửi thông điệp Prune lên mạng tới router F. Tuy nhiên thông điệp Prune đƣợc gửi tới địa chỉ all-PIM-router vì thế router H cũng nhận đƣợc thông điệp gửi tới F. Bởi vì H có các máy nhận yêu cầu nhận dữ liệu, H sẽ gửi một thông điệp PIM Join và nó sẽ hủy bỏ thông điệp Prune đƣợc gửi từ G. Để đảm bảo quá trình Prune hoạt động hiệu quả các router PIM-DM khi nhận một thông điệp Prune sẽ không xử lý ngay mà đợi 3 giây để các router khác gửi thông điệp Join. Nếu sau khoảng thời gian này, router không nhận đƣợc thông điệp Join thì nó sẽ thực hiện quá trình cắt nhánh.

2.2.3 Cơ chế xác nhận

Trở lại mạng trong hình 2.12, nguồn dữ liệu bây giờ chỉ gửi tới các máy nhận trên mạng. Tuy nhiên vẫn còn một vấn đề nữa, đó là việc trùng lặp dữ liệu đƣợc gửi bởi router C và D lên mạng để tới máy nhận 1. Để giải quyết vấn đề trên, PIM sử dụng một cơ chế xác nhận để bình chọn ra một router DR cho nguồn multicast. Cơ chế xác nhận hoạt động theo quy tắc sau: nếu một router nhận dữ liệu multicast trên cổng mà cổng đó cũng gửi dữ liệu từ nguồn, thì router sẽ gửi một thông điệp PIM Assert tới cổng mà nó nhận dữ liệu để tìm ra router đƣợc lựa chọn. Trong thông điệp PIM Assert chứa giá trị metric tới nguồn, lúc đó

các router trên mạng kiểm tra giá trị metric và router nào có giá trị metric tốt nhất sẽ đƣợc chọn làm router gửi dữ liệu. Các router khác sẽ ngừng gửi dữ liệu và loại bỏ cổng của nó ra khỏi cây multicast. Trong trƣờng hợp có nhiều router có cùng metric, địa chỉ IP sẽ đƣợc kiểm tra và router nào có địa chỉ IP cao nhất sẽ đƣợc chọn.

Mạng trong hình 2.13 router C và D cùng gửi thông điệp PIM Assert lên mạng, giả sử router C và D có cùng metric và router C có địa chỉ IP lớn hơn. Lúc này router C sẽ đƣợc chọn làm router gửi dữ liệu còn router D sẽ ngừng gửi dữ liệu và loại bỏ giao diện của nó ra khỏi cây multicast.

Hình 2.13: Xác nhận trong PIM-DM

2.2.4 Ghép nhánh

PIM-DM cũng hỗ trợ khả năng ghép trở lại cây multicast một nhánh cây đã bị cắt bỏ trƣớc đó. Hình 2.14 thể hiện một mạng với một máy nhận thứ 3 tham gia vào nhóm multicast trên router I.

Hình 2.14: Ghép nhánh trong PIM-DM

Khi router I nhận thông điệp gia nhập nhóm multicast IGMP từ máy nhận 3, router I gửi một thông điệp Graft tới router E để yêu cầu nhận dữ liệu. Router E nhận thông điệp Graft từ router I nó trả lời bằng cách gửi lại I một thông điệp Graft-Ack. Bởi vì trƣớc đó router E đã gửi thông điệp để cắt bỏ khỏi cây multicast vì thế nó cũng gửi một thông điệp Graft tới router C. Tƣơng tự router C sẽ gửi lại E một thông điệp Graft-Ack, và lúc này dữ liệu multicast đƣợc gửi từ router C qua router E và I để tới máy nhận 3.

2.3 PIM Sparse Mode 2.3.1 Mô hình tham gia 2.3.1 Mô hình tham gia

PIM-SM tuân theo hoạt động của giao thức sparse mode, trong đó dữ liệu multicast chỉ đƣợc gửi tới các máy nhận trên mạng khi có yêu cầu. Trong PIM- SM yêu cầu đƣợc thực hiện thông qua cơ chế tham gia tƣờng minh (Explicit Join), thông điệp PIM Join sẽ đƣợc gửi qua từng chặng để đến đƣợc gốc của cây multicast (gốc của cây multicast trong PIM-SM là router RP đối với cây chia sẻ hay là router kết nối trực tiếp với nguồn dữ liệu trong cây đƣờng đi ngắn nhất). Khi thông điệp Join đi theo cây để lên tới gốc, các router trên đƣờng đi tạo một trạng thái để gửi dữ liệu multicast vì thế dữ liệu multicast yêu cầu sẽ đƣợc gửi trở

lại cây. Tƣơng tự, khi dữ liệu multicast không đƣợc yêu cầu nữa, router sẽ gửi thông điệp Prune lên gốc cây để cắt bỏ các luồng dữ liệu không cần thiết. Khi thông điệp Prune đi qua các chặng trên cây các router cũng cập nhật trạng thái của nó, bỏ đi trạng thái gửi dữ liệu tƣơng ứng với nhóm multicast. Điểm quan trọng trong mô hình tham gia tƣờng minh là trạng thái gửi dữ liệu trong các router đƣợc tạo ra nhƣ là kết quả của thông điệp Join. Đó là sự khác biệt quan trọng so với giao thức dense mode, là các giao thức mà trạng thái gửi dữ liệu của router đƣợc tạo bởi dữ liệu multicast đến router đó.

2.3.2 Cây chia sẻ

Các hoạt động của PIM-SM xoay quanh một cây chia sẻ một chiều, trong đó gốc cây đƣợc gọi là điểm hẹn RP (Rendezvous Point). Cây chia sẻ còn có một tên khác là cây RP đƣợc viết tắt là RPT vì gốc của nó ở tại điểm RP. Router ở chặng cuối (router kết nối trực tiếp với máy nhận dữ liệu) muốn nhận dữ liệu từ một nhóm multicast nó sẽ tham gia vào cây chia sẻ. Khi router không muốn nhận dữ liệu từ nhóm multicast nữa, nó sẽ cắt bỏ khỏi cây chia sẻ.

2.3.2.1 Tham gia cây chia sẻ

Trên hình 2.15 thể hiện bƣớc đầu tiên trong quá trình tham gia vào cây chia sẻ, trong bƣớc này máy nhận 1 tham gia vào nhóm multicast G bằng cách gửi thông điệp IGMP Report.

Bởi vì máy nhận 1 là máy đầu tiên tham gia vào nhóm multicast, router C tạo một trạng thái (*, G) trong bảng định tuyến multicast của nó cho nhóm G. Router C đặt giao diện của nó vào danh sách các cổng ra của thực thể (*, G) nhƣ trên hình 2.16 (đƣợc thể hiện bằng mũi tên). Bởi vì router C đã tạo một thực thể trạng thái mới (*, G) nó cũng gửi một PIM (*, G) Join tới router RP để tham gia vào cây chia sẻ (đƣợc thể hiện bằng mũi tên đứt nét trong hình 2.16). Để gửi gói tin tới RP router C sử dụng bảng định tuyến unicast để xác định giao diện cần chuyển gói tin.

Hình 2.16: Tham gia cây chia sẻ PIM bƣớc 2

Router RP nhận thông điệp (*, G) Join và bởi vì nó chƣa có trạng thái cho nhóm multicast G. Router RP sẽ tạo một thực thể trạng thái (*, G) trong bảng định tuyến multicast của nó và thêm một đƣờng đi tới router C vào danh sách các cổng ra. Lúc này, cây chia sẻ cho nhóm G đƣợc xây dựng từ router RP tới C và máy nhận 1 nhƣ trên hình 2.17, dữ liệu multicast cho nhóm G đƣợc gửi tới router RP và theo cây chia sẻ đi xuống máy nhận 1.

Hinh 2.17: Tham gia cây chia sẻ PIM bƣớc 3

Tiếp tục ví dụ và giả sử rằng có một máy nhận 2 tham gia vào nhóm multicast nhƣ trên hình 2.18. Tƣơng tự máy nhận cũng thông báo nó muốn nhận dữ liệu multicast trên nhóm G bằng cách gửi thông điệp IGMP tới router E.

Hình 2.18: Tham gia cây chia sẻ PIM bƣớc 4

Router E chƣa có trạng thái cho nhóm G, nó sẽ tạo một thực thể trạng thái mới trong bảng định tuyến multicast của nó và thêm cổng vào danh sách cổng ra (đƣợc thể hiện bằng mũi tên trong hình 2.19). Router gửi một thông điệp (*, G) Join tới router C để gia nhập cây chia sẻ (thể hiện bằng mũi tên đứt nét trong hình 2.19).

Hình 2.19: Tham gia cây chia sẻ PIM bƣớc 5

Khi router C nhận thông điệp (*, G) từ router E nó nhận thấy rằng đã tồn tại trạng thái (*,G) cho nhóm G. Vì thế router C đơn giản chỉ cần thêm đƣờng đi tới router E vào danh sách cổng ra. Trong hình 2.20 thể hiện kết quả của cây chia sẻ, bao gồm router C và E với các đƣờng đi tới các máy nhận dữ liệu.

Hình 2.20: Tham gia cây chia sẻ PIM bƣớc 6

2.3.2.2 Cắt nhánh trên cây chia sẻ

Bởi vì PIM-SM sử dụng mô hình Explicit Join để xây dựng cây multicast vì thế nó cũng sử dụng thông điệp Prune để cắt bỏ các nhánh cây khi chúng không còn nhận dữ liệu nữa. Trên hình 2.21 máy nhận 2 rời nhóm multicast G bằng cách gửi thông điệp IGMP Leave.

Hình 2.21: Cắt nhánh trên cây chia sẻ bƣớc 1

Router E chỉ có một máy nhận tham gia vào nhóm multicast vì thế cổng đó bị loại bỏ khỏi danh sách cổng ra của trạng thái (*, G), điều này đƣợc thể hiện bằng cách bỏ mũi tên từ router E trên hình 2.22. Khi giao diện bị loại bỏ, danh sách cổng ra cho thực thể (*, G) là rỗng, điều đó chỉ ra router E không cần nhận dữ liệu cho nhóm multicast G nữa. Lúc đó router E gửi một thông điệp (*, G) Prune tới router RP để yêu cầu cắt bỏ nó khỏi nhánh cây multicast.

Hình 2.22: Cắt nhánh trên cây chia sẻ bƣớc 2

Khi router C nhận thông điệp Prune, nó loại bỏ đƣờng đi tới router E trong danh sách các cổng ra của thực thể (*, G). Tuy nhiên router C vẫn còn máy nhận 1 kết nối và nhận dữ liệu multicast từ nhóm G, vì thế router C vẫn tiếp tục duy trì cây chia sẻ do đó thông điệp Prune sẽ không đƣợc gửi tiếp tới router RP.

Hình 2.23: Cắt nhánh trên cây chia sẻ bƣớc 3

2.3.3 Cây đƣờng đi ngắn nhất

Không giống nhƣ giao thức sparse mode khác, giao thức PIM-SM không giới hạn ngƣời dùng phải nhận dữ liệu multicast thông qua cây chia sẻ. Các máy nhận cũng có thể nhận dữ liệu multicast thông qua cây đƣờng đi ngắn nhất SPT. Bằng cách tham gia cây SPT, dữ liệu multicast sẽ đƣợc đƣa trực tiếp tới máy nhận mà không thông qua router RP, điều đó giúp giảm tải trên router RP. Nhƣợc điểm của cây SPT là router phải tạo và duy trì các thực thể trạng thái (S, G) trong bảng định tuyến multicast của chúng. Tuy nhiên, việc duy trì thông tin trạng thái trên các router PIM-SM sử dụng cây đƣờng đi ngắn nhất vẫn ít hơn so các router sử dụng giao thức dense mode. Lý do là cơ chế quảng bá và loại bỏ đƣợc sử dụng bởi các giao thức dense mode yêu cầu các router duy trì trạng thái (S, G) trong bảng định tuyến cho tất cả các nguồn hoạt động, cho dù không có các máy nhận yêu cầu nhận dữ liệu. Điều đó lý giải tại sao giao thức PIM-SM đƣợc khuyến khích sử dụng hơn so với các giao thức dense mode.

2.3.3.1 Tham gia cây đường đi ngắn nhất

Bằng cách gửi một thông điệp (S, G) Join tới nguồn, router có thể tham gia vào cây đƣờng đi ngăn nhất cho nguồn S đó và có thể nhận dữ liệu multicast đƣợc gửi từ nguồn tới nhóm multicast G. Trên hình 2.24 thể hiện một ví dụ của thông điệp (S, G) Join đƣợc gửi tới nguồn để tham gia cây SPT. Trong đó máy nhận 1 đã tham gia vào nhóm G và yêu cầu nhận dữ liệu từ nhóm.

Hình 2.24: Tham gia cây đƣờng đi ngắn nhất bƣớc 1

Bởi vì router E muốn tham gia cây SPT cho nguồn S nó gửi một thông điệp (S, G) Join tới nguồn. Khi router C nhận thông điệp tham gia nó tạo một thực thể (S, G) vào bảng định tuyến của nó và thêm giao diện đã nhận gói tin vào danh

Một phần của tài liệu IP multicast và ứng dụng (Trang 43)