3 基于BGP EVPN实现VxLAN理论基础

2020-04-19  本文已影响0人  小岳_
image.png

一、背景与挑战

  1. 总结前两篇"基于Static Ingress Replication实现VxLAN"和"基于Multicast实现VxLAN"会发现VxLAN本身并未设计控制层面,而是通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP的IP地址)的学习;
  2. 基于Static Ingress Replication实现的VxLAN和基于Multicast实现的VxLAN,都是采用数据驱动式的泛洪与学习,这种泛洪与学习方式导致数据中心网络中存在过多泛洪流量;
  3. 为解决数据驱动式的泛洪与学习带来的问题,VxLAN引入了EVPN(Ethernet Virtual Private Network)作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等特性,从而避免了不必要的数据流量泛洪;
  4. VxLAN引入了EVPN作为控制平面后,泛洪与学习由数据驱动式变为协议(MP-BGP)驱动式;
  5. VxLAN引入了EVPN作为控制平面后,使VTEP发现从数据平面转移到控制平面;
  6. EVPN作为VxLAN控制平面后,依靠MP-BGP协议也实现了新的功能特性,例如:VTEP间的认证、主机路由发布、支持分布式任播网关等;
  7. EVPN VxLAN数据层面的VxLAN报文封装格式不变,依旧为原始报文添加新VxLAN头、新UDP头、新IP头和新二层帧头。与TCP相比,采用UDP头可有效减少网络开销(尤其针对BUM流量)。另外与TCP(TCP通讯时不仅需要源IP、源端口、目的IP和目的端口,还需要序列号和应答号)这种面向连接的服务不同,UDP可更好的实现ECMP和LACP(将Hash出的随机源端口作为负载分担的依据)负载分担。

二、BGP EVPN介绍

2.1 EVPN演进史:

image.png

2.2 数据驱动式泛洪学习和EVPN控制层面对比:

image.png
  1. 邻居发现:传统的VxLAN因无控制层面,所以VxLAN隧道邻居的发现和维护借助数据泛洪来进行,而BGP EVPN通过BGP来自动发现和维护;
  2. 邻居认证:传统的VxLAN不具备认证功能,BGP EVPN可通过BGP协议本身的认证机制来实现;
  3. 主机路由学习:传统的VxLAN数据驱动式泛洪学习,BGP EVPN环境中本地主机通过数据驱动学习,远端主机通过MP-BGP路由协议进行通告;
  4. 主机路由分发布:传统的VxLAN不支持路由的发布,BGP EVPN通过路由导入实现VxLAN之间的互通(分为对称式和非对称式)。

2.3 VxLAN引入EVPN作为控制层面后带来的功能特性:

  1. 通过MP-BGP对主机的MAC/IP进行通告;
  2. 通过MP-BGP实现VTEP Peer的自动发现和认证;
  3. 支持分布式任播IP网关;
  4. 支持APR抑制;
  5. 具有头端自动发现的Ingress Replication;
  6. ……

2.4 VxLAN引入EVPN作为控制层面优势:

  1. 具有基于主机的转发的多租户架构解决方案;
  2. 可实现多厂商互操作的行业标准协议;
  3. 内嵌的多租户支持:
    a, 利用MP-BGP提供具有L3 VPN特性的VxLAN;
  4. 通过协议驱动的学习实现真正的可扩展性:
    a, 通过EVPN MP-BGP实现主机MAC/IP地址发布;
  5. 在主机移动或网络故障时快速收敛:
    a, MP-BGP协议驱动的重新学习和融合;
    b, 在主机移动时,新的VTEP将发送BGP更新以通告主机的新位置。
  6. 最佳流量转发路径,支持主机移动性:
    a, 分布式任播网关可优化转发主机生成的流量;
    b, 无需发卡(Hair-pinning)即可到达IP网关;
  7. 支持ARP抑制:
    a, 最小化Overlay网络中的ARP泛洪;
  8. 具有动态学习远端VTEP列表的头端复制:
    a, 头端复制可实现Underlay网络不用配置组播;
    b, 动态学习的远程VTEP列表最大程度地减少了前端复制的配置开销。
  9. 可在Underlay网络配置组播实现BUM流量的转发;
  10. 通过MP-BGP身份验证的VTEP对等身份验证:
    a, 增加了安全性,防止流氓VTEP或VTEP欺骗;

