MSDP Lab:
IBGP —— AS 100:R4 is RR ( R4-R2 / R4-R3 )、AS 200:R5 is RR ( R5-R7 / R5-R6 )
EBGP—— R2-R5 / R4-R6 每个路由器通告环回口
R1 为接收者,能够接收源 R5/R6/R7 发向 239.1.1.1 的组播流
1、Bridge
2、IGP(OSPF,其中 R1:no ip routing)
3、BGP,每个路由器通告自己的环回接口
4、将黑色接口运行 PIM SM
5、R2 是 AS 100 的 BSR/RP 候选者,R7 是 AS 200 的 BSR / RP 候选者
6、R4 和 R6 分别要作为两个域的 BSR 边界设备,以防止 BSR 信息的泄露
r4(config)#interface e0/0.46
r4(config-subif)#ip pim bsr-border
r6(config)#interface e0/0.46
r6(config-subif)#ip pim bsr-border
r4#sh ip pim bsr-router
PIMv2 Bootstrap information
BSR address: 2.2.2.2 (?)
Uptime: 00:00:28, BSR Priority: 0, Hash mask length: 0
Expires: 00:01:41
没有使用上述命令 BSR 信息将会默认泄漏到所有的 BGP 邻居中(包括 eBGP 关系)
r4#show ip pim bsr-router
PIMv2 Bootstrap information
BSR address: 7.7.7.7 (?)
Uptime: 00:03:23, BSR Priority: 0, Hash mask length: 0
Expires: 00:02:00
7、R1 作为接收者加入组 239.1.1.1
r1(config)#interface e0/0.13
r1(config-subif)#ip igmp join-group 239.1.1.1
注意:AS 100 因为有接收者的出现,则 R3 会向 R2(RP)加入 SPT(*,239.1.1.1)
r4#show ip pim neighbor(“*”表示是 border)
8、R4 以环回口 4.4.4.4 为源往 239.1.1.1 发送组播流,R3 默认做 SPT 切换行为,这样 R3 会从 SPT 得到组播数据包
9、AS 200 R5 以 5.5.5.5 为源发组播包去往 239.1.1.1,默认情况下因为 R5 的组播流会向 AS 200 的 RP(7.7.7.7)注册。这样就会造成 AS 100 的 RP 有接收者,但找不到源,AS 200 的 RP 知道源但找不到接收者
做完以上 7 步,共享树和源树断裂了,不能够通信,因此需要做第 8 步
因为 R1 作为接收端向本域的 RP(R2)加入(*,239.1.1.1),但 AS 200 的源(R5/R6/R7)也只能向本域 的 RP(R7)注册 SPT
MSDP Session 将 RP(R7)的活动源信息(SA)发给它的邻居 R2。这样 R2 就可以加入 SPT,从而解决了域间组播通信的问题
10、建立 R2 和 R7 的 MSDP 邻居关系
r2(config)#ip msdp peer 7.7.7.7 connect-source loopback 0 remote-as 200
r7(config)#ip msdp peer 1.1.1.1 connect-source loopback 0 remote-as 100
r7#show ip msdp summary
r7#show ip msdp summary
MSDP Peer Status Summary
Peer Address AS State Uptime/ Reset SA Peer Name
Downtime Count Count
2.2.2.2 100 Up 00:10:39 0 0 ?
r7#show tcp brief(查看打开的TCP端口)
r7#show tcp brief
TCB Local Address Foreign Address (state)
B699B968 7.7.7.7.179 5.5.5.5.43299 ESTAB
B6681618 7.7.7.7.50843 5.5.5.5.646 ESTAB
B6BA70D0 7.7.7.7.639 2.2.2.2.14952 ESTAB
B6058CB8 7.7.7.7.42715 6.6.6.6.646 ESTAB
*分别以 R5/R6 为源向 R1 发组播流,结果能够通信是因为 R3 默认做了 STP 切换
12、关闭 R3 SPT 自动切换功能,继续以 5.5.5.5 为源发组播包去往 239.1.1.1,由于 R2 通过 MSDP 得到(5.5.5.5,,239.1.1.1)的 SA 信息后,需要向源 5.5.5.5 加入源树,此时 RPF 校验失败。因为 R2/R5 之间的链路没有开启组播路由协议 (为什么RPF失败
r3(config)#ip pim spt-threshold infinity(关闭 SPT 的自动切换功能)
r2#show ip rpf 5.5.5.5
r2#show ip rpf 5.5.5.5
failed, no route exists
解决校验问题方案:
(1) 写静态路由(不推荐)
r2(config)#ip mroute 5.5.5.5 255.255.255.255 24.1.1.4
r2#show ip rpf 5.5.5.5
RPF information for ? (5.5.5.5)
RPF interface: Ethernet0/0.24
RPF neighbor: ? (24.1.1.4)
RPF route/mask: 5.5.5.5/32
RPF type: multicast (static)
Doing distance-preferred lookups across tables
RPF topology: ipv4 multicast base
r2 对于邻居 r5 通过RPF校验
(2) 建立 MBGP(IPv4 Multicast BGP)邻居关系:
建立 MBGP 邻居关系 = R2 <--> R4 <--> R6 <--> R5,并且 R5 通告 5.5.5.5(这条路由不能用于转发数据,只能用于进行 RPF 校验,但是组播路由比单播路由的优先级更高)
r2(config)#router bgp 100
r2(config-router)#address-family ipv4 multicast
r2(config-router-af)#nei 4.4.4.4 activate
r4(config)#router bgp 100
r4(config-router)#neighbor 6.6.6.6 remote-as 200
r4(config-router)#neighbor 6.6.6.6 update-source loopback 0
r4(config-router)#neighbor 6.6.6.6 ebgp-multihop
r4(config-router)#address-family ipv4 multicast
r4(config-router-af)#nei 2.2.2.2 activate
r4(config-router-af)#nei 2.2.2.2 next-hop-self
r4(config-router-af)#nei 6.6.6.6 activate