簡介
IP組播(IP multicasting)是對硬體組播的抽象,是對標準IP網路層協定的擴展。它通過使用特定的IP組播地址,按照最大投遞的原則,將IP數據包傳輸到一個組播群組(multicast group)的主機集合。它的基本方法是:當某一個人向一組人傳送數據時,它不必將數據向每一個人都傳送數據,只需將數據傳送到一個特定的預約的組地址,所有加入該組的人均可以收到這份數據。這樣對傳送者而言,數據只需傳送一次就可以傳送到所有接收者,大大減輕了網路的負載和傳送者的負擔。1.概念:
多播是對需要接收該流量的客戶端傳送的一組數據,是一種無害的廣播。2.優點:
不影響不接收該多播數據的主機,能夠節約網路頻寬,降低主機處理負擔。3.多播地址:
224.0.0.0--239.255.255.255,沒有像單播ip段那樣有廣播地址和網路地址之分了。具體:224.0.0.0--224.0.0.255 本地保留,給知名協定使用,ttl=1。其中224.0.0.1是本網所有主機接收,224.0.0.2是本網所有路由器接收。
224.0.1.0~238.255.255.255 預留組播地址,多播地址應從此範圍內選擇。
239.0.0.0--239.255.255.255 私有組播地址。
232.0.0.0--232.255.255.255 特定源多播。
4.多播的MAC地址結構:
01005E,固定的16進制位,後接一固定的比特位0,再其後就任意了。ip與mac的映射,例:
ip地址 229.147.109.235
劃成bit 11100101.1 / 0010011.01101101.11101011
多播mac結構 01005E "0" / ..........(斜槓後23位與上面對應)
得出: 01005E136DEB 為ip229.147.109.235對應的組播mac地址。
從例子可知,32個多播地址映射成一個mac地址,所以在部署一個網路時要措開使用ip多播地址(變尾部)
5.多播源分發樹和共享分發樹
源分發樹,保證目的到達源的路徑最短,但要為每一個多播源保持一棵樹,CPU使用率高。共享分發樹,要選RP,能保證目的到RP最近,不用為每一個源保持一棵樹,而共同保持一棵以RP為根的樹即可,這樣節約了設備資源,但是不能再保證到源的路徑最近了。(源發向rp的多播以單播ip in ip的形式)
6.RPF(反向路徑轉發)
RPF檢查的原理:路由器在單播路由表中查找源地址以確定數據包到達的接口是否位於返回信源的的反向路徑上,如果是則RPF檢查成功,如果不是則標記“RPF失敗丟棄”並丟棄數據包。簡單來說就是根據去的數據路由表項來檢查回來的包,確定去回在一線上。作用:對於多播,能防止環路(多播RPF檢查是默認開啟且不能關閉的);對於單播,能防止IP欺騙攻擊(需要手工配置RPF檢查)
7.多播在設備中的互動
(1)多播路由協定(路由器之間的互動):主要有mospf,dvmrp,pim這三個。前面兩種協定需要建立自己的多播路由表。大多數路由器只支持pim。
PIM,協定無關性,它不需要建立自己的路由表,關心的只是路由器中有沒有單播路由表,無論這個單播表項是怎樣建立的,通過怎樣的路由協定。
PIM MODE:PIM DM(密集模式,使用源分發樹),
PIM SM(稀疏模式,使用共享分發樹),
PIM SDM(稀疏密集模式,先嘗試使用共享樹,找不到RP再切向源分發樹)
PIM DM,用於用戶密集的情況,如果存在著沒有要求多播的路由器則將其“裁剪”,如果存在著後來接入又需要多播的路由器則將其“嫁接”!
PIM SM,用於用戶分散的情況,只有一棵樹,初始為空,只有路由器發起要求才建立分支。這種模式存在著第一個到目的的數據包會觸發目的向源傳送一個單播形式的該數據,如果到源的路徑好過走rp的路徑則自動向最佳路徑切換。
PIM SDM,使用最多的模式,效率最高。
rp的選舉問題,三種方式:手工指定,auto rp(cisco only),BSR自舉路由器(只有pim v2支持)
配置:
(config)#ip mutilcast-routing
(config-if)#ip pim 模式
密集模式的配置:
(config-if)#ip pim dense
稀疏模式的配置:
靜態: (config)#ip mutilcast-routing
(config-if)#ip pim sparse
(config)#ip pim rp-add x.x.x.x
(config)#ip pim spt-thresheld infin / 具體值 指定向源切換的界限
auto: 定義候選者,(config)#ip pim send-rp-amounce 接口 scope ttl值(定義邊界) group-list 訪問列表
定義映射代理,(config)#ip pim send-rp-discovery scope ttl值
指定模式,(config-if)#ip pim sp-de mode
注意,要224.0.1.39和224.0.1.40一對組播地址支持rp選舉:
rp映射代理髮往rp候選者用224.0.1.40
反過來,用224.0.1.39
BSR:(config-if)#ip pim 1 / 2 更改pim版本號,bsr只支持2
(config-if)#ip pim bsr border 定義多播邊界
(config)#ip pim rp-candidate 接口 定義rp候選者
(config)#ip pim bsr-candidate 接口 定義bsr
這裡,bsr用224.0.1.13向候選者通告,候選者用單播回應bsr。
sh ip mroute; sh ip pim int; sh ip pim nei;
sh ip pim rp; sh ip pim bsr; sh ip pim map.
(2)IGMP(Internet組管理協定)處理pc和router的互動。
三個版本:
igmpv1:report(pc發出,地址255.1.1.1,ttl=1),query(router發出,發項0.0.0.0,60秒一次,120s沒收到report回應則停止向該pc發組播)。
igmpv2:在v1基礎上增加了一個leave訊息,query訊息的作用就變成了防止pc意外離開(沒有leave訊息,不被router所知)。
igmpv3:可以對信源地址做控制了,選擇pc需要的特定多播。
另外還有一個igmpv3lite,是cisco私有的過渡方案,目的是讓程式設計師能立刻編寫ssm。
(3)switch的多播處理:cgmp和switch snooping
CGMP:思科私有協定,運行於思科交換機與思科路由器之間,讓交換機能夠通過路由器給出的訊息間接支持組管理。
流程大致是:pc發igmp告知路由器我需要什麼多播,如果路由器就直接把多播傳入則經過交換機的時候會被交換機發向與該pc一個vlan的所有主機,router需要將該多播的mac通告交換機,讓其明白多播具體該發向哪,並建立一個多播的轉發表。
IGMP snooping:公有協定,只要交換機單獨運行即可。它是靠幀聽igmpreport來建立多播轉發表的。所以對於2層交換機,因為看不到3層信息,所以要監聽每一個組播幀,從中發現igmp成員報告,這樣加大了cpu等資源的使用,比較不利;而對於3層交換機,能夠看到3層信息,可以識別igmp成員報告,只要處理igmp流即可,所以負擔輕。