Tác giả:
+ Đặng Quang Minh
Trạng thái hoạt động Steady-state và thông điệp làm mới trạng thái
Như đã mô tả trước đây, với PIM-DM một cổng luôn trong trạng thái prune trong ba phút. Các thông điệp prune liệt kê một nguồn và nhóm. Bất cứ khi nào một router nhận được thông điệp prune, nó sẽ tìm một hàng (S,G) SPT trong bảng định tuyến multicast và đánh dấu các cổng trong đó thông điệp Prune là nhận được. Tuy nhiên, router cũng thiết lập giá trị prune timer, mặc định là 3 phút, sao cho sau ba phút, cổng này được đặt trong trạng thái forwarding một lần nữa. Vì vậy, đều gì xảy ra với PIM-DM và các kết nối bị loại bỏ? Các liên kết bị loại bỏ và sau ba phút, các link này được hoạt động lại. Khi có nhiều dòng multicast, các kết nối bị loại bỏ, sau đó, các kết nối lại hoạt động sau ba phút. Và cứ thế tiếp diễn.
Vì vậy, khi Cisco tạo ra cơ chế PIMv2 (RFC3973), nó bao gồm một đặc điểm gọi là làm mới trạng thái (state refresh). Các thông điệp làm mới trạng thái này có thể ngăn ngừa tình trạng kém hiệu quả của PIM-DM v1 trong tiến trình pruning.
Trong hình trên, kết nối giữa R1 và R2 và kết nối giữa R2 và R3 bị loại bỏ, sau ba phút, các kết nối sẽ được thêm vào cây đường đi ngắn nhất SPT do các thời gian Prune bị hết. Thông điệp làm mới trạng thái State refresh có thể được gửi trước khi khoảng thời gian prune bị hết để vẫn giữ các cổng của router trong tình trạng bị loại bỏ khỏi cây. Các bước sau đây sẽ xảy ra:
1. R3 giám sát thời gian trôi qua kể từ khi nó gửi thông điệp Prune lần cuối đến R2. Ngay trước khi thời gian Prune bị hết, R3 quyết định gửi một thông điệp làm mới trạng thái đến R2.
2. R3 gửi thông điệp làm mới trạng thái đến R2, tham chiếu đến cây SPT (10.1.1.10, 226.1.1.1)
3. R3 phản ứng bằng cách thiết lập lại thời gian prune cho những cổng trên đó nó nhận được thông điệp làm mới trạng thái.
4. Bởi vì R2 cũng đã loại bỏ chính nó bằng cách gửi thông điệp Prune đến R1, R2 cũng sẽ dùng chính thông điệp này để báo cho R1 vẫn để cổng s0/0 trong trạng thái prune.
Cho đến khi nào R3 vẫn gửi thông điệp làm mới trạng thái trước khi khoảng thời gian prune là hết trên router upstream R2, cây đừơng đi ngắn nhất SPT vẫn trong trạng thái ổn định và sẽ không bị định kỳ phát tán các gói multicast cho cây (S,G).
Thông điệp Graft
Khi các máy tham gia một nhóm, router có thể cần thay đổi trạng thái SPT hiện hành cho một nhóm (S,G). VớI PIM-DM, một giải pháo có thể là chờ cho kết nối prune hết giờ. Ví dụ, theo hình trên, R3 chỉ đơn giản ngừng gửi các thông điệp làm mới trạng thái State Refresh trong tối đa ba phút. R3 sẽ một lần nữa nhận gói tin multicast của vài nhóm (S,G). Tuy nhiên, nếu để chờ khoảng thời gian mặc định ba phút trôi qua thì không hiệu quả. Để cho phép router “unprune” một cổng của router trước đây bị loại bỏ, PIM-DM dùng thông điệp Graft. Thông điệp này được định nghĩa như sau:
Một router gửi ra một thông điệp Graft đến một router upstream, là router láng giềng đã gửi ra thông điệp loại bỏ prune. Thông điệp graft làm cho router láng giềng đưa cổng vào trạng thái forwarding cho một nhóm multicast nào đó.
Trên hình trên, ban đầu cả máy H1 và H2 không tham gia vào nhóm 226.1.1.1. Và R2 và R3 đã bị loại bỏ ra khỏI nhóm (10.1.1.10, 226.1.1.1).Cổng S0/0 của R1 đã bị loại bỏ ra khỏi (S,G) SPT, vì vậy R2 và R3 không nhận được lưu lượng multicast gửi bởi S1 về 226.1.1.1.1. Sau đó, H2 tham gia vào nhóm 226.1.1.1 một lần nữa. Nếu không có thông điệp Graft, máy H2 sẽ phải chờ một khoảng thòi gian là ba phút trước khi nó nhận được lưu lượng của nhóm. Tuy nhiên với các bước sau đây, H2 sẽ nhận gói tin chỉ trong vài phút:
1. Host H2 gửi một thông điệp IGMP Join.
2. R3 tìm cổng RPF trong bảng định tuyến multicast cho nhóm 226.1.1.1. Trong bảng đó, cổng s0/0 là cổng đi vào và các router láng giềng RPF là 10.1.3.2.
3. R3 gửi thông điệp Graft ra cổng S0/0 đến R2.
4. R2 bây giờ biết nó cần nhận lưu lượng từ 10.1.1.10 gửi đến 226.1.1.1. Tuy nhiên, hàng (S,G) của R2 cũng hiện thị cờ P, nghĩa là R2 đã tự loạI bỏ chính nó ra khỏi cây SPT. Vì vậy, R2 tìm cổng RPF của nó và các router láng giềng trong bảng (S,G), trong đó đang chỉ đến cổng S0/0 và router R1.
5. R2 gửi thông điệp Graft về cho R1.
Ở thời điểm này, R1 ngay lập tức đưa cổng S0/0 vào danh sách các cổng ra giống như R2 và bây giờ H2 bắt đầu nhận gói tin multicast. Lưu ý rằng R1 cũng gửi thông điệp Graft Ack trả lời lại R2 và R2 gửi graft ACK để trả lời về R3.
Một số vấn đề của PIM khi hoạt động trên LAN
Phần này sẽ khảo sát ba chủ đề nhỏ liên quan đến hoạt động của PIM trên LAN.
- Prune Override
- Thông điệp Assert
- Designated router.
Cả PIM-DM và PIM-SM dùng các đặc điểm này trong cùng một cách.
Prune Override
Trong cả PIM-DM và PIM-SM, tiến trình prune trên các mạng đa truy cập hoạt động khác với trong những kết nối điểm-điểm. Nguyên nhân là khi một router gửi ra một thông điệp prune trên một mạng đa truy cập, các router khác có thể không muốn kết nối bị loại bỏ bởi router upstream.
Hình trên đây mô tả vấn đề xảy ra dùng dùng PIM. Trong hình này, R1 đang truyền dữ liệu cho nhóm 239.9.9.9 trên cổng F0/0 với R2 và R3 đang nhận lưu lượng nhóm 239.9.9.9 nhận lưu lượng trên cổng E0. R2 không có thành viên của nhóm nào đang kết nối trực tiếp và vì vậy danh sách các cổng ra của nó là null. Các bước tiếp theo sau đây sẽ diễn ra khi R3 cần gửi thông điệp Prune Override.
1. R2 gửi ra thông điệp prune cho nhóm 239.9.9.9 bởi vì R2 có danh sách cổng ra là null.
2. R1 nhận ra nó nó đang có một thông điệp Prune gửi đến, biết rằng có thể có những router khác vẫn muốn nhận gói tin. Vì vậy thay vì ngay lập tức loại bỏ cổng, R1 gán một khoảng thời gian 3 giây trước khi R1 loại bỏ cổng.
3. R3 cũng nhận thông điệp prune được gửi bởi R2 bởi vì thông điệp Prune được gửi theo dạng multicast đến địa chỉ tất cả các PIM routers 224.0.0.13. R3 cũng vẫn cần nhận lưu lượng của nhóm 239.9.9.9, vì vậy R3 gửi một thông điệp tham gia Join ra cổng E0.
4. R1 nhận được thông điệp tham gia Join từ R3 trước khi xóa cổng LAN của nó ra khỏi danh sách cổng ra. Kết quả là R1 không loại bỏ cổng F0/0 của nó.
Tiến trình này gọi là Prune Override bởi vì R3 bỏ qua thông điệp loại bỏ prune được gửi bởi R2. Thông điệp prune override thật ra là một thông điệp Join được gửi bởi R3 trong trường hợp này. Thông điệp này không có gì khác với thông điệp Join bình thường. Ngay khi r1 nhận được thông điệp Join từ R3 trước khoảng thời gian 3 giây bị hết hạn, R3 tiếp tục nhận lưu lượng mà không bị ngắt quãng.
Thông điệp xác nhận (Assert Message)
Loại thông điệp cuối cùng được mô tả trong chương này là thông điệp PIM Assert. Thông điệp Assert được dùng để ngăn ngừa những nỗ lực vô ích khi có nhiều router kết nối vào cùng mạng LAN. Thay vì gửi nhiều bản sao của những gói multicast vào trong LAN, thông điệp PIM cho phép các router bắt tay thoả thuận với nhau. Router thắng sẽ có quyền chịu trách nhiệm đẩy lưu lượng multicast vào trong LAN. Hình dưới đây mô tả một ví dụ của nhu cầu chèn thông điệp Assert. R2 và R3 cả hai cùng gắn vào trong LAN, vớI H1 là thành viên tích cực của nhóm 227.7.7.7. Cả R2 và R3 cùng đang nhận lưu lượng của nhóm cho 227.7.7.7 từ nguồn 10.1.1.10.
Mục đích của thông điệp Assert là gán trách nhiệm đưa lưu lượng của nhóm cho router gần nhất với nguồn. Khi R2 và R3 nhận lưu lượng nhóm từ nguồn trên cổng S0, các router truyền trên cổng E0. Cả hai đều có cổng S0 trong danh sách các cổng đi vào và E0 trong danh sách cổng ra. Ở thời điểm này, cả R2 và R3 đều nhận gói tin multicast trên cổng E0, làm cho các router sẽ dùng thông điệp Assert để giải quyết vấn đề router nào sẽ làm router truyền lưu lượng. Tiến trình Assert chọn ra một router thắng cuộc dựa trên giao thức định tuyến và metric dùng để tìm ra tuyến đường để đến địa chỉ unicast của nguồn. Trong ví dụ này, điều này có nghĩa là R2 hay R3 sẽ thắng dựa trên những tuyến mà họ dùng để đến 10.1.1.10. R2 và R3 sẽ gửI thông điệp Assert bao gồm giá trị AD của giao thức định tuyến được dùng để đến 10.1.1.10, cũng như là metric được dùng để đến các route này. Các router trên LAN so sánh giá trị AD và metric trong thông điệp Assert. Router thắng cuộc được xác định như sau:
1. Router đang quảng bá một giá trị AD thấp nhất của giao thức định tuyến sẽ thắng.
2. Nếu là ngang bằng, router với giá trị metric thấp nhất sẽ thắng.
3. Nếu là tiếp tục ngang bằng, router có địa chỉ IP cao nhất trên LAN sẽ thắng.
+ Đặng Quang Minh
Trạng thái hoạt động Steady-state và thông điệp làm mới trạng thái
Như đã mô tả trước đây, với PIM-DM một cổng luôn trong trạng thái prune trong ba phút. Các thông điệp prune liệt kê một nguồn và nhóm. Bất cứ khi nào một router nhận được thông điệp prune, nó sẽ tìm một hàng (S,G) SPT trong bảng định tuyến multicast và đánh dấu các cổng trong đó thông điệp Prune là nhận được. Tuy nhiên, router cũng thiết lập giá trị prune timer, mặc định là 3 phút, sao cho sau ba phút, cổng này được đặt trong trạng thái forwarding một lần nữa. Vì vậy, đều gì xảy ra với PIM-DM và các kết nối bị loại bỏ? Các liên kết bị loại bỏ và sau ba phút, các link này được hoạt động lại. Khi có nhiều dòng multicast, các kết nối bị loại bỏ, sau đó, các kết nối lại hoạt động sau ba phút. Và cứ thế tiếp diễn.
Vì vậy, khi Cisco tạo ra cơ chế PIMv2 (RFC3973), nó bao gồm một đặc điểm gọi là làm mới trạng thái (state refresh). Các thông điệp làm mới trạng thái này có thể ngăn ngừa tình trạng kém hiệu quả của PIM-DM v1 trong tiến trình pruning.
Trong hình trên, kết nối giữa R1 và R2 và kết nối giữa R2 và R3 bị loại bỏ, sau ba phút, các kết nối sẽ được thêm vào cây đường đi ngắn nhất SPT do các thời gian Prune bị hết. Thông điệp làm mới trạng thái State refresh có thể được gửi trước khi khoảng thời gian prune bị hết để vẫn giữ các cổng của router trong tình trạng bị loại bỏ khỏi cây. Các bước sau đây sẽ xảy ra:
1. R3 giám sát thời gian trôi qua kể từ khi nó gửi thông điệp Prune lần cuối đến R2. Ngay trước khi thời gian Prune bị hết, R3 quyết định gửi một thông điệp làm mới trạng thái đến R2.
2. R3 gửi thông điệp làm mới trạng thái đến R2, tham chiếu đến cây SPT (10.1.1.10, 226.1.1.1)
3. R3 phản ứng bằng cách thiết lập lại thời gian prune cho những cổng trên đó nó nhận được thông điệp làm mới trạng thái.
4. Bởi vì R2 cũng đã loại bỏ chính nó bằng cách gửi thông điệp Prune đến R1, R2 cũng sẽ dùng chính thông điệp này để báo cho R1 vẫn để cổng s0/0 trong trạng thái prune.
Cho đến khi nào R3 vẫn gửi thông điệp làm mới trạng thái trước khi khoảng thời gian prune là hết trên router upstream R2, cây đừơng đi ngắn nhất SPT vẫn trong trạng thái ổn định và sẽ không bị định kỳ phát tán các gói multicast cho cây (S,G).
Thông điệp Graft
Khi các máy tham gia một nhóm, router có thể cần thay đổi trạng thái SPT hiện hành cho một nhóm (S,G). VớI PIM-DM, một giải pháo có thể là chờ cho kết nối prune hết giờ. Ví dụ, theo hình trên, R3 chỉ đơn giản ngừng gửi các thông điệp làm mới trạng thái State Refresh trong tối đa ba phút. R3 sẽ một lần nữa nhận gói tin multicast của vài nhóm (S,G). Tuy nhiên, nếu để chờ khoảng thời gian mặc định ba phút trôi qua thì không hiệu quả. Để cho phép router “unprune” một cổng của router trước đây bị loại bỏ, PIM-DM dùng thông điệp Graft. Thông điệp này được định nghĩa như sau:
Một router gửi ra một thông điệp Graft đến một router upstream, là router láng giềng đã gửi ra thông điệp loại bỏ prune. Thông điệp graft làm cho router láng giềng đưa cổng vào trạng thái forwarding cho một nhóm multicast nào đó.
Trên hình trên, ban đầu cả máy H1 và H2 không tham gia vào nhóm 226.1.1.1. Và R2 và R3 đã bị loại bỏ ra khỏI nhóm (10.1.1.10, 226.1.1.1).Cổng S0/0 của R1 đã bị loại bỏ ra khỏi (S,G) SPT, vì vậy R2 và R3 không nhận được lưu lượng multicast gửi bởi S1 về 226.1.1.1.1. Sau đó, H2 tham gia vào nhóm 226.1.1.1 một lần nữa. Nếu không có thông điệp Graft, máy H2 sẽ phải chờ một khoảng thòi gian là ba phút trước khi nó nhận được lưu lượng của nhóm. Tuy nhiên với các bước sau đây, H2 sẽ nhận gói tin chỉ trong vài phút:
1. Host H2 gửi một thông điệp IGMP Join.
2. R3 tìm cổng RPF trong bảng định tuyến multicast cho nhóm 226.1.1.1. Trong bảng đó, cổng s0/0 là cổng đi vào và các router láng giềng RPF là 10.1.3.2.
3. R3 gửi thông điệp Graft ra cổng S0/0 đến R2.
4. R2 bây giờ biết nó cần nhận lưu lượng từ 10.1.1.10 gửi đến 226.1.1.1. Tuy nhiên, hàng (S,G) của R2 cũng hiện thị cờ P, nghĩa là R2 đã tự loạI bỏ chính nó ra khỏi cây SPT. Vì vậy, R2 tìm cổng RPF của nó và các router láng giềng trong bảng (S,G), trong đó đang chỉ đến cổng S0/0 và router R1.
5. R2 gửi thông điệp Graft về cho R1.
Ở thời điểm này, R1 ngay lập tức đưa cổng S0/0 vào danh sách các cổng ra giống như R2 và bây giờ H2 bắt đầu nhận gói tin multicast. Lưu ý rằng R1 cũng gửi thông điệp Graft Ack trả lời lại R2 và R2 gửi graft ACK để trả lời về R3.
Một số vấn đề của PIM khi hoạt động trên LAN
Phần này sẽ khảo sát ba chủ đề nhỏ liên quan đến hoạt động của PIM trên LAN.
- Prune Override
- Thông điệp Assert
- Designated router.
Cả PIM-DM và PIM-SM dùng các đặc điểm này trong cùng một cách.
Prune Override
Trong cả PIM-DM và PIM-SM, tiến trình prune trên các mạng đa truy cập hoạt động khác với trong những kết nối điểm-điểm. Nguyên nhân là khi một router gửi ra một thông điệp prune trên một mạng đa truy cập, các router khác có thể không muốn kết nối bị loại bỏ bởi router upstream.
Hình trên đây mô tả vấn đề xảy ra dùng dùng PIM. Trong hình này, R1 đang truyền dữ liệu cho nhóm 239.9.9.9 trên cổng F0/0 với R2 và R3 đang nhận lưu lượng nhóm 239.9.9.9 nhận lưu lượng trên cổng E0. R2 không có thành viên của nhóm nào đang kết nối trực tiếp và vì vậy danh sách các cổng ra của nó là null. Các bước tiếp theo sau đây sẽ diễn ra khi R3 cần gửi thông điệp Prune Override.
1. R2 gửi ra thông điệp prune cho nhóm 239.9.9.9 bởi vì R2 có danh sách cổng ra là null.
2. R1 nhận ra nó nó đang có một thông điệp Prune gửi đến, biết rằng có thể có những router khác vẫn muốn nhận gói tin. Vì vậy thay vì ngay lập tức loại bỏ cổng, R1 gán một khoảng thời gian 3 giây trước khi R1 loại bỏ cổng.
3. R3 cũng nhận thông điệp prune được gửi bởi R2 bởi vì thông điệp Prune được gửi theo dạng multicast đến địa chỉ tất cả các PIM routers 224.0.0.13. R3 cũng vẫn cần nhận lưu lượng của nhóm 239.9.9.9, vì vậy R3 gửi một thông điệp tham gia Join ra cổng E0.
4. R1 nhận được thông điệp tham gia Join từ R3 trước khi xóa cổng LAN của nó ra khỏi danh sách cổng ra. Kết quả là R1 không loại bỏ cổng F0/0 của nó.
Tiến trình này gọi là Prune Override bởi vì R3 bỏ qua thông điệp loại bỏ prune được gửi bởi R2. Thông điệp prune override thật ra là một thông điệp Join được gửi bởi R3 trong trường hợp này. Thông điệp này không có gì khác với thông điệp Join bình thường. Ngay khi r1 nhận được thông điệp Join từ R3 trước khoảng thời gian 3 giây bị hết hạn, R3 tiếp tục nhận lưu lượng mà không bị ngắt quãng.
Thông điệp xác nhận (Assert Message)
Loại thông điệp cuối cùng được mô tả trong chương này là thông điệp PIM Assert. Thông điệp Assert được dùng để ngăn ngừa những nỗ lực vô ích khi có nhiều router kết nối vào cùng mạng LAN. Thay vì gửi nhiều bản sao của những gói multicast vào trong LAN, thông điệp PIM cho phép các router bắt tay thoả thuận với nhau. Router thắng sẽ có quyền chịu trách nhiệm đẩy lưu lượng multicast vào trong LAN. Hình dưới đây mô tả một ví dụ của nhu cầu chèn thông điệp Assert. R2 và R3 cả hai cùng gắn vào trong LAN, vớI H1 là thành viên tích cực của nhóm 227.7.7.7. Cả R2 và R3 cùng đang nhận lưu lượng của nhóm cho 227.7.7.7 từ nguồn 10.1.1.10.
Mục đích của thông điệp Assert là gán trách nhiệm đưa lưu lượng của nhóm cho router gần nhất với nguồn. Khi R2 và R3 nhận lưu lượng nhóm từ nguồn trên cổng S0, các router truyền trên cổng E0. Cả hai đều có cổng S0 trong danh sách các cổng đi vào và E0 trong danh sách cổng ra. Ở thời điểm này, cả R2 và R3 đều nhận gói tin multicast trên cổng E0, làm cho các router sẽ dùng thông điệp Assert để giải quyết vấn đề router nào sẽ làm router truyền lưu lượng. Tiến trình Assert chọn ra một router thắng cuộc dựa trên giao thức định tuyến và metric dùng để tìm ra tuyến đường để đến địa chỉ unicast của nguồn. Trong ví dụ này, điều này có nghĩa là R2 hay R3 sẽ thắng dựa trên những tuyến mà họ dùng để đến 10.1.1.10. R2 và R3 sẽ gửI thông điệp Assert bao gồm giá trị AD của giao thức định tuyến được dùng để đến 10.1.1.10, cũng như là metric được dùng để đến các route này. Các router trên LAN so sánh giá trị AD và metric trong thông điệp Assert. Router thắng cuộc được xác định như sau:
1. Router đang quảng bá một giá trị AD thấp nhất của giao thức định tuyến sẽ thắng.
2. Nếu là ngang bằng, router với giá trị metric thấp nhất sẽ thắng.
3. Nếu là tiếp tục ngang bằng, router có địa chỉ IP cao nhất trên LAN sẽ thắng.
Comment