Thứ Ba, 8 tháng 10, 2013

Tìm hiểu Hoạt động của giao thức PIM-DM (tt) và các giao thức Multicast Routing

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.

Designated Router

Cơ chế PIM Hello được dùng để bầu chọn router DR trên môi trường đa truy cập. Một router PIM-DM hoặc PIM-SM có địa chỉ IP cao nhất sẽ trở thành DR. Khái niệm PIM DR áp dụng chủ yếu khi IGMPv1 được dùng. IGMPv1 không có cơ chế bầu chọn router truy vấn, nghĩa là IGMPv1 không có cách nào để quyết định router nào trong số các router trên LAN nên gửi thông điệp truy vấn IGMP query. 

Khi IGMPv1 được dùng, PIM DR sẽ được dùng như là router truy vấn của IGMP. 

IGMPv2 có thể bầu chọn trực tiếp router truy vấn (là router có địa chỉ IP thấp nhất), vì vậy PIM DR không được dùng như router truy vấn khi IGMPv2 được dùng. 

Lưu ý rằng trên LAN, một router có thể thắng tiến trình bầu chọn Assert cho một nhóm (S,G) trong khi một router khác có thể trở thành router truy vấn IGMP Querier (PIM DR cho IGMPv1, IGMPv2 Querier cho IGMPv2). Router thắng cuộc sẽ chịu trách nhiệm đẩy lưu lượng multicast vào trong LAN trong khi router truy vấn IGMP querier chịu trách nhiệm quản lý tiến trình IGMP bằng cách gửi thông điệp bầu chọn trong LAN. Cũng lưu ý rằng tiến trình bầu chọn router truy vấn chọn ra địa chỉ IP thấp nhất và tiến trình Assert dùng địa chỉ IP cao nhất, làm cho tồn tại một khả năng là có những router khác nhau được chọn lựa cho các tiến trình khác nhau. 

Cây multicast được xây dựng bằng cách cho phép phát tán các traffic từ nguồn đến tất cả các router trong mạng. Cây sẽ phát triển từ trên xuống dưới. Trong một thời gian ngắn, các traffic không cần thiết sẽ được lưu chuyển giống như trong broadcast traffic. Tuy nhiên khi các router nhận được traffic cho một nhóm, router sẽ quyết định nó có các máy nhận muốn nhận dữ liệu hay không? Nếu là muốn, router sẽ duy trì tình trạng im lăng và để dòng traffic tiếp tục. Nếu không có host nào đăng ký cho nhóm multicast đó (thông qua IGMP), router sẽ gửi thông điệp Prune đến các router láng giềng của nó (theo hướng về gốc của cây. Nhánh của cây sau đó sẽ bị loại bỏ (prune) sao cho các traffic không cần thiết sẽ không được phát tán về hướng đó.

Cây multicast sẽ được xây dựng theo một làn sóng của các yêu cầu tham gia vào nhóm. Sau đó các switch không có các host tham gia sẽ bị xóa ra khỏi cây. Cây kết quả sau cùng được hiển thị ở hình. kế tiếp.

PIM-DM sẽ nhận biết các thiết bị láng giềng bằng cách trao đổi các gói hello. Thông tin láng giềng này được dùng trước để xây dựng cây đến tất cả các láng giềng. Sau đó, các nhánh của cây sẽ lần lượt được loại bỏ. Nếu một dòng multicast bắt đầu, cây sẽ được xây dựng, cây sẽ chỉ tồn tại khi các thành viên tích cực còn tồn tại. Nếu một host mới đăng ký tham gia nhóm, nhánh của phân đoạn mạng đó sẽ được đính thêm vào cây. Để cấu hình PIM Dense Mode trên một cổng, dùng lệnh

Switch(config-if)# ip pim dense-mode

Tóm tắt các thông điệp PIM-DM

Distance Vector Multicast Routing Protocol

RFC 1075 mô tả phiên bản đầu tiên của DVMRP. DVMRP có nhiều phiên bản. Hoạt động của DVMRP thì tương tự như PIM-DM. Sự khác nhau giữa PIM-DM và DVMRP được định nghĩa như sau:

- Cisco IOS không hỗ trợ DVMRP, tuy nhiên nó hỗ trợ kết nốI đến một mạng DVMRP. 

- DVMRP dùng giao thức định tuyến của chính nó, tương tự như RIPv2. Nó gửI cập nhật mỗI 60 giây và xem 32 hop là giớI hạn trên cùng. DVMRP dùng giao thức định tuyến của riêng nó nên tốn thêm phí tổn nếu so sánh vớI PIM-DM. 

- DVMRP dùng các thông điệp Probe để tìm router láng giềng, dùng địa chỉ nhóm là 224.0.0.4.

- DVMRP dùng cây broadcast thu gọn, là một dạng tương tự như SPT vớI vài nhánh bị loạI bỏ. 

Multicast Open Shortest Path First

MOSPF được định nghĩa trong RFC1584, là một phiên bản mở rộng đến giao thức định tuyến unicast OSPFv2. Hoạt động cơ bản của MOSPF được mô tả như sau:

- MOSPF dùng địa chỉ nhóm LSA, kiểu 6, được phát tán trên toàn vùng của router. Cùng với unicast OSPF, tất cả các MOSPF router trong một area phải có cùng cơ sở dữ liệu liên kết sao cho tất cả các router MOSPF trong một area có thể tính toán cùng một thuật toán SPT.

- Thuật toán SPT được tính toán theo yêu cầu. Khi gói tin multicast đầu tiên của nhóm đến.

- Thông quá quá trình tính toán, tất cả các router biết các thành viên nhóm ở đâu dựa trên các thành viên nhóm LSAs.

- Sau vài phép tính toán SPF là hoàn tất, các hàng sẽ được đưa vào bảng định tuyến multicast.

- Cũng giống như định tuyến unicast OSPF, cây đường đi ngắn nhất là không bị vòng lặp và tất cả các router biết các cổng upstream/downstream. Kết quả là không cần phép kiểm tra RPF. 

- Rõ rằng, MOSPF chỉ có thể làm việc vớI OSPF unicast routing. MOSPF thì phù hợp cho những mạng nhỏ. Khi có nhiều máy bắt đầu gửI lưu lượng multicast, các routers phảI thực hiện một số tính toán Dijkstra, làm tốn tài nguyên CPU. Cisco IOS không hỗ trợ MOSPF.

0 nhận xét:

Đăng nhận xét