深入 理解vxlan

作为网络虚拟化的重要技术,VXLAN备受关注,该协议是如何运作的?如何通过数据与控制层面的分离实现SDN网络?如何部署?本博文将为您详细介绍...

 一 . 为什么需要Vxlan

  1. vlan的数量限制

  4096个vlan远不能满足大规模云计算数据中心的需求

  2. 物理网络基础设施的限制

  基于IP子网的区域划分限制了需要二层网络连通性的应用负载的部署

  3. TOR交换机MAC表耗尽

  虚拟化以及东西向流量导致更多的MAC表项

  4. 多租户场景

  IP地址重叠

 二. 什么是Vxlan

  1. Vxlan报文

  vxlan(virtual Extensible LAN)虚拟可扩展局域网,是一种overlay的网络技术,使用MAC in UDP的方法进行封装,共50字节的封装报文头。具体的报文格式如下:

  (1) vxlan header

  共计8个字节,目前使用的是Flags中的一个8bit的标识位和24bit的VNI(Vxlan Network identifier),其余部分没有定义,但是在使用的时候必须设置为0x0000。

  (2) 外层的UDP报头

  目的端口使用4798,但是可以根据需要进行修改。同事UDP的校验和必须设置成全0。

  (3) IP报文头

  目的IP地址可以是单播地址,也可以是多播地址。单播情况下,目的IP地址是Vxlan Tunnel End Point(VTEP)的IP地址。在多播情况下引入VXLAN管理层,利用VNI和IP多播组的映射来确定VTEPs。

  protocol:设置值为0x11,显示说明这是UDP数据包

  Source ip: 源vTEP_IP;

  Destination ip: 目的VTEP IP。

  (4) Ethernet Header

  Destination Address:目的VTEP的Mac 地址,即为本地下一跳的地址(通常是网关Mac 地址);

  VLAN: VLAN Type被设置为0x8100, 并可以设置Vlan Id tag(这就是vxlan的vlan 标签)。

  Ethertype:设置值为0x8000,指明数据包为IPv4的。

  补充:VTEP的作用?

  用于对VXLAN报文进行封装/解封装,包括ARP请求报文和正常的VXLAN数据报文,在一段封装报文后通过隧道向另一端VTEP发送封装报文,另一端VTEP接收到封装的报文解封装后根据封装的MAC地址进行装法。VTEP可由支持VXLAN的硬件设备或软件来实现。

  从封装的结构上来看,VXLAN提供了将二层网络overlay在三层网络上的能力,VXLAN Header中的VNI有24个bit,数量远远大于4096,并且UDP的封装可以穿越三层网络,比VLAN有更好的扩展性。

  2. Vxlan的数据和控制平面

  (1) 数据平面---隧道机制

  已经知道,VTEP为虚拟机的数据包加上了层包头,这些新的报头之有在数据到达目的VTEP后才会被去掉。中间路径的网络设备只会根据外层包头内的目的地址进行数据转发,对于转发路径上的网络来说,一个Vxlan数据包跟一个普通IP包相比,出了个头大一点外没有区别。

  由于VXLAN的数据包在整个转发过程中保持了内部数据的完整,因此VXLAN的数据平面是一个基于隧道的数据平面。

  (2) 控制平面----改进的二层协议

  VXLAN不会在虚拟机之间维持一个长连接,所以VXLAN需要一个控制平面来记录对端地址可达情况。控制平面的表为(VNI,内层MAC,外层vtep_ip)。Vxlan学习地址的时候仍然保存着二层协议的特征,节点之间不会周期性的交换各自的路由表,对于不认识的MAC地址,VXLAN依靠组播来获取路径信息(如果有SDN Controller,可以向SDN单播获取)。

  另一方面,VXLAN还有自学习的功能,当VTEP收到一个UDP数据报后,会检查自己是否收到过这个虚拟机的数据,如果没有,VTEP就会记录源vni/源外层ip/源内层mac对应关系,避免组播学习。

