PIM-DM与协议无关的密集模式
虽然进行了修剪,但是(S*G)还是要保留在每台路由器上,并且每隔3分钟又要进行一次全网的泛洪,又再次修剪。
组播实验:
我们在这里将这四台路由器上面配置了IP地址,然后在R2/1上面配置了路由协议。
开启IP组播路由协议:
Source(config)#ip multicast-routing
|
进入接口设置密集模式:
Source(config)#int s1/0
Source(config-if)#ip pim dense-mode
|
这个只需要在R4上面开启,但是在R3上面不需要去开启。
在R2上面配置:
R2(config)#ip multicast-routing
R2(config)#int s1/1
R2(config-if)#ip pim dense-mode
R2(config-if)#int s
*Aug 29 15:04:24.135: %PIM-5-NBRCHG: neighbor 24.0.0.4 UP on interface Serial1/1
R2(config-if)#int s1/0
R2(config-if)#ip pim dense-mode
R2(config-if)#
|
R2做为中间路由器必须将所有接口都配置密集模式
R1也是一样
R1(config)#ip multicast-routing
R1(config)#int s1/0
R1(config-if)#ip pim dense-mode
R1(config-if)#int s/1
*Aug 29 15:05:28.759: %PIM-5-NBRCHG: neighbor
R1(config-if)#int s1/1
R1(config-if)#ip pim dense-mode
R1(config-if)#exit
R1(config)#
|
R3上面配置:
R3(config)#int s1/0
R3(config-if)#ip igmp join-group 224.1.1.1
R3(config-if)#
|
这条命令是加组
它会主动发送一个组成员关系给他的上游路由器。
查看:
R1#sh ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.1.1.1), 00:01:13/00:02:15, R
Incoming interface: Null, RPF nbr
Outgoing interface list:
Serial1/1, Forward/Dense, 00:01:13/00:00:00
Serial1/0, Forward/Dense, 00:01:13/00:00:00
(*, 224.0.1.40), 00:02:29/00:00:31, R
Incoming interface: Null, RPF nbr
Outgoing interface list:
Serial1/0, Forward/Dense, 00:02:29/00:00:00
R1#
|
查看R1的组播路由。
Source#ping 224.1.1.1
对于组播地址的
PING
只发一个包。
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:
Reply to request 0 from
Source#
|
再去R1上面查看组播路由:
R1#sh ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
*
就相当于汇总
(*, 224.1.1.1), 00:05:05/stopped, R
Incoming interface: Null, RPF nbr
Outgoing interface list:
Serial1/1, Forward/Dense, 00:05:05/00:00:00
Serial1/0, Forward/Dense, 00:05:05/00:00:00
(24.0.0.4, 224.1.1.1), 00:02:19/00:00:48, flags: T T
表示源分发树
Incoming interface: Serial1/0, RPF nbr
Outgoing interface list:
组播流出接口
Serial1/1, Forward/Dense, 00:02:19/00:00:00
使用的密集模式
(*, 224.0.1.40), 00:06:21/stopped, R
Incoming interface: Null, RPF nbr
Outgoing interface list:
Serial1/0, Forward/Dense, 00:06:21/00:00:00
|
退组:
选在R4上面去PING 50个包:
Source#ping 224.1.1.1 repeat 50
Type escape sequence to abort.
Sending 50, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:
Reply to request 0 from
Reply to request 1 from
Reply to request 2 from
Reply to request 3 from
这里后面点就表示这条树已经不存在了。
Source#
|
在R3上面退组:
R3(config)#int s1/0
R3(config-if)#no ip igmp join-group 224.1.1.1
|
再去R1上面去看看退组以后的效果:
R1#sh ip mroute
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 224.1.1.1), 00:11:32/stopped, R
Incoming interface: Null, RPF nbr
Outgoing interface list:
Serial1/0, Forward/Dense, 00:11:32/00:00:00
(24.0.0.4, 224.1.1.1), 00:01:00/00:02:11, flags: PT
标志位为
PT/
修剪的源分发树
Incoming interface: Serial1/0, RPF nbr
Outgoing interface list: Null
进行了修剪,出接口为空。
(*, 224.0.1.40), 00:12:48/stopped, R
Incoming interface: Null, RPF nbr
Outgoing interface list:
Serial1/0, Forward/Dense, 00:12:48/00:00:00
|
在R2与R1上面是一样的效果。
PIM-SM:
要同时使用源分发树和共享分发树:从RP到接收端使用的是共享分发树
两种情况下使用源分发树:
1、
从源的第一跳路由器到RP之间使用源分发树;用于源向RP注册时使用
2、
当从源的第一跳路由器到RP之间使用源分发树并且从RP到接收端使用共享分发树时,路由器智能的发现了在源和接收方之间还有比现在更好的路径可用,就切换到那条更好的路径上去传输,在那条更好路径上使用的就是源分发树;这就叫源分发树switchover
四个步骤:
1、
RP的发现:所有的分支路由器都知道RP在什么地方,必须是可达的。
2、
共享分发树的构建:RP与接收端
3、
源向RP的构建
4、
STP Switchover找到一条更好的路由,就抛弃了以前的RP
实验:第一步分支路由器发现RP,当然也包括最初的定义RP
第一、手工的指定那台是RP
第二、自动选举RP(Auto-RP)
1、它允许所有的分支路由器,去自动的发现这个RP
2、在任何PIM-SM域里面不管在任何时间任何组里面只能有一个RP
3、第一个组播组被映射到单个的RP(组到RP的映射)
为了保证为了阻止单个RP失败,我们都宣告自己为RP,但最终决定谁来作RP,我们都成为C-RP
4、第一个C-RP都要宣称自己是RP,并且每一个C-RP每隔60秒宣告一次我是RP,并且发送给224.1.1.39。
只有一台路由器在监听(224.1.1.39),这台路由器就叫MAPPING AGENT来判断谁成为RP。
选举原则就是我通告的地址进行比较,谁大成为RP
当MAP Ag选出了RP以后,它就会发送224.0.0.40给其他路由器,这时所有的路由器都去监听这个地址。
MAPPING AGENT(映射代理)可以配置。
C-RP默认认为所有组播组服务224.0.0.0/4;C-RP的选举原则是谁的IP地址(随着通告信息发送)大谁就是RP,往224.0.0.39上发;注意一个C-RP也可以通告它自己是其它组的RP;仅仅只有MAPPING AGENT路由器监听这个地址224.0.0.39,由它通过最高IP地址决定谁能成为RP;组播组和选出的RP会形成一个映射叫做组到RP的映射;MAPPING AGENT路由器周期性的往224.0.0.40上发送RP发现消息,所有的路由器都监听这个地址
RP的发现有两种方式:
1、手工静态在每台路由器上配置R
4/1/2
Ip pim rp-address x.x.x.x
在R4的配置:
Host Source
Ip route
0.0.0
.0 0.0.0.0 24.0.0.2 确保路由通畅
Ip multicast-routing 启用组播路由先择协议
Ip pim autorp listener 监听MAP-agent发送的关于RP的信息
Int s1/0
Ip pim sparse-mode
R2
Ip multicast-routing
Ip pim autorp listener
接口下面启用
Ip pim send-rp-announce loop 2 scope 10 此命令说明R2是台C-RP,以LOOP2作为通告接口,它的地址作为竞选RP的竞争地址,通告传播范围scope默认是1,改为10,其实就是TTL值,此时回车表示该C-RP为所有组服务,如果需要指定,继续往下配置。
R1的配置:
Ip multicast-routing
Ip pim autorp listener
Ip pim send-rp-discovery loop 1 scope 10 此命令说明了R1是台MAP-Agent
R3的配置:
Ip multicast-routing
Ip pim autorp listener
Ip pim send-rp-announce loop 3 scope 10
R5的配置:
Ip igmp join-group 224.1.1.1加组命令
查看:R
4/2/1
#sh ip pim nei 看组播路由器的邻居
Source#ping 224.1.1.1 对于组播地址的PING只发一个包
Source#sh ip pim rp mapping 如果能看到以下的内容,则说明源在RP上面注册已经成功
第二步构建共享分发树:
一但所有的分支路由器发现了RP,他们就会构建一个(*,G)
上图中的路由器是指从RP到接收端所经过的路由器
修剪?
第三步源去RP注册,源不管RP在哪,它只把流量发送给与自己直连的第一台路由器,这台路由器就会去查看自己是否有group-RP的映射条目,也就是说这个路由器必须知道RP在哪里,知道后通过单播路由表向外发送一个PIM的注册消息,当RP收到注册消息后,它做abc三件事:
A、
RP将全创建一个(S,G)条目放在他的组播表里面,而且它全生成一个源分发树。
B、
一但源分发树建立起来以后,流量将发送给RP,它将发送一个PIM Reginter-Stop Mennge停止注册。
C、
一但RP收到了从源发过来的流量,它将通过它与接收端的共享分发树转发流量。
第四步:switchover此处不再介绍了(它还是依赖于IGP)
http://blog.51cto.com/ltyluck/207225
本文转自 ltyluck 51CTO博客,原文链接:http://blog.51cto.com/ltyluck/207225