Multicast :: 組播學習筆記

概念:組播 (Multicast)
------------------------------------------
與 unicast, broadcast 類似,它是數據的一種傳送方式。
與 unicast 相比較,在發送相同數據到多個目標時,unicast 對不同目標分別發送一份數據,即每個目標均要發送一次,而 multicast 只發送一份數據但所有目標將都會得到一份,即多目標只發送一次。
這裏要注意,multicast 與 broadcast 是有區別的,broadcast
通常只能在同一廣播域傳遞,路由器是分割廣播域的。雖然我們可以允許路由器傳遞廣播,但這是非常差的一種解決方案,而 multicast
有一系列機制可以在不同的網絡之間傳遞。
概念: IGMP v1, v2, v3
------------------------------------------
Internet Group Management Protocol, 互聯網絡組管理協議
我理解它是工作在同一 broadcast domain 的 multicast 基礎協議,它使得 router 和 host
使用相同的機制進行 multicastt group 的 join, leave 等基本行爲的實現和管理。與之相比,IP multicast
routing protocols 就是實現不同 broadcast 之間組播通信的基礎協議了。
組播路由協議要建立在 router 支持/啓用 IGMP 的基礎之上,這道理與 IP 路由協議要建立在支持 IP 協議的網絡上一樣。
概念:  Multicast routing protocol有哪些?
------------------------------------------
PIM, DVMRP, MOSPF, CBT
PIM:基於單播路由表構建 Source-based Tree 和 Shared Tree,路由器用 join, prune, graft
三種消息通知 upstream router 是否需要向其轉發組播數據。目前較常用的是 PIM-SM (Protocol
Independent Multicast Sparse-Mode, 協議無關組播稀疏模式)。
概念: PIM-DM 和 PIM-SM 的主要區別
------------------------------------------
我認爲只是強調 push 和 pull 的工作方式區分二者的區別是不太直觀的。
我選擇用直述性的語言描述區別:
PIM-DM 的組播成員是由 source 發送全組播網絡的 flooding 再 prune 後確定的,默認情況下每 3 分鐘就要重新 flooding 一次。而 PIM-SM 的組播成員是 source 和 receiver 主動向 RP 註冊最終確定的,RP 是 PIM-SM 特有概念。
那麼從上面的區別不難看出,這兩種方式恰恰是 push 和 pull。直接告訴學習者結論,不如先說明過程再歸納出結論,這樣效果會更好一些。從我自身的情況看,我很難從精闢的結論描述反推出過程、原理,因此我也建議授課講師們不要一上來就談 push 和 pull 概念,這樣不利於學習者的理解。
概念:RPF (Reverse Path Forwarding)
------------------------------------------
反向路徑轉發,組播路徑選擇依據的技術。
它包括三個過程:
1)Broadcast,假定網絡上的每個主機都是多播組成員;
2)Prune(修剪),停止向沒有組播成員的網絡發送組播信息;
3)Selective forwarding,如果有多條路徑,依據單播路由表選路。
RPF在應用時,會檢查組播數據的源地址、進入路由器的端口是否與路由器 unicast route table 中的信息一致,如果源地址在路由表中的指向不是這個端口,那麼將會對數據包執行 silence drop。
概念:Source-based Tree 和 Shared Tree
------------------------------------------
*** 這兩個概念是學習組播必須掌握的! ***
Source-based Tree: 源樹,依據 RPF 算法計算得出的從 RP 到 source 的一棵 RPT (RP 是 root),用 Notation(S,G) 記錄轉發表,S 表示源地址,G 表示組播地址。*注:Source-Based Tree 是在 > 中的叫法,在 > 中稱其爲 Source-rooted Tree。
Shared Tree: 共享樹 (有的書上也叫 Shared Distribution Tree),依據 RPF 算法計算得出的從 RP 到 receiver 的一棵 RPT (RP 是 root),用 Notation(*,G) 記錄轉發表。
在 Source-based Tree 中,也就是 RP 與 source 之間數據通過 unicast 傳播(將組播數據封裝到單播包內),而在 Shared Tree 中,也就是 RP 和 Receiver 之間數據通過 multicast 傳播。
*注意:source-based tree 和 shared tree 的生成算法是 RPF,而不是 SPF,最終生成的 2 棵樹均爲
reverse path tree。只有在 multicast router 完成 RPF 到 SPT 的 switchover 後,纔會在
receiver 和 source 之間建立一棵 SPT (shortest path tree)。
概念:DR (Designated Router)
------------------------------------------
這裏的 DR 是組播的 DR,更準確地說是 PIM 的 DR。
在 PIM-SM 中,它有兩個作用,前提是在 Multiaccess 網絡中,一是代替 receiver 向 RP 發送 join
消息,二是代替 source 向 RP 發送 register 消息。之所以要在 multiaccess 網絡中選舉 DR 的原因則與
OSPF 的 DR 產生原因是相似的,可以參考。
在 PIM-DM 中,它的作用是作爲 IGMP Querier 代表所有參與組播的路由器向 receiver 定期發送查詢。
PIM 通過 hello 消息發現並維持鄰居關係,在 Multiaccess 網絡中,路由器向 224.0.0.13
(All-PIM-Router) 發送 hello 包,並進行 DR 選舉,pim priority 數值大的路由器勝出,若 pim
priority 相同,IP地址高的勝出。
另外,在 IGMP 中定義了 DR 的概念,但奇怪的是,IGMP中規定主機地址最小的路由器被選舉爲 DR,這與 PIM 是不同的!
概念: BootStrap Protocol 和 Auto-RP Protocol
------------------------------------------
首先明確一下,二者及 Static RP 都是爲了一件事情:finding RP (automatic discovery of the RP)
Bootstrap 是一個 open-standard protocol, 它使用 TTL=1, destination=224.0.0.13
的組播包來進行 ALL_PIM_Routers 之間的消息傳遞。BSR 是 Bootstrap Protocol 的特有產物,BSR
由選舉產生。
Auto-RP 是 Cisco-proprietary protocol,它使用 224.0.0.13 和 224.0.0.14 進行信息傳遞。RP mapping agents 是 Auto-RP 的特有產物,它相當於 Bootstrap Protocol 中的 BSR,與 BSR 不同的是 RP mapping agents 是通過手工指定的。
BSR 和 RP mapping agent 的作用都是爲了最終確認組播網絡中的 RP,但是 BSR 通過 224.0.0.13 宣告
RP-Set,而 Auto-RP 是由 RP mapping agents 通過 224.0.1.39 獲得 C-RPs 列表並負責選出
RP,再通過 224.0.1.40 向所有組播路由器宣告各個 group 的 RP 和 C-RPs。兩個組播地址的消息發送間隔均爲 60s。
RP 選舉方法:
在 Bootstrap protocol 中,如果只有一個 RP,則選定;有多個RP,選優先級最低的;優先級相同的,選最大 hash 結果的。
在 Auto-RP protocol 中,選優先級高的;優先級相同的,選 IP 地址最大的。
概念: join 和 register
------------------------------------------
這兩個概念要注意一下。
首先,它們是 PIM-SM 所使用的 PIM v2 的 7 種消息類型中的 2 種。
其次,join 是指 receiver 向 RP 申請加入 multicast group 的動作和過程,register 是指 source 向 RP 申請加入 multicast group 的動作和過程。
最後,join 中文翻譯爲加入,register 中文翻譯爲註冊。
問題: 關於 source 和 receiver 之間的 SPT
------------------------------------------
感謝從開頭一直看到這裏的朋友,相信此時你已經瞭解到我對 multicast 瞭解是很初級的,因此邀請你與我一起思考下面的問題。我們知道,當
receiver 和 source 之間的 RPT 轉換到 SPT 後,source 和 receiver 之間存在一條最短路徑,它是 SPT
的一部分,我們稱這條路徑爲 P。
問題一: SPT 的 root 在哪裏?
問題二: 如果 source 和 receiver 中的一個是 SPT 的 root,請問,如果以二者中的非 root 端作爲 root,重新計算生成一棵新的 SPT,那麼新 SPT 中二者之間的路徑是否就是 P 的逆向?或者說就是同一條路徑?

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/sdlcgxcqx/archive/2009/10/10/4648717.aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章