rạ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.