网教网

搜索
查看: 110|回复: 0

SRv6网络编程自学系列 | SRv6 EVPN的工作原理

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-4-19 17:19:44 | 显示全部楼层 |阅读模式
书籍来源:《SRv6网络编程:开启IP网络新时代》
这本书已经出了很多年了,但多年之后因为工作需要再来读一遍,除了温习之外,发现自己学到了更多的知识。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:SRv6网络编程自学系列 | 汇总_COCOgsta的博客-CSDN博客

<hr/> 基于EVPN控制平面的SRv6解决方案是当下SRv6部署的最典型应用之一,可以简称为SRv6 EVPN。
为了支持基于SRv6的EVPN,在发布Type-x路由的同时,还需要通告其中一个或多个SRv6 Service SID,包括End.DX4等。通告SRv6 Service SID的目的在于将EVPN实例与SRv6 Service SID绑定,从而使EVPN流量通过SRv6数据平面转发。
根据CE接入方式及不同PE的互访诉求,EVPN有以下几种常见的部署方式。


  • EVPN E-LAN:适用于二层VPLS业务接入场景。
  • EVPN E-Line:适用于点到点的二层VPWS业务接入场景。
  • EVPN L3VPN:适用于三层VPN业务接入场景。
5.4.1 EVPN E-LAN over SRv6的工作原理
在典型的EVPN E-LAN业务中,PE需要部署EVI和BD,AC接口需要绑定BD,BD也需要绑定到EVI。此外,还需要为该EVPN实例中的所有PE配置相同的RT,用于实现业务MAC/IP路由的相互导入导出,进而实现多点到多点互联。
下面以单播和组播为例,介绍EVPN使用SRv6 BE路径承载报文的工作原理。


  • MAC学习与单播流量转发
在转发EVPN数据之前,EVPN实例需要通过控制平面来通告Type-2 MAC/IP路由,构建MAC转发表。PE节点学习MAC/IP路由的流程如下。
① CE1发起ARP请求,查询CE3的MAC地址。
② PE1从AC接口收到ARP请求报文以后,会执行如下动作。


  • 学习到CE1的MAC地址MAC1;
  • 将ARP请求向其他PE广播;
  • 将CE1的MAC地址MAC1在EVPN MAC/IP路由中通告,携带End. DT2U类型的VPN SID A1:1::B100。
③ PE2和PE3接收到PE1的ARP广播,各自向自己的AC接口广播。
④ PE2和PE3从BGP控制平面学习到MAC1,使用VPN SID A1:1::B100作为下一跳进行路由迭代,并生成目的 MAC 地址为 MAC1的转发表项。
⑤ CE3向CE1进行ARP应答,目的MAC地址为CE1的MAC1。PE3从AC接口接收到ARP应答,学习到CE3的MAC地址MAC3,并将ARP应答按照单播流量转发给PE1。




图5-15 EVPN E-LAN over SRv6 MAC路由学习的流程
如图5-16所示,从CE1到CE3的单播流量转发的流程描述如下。
① PE1从BD接口上收到CE1发送到CE3的报文,然后会执行如下动作。


  • 使用目的MAC地址MAC3在BD中查询MAC表项,查询到MAC3对应的VPN SID A3:1::B300;
  • PE1进行SRv6封装,其中以自己的Loopback接口IPv6地址作为源地址,以VPN SID A3:1::B300为目的IPv6地址;
  • 使用VPN SID A3:1::B300作为目的地址查询IPv6路由转发表,找到对应的出接口并转发报文。
② P设备收到报文,按照最长匹配原则查询IPv6路由转发表,最终匹配到IGP发布的SRv6 Locator路由A3:1::/96,按最短路径转发到PE3。
③ PE3收到报文,命中一个End.DT2U SID,PE3需要执行End.DT2U SID的指令。




图5-16 EVPN E-LAN over SRv6单播流量转发流程


  • 组播分发树建立与BUM流量转发
如图5-17所示,组播分发树建立流程如下。
① 各个PE部署了BD与EVPN实例之后,互相发布Type-3集成组播路由,发布PE的Originator-IP、PMSI属性以及End.DT2M VPN SID信息,PE在本地生成End. DT2M类型的SID表项。
② 各个PE从其他PE接收到Type-3集成组播路由,找到与RT匹配的EVPN实例与BD,根据Originator-IP与VPN SID建立组播分发树。当有该EVPN下的BUM流量进来时,依据组播分发树的Originator-IP来复制组播流量。




