VXLAN笔记4. EVPN、分布式网关

EVPN 在 vxlan 分布式网关场景中必选,在集中式网关场景中可选。
原创文章,转载请注明出处。
  EVPN(Ethernet Virtual Private Network 以太虚拟专用网)是一种用于二层网络互联的VPN技术。EVPN技术采用类似于BGP/MPLS IP VPN的机制,在BGP协议的基础上定义了一种新的NLRI(Network Layer Reachability Information,网络层可达信息)即EVPN NLRI,EVPN NLRI定义了几种新的BGP EVPN(Type 2、3、5。1/4/6/7/8在vxlan中未使用)路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。
  EVPN最初是为了解决运营商MPLS VPN的问题,由Juniper提出,如CE双归属场景。由思科优化后,应用到VXLAN中。
  原有的VXLAN实现方案没有控制平面,是通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的,这种方式导致数据中心网络存在很多泛洪流量。为了解决这一问题,VXLAN引入了EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等特性,从而避免了不必要的数据流量泛洪。
  在BGP EVPN方式部署分布式网关的场景中:
  1. 控制平面的流程包括VXLAN隧道动态建立(VTEP发现)、MAC地址动态学习;
  2. 转发平面的流程包括同子网已知单播报文转发、同子网BUM报文转发、跨子网报文转发。
  该方式实现的功能全面,支持主机IP路由通告、主机MAC地址通告、主机ARP通告,可以直接使能ARP广播抑制功能。如果在VXLAN网络中采用分布式网关,推荐使用此方式。
 
  综上所述,EVPN通过扩展BGP协议新定义了几种BGP EVPN路由,这些BGP EVPN路由可以用于传递VTEP地址和主机信息,因此EVPN应用于VXLAN网络中,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。
 
  路由协议部署:Spine做为BGP EVPN RR路由反射器,Leaf做为反射器客户端。
  EVPN控制面表项同步:
  1. VM数据报文或ARP报文发送触发NVE节点的MAC/ARP等转发表项学习;
  2. NVE节点将学习到的转发表项导入EVPN实例,形成EVPN协议的MAC/IP路由;
  3. NVE节点的BGP-EVPN协议将自己生成的MAC/IP路由信息向邻居扩散;
  4. BGP-EVPN协议邻居(NVE节点)收到MAC/IP路由信息后生成转发表;
  5. BGP-EVPN协议通过扩散自己的MAC/IP路由信息、Segment Route路由信息等打通二三层转发路径。
 
  evpn 负责生成(刘大伟总结):
  1. 动态学习表项:
    1. MAC表——leaf南向虚机的信息(type2传递);
    2. L3路由表——leaf南向虚机的信息(type2传递),外部网络路由(type5传递);
    3. ARP广播抑制表(type2实现,将ARP请求报文广播地址替换为单播地址);见2.5 EVPN 集中式网关.note
    4. BUM头端复制列表(type3传递);
  2. 动态建立vxlan隧道(type3传递);
 
  建议使用分布式网关,而不是集中式网关。分布式网关优点:
  1. 很好地解决了次优路径问题。但租户数量不多/单租户内海量主机场景中,集中式网关仍可胜任【优势是配置简单】。
  2. 负载较为均衡,对spine的压力比较小;
  3. 扩容更方便,因为leaf分担了较多负载,增加leaf就能实现扩容。而扩spine难度较大;
  但分布式网关配置复杂,需要做好规划。
  分布式网关相对适合租户数量多,单租户内主机规模不大【主机规模过大时,对Leaf的性能要求明显提高】。
 

一、IRB 综合路由和桥接

  IRB(Integrated Routing and Bridge 综合路由和桥接,Type2)和IP前缀(Type5)两种路由类型,可根据如下原则进行选择:
  IRB类型路由只能发布32位主机IP路由。由于IRB类型路由包含着ARP类型路由,因此选择发布IRB类型路由后,可直接在Leaf节点上使能ARP广播抑制功能,无需其他配置,同时也利于虚拟机的迁移(详情可参见EVPN基本原理)。如果只需发布32位主机IP路由,建议选择发布IRB类型路由。
  IP前缀类型路由既能发布32位主机IP路由又能发布网段路由。但是,在发布32位主机IP路由时,需先将主机IP地址生成直连路由,这会影响虚拟机的迁移。因此,如果只需发布32位主机IP路由,不建议选择IP前缀类型路由。只有需要发布网段路由时(场景见上文),才需选择IP前缀类型路由。
 
