VXLAN-EVPN

在VXLAN中提到,除了手工配置VXLAN隧道,还可以使用EVPN作为VXLAN的控制平面,从而避免网路中存在大量的泛洪流量。 BGP-EVPN地址族 EVPN技术采用类似于BGP/MPLS IP VPN的机制,在BGP协议的基础上定义了一种新的网络层可达信息NLRI(Network Layer Reachability Information)即EVPN NLRI,EVPN NLRI定义了几种新的BGP EVPN路由类型,用于处在二层网络的不同站点之间的MAC地址学习和发布。 MP-BGP 传统的BGP-4使用Update报文在对等体之间交换路由信息。一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中。因为BGP-4只能管理IPv4单播路由信息,为了提供对多种网络层协议的支持(例如IPv6、组播),发展出了MP-BGP。MP-BGP在BGP-4基础上对NLRI作了新扩展。玄机就在于新扩展的NLRI上,扩展之后的NLRI增加了地址族的描述,可以用来区分不同的网络层协议,例如IPv6单播地址族、VPN实例地址族等。 类似的,EVPN也是借用了MP-BGP的机制,在L2VPN地址族下定义了新的子地址族——EVPN地址族,在这个地址族下又新增了一种NLRI,即EVPN NLRI。EVPN NLRI定义了几种BGP EVPN路由类型,这些路由可以携带主机IP、MAC、VNI、VRF等信息。这样,当一个VTEP学习到下挂的主机的IP、MAC地址信息后,就可以通过MP-BGP路由将这些信息发送给其他的VTEP,从而在控制平面实现主机IP、MAC地址的学习,抑制了数据平面的泛洪。 采用EVPN作为VXLAN的控制平面具有以下优势: 可实现VTEP自动发现、VXLAN隧道自动建立,从而降低网络部署、扩展的难度。 EVPN可以同时发布二层MAC信息和三层路由信息。 可以减少网络中的泛洪流量。 EVPN NLRI定义了五种EVPN路由类型 路由类型 路由描述 Type1 Ethernet auto-discovery (AD) route,以太自动发现路由 Type2 MAC/IP advertisement route,MAC/IP路由 Type3 Inclusive multicast Ethernet tag route,Inclusive Multicast路由 Type4 Ethernet segment route,以太网段路由 Type5 IP prefix route,IP前缀路由 其中,Type1和Type4是用于EVPN ESI(Ethernet Segment Identifier)多活场景,该场景主要是为了提高VXLAN接入侧的可靠性。主要重点介绍Type2、3、5...

更新: 2022-08-14 · 创建: 2022-08-14 · 6 分钟 · McLsk888

VXLAN简介

