实验拓扑
实验需求
网络拓扑、IP地址规划如上图所示;
R1、R2、R3、R4运行OSPF协议,打通网络的单播路由;
R1、R2、R3、R4同时也是组播路由器,运行PIM-SM;
R3为RP,配置Loopback0,IP地址为3.3.3.3,该地址作为RP的地址;
接收者加入组播组224.1.1.1;观察RPT的构建;
在R4上将RPT-SPT的切换设置为永远不切换,同时从源开始发送组播数据,观察源的注册过程、RP到源的SPT建立过程、组播流量沿着RPT下行的过程。
在R4上将RPT-SPT的切换恢复为默认值,同时将R4的GE0/0/1口的OSPF Cost值稍稍调大,观察RPT到SPT的切换过程。
本实验可使用华为自研模拟器eNSP完成。
实验步骤及配置
R1、R2、R3及R4完成接口IP地址的配置,运行OSPF。
R1的基础配置如下:
[R1]interfaceGigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0]ipaddress10.1.12.124 [R1]interfaceGigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1]ipaddress10.1.14.124 [R1]ospf1router-id1.1.1.1 [R1-ospf-1]area0 [R1-ospf-1-area-0.0.0.0]network10.1.12.10.0.0.0 [R1-ospf-1-area-0.0.0.0]network10.1.14.10.0.0.0
R2的基础配置如下:
[R2]interfaceGigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0]ipaddress10.1.12.224 [R2]interfaceGigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1]ipaddress10.1.23.224 [R2]interfaceGigabitEthernet0/0/2 [R2-GigabitEthernet0/0/2]ipaddress10.10.1024 [R2]ospf1router-id2.2.2.2 [R2-ospf-1]area0 [R2-ospf-1-area-0.0.0.0]network10.1.12.20.0.0.0 [R2-ospf-1-area-0.0.0.0]network10.1.23.20.0.0.0 [R2-ospf-1-area-0.0.0.0]network10.10.10.2540.0.0.0 [R2-ospf-1-area-0.0.0.0]quit [R2-ospf-1]silent-interfaceGigabitEthernet0/0/2
R3的基础配置如下:
[R3]interfaceGigabitEthernet0/0/0 [R3-GigabitEthernet0/0/0]ipaddress10.1.23.324 [R3]interfaceGigabitEthernet0/0/1 [R3-GigabitEthernet0/0/1]ipaddress10.1.34.324 [R3]interfaceloopback0 [R3-loopback0]ipaddress3.3.3.3255.255.255.255#该地址作为RP的地址 [R3]ospf1router-id3.3.3.3 [R3-ospf-1]area0 [R3-ospf-1-area-0.0.0.0]network10.1.23.30.0.0.0 [R3-ospf-1-area-0.0.0.0]network10.1.34.30.0.0.0 [R3-ospf-1-area-0.0.0.0]network3.3.3.30.0.0.0
R4的基础配置如下:
[R4]interfaceGigabitEthernet0/0/0 [R4-GigabitEthernet0/0/0]ipaddress10.1.14.4255.255.255.0 [R4]interfaceGigabitEthernet0/0/1 [R4-GigabitEthernet0/0/1]ipaddress10.1.34.4255.255.255.0 [R4]interfaceGigabitEthernet0/0/2 [R4-GigabitEthernet0/0/2]ipaddress10.1.1.254255.255.255.0 [R4]ospf1router-id4.4.4.4 [R4-ospf-1]area0 [R4-ospf-1-area-0.0.0.0]network10.1.14.40.0.0.0 [R4-ospf-1-area-0.0.0.0]network10.1.34.40.0.0.0 [R4-ospf-1-area-0.0.0.0]network1.1.1.2540.0.0.0 [R4-ospf-1-area-0.0.0.0]quit [R4-ospf-1]silent-interfaceGigabitEthernet0/0/2
R1、R2、R3及R4部署PIM-SM
R1的配置如下:
[R1]multicastrouting-enable [R1]interfaceGigabitEthernet0/0/0 [R1-GigabitEthernet0/0/0]pimsm#在接口上激活PIM-SM [R1]interfaceGigabitEthernet0/0/1 [R1-GigabitEthernet0/0/1]pimsm#在接口上激活PIM-SM [R1]pim [R1-pim]static-rp3.3.3.3#设置静态RP地址3.3.3.3
R2的配置如下:
[R2]multicastrouting-enable [R2]interfaceGigabitEthernet0/0/0 [R2-GigabitEthernet0/0/0]pimsm [R2]interfaceGigabitEthernet0/0/1 [R2-GigabitEthernet0/0/1]pimsm [R2]interfaceGigabitEthernet0/0/2 [R2-GigabitEthernet0/0/2]pimsm [R2]pim [R2-pim]static-rp3.3.3.3
R3的配置如下:
[R3]multicastrouting-enable [R3]interfaceGigabitEthernet0/0/0 [R3-GigabitEthernet0/0/0]pimsm [R3]interfaceGigabitEthernet0/0/1 [R3-GigabitEthernet0/0/1]pimsm [R3]interfaceloopback0 [R3-loopback0]pimsm [R3]pim [R3-pim]static-rp3.3.3.3
R4的配置如下:
[R4]multicastrouting-enable [R4]interfaceGigabitEthernet0/0/0 [R4-GigabitEthernet0/0/0]pimsm [R4]interfaceGigabitEthernet0/0/1 [R4-GigabitEthernet0/0/1]pimsm [R4]interfaceGigabitEthernet0/0/2 [R4-GigabitEthernet0/0/2]igmpenable#连接组播接收者的接口激活IGMP [R4]pim [R4-pim]static-rp3.3.3.3
完成配置后,先做一下初步的验证:
displaypimneighbor VPN-Instance:publicnet TotalNumberofNeighbors=2 NeighborInterfaceUptimeExpiresDr-PriorityBFD-Session 10.1.14.1GE0/0/0004000241N 10.1.34.3GE0/0/1003900371N
上述输出的是R4的PIM邻居表,可以看到R4发现了两个PIM邻居。在其他路由器上也做相应的查看,确保PIM邻居都发现完整了。
displaypimrp-info VPN-Instance:publicnet PIMSMstaticRPNumber:1 StaticRP:3.3.3.3
上面的输出查看的是R4的PIM RP信息,我们为R4手工告知了RP的地址,3.3.3.3,其实也就是R3。
组播用户加入组224.1.1.1,查看RPT的建立过程
现在组播接收者PC加入组224.1.1.1(具体的操作方法请见本手册的PIM-DM实验小节,有详细描述),这将触发PC发送IGMP成员关系报告,R4最为最后一跳路由器会从GE0/0/2口上收到这个报告,它便知道该接口下出现了组播组224.1.1.1的成员,它将建立(* , 224.1.1.1)的组播路由表项:
displaypimrouting-table VPN-Instance:publicnet Total1(*,G)entry;0(S,G)entry (*,224.1.1.1) RP:3.3.3.3 Protocol:pim-sm,Flag:WCEXT UpTime:0004 Upstreaminterface:GigabitEthernet0/0/1 Upstreamneighbor:10.1.34.3 RPFprimeneighbor:10.1.34.3 Downstreaminterface(s)information:None
随后R4会向RPF上行接口发送(*,G)PIM Join消息,请求加入共享树RPT。R4如何判断哪个接口是RPF上行接口呢?R4通过单播路由表来判断,对于RPT,PIM路由器在做RPF检查的时候是朝向RP的,因此R4在单播路由表中查找到达RP3.3.3.3的路由,选择路由的出接口作为RPF接口,但是这里由于全网接口COST都是默认值,因此R4上关于3.3.3.3的OSPF路由在R1及R3上出现等价负载均衡,这时R4会选择R1及R3中接口IP较大的作为RPF的主邻居,也就是R3,因此R4的GE0/0/1成为RPF接口。这与上面的输出吻合。
R3在收到R4发上来的PIM Join消息后,它会创建一个(*,224.1.1.1)表项,将收到该报文的接口GE0/0/1添加到下行接口列表中,由于自己就是RP了,因此共享树的一个分支就此建立完成。
displaypimrouting-table VPN-Instance:publicnet Total1(*,G)entry;0(S,G)entry (*,224.1.1.1) RP:3.3.3.3(local) Protocol:pim-sm,Flag:WC UpTime:0009 Upstreaminterface:Register Upstreamneighbor:NULL RPFprimeneighbor:NULL Downstreaminterface(s)information: Totalnumberofdownstreams:1#下行接口列表 1:GigabitEthernet0/0/1 Protocol:pim-sm,UpTime:0009,Expires:0021
源注册、RP到源的SPT建立过程、组播报文的传输过程
接下去我们来观察一下源注册、RP到源的SPT建立过程及组播报文的传输过程。首先在R4上将RPT-SPT的切换设置为永远不切换,因为这个特性我们在下一步中再去关注,这里暂时忽略掉。
[R4]pim [R4-pim]spt-switch-thresholdinfinity
使用上述配置将R4的PIM SPT切换特性设置为永远不切换。
现在组播源开始向组播组224.1.1.1发送组播数据(这可以通过ping 224.1.1.1来模拟)。组播数据到达第一跳路由器R2后,R2会将组播数据封装在单播的PIM Register报文中发往RP也就是R3。
通过在R2的GE0/0/1口上抓包,可以看到Register报文,这是一个单播包,目的地址是3.3.3.3。R3在收到这个包后,解封装发现里头是个(10.10.10.10,224.1.1.1)的组播数据包,因此在本地创建一个(10.10.10.10,224.1.1.1)表项,同时将组播数据包沿着RPT先传下去(从GE0/0/1口发出去)。另一方面,R3紧接着向源的方向(同样是借助单播路由表查找到10.10.10.10的路由来获得RPF接口)发送(10.10.10.10,224.1.1.1)的PIM Join消息,试图在自己与源之间建立一条源树SPT。
displaypimrouting-table VPN-Instance:publicnet Total1(*,G)entry;1(S,G)entry (*,224.1.1.1) RP:3.3.3.3(local) Protocol:pim-sm,Flag:WC UpTime:0057 Upstreaminterface:Register Upstreamneighbor:NULL RPFprimeneighbor:NULL Downstreaminterface(s)information: Totalnumberofdownstreams:1 1:GigabitEthernet0/0/1 Protocol:pim-sm,UpTime:0057,Expires:0033 (10.10.10.10,224.1.1.1) RP:3.3.3.3(local) Protocol:pim-sm,Flag:SPT2MSDPACT UpTime:0022 Upstreaminterface:GigabitEthernet0/0/0 Upstreamneighbor:10.1.23.2 RPFprimeneighbor:10.1.23.2 Downstreaminterface(s)information: Totalnumberofdownstreams:1 1:GigabitEthernet0/0/1 Protocol:pim-sm,UpTime:0022,Expires:-
R2收到这个Join消息后,将GE0/0/1口添加到(10.10.10.10,224.1.1.1)组播表项的下行接口列表中国,然后将组播流量沿着建立好的SPT转发到RP,而不再将组播流量封装到Register报文中。
dispimrouting-table VPN-Instance:publicnet Total0(*,G)entry;1(S,G)entry (10.10.10.10,224.1.1.1) RP:3.3.3.3 Protocol:pim-sm,Flag:SPTLOCACT UpTime:0041 Upstreaminterface:GigabitEthernet0/0/2 Upstreamneighbor:NULL RPFprimeneighbor:NULL Downstreaminterface(s)information: Totalnumberofdownstreams:2 1:GigabitEthernet0/0/1 Protocol:pim-sm,UpTime:0041,Expires:0049 2:Register Protocol:pim-sm,UpTime:0041,Expires:-
SPT切换过程
现在,将R4上之前配置的SPT切换的相关配置去除(undo spt-switch-threshold)。在默认情况下,R4作为最后一跳路由器,只要一收到224.1.1.1的组播数据包,则立即进行SPT的切换。接着将R4的GE0/0/1口OSPF Cost稍稍调大,调节为2(默认是1),我们通过这个动作来模拟这样一个事实:“R4从R1到达源,比从R3到达源要更近”。
现在,当R4从GE0/0/1口收到第一个224.1.1.1的组播数据包时,将启动SPT切换机制,朝着源的方向(也就是R1)发送(10.10.10.10,224.1.1.1)的PIM Join消息,请求加入SPT。
R1收到这个Join消息后,创建(10.10.10.10,224.1.1.1)表项,将GE0/0/1口添加到下行接口列表,同时向R2发送Join消息。R2收到这个Join消息后,将自己的GE0/0/0口添加到(10.10.10.10,224.1.1.1)表项的下行接口列表,并开始向GE0/0/0口下传组播数据。
displaymulticastrouting-table MulticastroutingtableofVPN-Instance:publicnet Total1entry 00001.(10.10.10.10,224.1.1.1) Uptime:0005 UpstreamInterface:GigabitEthernet0/0/2 Listof3downstreaminterfaces 1:GigabitEthernet0/0/0 2:GigabitEthernet0/0/1 3:Register
这一步完成之后,网络中的组播路径树如下所示:
现在R4会从R1及R3收到组播数据的两份拷贝,这显然是没有意义的,因此它向R3发送一个Prune消息,将自己从RPT上剪除。R3收到这个消息后,将接口GE0/0/1从(*,224.1.1.1)表项的下行接口列表中删除,也就不再向GE0/0/1口发送组播流量了,然后发现下行接口列表为空,因此向R2发送一个Prune消息,请求将自己从SPT上修剪掉,因为它不再需要组播流量了。R2收到这个Prune消息后,将GE0/0/1口从表项的下行接口列表中删除。
最终R2的组播表项如下:
displaypimrouting-table VPN-Instance:publicnet Total0(*,G)entry;1(S,G)entry (10.10.10.10,224.1.1.1) RP:3.3.3.3 Protocol:pim-sm,Flag:SPTLOCACT UpTime:0019 Upstreaminterface:GigabitEthernet0/0/2 Upstreamneighbor:NULL RPFprimeneighbor:NULL Downstreaminterface(s)information: Totalnumberofdownstreams:2 1:GigabitEthernet0/0/0 Protocol:pim-sm,UpTime:0019,Expires:0011 2:Register Protocol:pim-sm,UpTime:0019,Expires:-
组播路径树如下:
-
网络
+关注
关注
14文章
7511浏览量
88605 -
PIM-SM
+关注
关注
0文章
3浏览量
6516
原文标题:组播Multicast进阶:PIM-SM实验配置
文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论