一、为何会出现VXLAN?

第一个想到是的,难道是因为VLAN技术功能不够强大?还是VLAN的数量有限制?还是VLAN技术在特定的场景中不能使用?

ovn vxlan ovn vxlan数量不够_ovn vxlan


找了很多的资料,总结最主要的三点:

  1. 虚拟化技术的出现,使得企业使用物理设备虚拟多台虚拟机的方式组网,应用模块和应用数量增加,导致VLAN的数量需求也在增加,所以VLAN4094的数量确实不够用了。
  2. 共有云厂商的出现,使得多租户的 网络之间可能存在IP地址、MAC地址的重叠、VLAN只能隔离广播域,无法解决网络重叠的问题,所以需要一种新的技术保证多个租户之间存在地址重叠情况下依旧能通信(还有一个就是虚拟机的迁移,要保证MAC和IP不变),所以VLAN的功能确实不够强大。
  3. 虚拟化的出现导致交换机的MAC地址表异常庞大,尤其时群体的出现,为了保证虚拟机之间东西向流量可以正常通信,且不影响南北向设备的性能。所以需要新的技术来分担交换机的压力。
    不知道的可以找百度

二、什么是VLAN、VXLAN?

2.1. 什么是VLAN

虚拟局域网(Virtual Local Area Network),是在交换机实现过程中涉及到的概念,由802.1Q标准所定义。由于交换机是工作在链路层的网络设备,连接在同一台交换机的终端处于同一个二层网中,同时也处于同一个广播域。当交换机接入较多的终端时,任意一台终端发送广播报文时(例如:ARP请求)报文都会传遍整个网络。对于规模较大的组网场景,广播报文的泛滥对于网络通信将会造成较大的影响。VLAN技术为这一问题提供了解决方案,VLAN将同一网络规划为多个逻辑上的虚拟子网,并规定当收到广播报文时,仅仅在其所在VLAN中进行广播而防止广播报文泛滥。VLAN技术在链路层的层次中实现了广播域的隔离。

2.2. 什么是VXLAN

虚拟可拓展局域网(Virtual extensible Local Area Network),IETF定义NVO3标准技术之一,采用MAC-in-UDP报文封装模式,通过将二层报文使用三层协议封装实现二层网络在三层范围内扩展,满足数据中心到二层虚拟机迁移和多租户需求。VXLAN技术可以基于三层网络结构来构建二层虚拟网络,通过VLAN技术可以将处于不同网段网络设备整合在同一个逻辑链路层网络中,对于终端用户而言,这些网络设备似乎”真实地"部署在了同一个链路层网络中。这也就是为什么说可拓展的局域网的原因吧。

三、VLAN、VXLAN的优缺点

其实VLAN的缺点就是VXLAN的优点,反之亦然。总结以下

3.1. VLAN的优点

  1. 隔离广播域
  2. 中小企业组网中,4094的数量足够使用
  3. 封装格式简单,属于underlay层面

3.2. VXLAN的优点(可以解决以下问题)

  1. 虚拟化技术,允许在物理机上运行多个MAC地址各不相同的虚拟机,随着数量的增加,交换机的MAC地址表将剧烈膨胀,甚至需要MAC覆盖。
  2. 数据中心多以VLAN为虚拟机划分网络,但是VLAN数量受制于VLAN(802.1Q)协议4096,这就远远满足不了现实的需求。
  3. 多租户环境的要求,其每个租户都有自己隔离的网络环境,导致物理网络中每个租户所分配的MAC地址和VLAN ID会存在重叠的可能
  4. Spanning Tree Protocol (STP)算法会产生大量多路路径冗余
  5. 支持远距离虚拟机迁移,避免处理复杂的L2(vlan)网络环境
  6. ToR(Top of Rack) Switch链接着物理server,它记录着各个server/VM相连的MAC地址映射表。当地址映射表满时,ToR就会停止学习新的地址,

这样就会导致网络泛洪,直到有记录过期被换出,腾出空闲表项。
以上所描述的问题VXLAN都可以解决,所以这就是VXLAN的优点。

四、VLAN、VXLAN的报文封装详解

4.1. VLAN报文封装(802.1Q标准以太网帧格式)

VLAN帧最小帧长为64字节

ovn vxlan ovn vxlan数量不够_封装_02



MAC DA: 长度6字节,目的MAC地址


MAC SA: 长度6字节,源MAC地址


Type : 长度为16bit,表示帧类型,802.1Q tag帧中Type字段取固定值0X8100,如果不支持802.1Q的设备收到802.1Q帧,则将其丢弃


PRI :priority字段,长度为3bit,表示以太网帧的优先级,取值范围是0~7,数值越大,优先级越高。当交换机/路由器发生传输拥塞时,优先发送优先级高的数据帧


