专栏名称: SDNLAB
SDNLAB是专注网络创新技术的先锋媒体和实践平台,涵盖SDN、NFV、CCN、软件定义安全、软件定义数据中心等相关领域,提供新闻资讯、技术交流、在线实验、行业分析、求职招聘、教育培训、方案咨询、创业融资等多元服务。
目录
相关文章推荐
中国政府网  ·  今晚调油价 ·  11 小时前  
半月谈  ·  今天17时,郑钦文第八次对阵萨巴伦卡! ·  12 小时前  
长安街知事  ·  尹锡悦夫妇投票 ·  16 小时前  
51好读  ›  专栏  ›  SDNLAB

详解:什么是EVPN

SDNLAB  · 公众号  ·  · 2020-10-30 17:07

正文

请到「今天看啥」查看全文



BGP EVPN在VXLAN网络中是如何工作的呢?本节将为您介绍BGP EVPN作为VXLAN控制面的工作过程。


在用BGP EVPN方式部署分布式VXLAN网络的场景中,控制平面的流程包括VXLAN隧道建立、MAC地址动态学习;转发平面的流程包括同子网已知单播报文转发、同子网BUM报文转发、跨子网报文转发。BGP EVPN方式实现的功能全面,支持主机IP路由通告、主机MAC地址通告、主机ARP通告等,还可以使能ARP广播抑制功能。如果在VXLAN网络中采用分布式网关,推荐使用BGP EVPN方式。


本文下面的内容以Underlay网络和Overlay网络均为IPv4为例,介绍EVPN作为VXLAN控制面的工作过程。


使用EVPN学习MAC地址

使用EVPN作为VXLAN的控制平面,可以用EVPN来进行MAC学习,以替代数据平面泛洪方式的MAC学习,减少泛洪流量。使用EVPN来进行MAC学习的过程,是通过在VTEP之间传递Type2路由完成的。


下面以图1-5为例,介绍VTEP之间是如何通过EVPN来实现远程主机的MAC学习的。


图1-5 使用EVPN来学习远程主机MAC地址的过程示意图


图中Leaf1和Leaf2作为VTEP,分别连接同网段的主机Host1和Host2,以Leaf1向Leaf2发送Type2路由为例。


1、Host1在连接至Leaf1时,通常会触发ARP、DHCP等行为。通过这些流量,Leaf1上就会学习到Host1的MAC信息,记录在本地MAC表中。


Leaf1学习到本地主机的MAC表项后,会向其对等体Leaf2发送EVPN Type2路由。该路由会携带本端EVPN实例的ERT、VTEP IP地址、二层VNI、Host1的MAC地址等信息。其中本端的EVPN实例的ERT、VTEP IP地址、二层VNI这些信息来源于本端VTEP上的配置,样例如下:


[Leaf1]bridge-domain 10 vxlan vni 10    //二层VNI evpn  route-distinguisher 10:1  vpn-target 0:10 export-extcommunity    //EVPN实例的ERT  vpn-target 100:5000 export-extcommunity  vpn-target 0:10 import-extcommunity#interface Nve1 source 1.1.1.1   //Leaf1的VTEP IP地址 vni 10 head-end peer-list protocol bgp#


2、Leaf2收到Leaf1发来的Type2路由后,能够学习到Host1的MAC地址信息,并将其保存在MAC表中,其下一跳为Leaf1的VTEP IP地址。


需要说明的是,Leaf2收到Leaf1发送的EVPN路由时,能否接纳该路由信息,是需要通过EVPN实例的RT(Route Target)值是否匹配来判断的。RT是一种BGP扩展团体属性,用于控制EVPN路由的发布与接收。也就是说,RT决定了本端的EVPN路由可以被哪些对端所接收,以及本端是否接收对端发来的EVPN路由。


RT属性分为两类:


  • ERT(Export RT):本端发送EVPN路由时,携带的RT属性设置为ERT。

  • IRT(Import RT):本端在收到对端的EVPN路由时,将路由中携带的ERT与本端的IRT进行比较,只有两者相等时才接收该路由,否则丢弃该路由。


在本例中,Leaf2上接收Leaf1发过来的EVPN路由,则需保证Leaf2上配置的IRT(Import RT)与Leaf1配置的ERT(Export RT)一致,例如Leaf2上EVPN中的IRT配置为0:10,与上文中Leaf1上的ERT一致:



