IS-IS本地组播拓扑
ISIS本地组播拓扑Local MT(Local Multicast Topology)是在不改变设备间的协议报文的前提下,在本地为组播创建单独的拓扑,从而实现骨干网内TE tunnel(Shortcut类型)和组播的混合部署;
1、产生背景
当网络中同时部署了组播和TE tunnel时,组播的功能可能会受到TE tunnel的影响,导致业务不可用;
在TE tunnel上配置了ISIS Shortcut后,ISIS计算出来的路由的出接口可能不再是实际的物理接口而是TE tunnel接口,根据到达组播源地址的单播路由,路由器从TE tunnel接口发送组播加入报文(Report报文),被TE tunnel跨越的路由器无法感知到该报文,因而不会建立组播转发表项,由于TE tunnel是单向的,从组播源发出的组播数据会直接通过物理接口发送到这些被跨越的路由器,但是因为这些路由器上并没有组播转发表项,导致组播数据报文丢失;
如上图所示,RA、RB、RC、RD、RE为Level-2路由器并运行ISIS路由协议实现互通,且组播业务正常,然后建立从RB-RD的单向MPLS TE tunnel,并使用ISIS Shortcut(AA),在RC上查看组播路由表,没有任何组播转发表项,组播业务中断;
用户和组播服务器发送组播报文流程如下:
(1)用户向RA发送Report消息,请求加入组播组,RA向RB发送加入组播组请求(Join报文);
(2)当该Join报文到达RB时,RB选择TE tunnel 1/0/0作为RPF(Reverse Path Forwarding)借口,并从RB的G 2/0/0接口通过,PLS标签转发至RC;
(3)在RC上,由于报文是通过MPLS标签转发,所以RC不会对组播Join报文进行处理,即不会建立组播转发表项,并且在本拓扑中,RC是该MPLS转发的倒数第二跳,它会去掉MPLS标签,通过RC的G 2/0/0接口将组播Join报文发送给RD;
(4)RD收到该组播Join报文后建立组播转发表项,下游接口为G 2/0/0,上游接口为G 1/0/0,然后继续向RE发送组播Join报文, 至此建立SPT树;
(5)当组播源发出流量至RD时,RD会将流量转发至RC,由于之前RC没有建立组播报文的转发表项,所以流量被丢弃,导致组播业务无法正常进行;
从上面组播报文的发送和返回流程可以看出:组播依靠单播路由表,而且是单向TE tunnel转发组播报文时,会发生问题,可以通过下面方式避免:
(1)手工配置组播静态路由,转发报文;
(2)配置双向TE tunnel,这样组播报文返回时可以通过同一隧道,即被TE tunnel穿越的路由器使用该隧道对发生和返回的组播报文进行转发;
(3)配置MBGP,实现单播和组播拓扑的分离,MBGP为组播单独提供不包含TE tunnel的拓扑,组播对MBGP路由进行RPF检查;
(4)配置本地组播拓扑特性;
上述办法都可以避免组播业务可能中断的情况,但是前三种方法手工配置量大,如果网络环境复杂将不可采取,容易出现错误配置;
2、实现原理
本地组播拓扑特性的核心思想技术:在不改变设备间的协议报文的前提下,在本地为组播创建单独的拓扑,设备支持本地组播拓扑特性,可以避免同时部署了组播和在MPLS TE tunnel上使用IGP Shortcut后导致组播业务不可用的情况;
使用Local MT特性后,位于Shortcut TE tunnel入口起始端的路由器会为组播创建单独的MIGP路由表,保存TE tunnel所对应的物理接口,以保证组播协议报文的转发,从而建立正确的组播路由表项;
(1)创建MIGP路由表
组播协议报文是按照单播路由表进行转发,在RB上使用Local MT特性后,RM会为组播协议创建单独的MIGP路由表,当路由的出接口是TE tunnel时,IGP会为该路由计算出实际的物理出接口,并将其加入到MIGP路由表中;
(2)指导组播协议报文
当转发组播协议报文时,路由器首先查找单播路由表,如果发现下一跳是TE tunnel时,会继续查找MIGP路由表,找到对应的实际物理出接口,指导组播协议报文进行转发;
如上图所示,组播源192.168.3.2/24的上游接口是TE tunnel 1/0/0,ISIS会计算出该路由的实际出接口为G 2/0/0,并将计算出来的这条路由加入到MIGP路由表中,这样组播业务就不会受到TE tunnel的影响,组播协议报文按照MIGP路由表从实际的物理接口转发,并在组播路由表中建立相应的路由表项,实现组播数据的正确转发;