2.5 术语释义:

image.png

二层VNI:
VNl(VxLAN网络标识符)承载在跨VTEP(VxLAN隧道端点)桥接的VxLAN数据包中。此VNI是按每VLAN进行配置的。

三层VNI:
VNI承载在跨VTEP路由的VxLAN数据包中。此VNI链接到每个租户的VRF。

任播网关:
所有三层VTEP都为面向主机的SVI配置了相同的MAC地址和相同的IP地址。

VRF Over VLAN:
每个租户VRF都需要为VxLAN路由配置一个VLAN。

VxLAN二层网关:
VTEP能够在同一个VNI中交换VLAN -> VxLAN,VxLAN -> VLAN数据包。

VxLAN三层网关:
VTEP能够跨不同的VNI路由数据包。

2.6 EVPN控制层面处理:

image.png

2.7 MP-BGP for EVPN:

image.png
  1. BGP EVPN使用MP-BGP作为路由协议,通过使用VRF(RD、RT)区分不同租户;
  2. 使用新的address family(L2VPN EVPN)来发布EVPN路由;
  3. EVPN路由中包含了MAC和IP的可达性;
  4. 支持iBGP和eBGP。

2.8 新的NLRI(Network Layer Reachability Information)

1,EVPN Type 2:MAC/IP路由
通过Type-2路由将主机MAC/IP信息传递至远端VTEP。
MAC/IP路由报文格式如下图所示:

image.png
字段 说明 备注
Route Distinguisher 该字段为EVPN实例下设置的RD(Route Distinguisher)值。 /
Ethernet Segment Identifier 该字段为当前设备与对端连接定义的唯一标识。 /
Ethernet Tag ID 该字段为当前设备上实际配置的VLAN ID。 /
MAC Address Length 该字段为此路由携带的主机MAC地址的长度。 /
MAC Address 该字段为此路由携带的主机MAC地址。 /
IP Address Length 该字段为此路由携带的主机IP地址的掩码长度。 /
IP Address 该字段为此路由携带的主机IP地址。 /
MPLS Label1 该字段为此路由携带的2层VNI。 /
MPLS Label2 该字段为此路由携带的3层VNI。 /

该类型路由在VXLAN控制平面中的作用包括:

2,EVPN Type 3:Inclusive Multicast路由
该类型路由在VXLAN控制平面中主要用于VTEP的自动发现和VXLAN隧道的动态建立。作为BGP EVPN对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。其中,Originating Router's IP Address字段为本端VTEP IP地址,MPLS Label字段为二层VNI。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制表,用于后续BUM报文转发。

此类型路由是由前缀和PMSI属性组成,报文格式如下图所示:

image.png
字段 说明 备注
Route Distinguisher 该字段为EVPN实例下设置的RD(Route Distinguisher)值。 /
Ethernet Tag ID 该字段为当前设备上的VLAN ID,在此路由中为全0。 /
IP Address Length 该字段为此路由携带的本端VTEP IP地址的掩码长度。 /
Originating Router's IP Address 该字段为此路由携带的本端VTEP IP地址。 /
Flags 该字段为标志位,标识当前隧道是否需要叶子节点信息,在VXLAN场景中,该字段没有实际意义。 /
Tunnel Type 该字段为此路由携带的隧道类型。目前,在VXLAN场景中,支持的类型只有“6:Ingress Replication”,即头端复制,用于BUM报文转发。 /
MPLS Label 该字段为此路由携带的二层VNI。 /
Tunnel Identifier 该字段为此路由携带的隧道信息,目前,在VXLAN场景中,该字段也是本端VTEP IP地址。 /

3,EVPN Type 5:IP前缀路由
一般有两种场景会用到Type-5:

IP前缀路由的报文格式如下图所示:

image.png
字段 说明 备注
Route Distinguisher 该字段为EVPN实例下设置的RD(Route Distinguisher)值。 /
Ethernet Segment Identifier 该字段为当前设备与对端连接定义的唯一标识。 /
Ethernet Tag ID 该字段为当前设备上实际配置的VLAN ID。 /
IP Prefix Length 该字段为此路由携带的IP前缀掩码长度。 /
IP Prefix 该字段为此路由携带的IP前缀。 /
GW IP Address 该字段为默认网关地址,该字段在VXLAN场景中没有实际意义。 /
MPLS Label 该字段为此路由携带的3层VNI。 /

