02-SRv6配置
本章节下载: 02-SRv6配置 (640.91 KB)
SR(Segment Routing,段路由)采用源节点路径选择机制,预先在源节点封装好路径所要经过段的SID(Segment Identifier,段标识),当报文经过SR节点时,该节点根据报文的SID对报文进行转发。除源节点外,其它节点无需维护路径状态。SRv6是指在IPv6网络中使用SR、将IPv6地址作为SID对报文进行转发。
支持SRv6功能的设备被称为SR节点。其中,负责选择路径,并将路径转换成一个有序的SID列表封装到扩展报文头中的节点称为源节点;负责传输封装报文的节点称为中间节点;负责剥离封装的扩展报文头、并将报文转发给目的网络的出口节点称为尾节点。
在SRv6中,定义某种网络功能、代表网络指令的SID。这种SID采用IPv6地址形式,但不与任何设备上的接口地址对应。该SID被称为SRv6 SID。
如图1-1所示,SRv6 SID由Locator、Function、Arguments和MBZ四部分组成:
· Locator:标识SID所属的网段。Locator在SR域内唯一。
· Function:标识与SID绑定的本地操作指令,SR域内指定节点收到流量后,根据SRv6 SID的Function字段执行相关操作。
· Arguments:定义报文的流和服务等信息。
· MBZ(Must be zero):当Locator、Function和Arguments的位数之和小于128bits时,其他位使用0补齐。
根据SRv6 SID功能的不同,SRv6 SID分为:
· End SID:用于标识网络中的某个目的地址前缀。
· End.X SID:用于标识网络中的某条链路。
· End.DT4 SID:用于标识网络中的某个IPv4 VPN。End.DT4 SID对应的转发动作是解封装报文,并且查找IPv4 VPN实例路由表转发。End.DT4 SID用于IP L3VPN和EVPN L3VPN场景。
· End.DT6 SID:用于标识网络中的某个IPv6 VPN。End.DT6 SID对应的转发动作是解封装报文,并且查找IPv6 VPN实例路由表转发。End.DT6 SID用于IPv6 L3VPN和IPv6 EVPN L3VPN场景。
· End.DT46 SID:用于标识网络中的某个IPv4 VPN或IPv6 VPN。
· End.DX4 SID:用于标识网络中的某个IPv4下一跳。End.DX4 SID对应的转发动作是解封装报文,并且将解封后的IPv4报文通过该SID绑定的三层接口转发给特定下一跳。End.DX4 SID可以在IP L3VPN over SRv6、EVPN L3VPN over SRv6和公网IPv4 over SRv6场景使用。
· End.DX6 SID:用于标识网络中的某个IPv6下一跳。End.DX6 SID对应的转发动作是解封装报文,并且将解封后的IPv6报文通过该SID绑定的三层接口转发给特定下一跳。End.DX6 SID可以在IP L3VPN over SRv6、EVPN L3VPN over SRv6和公网IPv6 over SRv6场景使用。
· End.OP SID:用于SRv6 OAM场景。有关End.OP SID的详细介绍,请参见“Segment Routing”中的“SRv6 OAM”。
通过IGP协议通告SR节点的SRv6 SID后,其他SR节点可以根据收到的路由协议报文生成到达该SRv6 SID的路由转发表项。
SID附加行为(Flavors)可以改变SRv6 SID的转发行为,以便适配多种业务需求。目前,支持的SRv6 SID附加行为包括:
· PSP(penultimate Segment POP of the SRH):倒数第二个SRv6节点执行SRH移除操作。为了减轻SRv6网络尾节点的负担,提高转发效率,可以在倒数第二个SRv6节点将SRH移除,尾节点不需要查看SRH信息,只需根据目的IPv6地址查找Local SID表进行处理。
· NO PSP:倒数第二个SRv6节点不执行SRH移除操作。
运行SRv6的节点维护一个Local SID表,记录本节点生成的SRv6 SID信息。Local SID表主要用于:
· 保存本地生成的SRv6 SID转发信息。
· 存储对SRv6 SID的操作方式。
Segment List是包含报文转发路径信息的SID列表。
SRv6通过在源节点对IPv6数据报文进行封装,使封装后的报文在开启SRv6功能的网络中进行传输。封装后的数据报文在网络中传输的路径,称为SRv6隧道。SRv6隧道是从源节点到尾节点的一个虚拟的点对点连接,其两端的设备分别对数据报文进行封装及解封装。
SRv6的报文封装格式为:在原始三层数据报文前面添加新的IPv6基本头和SRH(Segment Routing Header,SRv6报文头)。SRH是路由类型取值为4的一种路由扩展头。如图1-2所示,IPv6基本头中Next Header取值为43,表明下一个报文头为路由扩展头。路由扩展头的路由类型字段取值为4,表明该路由扩展头为SRH。SRH主要包含以下几个部分:
· Next Header:8bits,用来标识下一个报文头的类型。
· Hdr Ext Len:8bits,表示以8个字节为单位的SRH头的长度,不包括前8个字节。
· Routing Type:8bits,路由类型字段,取值为4,表示携带的是SRH。
· Segments Left:8bits,标识需要查看的下一个SID的编号,初始取值为n-1(n表示路由扩展头中SID的数目),每经过一个节点减1。
· Last Entry:8bits,SRH头中报文实际转发路径的第一个SID的编号。
· Flags:8bits,标志位信息。
· Tag:16bits,用来标记具有相同特性的一组报文。
· Segment List:SID列表。按照报文转发路径上节点从远到近的顺序进行排列,即Segment List [0]表示路径的最后一个SID,Segment List [1]表示路径的倒数第二个SID,以此类推。
图1-2 SRv6的报文封装示意图
如图1-3所示,SRv6隧道报文转发过程如下:
(1) 源节点Device A收到IPv6报文后,查找路由表判定此报文需要通过SRv6隧道模式的Tunnel接口转发,并将报文发给相应的Tunnel接口。
(2) Tunnel接口收到此IPv6报文后,执行如下操作对报文进行封装:
¡ 封装SRH头。由于从Ingress到Egress的跳数为3,因此,SRH中SL为跳数-1,即SL=2。封装的SID列表信息为Segment List [0]=D、Segment List [1]=C、Segment List [2]=B,即按照节点由远及近的顺序进行排列。
¡ 封装IPv6头。IPv6头中的源地址为隧道的源端地址,目的地址为SL指示的地址,即SL为2时表示SRH中Segment List [2]对应的地址(本例中为Device B的地址)。
(3) Device A根据封装的IPv6头中的目的地址查找路由表,将封装后的报文转发给Device B。
(4) Device B收到报文后,首先检查IPv6头中目的地址的SID类型:
¡ 对于End.X SID,根据End.X SID获取出接口和下一跳信息。
¡ 对于其他类型SID,无任何操作。
然后检查SRH头中的SL值,并将SL值减1,同时查找Segment List [1]对应的地址,即Device C的地址,并使用Device C的地址替换IPv6头中的目的地址。
(5) 对于End.X SID,Device B根据获取的出接口和下一跳信息,直接将封装后的报文转发给Device C。对于其他类型SID,Device B根据封装的IPv6头中的目的地址查找路由表,将封装后的报文转发给Device C。
(6) Device C收到报文后,执行(4)、(5)步的操作,将报文发给Device D。
(7) 尾节点Device D收到报文后,检查SRH头中的SL值,发现SL=0。对报文进行解封装,删除封装报文头,根据原始报文的目的地址进行报文转发。
图1-3 SRv6隧道报文转发示意图
当SRv6隧道建立之后,流量不会自动通过SRv6隧道转发,需要通过如下方法配置流量沿SRv6隧道转发。
使用静态路由转发流量,是指在源节点定义一条通过Tunnel接口到达目的网络地址的静态路由,把流量引入到SRv6隧道上进行转发。
静态路由是将流量引入SRv6隧道的最简便、直观的方法。该方法的缺点是:如果多个目的网络的流量都需要引入到SRv6隧道上,则需要配置多条静态路由,配置和维护难度比较大。
有关静态路由的介绍请参见“三层技术-IP路由配置指导”中的“静态路由”。
自动路由发布是指将SRv6隧道发布到IGP中,让SRv6隧道参与IGP路由的计算,使得流量可以通过SRv6隧道转发。自动路由发布包括以下两种方式:
· IGP Shortcut:也称为自动路由宣告(AutoRoute Announce),该功能将SRv6隧道当作一条直接连接隧道Ingress节点(头节点)和Egress节点(尾节点)的链路,在隧道的Ingress节点上进行IGP路由计算时考虑该SRv6隧道。
· 转发邻接:该功能将SRv6隧道当作一条直接连接隧道Ingress节点和Egress节点的链路,通过IGP路由协议将该链路发布到网络中,以便网络中的节点在路由计算时使用SRv6隧道。
目前仅支持IGP Shortcut功能。
IGP Shortcut和转发邻接功能的区别在于:
· 在隧道的Ingress节点上开启IGP Shortcut功能后,只有Ingress节点计算IGP路由时会考虑SRv6隧道。IGP Shortcut功能不会通过IGP路由协议将SRv6隧道作为一条链路发布出去。因此,其他设备在路由计算时不会考虑SRv6隧道。
· 在隧道的Ingress节点上开启转发邻接功能后,Ingress节点会通过IGP路由协议将SRv6隧道作为一条链路发布出去。因此,IGP网络中的所有设备在路由计算时都会考虑SRv6隧道。
图1-4 IGP Shortcut与转发邻接示意图
在图1-4中,Device D到Device C之间存在一条SRv6隧道,IGP Shortcut只能使Ingress节点Device D在计算IGP路由时利用这条隧道,Device A并不能利用这条隧道到达Device C。如果配置了转发邻接功能,则Device A也能够知道这条SRv6隧道的存在,从而可以利用该隧道将到Device C的流量转发到Device D上。
IGP for SRv6只能在自治系统AS(Autonomous System)域内通告SRv6 SID,通过对AS域内SID的合理编排,可以规划出AS域内的最优路径。为了组建大规模网络,通常需要跨越多个AS,此时IGP for SR无能为力。
BGP-EPE(BGP Egress Peer Engineering,BGP出口对等体工程)用来为域间路径分配BGP Peer SID。Peer SID通过BGP LS扩展传递给网络控制器。控制器通过对IGP SID和BGP Peer SID进行合理编排,实现跨域最优路径转发。而对于没有与控制器建立BGP-LS邻居的转发器设备,可以先通过BGP-LS将Peer SID信息传递给BGP邻居,然后再由BGP邻居通过BGP-LS传递给网络控制器。
BGP-EPE为对等体分配SID时可以自动分配,也可以手工指定。如图1-5所示,BGP-EPE能够针对对等体分配以下SID:
· PeerNode SID:用于指示一个对等体节点。每一个BGP会话都会分配Peer-Node SID。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,那么针对该邻居的Peer-Node SID就会对应多个出接口。基于Peer-Node SID转发时,会在多个出接口间负载分担。
· PeerAdj SID:用于指示到达对等体的一个邻接链路。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,则每条链路都会分配一个Peer-Adj SID。基于Peer-Adj SID转发时,只能通过指定出接口进行转发。
· PeerNode-Adj SID:既可用于标识一个对等体节点,也可以标识到达对等体的一条或多条邻接链路。
· PeerSet SID:用于标识一组对等体。BGP支持将一组对等体规划为一个Set,基于该组分配SID,这个SID称为PeerSet SID。基于PeerSet SID转发时,会在多个邻居间负载分担。一个PeerSet SID对应多个PeerNode SID和PeerAdj SID。
如图1-5所示,BGP-EPE的标签分配方式为:
· ASBR 1和ASBR 3间存在两条直连物理链路,二者通过LoopBack接口建立EBGP邻居,BGP-EPE针对对等体分配了PeerNode SID 100:AB::1,为物理链路分配了PeerAdj SID 100:AB:1::2和100:AB:1::3。当通过PeerNode SID转发流量时,会在两条链路间负载分担。
· ASBR 1和ASBR 5,ARBR 2和ASBR 4,以及ASBR 2和ASBR 5使用直连物理接口建立EBGP邻居,BGP-EPE为对等体只分配了PeerNode SID 100:AB::2,100:AB::4和100:AB::5。
· ASBR 4、ASBR 5均和ASBR 2建立EBPG邻居关系,BGP-EPE将对等体ASBR 4和ASBR 5加入同一Set组,为其分配PeerSet SID 100:AB::3。当通过PeerSet SID转发流量时,会在多个邻居间负载分担。
通过BGP-EPE功能为邻居分配的SID仅具有本地意义,不会向其他设备通告,因此不受BGP对等体间交换路由信息类型的影响。
TI-LFA FRR(Topology-Independent Loop-free Alternate Fast Reroute,拓扑无关无环备份快速重路由)能为Segment Routing隧道提供链路及节点的保护。当某处链路或节点故障时,流量会快速切换到备份路径继续转发,从而最大程度上避免流量的丢失。
如图1-6所示,数据报文需要从节点A发往节点F。当节点B和节点E之间发生故障后,节点B将数据报文转发给节点C。由于节点C和节点D之间开销是100,且节点C上路由还未收敛,因此节点C认为到达节点F的最优路径的下一跳是节点B。节点C将数据报文重新转回到节点B,形成环路。
图1-6 TI-LFA应用场景示意图
在SRv6网络中部署TI-LFA,可以解决上述问题。如图1-7所示,当节点B和节点E之间发生故障后,节点B启用TI-LFA计算的备份路径,为报文指定显式路径B->C->D->E,保证报文可以沿着备份路径转发。
图1-7 TI-LFA转发示意图
TI-LFA FRR主要涉及以下概念:
· P空间:以保护链路源端为根节点建立SPF(Shortest Path First,最短路径优先)树,所有从根节点不经过保护链路可达的节点集合称为P空间。P空间内的节点被称为P节点。
· 扩展P空间:以保护链路源端的所有邻居为根节点分别建立SPF树,所有从根节点不经过保护链路可达的节点集合称为扩展P空间。P空间在扩展P空间范围内。
· Q空间:以目的节点为根节点建立反向SPF树,所有从根节点不经过保护链路可达的节点集合称为Q空间。Q空间内的节点被称为Q节点。
TI-LFA流量保护分为以下两种类型:
· 链路保护:当需要保护的对象是经过特定链路的流量时,流量保护类型为链路保护。
· 节点保护:当需要保护的对象是经过特定设备的流量时,流量保护类型为节点保护。
节点保护优先级高于链路保护。
如图1-8所示,PE 1为源节点,P 1节点为故障节点,PE 2为目的节点,链路中间的数字表示cost值。假设流量路径为:PE 1->P 1->PE 2,为避免P 1节点故障导致流量丢失,TI-LFA会计算出扩展P空间、Q空间、P 1故障收敛后的SPF树、Repair List和备份出接口,最终生成备份转发表项。
TI-LFA计算备份路径步骤如下:
(1) 计算扩展P空间:至少存在一个邻居节点到P节点的路径不经过故障链路的集合,即P 2。
(2) 计算Q空间:Q节点到目的节点不经过故障链路的集合,即PE 2和P 4。
(3) 计算收敛后的SPF树:计算P 1故障收敛后的SPF树,即P 1故障后的最优转发路径。SPF树为PE 1->P 2->P 4->PE 2。
(4) 计算Repair List:Repair List是一个约束路径,当P空间和Q空间没有交集时,用来指示如何到达Q节点,Repair List由“P节点的SRv6 SID+P节点到最近的Q节点路径上的SRv6 SID”组成。当P节点和源节点直连时,则Repair List中不需要添加P节点的SRv6 SID。如图1-8所示,Repair List为P 2和P 3间链路的End.X SID C、P 3和P 4间链路的End.X SID D。
(5) 计算备份出接口:PE 1到P 1链路故障后的下一跳出接口。
图1-8 TI-LFA典型组网图
TI-LFA备份路径计算完成之后,如果主路径发生故障,就可以根据备份路径进行转发,避免流量丢失。
如图1-9所示,P 2为P节点,P 4和PE 2为Q节点。主下一跳P 1故障时,触发FRR切换到备路径,详细过程如下:
(1) PE 1根据报文的目的IPv6地址查找IPv6路由表进行转发,下一跳为P 2,同时包含Repair List信息。PE 1根据Repair List构造报文并转发给P 2:
¡ 封装SRH头。封装的SID列表信息为Segment List [0]=D、Segment List [1]=C,即按照节点由远及近的顺序进行排列。
¡ 封装IPv6头。IPv6头中的源地址为源节点PE 1地址A,目的地址为SL指示的地址,即SL为1时表示SRH中Segment List [1]对应的地址C。
(2) P 2收到报文后,检查SRH头中的SL值,并将SL值减1,同时查找Segment List [0]对应的地址,即P 3和P 4间链路的End.X SID D,并使用该End.X SID D替换IPv6头中的目的地址。P 2根据End.X SID C获取出接口和下一跳信息,将封装后的报文转发给P 3。
(3) P 3收到报文后,检查SRH头中的SL值,发现SL=0,对报文进行解封装,并根据End.X SID D获取出接口和下一跳信息,将解封装后的报文转发给P 4。
(4) P 4收到报文后,根据报文的目的IP地址查找IP路由表进行转发,将报文转发给目的节点PE 2。
图1-9 TI-LFA FRR备份路径转发流程图
如图1-10所示,当Device B故障时,到Device C的流量将切换到TI-LFA计算的备份路径转发。Device A收敛后,到Device C的流量将沿着收敛后路径转发。此时,如果Device D和Device F还没有收敛,仍按照收敛前的路径转发流量,则Device A到Device F之间形成环路。
通过SR防微环功能可以解决上述问题。在Device A上开启该功能后,可以使Device A延迟一段时间收敛,在此期间使用SR防微环功能计算的路径转发流量。等待Device D和Device F收敛完成后,Device A再开始收敛。Device A收敛完成后,到Device C的流量沿将着收敛后路径转发,从而避免发生环路。
如图1-11所示,Device B和Device C之间的链路故障恢复前,数据流量沿着备份路径转发。当Device B和Device C之间的链路故障恢复后,如果Device A先于Device B收敛,则Device A会将流量转发给Device B,但是Device B没有收敛,仍旧沿着备份路径转发,这样Device A和Device B之间就会形成环路。
通过SR防微环功能可以解决上述问题。Device A在故障回切以后,会自动计算一条最优路径到达Device C,并按照该路径转发流量,即Device A在转发时为报文添加端到端路径信息(例如Device B到Device C的SRv6 SID),这样Device B收到报文后,根据报文中SRH里的路径信息将报文转发给Device C,避免环路的产生。
经过SR防微环延迟时间后,Device B节点完成收敛,Device A去除额外添加的路径信息,按正常方式将报文转发到Device C。
与IPv6 segment routing相关的协议规范有:
· draft-previdi-6man-segment-routing-header
· draft-ietf-6man-segment-routing-header
· draft-filsfils-spring-segment-routing
· draft-filsfils-spring-srv6-network-programming
SRv6配置任务如下:
(1) 配置SRv6 SID
(3) 配置BGP-EPE
在跨域组网部署BGP for SRv6时,本功能必选。
(4) 配置SRv6隧道
在SRv6隧道的源节点上配置SRv6隧道。
a. 配置SRv6 SID列表
c. (可选)配置隧道转发类
d. (可选)开启SRv6隧道echo模式的BFD检测功能
(5) (可选)配置流量转发
(6) (可选)配置TI-LFA FRR
(7) (可选)配置SRv6的Path MTU
在配置SRv6之前,需完成以下任务:
· 确定SRv6隧道的源节点、中间节点和尾节点。
· 规划节点的IP地址。
SRv6 SID采用IPv6地址形式,为128位。SRv6 SID=Locator+Function+Args,其中:
· Locator字段对应ipv6-prefix ipv6-address prefix-length参数,长度由prefix-length参数决定。Locator本身是一个IPv6网段,该网段下的所有IPv6地址都可以作为SRv6 SID被使用。
· Function字段也称为Opcode,Opcode可以分为静态Opcode和动态Opcode:
¡ 静态Opcode:通过opcode命令手工配置。静态Opcode对应的SRv6 SID称为静态SRv6 SID。静态Opcode的长度由static static-length参数决定。静态Opcode的长度决定该Locator下静态SRv6 SID的数量。
¡ 动态Opcode:通过IGP/BGP协议动态分配。动态Opcode对应的SRv6 SID称为动态SRv6 SID。IGP/BGP协议动态分配SRv6 SID时会在静态Opcode范围外申请,确保SRv6 SID不会冲突。
· Args字段包含报文的流和服务等信息,Args字段由args args-length参数决定。
其中动态Opcode长度dynamic-length=128-(prefix-length+static-length+args-length)。
静态SRv6 SID生成方式如下:静态SRv6 SID=ipv6-prefix+0+opcode+0。其中ipv6-prefix为locator命令中由ipv6-address和prefix-length指定的IPv6地址前缀,所占位数为prefix-length;0所占位数位为dynamic-length;opcode为配置的静态Opcode段,所占位数为static-length;0所占位数位为args-length。
动态SRv6 SID生成方式如下:动态SRv6 SID=ipv6-prefix+dynamic+0。其中ipv6-prefix为locator命令中由ipv6-address和prefix-length指定的IPv6地址前缀,所占位数为prefix-length;dynamic由IGP/BGP协议动态分配,所占位数位为dynamic-length;0所占位数位为static-length+args-length。
例如,配置locator test1 ipv6-prefix 100:200:DB8:ABCD:: 64 static 24 args 32时,表示:
· Locator为100:200:DB8:ABCD::,长度为64
· 静态Opcode占用24位
· Args占用32位
· 动态Opcode占用8位
由此可以计算出静态SRv6 SID范围和动态SRv6 SID范围:
· 静态SRv6 SID起始值=100:200:DB8:ABCD:0:1::
· 静态SRv6 SID结束值=100:200:DB8:ABCD:FF:FFFF::
· 动态SRv6 SID起始值=100:200:DB8:ABCD:100::
· 动态SRv6 SID结束值=100:200:DB8:ABCD:FFFF:FFFF::
不同Locator的名称不能相同。
不能为不同Locator配置相同的IPv6地址前缀和前缀长度,且不同Locator的IPv6地址前缀不能有重叠部分。
SRv6视图下的Locator段内存在正在被使用的动态SRv6 SID时,不能关闭SRv6功能和删除该Locator段。
(1) 进入系统视图。
system-view
(2) 开启SRv6功能,并进入SRv6视图。
segment-routing ipv6
(3) 配置Locator段,并进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 配置Opcode段。
¡ 配置End SID。
opcode opcode end
¡ 配置End.X SID。
opcode opcode end-x interface interface-type interface-number nexthop nexthop-ipv6-address
¡ 配置End.DT4 SID。
opcode opcode end-dt4 [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT4 SID。
¡ 配置End.DT6 SID。
opcode opcode end-dt6 [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT6 SID。
¡ 配置End.DT46 SID。
opcode opcode end-dt46 [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT46 SID。
¡ 配置End.DX4 SID。
opcode end-dx4 interface interface-type interface-number nexthop nexthop-ipv4-address [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在,不同下一跳和出接口不能配置相同End.DX4 SID。
¡ 配置End.DX6 SID。
opcode end-dx6 interface interface-type interface-number nexthop nexthop-ipv6-address [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在,不同下一跳和出接口不能配置相同End.DX6 SID。
¡ 配置End.OP SID。
opcode opcode end-op
通过引用Locator段,IGP协议可以通告Locator段内的SRv6 SID。
配置通过IS-IS通告SRv6 SID前,需要确保IS-IS开销值的类型为wide、compatible或wide-compatible。关于IS-IS开销值类型的配置请参见“三层技术-IP路由配置指导”中的“IS-IS”。
(1) 进入系统视图。
system-view
(2) 进入IS-IS视图。
isis [ process-id ] [ vpn-instance vpn-instance-name ]
(3) 进入IS-IS IPv6地址族视图。
address-family ipv6 [ unicast ]
(4) 引用Locator段。
segment-routing ipv6 locator locator-name [ level-1 | level-2 ] [ auto-sid-disable ]
缺省情况下,未引用Locator段。
多次配置本功能,可以引用多个Locator段,从而通告多个SRv6 SID。
(1) 进入系统视图。
system-view
(2) 进入OSPFv3视图。
ospfv3 [ process-id | vpn-instance vpn-instance-name ] *
(3) 引用Locator段。
segment-routing ipv6 locator locator-name [ auto-sid-disable ]
缺省情况下,未引用Locator段。
多次配置本功能,可以引用多个Locator段,从而通告多个SRv6 SID。
BGP-EPE用来为域间路径分配BGP Peer SID。Peer SID通过BGP LS扩展传递给网络控制器。控制器通过对IGP SID和BGP Peer SID进行合理编排,实现跨域最优路径转发。
在设备上配置BGP-EPE功能后,该设备为相连的BGP对等体/对等体组分配SID,用来标识与本设备相连的特定BGP邻居或链路。
如果未指定任何参数,则在BGP实例下通过segment-routing ipv6 egress-engineering locator命令配置的BGP-EPE引用Locator段内为对等体动态分配SRv6 SID。
对于同一对等体,配置本功能时:
· 指定参数locator时,多次执行本命令,最后一次执行的命令生效。
· 指定参数static-sid时,可以多次执行本命令,分别配置不同类型SRv6 SID;对于同一类型SRv6 SID,多次执行本命令,最后一次执行的命令生效。
为对等体配置静态SRv6 SID时,指定的静态SRv6 SID必须在BGP实例视图下通过segment-routing ipv6 egress-engineering locator命令引用的Locator段内。用户可通过display bgp egress-engineering ipv6命令查看静态SRv6 SID是否生效。如果未生效,则表示该静态SRv6 SID已经被其他协议占用。静态SRv6 SID被其他协议占用以后,BGP EPE 不会再申请动态的SRv6 SID,待解除占用后,需要先执行undo peer egress-engineering srv6命令删除该静态SRv6 SID的配置,再执行peer egress-engineering srv6命令重新配置,该静态SRv6 SID才能生效。
通过本命令为对等体指定静态SRv6 SID和通过egress-engineering srv6 peer-set命令为BGP-EPE SRv6 Peer Set组指定静态SRv6 SID时,配置的静态SRv6 SID不能相同。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 开启SRv6的BGP-EPE功能。
peer group-name egress-engineering srv6
peer ipv6-address [ prefix-length ] egress-engineering srv6 [ locator locator-name | static-sid { psp psp-sid | no-psp-usp no-psp-usp-sid } * ]
缺省情况下,SRv6的BGP-EPE功能处于关闭状态。
BGP-EPE引用Locator段用来限定BGP-EPE SRv6 Peer Set组和开启BGP-EPE功能的对等体所能分配的End.X SID范围。在BGP-EPE SRv6 Peer Set组和对等体下配置的静态SRv6 SID必须在本命令指定的Locator段范围内。
配置本功能后,以下情况将从本功能指定的Locator段中动态分配End.X SID:
· 创建BGP-EPE SRv6 Peer Set组后,未配置静态SRv6 SID。
· 对等体配置了peer egress-engineering srv6命令,但未指定locator参数,也未配置静态SRv6 SID。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 配置BGP-EPE引用的Locator。
segment-routing ipv6 egress-engineering locator locator-name
缺省情况下,BGP-EPE未引用Locator。
当一台设备和多台设备建立BGP邻居关系时,可以手工规划邻居组,即将一组BGP邻居规划为一个Set,基于该组分配PeerSet SID。通过PeerSet SID转发流量时,可以在多个邻居间负载分担。
配置本功能前,对等体必须开启SRv6 BGP-EPE功能。
配置BGP-EPE SRv6 Peer Set组前,必须在BGP实例视图下通过segment-routing ipv6 egress-engineering locator命令配置BGP-EPE引用的Locator段:
· 从引用的Locator段内为BGP-EPE SRv6 Peer Set组动态分配SRv6 SID。
· 为BGP-EPE SRv6 Peer Set组静态指定SRv6 SID时,指定的静态SRv6 SID必须在引用的Locator段内。
对于同一Peer Set组,多次执行egress-engineering srv6 peer-set命令时:
· 对于同一类型SRv6 SID,最后一次执行的命令生效。
· 可以分别配置不同类型SRv6 SID,但不同类型的SRv6 SID不能相同。
通过本命令为BGP-EPE SRv6 Peer Set组指定静态SRv6 SID和通过peer egress-engineering srv6命令为对等体指定静态SRv6 SID时,配置的静态SRv6 SID不能相同。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 创建BGP-EPE SRv6 Peer Set组。
egress-engineering srv6 peer-set peer-set-name [ static-sid { psp psp-sid | no-psp-usp no-psp-usp-sid } * ]
(4) 将对等体加入BGP-EPE SRv6 Peer Set组。
peer { ipv6-address [ prefix-length ] } peer-set srv6-peer-set-name
缺省情况下,对等体未加入BGP-EPE SRv6 Peer Set组。
不能通过重复执行peer peer-set命令修改对等体加入的BGP-EPE SRv6 Peer Set组。如需修改对等体加入的BGP-EPE SRv6 Peer Set组,请先通过undo peer peer-set命令将对等体从BGP-EPE SRv6 Peer Set组中删除,再执行peer peer-set命令将对等体加入新BGP-EPE SRv6 Peer Set组。
SRv6 SID列表中的节点采用索引值唯一标识,并按照索引值从小到大的顺序形成报文转发路径。在封装SID列表时,SRv6会根据索引值自动分配SID编号,最小的索引值对应最大的SID编号,最大的索引值对应最小的SID编号。
配置SID列表时,请注意:
· 如果手工指定节点索引值,请确保离源节点越近的节点索引值越小。
· 如果不指定索引值,设备会按照配置顺序为节点自动分配索引值,最先配置的节点索引值最小。配置时,请先配置离源节点最近的SID。
当SID列表被隧道引用后,如果修改SID列表会导致隧道从up变为down状态,则SID列表下的配置不会立即下发,需要等待路由收敛后再下发配置。
(1) 进入系统视图。
system-view
(2) 创建SRv6的SID列表,并进入对应的列表视图。
ipv6 segment-routing sid-list list-name
(3) 配置SID列表中的节点。
sid [ index index-number ] ipv6-address
当节点使用SRv6 SID时,需要配置IGP协议通告该SRv6 SID,使得路由可达。
(1) 进入系统视图。
system-view
(2) 创建SRv6模式的隧道接口,并进入对应的隧道接口视图。
interface tunnel tunnel-number mode sr ipv6
(3) 指定隧道引用的SID列表。
tunnel sid-list list-name [ backup ]
缺省情况下,SRv6隧道未引用任何SID列表。
通过配置隧道转发类,与隧道转发类匹配的流量可以选择相对应的隧道进行转发,以便根据业务的不同提供不同的转发服务。
配置本功能后:
· 设备会优先选择与流量的隧道转发类值相同的隧道转发该流量。
· 如果存在多条与流量的隧道转发类值相同的隧道,只有一条流且为逐流转发则随机选择一条隧道转发;有多条流或者一条流但是为逐包转发则相同转发类的隧道进行负载分担。
· 如果没有与流量的隧道转发类值相同的隧道,从比流量的转发类值小的隧道中选择转发类值最大的隧道进行转发。
(1) 进入系统视图。
system-view
(2) 进入模式为SRv6隧道的Tunnel接口视图。
interface tunnel tunnel-number [ mode sr ipv6 ]
(3) 配置隧道转发类。
service-class class-value
缺省情况下,未配置隧道转发类。
通过配置本命令,设备通过BFD会话检测SRv6隧道,以便设备能够快速发现隧道故障,及时进行相应地处理,如将流量切换到备份路径。
开启SRv6隧道echo模式的BFD检测功能后,当BFD会话状态为down时,SRv6隧道状态为down;当BFD会话状态为up时,SRv6隧道状态为up。
(1) 进入系统视图。
system-view
(2) 配置echo报文的源IPv6地址。
bfd echo-source-ipv6 ipv6-address
缺省情况下,未配置echo报文的源IPv6地址。,
为了避免对端发送大量的ICMP重定向报文造成网络拥塞,建议不要将echo报文的源IPv6地址配置为属于该设备任何一个接口所在网段。关于本命令的详细介绍请参见“可靠性配置指导”中的“BFD”。
(3) 进入模式为SRv6隧道的Tunnel接口视图。
interface tunnel tunnel-number [ mode sr ipv6 ]
(4) 开启echo模式的BFD检测功能。
tunnel bfd enable echo
缺省情况下,SRv6隧道echo模式BFD检测功能处于关闭状态。
通过配置静态路由使流量沿SRv6隧道转发,静态路由命令的详细介绍请参见“三层技术-IP路由命令参考”中的“静态路由”。命令中指定的接口为SRv6隧道模式的Tunnel接口。
在Tunnel接口下配置本功能后,将会自动生成一条静态路由,静态路由目的地址是隧道的目的IP,出接口是配置本命令的Tunnel接口。
(1) 进入系统视图。
system-view
(2) 进入模式为SRv6隧道的Tunnel接口视图。
interface tunnel tunnel-number [ mode sr ipv6 ]
(3) 配置自动发布静态路由功能。
tunnel route-static [ preference preference-value ]
缺省情况下,设备不会自动发布静态路由。
为了将SRv6隧道发布到IGP中,并参与IGP路由的计算,使得流量可以通过SRv6隧道转发,需要部署以下功能:
· IPv6 Route ID
IPv6 Route ID决定了发布到IGP路由中的SRv6隧道的源地址和目的地址。其中,SRv6隧道接口的目的地址必须与目的节点的IPv6 Route ID相同。
配置IPv6 Route ID后,会同时开启IPv6 TE功能,即SRv6隧道参与IGP路由的计算后,流量可以通过SRv6隧道转发。
· 自动路由发布
自动路由发布是指将SRv6隧道发布到IGP中,让SRv6隧道参与IGP路由的计算。
IPv6 Router ID在IPv6网络中必须唯一。
配置IS-IS的IPv6 Router ID前,需要确保IS-IS开销值的类型为wide、compatible或wide-compatible。关于IS-IS开销值类型的配置请参见“三层技术-IP路由配置指导”中的“IS-IS”。
在环形组网中,为了避免SRv6隧道上某条链路Down而产生路由环路,建议将SRv6隧道引用的SID列表中的SID配置为128位掩码的主机路由,IGP协议不会将该SID对应的主机路由出接口设置为该SRv6隧道接口,从而避免环路的产生。
配置自动路由发布前,需要在SRv6隧道接口上开启IGP协议的IPv6能力。
(1) 进入系统视图。
system-view
(2) 进入IS-IS视图。
isis [ process-id ] [ vpn-instance vpn-instance-name ]
(3) 进入IS-IS IPv6地址族视图。
address-family ipv6 [ unicast ]
(4) 配置IS-IS的IPv6 Router ID并开启IPv6 TE功能。
router-id ipv6-address
缺省情况下,未配置IS-IS的IPv6 router ID,IPv6 TE功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入模式为SRv6隧道的Tunnel接口视图。
interface tunnel tunnel-number mode sr ipv6
(3) 开启IGP Shortcut功能。
srv6 igp shortcut [ isis | ospf ]
缺省情况下,IGP Shortcut功能处于关闭状态。
目前只有IS-IS协议支持IGP Shortcut功能。
(4) 配置SRv6隧道的度量值。
srv6 igp metric { absolute value | relative value }
缺省情况下,SRv6隧道的度量值等于其IGP度量值。
TI-LFA FRR配置任务如下:
(1) 开启TI-LFA FRR功能
(2) (可选)配置接口不参与TI-LFA计算
禁止源节点设备上路由的主下一跳出接口参与TI-LFA计算。
(3) (可选)配置防微环功能
(1) 进入系统视图。
system-view
(2) 进入IS-IS视图。
isis process-id
(3) 进入IS-IS IPv6单播地址族视图。
address-family ipv6
(4) 开启 IPv6 IS-IS的LFA快速重路由功能。
fast-reroute lfa [ level-1 | level-2 ]
缺省情况下,IPv6 IS-IS支持快速重路由功能处于关闭状态。
(5) 开启IPv6 IS-IS的TI-LFA快速重路由功能。
fast-reroute ti-lfa [ per-prefix ] [ route-policy route-policy-name | host ] [ level-1 | level-2 ]
缺省情况下,IPv6 IS-IS的TI-LFA FRR功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入OSPFv3视图。
ospfv3 [ process-id | vpn-instance vpn-instance-name ] *
(3) 开启OSPFv3的LFA快速重路由功能。
fast-reroute { lfa [ abr-only ] | route-policy route-policy-name }
缺省情况下,OSPFv3支持快速重路由功能处于关闭状态。
(4) 开启OSPFv3的TI-LFA快速重路由功能。
fast-reroute ti-lfa [ per-prefix ] [ route-policy route-policy-name | host ]
缺省情况下,OSPFv3的TI-LFA FRR功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 禁止IPv6 IS-IS的接口参与TI-LFA计算。
isis ipv6 fast-reroute ti-lfa disable [ level-1 | level-2 ]
缺省情况下,允许IPv6 IS-IS的接口参与TI-LFA计算。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 禁止OSPFv3的接口参与TI-LFA计算。
ospfv3 fast-reroute ti-lfa disable [ instance instance-id ]
缺省情况下,允许OSPFv3的接口参与TI-LFA计算。
SR防微环功能可以解决正切微环和回切微环的问题。
在网络故障或故障恢复期间,路由都会重新收敛,由于网络节点之间转发状态短暂不一致,各个设备收敛速度不同,可能存在转发微环现象。配置SR的防微环功能后,在IGP收敛期间,设备会按照指定路径转发流量,转发过程不依赖于各设备的路由收敛,从而避免产生环路。
为了保证IGP收敛有足够的时间,可以配置SR防微环延迟时间,在此期间设备按照指定路径转发流量。在网络故障恢复IGP完成收敛后,流量再通过IGP计算的路径转发。
(1) 进入系统视图。
system-view
(2) 进入IS-IS视图。
isis process-id
(3) 进入IS-IS IPv6单播地址族视图。
address-family ipv6
(4) 开启IPv6 IS-IS的SR防微环功能。
segment-routing microloop-avoidance enable [ level-1 | level-2 ]
缺省情况下,IPv6 IS-IS的SR防微环功能处于关闭状态。
(5) (可选)配置IPv6 IS-IS的SR防微环延迟时间。
segment-routing microloop-avoidance rib-update-delay delay-time [ level-1 | level-2 ]
缺省情况下,IPv6 IS-IS的SR防微环延迟时间为5000毫秒。
(1) 进入系统视图。
system-view
(2) 进入OSPFv3视图。
ospfv3 [ process-id | vpn-instance vpn-instance-name ] *
(3) 开启OSPFv3的SR防微环功能。
segment-routing microloop-avoidance enable
缺省情况下,OSPFv3的SR防微环功能处于关闭状态。
(4) (可选)配置OSPFv3的SR防微环延迟时间。
segment-routing microloop-avoidance rib-update-delay delay-time
缺省情况下,OSPFv3的SR防微环延迟时间为5000毫秒。
Path MTU是报文在源节点到目的节点之间成功传送所允许的最大IPv6 MTU。
由于IPv6报文在传输过程中不允许在中间节点分片转发,当IPv6报文长度大于出接口MTU时,设备会丢弃报文;如果利用较小的MTU对通过SRv6隧道转发的报文进行分片,会降低链路的带宽利用率。为了避免报文过大而丢弃,同时又能充分利用接口MTU提高链路的带宽利用率,可以合理规划SRv6 Path MTU。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 配置SRv6的Path MTU值。
path-mtu mtu-value
缺省情况下,SRv6的Path MTU值为1500。
在完成上述配置后,在任意视图下执行display命令,可以显示配置的SID列表信息。
表1-1 显示与维护SRv6的运行状态
操作 |
命令 |
显示IPv6对等体的BGP-EPE信息 |
display bgp [ instance instance-name ] egress-engineering ipv6 [ ipv6-address ] |
显示BGP Peer SRv6 Set组的信息 |
display bgp egress-engineering srv6 peer-set [ srv6-peer-set-name ] |
显示SID列表信息 |
display ipv6 segment-routing sid-list [ list-name ] |
显示IS-IS SRv6能力信息 |
display isis segment-routing ipv6 capability [ level-1 | level-2 ] [ process-id ] |
显示IS-IS SRv6的Locator路由信息 |
display isis segment-routing ipv6 locator [ ipv6-address prefix-length ] [ [ level-1 | level-2 ] | verbose ] * [ process-id ] |
显示IS-IS SRv6 Tunnel接口信息 |
display isis srv6 tunnel [ level-1 | level-2 ] [ process-id ] |
显示OSPFv3 SRv6能力信息 |
display ospfv3 [ process-id ] segment-routing ipv6 capability |
显示OSPFv3的SRv6 Tunnel接口信息 |
display ospfv3 [ process-id ] srv6 tunnel [ interface-number ] |
显示SRv6转发信息 |
(独立运行模式) display segment-routing ipv6 forwarding [ entry-id ] (IRF模式) display segment-routing ipv6 forwarding [ entry-id ] [ slot slot-number ] |
显示SRv6的Local SID列表信息 |
display segment-routing ipv6 local-sid { end | end-b6encaps | end-dt4 | end-dt46 | end-dt6 | end-dx4 | end-dx6 | end-op | end-x } [ sid ] |
显示SRv6的Locator信息 |
display segment-routing ipv6 locator [ locator-name ] |
· 设备Router A、Router B和Router C运行OSPFv3。
· 建立一条从Router A到Router C的SRv6隧道,通过SRv6隧道传输数据流量。
图1-12 SRv6 End SID配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Router A |
Loop0 |
1::9/128 |
Router C |
Loop0 |
5::9/128 |
|
GE2/0 |
1::1/64 |
|
GE2/0 |
2::2/64 |
Router B |
Loop0 |
2::9/128 |
|
|
|
|
GE1/0 |
1::2/64 |
|
|
|
|
GE2/0 |
2::1/64 |
|
|
|
(1) 配置各接口的IP地址和掩码,具体配置过程略
(2) 配置OSPFv3协议发布接口所在网段的路由,包括Loopback接口,具体配置过程略
配置完成后,在各设备上执行display ipv6 routing-table命令,可以看到相互之间都学到了到对方的路由,包括Loopback接口对应的主机路由。
(3) 配置Router A
# 配置SRv6 End SID。
[RouterA] segment-routing ipv6
[RouterA-segment-routing-ipv6] locator aa ipv6-prefix 100:1::1 120 static 8
[RouterA-segment-routing-ipv6-locator-aa] opcode 1 end
[RouterA-segment-routing-ipv6-locator-aa] quit
[RouterA-segment-routing-ipv6] quit
# 配置通过OSPFv3通告SRv6 SID。
[RouterA] ospfv3 1
[RouterA-ospfv3-1] segment-routing ipv6 locator aa
[RouterA-ospfv3-1] quit
# 配置SRv6 SID列表。
[RouterA] ipv6 segment-routing sid-list a
[RouterA-srv6-sid-list-a] sid 200:1::1
[RouterA-srv6-sid-list-a] sid 300:1::1
[RouterA-srv6-sid-list-a] quit
# 配置到Router C的SRv6隧道Tunnel0:源地址为Router A的Loopback0;配置Tunnel0引用的SID列表a。
[RouterA] interface tunnel 0 mode sr ipv6
[RouterA-Tunnel0] source loopback 0
[RouterA-Tunnel0] destination 5::9
[RouterA-Tunnel0] ipv6 address 6::6 64
[RouterA-Tunnel0] tunnel sid-list a
[RouterA-Tunnel0] quit
# 配置静态路由,通过SRv6隧道转发。
[RouterA] ipv6 route-static 99::1 64 tunnel 0
(4) 配置Router B
# 配置SRv6 End SID。
[RouterB] segment-routing ipv6
[RouterB-segment-routing-ipv6] locator bb ipv6-prefix 200:1::1 120 static 8
[RouterB-segment-routing-ipv6-locator-bb] opcode 1 end
[RouterB-segment-routing-ipv6-locator-bb] quit
[RouterB-segment-routing-ipv6] quit
# 配置通过OSPFv3通告SRv6 SID。
[RouterB] ospfv3 1
[RouterB-ospfv3-1] segment-routing ipv6 locator bb
[RouterB-ospfv3-1] quit
(5) 配置Router C
# 配置SRv6 End SID。
[RouterC] segment-routing ipv6
[RouterC-segment-routing-ipv6] locator cc ipv6-prefix 300:1::1 120 static 8
[RouterC-segment-routing-ipv6-locator-cc] opcode 1 end
[RouterC-segment-routing-ipv6-locator-cc] quit
[RouterC-segment-routing-ipv6] quit
# 配置通过OSPFv3通告SRv6 SID。
[RouterC] ospfv3 1
[RouterC-ospfv3-1] segment-routing ipv6 locator cc
[RouterC-ospfv3-1] quit
# Router C到Router A的IPv6 SID列表的配置过程与Router A类似,具体过程略。
# Router C到Router A方向上的隧道与静态路由配置过程与Router A类似,具体过程略。
# 在Router A执行display ipv6 segment-routing sid-list命令,可以看到SRv6 SID列表的信息。
[RouterA] display ipv6 segment-routing sid-list
SID list name: a
SID information:
SID index Address
5 200:1::1
9 300:1::1
SID list usage on tunnels:
Tunnel number SID list role
0 Primary
# 查看到99::1的流量是通过隧道进行转发。
[Router A] display ipv6 fib 99::1
FIB entry count: 1
Flag:
U:Usable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 99:: Prefix length: 64
Nexthop : :: Flags: US
Time stamp : 0x10 Label: Null
Interface : Tun0 Token: Invalid
· 设备Router A、Router B和Router C运行OSPFv3。
· 建立一条从Router A到Router C的SRv6隧道,通过SRv6隧道传输数据流量。
图1-13 SRv6 End.X SID配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Router A |
Loop0 |
1::9/128 |
Router C |
Loop0 |
5::9/128 |
|
GE2/0 |
1::1/64 |
|
GE2/0 |
2::2/64 |
Router B |
Loop0 |
2::9/128 |
|
|
|
|
GE1/0 |
1::2/64 |
|
|
|
|
GE2/0 |
2::1/64 |
|
|
|
(1) 配置各接口的IP地址和掩码,具体配置过程略
(2) 配置OSPFv3协议发布接口所在网段的路由,包括Loopback接口,具体配置过程略
配置完成后,在各设备上执行display ipv6 routing-table命令,可以看到相互之间都学到了到对方的路由,包括Loopback接口对应的主机路由。
(3) 配置Router A
# 配置SRv6 End.X SID。
[RouterA] segment-routing ipv6
[RouterA-segment-routing-ipv6] locator a1 ipv6-prefix 100:1::1:0 120 static 8
[RouterA-segment-routing-ipv6-locator-a1] opcode 1 end-x interface gigabitethernet 2/0 nexthop 1::2
[RouterA-segment-routing-ipv6-locator-a1] quit
[RouterA-segment-routing-ipv6] quit
# 配置通过OSPFv3通告SRv6 SID。
[RouterA] ospfv3 1
[RouterA-ospfv3-1] segment-routing ipv6 locator a1
[RouterA-ospfv3-1] quit
# 配置SRv6 SID列表。
[RouterA] ipv6 segment-routing sid-list A
[RouterA-srv6-sid-list-A] sid 200:1::1:1
[RouterA-srv6-sid-list-A] sid 300:1::1:1
[RouterA-srv6-sid-list-A] quit
# 配置到Router C的SRv6隧道Tunnel0:源地址为Router A的Loopback0;配置Tunnel0引用的SID列表A。
[RouterA] interface tunnel 0 mode sr ipv6
[RouterA-Tunnel0] source loopback 0
[RouterA-Tunnel0] destination 5::9
[RouterA-Tunnel0] ipv6 address 7::7 64
[RouterA-Tunnel0] tunnel sid-list A
[RouterA-Tunnel0] quit
# 配置静态路由,通过SRv6隧道转发。
[RouterA] ipv6 route-static 199::1 64 tunnel 0
(4) 配置Router B
# 配置SRv6 End.X SID。
[RouterB] segment-routing ipv6
[RouterB-segment-routing-ipv6] locator b1 ipv6-prefix 200:1::1:0 120 static 8
[RouterB-segment-routing-ipv6-locator-b1] opcode 1 end-x interface gigabitethernet 2/0 nexthop 2::2
[RouterB-segment-routing-ipv6-locator-b1] quit
[RouterB-segment-routing-ipv6] quit
# 配置通过OSPFv3通告SRv6 SID。
[RouterB] ospfv3 1
[RouterB-ospfv3-1] segment-routing ipv6 locator b1
[RouterB-ospfv3-1] quit
(5) 配置Router C
# 配置SRv6 End SID。
[RouterC] segment-routing ipv6
[RouterC-segment-routing-ipv6] locator c1 ipv6-prefix 300:1::1:0 120 static 8
[RouterC-segment-routing-ipv6-locator-c1] opcode 1 end
[RouterC-segment-routing-ipv6-locator-c1] quit
[RouterC-segment-routing-ipv6] quit
# 配置通过OSPFv3通告SRv6 SID。
[RouterC] ospfv3 1
[RouterC-ospfv3-1] segment-routing ipv6 locator c1
[RouterC-ospfv3-1] quit
# Router C到Router A的IPv6 SID列表的配置过程与Router A类似,具体过程略。
# Router C到Router A方向上的隧道与静态路由配置过程与Router A类似,具体过程略。
# 在Router A执行display ipv6 segment-routing sid-list命令,可以看到SRv6 SID列表的信息。
[RouterA] display ipv6 segment-routing sid-list
SID list name: A
SID information:
SID index Address
5 200:1::1:1
9 300:1::1:1
SID list usage on tunnels:
Tunnel number SID list role
0 Primary
# 查看到199::1的流量是通过隧道进行转发。
[Router A] display ipv6 fib 199::1
FIB entry count: 1
Flag:
U:Usable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination: 199:: Prefix length: 64
Nexthop : :: Flags: US
Time stamp : 0x17 Label: Null
Interface : Tun0 Token: Invalid
· 设备Device A、Device B、Device C和Device D运行IPv6 IS-IS实现互通。
· Device A、Device B、Device C和Device D配置IS-IS SRv6功能。
· 当设备Device A和Device C之间链路Link A故障,链路Link B上存在环路,流量无法通过Device D转发到目的节点Device C。通过部署TI-LFA FRR消除环路,同时使流量可以快速切换到链路Link B。
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
Device A |
Loop1 |
1::1/128 |
Device B |
Loop1 |
2::2/128 |
|
GE1/0 |
2000:1::1/64 |
|
GE1/0 |
2000:1::2/64 |
|
GE2/0 |
2000:4::1/64 |
|
GE2/0 |
2000:2::2/64 |
Device C |
Loop1 |
3::3/128 |
Device D |
Loop1 |
4::4/128 |
|
GE1/0 |
2000:3::3/64 |
|
GE1/0 |
2000:3::4/64 |
|
GE2/0 |
2000:2::3/64 |
|
GE2/0 |
2000:4::4/64 |
(1) 请按照图1-14配置各接口的IP地址和子网掩码,具体配置过程略
(2) 配置Device A
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
<DeviceA> system-view
[DeviceA] isis 1
[DeviceA-isis-1] network-entity 00.0000.0000.0001.00
[DeviceA-isis-1] cost-style wide
[DeviceA-isis-1] address-family ipv6
[DeviceA-isis-1-ipv6] quit
[DeviceA-isis-1] quit
[DeviceA] interface gigabitethernet 1/0
[DeviceA-GigabitEthernet1/0] isis ipv6 enable 1
[DeviceA-GigabitEthernet1/0] isis cost 10
[DeviceA-GigabitEthernet1/0] quit
[DeviceA] interface gigabitethernet 2/0
[DeviceA-GigabitEthernet2/0] isis ipv6 enable 1
[DeviceA-GigabitEthernet2/0] isis cost 10
[DeviceA-GigabitEthernet2/0] quit
[DeviceA] interface loopback 1
[DeviceA-LoopBack1] isis ipv6 enable 1
[DeviceA-LoopBack1] quit
# 开启SRv6功能,并配置Locator段。
[DeviceA] segment-routing ipv6
[DeviceA-segment-routing-ipv6] locator aaa ipv6-prefix 11:: 64 static 32
[DeviceA-segment-routing-ipv6-locator-aaa] quit
[DeviceA-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceA] isis 1
[DeviceA-isis-1] address-family ipv6
[DeviceA-isis-1-ipv6] fast-reroute lfa
[DeviceA-isis-1-ipv6] fast-reroute ti-lfa
[DeviceA-isis-1-ipv6] quit
[DeviceA-isis-1] quit
# 配置引用Locator段。
[DeviceA] isis 1
[DeviceA-isis-1] address-family ipv6
[DeviceA-isis-1-ipv6] segment-routing ipv6 locator aaa
[DeviceA-isis-1-ipv6] quit
[DeviceA-isis-1] quit
(3) 配置Device B
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
<DeviceB> system-view
[DeviceB] isis 1
[DeviceB-isis-1] network-entity 00.0000.0000.0002.00
[DeviceB-isis-1] cost-style wide
[DeviceB-isis-1] address-family ipv6
[DeviceB-isis-1-ipv6] quit
[DeviceB-isis-1] quit
[DeviceB] interface gigabitethernet 1/0
[DeviceB-GigabitEthernet1/0] isis ipv6 enable 1
[DeviceB-GigabitEthernet1/0] isis cost 10
[DeviceB-GigabitEthernet1/0] quit
[DeviceB] interface gigabitethernet 2/0
[DeviceB-GigabitEthernet2/0] isis ipv6 enable 1
[DeviceB-GigabitEthernet2/0] isis cost 10
[DeviceB-GigabitEthernet2/0] quit
[DeviceB] interface loopback 1
[DeviceB-LoopBack1] isis ipv6 enable 1
[DeviceB-LoopBack1] quit
# 开启SRv6功能,并配置Locator段。
[DeviceB] segment-routing ipv6
[DeviceB-segment-routing-ipv6] locator bbb ipv6-prefix 22:: 64 static 32
[DeviceB-segment-routing-ipv6-locator-bbb] quit
[DeviceB-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceB] isis 1
[DeviceB-isis-1] address-family ipv6
[DeviceB-isis-1-ipv6] fast-reroute lfa
[DeviceB-isis-1-ipv6] fast-reroute ti-lfa
# 配置引用Locator段。
[DeviceB-isis-1-ipv6] segment-routing ipv6 locator bbb
[DeviceB-isis-1-ipv6] quit
[DeviceB-isis-1] quit
(4) 配置Device C
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
<DeviceC> system-view
[DeviceC] isis 1
[DeviceC-isis-1] network-entity 00.0000.0000.0003.00
[DeviceC-isis-1] cost-style wide
[DeviceC-isis-1] address-family ipv6
[DeviceC-isis-1-ipv6] quit
[DeviceC-isis-1] quit
[DeviceC] interface gigabitethernet 1/0
[DeviceC-GigabitEthernet1/0] isis ipv6 enable 1
[DeviceC-GigabitEthernet1/0] isis cost 100
[DeviceC-GigabitEthernet1/0] quit
[DeviceC] interface gigabitethernet 2/0
[DeviceC-GigabitEthernet2/0] isis ipv6 enable 1
[DeviceC-GigabitEthernet2/0] isis cost 10
[DeviceC-GigabitEthernet2/0] quit
[DeviceC] interface loopback 1
[DeviceC-LoopBack1] isis ipv6 enable 1
[DeviceC-LoopBack1] quit
# 开启SRv6功能,并配置Locator段。
[DeviceC] segment-routing ipv6
[DeviceC-segment-routing-ipv6] locator ccc ipv6-prefix 33:: 64 static 32
[DeviceC-segment-routing-ipv6-locator-ccc] quit
[DeviceC-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceC] isis 1
[DeviceC-isis-1] address-family ipv6
[DeviceC-isis-1-ipv6] fast-reroute lfa
[DeviceC-isis-1-ipv6] fast-reroute ti-lfa
# 配置引用Locator段。
[DeviceC-isis-1-ipv6] segment-routing ipv6 locator ccc
[DeviceC-isis-1-ipv6] quit
[DeviceC-isis-1] quit
(5) 配置Device D
# 配置IS-IS协议实现网络层互通,开销值类型为wide。
<DeviceD> system-view
[DeviceD] isis 1
[DeviceD-isis-1] network-entity 00.0000.0000.0004.00
[DeviceD-isis-1] cost-style wide
[DeviceD-isis-1] address-family ipv6
[DeviceD-isis-1-ipv6] quit
[DeviceD-isis-1] quit
[DeviceD] interface gigabitethernet 1/0
[DeviceD-GigabitEthernet1/0] isis ipv6 enable 1
[DeviceD-GigabitEthernet1/0] isis cost 100
[DeviceD-GigabitEthernet1/0] quit
[DeviceD] interface gigabitethernet 2/0
[DeviceD-GigabitEthernet2/0] isis ipv6 enable 1
[DeviceD-GigabitEthernet2/0] isis cost 10
[DeviceD-GigabitEthernet2/0] quit
[DeviceD] interface loopback 1
[DeviceD-LoopBack1] isis ipv6 enable 1
[DeviceD-LoopBack1] quit
# 开启SRv6功能,并配置Locator段。
[DeviceD] segment-routing ipv6
[DeviceD-segment-routing-ipv6] locator ddd ipv6-prefix 44:: 64 static 32
[DeviceD-segment-routing-ipv6-locator-ddd] quit
[DeviceD-segment-routing-ipv6] quit
# 配置IS-IS TI-LFA FRR。
[DeviceD] isis 1
[DeviceD-isis-1] address-family ipv6
[DeviceD-isis-1-ipv6] fast-reroute lfa
[DeviceD-isis-1-ipv6] fast-reroute ti-lfa
# 配置引用Locator段。
[DeviceD-isis-1-ipv6] segment-routing ipv6 locator ddd
[DeviceD-isis-1-ipv6] quit
[DeviceD-isis-1] quit
# 在Device A上查看3::3/128路由,可以看到TI-LFA备份下一跳信息。
[DeviceA] display isis route ipv6 3::3 128 verbose
Route information for IS-IS(1)
------------------------------
Level-1 IPv6 forwarding table
-----------------------------
IPv6 dest : 3::3/128
Flag : R/L/- Cost : 20
Admin tag : - Src count : 2
Nexthop : FE80::4449:7CFF:FEE0:206
Interface : GE1/0
TI-LFA:
Interface : GE2/0
BkNextHop : FE80::4449:91FF:FE42:407
LsIndex : 0x80000001
Backup label stack(top->bottom): {44::1:0:1}
Nib ID : 0x24000006
Flags: D-Direct, R-Added to Rib, L-Advertised in LSPs, U-Up/Down Bit Set
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!