图5-17 EVPN E-LAN over SRv6组播分发树建立流程
如图5-18所示,组播分发树建立好之后,就可以转发BUM流量,具体的转发流程如下。
① CE1向PE1发送一个二层广播报文,目的MAC地址可以为广播MAC地址、组播MAC地址或未知单播MAC地址。
② PE1从BD接口接收到BUM流量,根据已经建立好的组播分发树,复制BUM流量到所有叶子,发送给其他PE。
③ P节点收到流量,按照最长匹配原则查询IPv6路由转发表,匹配到IGP发布的Locator路由,按最短路径发送给PE2和PE3。
④ PE2和PE3收到流量,通过报文IPv6目的地址查找本地SID表,结果命中一个End.DT2M SID,PE2和PE3需要执行End.DT2M SID的指令。




图5-18 EVPN E-LAN over SRv6 BUM流量转发流程
在多归场景下,建立组播分发树之后,需要用到水平分割技术来实现BUM流量剪枝,防止BUM流量环路。下面以双归场景为例,具体描述水平分割相关的控制转发流程。如图5-19所示,CE2双归到PE2和PE3,CE3单归到PE3。现在CE2对外发送一份BUM流量。
控制表项建立流程如下。
① 双归场景下的PE2、PE3会为CE2多归接入的接口分配一个本地唯一的Arg.FE2标识。
② PE1接收到该路由信息时,PE1上没有同一ES的配置,该路由不做处理。
③ PE2接收到该路由信息时,PE2上有同一ES的配置,PE2保存PE3通告过来的Arg.FE2信息。在转发时,PE2将 Arg.FE2与 PE3的End.DT2M SID进行“Or”操作来修改本地的组播分发树目的地址为A3:1B::F3C2。
数据转发流程如下。
① 入口PE2节点在接收到BUM流量时,基于EVI形成的组播分发树复制流量给其他PE节点;其中,通告BUM流量给PE1时,目的地址是PE1的End.DT2M值;通告BUM流量给PE3时,目的地址是A3:1B::F3C2。
② PE1从网络侧接收到BUM流量时,PE1执行普通End.DT2M操作。
③ PE3上会预先形成一个泛洪剪枝表,以Arg.FE2为索引,查AC出接口。
PE3在接收到目的地址为A3:1B::F3C2的BUM流量时,使用目的地址的最后8 bit去查泛洪剪枝表,确定剪枝接口,最终PE3向除了Arg.FE2绑定的AC接口外的其他所有AC接口复制BUM流量,防止了BUM流量环路。




图5-19 CE双归场景EVPN E-LAN over SRv6 BUM流量转发流程
5.4.2 EVPN E-Line over SRv6的工作原理
EVPN E-Line在EVPN业务架构基础上提供了一种点到点的L2VPN服务方案。EVPN E-Line over SRv6分为单归场景、双归单活和双归双活场景。
如图5-20所示,EVPN E-Line over SRv6 BE的连接建立流程如下。
① PE1和PE2分别配置EVPL实例和EVPN VPWS实例。配置完成后,本地PE上将生成AC接口和EVPL实例的转发关联表项。
② PE1和PE2分别向对端发送Type-1以太自动发现路由,Type-1以太自动发现路由携带本地AC ID,以及类型为End.DX2的VPN SID,PE在本地生成End.DX2类型的SID表项,动作为解封装SRv6后把流量转发到对应AC接口。
③ PE1和PE2分别从对端收到Type-1以太自动发现路由,匹配RT以后,交叉到对应的EVPN VPWS实例,根据以太自动发现路由中的Ethernet Tag ID匹配EVPL实例中配置的远端AC ID,如果匹配成功,则下发EVPN E-Line转发表。
EVPN E-Line over SRv6 BE单归场景数据转发如图5-21所示,具体的转发流程如下。
① PE1根据流量入接口绑定的E-Line查找相应的EVPN E-Line转发表,得到SRv6 VPN SID,然后对原始报文进行SRv6封装,最后使用SRv6 VPN SID查询IPv6路由转发表,找到对应的出接口并转发流量。
② P节点收到流量,按照最长匹配原则查询IPv6路由转发表,匹配到IGP发布的Locator路由A2:1::/96,按最短路径转发给PE2。
③ PE2收到流量,通过报文IPv6目的地址查找本地SID表,结果命中一个End.DX2SID,PE2需要执行End.DX2 SID的指令。