CFI : Canonical Format Indicator,长度为1bit,表示MAC地址是否是经典格式。CFI为0说明是经典格式,CFI为1表示为非经典格式。该字段用于区分以太网帧、FDDI帧和令牌环网帧,在以太网帧中,CFI取值为0


VID : VLAN ID,长度为12bit,表示该帧所属的VLAN。在VRP中,可配置的VLAN ID取值范围为1~4094。其中0和4095协议中规定为保留的VLAN ID

三种类型:

Untagged帧:VID 不计

Priority-tagged帧:VID为0x000

VLAN-tagged帧:VID范围0~4095

三个特殊的VID:

0x000:设置优先级但无VID

0x001:缺省VID

0xFFF:预留VID


Type :长度为2字节,指后续数据的字节长度,但不包括CRC校验码


DATA :长度为42~1500字节,负载(可能包含填充位)


FCS : 长度为4字节,用于帧内后续字节差错的循环冗余检验 4.2. VXLAN报文封装

VXLAN是一种overlay的网络技术,使用MAC in UDP的方法进行封装,共50字节的封装报文头。具体的报文格式如下:

ovn vxlan ovn vxlan数量不够_vlan_03

VXLAN header :长度8字节,目前使用的是Flags中的一个8bit的标识位和24bit的VNI(Vxlan Network identifier),其余部分没有定义,但是在使用的时候必须设置为0x0000。VNI 24bit,所以数量远超过VLAN。 Outer UDP header:长度8字节,目的端口使用4798,但是可以根据需要进行修改,源端口随机哈希。同时UDP的校验和必须设置成全0。

Outer IP header:长度为20字节,目的IP地址可以是单播地址,也可以是多播地址。单播情况下,目的IP地址是Vxlan Tunnel End Point(VTEP)的IP地址。
protocol:设置值为0x11,显示说明这是UDP数据包;
Source ip: 源VTEP_IP;
Destination ip: 目的VTEP IP。
Outer Ethernet Header:长度为14字节,
MAC DA:目的VTEP的Mac 地址,即为本地下一跳的地址(通常是网关Mac 地址)。
MAC SA:源VTEP的Mac 地址。
VLAN Type:VLAN Type被设置为0x8100,并可以设置Vlan ID tag(这就是vxlan的vlan 标签)。
Ethernet Type:设置值为0x8000,指明数据包为IPv4。

4.3.NVo3架构基础


NVo3(Network Virtualization over Layer 3),是IETF 2014年十月份提出的数据中心虚拟化技术框架。NVo3是基于IP/MPLS作为传输网,在其上通过隧道连接的方式,构建大规模的二层租户网络。

NVo3的技术模型如下所示:

ovn vxlan ovn vxlan数量不够_IP_04


IP Fabric:可以理解为传统的二层或三层网络(IP/MPLS),也就说underlay网络。

NVE(Network Virtualization Edge):Overlay网络的边界,也就是vxlan隧道的起点,实现二层、三层的虚拟化功能。

NVA(Network Virtualization Authority):作为NVE设备的控制器负责隧道建立、地址学习等控制逻辑(可以理解为SDN的控制器)。

总结:NVo3是一种架构,比如VXLAN、NVGRE、STT等等,都是基于此架构实现基于三层IP overlay网络构建虚拟化网络技术的。

4.4. VTEP


先说以下Vxlan的组网示意图:

ovn vxlan ovn vxlan数量不够_ovn vxlan_05


图中两台终端Server1和Server2位于不同的网络中,二者通过路由器来实现互通,通过VXLAN可以使得这两台终端在“逻辑上”位于“同一个”链路层网络中而与两台终端直接相连的路由器也在逻辑上构建了一条在虚拟链路中的通道vxlan tunnel,这样的路由器我们称之为“vxlan隧道终端”(VXLAN Tunnel End Point, VTEP)。在包含VXLAN的网络中,VXLAN的实现机制仅仅对VTEP节点可见。

虚拟化技术实现Vxlan网络拓扑示意图:

ovn vxlan ovn vxlan数量不够_IP_06


需要说明的是,VTEP节点可以由实现了VXLAN功能的交换机、路由器等硬件设备充当,但在更多的基于虚拟化技术实现的网络拓扑的应用中,VTEP节点的角色更多由部署了多台虚拟机的主机中的hypervisor进程来担任。


VTEP的作用:用于对VXLAN报文进行封装/解封装,包括ARP请求报文和正常的VXLAN数据报文,在一端封装报文后通过隧道向另一端VTEP发送封装报文,另一端VTEP接收到封装的报文解封装后根据封装的MAC地址进行转发。