三. VxlanARP请求

  (1) vxlan初始化

  VM1和VM2连接到VXLAN网络(VNI)100,两个VXLAN主机加入IP多播组239.119.1.1

  (2) ARP请求

  1) VM1以广播的形式发送ARP请求;

  2) VTEP1封装报文。打上VXLAN标识为100,外层IP头DA为IP多播组(239.119.1.1),SA为IP_VTEP1.

  3) VTEP1在多播组内进行多播;

  4) VTEP2解析接收到多播报文。填写流表(VNI, 内层mac地址,外层Ip地址),并在本地VXLAN标识为100的范围内

  广播(是VXLAN的用武之地)。

  5) VM2对接收到的ARP请求进行响应;

  (3) ARP应答

  1) VM2准备ARP响应报文后向VM1发送响应报文

  2)VTEP2接收到VM2的响应报文后把它封装在ip单播报文中(VXLAN标识依然为100),然 后向VM1发送单播

  3)VTEP1接收到单播报文后,学习内层MAC到外层ip地址的映射,解封装并根据被封装内容的目的MAC地址转发给VM1

  4)VM1接收到ARP应答报文,ARP交互结束

四:数据传输

  (1) ARP请求应答之后,VM1知道了VM2的Mac地址,并且要向VM2通信(注意,VM1是以TCP的方法向VM2发送数据的)。

  VTEP1 收到VM1发送数据包,用MAC地址从流表中检查VM1与VM2是否属于用一个VNI。两个VM不但位于同一个VNI中(不在同一个VNI中出网关),并且VTEP1已经知道了VM2的所有地址信息(MAC和VTEP2_IP)。VTEP1封装新的数据包。然后交给上联交换机。

  (2) 上联交换机收到服务器发来的UDP包,对比目的IP地址和自己的路由表,然后将数据报转发给相应的端口。

  (3) 目的VTEP收到数据包后检查器VNI,如果UDP报中VNI与VM2的VNI一致,则将数据包解封装后交给VM2进一步处理。至此一个数据包传输完成。整个Vxlan相关的行为(可能穿越多个网关)对虚拟机来说是透明的,虚拟机不会感受传输的过程。虽然VM1与VM2之间启动了TCP来传输数据,但数据包一路上实际是以UDP的形式被转发,两端的VTEP并不会检查数据是否正确或者顺序是否完整,所有的这些工作都是在VM1和VM2在接收到解封装的TCP包后完成的。也就是说如果说如果被UDP封装的是TCP连接,那么UDP和TCP将做为两个独立的协议栈各自工作,相互之间没有交互。

五:Vxlan网关

  如果需要VXLAN网络和非VXLAN网络连接,必须使用VXLAN网关才能把VXLAN网络和外部网络进行桥接和完成VXLAN ID和VLAN ID之间的映射和路由,和VLAN一样,VXLAN网络之间的通信也需要三层设备的支持,即VXLAN路由的支持。同样VXLAN网关可由硬件和软件来实现。从封装的结构上来看,VXLAN提供了将二层网络overlay在三层网络上的能力,VXLAN Header中的VNI有24个bit,数量远远大于4096,并且UDP的封装可以穿越三层网络,比VLAN有更好的扩展性。

六.部署

  (1) 纯VXLAN部署场景

  对于连接到VXLAN内的虚拟机,由于虚拟机的VLAN信息不再作为转发的依据,虚拟机的迁移也就不再受三层网关的限制,可以实现跨越三层网关的迁移。

  (2) VXLAN与VLAN混合部署

  为了实现VLAN和VXLAN之间互通,VXLAN定义了VXLAN网关。VXLAN网关上同时存在两种类型的端口:VXLAN端口和普通端口。

  当收到从VXLAN网络到普通网络的数据时,VXLAN网关去掉外层包头,根据内层的原始帧头转发到普通端口上;当有数据从普通网络进入到VXLAN网络时,VXLAN网关负责打上外层包头,并根据原始VLAN ID对应到一个VNI,同时去掉内层包头的VLAN ID信息。相应的如果VXLAN网关发现一个VXLAN包的内层帧头上还带有原始的二层VLAN ID,会直接将这个包丢弃。

  之所以这样,是VLAN ID是一个本地信息,仅仅在一个地方的二层网络上其作用,VXLAN是隧道机制,并不依赖VLAN ID进行转发,也无法检查VLAN ID正确与否。因此,VXLAN网关连接传统网络的端口必须配置ACCESS口,不能启用TRUNK口。

 七.一图贯之

时间: 2024-10-11 16:36:05

深入 理解vxlan的相关文章

[转]深入理解 VXLAN

VXLAN 是非常新的一个 tunnel 技术,它是一个 L2 tunnel.Linux 内核的 upstream 中也刚刚加入 VXLAN 的实现.相比 GRE tunnel 它有着很的扩展性,同时解决了很多其它问题. 一,GRE tunnel 的不足 网络很多介绍 VXLAN 的文章都没有直接告诉你相比较 GRE tunnel,VXLAN 的优势在哪里,或者说 GRE tunnel 的不足在哪里.为了更好的了解 VXLAN,我们有必要看一下 GRE tunnel 的不足. 在我前面写的介绍

