01-SRv6配置
本章节下载: 01-SRv6配置 (261.19 KB)
目 录
SR(Segment Routing,段路由)采用源节点路径选择机制,预先在源节点封装好路径所要经过段的SID(Segment Identifier,段标识),当报文经过SR节点时,该节点根据报文的SID对报文进行转发。除源节点外,其它节点无需维护路径状态。SRv6是指在IPv6网络中使用SR、将IPv6地址作为SID对报文进行转发。
按照功能的不同,SRv6网络中的节点分为三种角色:
· 源节点:在原始三层数据报文前面添加新的IPv6基本头。源节点可以是产生SRv6报文的主机,也可以是SRv6域的边缘设备。
· 中转节点:在报文的SRv6路径上,不参与SRv6处理,只执行普通的IPv6报文转发。中转节点可以是支持SRv6的节点,也可以是不支持SRv6的节点。
· Endpoint节点:对接收到的SRv6报文进行SRv6相关处理。接收到的SRv6报文的IPv6目的地址必须是Endpoint节点上配置的SRv6 SID,该节点需要按SRv6 SID的指令进行处理。
同一个节点可以是不同的角色,比如节点在某个SRv6路径里可能是源节点,在其他SRv6路径里可能就是中转节点或者Endpoint节点。
在SRv6中,SID用来定义某种网络功能、代表某种网络指令。SRv6 SID采用IPv6地址形式,但不与任何设备上的接口地址对应。
如图1-1所示,SRv6 SID由Locator、Function、Arguments和MBZ四部分组成:
· Locator:标识SID所属的网段。SRv6节点通过IGP等路由协议将Locator标识的IPv6网段发布到网络中,帮助其他设备将报文转发到该SRv6节点,因此Locator通常用于SRv6节点的路由和寻址。Locator在SR域内唯一。
· Function:标识与SID绑定的本地操作指令。当某个SRv6节点接收到SRv6报文,同时该SRv6节点发现报文的IPv6目的地址与本地Local SID表中某个SRv6 SID值相同,则该SRv6节点分析SRv6 SID的Function字段,再找到Function对应的设备本地操作指令并执行相关操作。
· Arguments:定义报文的流和服务等信息,在SRv6 SID中为可选字段。
· MBZ(Must be zero):当Locator、Function和Arguments的位数之和小于128bits时,最低若干位使用0补齐。
每一个具体的SRv6 SID都是从locator命令配置SRv6 Locator段中分配,因此,SRv6 Locator段的类型和长度规划不同,SRv6 SID也各不相同:
· 普通类型的Locator
图1-2 普通类型的Locator示意图
从普通类型的Locator可以分配普通SRv6 SID,普通SRv6 SID又分为静态SRv6 SID和动态SRv6 SID,其格式分别为:
¡ 静态SRv6 SID=ipv6-prefix+0+opcode+0。其中ipv6-prefix为locator命令中由ipv6-address和prefix-length指定的IPv6地址前缀,所占位数为prefix-length;0所占位数位为128减去prefix-length、static-length和args-length;opcode为Function字段中的静态段,所占位数为static-length;0所占位数为args-length。
¡ 动态SRv6 SID=ipv6-prefix+dynamic+static+0。其中ipv6-prefix为locator命令中由ipv6-address和prefix-length指定的IPv6地址前缀,所占位数为prefix-length;dynamic为Function字段中的动态段,取值不能为全0,所占位数位为128减去prefix-length、static-length和args-length;static为Function字段中的静态段,所占位数为static-length,可以取任意值;0所占位数为args-length。
例如,配置locator test1 ipv6-prefix 100:200:DB8:ABCD:: 64 static 24 args 32时,表示:
¡ Locator为100:200:DB8:ABCD::,长度为64
¡ 静态段占用24位
¡ Args占用32位
¡ 动态段占用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::
SRv6 SID的Function字段所标识的本地操作指令本质上是一种指导报文转发和处理的节点行为,这种本地操作指令称为SRv6 Endpoint Behavior节点行为。RFC 8986中为大部分不同类型的节点行为定义了指令码的取值。从网络配置的角度看,不同的节点转发行为也可以理解为不同类型的SRv6 SID,SRv6 SID的类型包括但不限于:
· End.DT4 SID:类似于MPLS L3VPN网络中的私网标签,用于标识特定的IPv4 VPN实例。End.DT4 SID的转发行为是解封装报文,并且查找该SID标识的IPv4 VPN实例,根据VPN实例路由表转发报文。End.DT4 SID用于IPv4私网用户接入场景。
· End.DT6 SID:类似于MPLS L3VPN网络中的私网标签,用于标识特定的IPv6 VPN实例。End.DT6 SID的转发行为是解封装报文,并且查找该SID标识的IPv6 VPN实例,根据VPN实例路由表转发报文。End.DT6 SID用于IPv6私网用户接入场景。
· End.DT46 SID:类似于MPLS L3VPN网络中的私网标签,用于标识特定的IPv4 VPN实例或IPv6 VPN实例。End.DT46 SID用于IPv4和IPv6私网用户同时接入场景。
· End.DX4 SID:用于标识网络中特定IPv4 VPN实例中PE-CE的某个IPv4下一跳。End.DX4 SID对应的转发动作是解封装报文,并且将解封后的IPv4报文通过该SID绑定的三层接口转发给特定下一跳。End.DX4 SID用于IPv4私网用户接入场景。
· End.DX6 SID:用于标识网络中特定IPv6 VPN实例中PE-CE的某个IPv6下一跳。End.DX6 SID对应的转发动作是解封装报文,并且将解封后的IPv6报文通过该SID绑定的三层接口转发给特定下一跳。End.DX6 SID用于IPv6私网用户接入场景。
通过IGP协议通告SR节点的SRv6 SID后,其他SR节点可以根据收到的路由协议报文生成到达该SRv6 SID的路由转发表项。
运行SRv6的节点维护一个Local SID表,记录本节点生成的SRv6 SID信息。Local SID表主要用于:
· 保存本地生成的SRv6 SID转发信息。
· 存储对SRv6 SID的操作方式。
SRv6的报文封装格式为:在原始三层数据报文前面添加新的IPv6基本头。
图1-3 SRv6的报文封装示意图
源节点Device A接收到符合指定特征的报文后,需要通过SRv6路径转发该报文。SRv6路径中Device A为源节点,Device C和Device E为Endpoint节点,Device B和Device D为中转节点。报文通过SRv6路径转发的过程为:
(1) 源节点Device A收到IPv6报文后,执行如下操作:
¡ 封装IPv6基本头。
¡ 根据封装的IPv6头中的目的地址查找路由表,将封装后的报文转发给Device B。
(2) Device B收到报文后,据IPv6头中的目的地址查找路由表,将报文转发给Device C。
(3) Device C收到报文后,执行如下操作:
¡ 根据IPv6头中的目的地址查找路由表,将报文转发给Device D。
(4) Device D收到报文后,据IPv6头中的目的地址查找路由表,将报文转发给Device E。
(5) 尾节点Device E收到报文,对报文进行解封装,删除封装IPv6基本头,根据原始报文的目的地址进行报文转发。
当SRv6隧道建立之后,流量不会自动通过SRv6隧道转发,目前仅支持BGP路由迭代的方式通过SRv6 BE来转发业务流量。在PE之间通过BGP传递的路由时可以携带Prefix SID属性,允许PE之间的BGP路由迭代到SRv6 BE隧道后,路由可以通过SRv6 BE方式转发。关于SRv6 BE转发的详细介绍,请参见“Segment Routing配置指导”中的“IP L3VPN over SRv6”、“EVPN L3VPN over SRv6”或“公网IP over SRv6”等。
与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
对于S12500G-AF系列交换机,设备必须满足如下条件才支持配置SRv6:
· 主控板丝印前缀不为LSXM1。
· 接口板为SF系列接口板或SG系列接口板。
· 系统工作模式为专家模式。有关专家模式的详细介绍,请参见“基础配置指导”中的“设备管理”。
SRv6配置任务如下:
(1) 配置SRv6 SID
(4) (可选)开启SRv6模块的告警功能
在配置SRv6之前,需完成以下任务:
· 确定SRv6隧道的源节点、中间节点和尾节点。
· 规划节点的IP地址。
SRv6不支持将公网口指定为M-lag接口。有关M-lag的详细介绍,请参见“二层技术-以太网交换”中的“M-lag”。
不同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) (可选)配置当前Locator为Anycast Locator。
anycast enable
缺省情况下,当前Locator不是Anycast Locator。
路由协议报文携带的Locator TLV中Flags字段的A-bit置位,表示该Locator为Anycast Locator,即一组SRv6节点具有相同的Locator。
(5) 配置Opcode段。
¡ 配置End.DT4 SID。
opcode { opcode | hex hex-opcode } end-dt4 [ vpn-instance vpn-instance-name [ evpn | l3vpn-evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT4 SID。
¡ 配置End.DT6 SID。
opcode { opcode | hex hex-opcode } end-dt6 [ vpn-instance vpn-instance-name [ evpn | l3vpn-evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT6 SID。
¡ 配置End.DT46 SID。
opcode { opcode | hex hex-opcode } end-dt46 [ vpn-instance vpn-instance-name [ evpn | l3vpn-evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT46 SID。
¡ 配置End.DX4 SID。
opcode { opcode | hex hex-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 { opcode | hex hex-opcode } end-dx6 interface interface-type interface-number nexthop nexthop-ipv6-address [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在,不同下一跳和出接口不能配置相同End.DX6 SID。
通过引用Locator段,IGP协议可以通告指定的Locator网段和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 ] [ cost cost-value ] [ tag tag-value ]
缺省情况下,未引用Locator段。
多次配置本功能,可以引用多个Locator段,从而通告多个SRv6 SID。
(5) (可选)配置聚合Locator路由。
summary ipv6-prefix prefix-length algorithm algo-id [ explicit ]
缺省情况下,不对Locator路由进行聚合。
将Locator路由与Flex-algo算法关联后,可以将该类路由聚合,以减少本路由器生成的LSP报文大小和LSDB的规模。有关Flex-algo算法的详细介绍,请参见“三层技术-IP路由配置指导”中的“IS-IS”。
(6) (可选)配置SRv6 Locator的管理标记值。
segment-routing ipv6 admin-tag tag-value
缺省情况下,IS-IS发布SRv6 Locator时不携带管理标记值。
在不同级别和不同区域间引入IS-IS路由,或者在IS-IS邻居之间学习IS-IS路由时,如果希望引入某些特定的SRv6 Locator,过滤掉其他SRv6 Locator,则可以通过配置本功能来标记不同SRv6 Locator,再通过路由策略中的if-match tag命令来过滤不同管理标记值的SRv6 Locator。
(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跨域组网中,执行本配置后,BGP IPv6单播路由表中将生成指定Locator网段的路由,并通过BGP将该路由发布给BGP对等体。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(4) 配置在BGP IPv6单播路由表中生成指定Locator网段的路由,并发布给BGP对等体。
advertise srv6 locator locator-name [ route-policy route-policy-name ]
缺省情况下,不会在BGP IPv6单播路由表中生成Locator网段的路由。
开启SRv6模块的告警功能后,该模块会生成告警信息,用于报告该模块的重要事件。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
(1) 进入系统视图。
system-view
(2) 开启SRv6模块的告警功能。
snmp-agent trap enable srv6
缺省情况下,SRv6模块的告警功能处于关闭状态。
在完成上述配置后,在任意视图下执行display命令,可以显示配置的SID列表信息。
表1-1 显示与维护SRv6的运行状态
操作 |
命令 |
显示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 ] [ flex-algo flex-algo-id | [ level-1 | level-2 ] | verbose ] * [ process-id ] |
显示OSPFv3 SRv6能力信息 |
display ospfv3 [ process-id ] segment-routing ipv6 capability |
显示OSPFv3 SRv6的Locator信息 |
display ospfv3 [ process-id ] segment-routing ipv6 locator [ ipv6-address prefix-length ] |
显示指定Locator中可用的静态SRv6 SID |
display segment-routing ipv6 available-static-sid locator locator-name [ from begin-value ] |
显示SRv6简要信息 |
display segment-routing ipv6 brief |
显示SRv6的Local SID转发表信息 |
display segment-routing ipv6 local-sid [ locator locator-name ] [ end-dt4 | end-dt46 | end-dt6 | end-dx4 | end-dx6 ] [ [ owner owner ] sid | vpn-instance vpn-instance-name ] |
显示各协议分配的SRv6 SID的数目 |
display segment-routing ipv6 local-sid statistics [ locator [ locator-name ] ] |
显示SRv6的Locator信息 |
display segment-routing ipv6 locator [ locator-name ] |
显示SRv6的Locator的配置信息和Locator已分配SRv6 SID的统计信息 |
display segment-routing ipv6 locator-statistics [ locator-name ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!