## IPv4 IPv6 多拓扑 ![[45ece9cd706ec7a814d2efc4f7b216ef_MD5.png]] <center>图一</center> 在IS-IS协议中,如果指定拓扑类型为标准或兼容模式,当设备在某接口只建立IPv4或只建立IPv6邻居时,都会在标准拓扑中发布该接口的邻居信息。此时网络中的其他设备无法区分该接口是否同时配置了IPv4和IPv6地址,本台设备和其他设备都会在标准拓扑中使用该接口同时进行IPv4和IPv6路由计算,可能会导致未配置地址族的流量中断(路由黑洞,比如图一的DeviceB)。因此建议配置设备的拓扑类型为IPv6模式,与IPv4业务隔离。如果当前网络拓扑为标准模式,建议将网络拓扑升级为IPv6模式。 配置方法: ![[d7423b36edad4581c7f0c262a5ca3a17_MD5.png]] <center>图二</center> ``` # sysname DeviceA # isis 1 is-level level-1 ipv6 enable topology ipv6 <--- network-entity 10.0000.0000.0001.00 # interface GigabitEthernet1/0/0 undo shutdown ipv6 enable ipv6 address 2001:db8:1::2/64 isis ipv6 enable 1 # return ``` 如果需要自定义多拓扑,可以使用如下配置: ``` # sysname DeviceA # ip topology red <--- # ipv6 topology blue <--- # isis 1 cost-style wide network-entity 86.0000.0000.0001.00 ipv6 enable topology ipv6 <--- # topology red topology-id 10 <--- # ipv6 topology blue topology-id 20 <--- # interface GigabitEthernet1/0/0 undo shutdown ip address 192.168.1.1 255.255.255.0 isis enable 1 isis cost 4 ip topology red enable <--- isis topology red <--- # interface GigabitEthernet2/0/0 undo shutdown ipv6 enable ipv6 address 2001:db8:1::1/64 isis ipv6 enable 1 ipv6 topology blue enable <--- isis ipv6 topology blue <--- # return ``` ``` # sysname DeviceB # ip topology red # isis 1 network-entity 86.0000.0000.0002.00 # topology red topology-id 10 # # interface GigabitEthernet1/0/0 undo shutdown ip address 192.168.1.2 255.255.255.0 isis enable 1 ip topology red enable isis topology red # interface GigabitEthernet2/0/0 undo shutdown ip address 192.168.2.1 255.255.255.0 isis enable 1 isis cost 3 ip topology red enable isis topology red # return ``` ## 本地组播拓扑 当网络中同时部署了组播和MPLS TE-Tunnel时,且TE-Tunnel上配置了IGP Shortcut,即IS-IS协议在进行SPF计算时会使用处于Up状态的TE-Tunnel,因此,IS-IS路由计算得到的出接口可能不是实际的物理接口。当转发组播报文时,根据IS-IS计算的路由表,报文会通过TE-Tunnel转发,造成被TE-Tunnel跨越的路由器无法感知组播报文,也不能建立组播转发表项,从而导致组播报文被丢弃。 Local MT(Local Multicast Topology,本地组播拓扑)特性可以实现在本地为组播创建单独的拓扑,当IGP计算出的路由的出接口为IGP-Shortcut(AA)类型的TE-Tunnel时,同时为该路由计算出一个(或一组)实际的物理出接口,可以有效解决TE-Tunnel与组播的冲突问题。 ![[12c61ffac041553476e6b5219ac725a6_MD5.png]] 用户和组播服务器发送组播报文流程如下: 1. 用户向DeviceA发送Report消息,请求加入组播组;DeviceA向DeviceB发送加入组播组请求(Join报文)。 2. 当该Join报文到达DeviceB时,DeviceB选择TE-Tunnel1/0/0作为RPF(Reverse Path Forwarding)接口,并从DeviceB的Interface2接口通过MPLS标签转发至DeviceC。 3. 在DeviceC上,由于报文是通过MPLS标签转发,所以DeviceC不会对该组播Join报文进行特殊处理,即不会建立组播转发表项。并且在本图的拓扑中,DeviceC是该MPLS转发的倒数第二跳,它会去掉MPLS标签,通过DeviceC的Interface2接口将组播Join报文转发给DeviceD。 4. DeviceD收到该组播Join报文后建立组播转发项,下游接口为Interface2,上游接口为Interface1,然后继续向DeviceE发送组播Join报文,至此建立SPF树。 5. 当组播源发出流量至DeviceD时,DeviceD会将流量转发至DeviceC,由于之前DeviceC没有建立组播报文的转发表项,所以流量被丢弃,导致组播业务无法正常进行。 为解决上述问题,IS-IS协议引入了Local MT(Local Multicast-Topology,本地组播拓扑)特性。 使能本地MT特性后,组播报文转发流程如下图所示: ![[3354379317e445fa21a6c11303244c66_MD5.png]] 1. 创建MIGP(Multicast IGP)路由表 1. 位于Shortcut TE-Tunnel入口起始端的DeviceB会为组播创建单独的MIGP路由表,保存TE-Tunnel所对应的物理接口,以保证组播协议报文的转发,从而建立正确的组播路由表项。当路由的出接口是TE-Tunnel时,IS-IS会为该路由计算出实际的物理出接口,并将其加入到MIGP路由表中; 2. 指导组播协议报文转发 1. 当转发组播协议报文时,路由器首先查找单播路由表。如果发现下一跳是TE-Tunnel时,会继续查找MIGP路由表,找到对应的实际物理出接口,指导组播协议报文进行转发。如组播源Server的上游接口是TE-Tunnel1/0/0,IS-IS会计算出该路由的实际出接口为Interface2,并将计算出来的这条路由加入到MIGP路由表中。这样组播业务就不会受TE-Tunnel的影响,组播协议报文按照MIGP路由表从实际的物理出接口转发,并在组播路由表中建立相应的路由表项,实现组播数据的正确转发。 --- ![[3445f0f60d253cbd74169434253f1312_MD5.png]] ``` # sysname DeviceB # router id 2.2.2.2 # multicast routing-enable # mpls lsr-id 2.2.2.2 # mpls mpls te mpls rsvp-te mpls te cspf # isis 1 is-level level-2 cost-style wide network-entity 10.0000.0000.0002.00 traffic-eng level-2 local-mt enable <--- # interface GigabitEthernet1/0/0 ip address 10.0.0.2 255.255.255.0 isis enable 1 pim sm # interface GigabitEthernet2/0/0 ip address 10.0.1.2 255.255.255.0 isis enable 1 pim sm mpls mpls te mpls rsvp-te # interface LoopBack0 ip address 2.2.2.2 255.255.255.255 isis enable 1 pim sm # interface Tunnel10 ip address unnumbered interface LoopBack0 tunnel-protocol mpls te destination 4.4.4.4 mpls te tunnel-id 100 mpls te igp shortcut isis mpls te igp metric relative -10 isis enable 1 pim sm # pim C-BSR LoopBack0 C-RP LoopBack0 # return ```