Tìm hiểu hoạt động của giao thức PIM Sparse Mode (PIM-SM) trong Switch Cisco

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 đó.

Nội dung

  • Hoạt động của giao thức PIM Sparse Mode (PIM-SM)

  • Tham gia vào cây dùng chung (Join group)

  • Các nguồn gửi gói tin đến RP

  • Hoạt động cập nhật trạng thái bằng thông điệp Join

  • Chuyển đổi cây đường đi ngắn nhất


Hoạt động của giao thức PIM sparse mode      
        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 theo thứ tự:
        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. 

       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.

Tham gia vào cây dùng chung (Join group)

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 multicast đượ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

Các nguồn gửi gói tin đến 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.


Kế tiếp, ta sẽ khảo sát điều gì sẽ xảy ra khi một máy muốn nhận các gói tin và các router phản ứng để tạo ra các cây RPT cho nhóm đó. Phần này cũng sẽ mô tả làm thế nào một router RP phản ứng khi nhận được thông điệp PIM register khi RP biết có vài máy muốn nhận lưu lượng multicast. Khi RP nhận thông điệp đăng ký cho một nhóm đang tồn tài, nghĩa là RP tin rằng nó nên truyền gói tin đến nhóm đó, RP sẽ không gửI thông điệp Register-Stop. Thay vào đó, router sẽ phản ứng đến thông điệp đăng ký bằng cách mở gói tin multicast và truyền đi. Trạng thái của RP trong việc phản ứng lạI thông điệp đăng ký chỉ ra một chức năng chủ yếu thứ hai của thông điệp Register.

Hai chức năng chính đó là:
        - Cho phép một router thông báo cho RP rằng nó có địa chỉ nguồn nội bộ cho một nhóm multicast.
        - Cho phép một router truyền lưu lượng multicast đến RP, đóng gói bên trong một gói unicast cho đến khi nào quá trình đăng ký là hoàn tất.

Để hiển thị quá trình hoàn tất, ta quan sát lại tiến trình ở hình trên. Máy H1 đã tham gia vào nhóm 228.8.8.8. Các bước sau đâu sẽ chỉ ra trong hình dưới đây. Lưu ý là bước 3 tượng trưng cho việc truyền lưu lượng multicast được đóng gói trong thông điệp Register ở bước 2.

 

 

1. máy S1 gửi lưu lượng multicast về nhóm 228.8.8.8
2. Router R1 đóng gói dữ liệu multicast, gửi nó bên trong thông điệp đăng ký gửi về R3, RP.
3. R3, biết rằng nó cần truyền gói multicast, sẽ tháo gói và gửi nó về H1.

Hành động này cho phép R1 và R3 phân phối dữ liệu multicast trong khi quá trình đăng ký là hoàn thành. R5 truyền lưu lượng nhóm từ R4 và R4 truyền lưu lượng đó trên LAN.

Tiến trình này có vẻ như gặpnhiều rắc rối, nhưng cuối của tiến trình, các gói multicast sẽ được phân phối về đúng vị trí chính xác. Tiến trình này sử dụng cây đường đi ngắn nhất từ nguồn về RP và cây dùng chung shared tree (*,288.8.8.8) từ RP đến mạng cần nhận multicast. Cũng lưu ý rằng giao thức PIM chỉ để router gấn nguồn đóng gói gói tin multicast bên trong thông điệp unicast Register. Tuy nhiên, nó là không hiệu quả khi để R1 đóng gói mọi gói tin multicast,làm cho R3 phải tháo ra mọi gói tin và sau đó để R3 truyền traffic. Vì vậy, PIM-SM có RP, là R3 trong trường hợp này, tham gia vào cây của nhóm (S,G). 

Hoạt động cập nhật trạng thái bằng thông điệp Join

Để duy trì trạng thái của các cổng, PIM-SM phải gửi ra các thông điệp PIM Join định kỳ. Nếu một router không gửi thông điệp Join định kỳ, PIM-SM đưa các cổng về trạng thái loại bỏ pruned. PIM-SM chọn việc duy trì trạng thái forwarding trên các kết nối dựa trên hai tiêu chuẩn chung:

        - Một router downstream tiếp tục gửi thông điệp PIM Join cho nhóm.
        - Một host kết nối cục bộ vẫn trả lời đến thông điệp truy vấn IGMP bằng thông điệp IGMP Report.

Hình dưới đây mô tả một ví dụ trong đó R5 duy trì trạng thái forwarding của các kết nối về R3 dựa trên cả hai nguyên nhân này. H2 cũng tham gia cây dùng chung 228.8.8.8. H1 đã tham gia vào trước. 

 

