Tác giả:
+ Đặng Quang Minh
PIM Sparse Mode (PIM-SM)
Giao thức định tuyến multicast chế độ dense là hữu ích khi các ứng dụng multicast là dày đặc và bạn cần phân phối traffic đến hầu như tất cả các mạng. Tuy nhiên, nếu các người dùng chỉ ở vài mạng con, giao thức định tuyến chế độ dense sẽ vẫn phát tán lưu lượng trên toàn bộ liên mạng, lãng phí băng thông và tài nguyên. Trong những trường hợp này, định tuyến theo kiểu sparse, chẳng hạn PIM-SM có thể được dùng để giảm lãng phí tài nguyên mạng. Sự khác nhau cơ bản giữa chế độ dense và chế độ sparse liên quan đến trạng thái mặc định của nó. Mặc định, các giao thức chế độ dense tiếp tục truyền các traffic của nhóm trừ phi một router bên dướI chỉ ra rằng nó không muốn nhận traffic đó. Các giao thức chế độ sparse không truyền lưu lượng của nhóm tới bất kỳ router nào trừ phi nó nhận được một thông điệp yêu cầu các bản sao của các gói tin được gửi tới một nhóm multicast đặc biệt. Một router láng giềng yêu cầu nhận các gói chỉ nhằm một trong hai mục đích:
- Router đã nhận được một yêu cầu nhận gói tin từ một vài router láng giếng.
- Một host trên một phân đoạn mạng đã gửi thông điệp IGMP Join cho nhóm đó.
Hình dưới đây sẽ mô tả điều gì sẽ xảy ra với PIM-SM trước khi một host có thể nhận gói tin được gửi từ S1 đến địa chỉ nhóm 226.1.1.1. Hoạt động của PIM sparsemode bắt đầu khi gói tin được đẩy về một router đặc biệt gọi là rendezvous point (RP). Khi lưu lượng của một nhóm đến RP, không giống như trong chế độ dense, router RP không có tự động đẩy tiếp lưu lượng về bất kỳ router nào. Lưu lượng này phải được yêu cầu bởi một router.
PIM-SM được cấu hình trên tất cả các router. R1 được chọn lựa như là RP và trong tất cả ba router, địa chỉ IP của 172.16.1.1 của R1 được cấu hình tĩnh như là địa chỉ RP. Thường thì địa chỉ của cổng loopback được dùng như là địa chỉ RP và địa chỉ này được quảng bá trong bảng định tuyến unicast sao cho tất cả các router biết cách làm thế nàp để định vị router RP. Ở thời điểm này, R1 là RP có thể nhận lưu lượng đi về nhóm 226.1.1.1 nhưng router R1 sẽ không truyền lưu lượng này đi.
Các bước sau đây sẽ diễn ra:
1. Máy S1 gửi một gói tin multicast đến RP, địa chỉ đích là 226.1.1.1.
2. R1 chọn bỏ qua gói tin, bởi vì không có router hay máy nào trong phân đoạn mạng báo cho RP (R1) rằng nó muốn nhận lưu lượng multicast.
3. Máy H2 gửi thông điệp IGMP Join đến nhóm 226.1.1.1.
4. R3 gửi thông điệp PIM Join đến RP (R1) về địa chỉ 226.1.1.1.
5. Hoạt động của R1 giờ bị thay đổi, các gói tin được gửi về 226.1.1.1 sẽ được đẩy ra khỏi cổng S0/1 đến S3.
6. Host S1 gửi gói tin multicast về địa chỉ 226.1.1.1 và R1 gửi ra khỏi cổng S0/1 về R3.
Trong một hệ thống mạng PIM-SM, tất cả các router phải học địa chỉ IP của RP. Giải pháp thứ nhất là cấu hình tĩnh địa chỉ IP trong tất cả các router. Cách thứ hai là cho phép các router tìm ra các địa chỉ IP của RP. Trong hình trên, R2 chưa nhận bất kỳ một thông điệp tham gia IGMP Join trên bất kỳ cổng LAN nào vì vậy nó không chuyển bất kỳ yêu cầu nào tới RP để truyền trên cổng LAN vì vậy nó không gửi bất kỳ yêu cầu nào đến RP để RP truyền lưu lượng multicast. Kết quả là, R1 không làm lãng phí băng thông trên kết nối từ R1 đến R2. R3 cũng sẽ không truyền lưu lượng multicast đến R2. R3 đầu tiên sẽ kiểm tra RPF dùng địa chỉ IP của RP chứ không phải địa chỉ nguồn của gói tin, bởi vì nó đang nhận lưu lượng nhóm từ RP. Nếu phép kiểm tra RPF là thành công, R3 sẽ truyền traffic trên cổng LAN.
Sự tương tự giữa PIM-DM và PIM-SM
PIM-SM có nhiều điểm tương tự như PIM-DM. Cũng giống như PIM-DM, PIM-SM dùng bảng định tuyến unicast để kiểm tra ROF, bất chấp giao thức định tuyến unicast được dùng. Thêm vào đó, PIM-SM cũng dùng cơ chế sau giống như PIM-DM:
Có vài điểm giống nhau giữa PIM-SM và PIM-DM:
+ Cả hai đều dùng cơ chế hello để tìm ra láng giềng.
+ Tính toán và kiểm tra RPF khi bảng định tuyến unicast routing thay đổi.
+ Bầu chọn designated router trên môi trường multi-access. Router DR thực hiện tất cả các tiến trình IGMP khi IGMPv1 được dùng.
+ Sử dụng cơ chế prune trên môi trường multiaccess.
+ Sử dụng cơ chế Assert để bầu ra router forwarder trên môi trường multiaccess. Router thắng quá trình bầu chọn Assert sẽ chịu trách nhiệm đẩy lưu lượng vào trong subnet đó.
Tuy nhiên, PIM-SM dùng cơ chế explict join (join tường minh). PIM Sparse Mode (PIM-SM) dùng một giải pháp khác. Cây multicast không mở rộng đến router cho đến khi nào một host đã tham gia vào một nhóm. Cây multicast được xây dựng bằng các thành viên ở các node lá và mở rộng ngược về root. Cây được xây dựng từ dưới lên. SM cũng hoạt động dựa trên ý tưởng cấu trúc shared-tree, trong đó gốc của cây không nhất thiết là nguồn của multicast. Thay vào đó, root là router PIM-SM thường được đặt ở trung tâm của mạng. Router làm gốc này gọi là Rendezvous Point (RP). Các router có thể nhận biết được RP bằng 3 cách:
+ Địa chỉ RP có thể được cấu hình tĩnh trên từng router: kiểm soát được mạng nhưng chi phí quản trị cao.
+ Bầu chọn RP có thể dùng giao thức bootstrap.
+ Dùng cơ chế Auto-RP của Cisco: phù hợp hệ thống mạng nhỏ.
Hoạt động của giao thức PIM sparse mode
PIM-SM hoạt động với một chiến lược khác hẳn với PIM-DM mặc dù cơ chế của giao thức không hoàn toàn đối lập. PIM-SM giả sử rằng không có máy nào muốn nhận lưu lượng multicast cho đến khi nào các máy chủ động hỏi. Kết quả là, cho đến khi nào trong một subnet có một máy yêu cầu nhận multicast thì multicast mới được phân phối vào subnet đó. Với PIM-SM, các router downstream phải yêu cầu nhận multicast dùng thông điệp PIM Join. Khi các router nhận được các thông điệp này, các router bên dưới phải định kỳ gửi thông điệp Join lên router upstream. Nếu khác đi, router upstream sẽ không đưa lưu lượng xuống, đặt kết nối vào trong trạng thái prune. Tiến trình này thì ngược lại với tiến trình được dùng trong PIM-DM, trong đó mặc định là phát tán lưu lượng multicast với các router downstream cần phải liên tục gửi thông điệp Prune hay thông điệp làm mới trạng thái State refresh để giữ cho một kết nối là trong trạng thái prune. PIM-SM phù hợp khi chỉ có những tỉ lệ nhỏ các phân đoạn mạng nhận lưu lượng multicast.
Các nguồn gửi gói tin đến điểm RP
PIM-SM dùng quá trình gồm hai bước để ban đầu phân phối gói tin từ một nguồn đặc biệt đến các máy muốn nhận gói tin. Sau đó tiến trình sẽ cải tiến trên các bước ban đầu này. Các bước để truyền dữ liệu với PIM-SM như sau:
1. Máy nguồn gửi dữ liệu đến một router gọi là RP
2. RP sẽ gửi gói tin multicast đến tất cả các router/máy đã đăng ký tham gia nhận gói tin cho nhóm đó. Tiến trình này dùng một cây dùng chung. Ngoài hai bước ban đầu này, các router với các máy cục bộ có thể gửi thông điệp IGMP Join cho một nhóm, tham gia vào cấu trúc cây theo từng nguồn.
Đầu tiên, router nằm trong subnet với máy nguồn phải đăng ký với RP. Router RP chấp nhận đăng ký chỉ nếu RP biết bất kỳ router nào hay máy cần nhận một bản sao của các gói multicast này. Hình dưới đây mô tả một tiến trình đăng ký trong đó RP biết rằng không có máy nào muốn nhận lưu lượng gửi về nhóm 228.8.8.8, bất chấp nguồn nào đang gửi. Ví dụ trong cấu hình này là đơn giản, với tất cả các router được cấu hình với địa chỉ toàn cục ip multicast-routing và các cổng dùng lệnh ip pim sparse-mode trên tất cả các cổng. Tất cả các router phải cấu hình tĩnh R3 như là RP bằng cách dùng câu lệnh ở chế độ toàn cục ip pim rp-address 10.1.10.3. Thông thường, một địa chỉ cổng loopback được dùng như địa chỉ RP.
Địa chỉ loopback 10.1.10.3/32 của R3 được quảng bá trong giao thức định tuyến unicast sao cho tất cả các router phải biết làm thế nào để đến được RP.
Ba bước dưới đây mô tả một chuỗi các sự kiện cho tiến trình máy nguồn đăng ký khi RP chưa nhận được một yêu cầu cho lưu lượng multicast từ bất kỳ router PIM-SM nào bởi vì không có máy nào tham gia vào nhóm.
1. Máy S1 bắt đầu gửi dữ liệu về 228.8.8.8 và R1 nhận các gói này vì nó kết nối vào cùng LAN.
2. R1 phản ứng bằng cách gửi thông điệp đăng ký dạng unicast về RP. Các thông điệp này là unicast về địa chỉ RP, 10.1.10.3.
3. R3 gửi thông điệp Register-Stop ngược về R1 bởi vì R3 biết rằng nó không có bất kỳ nhu cầu nào để gửi gói tin về 228.8.8.8. Trong ví dụ này, router gần nguồn (R1) đang cố gắng đăng ký với RP nhưng RP báo cho R1 đừng gửi thông tin nữa vì không có ai muốn nhận các thông điệp multcast. R1 không có gửi bất kỳ thông điệp multicast nào ở thời điểm này. Tuy nhiên, thông điệp PIM register sẽ đóng gói gói tin multicast đầu tiên. Gói tin đã đóng gói sau đó sẽ được đẩy đi bởi RP nếu có bất kỳ máy nào muốn nhận lưu lượng đó. Máy nguồn có thể tiếp tục gửi lưu lượng multicast, vì vậy R1 cần phải tiếp tục đăng ký với RP trong trường hợp có vài máy muốn nhận gói. Vì vậy khi R1 nhận thông điệp Register-Stop, nó khởi tạo một thông điệp Register-Suppression có thời lượng một phút. Năm giây trước khi khoảng thời gian này hết, R1 gửi một thông điệp đăng ký khác với giá trị cờ Null-register mà không gửi bất kỳ gói tin multicast nào. Kết quả của thông điệp này là một trong hai việc sau sẽ xảy ra:
- Nếu router RP vẫn biết không có máy nào muốn nghe các gói multicast, nó sẽ gửi thông điệp Register-Stop đến R1, R1 sẽ tái khởi động thông số Register-Suppression timer.
- Nếu RP biết có ít nhất một máy/host cần các gói multicast này, RP sẽ không trả lời thông điệp đăng ký này. Kết quả là R1 khi hết giờ, sẽ gửi các gói multicast đến R3 (RP) đóng gói trong các thông điệp PIM Register.
Tham gia vào cây dùng chung
Trong phần này sẽ giải thích khái niệm cây dùng chung (shared tree) cho một nhóm multicast, còn gọi là root-path-tree (RPT). Như đã đề cập trước đây, PIM-SM sẽ làm cho lưu lượng multicast phân phối theo hai bước. Đầu tiên, các gói tin được gửi từ nguồn đến RP, và sau đó RP sẽ phân phối gói tin đến các phân đoạn mạng có các máy cần bản sao của các lưu lượng multicast này. PIM-SM dùng cấu trúc cây dùng chung trong bước 2 của tiến trình trên. Cây RPT, vớI router RP là gốc sẽ định nghĩa những kết nối nào các lưu lượng multicast nên được gửi để đến tất cả các router yêu cầu. Một cây như vậy tồn tại cho tất cả các nhóm multicast đang tồn tại trong mạng. Vì vậy khi một gói tin multiast được gửi bởi mỗi nguồn được đưa tớI RP, RP dùng cây RPT cho nhóm multicast để xác định nên chuyển gói tin về đâu. PIM-SM tạo ra cây RPT bằng cách gửi ra thông điệp PIM Join về RP. Trong chế độ PIM-SM, các lưu lượng multicast được gửi chỉ đến router có yêu cầu. Router PIM-SM yêu cầu lưu lượng multicast thông qua việc tham gia RPT bằng cách gửi ra thông điệp Join về RP. Các router PIM-SM chọn lựa việc gửi thông điệp Join trong hai trường hợp:
- Khi một router PIM-SM nhận thông điệp PIM Join trên bất kỳ cổng nào khác với cổng được dùng để định tuyến gói tin về RP.
- Khi một router PIM-SM nhận thông điệp IGMP report từ một máy trên một mạng kết nối trực tiếp.
Hình dưới đây mô tả một ví dụ của tiến trình tham gia PIM-SM của máy H1 tham gia vào nhóm 228.8.8.8. Các router phản ứng với thông điệp IGMP Join bằng cách gửi thông điệp Join về RP, trở thành một phần của cây (*,228.8.8.8).
Cây dùng chung (*,288.8.8.8) được tạo ra theo các bước sau:
1.H1 gửi thông điệp IGMP Join cho nhóm 228.8.8.8.
2.R4 nhận ra bây giờ cần phải yêu cầu RP gửi gói tin về 228.8.8.8 vì vậy R4 gửi ra một thông điệp PIM Join về RP cho cây dùng chung của nhóm 228.8.8.8. R4 cũng đặt các cổng E0 của nó vào trạng thái forwarding cho nhóm 228.8.8.8.
3.R4 gửi thông điệp Join về RP.
4. R5 nhận thông điệp Join trên cổng S1 của nó, vì vậy R5 đặt cổng S1 trong trạng thái forwarding cho cây dùng chung (*,228.8.8.8). R5 cũng biết nó cần chuyển thông điệp Join về RP.
5. R5 gửi thông điệp Join về RP.
6. R3, RP, đặt cổng S0 của nó vào trạng thái forwarding trong cây (*,228.8.8.8).
Khi kết thúc tiến trình này, RP biết rằng có ít nhất một máy muốn nhận gói tin được gửi về 229.8.8.8. Cây RPT cho nhóm 228.8.8.8 được hình thành với cổng R3 s0, R5 S1 và R4 E0. Chú ý là cú pháp (*,G) tượng trưng một cây RPT. Ký hiệu * tượng trưng cho “bất kỳ nguồn nào”, bởi vì các router PIM-SM dùng cây dùng chung này bất chấp nguồn của các gói tin. Ví dụ một gói tin được gửi từ bất kỳ địa chỉ nguồn nào, đến RP và đi về nhóm 228.8.8.8 sẽ làm cho RP dùng địa chỉ (*,228.8.8.8) trong bảng định tuyến multicast của nó, bởi vì các hàng này là thành phần của cây RPT cho nhóm 228.8.8.8.
Cây từ điểm RP đến các thành viên thật ra là một cây con của cây từ nguồn đến các thành viên. Nếu một router ở bất kỳ đâu trong mạng có thể đăng ký với RP, cấu trúc cây này sẽ hoàn tất. Chế độ spare-mode còn được gọi là Shared tree. Các dòng multicast được mô tả như (*,G) bởi vì cây luôn cho phép bất cứ nguồn nào gửi đến một nhóm. Ký hiệu (*,G) có ý nghĩa là bất kỳ source nào cũng có thể gửI về nhóm G. Khi một host tham gia vào một nhóm multicast dùng IGMP, router cục bộ sẽ chuyển các thông điệp Membership report về gốc của cây multicast. Mỗi router dọc theo đường đi sẽ thêm nhánh đó vào cây dùng chung shared-tree. Quá trình loại bỏ nhanh chỉ thực hiện khi một thành viên của nhóm bị xóa ra khỏi một nhóm. Quá trình này được hiển thị ở hình dưới đây:
Chú ý là quá trình này chỉ bao gồm 1 bước. Các router không tham gia vào nhóm sẽ không bị loại bỏ vì nó không bao giờ là một thành phần của cây. Khi shared tree đã được thiết lập, định kỳ router sẽ gửi các thông điệp join/prune đến các upstream routers như cơ chế keepalive. Để cấu hình PIM Sparse Mode trên một cổng, dùng lệnh sau:
Switch(config-if)# ip pim sparse-mode
+ Đặng Quang Minh
PIM Sparse Mode (PIM-SM)
Giao thức định tuyến multicast chế độ dense là hữu ích khi các ứng dụng multicast là dày đặc và bạn cần phân phối traffic đến hầu như tất cả các mạng. Tuy nhiên, nếu các người dùng chỉ ở vài mạng con, giao thức định tuyến chế độ dense sẽ vẫn phát tán lưu lượng trên toàn bộ liên mạng, lãng phí băng thông và tài nguyên. Trong những trường hợp này, định tuyến theo kiểu sparse, chẳng hạn PIM-SM có thể được dùng để giảm lãng phí tài nguyên mạng. Sự khác nhau cơ bản giữa chế độ dense và chế độ sparse liên quan đến trạng thái mặc định của nó. Mặc định, các giao thức chế độ dense tiếp tục truyền các traffic của nhóm trừ phi một router bên dướI chỉ ra rằng nó không muốn nhận traffic đó. Các giao thức chế độ sparse không truyền lưu lượng của nhóm tới bất kỳ router nào trừ phi nó nhận được một thông điệp yêu cầu các bản sao của các gói tin được gửi tới một nhóm multicast đặc biệt. Một router láng giềng yêu cầu nhận các gói chỉ nhằm một trong hai mục đích:
- Router đã nhận được một yêu cầu nhận gói tin từ một vài router láng giếng.
- Một host trên một phân đoạn mạng đã gửi thông điệp IGMP Join cho nhóm đó.
Hình dưới đây sẽ mô tả điều gì sẽ xảy ra với PIM-SM trước khi một host có thể nhận gói tin được gửi từ S1 đến địa chỉ nhóm 226.1.1.1. Hoạt động của PIM sparsemode bắt đầu khi gói tin được đẩy về một router đặc biệt gọi là rendezvous point (RP). Khi lưu lượng của một nhóm đến RP, không giống như trong chế độ dense, router RP không có tự động đẩy tiếp lưu lượng về bất kỳ router nào. Lưu lượng này phải được yêu cầu bởi một router.
PIM-SM được cấu hình trên tất cả các router. R1 được chọn lựa như là RP và trong tất cả ba router, địa chỉ IP của 172.16.1.1 của R1 được cấu hình tĩnh như là địa chỉ RP. Thường thì địa chỉ của cổng loopback được dùng như là địa chỉ RP và địa chỉ này được quảng bá trong bảng định tuyến unicast sao cho tất cả các router biết cách làm thế nàp để định vị router RP. Ở thời điểm này, R1 là RP có thể nhận lưu lượng đi về nhóm 226.1.1.1 nhưng router R1 sẽ không truyền lưu lượng này đi.
Các bước sau đây sẽ diễn ra:
1. Máy S1 gửi một gói tin multicast đến RP, địa chỉ đích là 226.1.1.1.
2. R1 chọn bỏ qua gói tin, bởi vì không có router hay máy nào trong phân đoạn mạng báo cho RP (R1) rằng nó muốn nhận lưu lượng multicast.
3. Máy H2 gửi thông điệp IGMP Join đến nhóm 226.1.1.1.
4. R3 gửi thông điệp PIM Join đến RP (R1) về địa chỉ 226.1.1.1.
5. Hoạt động của R1 giờ bị thay đổi, các gói tin được gửi về 226.1.1.1 sẽ được đẩy ra khỏi cổng S0/1 đến S3.
6. Host S1 gửi gói tin multicast về địa chỉ 226.1.1.1 và R1 gửi ra khỏi cổng S0/1 về R3.
Trong một hệ thống mạng PIM-SM, tất cả các router phải học địa chỉ IP của RP. Giải pháp thứ nhất là cấu hình tĩnh địa chỉ IP trong tất cả các router. Cách thứ hai là cho phép các router tìm ra các địa chỉ IP của RP. Trong hình trên, R2 chưa nhận bất kỳ một thông điệp tham gia IGMP Join trên bất kỳ cổng LAN nào vì vậy nó không chuyển bất kỳ yêu cầu nào tới RP để truyền trên cổng LAN vì vậy nó không gửi bất kỳ yêu cầu nào đến RP để RP truyền lưu lượng multicast. Kết quả là, R1 không làm lãng phí băng thông trên kết nối từ R1 đến R2. R3 cũng sẽ không truyền lưu lượng multicast đến R2. R3 đầu tiên sẽ kiểm tra RPF dùng địa chỉ IP của RP chứ không phải địa chỉ nguồn của gói tin, bởi vì nó đang nhận lưu lượng nhóm từ RP. Nếu phép kiểm tra RPF là thành công, R3 sẽ truyền traffic trên cổng LAN.
Sự tương tự giữa PIM-DM và PIM-SM
PIM-SM có nhiều điểm tương tự như PIM-DM. Cũng giống như PIM-DM, PIM-SM dùng bảng định tuyến unicast để kiểm tra ROF, bất chấp giao thức định tuyến unicast được dùng. Thêm vào đó, PIM-SM cũng dùng cơ chế sau giống như PIM-DM:
Có vài điểm giống nhau giữa PIM-SM và PIM-DM:
+ Cả hai đều dùng cơ chế hello để tìm ra láng giềng.
+ Tính toán và kiểm tra RPF khi bảng định tuyến unicast routing thay đổi.
+ Bầu chọn designated router trên môi trường multi-access. Router DR thực hiện tất cả các tiến trình IGMP khi IGMPv1 được dùng.
+ Sử dụng cơ chế prune trên môi trường multiaccess.
+ Sử dụng cơ chế Assert để bầu ra router forwarder trên môi trường multiaccess. Router thắng quá trình bầu chọn Assert sẽ chịu trách nhiệm đẩy lưu lượng vào trong subnet đó.
Tuy nhiên, PIM-SM dùng cơ chế explict join (join tường minh). PIM Sparse Mode (PIM-SM) dùng một giải pháp khác. Cây multicast không mở rộng đến router cho đến khi nào một host đã tham gia vào một nhóm. Cây multicast được xây dựng bằng các thành viên ở các node lá và mở rộng ngược về root. Cây được xây dựng từ dưới lên. SM cũng hoạt động dựa trên ý tưởng cấu trúc shared-tree, trong đó gốc của cây không nhất thiết là nguồn của multicast. Thay vào đó, root là router PIM-SM thường được đặt ở trung tâm của mạng. Router làm gốc này gọi là Rendezvous Point (RP). Các router có thể nhận biết được RP bằng 3 cách:
+ Địa chỉ RP có thể được cấu hình tĩnh trên từng router: kiểm soát được mạng nhưng chi phí quản trị cao.
+ Bầu chọn RP có thể dùng giao thức bootstrap.
+ Dùng cơ chế Auto-RP của Cisco: phù hợp hệ thống mạng nhỏ.
Hoạt động của giao thức PIM sparse mode
PIM-SM hoạt động với một chiến lược khác hẳn với PIM-DM mặc dù cơ chế của giao thức không hoàn toàn đối lập. PIM-SM giả sử rằng không có máy nào muốn nhận lưu lượng multicast cho đến khi nào các máy chủ động hỏi. Kết quả là, cho đến khi nào trong một subnet có một máy yêu cầu nhận multicast thì multicast mới được phân phối vào subnet đó. Với PIM-SM, các router downstream phải yêu cầu nhận multicast dùng thông điệp PIM Join. Khi các router nhận được các thông điệp này, các router bên dưới phải định kỳ gửi thông điệp Join lên router upstream. Nếu khác đi, router upstream sẽ không đưa lưu lượng xuống, đặt kết nối vào trong trạng thái prune. Tiến trình này thì ngược lại với tiến trình được dùng trong PIM-DM, trong đó mặc định là phát tán lưu lượng multicast với các router downstream cần phải liên tục gửi thông điệp Prune hay thông điệp làm mới trạng thái State refresh để giữ cho một kết nối là trong trạng thái prune. PIM-SM phù hợp khi chỉ có những tỉ lệ nhỏ các phân đoạn mạng nhận lưu lượng multicast.
Các nguồn gửi gói tin đến điểm RP
PIM-SM dùng quá trình gồm hai bước để ban đầu phân phối gói tin từ một nguồn đặc biệt đến các máy muốn nhận gói tin. Sau đó tiến trình sẽ cải tiến trên các bước ban đầu này. Các bước để truyền dữ liệu với PIM-SM như sau:
1. Máy nguồn gửi dữ liệu đến một router gọi là RP
2. RP sẽ gửi gói tin multicast đến tất cả các router/máy đã đăng ký tham gia nhận gói tin cho nhóm đó. Tiến trình này dùng một cây dùng chung. Ngoài hai bước ban đầu này, các router với các máy cục bộ có thể gửi thông điệp IGMP Join cho một nhóm, tham gia vào cấu trúc cây theo từng nguồn.
Đầu tiên, router nằm trong subnet với máy nguồn phải đăng ký với RP. Router RP chấp nhận đăng ký chỉ nếu RP biết bất kỳ router nào hay máy cần nhận một bản sao của các gói multicast này. Hình dưới đây mô tả một tiến trình đăng ký trong đó RP biết rằng không có máy nào muốn nhận lưu lượng gửi về nhóm 228.8.8.8, bất chấp nguồn nào đang gửi. Ví dụ trong cấu hình này là đơn giản, với tất cả các router được cấu hình với địa chỉ toàn cục ip multicast-routing và các cổng dùng lệnh ip pim sparse-mode trên tất cả các cổng. Tất cả các router phải cấu hình tĩnh R3 như là RP bằng cách dùng câu lệnh ở chế độ toàn cục ip pim rp-address 10.1.10.3. Thông thường, một địa chỉ cổng loopback được dùng như địa chỉ RP.
Địa chỉ loopback 10.1.10.3/32 của R3 được quảng bá trong giao thức định tuyến unicast sao cho tất cả các router phải biết làm thế nào để đến được RP.
Ba bước dưới đây mô tả một chuỗi các sự kiện cho tiến trình máy nguồn đăng ký khi RP chưa nhận được một yêu cầu cho lưu lượng multicast từ bất kỳ router PIM-SM nào bởi vì không có máy nào tham gia vào nhóm.
1. Máy S1 bắt đầu gửi dữ liệu về 228.8.8.8 và R1 nhận các gói này vì nó kết nối vào cùng LAN.
2. R1 phản ứng bằng cách gửi thông điệp đăng ký dạng unicast về RP. Các thông điệp này là unicast về địa chỉ RP, 10.1.10.3.
3. R3 gửi thông điệp Register-Stop ngược về R1 bởi vì R3 biết rằng nó không có bất kỳ nhu cầu nào để gửi gói tin về 228.8.8.8. Trong ví dụ này, router gần nguồn (R1) đang cố gắng đăng ký với RP nhưng RP báo cho R1 đừng gửi thông tin nữa vì không có ai muốn nhận các thông điệp multcast. R1 không có gửi bất kỳ thông điệp multicast nào ở thời điểm này. Tuy nhiên, thông điệp PIM register sẽ đóng gói gói tin multicast đầu tiên. Gói tin đã đóng gói sau đó sẽ được đẩy đi bởi RP nếu có bất kỳ máy nào muốn nhận lưu lượng đó. Máy nguồn có thể tiếp tục gửi lưu lượng multicast, vì vậy R1 cần phải tiếp tục đăng ký với RP trong trường hợp có vài máy muốn nhận gói. Vì vậy khi R1 nhận thông điệp Register-Stop, nó khởi tạo một thông điệp Register-Suppression có thời lượng một phút. Năm giây trước khi khoảng thời gian này hết, R1 gửi một thông điệp đăng ký khác với giá trị cờ Null-register mà không gửi bất kỳ gói tin multicast nào. Kết quả của thông điệp này là một trong hai việc sau sẽ xảy ra:
- Nếu router RP vẫn biết không có máy nào muốn nghe các gói multicast, nó sẽ gửi thông điệp Register-Stop đến R1, R1 sẽ tái khởi động thông số Register-Suppression timer.
- Nếu RP biết có ít nhất một máy/host cần các gói multicast này, RP sẽ không trả lời thông điệp đăng ký này. Kết quả là R1 khi hết giờ, sẽ gửi các gói multicast đến R3 (RP) đóng gói trong các thông điệp PIM Register.
Tham gia vào cây dùng chung
Trong phần này sẽ giải thích khái niệm cây dùng chung (shared tree) cho một nhóm multicast, còn gọi là root-path-tree (RPT). Như đã đề cập trước đây, PIM-SM sẽ làm cho lưu lượng multicast phân phối theo hai bước. Đầu tiên, các gói tin được gửi từ nguồn đến RP, và sau đó RP sẽ phân phối gói tin đến các phân đoạn mạng có các máy cần bản sao của các lưu lượng multicast này. PIM-SM dùng cấu trúc cây dùng chung trong bước 2 của tiến trình trên. Cây RPT, vớI router RP là gốc sẽ định nghĩa những kết nối nào các lưu lượng multicast nên được gửi để đến tất cả các router yêu cầu. Một cây như vậy tồn tại cho tất cả các nhóm multicast đang tồn tại trong mạng. Vì vậy khi một gói tin multiast được gửi bởi mỗi nguồn được đưa tớI RP, RP dùng cây RPT cho nhóm multicast để xác định nên chuyển gói tin về đâu. PIM-SM tạo ra cây RPT bằng cách gửi ra thông điệp PIM Join về RP. Trong chế độ PIM-SM, các lưu lượng multicast được gửi chỉ đến router có yêu cầu. Router PIM-SM yêu cầu lưu lượng multicast thông qua việc tham gia RPT bằng cách gửi ra thông điệp Join về RP. Các router PIM-SM chọn lựa việc gửi thông điệp Join trong hai trường hợp:
- Khi một router PIM-SM nhận thông điệp PIM Join trên bất kỳ cổng nào khác với cổng được dùng để định tuyến gói tin về RP.
- Khi một router PIM-SM nhận thông điệp IGMP report từ một máy trên một mạng kết nối trực tiếp.
Hình dưới đây mô tả một ví dụ của tiến trình tham gia PIM-SM của máy H1 tham gia vào nhóm 228.8.8.8. Các router phản ứng với thông điệp IGMP Join bằng cách gửi thông điệp Join về RP, trở thành một phần của cây (*,228.8.8.8).
Cây dùng chung (*,288.8.8.8) được tạo ra theo các bước sau:
1.H1 gửi thông điệp IGMP Join cho nhóm 228.8.8.8.
2.R4 nhận ra bây giờ cần phải yêu cầu RP gửi gói tin về 228.8.8.8 vì vậy R4 gửi ra một thông điệp PIM Join về RP cho cây dùng chung của nhóm 228.8.8.8. R4 cũng đặt các cổng E0 của nó vào trạng thái forwarding cho nhóm 228.8.8.8.
3.R4 gửi thông điệp Join về RP.
4. R5 nhận thông điệp Join trên cổng S1 của nó, vì vậy R5 đặt cổng S1 trong trạng thái forwarding cho cây dùng chung (*,228.8.8.8). R5 cũng biết nó cần chuyển thông điệp Join về RP.
5. R5 gửi thông điệp Join về RP.
6. R3, RP, đặt cổng S0 của nó vào trạng thái forwarding trong cây (*,228.8.8.8).
Khi kết thúc tiến trình này, RP biết rằng có ít nhất một máy muốn nhận gói tin được gửi về 229.8.8.8. Cây RPT cho nhóm 228.8.8.8 được hình thành với cổng R3 s0, R5 S1 và R4 E0. Chú ý là cú pháp (*,G) tượng trưng một cây RPT. Ký hiệu * tượng trưng cho “bất kỳ nguồn nào”, bởi vì các router PIM-SM dùng cây dùng chung này bất chấp nguồn của các gói tin. Ví dụ một gói tin được gửi từ bất kỳ địa chỉ nguồn nào, đến RP và đi về nhóm 228.8.8.8 sẽ làm cho RP dùng địa chỉ (*,228.8.8.8) trong bảng định tuyến multicast của nó, bởi vì các hàng này là thành phần của cây RPT cho nhóm 228.8.8.8.
Cây từ điểm RP đến các thành viên thật ra là một cây con của cây từ nguồn đến các thành viên. Nếu một router ở bất kỳ đâu trong mạng có thể đăng ký với RP, cấu trúc cây này sẽ hoàn tất. Chế độ spare-mode còn được gọi là Shared tree. Các dòng multicast được mô tả như (*,G) bởi vì cây luôn cho phép bất cứ nguồn nào gửi đến một nhóm. Ký hiệu (*,G) có ý nghĩa là bất kỳ source nào cũng có thể gửI về nhóm G. Khi một host tham gia vào một nhóm multicast dùng IGMP, router cục bộ sẽ chuyển các thông điệp Membership report về gốc của cây multicast. Mỗi router dọc theo đường đi sẽ thêm nhánh đó vào cây dùng chung shared-tree. Quá trình loại bỏ nhanh chỉ thực hiện khi một thành viên của nhóm bị xóa ra khỏi một nhóm. Quá trình này được hiển thị ở hình dưới đây:
Chú ý là quá trình này chỉ bao gồm 1 bước. Các router không tham gia vào nhóm sẽ không bị loại bỏ vì nó không bao giờ là một thành phần của cây. Khi shared tree đã được thiết lập, định kỳ router sẽ gửi các thông điệp join/prune đến các upstream routers như cơ chế keepalive. Để cấu hình PIM Sparse Mode trên một cổng, dùng lệnh sau:
Switch(config-if)# ip pim sparse-mode
Comment