VXLAN 概念(Part I) - 每天5分钟玩转 OpenStack(108)

除了前面讨论的 local, flat, vlan 这几类网络,OpenStack 还支持 vxlan 和 gre 这两种 overlay network. overlay network 是指建立在其他网络上的网络. 该网络中的节点可以看作通过虚拟(或逻辑)链路连接起来的. overlay network 在底层可能由若干物理链路组成,但对于节点,不需要关心这些底层实现. 例如 P2P 网络就是 overlay network,隧道也是. vxlan 和 gre 都是基于隧道技术实现的,它们也

Neutron 理解(14):Neutron ML2 + Linux bridge + VxLAN 组网

http://www.cnblogs.com/sammyliu/p/4985907.html 1. 基础知识 1.1 VXLAN 和 Linux 以及 Linux bridge 的关系 VXLAN 是一个新兴的SDN 标准,它定义了一种新的 overlay 网络,它主要的创造者是 VMware, Cisco 和 Arista.它被设计来消除虚拟化网络世界中的 VLAN 数目的限制.VXLAN 本身是一个多播标准,但是大多数的企业既不情愿启用多播,而且许多网络设备也不支持多播.因此,许多 VXLA

关于我对VXLAN的一点理解

我的一些朋友之前一直在谈论vxlan如何如何,今天我就自己对vxlan的一点理解,简单写写,希望对大家有所帮助. 1.为什么要引入vxlan? 1)在同一个数据中心我们一般通过VLAN对业务进行不同的网段划分,实现了对不同业务的网段分割,但是在双数据中心或多数据中心,两个数据中心都有同一个网段,要实现两个主机的互访,要实现在三层网络环境中打通二层网络,我们引入了vxlan技术. 2)通过VLAN对数据中心的业务进行不同的网段划分,但是随着数据中心的不断扩容,当VLAN ID超过4096时,VLA

Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网 [Netruon Open vSwitch + GRE/VxLAN Virutal Network]

学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron L3 agent (5)TBD 目前,OpenStack Neutron 支持使用两种隧道网络技术 通用路由封装(GRE) 和 VxLAN 来实现虚拟的二层网络.这两种技术大致看起来非常相似,都是需要使用 OpenStack 在计算和网络节点上建立隧道

Vxlan基础理解

VLAN简介: VLAN:Virtual LAN,又叫"虚拟局域网". VLAN的作用,主要是将一个大的广播域隔离开来,形成多个小的广播域,各个广播域内可以互通,广播域之间默认不能直接通讯. 为什么需要VLAN? 如果一个公司的网络,有1000台主机,有10个部门. 如果用交换机将这些设备互联起来,不做任何隔离的行为,默认这些主机都在同一个广播域,那么部门与部门之间的流量是可以互相传递.收到的. 如下图: 如果做任何物理或者逻辑上的隔离,加入销售部的一台电脑发出了一个广播包,这个广播包

vxlan 简单理解

1.vxlan(virtual Extensible LAN)虚拟可扩展局域网,是一种overlay的网络技术,使用MAC in UDP的方法进 行封装,共50字节的封装报文头. 2.VTEP为虚拟机的数据包加上了层包头,这些新的报头之有在数据到达目的VTEP后才会被去掉. 3.由于VXLAN的数据包在整个转发过程中保持了内部数据的完整,因此VXLAN的数据平面是一个基于隧道 的数据平面. 4.图片:https://www.cnblogs.com/hbgzy/p/5279269.html 原文地

Vxlan学习笔记——原理(转)

文章转自http://www.cnblogs.com/hbgzy/p/5279269.html 1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有的服务器都在一个大的局域网里面,TOR透明L2,不同交换机上的服务器互通靠MAC地址,通信隔离和广播隔离靠的vlan,网关在内网核心上.而L3结构这是从TOR级别上就开始用协议进行互联,网关在TOR上,不

Vxlan——原理

1. 为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有的服务器都在一个大的局域网里面,TOR透明L2,不同交换机上的服务器互通靠MAC地址,通信隔离和广播隔离靠的vlan,网关在内网核心上.而L3结构这是从TOR级别上就开始用协议进行互联,网关在TOR上,不同交换机之间的互通靠IP地址. 在云计算IDC里,要求服务器做到虚拟化,原来这个服务器挂在TOR