PIM Sparse Mode

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

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

2.3 PIM Sparse Mode

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 sách cổng ra (đƣợc thể hiện bằng mũi tên trên hình 2.25). Bởi vì router tạo một trạng thái mới (S, G) vì vậy nó cũng gửi một thông điệp (S, G) Join tới nguồn (đƣợc thể hiện bằng mũi tên đứt nét trên hình 2.25).

Cuối cùng khi router A nhận đƣợc thông điệp (S, G) Join nó thêm đƣờng đi vào danh sách cổng ra của thực thể (S, G) và hình thành cây đƣờng đi ngắn nhất SPT từ nguồn S tới máy nhận nhƣ hình 2.26.

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

2.3.3.2 Cắt nhánh trên cây đường đi ngắn nhất

PIM-SM cũng có thể cắt bỏ các nhánh trên cây SPT thông qua thông điệp (S, G) Prune tƣơng tự nhƣ quá trình cắt nhánh trên cây chia sẻ. Xét mạng nhƣ trên hình 2.27, giả sử lúc này router E không còn các máy nhận dữ liệu nữa, vì thế không cần thiết gửi dữ liệu đến nó. Vì vậy router E gửi một thông điệp (S, G) Prune tới nguồn để yêu cầu cắt bỏ nó khỏi cây SPT.

Router C nhận đƣợc thông điệp (S, G) Prune nó loại bỏ cổng nhận thông điệp ra khỏi danh sách cổng ra của thực thể (S, G). Lúc này danh sách cổng ra cho thực thể (S, G) là rỗng vì thế router C gửi một thông điệp (S, G) Prune tới nguồn yêu cầu cắt bỏ nó ra khỏi cây multicast.

Hình 2.28: Cắt nhánh trên cây đƣờng đi ngắn nhất bƣớc 2

Khi router A nhận đƣợc thông điệp (S, G) Prune từ C nó loại bỏ cổng đã nhận thông điệp ra khỏi danh sách cổng ra. Tuy nhiên, vì router A là router kết nối trực tiếp với nguồn S nên router A không gửi thông điệp Prune nữa, mà nó chỉ đơn giản loại bỏ các gói tin đƣợc gửi đến từ S vì danh sách cổng ra của (S, G) bây giờ là rỗng.

Hình 2.29: Cắt nhánh trên cây đƣờng đi ngắn nhất bƣớc 3

2.3.4 Thông điệp Join/Prune

Các phần trƣớc đây chúng ta đã nhắc đến thông điệp PIM Join và PIM Prune nhƣ hai thông thông điệp khác nhau với mục đích làm sáng tỏ quá trình

tham gia hay cắt bỏ nhánh. Tuy nhiên thức tế PIM chỉ sử dụng một thông điệp đơn Join/Prune cho cả hai chức năng. Mỗi thông điệp Join/Prune chứa cả hai danh sách Join và Prune và một trong hai danh sách đó có thể rỗng. Các thực thể Join và Prune trong thông điệp Join/Prune có cùng một định dạng chung, bao gồm các thông tin nhƣ sau:

Địa chỉ nguồn multicast: địa chỉ IP của nguồn multicast để thực hiện quá trình Join hay Prune, nếu cờ Wildcard đƣợc bật thì trƣờng này chứa địa chỉ của router RP.

Địa chỉ nhóm multicast: địa chỉ nhóm multicast để thực hiện quá trình Join hay Prune.

Cờ Wildcard (WC bit): chỉ ra rằng thực thể là một thông điệp (*, G) Join/Prune.

Cờ RP Tree (RP bit): thông điệp Join/Prune là thích hợp và cần đƣợc gửi lên cây chia sẻ.

2.3.5 Đăng ký nguồn dữ liệu

Trong cây chia sẻ PIM-SM chúng ta đã biết cách router gửi thông điệp (*, G) tới cây chia sẻ cho nhóm multicast G. Tuy nhiên PIM-SM sử dụng cây chia sẻ một chiều nên dữ liệu multicast chỉ có thể đi theo chiều từ gốc cây xuống các nhánh. Vì thế nguồn dữ liệu cần phải có một cách khác để gửi dữ liệu của nó tới router RP. Tuy nhiên trƣớc tiên router RP cần phải đƣợc thông báo về nguồn đang tồn tại. Để làm điều này PIM-SM sử dụng thông điệp PIM Register và Register-Stop để thực hiện quá trình đăng ký nguồn dữ liệu. Quá trình này sẽ thông báo với router RP một nguồn đang hoạt động trên mạng và phân phối các gói tin multicast đầu tiên tới RP để tiếp tục đƣợc gửi xuống các nhánh cây.

2.3.5.1 Thông điệp PIM Register

Thông điệp PIM Register đƣợc gửi từ router DR kết nối với nguồn dữ liệu tới router RP, với hai mục đích là:

Báo cho router RP biết rằng S là nguồn hoạt động và đang gửi dữ liệu tới nhóm G.

