简介

VXLAN(Virtual eXtensible Local Area Network)或许是目前最热门的网络虚拟化技术。网络虚拟化是指在一套物理网络设备上虚拟出多个二层网络。VXLAN由RFC7348定义,这是2014年定稿的一个协议,VXLAN协议将Ethernet帧封装在UDP内,再加上8个字节的VXLAN header,用来标识不同的二层网络。

VLAN(Virtual Local Network)在1998年就提出了第一稿,并且得到广泛的应用,VLAN直接在Ethernet帧的头部加上4个字节的VLAN Tag,用来标识不同的二层网络。VLAN已经在大部分的网络设备和操作系统中得到了支持,它处理起来也比较简单,在读取Ethernet数据的时候,只需要根据EtherType相应的偏移4个字节就行。相比之下,VXLAN因为提出的较晚,在设备上的支持率不如VLAN,而且,VXLAN数据的封装解封装,要比VLAN复杂的多

VXLAN与VLAN的最大区别在于,VLAN只是修改了原始的Ethernet Header,但是整个网络数据包还是原来那个数据包,而VXLAN是将原始的Ethernet Frame隐藏在UDP数据里面。经过VTEP封装之后,在网络线路上看起来只有VTEP之间的UDP数据传递,原始的网络数据包被掩盖了.
VXLAN并不是凭空出现,这种在UDP里面封装网络数据的做法,在VXLAN之前就已经存在,例如OTV(Overlay Transport Virtualization)和LISP(Locator/ID Separation Protocol)。

使用vxlan的原因

  • 交换机 MAC 地址表限制
    VLAN tag 总共有 4 个字节,其中有 12 bit 用来标识不同的二层网络(即 LAN ID),故而最多只能支持 2^12
    ,即 4096 个子网的划分。而虚拟化(虚拟机和容器)的兴起使得一个数据中心会有成千上万的机器需要通信,这时候 VLAN 就无法满足需求了。而 VXLAN 的报文 Header 预留了 24 bit 来标识不同的二层网络(即 VNI,VXLAN Network Identifier),即 3 个字节,可以支持 2^24 个子网。

  • 虚机或容器迁移范围受限
    对于同网段主机的通信而言,报文到底交换机后都会查询 MAC 地址表进行二层转发。数据中心虚拟化之后,VM 的数量与原有的物理机相比呈数量级增长,而应用容器化之后,容器与 VM 相比也是呈数量级增长。。。而交换机的内存是有限的,因而 MAC 地址表也是有限的,随着虚拟机(或容器)网卡 MAC 地址数量的空前增加,交换机表示压力山大啊!

    而 VXLAN 就厉害了,它用 VTEP(后面会解释)将二层以太网帧封装在 UDP 中,一个 VTEP 可以被一个物理机上的所有 VM(或容器)共用,一个物理机对应一个 VTEP。从交换机的角度来看,只是不同的 VTEP 之间在传递 UDP 数据,只需要记录与物理机数量相当的 MAC 地址表条目就可以了,一切又回到了和从前一样。

  • 虚机或容器迁移范围受限
    VLAN 与物理网络融合在一起,不存在 Overlay 网络,带来的问题就是虚拟网络不能打破物理网络的限制。举个例子,如果要在 VLAN 100 部署虚拟机(或容器),那只能在支持 VLAN 100 的物理设备上部署。

    VLAN 其实也有解决办法,就是将所有的交换机 Trunk 连接起来,产生一个大的二层,这样带来的问题就是广播域过分扩大,也包括更多未知的单播和多播,即 BUM(Broadcast,Unknown Unicast,Multicast),同时交换机 MAC 地址表也会有承受不住的问题。

    而 VXLAN 将二层以太网帧封装在 UDP 中(上面说过了),相当于在三层网络上构建了二层网络。这样不管你物理网络是二层还是三层,都不影响虚拟机(或容器)的网络通信,也就无所谓部署在哪台物理设备上了,可以随意迁移。

VXLAN 协议原理

