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

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
  • 参考MPLS VPN,BGP EVPN相当于在PE与PE之间建立了一个二层VPN;
  • 因为使用MP-BGP协议承载EVPN,所以常见的属性都是必要的,包括RD、VPNv4前缀,RT和MP-iBGP。

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)

  • EVPN是一种用于二层网络互联的VPN技术。EVPN技术采用类似于BGP/MPLS IP VPN的机制,在BGP协议的基础上定义了一种新的NLRI(Network Layer Reachability Information,网络层可达信息)即EVPN NLRI,EVPN NLRI定义了几种新的BGP EVPN路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。
  • 因此EVPN应用于VXLAN网络中,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。

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控制平面中的作用包括:

  • 主机MAC地址通告
    要实现同子网主机的二层互访,两端VTEP需要相互学习主机MAC。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机MAC。其中,MAC Address Length和MAC Address字段为主机MAC地址。
  • 主机ARP通告
    MAC/IP路由可以同时携带主机MAC地址+主机IP地址,因此该路由可以用来在VTEP之间传递主机ARP表项,实现主机ARP通告。其中,MAC Address和MAC Address Length字段为主机MAC地址,IP Address和IP Address Length字段为主机IP地址。此时的MAC/IP路由也称为ARP类型路由。主机ARP通告主要用于以下两种场景:
    场景1:
    ARP广播抑制。当三层网关学习到其子网下的主机ARP时,生成主机信息(包含主机IP地址、主机MAC地址、二层VNI、网关VTEP IP地址),然后通过传递ARP类型路由将主机信息同步到二层网关上。这样当二层网关再收到ARP请求时,先查找是否存在目的IP地址对应的主机信息,如果存在,则直接将ARP请求报文中的广播MAC地址替换为目的单播MAC地址,实现广播变单播,达到ARP广播抑制的目的。
    场景2:
    分布式网关场景下的虚拟机迁移。当一台虚拟机从当前网关迁移到另一个网关下之后,新网关学习到该虚拟机的ARP(一般通过虚拟机发送免费ARP实现),并生成主机信息(包含主机IP地址、主机MAC地址、二层VNI、网关VTEP IP地址),然后通过传递ARP类型路由将主机信息发送给虚拟机的原网关。原网关收到后,感知到虚拟机的位置发生变化,触发ARP探测,当探测不到原位置的虚拟机时,撤销原位置虚拟机的ARP和主机路由。
  • 主机IP路由通告
    在分布式网关场景中,要实现跨子网主机的三层互访,两端VTEP(作为三层网关)需要互相学习主机IP路由。作为BGP EVPN对等体的VTEP之间通过交换MAC/IP路由,可以相互通告已经获取到的主机IP路由。其中,IP Address Length和IP Address字段为主机IP路由的目的地址,同时MPLS Label2字段必须携带三层VNI。此时的MAC/IP路由也称为IRB(Integrated Routing and Bridge)类型路由。
    说明:
    ARP类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI;
    IRB类型路由携带的有效信息有:主机MAC地址+主机IP地址+二层VNI+三层VNI。因此,IRB类型路由包含着ARP类型路由,不仅可以用于主机IP路由通告,也能用于主机ARP通告。

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:

  • Overlay网路与外部网络互通的场景,通过Type-5来传递IP前缀路由,当外部路由进入Border Leaf后,Border Leaf会将外部路由通过Type-5类路由同步到VxLAN网络中,从而实现VXLAN网络中的主机可以访问外部网络;
  • 为VTEP下联了路由设备时,使用Type 5配合Type 2可减少BGP更新消息的发送。

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
  • 对于Underlay网络来说,互联的方法通常不是主要考虑的问题,但是推荐使用Fabric设计,同时VxLAN也适合在DCI环境中使用。

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集中式网关的问题:

  • 如果两个主机,连接到同一个VTEP下不同的VxLAN L2网络中,当它们彼此想互访时,网络流量需先从VTEP流向L3 Gateway(Gateway可以是VTEP上的SVI,也可以是外部路由设备),例如在外部L3 Gateway完成3层转发,再回送到同一个VTEP;
  • 这种来回绕的流量是一种发卡流量(Hair-pinning,流量转发路径形状像女生用的普通一字发卡)。按照这种方式,VxLAN间的互访已经实现了,但存在3个问题:
    1.流量瓶颈,集中式的L3 Gateway的性能决定了三层流量的最大速率;
    2.发卡流量,发卡流量会带来不必要的网络延迟和负载;
    3.可能由于超占比的存在,不能保证全速的L3流量。

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
  • Host1发出数据包进入VTEP-1,VTEP-1上VNI A的网关将内层(原始)数据帧头中的目的MAC改为VTEP-4的MAC;
  • VTEP-1将数据报文进行VxLAN封装,新IP头中源IP为VTEP-1的IP,目的IP为VTEP-4的IP,VxLAN报文中的VNI为L3 VNI;
  • VTEP-4收到VxLAN报文后,进行解封装,修改报文的目的MAC后,送到Host2;
  • 数据包返回同理;
  • 可看出数据包来回"路径"一致。

image.png

对称式IRB优势:

  • VTEP只需维护本地主机所需要的VNI,大大减少了无用的ARP和MAC地址表空间的占用;
  • 增加了BGP EVPN实施的灵活性。
image.png
  • 在多租户环境中,可以配置多个L3 VNI实现租户的流量传输;
  • 使用L3-VNI识别租户VRF。

单租户涉及的逻辑组件

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
  • 在vPC和BGP EVPN集成的环境中,要求基本和普通的vPC+VxLAN一样,要求Loopbak接口要有一个相同的Secondary地址;
  • vPC的peer gateway特性必须启用,以防止潜在有可能因为vPC防环机制造成的丢包,同时可以开启负载均衡的转发方式;
  • 最佳实践是启用:peer-switch、peer gateway、ip arp sync和ipv6 nd sync。
image.png
  • 因为vPC是二层技术,一般不会影响到三层,所以在三层这个层面上来说,两个vPC设备都是独立设备,需有自己独立的BGP进程。

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
  • ARP抑制功能默认关闭,需手工使能,在NVE接口下的member vni命令下配置;
  • ARP抑制可有效减少由于主机学习导致的网络泛洪。
  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抑制注意:

  • 需配置"hardware access-list tcam region arp-ether size double-wide"命令以保障正常的L3泛洪学习和ARP抑制,N9Kv使用此命令之前,必须先释放现有TCAM区域的部分占用空间;
  • 通过"show hardware access-list tcam region"命令查看当前TCAM的分配情况;
  • 举例:通过"hardware access-list tcam region racl 512"命令释放部分"racl"占用的TCAM空间;
  • 举例:通过"hardware access-list tcam region arp-ether 256 double-wide"命令为"arp-ether"分配TCAM空间;
  • 配置完毕后保存并重启设备生效。

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
  • VxLAN封装和解封装由Broadcom Trident芯片处理;
  • 桥接和网关可以在1/10/40/100G端口上配置;
  • 封装发生在出站端口上;
  • 解封装发生在入站端口上。

四、引用参考:

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

你可能感兴趣的:(3 基于BGP EVPN实现VxLAN理论基础)