核心概念
段路由扩展报文头(SRH,Segment Routing Header)
Segment List: 有序的SRv6 SID列表,SID(Segment Identifier),
Locator:Function(Opcode):ArgumentsSegments Left(SL): SRv6激活的SID为SList[SL]。在SRv6转发过程中每经过一个SRv6 Endpoint节点,Segments Left(SL)字段减1,IPv6报文头中的目的IPv6地址变换一次(当SL=0的SID类型为END/END.X/END.DT时,默认在倒数第二段会弹出SRH头部)(SRv6 SRH是从下到上逆序操作,SRH中的Segment在经过节点后也不会被弹出)(类似编程,从上到下顺序是0-n)
The SRH is defined as follows:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Routing Type | Segments Left |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Last Entry | Flags | Tag |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Segment List[0] (128-bit IPv6 address) |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| |
...
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Segment List[n] (128-bit IPv6 address) |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// //
// Optional Type Length Value objects (variable) //
// //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
SRv6 Segment命名规则
End:End是最基础的Segment Endpoint执行指令,表示中止当前指令,开始执行下一个指令。对应的转发动作是将SL值-1,并将SL指向的SID复制到IPv6报文头的目的地址中。(节点)
X:指定一个或一组三层接口转发报文。对应的转发行为是按照指定出接口转发报文。(接口)
T:查询路由表并转发报文。
D:解封装。移除IPv6报文头和与它相关的扩展报文头。
V:根据VLAN查表转发。
U:根据单播MAC查表转发。
M:查询二层转发表进行组播转发。
B6:应用指定的SRv6 Policy。
BM:应用指定的SR-MPLS Policy。
SRv6的END.DT4/6和END.DX4/6有什么区别
DT,剥离VPN标签后,根据路由表转发
DX,剥离VPN标签后,强行按照接口转发
SRv6节点通常通过扩展IGP(扩展OSPFv3或扩展IS-IS),将Locator相关路由扩散到网络节点上
SRv6 Policy
SRv6 SRH是从下到上逆序操作,SRH中的Segment在经过节点后也不会被弹出
头端(headend):SRv6 Policy生成的节点,一般是全局唯一的IP地址。
颜色(color):32比特扩展团体属性,用于标识某一种业务意图(例如低延时)。
尾端(endpoint):SRv6 Policy的目的地址,一般是全局唯一的IPv6地址。
一个SRv6 Policy可以包含多个候选路径(Candidate Path)。候选路径携带优先级属性(Preference)。优先级最高的有效候选路径为SRv6 Policy的主路径,优先级次高的有效路径为SRv6 Policy的备份路径。Segment List附带权重(Weight)来控制SRv6路径的负载分担

路径建立
在华为SRv6 Policy解决方案架构中,依赖控制器(iMaster NCE-IP)建立SRv6 Policy路径:
控制器通过
BGP-LS(Link-state)收集扩展IGP协议收集的拓扑信息,用于计算SRv6 Policy路径和状态呈现。控制器通过
BGP IPv6 SR Policy协议向源节点下发SRv6 Policy信息(headend、color、endpoint等)。在华为SRv6 Policy解决方案中,还会使用
NETCONF协议,该协议主要用于下发业务接口、路由策略(添加Color属性)等其他配置。除了通过iMaster NCE-IP下发SRv6 Policy之外,也可以通过手工的方式部署SRv6 Policy。SRv6 Policy跨域路径建立:而在跨域场景中需要借助BGP帮助传递SID信息,这种通过BGP传递SID的技术叫做BGP EPE(Egress Peer Engineering)
SRv6的SRH头部有栈深的限制,因此对于大型网络可以部署SRv6路径粘连方案。路径粘连主要通过粘连SID与粘连节点实现:粘连SID也叫Binding SID,通过Binding SID可以表示一段SRv6 Policy转发路径。粘连节点会处理Binding SID,并压入SRH信息,粘连节点一般是ABR或ASBR设备。
SRv6粘连标签常用的有两种封装模式:Insert模式:在原始IPv6 报文头后插入一个 SRH,数据包基于原始IPv6头部与新SRH头指导转发。Encaps模式:在原始IPv6 报文头前插入外层IPv6头部与SRH头,数据包基于外层IPv6头部与SRH头部转发数据。
可靠性
SRv6隧道一般可以通过SBFD,Ping,Tracert等方式检测连通性。
SRv6隧道保护可以分为两大类:本地保护和端到端保护
TI-LFA(Topology-Independent Loop-free Alternate)FRR能为SRv6隧道提供链路及节点的保护。当某处链路或节点故障时,流量会快速切换到备份路径继续转发。
配置
L3EVPN over SRBE
#
sysname NE-1
#
ip vpn-instance vpna
ipv4-family
route-distinguisher 100:1
apply-label per-instance
vpn-target 111:1 export-extcommunity evpn
vpn-target 111:1 import-extcommunity evpn
#
segment-routing ipv6
encapsulation source-address 2001:DB8:1::1
locator NE1_LOC ipv6-prefix 2001:DB8:100:: 64 static 32
#
isis 1
is-level level-2
cost-style wide
network-entity 49.0001.0010.0000.0001.00
#
ipv6 enable topology ipv6
segment-routing ipv6 locator NE1_LOC
#
interface GigabitEthernet3/0/0
undo shutdown
ip binding vpn-instance vpna
ip address 192.168.1.254 255.255.255.0
#
interface GigabitEthernet3/0/1
undo shutdown
ipv6 enable
ipv6 address 2001:DB8:12::1/64
isis ipv6 enable 1
#
interface LoopBack0
ipv6 enable
ipv6 address 2001:DB8:1::1/128
isis ipv6 enable 1
#
bgp 100
router-id 1.1.1.1
peer 2001:DB8:2::2 as-number 100
peer 2001:DB8:2::2 connect-interface LoopBack0
#
ipv4-family vpn-instance vpna
import-route direct
advertise l2vpn evpn
//开启VPN实例发布EVPN的IP前缀路由功能(type50
segment-routing ipv6 locator NE1_LOC evpn
//在EVPN L3VPN场景中,如果用户希望使用SRv6隧道承载业务流量,则需要配置为将要发送的EVPN路由添加SID属性
//对端BGP EVPN邻居在收到EVPN路由后,可以根据路由中的SID迭代SRv6隧道,从而生成转发表项。
segment-routing ipv6 best-effort evpn
//在EVPN场景,如果用户希望设备可以根据EVPN路由中的SID属性迭代SRv6 BE隧道
#
l2vpn-family evpn
peer 2001:DB8:2::2 enable
peer 2001:DB8:2::2 advertise encap-type srv6
//缺省情况下,本端设备向邻居发布的EVPN路由携带MPLS封装属性
#