vxlan常见术语

  • VTEP(VXLAN Tunnel Endpoints,VXLAN 隧道端点)
    VXLAN 网络的边缘设备,用来进行 VXLAN 报文的处理(封包和解包)。VTEP 可以是网络设备(比如交换机),也可以是一台机器(比如虚拟化集群中的宿主机)。

  • VNI(VXLAN Network Identifier,VXLAN 网络标识符)
    VNI 是每个 VXLAN 段的标识,是个 24 位整数,一共有 2^24 =16777216(一千多万),一般每个 VNI 对应一个租户,也就是说使用 VXLAN 搭建的公有云可以理论上可以支撑千万级别的租户
    vxlan协议报文格式如下:

  • Tunnel(VXLAN 隧道)

    隧道是一个逻辑上的概念,在 VXLAN 模型中并没有具体的物理实体向对应。隧道可以看做是一种虚拟通道,VXLAN 通信双方认为自己是在直接通信,并不知道底层网络的存在。从整体来说,每个 VXLAN 网络像是为通信的虚拟机搭建了一个单独的通信通道,也就是隧道。

vxlan工作模型


它创建在原来的 IP 网络(三层)上,只要是三层可达(能够通过 IP 相互通信)的网络就能部署 VXLAN。在 VXLAN 网络的每个端点都有一个 VTEP 设备,负责 VXLAN 协议报文的解包和封包,也就是在虚拟报文上封装 VTEP 通信的报文头部。

物理网络上可以创建多个 VXLAN 网络,可以将这些 VXLAN 网络看成一个隧道,不同节点上的虚拟机/容器能够通过隧道直连。通过 VNI 标识不同的 VXLAN 网络,使得不同的 VXLAN 可以相互隔离。

  • VXLAN Header : 在原始二层帧的前面增加 8 字节的 VXLAN 的头部,其中最主要的是 VNID,占用 3 个字节(即 24 bit),类似 VLAN ID,可以具有 2^{24}2
    24个网段。
  • UDP Header : 在 VXLAN 和原始二层帧的前面使用 8 字节 UDP 头部进行封装(MAC IN UDP),目的端口号缺省使用 4789,源端口按流随机分配(通过 MAC,IP,四层端口号进行 hash 操作), 这样可以更好的做 ECMP。

在上面添加的二层封装之后,再添加底层网络的 IP 头部(20 字节)和 MAC 头部(14 字节),这里的 IP 和 MAC 是宿主机的 IP 地址和 MAC 地址。

同时,这里需要注意 MTU 的问题,传统网络 MTU 一般为 1500,这里加上 VXLAN 的封装多出的(36+14/18,对于 14 的情况为 access 口,省去了 4 字节的 VLAN Tag)50 或 54 字节,需要调整 MTU 为 1550 或 1554,防止频繁分包。

字段 长度 含义
Source Port 16 bit 源端口号是内层以太
Dest Port 16 bit 目的 UDP 端口号是 4789
UDP Length 16 bit UDP 数据包长度
UDP Checksum 16 bit UDP 数据包校验和
VXLAN Header VXLAN Flags 8 bit 取值为 00001000
Reserved_1 24 bit 保留字段,必须设置为 0
VXLAN Network Identifier 24 bit VXLAN 网络标识,用于区分 VXLAN 段
Reserved_2 8 bit 保留字段,必须设置为 0