图5-20 EVPN E-Line over SRv6 BE单归场景的路由发布流程




图5-21 EVPN E-Line over SRv6 BE单归场景数据转发流程
5.4.3 EVPN L3VPN over SRv6的工作原理
EVPN L3VPN over SRv6的数据转发方式与L3VPN over SRv6相同,二者的差别仅仅在于发布路由的方式不同。EVPN通过BGP EVPN地址族发送EVPN Type-5 IP前缀路由来通告VPN SID。
5.4.4 SRv6 EVPN的协议扩展
本节将详细介绍SRv6 EVPN主要类型路由的协议扩展及其发布过程。


  • 以太自动发现路由
EVPN Type-1以太自动发现路由可用于实现水平分割过滤、快速收敛和别名等功能。EVPN Type-1路由也被用在EVPN VPWS以及EVPN灵活互联场景,主要作用是通告点对点Service ID。
根据发布路由的不同用途,以上的字段值也会有差异,主要分为ES和EVI两种粒度。
ES 粒度的以太自动发现路由: CE多归属场景下的PE设备会为每个ES通告一条Ethernet Tag ID为全F的ES粒度的以太自动发现路由,携带ESI标签扩展属性,通过ESI值区分连接相同CE的其他PE设备,用作水平分割和快速收敛。
EVI 粒度的以太自动发现路由: PE设备也会通告一条Ethernet Tag ID非全F的EVI粒度的自动发现路由,用作E-LAN场景下的别名来实现负载分担或备份路径,以及携带VPWS场景下的点到点Service ID信息。
在发布ES粒度自动发现路由时,还需要在BGP Prefix-SID属性的SRv6 L2Services TLV中携带一个Service SID。此SID对应的行为完全由发布者定义,而其实际作用是指明End.DT2M SID的Arg.FE2 SID参数,用以实现多归场景下的BUM流量的剪枝,防止BUM流量环路。
EVI粒度的自动发现路由各字段的说明如表5-7所示。
同理,在发布EVI粒度的以太自动发现路由时,也需要在BGP PrefixSID属性的SRv6 L2 Services TLV中携带一个Service SID。这个Service SID的行为可以由发布者定义,在实际情况中,它一般是End.DX2、End.DX2V或End.DT2U的行为。


  • MAC/IP通告路由
EVPN Type-2 MAC/IP通告路由用于将单播流量的MAC/IP地址可达性通告给同一个EVPN实例中的其他所有边缘设备。
当发布MAC/IP通告路由时,Service SID需要随着MAC/IP通告路由一起通告出去。在BGP SID Attribute的SRv6 L2 Services TLV中必须携带Service SID,在SRv6 L3 Services TLV中是可选的。


  • 集成组播路由
EVPN Type-3集成组播路由由前缀和PMSI属性组成,用于建立组播流量的转发通道。当PE之间建立BGP邻居关系以后,PE之间会传递集成组播路由,集成组播路由可以携带本端PE的IP前缀和PMSI信息,其中PMSI用于携带组播报文传输所使用的隧道类型和隧道标签信息。
EVPN Type-3路由携带PMSI属性,用来传递隧道信息。


  • ES路由
EVPN Type-4 ES路由用于实现连接到相同CE的PE设备之间互相自动发现,也可以用于选举DF。
值得注意的是,在发布EVPN Type-4路由的过程中,不会发布BGP SID属性中的SRv6 Services TLV。这就意味着该路由在SRv6网络中的处理过程中仍然维持了RFC 7432中描述的过程。


  • IP前缀路由
EVPN Type-5 IP前缀路由用于将IP地址可达性通告给该EVPN实例中的所有边缘路由设备。
EVPN Type-5路由对应的SRv6 Service SID被编码在BGP Prefix-SID属性的SRv6L3 Services TLV之中,与NLRI信息合在一起发布,其行为由发布者指定。在实际应用中,这个行为应该是End.DT4/6或End.DX4/6。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表