赞
踩
RFC定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network
,虚拟扩展局域网)。VXLAN采用MAC in UDP
封装方式,是NVO3(Network Virtualization over Layer 3
)中的一种网络虚拟化技术。
VXLAN早已被广泛应用于数据中心网络。随着园区网络的业务需求越来越灵活、园区网络虚拟化的需求及网络自动化的需求越来越强烈,VXLAN开始进入园区网络,搭配园区SDN控制器实现更多用户价值。
虚拟化技术具有降低IT成本、提高业务部署灵活性和降低运维成本等优势。越来越多的企业选择在数据中心或园区IT设施使用云计算或虚拟化技术。
在企业选择虚拟化架构后,业务将以虚拟机方式部署于服务器集群中。
网络需求:二层扩展
虚拟化/云计算集群内允许虚拟机任意迁移,导致相同业务(相同网段)虚拟机可能运行在不同的服务器,或同一个虚拟机(一个IP)先后运行在不同的服务器(物理位置)。
物理服务器可能分布在地理位置跨度非常大的机房,因此需要使用三层进行互联。
网络需求:多租户隔离
云化场景一般支持多租户,即不同用户共享物理资源。这对网络提出两个需求,租户间隔离和租户内互访。
传统网络的问题
服务器虚拟化后,VM的数量比原有的物理机发生了巨大的增长,而接入侧二层设备的MAC地址表规格较小,无法满足快速增长的VM数量。
VLAN Tag只有12 bit。对于大型虚拟化云计算服务的场景而言,租户数目远大于VLAN可用个数。传统二层网络中的VLAN无法满足网络动态调整的需求。
虚拟机迁移必须发生在一个二层网络中。传统的二层网络,将虚拟机迁移限制在了一个较小的局部范围内。
VXLAN在本质上是一种VPN技术,能够在任意路由可达的物理网络(Underlay网络)上叠加二层虚拟网络(Overlay网络),通过VXLAN网关之间的VXLAN隧道实现VXLAN网络内部的互通,同时,也可以实现与传统的非VXLAN网络的互通。
VXLAN通过采用MAC in UDP封装来延伸二层网络,将以太报文封装在IP报文之上,通过路由在网络中传输,无需关注虚拟机的MAC地址。且三层网络无网络结构限制,具备大规模扩展能力。通过路由网络,虚拟机迁移不受网络架构限制。
VXLAN解决传统网络遇到的问题
VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP、MAC地址作为外层头进行封装,对网络只表现为封装后的参数。
除VXLAN网络边缘设备,网络中的其他设备不需要识别虚拟机的MAC地址,减轻了设备的MAC地址学习压力,提升了设备性能。
VXLAN引入了类似VLAN ID的用户标识(VNI),由24 bit组成,支持多达16 M的VXLAN段的网络隔离,对用户进行隔离和标识不再受到限制,可满足海量租户。
对于具有同一网段IP地址的VM而言,即使其物理位置不在同一个二层网络中,但从逻辑上看,相当于处于同一个二层域。即VXLAN技术在三层网络之上,构建出了一个虚拟的大二层网络。
VXLAN在园区网中的应用
通过引入虚拟化技术,在园区网络中基于一张物理网络创建多张虚拟网络(Virtual Network,VN)。不同的虚拟网络应用于不同的业务,例如办公、视讯、安防等。
VXLAN的价值
技术选择 | Underlay网络 | Overlay网络 | 配置及管理 | 用户信息携带 | 组网要求 |
---|---|---|---|---|---|
VLAN | L2 | L2 | 命令行或基于控制器 | 无 | 设备广泛支持 |
MPLS VPN | L3 | L2/L3 | 运营商级别的技术要求 | 无 | 需端到端支持MPLS |
VXLAN | L2/L3 | L2/L3 | 命令行或基于控制器 | 可以 | 隧道端节点支持VXLAN即可 |
华为设备上VXLAN的报文格式
VXLAN的基本概念
1.NVE-Network Virtualization Edge
是实现网络虚拟化功能的网络实体,可以是硬件交换机也可以是软件交换机。
NVE在三层网络上构建二层虚拟网络,是运行VXLAN的设备。图中SW1和SW2都是NVE。
2.VTEP-VXLAN Tunnel Endpoints
VTEP是VXLAN隧道端点,位于NVE中,用于VXLAN报文的封装和解封装。
VXLAN报文(其外层IP头部)中源IP地址为源端VTEP的IP地址,目的IP地址为目的端VTEP的IP地址。
3.VNI(VXLAN Network Identifier) and BD(Bridge Domain)
VNI
BD
BD是华为独有的概念,只在本地有效,主要用来替换VLAN,是为了解决VLAN ID最大只能到4096的问题
4.VAP-Virtual Access Point
实现VXLAN的业务接入。
VAP有两种配置方式,二层子接口方式或者VLAN绑定方式:
传统网络的流量进入VXLAN网络之后,通过二层子接口或者VLAN绑定的方式,与BD进行绑定,在BD中会指定VXLAN VNI,实现从传统的VLAN网络到VXLAN网络的映射。
5. Border and Edge
Edge:VXLAN网络的边缘接入设备,传统网络的流量由此进入VXLAN网络。
Border:VXLAN网络和外部网络通信的节点,用于外部流量进入VXLAN网络或VXLAN内部流量访问外部,一般连接具有三层转发能力的设备(如Router、Firewall)。
6. L2网关和L3网关
二层(L2)网关:实现流量进入VXLAN网络,也可用于同一VXLAN网络内终端的同子网通信。
三层(L3)网关:用于VXLAN网络内终端的跨子网通信以及终端对外部网络(非VXLAN网络)的访问。
7. VBDIF
类似于传统网络中采用VLANIF实现不同广播域互通,在VXLAN中引入了VBDIF的概念。
VBDIF接口在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。
通过VBDIF接口可实现不同网段的用户通过VXLAN网络通信,及VXLAN网络和非VXLAN网络间的通信,也可实现二层网络接入三层网络。
8. 分布式与集中式网关
集中式网关
L3网关部署在一台设备上,所有跨子网的流量都通过该设备转发,实现流量的集中管理。
分布式网关
VTEP设备既是L2网关,又是L3网关。非网关节点对VXLAN隧道不感知,仅作为VXLAN报文的转发节点。
VXLAN隧道由一对VTEP确定,报文在VTEP设备进行封装之后在VXLAN隧道中依靠路由进行传输。只要VXLAN隧道的两端VTEP是三层路由可达的,VXLAN隧道就可以建立成功。
根据VXLAN隧道的创建方式将VXLAN隧道分为以下两种:
静态VXLAN隧道并不是一个有状态的隧道(如IPsec VPN),只是数据传输时的隧道封装,类似于GRE VPN。
头端复制列表中的地址,即进行隧道封装传输时可封装的隧道目的地址。
VXLAN实现的是在Overlay网络中进行二层转发,转发单播数据帧依赖的依旧是MAC地址表项。
VTEP接收到BD内来自本地的数据帧,将数据帧的源MAC地址添加到该BD的MAC地址表中,出接口为收到数据帧的接口。
该表项用于指导发往本VTEP下连接终端的数据帧的转发。
<S1>display mac-address bridge-domain 10
-------------------------------------------------------------------------------
MAC Address VLAN/VSI/BD Learned-From Type
-------------------------------------------------------------------------------
0000-0000-000a -/-/10 GE1/0/1.10 dynamic
<S1>display mac-address bridge-domain 20
-------------------------------------------------------------------------------
MAC Address VLAN/VSI/BD Learned-From Type
-------------------------------------------------------------------------------
0000-0000-000b -/-/20 GE1/0/1.20 dynamic
转发属于远端VTEP下所连接设备的数据帧,需要先学习到远端设备的MAC地址。
该过程与传统MAC地址表形成过程类似,依赖于主机之间的报文交互,一般通过ARP报文交互形成MAC地址表项。
PC1与PC2通信过程如下:
根据上图:
传输BUM(Broadcast、Unknown、Multicast)流量时,VTEP会将流量复制多份发送到头端复制列表中的对端VTEP,从而在Overlay网络中实现泛洪转发的效果。
对于静态VXLAN,该方案没有控制平面,是通过数据平面的流量泛洪进行VTEP发现和主机信息(包括IP地址、MAC地址、VNI、网关VTEP IP地址)学习的,这种方式导致VXLAN网络存在很多泛洪流量。为了解决这一问题,VXLAN引入了BGP EVPN作为控制平面,通过在VTEP之间交换BGP EVPN路由实现VTEP的自动发现、主机信息相互通告等,从而避免了不必要的数据流量泛洪。
静态方式配置VXLAN的问题:
BGP EVPN的引入,是为了作为控制面协议,具体的控制过程如下:
BGP EVPN通过扩展BGP协议新定义了几种BGP EVPN路由(在MP_REACH_NLRI属性中新定义了几种NLRI,称作EVPN NLRI)。
这些BGP EVPN路由可以用于传递VTEP地址和主机信息,因此BGP EVPN应用于VXLAN网络中,可以使VTEP发现和主机信息学习从数据平面转移到控制平面。
EVPN NLRI通过路径属性MP_REACH_NLRI携带,地址族标识符(AFI)为25,代表L2VPN,子地址族标识符(SAFI)为70。
Path Attribute - MP_REACH_NLRI |
---|
Flags:Optional, Non-transitive |
Type Code: MP_REACH_NLRI (14) |
Length |
Address family identifier (AFI): Layer-2 VPN (25) |
Subsequent address family identifier (SAFI): EVPN (70) |
Next hop network address (4 Byte) |
Route Type (1 octet) |
Length (1 octet) |
Route Type specific (variable) |
BGP EVPN与MPLS VPN类似,为了控制路由的发送、接收,BGP EVPN同样存在VPN实例的概念(EVPN实例),与传统的IP VPN实例相同,EVPN实例存在RD和RT值,传递路由时使用扩展团体属性携带EVPN实例RT值。
除了RT值之外,为了支持一些特性,BGP EVPN在扩展团体属性中增加了一些新子类型:MAC Mobility、EVPN Router’s MAC Extended Community。
Path Attribute - EXTENDED_COMMUNITIES |
---|
Flags:Optional, Transitive |
Type Code: EXTENDED_COMMUNITIES(16) |
Length |
RT(Route Target) |
MAC Mobility |
EVPN Router's MAC Extended Community |
EVPN实例与BD进行绑定,BD下的MAC地址表项会通过BGP EVPN路由进行传递,在传递时会携带BD绑定的EVPN实例ERT值,对端收到之后对比本地EVPN实例的IRT值,将EVPN路由放入对应的EVPN实例路由表,同时解析EVPN路由表获取MAC地址表项,放入本端与该EVPN实例绑定的BD的MAC地址表中。
Type 2路由(MAC/IP路由):主要用于MAC地址通告、ARP信息通告以及主机IP路由通告。
Route Distinguisher(8 Byte) | EVPN实例下设置的RD(Route Distinguisher)值 |
Ethernet Segment Identifier(10 Byte) | 当前设备与对端连接定义的唯一标识 |
Ethernet Tag ID(4 Byte) | 当前设备上实际配置的VLAN ID |
MAC Address Length(1 Byte) | 此路由携带的主机MAC地址的长度 |
MAC Address(6 Byte) | 此路由携带的主机MAC地址 |
IP Address Length(1 Byte) | 此路由携带的主机IP地址的掩码长度 |
IP Address(0或4或16 Byte) | 此路由携带的主机IP地址 |
MPLS Label1(3 Byte) | 此路由携带的二层VNI |
MPLS Label2(0或3 Byte) | 此路由携带的三层VNI |
Type 2类路由描述
Route Distinguisher |
Ethernet Segment Identifier |
Ethernet Tag ID |
MAC Address Length = MAC地址长度 |
MAC Address = MAC地址 |
IP Address Length |
IP Address |
MPLS Label1 = VNI(二层) |
MPLS Label2 |
相同子网主机互访场景下进行主机MAC地址通告,包含主机MAC信息和二层VNI。
Route Distinguisher |
Ethernet Segment Identifier |
Ethernet Tag ID |
MAC Address Length = MAC地址长度 |
MAC Address = MAC地址 |
IP Address Length = IP地址长度 |
IP Address = IP地址 |
MPLS Label1 = VNI(二层) |
MPLS Label2 |
集中式网关部署场景下通告ARP类型路由,包含主机IP信息、MAC信息和二层VNI。
Route Distinguisher |
Ethernet Segment Identifier |
Ethernet Tag ID |
MAC Address Length = MAC地址长度 |
MAC Address = MAC地址 |
IP Address Length = IP地址长度 |
IP Address = IP地址 |
MPLS Label1 = VNI(二层) |
MPLS Label2 = VNI(三层) |
分布式网关部署不同子网互访场景下,进行IRB类型路由通告。它包括主机MAC信息、IP信息、二层VNI和三层VNI。
主机MAC地址通告
同子网主机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通告主要用于以下两种场景:
主机ARP通告主要在VXLAN集中式网关+BGP EVPN场景下使用,在BGP EVPN中向对等体通告ARP路由或者IRB路由为互斥选项,只能配置其中一种路由对外发布,一般在VXLAN集中式网关+BGP EVPN场景下选择发布ARP路由,而且VXLAN分布式网关+BGP EVPN场景下选择发布IRB路由。
主机IP通告
分布式网关下的跨子网通信
分布式网关组网中VTEP设备既是L2网关,又是L3网关。在该组网下跨子网通信的实现方式并不唯一,根据接收报文的VTEP(Ingress VTEP)处理方式不同,可以划分为:非对称IRB转发(Asymmetric Integrated Routing and Bridging)、对称IRB转发(Symmetric Integrated Routing and Bridging)。
VLANIF实现VLAN跨子网转发细节回顾:
非对称IRB转发:Ingress VTEP同时执行L3、L2查表转发,Egress VTEP只需要进行L2查表、转发,因为Ingress、Egress所执行操作不一致,被称为非对称转发。
在非对称IRB转发过程中,VTEP之间不会传递主机IP路由,即VTEP1、VTEP2之间不会传递本地下连PC生成的32位主机路由(由ARP信息生成),所以在第2步中VTEP1查找路由表,只能匹配到由VBDIF 10生成的直连路由。
在第5步中,VTEP2解封装VXLAN报文,目的MAC不是该BD所对应的本地VBDIF接口MAC地址,所以此时VTEP会执行L2查表,根据报文携带的VNI查找对应的BD的MAC地址表项,之后进行L2转发。
对称IRB转发:Ingress VTEP、Egress VTEP都执行L3查表转发。
相比较于非对称IRB转发,新增了一个IP VPN实例以及其所绑定的L3 VNI概念(非对称IRB转发时VTEP之间传输的报文其VXLAN头部中VNI值为L2 VNI),VBDIF接口需要绑定IP VPN实例,此时该VBDIF接口的路由学习、数据转发都被限制在该IP VPN实例中,与MPLS VPN类似。
EVPN RT、IP VPN RT
新增IP VPN实例之后,BGP EVPN在传递Type 2路由时携带的RT值依旧是EVPN RT值,只是对端收到路由之后的处理行为存在区别:
只有当路由携带的RT值与EVPN IRT、IP VPN IRT(EVPN)都不相同时,该路由才会被丢弃。
主机IP路由通告 (IRB路由)
通过EVPN Router’s MAC Extended Community这一扩展团体属性子属性,BGP EVPN传递VTEP自身的Router MAC,该MAC地址为NVE接口的MAC地址。
通信过程
对称IRB转发时,VTEP之间会传递由ARP生成的32位主机路由,因此VTEP1在进行路由查表时会匹配中由VETP2传递过来的32位主机路由,即便VTEP1上存在VBDIF 10,存在对应的直连路由,此时根据最长匹配原则依旧会根据32位主机路由进行转发。
在第4步中,VTEP2解封装VXLAN报文,发现内层数据帧的目的MAC地址为VTEP2的Router MAC(MAC B),判断自身需要进行L3路由查表转发,根据VNI 1000找到对应IP VPN实例,在该IP VPN实例路由表中查找对应的路由,发现匹配中VBDIF 10接口的直连路由,之后查找本地MAC地址表项,将报文发送给连接在本地的PC2。
该类型路由在VXLAN控制平面中主要用于VTEP的自动发现和VXLAN隧道的动态建立。
作为BGP EVPN对等体的VTEP,通过Inclusive Multicast路由互相传递二层VNI和VTEP IP地址信息。
其中,Originating Router’s IP Address字段为本端VTEP IP地址,MPLS Label字段为二层VNI。
NLRI格式 | Route Distinguisher(8 Byte) | EVPN实例下设置的RD值 |
Ethernet Tag ID(4 Byte) | 当前设备上的VLAN ID。在此路由中为全0 | |
IP Address Length(1 Byte) | 此路由携带的本端VTEP IP地址的掩码长度 | |
Originating Router's IP Address(4 or 16 Byte) | 此路由携带的本端VTEP IP地址 | |
PMSI属性 | Flags(1 Byte) | 在VXLAN场景中,该字段没有实际意义 |
Tunnel Type(1 Byte) | 在VXLAN场景中,支持的类型为“6:Ingress Replication” | |
MPLS Label(1 Byte) = 二层VNI | 此路由携带的二层VNI | |
Tunnel Identifier(变长) | 在VXLAN场景中,该字段也是本端VTEP IP地址 |
建立VXLAN隧道
VTEP通过Type 3路由互相传递二层VNI和VTEP IP地址信息。如果对端VTEP IP地址是三层路由可达的,则建立一条到对端的VXLAN隧道。同时,如果对端VNI与本端相同,则创建一个头端复制列表,用于后续BUM报文转发
该类型路由的IP Prefix Length和IP Prefix字段既可以携带主机IP地址,也可以携带网段地址。
当携带主机IP地址时,该类型路由在VXLAN控制平面中的作用与IRB类型路由是一样的,主要用于分布式网关场景中的主机IP路由通告。
当携带网段地址时,通过传递该类型路由,可以实现VXLAN网络中的主机访问外部网络。
Route Distinguisher(8 Byte) | EVPN实例下设置的RD值 |
Ethernet Segment Identifier(10 Byte) | 当前设备与对端连接定义的唯一标识 |
Ethernet Tag ID(4 Byte) | 当前设备上实际配置的VLAN ID |
IP Prefix Length(1 Byte) | 此路由携带的IP前缀掩码长度 |
IP Prefix (4 or 16 Byte) | 此路由携带的IP前缀 |
GW IP Address (4 or 16 Byte) | 默认网关地址,在VXLAN场景中没有实际意义 |
MPLS Label(3 Byte) | 此路由携带的三层VNI |
对于VXLAN外部网络,VTEP可以通过Type 5类路由将外部路由通告到整个VXLAN网络中,用于指导VXLAN内部主机访问外部网络。
BGP EVPN的Type 2路由使得VTEP可以不依赖主机之间的通信过程完成MAC地址表的学习,但是主机间的ARP信息依旧需要在VXLAN Overlay中进行泛洪转发,这会占用大量的网络资源。
为此可以通过BGP EVPN路由实现ARP广播抑制功能,减少广播流量。
ARP广播抑制功能的实现依赖于ARP广播抑制表,该表项的形成依赖于BGP EVPN携带的Type 2路由(IRB路由、主机ARP通告)。
默认情况下L3网关不会由本地的ARP信息生成BGP EVPN路由,需要手动使能BGP EVPN主机信息收集功能。之后VTEP会依据ARP信息生成IRB路由。
全网开启BGP EVPN主机信息收集功能之后,L3网关上将学习到全部主机的32位主机路由,这使得L3网关在转发属于同一个BD之间的流量时完全可以依赖主机路由进行三层IRB对称转发。
为此可以在L3网关的VBDIF接口上开启本地ARP代理,VBDIF接口会响应下连主机对同网段IP地址的ARP请求,之后对该同网段IP的访问可以由L3网关进行三层转发完成。
通过本地ARP代理机制,ARP报文的传递将会被抑制在本地VTEP之下,同时减少了VTEP之间的不必要流量交互。
在开启本地代理ARP的场景下,VTEP只需要维护本地的ARP表项,其他VTEP通过BGP EVPN路由传递的ARP信息在转发时并不会被用到,此时VTEP无需维护从其他VTEP学习到的ARP表项。
开启分布式网关之后,VTEP只处理收到的用户侧主机发送的ARP报文,删除已经学到的网络侧的ARP表项。
一般将不同VTEP上相同编号的VBDIF的接口MAC地址配置为相同的MAC地址,开启分布式网关之后,VBDIF虽然具有相同的IP地址、MAC地址,但是并不会上报ARP冲突,并且主机、VM迁移到不同的VTEP下时,无需重新进行网关的ARP解析。
MAC Mobility扩展属性用于当一个主机/VM从一个VTEP启动到另外一个VTEP之下时,对外宣告该主机的位置移动。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。