vlan与vxlan相关推荐

  1. 计算机网络:VLAN和VXLAN

    目录 Overlay网络 VLAN VXLAN 两种Overlay技术:NVGRE和VXLAN 什么是VXLAN 为什么需要VXLAN 虚拟机动态迁移,要求提供一个无障碍接入的网络 VXLAN与VLA ...

  2. VLAN vs. VXLAN:云时代下各施所长

    来源于:SDNLAB VXLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网)可以说是目前最热门的网络虚拟化技术.自2014年引入以来,VXLAN已逐 ...

  3. 什么是VLAN?VXLAN?以及VLAN和VXLAN的区别?

    转自:CSDN博主octopusflying的<关于VLAN和VXLAN的理解> 该博主的这篇文章写的极好,强烈推荐!就是文字排版有点不舒服,我转载一下,重新排版. VLAN 概括 VLA ...

  4. 做了几年的网工也未必了解VLAN和VXLAN的区别,今天我来告诉你!

    资深网络工程师对于vlan和vxlan应该能够区别开,但是刚入行.或者平时不太关注技术栈的网工们对于vlan和vxlan常常混淆,甚至都没有听过vxlan,那么今天我带着大家来剖析一下这两种技术,相信 ...

  5. vlan跨交换机 udp广播_【详解】VLAN和VXLAN有何区别?VXLAN运用场景有哪些?

    随着网络技术的发展,云计算凭借其系统利用率高.人力/管理成本低以及灵活性/扩展性方面展现的优势,已经成为目前各大行业IT建设的新趋势. 而服务器的虚拟化作为云计算的核心技术之一,也得到了越来越多的应用 ...

  6. 《跟唐老师学习云网络》 - 什么是VLAN和VXLAN

    一.背景 敲黑板: VLAN是你理解云网络的门槛石,要想通往云网络的世界,这一扇大门一定得理解透彻. 二.为什么需要VLAN 在前面的课程里面,我们知道了局域网的概念.一个局域网里面有N台电脑互相通信 ...

  7. vlan和vxlan对比

    vxlan是一种overlay network,所谓overlay network指的就是建立在其他网络上的网络,overlay network中的节点可以看作是有逻辑链路连接起来的. vxlan和G ...

  8. VLAN、VXLAN

    相比VLAN技术,VXLAN技术具有以下的优势:     (1) 24位长度的VNI字段值可以支持更多数量的虚拟网络,解决了VLAN数目上限为4094的局限性的问题.     (2) VXLAN技术通 ...

  9. 计算机网络:overlay(VLAN,VxLAN)、underlay网络、大二层的介绍

    目录 相关术语 概述 Overlay 网络 Overlay网络组成 VLAN VXLAN Underlay网络 技术专区 相关术语 P network:运营商核心网络,也就是提供VPN服务供应商自己的 ...

最新文章

  1. 退休失败,64岁Python之父决定加入微软,将开源进行到底!
  2. 数据类型,运算符和表达式03 - 零基础入门学习C语言04
  3. (十二)java版电子商务spring cloud分布式微服务- Spring 4.2.2以上版本和swagger集成方案和踩过的坑...
  4. HDU -2546饭卡(01背包+贪心)
  5. div添加html链接,DIV添加超链接小记
  6. 实现连麦_微信重磅更新,视频号直播连麦打赏美颜上线,新增巨大流量入口
  7. python进阶(四) windows下虚拟环境使用
  8. #论char数组结尾’\0’的必要性#
  9. 线性表接口的实现_Java
  10. composition API
  11. Python 局域网扫描存活主机开放端口
  12. 与戴尔科技同行,与远见如影随形
  13. Android实战简易教程五(ListView用法研究)
  14. Spring Boot基础学习笔记08
  15. oracle没commit有日志吗,commit操作是否一定会被记录到redo等问题的研究
  16. 连接主机名失败但可以连接主机ip,能用ip地址连接却无法用主机名连接,看过来一站解决
  17. codeforce 1395总结
  18. 如何移动桌面文件到计算机,怎么样把电脑桌面文件全部转移到指定文件夹
  19. 一次性奖金是否选择并入综合所得测算表
  20. 基于KF32A156 - MCU Bug list

热门文章

  1. 使用qrcode.js生成网址二维码
  2. 几款支持GB28181的平台
  3. 刷新桌面后,桌面图标出现空位
  4. hibernate QBE例子
  5. (17)QBC、QBE
  6. 技术分享 | mimikatz的常见使用方法
  7. 微信公众号最佳实践 ( 3.2) 被动回复用户消息
  8. java 比赛赛程_分治算法兵乓球比赛日程(java)
  9. proteus教程——并行扩展静态RAM
  10. android报错必须64位,64位系统使用Android虚拟机问题