问题描述
SRv6 设备需要获取全网的 SID 信息才能实现端到端的数据转发。在一个 AS 内,设备可以通过扩展的 IGP 协议(扩展 OSPFv3 或扩展 IS-IS)获取 AS 内的 SID 信息;
解决方案
而在跨域场景中需要借助 BGP 帮助传递 SID 信息,这种通过 BGP 传递 SID 的技术叫做 BGP EPE(Egress Peer Engineering);
BGP EPE 可为域间路径分配 BGP Peer SID,Peer SID 可以分为两种:
BGP EPE 只是针对 BGP 邻居节点及相关链路分配 SID,并不能构建一个用于转发的路径,BGP Peer SID 信息还需要与 IGP SID 配合才能形成 E2E 的路径;
BGP EPE 负载分担
https://support.huawei.com/enterprise/zh/doc/EDOC1100279019/be68f9e4
BGP EPE 可为域间路径分配 BGP Peer SID,Peer SID 可以通过 BGP LS 扩展直接传递给网络控制器。而对于没有与控制器建立 BGP LS 邻居的转发器设备,可以先通过 BGP LS 将 Peer SID 信息传递给 BGP 邻居,然后再由 BGP 邻居通过 BGP LS 传递给网络控制器。如图 1-511 所示,BGP EPE 能够针对对等体分配 Peer Node Segment(Peer-Node SID)、Peer Adjacency Segment(Peer-Adj SID)、Peer-Set SID;
Peer-Set SID 用于指示一组邻居。BGP 支持将一组邻居规划为一个 Set,然后基于该组分配 SID,这个 SID 称为 Peer-Set SID,Peer-Set SID 在转发时可以对应多个出接口。当多个链路加入一个 Peer Set,自动负载分担。一个 Peer-Set 由众多 Peer-Node 和 Peer-Adj 组成,那么针对该 Peer-Set 分配的 SID 就会对应到多个 Peer-Node SID 和 Peer-Adj SID;
SRv6 Policy 路径粘连
在大型网络中,有可能会导致 SRv6 的 SRH 头部过大,考虑到设备限制和转发效率,SRH 内的 SID 数量需要所有限制(SRv6 栈深一般由设备能力决定);
解决 SRH 头部过大的问题一般有两种方法:
1)SRv6 头部压缩:华为 SRv6 头部压缩主要使用 G-SRv6 方案,头部压缩后,SRH 在不损失 SID 信息的基础上可以减少头部大小,提高转发效率;
2)SRv6 路径粘连:通过 Binding SID 用于将不同的 SRv6 路径粘连在一起,这样每段 SRv6 路径的 SRH 头部就不会过大;
针对 SRv6 的 SRH 头部有栈深的限制,因此对于大型网络可以部署 SRv6 路径粘连方案;
路径粘连主要通过粘连 SID 与粘连节点实现:
1)粘连 SID 也叫 Binding SID,通过 Binding SID 可以表示一段 SRv6 Policy 转发路径;
2)粘连节点会处理 Binding SID,并压入 SRH 信息,粘连节点一般是 ABR 或 ASBR 设备;
我们主要学些 SRv6 路径粘连 方案;
SRv6 的 Binding SID 主要有 4 种:
1)End.B6.Insert
2)End.B6.Insert.RED
3)End.B6.Encaps
4)End.B6.Encaps.RED
SRv6 粘连标签常用的有两种封装模式:
1)Insert 模式:在原始 IPv6 报文头后插入一个 SRH,数据包基于原始 IPv6 头部与新 SRH 头指导转发;
2)Encaps 模式:在原始 IPv6 报文头前插入外层 IPv6 头部与 SRH 头,数据包基于外层 IPv6 头部与 SRH 头部转发数据;
Insert
Encaps
Encaps 模式使用的 End.B6.Encaps 指令可以被拆解为 End + B6 + Encaps,B6 表示应用一个 SRv6 Policy,Encaps 表示采用封装外层 IPv6 报文头和 SRH 的方式来应用 SRv6 Policy。该指令执行的动作是首先将内层 SRH 的 SL 值减 1,再将 SL 指向的 SID 复制到内层 IPv6 报文头的目的地址字段,然后封装上一层 IPv6 报文头与 SRH(包含对应的 Segment List),并设置源地址为当前节点的地址,目的地址为 SRv6 Policy 的第一个 SID,此外还要设置好外层 IPv6 报文头的各个字段,最后对这个新的 IPv6 报文进行查表转发;