非对称型 IRB(可以只在数据层面实现,分布式网关不支持):
  • 去程与回程数据包中的 VNI不对称。源端使用目的端的VNI做封装,目的端回程时,使用源端的VNI来封装。如果其中一端没有另一端的vbdif网关,就需要创建一个相同的vbdif,否则无法封装和通信【配置较多,对设备压力较大】。
  • 源端Leaf先做路由再做桥接【如vbdif1路由到vtep1另一个vbdif2,vtep1 vbdif2再桥接到目的vtep2的vbdif2】,目的端Leaf只做桥接,源目Leaf的行为不对称【往返通信时,源目各进行一次这样的过程】。
对称型 IRB(引入 BGP EVPN 作为控制平面,两端对称路由):
使用 BGP EVPN 主机路由,在不同的虚机间进行通信。
  • 往返VNI一致(同VRF时),都是VRF下配置的VNI。优点:按需配置vbdif网关;
  • 往返动作一致,都是查路由表转发。两端的网关MAC由type2下的Router's mac通告。优点:减少一次查表过程,对硬件芯片友好。
BGP evpn抓包.pcapng
 

二、BGP EVPN 的 NLRI

  EVPN Type 1(Ethernet Auto-Discovery) 以太自动发现路由。用于两个不同的功能:快速收敛(批量撤销)和别名。EVPN快速收敛允许PE更改与特定以太网段关联的所有MAC地址的下一跳邻接。EVPN别名允许流量在多个出口点之间负载均衡。用在MPLS CE多归属场景。
  EVPN Type 4(Ethernet Segment Route) 以太网段路由,PE连接CE的链路称为以太网段,ESI(Ethernet Segment ID)用来区分CE到PE的多归属链路。用于在MPLS CE多归属场景中选择指定转发器,指定转发器负责将BUM流量发送到特定以太网段中的CE。VXLAN场景中ESI为0。
  1、4在vxlan场景中用不到。

2.1 Type 2 MAC/IP地址通告路由

  MAC advertisement Route:MAC/IP地址通告路由。
  关注4处(1-4构成 IRB 路由,1-3构成 ARP 路由):
  1. MAC地址;
  2. IP地址;
  3. MPLS Label1对应的二层VNI(BD中定义);
  4. MPLS Label2对应的三层VNI(VRF中定义)。
  • Route Distinguisher:EVPN实例下设置的RD值。
  • Ethernet Segment Identifier:当前设备与对端连接定义的唯一标识,用来区分同一个CE多归上连PE的多条链路。vxlan环境中保留,抓包中全0;
  • Ethernet Tag ID:当前设备上实际配置的VLANID。华为不支持多个BD绑定一个EVI,所以该字段无意义,抓包中全0;
  • MAC Address Length:此路由携带的主机MAC地址的长度。
  • MAC Address:此路由携带的主机MAC地址,由BD下的mac地址表中提取。
  • IP Address Length:此路由携带的主机IP地址的掩码长度。
  • IP Address:此路由携带的主机IP地址,由VRF下的arp表中提取。
  • MPLS Label1:此路由携带的二层VNI【一比一对应BridgeDomain、二层VXLAN网络。二层VNI编号与三层VNI编号不能重复,编号空间共有16M。相同的L2vni代表一个大的逻辑广播域,如画图中的vni 2010】。在华为SDN控制器上,要手动分别定义L2及L3的vni范围。
  • MPLS Label2:此路由携带的三层VNI【一比一对应VPN实例、三层VRF网络。相同的L3vni代表一个大的逻辑路由器,如画图中的vni 3000】。
  mac-route路由表中--同时含有mac和ip信息,且下一跳为0.0.0.0的路由,是本机产生的。
 
  路径属性的扩展团体属性下还有:RT、encapsulation封装方式【tunnel type值为8,即vxlan】、Router’s mac【含IP信息时。注意MLAG成员设备vtep mac要一致】、MAC Mobility【如vm迁移通告。Sticky/Static MAC;SN序列号信息(VM迁移后生成的type2路由,SN会增加1,以区分新旧)】。
  Router’s mac:mlag的两个设备都出现在ip fabric上,vtep ip是一样的。两个设备上都有nve接口,这个nve接口相当于L2 tunnel的隧道接口。L2接口它有自己的mac,就是我们提到的router mac;nve把报文推到vxlan网络上和从vxlan网络上收报文都通过这个L2 tunnel接口来完成,推到网络上mac帧用相应的tunnel接口的router mac当源mac;反之,设备收到vxlan报文时也要从这个tunnel接口进来,这个vxlan报文中的目标router mac要匹配tunnel接口的mac。所以当ip fabric转发vxlan报文时可能会转发到两个mlag设备的任何一个,如果报文中的router mac不匹配tunnel接口的mac,报文会被drop掉。所以两个一样vtep ip的设备,他们的router mac要一样。router mac仅在跨网段访问时才用,不跨网段访问时使用终端的mac。
 
  VRF虚拟路由器(由各个Leaf上相同的三层VNI来区分),该VRF下所有的二层VNI VXLAN网络就像连接到此虚拟路由器的各个直连网络。
  生成条件:
  以下为AC下发的vbdif配置之一,获取到主机arp/mac/ip信息后,会生成Type 2路由:
interface Vbdif1002
ip binding vpn-instance vdc01(9878-VPCA-4018
ip address 192.168.10.1 255.255.255.0
arp distribute-gateway enable
mac-address 0000-5e00-0102
arp collect host enable
 
bridge-domain #之下配置vni和evpn实例后,BD、vni、evpn RT建立关联。
interface nve 1 #之下配置vni head-end peer-list之后,能发送type2路由给邻居。
bgp l2vpn evpn地址族下,配置向邻居通告irb路由。

 

2.1.1 MAC/IP 路由在 VXLAN 控制平面中的作用

  1. 主机 MAC通告(MAC add/add-length)。要实现同子网主机的二层互访,两端VTEP需要相互学习主机MAC。
  2. 主机 ARP通告(MAC/IP),主要用于以下两种场景:
    1. ARP广播抑制【集中式网关场景】。当三层网关学习到其子网下的主机ARP时,生成主机信息(包含主机IP地址、主机MAC地址、二层VNI、网关VTEP IP地址),然后通过传递ARP类型路由将主机信息同步到二层网关上。这样当二层网关再收到ARP请求时,先查找是否存在目的IP地址对应的主机信息,如果存在,则直接将ARP请求报文中的广播MAC地址替换为目的单播MAC地址,实现广播变单播,达到ARP广播抑制的目的。
  • [bd10]arp broadcast-suppress enable #在Leaf的BD下启用arp广播抑制;
  • dis arp broadcast-suppress user bridge-domain 10
    1. 分布式网关场景下的虚拟机迁移。当一台虚拟机从当前网关迁移到另一个网关下之后,新网关学习到该虚拟机的ARP(一般通过虚拟机发送免费ARP实现),并生成主机信息(包含主机IP地址、主机MAC地址、二层VNI、网关VTEP IP地址。且SN增加1),然后通过传递ARP类型路由将主机信息发送给虚拟机的原网关。原网关收到后,感知到虚拟机的位置发生变化,触发ARP探测,当探测不到原位置的虚拟机时,发送撤销报文撤销原位置虚拟机的ARP和主机路由。其它设备收到撤销报文后,才会更新evpn路由表。
  • 主机 IP路由通告(IRB)。在分布式网关场景中,要实现跨子网主机的三层互访,两端VTEP(作为三层网关)需要互相学习主机IP路由。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机IP路由(信息来自于VRF的ARP表)。其中,IP Address Length和IP Address字段为主机IP路由的目的地址,同时MPLS Label2字段必须携带三层VNI【用于跨子网通信(同VPC,跨VPC用静态路由)。分布式网关场景下能实现ARP路由的功能,可以取代ARP路由】。
  • 以上信息由所在leaf本地的mac、arp表生成,如果leaf中没有对应的mac或arp信息,那么就不会生成对应的type2路由。
 
  说明:IRB类型路由包含着ARP类型路由,不仅可以用于主机IP路由通告,也能用于主机ARP通告。BGP路由携带的下一跳为vtep的IP,可以和建立BGP邻居的IP不同。
  ARP类型路由携带的有效信息:主机MAC+主机IP+二层VNI【BD/Vxlan。如果有VNI对应的BD,那么MAC地址会被记录在对应BD的MAC地址表中】;
  IRB类型路由携带的有效信息:主机MAC+主机IP+二层VNI+三层VNI【租户VRF。主机路由会被记录在对应的VRF路由表中,实际是由RT(vpn-target,在bgp扩展团体属性中)决定是否接收。MAC地址处理方式与ARP类型一致】。
 

2.1.2 数据转发过程,及二层VNI、三层VNI、RT 的作用

  L2 VNI。不同Leaf 同网段的虚机转发数据时(假设知道对端的ARP信息),由Leaf下BD中的MAC表【由evpn传递的type2 NLRI生成】直接查到对应vxlan隧道的vtep地址,进行vxlan封装(L2 VNI)和转发。
  L2 VNI总结:用以对应生成各leaf上BD中的mac表,包括mac、vtep、L2 vni的对应关系,用以在同网段跨leaf通信时使用。
  参考 泰克2. Vxlan理论.note 中mac表的组成。
 
  L3 VNI。不同Leaf 跨网段的虚机转发数据时:
  1. 虚机封装‘[SIP-DIP][Smac-GWmac网关mac]’转发数据帧到网关。
  2. 网关【Leaf上的vbdif,并进入关联的VRF】剥离二层头,根据DIP查找vrf路由表【由evpn传递的type2 NLRI生成】,目的L3 VNI通过源leaf的VRF路由表确认。DIP为evpn邻居送来的主机路由。网关进行vxlan封装‘[原始数据包]【源VRFmac(即nve的mac,由bgp传递的Router-mac)-目VRFmac】[目的L3 VNI][UDP][SvtepIP-DvtepIP]’,并转发数据包到目的NVE【其中L3vni是目的leaf上对应的L3vni】。
  3. 到达目的NVE后,根据VNI,区分是访问L3 VRF或是L2 BD(VRF和BD的vni不同)。在进入目标VRF之后,根据目的网段,路由进入对应的三层vBDif,并查找arp表,找到目标主机并转发(有可能还要查找mac表,来找到对应的二层接口)。
  L3 VNI总结:在目标leaf上根据数据平面vxlan头中的L3 VNI来识别目标VRF,在跨网段互访时使用。一个 vpn-instance 对应一个L3vni。
  下图中Router's MAC是NVE接口下配置的MAC地址。
  Vxlan路由,会在BGP扩展属性中携带RT信息,用以控制路由的导入导出。
 
问:VNI 及 RT 的区别?
  • VNI 是数据平面的,存在于每一个数据报文中的 vxlan 头部;及 BGP evpn Type2 NLRI 的label字段中。决定数据报文封装时对应的字段,并不影响路由控制。
  • vpn-target(RT)是控制平面的:控制 BGP evpn 路由收发,在配置章节中介绍。
 
<HUAWEI> display arp
ARP Entry Types: D - Dynamic, S - Static, I - Interface, O - OpenFlow
EXP: Expire-time VLAN:VLAN or Bridge Domain
 
IP ADDRESS MAC ADDRESS EXP(M) TYPE/VLAN INTERFACE VPN-INSTANCE
---------------------------------------------------------------------------
192.168.149.254 0000-5e00-0102 I Vbdif13 vdc-manage-vpc_012-10014
 
<HUAWEI> display arp openflow
Total number of hosts: 43
-------------------------------------------------------------
VniId IP Address MAC Address VtepIP
-------------------------------------------------------------
5000 10.1.1.48 0001-0203-0405 10.2.2.2

  

问:EVPN 场景下,租户间可以相互学习对方路由吗?
1,数据平面能否访问通,依赖于L2 MAC表或L3 VRF中是否命中mac或IP。
2,接收EVPN路由时,根据RT来决定是否接收路由, 决定路由进到哪个租户的哪张表。所以需要互通的VRF在配置RT时,import RT要有对照关系。BGP RR要配置undo policy vpn-target。
3,数据平面靠 VNI来识别选择VRF(IP VRF or MAC VRF)。
4,控制平面靠 RT来决定MAC/IP路由进IP VRF or MAC VRF。
 
问:虚机漂移后,新的路由信息如何通告?
由漂移后的leaf发送新的type2路由update(仅路由目的vtep改变,IP/MAC/vni均不变)通告到相应的vrf中。此条路由更新中的SN序列号,要比原来通告的SN+1,标识这是一条更新的路由信息。
漂移前的leaf收到此type2路由更新,会触发ARP探测,在发现南向虚机消失后,更新本地的bgp evpn路由表,并发送BGP update报文撤销自己之前发送的type2路由【如不撤销,原来的BGP路由会一直存在,这是BGP的特性】。
 
 

posted @ 2021-06-24 13:44  飞飞6779  阅读(3398)  评论(0编辑  收藏  举报