一、組播概述:(基於UDP)
在IP網絡中,節點之間的通信通常采用點到點的方式。
點到多點的傳輸:
使用廣播:占用不必要的帶寬,不需要的人,也會接收到。
- 數據源發送一份數據包
- 鏈路上傳輸一份數據包
- 所有主機都會接收數據包
使用單播:需要向每一個接收者單獨發送一份數據,當接收者數量增加時,發送源復制的工作負荷會比例增加,當接收者數據巨大時,一些接收者接收數據的延時大大增加,對延時敏感的應用如多媒體會議、視頻監控。
- 數據源發送多份數據包
- 鏈路上傳輸多份數據包
- 只有數據接收者才會收到數據包
使用組播:
- 數據源發送一份數據包
- 鏈路上傳輸一份數據包
- 只有數據接收者才會收到數據包
組播優缺點:只要是組播都是用UDP
- 優點:
增強效率,控制網路流量,減少服務器和CPU的負載
優化性能,消除流量冗余
分布式應用,使多點傳輸成為可能
- 缺點:
盡最大努力交付(UDP),不會重傳
無擁塞控制(qos),無法保證優先傳輸
數據包重復
數據包的無需交付
組播典型應用:
多媒體會議、IP視頻監控,QQ共享白板等多對一。。。
組網技術需求:
-
組播地址:
224.0.0.0-- 239.255.255.255(沒有什么廣播地址和網絡地址)
- 本地協議預留組播地址:
224.0.0.0--224.0.1.255(保留給某些協議具體使用)僅供本地網段上的網絡協議使用。
- 本地管理組地址:(私網)
239.0.0.0--239.255.255.255
- 用戶組播地址:(公網)
224.0.2.0--238.255.255.255
- 組播MAC地址:
以太網:01-00-5e-xx-xx-xx
組播IP地址到組播MAC地址的映射:
組播中:32個IP地址對應一個MAC
組播MAC地址,第一個字節的最后一位為1。
單播MAC地址,第一個字節的最后一位為0。
二、組播組管理協議:
(1)IGMP簡介:
- 是運行在主機和路由設備之間的協議
→ 主機通過組播組管理協議加入或離開某些組播組
→ 路由設備通過組播組管理協議管理和維護本地的組播組信息
- 常用的組播組管理協議為IGMP(管理和維護本地組的信息)
加入、查詢、離開
離開時,得表示自己是不是最后一個人,如果是最后一個人,路由設備得刪除組播組信息
(2)、組播分發樹模型(路由器和路由器之間)
- 是組播數據的轉發路徑
- 根據樹根位置的不同,組播分發樹模型分為:
→ 最短路徑樹模型:源到每一個接收者的最短路徑(比較耗資源)
→ 共享樹模型:源到每一個接收者的路徑不一定是最短的
(3).組播轉發機制:
- 組播轉發機制和單播轉發機制不同:
→ 單播轉發關心報文到哪里去(只關心報文的目的地址)
→ 組播轉發關心報文從哪里來
- 組播轉發機制-----當收到兩個數據包,會通過單播路由表查詢到組播源最短的路徑,從而確認收哪個數據包,不收哪個數據包,所有沒有單播路由表,就不可能有組播轉發表。稱為逆向路徑轉發。(RPF校驗)
(4).組播路由簡介:
- 組播路由協議和單播路由協議一樣,用於建立數據轉發的路徑
- 根據作用范圍組播路由協議可以分為域內組播路由協議和域間組播路由協議:
→ 域內組播路由協議主要包括DVMRP、MOSPF和PIM(基本上都域內)
→ 域間組播路由協議主要包括MSDP、MBGP
- 域內組播路由協議根據建立的組播分發樹的不通可以分為基於SPT的組播路由協議和基於RPT的組播路由協議
→ 基於SPT的組播路由協議包括PIM DM、DVMRP、MOSPF
→ 基於RPT的組播路由協議包括PIM SM
(5)組播協議體系
- 主機——路由器:IGMP
- 路由器——路由器:PIM
- 域間:MSDP
三、組播模型:
(1)組播模型
- 根據接收者對組播源處理方式的不同,組播模型分為以下兩類:
→ ASM(任意信源組播)
→ SSM(指定信源組播)232.0.0.0/8
(2).ASM模型:
- 接收端只能選擇加入某組播組,而無法具體選擇組播源:
- 無法具體選擇組播源。無論誰發的都接收。
(3).SSM模型:
- 接收指定組播源
四、組播轉發機制
- 不同於單播,組播數據轉發路徑基於樹形結構
- 不同於單播,組播轉發需要檢查報文的入接口是否最優,單播是檢查到達目的是不是最近的。
(1)組播分發樹概念:
- 組播分發樹指組播數據在網絡中的轉發路徑,由組播路由協議建立
- 根據樹根節點的不同,組播分發樹可分為最短路徑樹和共享樹
→ SPT(最短路徑樹):樹根為組播源所連接的指定路由器
→ RPT(共享樹):樹根為RP(匯聚點)
(2).SPT(最短路徑樹)
- 最短路徑樹,每個接收者到源都是最近的
- 每個組播源都要有一個轉發表(效率低)
- 信息任意傳播,傳到接收者前的一個路由器時,才會停止
(2)RPT(共享樹)
- 做RPF校驗時,不會去找組播源而是到RP最近的,所有的接收者到RP的路徑是最短的
- 組播源把信息發給RP,誰要,誰在向RP請求。
- 只需要維持一張轉發表,節省資源,減小轉發表的規模
(3).RPF介紹:(防止組播數據發生環路)
- RPF(逆向路徑轉發)
→ 確保組播數據沿正確路徑傳輸
→ 避免組播路徑環路的產生
- RPF檢查的過程如下:
→ 如果數據包是在到達組播源的最優路徑上到達,則RPF檢查成功,數據包被轉發
→ 如果RPF檢查失敗,棄數據包
- RPF檢查基於的是單播路由表
RPF檢查失敗:
RPF檢查成功:
如果單播路由表里面的路由是等價路由,則選擇單播路由表中下一跳IP地址大的作為下一跳。
五、組播路由協議:
- 組播分發樹由組播路由協議建立(SPT,RPT)
- 不同的組播路由協議可能基於不同的組播分發樹模型
(1).組播路由協議概述
- 組播路由協議運行在三層組播設備之間,用於建立和維護組播路由,並正確、高效地轉發組播報文。
- 組播路由協議建立了從一個數據源端到多個接收端的無環數據傳輸路徑,即組播分發樹。
- 對於ASM組播模型,組播路由協議可以分為域內和域間兩類:
→ 域內組播路由協議用於在AS內部發現組播源並構建組播分發樹
→ 域間組播路由協議用於實現組播信息在AS之間的傳遞(MBGP)
(2).組播路由協議的模式:
- 組播路由協議有密集和稀疏兩種模式:
- 全部發,不需要的向源請求,發起剪枝報文。(推的模式)(SPT)
- 只發給離我最近的路由器,接收者發送一個加入消息,再發給接收者(拉的模式)(RPT)
(3).域內組播路由協議:
- DVMRP(距離矢量組播路由協議)
- MOSPF(組播ospf協議)
- PIM(協議無關組播)
→ PIM-DM(密集模式)
→ PIM-SM(稀疏模式)
→ PIM-SSM(接收者指定源接收)
六、PIM概述:(與協議無關組播路由協議)
- PIM-DM是密集模式的組播路由協議,該協議假定網絡中組播接收者較多,且分布於大部分網絡設備上,因此采用“推”的方式將組播流量周期性的擴散到網絡中的所有鄰居設備上。
- PIM-DM在RFC3973中定義,適用於小型組播網絡。
- 協議號:103,封裝在IP,組播地址:224.0.0.13
http://bbs.hh010.com/thread-255689-1-1.html //igmp報文類型及分析
PIM-DM(推模式)——SPT(最短路徑樹)
1、鄰居發現機制:
- PIM路由器之間周期性發送hello消息,用於發現鄰居、建立並維護鄰居關系
- 當共享網段路由器運行的IGMP版本為V1時,可以通過hello消息為該網段選舉IGMP查詢器。
當連接組播接收者的共享網段上有多台路由器,且路由器運行IGMPV1是,路由器可以通過PIM的Hello消息為該網段的接收者主機選舉DR,並由DR充當IGMPv1的查詢器。
DR選舉:優先級高-------IP地址大(當DR出現故障時,其余路由器超時后沒有收到DR發送的hello消息,則會觸發新的DR選舉過程)在IGMPv1中能應用到。。。。
2.組播報文擴散過程:(周期性)
- 將組播報文擴散到每一個運行PIM-DM的網段,沿途每一台路由器都創建(S,G)表項。
3.剪枝/加入過程:
- 如果不需要上游 發送組播報文,向上游接口發送Prune消息
- 如果共享網段上有路由器連接接收者,則該路由器需向上游發送Join消息覆蓋其他路由器發送的Prune消息。
4、SPT的形成:
- 經過擴散-剪枝過程,形成組播源到組播接收者之間的SPT
- 擴散-剪枝過程周期進行,由定時器控制
擴散和剪枝都是周期性進行的
5、嫁接過程:(觸發更新)
- 當路由器需要上游發送組播報文時,向上游發送Graft消息
- 上游收到后回復Graft Ack消息
6.斷言機制:(組播不支持負載分擔,因為是基於UDP傳輸的)
- 在一個網段內如果存在多台組播路由器,則相同的組播報文可能會被重復發送到該網段
- 通過斷言(Assert)機制可以選定網段上唯一的組播數據轉發者。
選舉方法:
- 單播路由優先級高
- 度量值小
- IP地址大
7.PIM-DM的狀態刷新機制
- 通過狀態刷新機制可以降低組播報文擴散的頻率,節省網絡帶寬(60s刷新一次)
- 減少組播報文擴散,發送state refresh消息刷新組播轉發表(S,G表項)
- 狀態刷新機制,使用周期性的協議報文替代周期性的組播數據擴散,可以減少網絡消耗,優化網絡資源。
- 狀態刷新(State Refresh):當下游設備路由器沒有加入組時,離組播源最近的一跳路由器會啟動狀態刷新報文,發給下游無加入組的路由器,設置定時器,在下一次擴散/剪枝,由於下游設備還沒接收者,就會抑制接口,不讓轉發組播報文。
PIM-SM:(拉模式)——RPT(共享路徑樹)
- 是稀疏模式的組播路由協議。PIM-SM采用“拉”的方式,根據接收者的需求,在組播接收者和組播源之間建立組播轉發樹
- RFC4601中定義,實際應用中適用於任何形式的網絡
- PIM-SM使用RP(匯聚點)作為共享樹的根
- 組播源通過DR注冊到RP
- 接收者通過DR向RP發起加入
(1).鄰居發現和DR選舉:
- PIM-SM鄰居發現過程和PIM-DM相同
- 共享網段需要選舉DR,作為該網段的唯一轉發者。(組播源側和接收側都需要)
組播源側通過DR向RP發送數據,接收則通過DR向RP請求數據或加入。
☆:DR優先級高——地址大的
源:由DR向RP發送注冊消息
接收者:接收者向DR發送join消息
(2).加入過程:
- 接收者的DR向RP發起加入,沿途每一台路由器都創建(*,G)表項,形成以RP為根的RPT(共享樹)
(3).組播源注冊:
源發送一個組播流給DR,DR收到后,會發送單播Register消息(封裝組播數據)給RP,最后RP會向上游發送一個加入消息
(4)組播源注冊停止:
總結:
1、標准:
- 先有接收者——后有組播源:從接收者到RP會形成(*,G)表項,有組播源之后,離組播源最近的DR路由器會向RP發送第一份單播(里面封裝了組播數據)的注冊消息,RP收到之后,會回復(S,G)的Jion消息,這時候RP與組播源之間形成了源樹(SPT)形成,第二份數據包來了之后,離組播源最近的DR路由器會將這份數據包復制一份,一份以組播通過SPT轉發給RP,另一份依然封裝成單播數據包,當RP收到組播數據報文時,RP會向離源最近的路由器發送注冊停止消息,這個停止消息的時間為1分鍾,一分鍾后又會發注冊消息(目的是維護RP到源的(S,G)表項)。
- 先有組播流——后有接收者:第一條路由器(DR)會向RP發送一個注冊信息,當沒有接收者的情況下,RP回復一個注冊停止消息,RP上形成一個(S,G)表項但是沒有下行接口,這里的STOP信息也只管一分鍾,一分鍾后,又會發送注冊信息,但是RP上的(S,G)表項永遠都不會消失。當來了接收后,RP會立即向離源最近的DR,發送(S,G)的Jion信息。
2、華為
- 先有接收者——組播流:DR將第一份組播數據包封裝成單播向RP發送注冊信息,RP接收到后,解封裝,形成(S,G),向DR發送(S,G)的Jion信息,第二份數據包,DR直接通過組播發送,永遠不再發送注冊信息。這時這里有個bug,接收者消失,(S,G)表項超時,當再次有接收者時,(S,G)表項永遠都不會形成。
PIM-DM:
先確定進口:RPF
出口:默認所有
PIM-SM:
確認進口:單播到RP最近的接口
出口:收到igmp加組消息
(5).RPT向SPT的切換:
缺省情況下,連接接收者的路由器(最后一跳路由器)在探測到組播源之后(即接收到第一個數據包),便立即加入最短路徑樹(源樹),即從RPT向SPT轉換。
- 由接收者DR發起向組播源的計入過程
當接收者DR收到數據后,就知道組播源,因為有(S,G)表項,接收者DR通過單播路由表查找到組播源最近的距離
- 由DR或上游路由器向RP發送Prune消息,RP向組播源DP發送Prune消息。
- 最終形成組播源到接收者的SPT
拓撲穩定后就不需要RP了。
PIM-SM之RP發現:
RP發現:在pim-sm組播網絡里,擔當共享樹的樹根的節點被稱為RP。
RP的作用:
- 共享樹里所有組播流通過RP轉發到轉發者
- RP可以負責幾個或者所有組播組的轉發,所以網絡中可以有一個或多個RP(負責不同的組播組)
如何發現RP:
- 在DR和葉子路由器以及組播數據流將要經過的所有路由器上手工指定RP的IP地址,無法實現RP的冗余備份
- 利用BootStrap協議動態選舉RP。
靜態RP:
[H3C-pim]static-rp 1.1.1.1 [acl numble] [preferred]
acl numble:用於控制靜態RP所服務的組播組范圍。取值為2000~2999。
preferred:表示靜態RP優先。
動態RP:
- 選舉BSR(BS路由器)
- C-BSR組播(224.0.0.13)發送Bootstrap報文,比較Bootstrap報文選舉BSR;
- 選舉C-RP(候選者):
- C-RP向BSR單播發送Advertisement報文
- BSR將信息匯總為RP-Set,封裝在Bootstrap報文中,發布給全網的每一台PIM-SM路由器
全網PIM-SM路由器根據Bootstrap報文包含的信息選舉RP。
BSR(BootStrap Router):
PIM-SM網絡啟動后,負責收集網絡內的RP信息,為每個組播組選舉出RP,然后將RP集(即組-RP的映射數據庫)發布到整個PIM-SM網絡的路由器,稱之為BSR,
一個PIM-SM域里只有一台BSR,並同時可以存在多台候選BSR(C-BSR)
BSR的選舉:
- 如果域內只有一台C-BSR,該台路由器就是該域里的BSR。
- 如果域中存在多台C-BSR,則擁有最高優先級的路由器為BSR。(優先級值越大優先級越高),C-BSR會設置一個計時器130s倒計時來檢測當前Active BSR的狀態。active BSR會周期發送信息給C-BSR,周期時間為60s。
- 如果域里存在多台擁有相同優先級的C-BSR,則擁有最高IP地址的路由器為BSR。
BSR起來之后會通過組播(224.0.0.13)BootStrap信息全網通告給其他路由器。
BSR 優先級越高越好------地址大的。
配置C-BSR:
[H3C-pim]c-bsr 1.1.1.1 [hash-length 30] [priority 0]
地址:為該台路由器某個接口的地址(最好為環回口地址),該接口一定要啟用SM功能。
hash-length:hash掩碼長度,后續選RP會用到。默認為30,取值為0~32.
priority:C-BSR的優先級,選擇出Active BSR。默認為0,取值為0~255.
C-RP選舉:
域中可以配置一個或者多個C-RP,C-RP是某個組范圍的RP候選者,可以理解設備被配置了C-RP,那么設備成為了一個組范圍RP的選民,RP決定權不在C-RP手中。
[H3C-pim]c-rp 1.1.1.1 group-policy 2000 priority 0 holdtime 150 advertisement-interval 60
地址:為該設備上的接口地址(最好為環回口),該接口一定要啟用SM功能。
grou-policy:指定該候選RP所服務組播組的范圍。
priority:指定該候選RP的優先級。數值越大,優先級越低。
holdtime:指定BSR等待接收該候選RP發送的Advertisement宣告消息的超時時間。默認為150s。
advertisemen-interval:指定該候選RP發送Advertisement宣告消息的時間間隔。默認為60s。
- 網絡中的各路由器將依據RP-Set提供的信息,使用相同的規則從眾多C-RP中為特定組播組選擇其對應的RP
- 如果域中存在多個優先級相同的C-RP,則ACL覆蓋范圍小的優先。
- 首先比較C-RP的優先級,優先級較高者獲勝(值越小越好)
- 若優先級相同,則使用哈希(Hash)函數計算哈希值,該值較大者獲勝(組地址、掩碼長度、C-RP地址)
- 若優先級和哈希值都相同,則C-RP地址較大者獲勝
RP動態選舉:
路由將選舉報文(Advertisement)(優先級等參數)發給BSR,BSR形成RP-Set,再進行比較,選出RP后發送BootStrap報文給其他路由器次高RP2,RP3等。
網絡中會有個C-BSR作為BSR的備份。
PIM-SSM:(特定源)是借助PIM-SM的部分技術和IGMPv3來實現的,無需維護RP、無需構建RPT,無需注冊組播源。
特點:是網絡用戶能夠預先知道組播源的具體位置(IGMPV3)。
分配特定的組播地址段:232.0.0.0~232.255.255.255
生成的是SPT(最短路徑樹)
IGMPV3:
服務於SSM模型,允許主機指定某些網絡發送的某些組播組,增加了主機的控制能力,不僅可以指定組播組,還能指定組播源
相比較IGMPv2,IGMPv3新增的報文:
- 特定源組查詢報文
- 報告報文包括主機要加入的組和組播源的過濾模式
- INCLUDE(接收這些源組的流量)
- EXCLUDE(不接受這些源組的流量)
- 取消了成員關系報告抑制機制
IGMP SSM Mapping:
- 為IGMPV1主機和IGMPv2主機提供SSM服務
- 通過在路由器上靜態配置SSM地址的映射規則,將IGMPV1和IGMPv2報告報文中的(*,G)信息轉化為對應的(S,G)信息。
二層組播:
IGMP Snooping:
- 解決組播報文在二層廣播的問題
- 運行在鏈路層,是二層以太網交換機上組播約束機制,用於管理和控制組播組。
- 通過監聽主機發出的IGMP報文,建立組播MAC地址表。
工作機制:
當二層交換機收到主機和路由器之間傳遞的IGMP報文時,IGMP Snooping分析報文所帶的信息:
- 如果主機發出IGMP主機報文時,交換機將該主機加入到相應的組播表中。
- 如果主機發出IGMP離開報文時,交換機將刪除與該主機對應的組播表項。
通過不斷監聽IGMP報文,交換機在二層建立和維護組播MAC地址表,交換機根據組播MAC地址表轉發從路由器下發的組播報文。
vlan 2
port e1/0/1 to e1/0/8
igmp-snooping enable
組播VLAN:
解決路由器VLAN 用戶復制多份流量的問題。