Gửi các gói tin multicast đầu tiên từ S (các gói tin đƣợc đóng gói trong một thông điệp PIM Register) tới RP để gửi xuống cây chia sẻ tới máy nhận. Vì thế khi một nguồn multicast bắt đầu gửi dữ liệu, router DR nhận gói tin multicast từ nguồn và tạo một thực thể trạng thái (S, G) trong bảng định tuyến multicast. Tiếp đó router DR đóng gói mỗi gói tin multicast trong các thông điệp PIM Register riêng rẽ và gửi tới router RP. Khi router RP nhận một thông điệp PIM Register, đầu tiên nó sẽ mở gói thông điệp và nhận đƣợc gói tin multicast trong đó. Nếu gói tin là của một nhóm multicast có các máy nhận RP gửi gói tin xuống các nhánh cây phù hợp. Sau đó router RP tham gia vào cây đƣờng đi ngắn nhất của nguồn S và có thể nhận dữ liệu trực tiếp từ nguồn mà không cần nhận thông qua thông điệp PIM Register nữa. Nếu nhƣ gói tin multicast trong thông điệp PIM Register không có máy nào yêu cầu nhận (lúc đó danh sách cổng ra cho trạng thái (S, G) là rỗng) thì router RP sẽ loại bỏ thông điệp multicast và không gửi thông điệp Join trở lại nguồn.

2.3.5.2 Thông điệp PIM Register – Stop

Router RP sử dụng thông điệp PIM Register-Stop để thông báo với router DR ngừng việc gửi các thông điệp PIM Register khi thỏa mãn một trong hai điều kiện sau:

Khi router RP bắt đầu nhận dữ liệu multicast từ nguồn thông qua cây (S, G) SPT giữa nguồn và RP.

Khi router RP không cần nhận dữ liệu nữa vì trên nó không còn tồn tại các máy yêu cầu nhận dữ liệu multicast.

Khi router DR nhận thông điệp Register-Stop nó biết router RP không cần nhận dữ liệu nữa vì thế nó ngừng việc đóng gói và gửi các thông điệp Register.

2.3.6 Chuyển từ cây chia sẻ sang cây đƣờng đi ngắn nhất

PIM-SM hỗ trợ khả năng cho phép router DR ở chặng cuối (là router kết nối trực tiếp với các máy nhận dữ liệu) có thể chuyển từ cây chia sẻ sang cây SPT cho một nguồn multicast. Điều này đƣợc thực hiện tự động thông qua việc đặt ra một ngƣỡng SPT-Threshold của băng thông mạng, khi giá trị băng thông đạt ngƣỡng router DR sẽ tham gia vào cây SPT.

Xét mạng có hai nguồn và hai máy nhận nhƣ trên hình 2.30, bởi vì router C là router DR chặng cuối nó có một lựa chọn để chuyển sang cây SPT cho nguồn S1 và S2. Để làm đó router C gửi thông điệp (S1, G) Join tới nguồn G nhƣ đƣợc thể hiện bằng mũi tên đứt nét trên hình 2.30.

Hình 2.30: Chuyển sang cây SPT bƣớc 1

Khi router A nhận thông điệp Join, nó thêm cổng nhận thông điệp vào danh sách cổng ra cho thực thể (S1, G) vào bảng multicast của nó. Lúc này đƣờng đi từ router A đến router C đƣợc thiết lập và dữ liệu có thể truyền trực tiếp tới router C theo cây (S1, G) SPT.

Chúng ta có thể thấy tại thời điểm này có hai đƣờng đi đối với luồng dữ liệu multicast (S1, G) đến router C, đó là thông qua cây chia sẻ và cây SPT điều này gây trùng lặp dữ liệu cũng nhƣ lãng phí băng thông mạng. Vì thế cần có cơ chế thông báo với router RP để cắt bỏ dữ liệu multicast (S1, G) khỏi cây chia sẻ. Để thực hiện điều này một kiểu đặc biệt của thông điệp Prune đƣợc sử dụng. Thông điệp này có tên là (S, G) RP-bit Prune bởi vì nó có cờ RP đƣợc gán trong danh sách các thực thể Prune. Nhƣ phần trƣớc ta đã biết cờ RP chỉ ra rằng thông điệp là phù hợp với cây chia sẻ và cần đƣợc gửi lên trên để tới router RP. Sử dụng cờ này trong thông điệp (S1, G) Prune và gửi nó lên cây chia sẻ để thông báo tới các router trên cây loại bỏ nguồn dữ liệu multicast S1 ra khỏi cây.

Trên hình 2.32 router C gửi một thông điệp (S1, G) RP-bit Prune tới router RP để loại bỏ nguồn dữ liệu S1 khỏi cây multicast. Sau khi nhận đƣợc thông điệp router RP trạng thái gửi dữ liệu multicast của nó vì thế dữ liệu (S1, G) sẽ không đƣợc gửi xuống nhánh cây đến router C. Tuy nhiên sau khi loại bỏ đƣờng đi tới router C danh sách cổng ra cho trạng thái (S1, G) trên router RP là rỗng vì thế nó không cần nhận dữ liệu multicast từ nguồn nữa.

Hình 2.32: Cắt bỏ nguồn khỏi cây chia sẻ bƣớc 3

Để ngừng luồng dữ liệu không cần thiết từ nguồn gửi tới, router RP gửi thông điệp (S1,G) Prune trở lại nguồn. Thông điệp Prune (đƣợc thể hiện bằng

mũi tên đứt nét trên hình 2.33) đƣợc gửi theo từng chặng và qua router B trƣớc khi đến router A.

Hình 2.33: Cắt bỏ nguồn khỏi cây chia sẻ bƣớc 4

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