为什么要使用组播:
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的路由器
转载于:https://blog.51cto.com/weijishijie/182669