Anycast RP
任意播RP
同样离不开MSDP协议,
定义
1 Anycast 最初由RPF1546提出并定义,用于IP网络上通过一个IP地址标识一组特定的服务的主机,同时服务访问并不关心提供服务的具体是哪一台主机,(比如我们常用的8.8.8.8)访问该地址的数据包将被路由器提供的 路由表到最近的一台主机上,因此anycast 指的是找到任意的一个离本地最近的主机
2 anycast RP指的是在同一AS 内设置出多个地址完全一样的RP,形成多个物理RP,一个逻辑RP,当组播路由器使用RP时,将被组播路由器按照单播路由表将其引导到离自己最近的RP上,
3 多个物理RP之间需要 通过MSDP来完成组播源信息的共享,因为第一跳路由器也只能使用离自己最近的RP
4 多个RP之间可以实现相互的分摊和备份
5 RP选择的方法可以是三种 RP-selection 中的任意一种 static bsr autorp
之所以说可以分摊
实际上就是大家都在线,没有主备之分,干不同的活,有人负责加组,有人负注册
实例走一波
这次我们使用BSR
R3上输入
Ip pim bsr-candidate lo 1
Ip pim rp-candidate lo 0
R2上输入
Ip pim rp-candidate lo 0
PS:RP的指定要使用相同的IP地址,而BSR最好不要使用这个地址,因为到时候根本就不知道是谁发的了。
这样一来确认了角色,R3是BSR 又是CRP
而R2只是一台CRP
可以看到其它三台设备上的RP mapping 表,信息源都是R3,information source 3.3.3.3
为什么呢?如果你没有记住的话,请往回看看。
但是R2上啥都没有,因为R3现在自己是RP,不会再向上发了,所以R2上是空的,
那要怎么办呢?
配置MSDP,
让组播数据到达R1后,去请求R2,而R2收到这个register消息之后会将其转发下去,使用SA消息
注意这时在建立 MSDP时,就不可以使用100.1.1.1这个地址了,
为什么呢?因为两个地址是一样的,系统也会报错的
所以需要我们使用另外一个Lo 接口的地址来做
如各自的LO 1 接口
R2(config)#ip msdp peer 3.3.3.3 connect-source lo 1
如果要是使用100.1.1.1 这个接口做为源和目的呢?行不行?
肯定不行,因为两侧的地址是一样的,咋建啊?
R3(config)#ip msdp peer 2.2.2.2 connect-source lo 1
这样一来,就可以完成一些消息的传递了
R1—R2 的register 消息
R2-R3发送的SA 消息
R3-R4的组播流量,走*,G表项
R3上看到了源,形成了S,G表项
并顺着s,g的In口向上发送S,Gjoin 消息
以此类推就到了R1,形成了S,G的表项。
----------------------------------------------------------
CCIE成长之路 --- 梅利