爲什麼要使用組播:
1、當需要發送相同的數據去往多個接收者
2、有效的節省帶寬
3、減少主機和路由器的處理進程,減輕工作量
4、當接收者的地址是未知的
5、實時性,當接收者要求能夠同時收到數據
1、當需要發送相同的數據去往多個接收者
2、有效的節省帶寬
3、減少主機和路由器的處理進程,減輕工作量
4、當接收者的地址是未知的
5、實時性,當接收者要求能夠同時收到數據
單播、廣播、組播的區別
1、單播發向一個特定的目標節點
2、廣播發向網絡上的所有節點
3、組播發向網絡上的一組特定的用戶
1、單播發向一個特定的目標節點
2、廣播發向網絡上的所有節點
3、組播發向網絡上的一組特定的用戶
Multicast is UDP based 組播是基於UDP的
由於組播是基於UDP的,所以繼承了UDP的缺點
1、只能是盡力而爲的傳輸,傳輸無保證
2、沒有擁塞避免機制,不像TCP有windows窗口
3、會產生重複的報文
4、無序的、UDP包沒有序列號
1、只能是盡力而爲的傳輸,傳輸無保證
2、沒有擁塞避免機制,不像TCP有windows窗口
3、會產生重複的報文
4、無序的、UDP包沒有序列號
組播應用的類型:
1、一對多
2、多對多,例如網絡會議、共享白板
3、多對一
1、一對多
2、多對多,例如網絡會議、共享白板
3、多對一
<RTP>
實時傳輸協議,用來解決UDP的無序性
實時傳輸協議,用來解決UDP的無序性
端口號:16384-32767
RTP-實時傳輸協議real-time
RCTP-實時控制協議
RCTP-實時控制協議
先封裝RTP,再封裝UDP
20byte 8byte 12byte
IP UDP RTP Vlice payload
20byte 8byte 12byte
IP UDP RTP Vlice payload
組播模型:
兩個術語:
1、第一跳路由器
2、最後一跳路由器
兩個術語:
1、第一跳路由器
2、最後一跳路由器
組播分類:
1、域內組播協議
例如:PIM、DVMRP、MOSPF、CBT
2、域間組播協議
例如:MBGP、MSDP
1、域內組播協議
例如:PIM、DVMRP、MOSPF、CBT
2、域間組播協議
例如:MBGP、MSDP
<Multicast Address>
保留的鏈路本地地址:224.0.0.0 - 224.0.0.255
保留給本地網段上的網絡協議使用。路由器不轉發目標地址爲這段地址的數據包。
TTL=1 (FR Hub & Spoke 中。Spoke端不能建鄰居)
224.0.0.1 子網中的所有主機和路由器
224.0.0.2 子網中的所有路由器(HSRP)
224.0.0.5 所有ospf路由器
224.0.0.6 ospf中的DR和BDR
224.0.0.9 RIP
224.0.0.10 EIGRP
224.0.0.13 PIM路由器
224.0.0.2 子網中的所有路由器(HSRP)
224.0.0.5 所有ospf路由器
224.0.0.6 ospf中的DR和BDR
224.0.0.9 RIP
224.0.0.10 EIGRP
224.0.0.13 PIM路由器
全局範圍地址: 224.0.1.0 - 238.255.255.255
公司可以使用這段地址在組織之間和通過Internet以組播方式傳輸數據。
指定源多播地址: 232.0.0.0 - 232.255.255.255
此段地址被保留給SSM(指定源的多播)使用。SSM是PIM的一種擴展。
GLOP地址: 233.0.0.0 - 233.255.255.255
這段地址和AS號對應。
例:AS62010的16進製表示爲F23A,F2的十進制242,3A的十進制58,
所以子網233.242.58.0/24被全局保留,供AS62010使用。
公司可以使用這段地址在組織之間和通過Internet以組播方式傳輸數據。
指定源多播地址: 232.0.0.0 - 232.255.255.255
此段地址被保留給SSM(指定源的多播)使用。SSM是PIM的一種擴展。
GLOP地址: 233.0.0.0 - 233.255.255.255
這段地址和AS號對應。
例:AS62010的16進製表示爲F23A,F2的十進制242,3A的十進制58,
所以子網233.242.58.0/24被全局保留,供AS62010使用。
除以上兩段地址以外的公網組播地址需要單獨申請。
有限範圍地址: 239.0.0.0 - 239.255.255.255這段地址不能在公網上路由
使用這些地址的組播被限定在本地或組織內。公司、大學和其他組織使用有限範圍地址來進行本地組播。
與Internet相連的邊緣路由器不會將這段多播地址幀轉發到外網。
使用這些地址的組播被限定在本地或組織內。公司、大學和其他組織使用有限範圍地址來進行本地組播。
與Internet相連的邊緣路由器不會將這段多播地址幀轉發到外網。
R1(config)#access-list 100 deny ip any 224.0.0.0 15.255.255.255
224.0.1.1 NTP
224.0.1.39 RP-Announce
224.0.1.40 RP-Discovery
224.0.1.39 RP-Announce
224.0.1.40 RP-Discovery
<組播IP和MAC的映射>
組播MAC地址的前25位固定
IP地址的最後23位被映射到MAC地址的最後23位
0000,0001 0000,0000 0101,1110 0000,0000 0000,0000 0000,1010
24位 0 23位
24位 0 23位
01 00 5E 00 00 0A
<多播IP地址相對應的MAC地址>
-----------------------------------------------------------------------------------------
<IGMP(Internet Group Management Protocol)>
·IGMP報文封裝在IP包中,Protocol NO.=2 / TTL=1
IGMPv1(hold time :180second):
只有兩種報文--
1.Query包 每60秒發一次 由路由器發向224.0.0.1(所有節點)DIP:224.0.0.1 GROUP:0.0.0.0
2.Report包 主機迴應Queries或主動發 DIP:224.1.1.1 GROUP: 224.1.1.1
只有兩種報文--
1.Query包 每60秒發一次 由路由器發向224.0.0.1(所有節點)DIP:224.0.0.1 GROUP:0.0.0.0
2.Report包 主機迴應Queries或主動發 DIP:224.1.1.1 GROUP: 224.1.1.1
·IGMP-V1沒有查詢者機制,要靠上層的PIM選出查詢者
·查詢的間隔響應時間--默認最大爲10S,以S爲單位,當主機收到路由器的查詢後,它必須在這個時間以內迴應,爲了防止大家同時發送迴應報文導致衝突,每一個主機會隨機選擇一個不同的迴應時間。
·在MA網絡上只要有一個主機迴應report包就可以了,它在迴應的同時也抑制了其它組員的report包,因爲沒必要大家都發,只要有一個組員。路由器就會將多播發下來。
·IGMP沒有離組消息,稱之爲靜悄悄的離開,路由器連續發三次query包,都沒人迴應就停止發該組的消息,也即180S之後holdtime到時,才停止發送該組的數據流。
IGMPv2: 多了一個查詢者的概念和以下兩種消息
1.指定組查詢消息Group-specific query DIP: 224.1.1.1 GROUP:224.1.1.1
2.離組消息Leaving a Group DIP: 224.0.0.2 GROUP:224.1.1.1
1.指定組查詢消息Group-specific query DIP: 224.1.1.1 GROUP:224.1.1.1
2.離組消息Leaving a Group DIP: 224.0.0.2 GROUP:224.1.1.1
·查詢者:當有多個路由器在同一個以太網段時,要先選出查詢者(比最小IP地址)[卷2上和np書上都寫錯了,cisco的ppt寫對的],查詢者超時時間默認是120S
·查詢的間隔響應時間--默認10S,以0.1S爲單位
IGMP有離組消息Leaving a group 發向所有路由器
路由器由到離組消息後,會馬上發出指定組查詢消息group-specific query看本組還有沒有組員
路由器由到離組消息後,會馬上發出指定組查詢消息group-specific query看本組還有沒有組員
實驗:
R1(config)#ip multicast-routing 開啓多播路由協議
R1(config-if)#ip pim dense-mode
R1(config-if)#ip pim dense-mode
R1/R2#debug ip igmp
R2(config-if)#ip igmp join-group 224.1.1.1 使R2加入"224.1.1.1"的組
ip igmp query-interval 30 修改查詢間隔時間,改了後查詢者超時時間也會自動變化
ip igmp querier-timeout 120 修改查詢者超時間隔,默認是120S
ip igmp query-max-response-time 10 最大查詢響應間隔時間
ip igmp last-member-query-count 3 路由器修改發送指定組查詢消息的次數,默認2次
ip igmp last-member-query-interval 2000 修改發送指定組查詢消息的間隔,默認是1000ms,這個值乘上次數就得到路由器等待的最大時間
比如本例3*2000=6000ms 也就是說在6S內沒人迴應,路由器就去掉這個組,不再把這個組的流量播下去。
ip igmp querier-timeout 120 修改查詢者超時間隔,默認是120S
ip igmp query-max-response-time 10 最大查詢響應間隔時間
ip igmp last-member-query-count 3 路由器修改發送指定組查詢消息的次數,默認2次
ip igmp last-member-query-interval 2000 修改發送指定組查詢消息的間隔,默認是1000ms,這個值乘上次數就得到路由器等待的最大時間
比如本例3*2000=6000ms 也就是說在6S內沒人迴應,路由器就去掉這個組,不再把這個組的流量播下去。
R1#show ip igmp groups [detail] 查看誰加入了哪個組
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.0.1.40 Ethernet0 00:03:10 00:02:58 10.1.1.1
224.1.1.1 Ethernet0 00:03:10 00:02:58 10.1.1.2
IGMP Connected Group Membership
Group Address Interface Uptime Expires Last Reporter
224.0.1.40 Ethernet0 00:03:10 00:02:58 10.1.1.1
224.1.1.1 Ethernet0 00:03:10 00:02:58 10.1.1.2
R1#show ip igmp interface ethernet 0
Ethernet0 is up, line protocol is up
Internet address is 10.1.1.1/24
IGMP is enabled on interface
Current IGMP host version is 2
Current IGMP router version is 2
IGMP query interval is 60 seconds
(#ip igmp query-interval 60)每60S發送Query。"query-interval"乘以2等於"querier-timeout"
IGMP querier timeout is 120 seconds
(#ip igmp querier-timeout 120) 非查詢者在120S內沒有收到查詢者的包,自己充當這個角色。
IGMP max query response time is 10 seconds
(#ip igmp query-max-response-time 20) 查詢包中的字段,告訴主機迴應Report的最大響應時間.
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is not set
IGMP activity: 5 joins, 4 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.1 (this system)
IGMP querying router is 10.1.1.1 (this system)
網絡中如果有多個路由器發Query,選舉IP地址小的作爲發送查詢者。
Multicast groups joined by this system (number of users):
224.0.1.40(1)
Show ip mroute 查看多播路由表
Ethernet0 is up, line protocol is up
Internet address is 10.1.1.1/24
IGMP is enabled on interface
Current IGMP host version is 2
Current IGMP router version is 2
IGMP query interval is 60 seconds
(#ip igmp query-interval 60)每60S發送Query。"query-interval"乘以2等於"querier-timeout"
IGMP querier timeout is 120 seconds
(#ip igmp querier-timeout 120) 非查詢者在120S內沒有收到查詢者的包,自己充當這個角色。
IGMP max query response time is 10 seconds
(#ip igmp query-max-response-time 20) 查詢包中的字段,告訴主機迴應Report的最大響應時間.
Last member query count is 2
Last member query response interval is 1000 ms
Inbound IGMP access group is not set
IGMP activity: 5 joins, 4 leaves
Multicast routing is enabled on interface
Multicast TTL threshold is 0
Multicast designated router (DR) is 10.1.1.1 (this system)
IGMP querying router is 10.1.1.1 (this system)
網絡中如果有多個路由器發Query,選舉IP地址小的作爲發送查詢者。
Multicast groups joined by this system (number of users):
224.0.1.40(1)
Show ip mroute 查看多播路由表
R1#debug ip igmp 開啓debug,查看加、離組消息
------------------------------------------------------------------------------------------
二層組播:
------------------------------------------------------------------------------------------
二層組播:
<CGMP(Cisco Group Management Protocol)>
在路由器和交換機上都要配,用於控制二層交換機如何轉發多播流量,CISCO私有的
在路由器和交換機上都要配,用於控制二層交換機如何轉發多播流量,CISCO私有的
for 2900支持
R3(config-if)#ip cgmp 在R3的某個接口起CGMP
SW3#show cgmp 2900交換機默認已起用CGMP,3550和2950不支持
SW3(config)#cgmp 在交換機上起cgmp
SW3#show cgmp 2900交換機默認已起用CGMP,3550和2950不支持
SW3(config)#cgmp 在交換機上起cgmp
路由器會向交換機發送一個CGMP的消息,包含以下內容:
Group Destination Address (GDA) 組MAC地址
Unicast Source Address (USA) 單播源地址
Group Destination Address (GDA) 組MAC地址
Unicast Source Address (USA) 單播源地址
Debug ip cgmp
<IGMP Snooping>
只要配置交換機,業界標準
正常情況下,交換機只看二層頭部,不看三層頭部,但是在IGMP的snooping中,交換機看到了三層頭部。
只要配置交換機,業界標準
正常情況下,交換機只看二層頭部,不看三層頭部,但是在IGMP的snooping中,交換機看到了三層頭部。
交換機通過截獲主機發出的report包和離組包,就可以知道哪個接口加入了組或離開了組
Show mac-address-table multicast 查看交換機多播MAC表
Sw1(config)#ip igmp snooping
Sw1(config)#ip igmp snooping vlan 1 基於VLAN 1 起用IGMP的SNOOPING
SW1#show ip igmp snooping
SW1#show ip igmp snooping groups
Sw1(config)#ip igmp snooping
Sw1(config)#ip igmp snooping vlan 1 基於VLAN 1 起用IGMP的SNOOPING
SW1#show ip igmp snooping
SW1#show ip igmp snooping groups
2950,3550中默認就開啓這一命令
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
< Tree >
組播路由條目通常在兩種情況下產生:收到流量;收到加組消息
·Shortest-Path / Source Distribution Tree
SPT(Shortest Path Tree)
(S,G) (192.168.1.1,224.1.1.1)
SPT(Shortest Path Tree)
(S,G) (192.168.1.1,224.1.1.1)
源樹的優點:在信源和接收方之間創建一條最優的路徑,可以最大限度的降低轉發多播流的網絡延遲。
源樹的缺點:同時也增加了開銷,路由器要針對每個信源存儲路徑信息,在包含數千個信源的網絡中,這種開銷是龐大的。
源樹的缺點:同時也增加了開銷,路由器要針對每個信源存儲路徑信息,在包含數千個信源的網絡中,這種開銷是龐大的。
一個源一棵樹.適用於比較多接收者時使用.每3分鐘修剪一次.推模型.一般運行在DENSE模式下.
·Shared Distribution Tree
RP(Rendezvous Point)
(*,G) (*,224.1.1.1)
共享樹的優點:每臺路由器存儲的信息較少,降低內存消耗。
共享樹的缺點:選擇信源到接收方的路徑不是最優的。所以要慎重考慮RP的位置。
RP(Rendezvous Point)
(*,G) (*,224.1.1.1)
共享樹的優點:每臺路由器存儲的信息較少,降低內存消耗。
共享樹的缺點:選擇信源到接收方的路徑不是最優的。所以要慎重考慮RP的位置。
拉模型.RP可以手工指定.receiver端向RP端發出register包.一般運行在SPARSE模式下.
< RPF (Reverse Path Forwarding)>
RPF校驗的目地是爲了防環和防止重複報文
RPF的規則:收到組播包的方向(接口)也必須是本路由器用來向組播包的源地址進行數據轉發的方向(接口),否則扔掉數據包。RPF限定了路由器只能從唯一的一個接口接收組播流量。
upstream ( 前往信源的方向)
downstream ( 前往接收方的方向)
upstream ( 前往信源的方向)
downstream ( 前往接收方的方向)
RPF選接口的比較原則:
1、lower AD 同樣的路由,選最小AD值的路由所用的接口爲RPF接口
2、longest match 同樣的路由,比最長掩碼
3、lower metric 如果IGP是負載均衡,同樣的路由,掩碼一樣長,比metric
4、higher ip 以上都一樣,比接口IP地址
1、lower AD 同樣的路由,選最小AD值的路由所用的接口爲RPF接口
2、longest match 同樣的路由,比最長掩碼
3、lower metric 如果IGP是負載均衡,同樣的路由,掩碼一樣長,比metric
4、higher ip 以上都一樣,比接口IP地址
因爲RPF校驗需要用到單播路由表,所以跑組播前需要運行單播路由協議。
通過寫多播靜態路由來指定自已的信源接口
ip mroute 1.1.1.0 255.255.255.0 12.1.1.2 寫去到源從哪個接口發出,1.1.1.0是源,12.1.1.2是下一跳
show ip mroute static 查看靜態多播路由,注意多播靜態路由的AD是0
ip mroute 1.1.1.0 255.255.255.0 12.1.1.2 寫去到源從哪個接口發出,1.1.1.0是源,12.1.1.2是下一跳
show ip mroute static 查看靜態多播路由,注意多播靜態路由的AD是0
"RPF check fails"-----先查多播路由表,再查單播路由表
RPF接口默認每5秒檢測一次(檢測多播路由表裏面的條目的rpf接口和單播路由表中流量的去接口是否一樣)
<TTL>
接口的TTL閥值必須<=數據包的ttl值,接口才會轉發
入向數據包的TTL值大於或等於出向接口的TTL值時,才轉發.
注意TTL值在入向不減,出方向才減,減過之後才做這一比較
TTL值的作用:通常用來控制組播的傳輸範圍。
例如:在邊界路由器上設定TTL閥值爲128,內部的源發出的組播包初始TTL值控制爲127,就能起到作用。
例如:在邊界路由器上設定TTL閥值爲128,內部的源發出的組播包初始TTL值控制爲127,就能起到作用。
使用ACL過濾多播組
R1(config)#access-list 1 permit 239.129.0.0 0.0.255.255
R1(config-if)#ip multicast boundary 1 只有列表1中被允許才能通過,不分in,out方向
R1(config)#access-list 1 permit 239.129.0.0 0.0.255.255
R1(config-if)#ip multicast boundary 1 只有列表1中被允許才能通過,不分in,out方向
Show ip pim int s0 detail
Show ip igmp int s0
R1(config-if)#Ip multicast ttl-threshold 2 設置TTL值,必須在接口下,默認爲0
Show ip igmp int s0
R1(config-if)#Ip multicast ttl-threshold 2 設置TTL值,必須在接口下,默認爲0
<PIM(Protocol independent Multicast)>
·PIM的報文直接封裝在IP包中,在IP中的協議號是103
·協議無關的組播,指的是和單播協議無關,不管是何種單播路由協議,PIM都可以使用他們實現組播轉發。
·使用現有單播路由表實現RPF校驗。
·由於不必發送組播路由更新,所以PIM比其他組播協議開銷降低了很多。
·協議無關的組播,指的是和單播協議無關,不管是何種單播路由協議,PIM都可以使用他們實現組播轉發。
·使用現有單播路由表實現RPF校驗。
·由於不必發送組播路由更新,所以PIM比其他組播協議開銷降低了很多。
組播路由器之間也要建鄰居:
Hello:30S 發向224.0.0.13
Hold :30*3.5= 1分45秒
Hello:30S 發向224.0.0.13
Hold :30*3.5= 1分45秒
多播路由表的幾個要素:
1、源
2、目的
3、入接口
4、RPF鄰居
5、出接口
1、源
2、目的
3、入接口
4、RPF鄰居
5、出接口
R1#debug ip packet detail
*Mar 1 00:15:44.207: IP: s=12.1.1.2 (Serial0), d=224.0.0.13, len 54, rcvd 0, proto=103
*Mar 1 00:15:44.207: IP: s=12.1.1.2 (Serial0), d=224.0.0.13, len 54, rcvd 0, proto=103
·MA網絡PIM通過Hello包來選擇DR,在IGMPv1中,DR將成爲Querier。
DR選舉方式:1.Priority大的(默認=1)
2.IP地址大的
DR可搶佔。只有以太口才選DR,串口不選DR。
如果運行的是IGMPv2,IGMPV2自已會選查詢者,DR只擔負數據轉發任務
DR的作用:1、充當IGMPV1的Querier
2、在Dense無用
3、sparse中 send&receive join®ister message
DR的作用:1、充當IGMPV1的Querier
2、在Dense無用
3、sparse中 send&receive join®ister message
R1(config-if)#ip pim dr-priority 2 在接口下改優先級
R1#show ip pim neighbor
PIM Neighbor Table
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
10.1.1.2 Ethernet0 00:31:45/00:01:30 v2 3 / DR S
10.1.1.2的優先級爲3,且爲DR
·PIM-DM ( Dense Mode )
R1#show ip pim neighbor
PIM Neighbor Table
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
10.1.1.2 Ethernet0 00:31:45/00:01:30 v2 3 / DR S
10.1.1.2的優先級爲3,且爲DR
·PIM-DM ( Dense Mode )
密集模式原理:當第一跳路由器收到組播流量後,會向整個網絡泛洪,網絡中的每一個分枝都能收到流量,然後其中一些沒有用戶的分枝會自動進行修剪。(先泛洪,後修剪)
·在Dense模式中Flood&prune 每三分鐘就要做一次
·在Dense模式中Flood&prune 每三分鐘就要做一次
·被剪掉的路由器如果有用戶加組了,也會主動發出嫁接信息重新接收組播流量。(發給rpf接口,向上遞歸rpf接口,這也是修剪後多播條目需要存在的原因)
R2#show ip igmp int e0
Multicast designated router (DR) is 10.1.1.2 (this system)
IGMP querying router is 10.1.1.2 (this system)
Multicast designated router (DR) is 10.1.1.2 (this system)
IGMP querying router is 10.1.1.2 (this system)
Graft
Graft-Ack
Graft-Ack
D:表示組播組是一個密集模式,僅在(*,G)出現.
C:有直接的組成員,會在(*,G)和(S,G)都出現.
L:表示自己就是組成員,會在(*,G)和(S,G)都出現.
P:輸出接口爲空/輸出接口都處於Prune狀態,結果Prune會從此(S,G)送至上游RPF鄰居.會在(*,G)和(S,G)都出現.
T:信息經(S,G)轉發,只要收到第一個(S,G)包,就設置該標誌.因此,T始終都會出現,僅在(S,G)出現.
J:........................
R2#show ip mroute
(*, 224.1.1.1), 00:14:14/stopped, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:54/00:00:00
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:54/00:00:00
(14.1.1.4, 224.1.1.1), 00:14:14/00:00:00, flags: T
Incoming interface: Ethernet0, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:54/00:00:00
Incoming interface: Ethernet0, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:54/00:00:00
(*, 224.1.1.1), 00:14:16/00:02:58, RP 0.0.0.0, flags: D
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:56/00:00:00
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Serial1, Forward/Dense, 00:13:56/00:00:00
如果沒有組播流,(*,G)等到(S,G)消失後,從3分鐘倒計時.
·在MA網絡中,如果運行的是dense模式,會選出一個前轉路由器,通過assert消息選出。
前轉路由器的選舉規則:
1、比較去往源的路由的AD值
2、比較去往源的Metric值
3、IP地址大的成爲前轉路由器
前轉路由器的選舉規則:
1、比較去往源的路由的AD值
2、比較去往源的Metric值
3、IP地址大的成爲前轉路由器
PIM通用規則一:無論在什麼時候,只要出現了(S,G),就會出現它的父項(*,G),但(*,G)不作轉發選擇。
當組播流量停止後,(S,G)條目只會在多播路由表中保存三分鐘。
-------------------------------------------------------------------------------------
·PIM-SM ( Sparse Mode )
稀疏模式原理:在稀疏模式中,組播網絡必須要先選舉出一個RP,並且要讓網絡中所有的路由器都知道RP的位置。然後當第一跳路由器得到組播流量時,只需要將流量轉發給RP就可以了。用戶如果想要接收流量,需要最後一跳路由器去向RP發出申請,去要流量。
·在稀疏模式中,第一跳路由器到RP之間形成源樹,RP到最後一跳路由器之間形成共享樹。
指定RP的方式
1、 Static 指定RP(一般用環回口),並通告進IGP
2、 auto RP
3、 BSR
1、 Static 指定RP(一般用環回口),並通告進IGP
2、 auto RP
3、 BSR
PIM-SPARSE模式詳解:
共享樹的形成:
一、PC發出一個igmp join(224.1.1.1)消息給last router。
二、R5形成共享樹條目(*,G),並且向R4發出一個Pim join(*,224.1.1.1)的加入消息。
三、R4形成(*,G),並且向R3發起一個Pim join(*,224.1.1.1)的加入消息。
四、R3形成(*,G)
一、PC發出一個igmp join(224.1.1.1)消息給last router。
二、R5形成共享樹條目(*,G),並且向R4發出一個Pim join(*,224.1.1.1)的加入消息。
三、R4形成(*,G),並且向R3發起一個Pim join(*,224.1.1.1)的加入消息。
四、R3形成(*,G)
源樹的形成:
一、source發出流量給first route(R1)
二、R1將源發過來的組播信息流的組播包封裝爲單播包(unicast register packet),發送到RP
register包的封裝:DIP:23.1.1.3|SIP:1.1.1.1|224.1.1.1|server'IP
三、RP收到register packet後,做三件事
1、解封裝,並沿共享樹發下去
2、產生(S,G)條目,並且RPF校驗指向源
3、向source發起一個(S,G)的加入消息
四、R2形成源樹(S,G),並且向R1發起一個(S,G)的加入。
五、R1形成源樹(S,G),接着做兩件事:
1、沿(S,G)源樹發出組播
2、封裝unicast register packet繼續發
六、RP從(S,G)收到multicast packet後,向first-hop router (R1)發出register-stop包。
七、R1收到register-stop包後,停止單播register packet
八、last router切換到源樹,向源發出(S,G)的join消息
一、source發出流量給first route(R1)
二、R1將源發過來的組播信息流的組播包封裝爲單播包(unicast register packet),發送到RP
register包的封裝:DIP:23.1.1.3|SIP:1.1.1.1|224.1.1.1|server'IP
三、RP收到register packet後,做三件事
1、解封裝,並沿共享樹發下去
2、產生(S,G)條目,並且RPF校驗指向源
3、向source發起一個(S,G)的加入消息
四、R2形成源樹(S,G),並且向R1發起一個(S,G)的加入。
五、R1形成源樹(S,G),接着做兩件事:
1、沿(S,G)源樹發出組播
2、封裝unicast register packet繼續發
六、RP從(S,G)收到multicast packet後,向first-hop router (R1)發出register-stop包。
七、R1收到register-stop包後,停止單播register packet
八、last router切換到源樹,向源發出(S,G)的join消息
注意:在源樹中,RPF接口是去往源的接口
在共享樹中,RPF接口是去往RP的接口
在共享樹中,RPF接口是去往RP的接口
SPT的閥值切換:
可以在最後一跳路由器設定一個閥值,當收到的多播包超過閥值後,切換到源樹,默認情況下閥值等於0,也就是說一有流量播下來就立馬切換到源樹。
可以在最後一跳路由器設定一個閥值,當收到的多播包超過閥值後,切換到源樹,默認情況下閥值等於0,也就是說一有流量播下來就立馬切換到源樹。
產生RP的三種方法:
一、靜態RP
Router(config)#ip pim rp-address 1.1.1.1 在每臺路由器上都指定
二、Auto RP(cisco私有)
原理:在網絡中先指定一臺MA(映射代理路由器),然後再指定多個想成爲RP的候選路由器。每一個候選路由器都會向MA發出自已的申請,參與競選。最後,由MA選出RP,再將RP的地址發給網絡中的每一臺路由器。
RP選舉規則:IP地址大的成爲RP
注意:c-rp/ma 的用來參選的loopback口一定要宣告進IGP
注意:c-rp/ma 的用來參選的loopback口一定要宣告進IGP
注意:Auto RP必須運行在sparse-dense模式下,cisco私有技術。
C-RP-- 候選RP,也就是想成爲RP的路由器
MA-- 映射代理,MA的多播地址:224.0.1.39,一旦指定MA,它的每一個組播接口都會加入224.0.1.39
MA-- 映射代理,MA的多播地址:224.0.1.39,一旦指定MA,它的每一個組播接口都會加入224.0.1.39
所有運行組播的路由器都會加入224.0.1.40
第一步:配置MA
R1(config)#ip pim send-rp-discovery loopback 0 scope 5
在MA上配,會每60S向224.0.1.40發送一個discovery消息,規定了只能傳5跳
第二步:配置候選RP
R1(config)#ip pim send-rp-announce loopback 0 scope 5
配置爲候選RP,向224.0.1.39每60秒發送一個RP-Announce,且只能傳5跳
R1(config)#ip pim send-rp-announce loopback 0 scope 5
配置爲候選RP,向224.0.1.39每60秒發送一個RP-Announce,且只能傳5跳
注意點:
R1(config)#int lo0
R1(config-if)#ip pim sparse-dense-mode(要確保loopback口也運行PIM)
R1(config)#int lo0
R1(config-if)#ip pim sparse-dense-mode(要確保loopback口也運行PIM)
特定組--
ip pim accept-rp 1.1.1.1 MUL-GROUP 只允許特定組接受1.1.1.1這個RP的消息
ip pim accept-rp 1.1.1.1 MUL-GROUP 只允許特定組接受1.1.1.1這個RP的消息
ip pim send-rp-announce Loopback0 scope 20 group-list MUL-GROUP 只允許lo0口參與特定組的RP選舉
ip access-list standard MUL-GROUP
permit 224.1.1.1
permit 224.1.1.1
R1(config)#ip pim rp-address 1.1.1.1 override 默認情況下,Auto-RP優於靜態RP,如果想靜態優先,打上這一命令
R3#show ip pim rp mapping (in-use )
Clear ip pim rp-mapping 清除RP映射表項
三、BSR 自舉路由器(國際標準)
Router(config)#ip pim bsr-candidate loopback0 指定BSR
Router(config)#ip pim rp-candidate loopback0 指定想成爲RP的路由器
Router(config)#ip pim bsr-candidate loopback0 指定BSR
Router(config)#ip pim rp-candidate loopback0 指定想成爲RP的路由器