Chuyển đổi cây đường đi ngắn nhất

 

Các PIM-SM có thể tiếp tục truyền gói tin thông qua PIM-SM thông qua tiến trình hai bước trong đó nguồn gửi gói tin đến RP và RP gửi gói tin đến tất cả các router khác dùng RPT. Tuy nhiên khía cạnh thú vị nhất của hoạt động của PIM-SM là mỗi router PIM-SM có thể xây dựng cây SPT giữa nó và nguồn của nhóm multicast lựa ra đường đi hiệu quả nhất từ nguồn đến router.

Thiết kế của PIM-SM cho phép RP xây dựng một cây đường đi ngắn nhất giữa nó và router đang gắn trực tiếp với nguồn (còn được gọi là DR nguồn) để “kéo” lưu lượng nhóm. Tương tự, PIM-SM cho phép các router PIM-SM khác xây dựng một cây SPT giữa router và DR nguồn. Đặc điểm này giúp một router PIM-SM tránh việc dùng các đường đi kém hiệu quả trên cây SPT. Ngoài ra, khi một router bắt đầu nhận lưu lượng nhóm trên cây SPT, nó có thể gửi ra thông điệp Prune đến các router upstream của cây dùng chung để dừng việc truyền lưu lượng cho nhóm.

Vấn đề đặt ra là, khi nào một router nên chuyển từ RPT sang SPT? RFC 2362 của PIM-SM chỉ ra rằng “chính sách được khuyến cáo là bắt đầu chuyển sang cây SP sau khi nhận một số đáng kể các gói dữ liệu trong một khoảng thời gian xác định từ một nguồn xác định”. Số lượng như thế nào được xem là đáng kể? RFC không chỉ ra. Tuy nhiên, với Cisco router, quá trình chuyển đổi từ RPT sang dạng cây đường đi ngắn nhất theo nguồn sau khi nó nhận được gói tin đầu tiên từ cây dùng chung. Bạn có thể thay đổi trạng thái này bằng cách cấu hình lệnh toàn cục pim sptthreshold rate trên bất kỳ router nào của bất kỳ nhóm nào.

Khi lưu lượng vượt quá tốc độ chỉ ra, router sẽ tham gia vào cây SPT. Lệnh này chỉ ảnh hưởng trên những router được cấu hình. Nếu một router chuyển sang SPT, tại sao tham gia vào RPT trước? Trong PIM-SM, một router không biết địa chỉ của nguồn cho đến khi nó nhận được ít nhất một gói tin của nhóm từ nguồn. Sau khi nó nhận một gói tin từ RPT, nó có thể học địa chỉ IP của nguồn và bắt đầu chuyển sang SPT cho nhóm (S,G). Với hoạt động mặc định của Cisco IOS, khi các gói multicast bắt đầu đến trên cổng S0 của R4 thông qua cây dùng chung, R4 bắt đầu chuyển sang cây đường đi ngắn nhất cho nguồn 10.1.1.10. 

 

Ba bước đầu tiên diễn ra như sau:
        1. Nguồn (S1,10.1.1.10) gửi gói tin multicast đến router đầu tiên R1.
        2. R1 đẩy gói tin về RP (R3) 3. RP đẩy gói tin về R4 thông qua cây dùng chung. Ở bước 3, R4 học được rằng địa chỉ nguồn của nhóm multicast 228.8.8.8 là 10.1.1.10. Vì vậy bên cạnh việc đẩy gói tin ở bước
        3, R4 có thể dùng thông tin này để tham gia vào cây SPT cho nhóm 228.8.8.8 từ nguồn 10.1.1.10.
        4. R4 tham khảo bảng định tuyến unicast, tìm ra địa chỉ nexthop và cổng ra được dùng để đến địa chỉ nguồn 10.1.1.10 và gửI thông điệp PIM-SM Join ra cổng đó (S1) về R1. Thông điệp PIM-SM Join này đặc biệt chỉ cho nhóm (10.1.1.10,228.8.8.8). Thông điệp Join đi qua từng trạm cho đến khi nào nó đến được nguồn DR.
        5. Kết quả các phép Join, R1 sẽ đặt cổng S1 của nó trong trạng thái forwarding (10.1.1.10,228,8,8,8). Vì vậy R1 bắt đầu truyền multicast từ nguồn 10.1.1.10 đến 228.8.8.8 ra khỏi cổng S1.

 

Post a Comment

Mới hơn Cũ hơn