VXLAN是什么 VXLAN即虚拟扩展局域网,在源网络设备与目的网络设备之间建立一条逻辑VXLAN隧道,采用MAC in UDP(User Datagram Protocol)封装方式,即,将虚拟机发出的原始以太报文完整的封装在UDP报文中,然后在外层使用物理网络的IP报文头和以太报文头封装,这样,封装后的报文就像普通IP报文一样,可以通过路由网络转发。 VXLAN 产生背景 1、虚拟机迁移 虚拟机动态迁移,就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理服务器移动到另一个物理服务器的过程。该过程对于最终用户来说是无感知的,从而使得管理员能够在不影响用户正常使用的情况下,灵活调配服务器资源,或者对物理服务器进行维修和升级。 在服务器虚拟化后,虚拟机动态迁移变得常态化,为了保证迁移时业务不中断,就要求在虚拟机迁移时,不仅虚拟机的IP地址不变,而且虚拟机的运行状态也必须保持原状(例如TCP会话状态),所以虚拟机的动态迁移只能在同一个二层域中进行,而不能跨二层域迁移。 为什么一定要同二层迁移 因为如果跨二层域进行迁移,但要保持IP地址不变的话,是无法进行通信的。如下图,S1和S2下是两个不同的广播域,但S1和S2具有相同的网段,在传统的二三层网络是无法实现通信的。因为10.10.11.3跟10.10.11.2处于同一网段,报文不会发送到网关那里,而是发送ARP报文查询MAC地址,准备进行二层通信,但R1作为三层设备,是不会透传ARP报文的,因此无法学习到MAC地址,无法进行报文传输。 在传统的二三层网络中,限制了虚拟机迁移的范围 而VXLAN为何能解决这个问题呢?那就是把这个二层域“扩大”!用VXLAN技术将三层网络变成一个“大型交换机”,这样数据中心的所有VM都处于一个二层域下了。 众所周知,同一台二层交换机可以实现下挂服务器之间的二层通信,而且服务器从该二层交换机的一个端口迁移到另一个端口时,IP地址是可以保持不变的。这样就可以满足虚拟机动态迁移的需求了。VXLAN的设计理念和目标正是由此而来的。 前面提到,VXLAN本质上是一种隧道技术,当源和目的之间有通信需求时,便在数据中心IP网络之上创建一条虚拟的隧道,透明转发用户数据。而数据中心内相互通信的需求众多,这种隧道的建立方式几乎是全互联形态才能满足通信需求。 VXLAN可以提供一套方法论,在数据中心IP网络基础上,构建一张全互联的二层隧道虚拟网络,保证任意两点之间都能通过VXLAN隧道来通信,并忽略底层网络的结构和细节。从服务器的角度看,VXLAN为它们将整个数据中心基础网络虚拟成了一台巨大的“二层交换机”,所有服务器都连接在这台虚拟二层交换机上。而基础网络之内如何转发都是这台“巨大交换机”内部的事情,服务器完全无需关心。 而VXLAN的精髓就在于,将二层的报文,“藏”在了跨越三层网络的UDP报文中,在IP网络中,表明传输的是UDP报文,实际上传输的各个VM的二层报文,对于VM来说,就在三层IP网络之上,构建了一个“大二层”网络,只要目的IP可达,它就能将二层报文发送到指定设备。 那么这里就有问题了,为什么不直接将整个数据中心搞成一个真正意义上的二层域呢? 2、虚拟机规模受网络设备表项规格的限制 对于同网段主机的通信而言,报文通过查询MAC表进行二层转发。服务器虚拟化后,数据中心中VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是虚拟机网卡MAC地址数量的空前增加。 前面的疑问便可以解决了,直接搞成一个二层域,庞大的VM数量,会使得二层设备的MAC表项大大增加,而且在二层域中,还会存在环路问题,需要使用STP进行链路阻塞,而数据中心的链路,都是10G、40G的链路,阻塞后会大大浪费链路资源,而使用VXLAN,将三层网络转为一个大型交换机,利用三层网络协议本身的防环机制,不需要额外阻塞链路,提高资源利用率,何乐而不为? VTEP会将VM发出的原始报文封装成一个新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,对网络中的其他设备只表现为封装后的参数。也就是说,网络中的其他设备看不到VM发送的原始报文。 如果服务器作为VTEP,那从服务器发送到接入设备的报文便是经过封装后的报文,这样,接入设备就不需要学习VM的MAC地址了,它只需要根据外层封装的报文头负责基本的三层转发就可以了。因此,虚拟机规模就不会受网络设备表项规格的限制了。 当然,如果网络设备作为VTEP,它还是需要学习VM的MAC地址。但是,从对报文进行封装的角度来说,网络设备的性能还是要比服务器强很多。 使用VXLAN形成一个“大交换机”后,还面临一个问题,那就是隔离问题。类似于VLAN,这个大交换机,需要将VM进行批量隔离,保证数据的安全性,因此又还要再划分隔离域,分成一个个的“广播域”,那VXLAN怎么解决这个问题呢? 3、网络的隔离能力有限 VLAN作为主流的网络隔离技术,在标准定义中只有12比特,也就是说可用的VLAN数量只有4000个左右。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力显然已经力不从心。 VXLAN中引入了类似VLAN ID的VNI,一个VNI对应一个租户,属于不同VNI的虚拟机之间不能直接进行二层通信。VTEP(VXLAN隧道的起点和终点,可以是网络设备,也可以是虚拟机,后文会详解)在对报文进行VXLAN封装时,给VNI分配了24比特的空间,这就意味着VXLAN网络理论上支持多达16M(即:$2^{24}-1$)的租户隔离。相比VLAN,VNI的隔离能力得到了巨大的提升,有效得解决了云计算中海量租户隔离的问题。 VXLAN 原理 报文格式 前文提到在VXLAN中,使用了UDP来封装了原始的以太网帧,并且使用物理的IP和MAC作为外层头,那么实际上VXLAN报文长什么样呢? VXLAN Header 增加VXLAN头(8字节),其中包含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还包含VXLAN Flags(8比特,取值为00001000)和两个保留字段(分别为24比特和8比特)。 UDP Header VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。 Outer IP Header...

更新: 2022-07-21 · 创建: 2022-04-19 · 2 分钟 · McLsk888