2.9 BGP EVPN Unerlay网络的典型设计:

image.png

2.10 VxLAN VTEP回顾:

image.png
VTEP上存在两种接口:
  1. IP接口:用于封装和解封装VxLAN的报文,用于构建隧道(类似Cisco OTV技术中的Join Interface);
  2. Local接口:2层接口,用于将二层数据引入到VxLAN的环境中(类似Cisco OTV技术中的Internal Interface)。

2.11 EVPN VxLAN主机和子网路由发布:

image.png
  1. 一般在BGP EVPN环境中,主要由Leaf交换机来运行MP-BGP,类似于MPLS VPN的CE-PE-P结构,Leaf交换机作为PE设备存在,Spine交换机在一般情况下仅作VxLAN报文的转发(Spine交换机一般不做VxLAN的封装或解封装),类似于MPLS VPN中的P或BGP RR设备;
  2. 主机的路由发布与底层协议分离,在Leaf节点上使用MP-BGP分发内部主机/子网路由和外部可达性信息;
  3. 建议配置BGP RR(路由反射器),以提供大二层网络的可扩展性和降低部署、维护难度。

2.12 EVPN控制层面-可达性信息发布:

image.png
  1. 在VTEP上将MP-BGP与EVPN地址族配合使用,以发布内部主机MAC/IP地址,子网路由和外部可达性信息;
  2. MP-BGP的增强功能可承载多达数十万条路由,并缩短了收敛时间;
  3. 为保障业务连通性,往往需配置为Full Mesh的BGP,为减少配置和维护工作,建议使用BGP RR。

2.12.1 主机通告

image.png
  1. 当有一个新的主机接入VxLAN网络中,本地的VTEP会将这个主机的IP、MAC、VTEP、VNI形成BGP的Update消息,并发送给BGP RR(前提网络中存在BGP RR,没有RR就直接发送给BGP邻居);
  2. BGP RR将这个更新消息发送给所有的RR Client,RR Client将获得的MAC路由装载进MAC地址表,将获得的IP可达性信息装载进VRF路由表。

2.12.2 主机移动

image.png
  1. VTEP-1探测到Host1,这时为Host1通告一个序号为0的EVPN路由;
  2. Host1从VTEP-1移动至VTEP-3;
  3. VTEP-3探测到Host1,这时为Host1通告一个序号为1的EVPN路由;
  4. VTEP-1发现最新的路由并撤回自己的通告。

2.13 VxLAN集中式网关的问题:

2.14 BGP EVPN VxLAN分布式任播网关:

image.png
  1. Distributed Anycast Gateway要求在所有的VTEP设备上为同一SVI配置相同的虚拟IP和MAC地址(此MAC地址可为所有的SVI使用),这样无论主机的数据包到达哪个VTEP设备都可以被网关正常的处理;
  2. Distributed Anycast Gateway一般用于对称式的BGP EVPN路由设计上;
  3. Distributed Anycast Gateway信息由BGP EVPN Type5通告。

2.14.1 不同的IRB(Integrated Routing and Bridging)模型:

image.png
  1. IRB是指在VTEP上同时实现L2桥接和L3路由功能;
  2. 类似传统的VLAN间路由,VxLAN间也可进行路由,IRB用于实现VxLAN间路由;
  3. IRB有两种模式,即对称式IRB和非对称式IRB;
  4. 非对称式IRB:数据包来回"路径"不对称;
  5. 对称式IRB:数据包来回"路径"对称;
  6. 厂商一般推荐使用对称式IRB。

2.14.2 非对称式IRB:

image.png
image.png
  1. 从以上两张图片可以看出,路由动作发生在源VTEP,之后再做VxLAN封装,然后走VxLAN的二层网络到达对端VTEP;
  2. 非对称式IRB如果在两个VxLAN之间进行路由,会在入站VTEP上进行路由,然后通过目的VNI传输到远端VTEP,在出站VTEP桥接。数据包返回流程同理(入站VTEP路由,出站VTEP桥接),所以被称为非对称式IRB。
  3. VNI中的所有VTEP都可以是本地主机的虚拟IP网关;
  4. 优点:因为在每台VTEP上都会具备源VNI和目的VNI,所以不会产生次优路径,优化的南北向流量转发,可无发卡的路由流量。
  5. 缺点:因为非对称IRB的转发特点(仅在源VTEP进行路由),为保证通信,每台VTEP都要配置维护所有的VNI,相应的每台VTEP所维护的MAC地址表和ARP表条目较多(包括那些没有本地主机的VNI也要配置);
  6. 对“非对称”的理解:
    image.png
    a, 上图中蓝线为Host-1去往Host-2的流量,绿线为Host-2返回Host-1的流量;
    b, 可以看出非对称式IRB仅会在入站VTEP上进行路由,并且来回报文"路径"不对称。

2.14.3 对称式IRB:

image.png
image.png
  1. 对称式IRB:数据包在离开VTEP或进入VTEP时都进行路由,需要有一个特殊的L3 VNI承载本地VTEP到远端VTEP的流量;
  2. 数据流量从本地的L2 VNI进入到VRF L3 VNI,用L3 VNI封装VxLAN数据,到达对端后,流量从L3 VNI进入到L2 VNI;
  3. L2 VNI称作为Network VNI,L3 VNI称作为VRF VNI;
  4. 每个VRF都要配置一个L3 VNI。
image.png image.png
对称式IRB优势: image.png

单租户涉及的逻辑组件

image.png
  1. 每个VLAN映射到一个二层VNI;
  2. 一个租户可以有多个VLAN,因此有多个二层VNI;
  3. 同一个二层VNI内的流量被桥接;
  4. 二层VNI之间的流量被路由;
  5. 每个租户有一个三 层VNI(VRF)用于路由;
  6. 上图中的VNl X'用于路由数据包。

2.14.4 vPC和BGP EVPN集成的环境:

image.png image.png

2.14.5 非对称式IRB与对称式IRB对比:

  1. 对称式IRB可最佳利用VTEP上的ARP和MAC表;
  2. 对称式IRB可以更好地扩展终端主机;
  3. 根据VxLAN Overlay网络可以支持的VNI总数,对称式IRB可实现更好地扩展;
  4. 多家厂商已达成共识,对称式IRB将是最终方案;
  5. 思科也支持非对称式IRB以向前兼容;
  6. 思科推荐使用对称式IRB。

2.15 BGP EVPN VxLAN ARP抑制:

image.png
  1. Host1发送ARP请求,请求IP-2的MAC地址;
  2. VTEP-1拦截到Host1的ARP请求,VTEP-1开始检查ARP抑制缓存表,发现IP-2的ARP缓存条目;
  3. VTEP-1发送ARP回复包给Host1,ARP回复包中携带IP-2的MAC地址即MAC-2;
  4. Host1的ARP表学习到IP-2对应的MAC地址;
  5. 如果VTEP-1的ARP抑制缓存表中没有关于IP-2的条目,VTEP-1会对这个ARP请求进行泛洪。

Cisco Nexus 9000v配置ARP抑制注意:

2.16 BGP EVPN VxLAN中的BUM流量转发:

image.png
  1. Ingress Replication(头端复制):VTEP-1接收Overlay的BUM流量,将数据包封装为单播VxLAN数据包,向同一VxLAN VNI中的每个远端VTEP对等方发送一个副本。利用BGP协议实现Ingress Replication,泛洪时会有突发流量占用VTEP上行链路带宽;
  2. PIM:利用组播网络特性,只需一份副本,BUM流量就可以抵达所有VTEP Peers。在这种环境中,BUM流量实际是在Underlay的组播网络中传输。

三、Cisco Nexus 9000对VxLAN的支持:

image.png
image.png

四、引用参考:

https://www.ciscolive.com
https://tools.ietf.org/html/rfc7432
https://www.sdnlab.com/23511.html
https://zhuanlan.zhihu.com/p/29519776
https://support.huawei.com/enterprise/zh/doc/EDOC1100075483/4b7cb278
https://nwktimes.blogspot.com/2018/04/vxlan-part-vi-vxlan-bgp-evpn-basic.html

上一篇 下一篇

猜你喜欢

热点阅读