[Leaf2]bridge-domain 10 vxlan vni 10 //二层VNI evpn route-distinguisher 10:2 vpn-target 0:10 export-extcommunity vpn-target 100:5000 export-extcommunity vpn-target 0:10 import-extcommunity //EVPN实例的IRT#


经过以上的流程,在未发送广播请求的情况下,Leaf2就可以学习到Host1的MAC地址。类似的,Leaf1也可以学习到Host2的MAC地址。


另外需要强调的是,EVPN只是减少了网络中的流量泛洪,并不会完全避免,例如在以下一些场景:


  • 网络中存在“静默”主机的情况,这种情况下主机不会触发ARP、DHCP等行为,导致VTEP学习不到本地主机MAC地址,从而也就无法发送MAC地址信息让其他VTEP学习到。

  • 主机首次通信的过程中,主机会发送ARP广播请求报文,这种也会产生泛洪。这种情况还可以通过ARP广播抑制功能来避免泛洪,此部分在后续章节会详细描述,此处不再赘述。


EVPN头端复制列表的建立

EVPN只能相对减少网络中的流量泛洪,并不能完全避免。 那么这些不能避免的BUM流量,还是需要建立头端复制列表来进行转发。


头端复制列表的建立可以通过手工方式或者EVPN来建立,本文仅描述EVPN方式:


  • 手工方式就是为逐个为每个VTEP指定其邻居VTEP,每条列表都需要人工配置。

  • EVPN则是通过在VTEP之间发布Type3路由,可以为VTEP设备之间自动创建头端复制列表。


下面以图1-6为列,介绍VTEP之间是如何通过Type3路由建立头端复制列表的。


图1-6 使用EVPN建立头端复制列表示意图


图中Leaf1、Leaf2、Leaf3作为VTEP,以Leaf1向Leaf2、Leaf3发送路由为例。


1、在Leaf1上完成VTEP IP、二层VNI、EVPN实例等相关配置后(这些配置的样例如下所示),Leaf1会向对等体Leaf2、Leaf3分别发送EVPN Type3路由。路由中会携带二层VNI、本端VTEP IP、EVPN实例的RD、出方向VPN-Target(ERT)等信息。


[Leaf1]bridge-domain 10 vxlan vni 10    //二层VNI evpn  route-distinguisher 1:10    //EVPN实例的RD  vpn-target 0:10 export-extcommunity    //EVPN实例的ERT  vpn-target 100:5000 export-extcommunity  vpn-target 0:10 import-extcommunity#interface Nve1 source 1.1.1.1   //Leaf1的VTEP IP地址 vni 10 head-end peer-list protocol bgp#


2、Leaf2、Leaf3收到Leaf1发来的Type3路由后,如果Leaf1的VTEP IP三层路由可达,则建立一条到Leaf1的二层VXLAN隧道;同时,如果本地有相同的VNI,则建立一条头端复制列表,用于后续广播、组播、未知单播报文的转发。


在Leaf2、Leaf3收到Leaf1发送的EVPN路由时,会基于路由携带的RT值(EVPN实例的ERT值)是否与本地EVPN实例的IRT值匹配,来判断是否接纳该路由。


经过以上的流程,Leaf2、Leaf3上就能建立到Leaf1的头端复制列表,指导后续BUM报文的转发。类似的,Leaf1上也会建立到Leaf2、Leaf3的头端复制列表。


使用EVPN发布主机路由和网段路由

主机路由发布


EVPN Type2路由不仅可以发布主机MAC地址,还可以发布主机路由信息,这是因为Type2路由还可以携带32位掩码的主机IP地址信息。主机路由的发布可以实现分布式网关场景下跨网段主机之间的互通。VTEP之间需要发布下属主机的IP路由,否则对端VTEP就无法学习到该主机的路由信息,从而没法进行三层转发。简单来说就是“你得告诉我你下面都接了什么网段的路由,否则我怎么知道要发给你呢”。


下面以图1-7为列,介绍VTEP之间是如何使用EVPN来发布主机路由的。


图1-7 使用EVPN发布主机路由的示意图







请到「今天看啥」查看全文