• VXLAN基础


    一、VLAN回顾
    Vxlan:virtual extensible local area network 虚拟扩展局域网,VLAN的升级版,两者都是一种工具
    VLAN:virtual local area network 虚拟局域网,隔离广播域
    交换机的泛洪:收到BUM流量后,只会在该VLAN内泛洪,一个VLAN充当一个广播域,不同VLAN之间若想通信部署SVI。
    多台交换机部署满足以下原则,也可以成为一个广播域:端到端二层链路
    SW1——Router——SW2,此时SW1和SW2尽管创建相同的VLAN,也不是处在一个广播域
    二、数据中心的发展:虚拟化,流量走向变更
    1、虚拟化
    Data Center:网络+存储+计算
    Server hosting:数据中心提供一切物理资源,设备,机架,服务器,电力,空调等,一般都是三线连接(移动,联通,电信),而互联网公司租赁部署自身业务以供客户访问。
    随着硬件服务器的发展,导致资源过剩,虚拟化技术的出现解决此问题。
    传统:硬件服务器直接安装操作系统(Linux,Windows等),直接部署业务
    VMware:ESXI hypervisor
    在硬件服务器不直接安装操作系统,先部署ESXI虚拟化平台,将一台硬件服务器虚拟为多个虚拟服务器,每个虚拟服务器都可以安装操作系统。
    随着虚拟化的技术,托管由硬件服务器变更为虚拟机租赁。
    举例:
    标准机架42U,部署20台服务器,每台机架顶部有交换机,以供网络连接,称为ToR,Top of Rack
    分别租赁给腾讯,百度,新浪等互联网公司,需求为不同租户之间的服务器是不允许直接通信
    部署VLAN即可解决,12bit,1-4094个
    而如果部署了虚拟化,一台硬件服务器相当于多个服务器(租户),比如1台服务器虚拟为20台,那么即需要消耗400个VLAN,而这仅仅只是一个机架。
    由此可知:VLAN存在的问题之一数量太少。
    解决方案:本地VLAN部署方案临时解决
    带来问题:虚拟机迁移
    2、流量变更
    数据中心流量走向:服务器并不需要主动访问,而是被动等待相应,客户端将流量发送至ISP,ISP将流量发送给DC的边界,进而发送给服务器(虚拟机),南北向流量。

    传统数据中心也分为核心,汇聚,接入,流量在南北向流通。
    而如今架构为Clos,cisco提出,spine+leaf层
    spine(汇聚+核心) leaf(接入)
    而spine交换机一般都有虚拟化的功能,分别虚拟为多个spine交换机,故数据中心网络中spine交换机并不需过多。
    如上图:双spine,所有leaf交换机通过双上行链路连接,下游为机头设备,也可以将leaf充当为ToR。
    虚拟机通过VSwitch连接,与ToR设备之间为中继链路。
    随着业务发展
    举例:淘宝购物对接物流,支付等平台,故现代数据中心网络南北流量为主,但是也存在东西向流量(虚拟机之间通信)
    东西向流量在传统VLAN部署中会产生危机。
    本地vlan设计:leaf到spine之间为三层链路 虚拟机迁移
    端到端vlan设计:leaf到spine之间为二层链路 vlan不够用

    三、数据中心VLAN设计之本地VLAN以及端到端VLAN以及Vmotion虚拟机迁移问题
    随着虚拟化的部署,虚拟机的资源还是依赖于物理服务器,而如果某些特定场合,如双11等,可能导致现有虚拟机资源不足,故需请求物理机分配更多的CPU,内存等,而物理机正好所有的资源已经被分配,那么就需要进行虚拟机迁移,即Vmotion。
    本地VLAN设计迁移范围只能在本机柜进行,迁移需要保证业务不中断,虚拟机前后使用相同的IP,Mac需一致。如果机柜内所有物理机资源也分配完毕,那么Vmotion无法进行。
    端到端VLAN可以在整个数据中心进行虚机迁移,但是存在VLAN不够用的问题。
    临时方案:PVLAN,Mux VLAN,可以将VLAN数量*8,但依旧不够用。
    四、VXLAN定位与功能
    Vxlan:解决VLAN数目不足以及虚拟机迁移存在的问题
    单台交换机部署:与VLAN一致
    多台交换机部署:只要交换机可以互相访问(中继,三层,GRE,MPLS等),属于同一个广播域,基于网络内通信
    VTEP1——任意方式——VTEP2
    VXLAN 10---------------------VXLAN 10
    VNI:vxlan网络标识符,24bit
    当在两台VTEP身后部署了相同的VNI成员,会建立一个端到端二层隧道,VNI成员主机基于隧道通信。
    GRE:3层隧道
    PCA——R1——Internet——R2——PCB
    PCA与PCB不能属于同一个广播域,若想属于同一个网络,可以部署VPLS,而VXLAN隧道类似于VPLS,可以实现二层内通信。那么就可以实现虚拟机迁移,甚至跨数据中心迁移,这是端到端VLAN部署无法做到的。
    有了VXLAN,VLAN是否可以从数据中心中移除?
    支持VXLAN的设备有限,虚拟机并不是直接连接在ToR上,而是连接在Vswitch,而VSwitch可能不支持VXLAN,故现在的场景是vlan和vxlan的混合场景,映射关系。
    相同VNI成员后的VLAN必须一致吗?
    可以不一致,比如VLAN 10——VNI 10——Internet——VNI 10——VLAN 20
    五、VXLAN术语
    underlay与overlay:底层物理网络与虚拟叠加网络(隧道)
    overlay网络使用underlay网络进行点对点的传递报文,而报文如何传递到overlay网络的目的节点完全取决于underlay网络的控制层面和数据层面,报文在overlay网络两个VTEP节点的处理(转发,丢弃)则完全由overlay网络的封装协议决定。
    在这里插入图片描述

    NVE:VTEP类似于GRE的tunnel接口,VXLAN网络虚拟边缘节点,而VXLAN的隧道是动态的,所以不论对方有多少个VTEP,本地只需要创建一个NVE接口,需要配置tunnel source地址,通常就是VTEP的北向接口地址。
    VTEP:VXLAN隧道端点,VTEP交换机相对于身后的VNI成员,可以理解为是他们的网关,但是VXLAN之间是基于二层通信,网关的概念如何理解?
    VTEP1——Internet——VTEP2
    VNI 10 VNI 10
    VNI10能相互通信的前提是VTEP进行了重新封装数据,故此称为网关,区别于传统的网关,一般为layer 2网关。
    VXLAN间通信,VBDIF(华为),overlayrouter(思科,锐捷) layer 3网关。
    如果一台VTEP即作二层网关,又作三层网关,称为IRB,集成路由交换。
    VNI:vxlan网络标识符,类似于VLAN ID,24bit,分为二层VNI与三层VNI
    二层VNI:普通的VNI,仅仅租户隔离,不需要不同租户之间通信
    三层VNI:需要进行不同VNI之间通信时使用,分布式的同步IRB,提供接口,不关联租户
    不同VNI之间通信:集中式网关,分布式网关(分布式的异步IRB,分布式的同步IRB)
    BD:一个bridge domain唯一映射到一个二层VNI,华为私有概念,配置时需在南向接口创建子接口,绑定下游VLAN到BD,再将BD绑定到二层VNI。
    在这里插入图片描述
    在这里插入图片描述

    VBDIF:类似于SVI,虚拟bridge domain接口,华为私有
    VTEP1——Internet——VTEP2
    VNI 10,20 VNI 10,20
    VTEP1与VTEP2创建的VBDIF接口地址需要一致吗?
    可能存在迁移,需IP,Mac都需要一致,开启anycast gateway
    VAP:virtual access point,华为私有,虚拟二层子接口,VLAN绑定到BD
    六、Mac over UDP,VXLAN报文格式
    VXLAN的overlay思想:将数据帧统一作载荷,添加UDP报头,进行Mac over UDP封装
    一般的,比如GRE的overlay思想,二层数据帧头拆掉,添加GRE,添加新的IP地址
    对比,可知vxlan保留了原始数据帧的MAC地址,保证VNI成员基于MAC地址进行二层通信。
    Mac over UDP,也称NOV3
    在这里插入图片描述

    VXLAN头部
    Flag(8位):其中I位必须设置成1以表示有效的VNI,R位设置成0。
    VXLAN Network Identifier (VNI)(24位):表示VXLAN网络标识符。虚拟机属于相同的VXLAN才能互相通信。
    Reserved fields:分别占24位和8位,填充0。
    UDP头部
    Source Port:UDP源端口号。由VTEP分配,源端口号是数据帧本身的二层帧头的哈希结果。这个哈希结果可以作为流量负载均衡的依据。
    Dest Port:目的端口号,IANA分配端口号为4789。
    UDP Length:UDP首部的长度。
    UDP Checksum:UDP校验和,发送时填充0。
    IP报头
    Source IPv4 Address:发送报文的虚拟机所属VTEP的IP地址。
    Destination IPv4 Address:表示的是需要通信的目的虚拟机所属VTEP的IP地址。
    外部以太网帧
    源Mac地址:VTEP的北向接口的MAC地址
    目的MAC地址:下一跳节点的MAC地址
    封装,定位,功能知晓后,VNI成员通信,如何知晓对方在哪里,如果在一个机架内部呢?或者即便真的是处在别的VTEP身后,那么该VTEP的地址是什么,如何知晓,这些都是控制层面的问题,而恰好vxlan是一种纯的数据层面技术,无法主动学习。
    七、Flood&learn VXLAN端到端数据层面通信流程以及控制层面Mac路由获悉过程
    一般一台VTEP需要存在以下表项才可以进行VNI成员通信:
    Mac路由表:VNI内通信
    本地表项:MAC地址 VNI编号 本地接口 与传统交换机一致,三要素
    远端表项:MAC地址 VNI编号 对端VTEP的NVE的tunnel source地址 ——进行vxlan封装
    如何学习?与传统交换机一致,动态学习
    南向接口:收到数据帧,确认信源的MAC地址,接口,结合所属VNI形成本地表项
    北向接口:收到VXLAN数据帧,VNI,信源MAC地址(内部二层数据帧头源MAC地址),对端VTEP地址(外部IP报头的源IP地址),三者形成远端表项。
    动态学习是基于数据的接收,可如果没收到数据,如何学习?
    PCA——VTEP1——Internet——VTEP2——PCB
    PCA PCB都属于VNI10,两者通信:
    1、PCA知晓PCB的MAC地址
    PCA访问PCB数据帧达到VTEP1,VTEP1形成本地表项,接着查看目的MAC地址,发现未知,没有Mac路由表项
    2、PCA不知晓PCB的MAC地址
    PCA发送ARP报文到达VTEP1,VTEP1无法转发广播流量
    3、PCA组播服务器,PCB组播接收者
    VTEP1也无法转发组播流量
    总结:未知单播,组播,广播都无法正常转发,与传统交换机一致,进行泛洪即可
    南向泛洪与传统交换机一致;
    北向泛洪,需要判断VTEP之间链路是否支持组播,一般情况都不支持(ISP问题),VTEP之间基本都是单播通信,所以分为两种,头端复制,集中复制。
    头端复制:发送给所有VTEP,需要手工配置域内该VNI关联的所有VTEP的NVE接口的tunnel source地址,VTEP给每个单播地址发送一份。
    集中复制:找一台代理VTEP,Proxy VTEP,可以不连接任何终端,只做北向泛洪,该VTEP部署所有VNI以及其他VTEP的NVE地址,而其他的VTEP也需要建立与该VTEP的连接,其余原理与头端复制一致。

    而如果VTEP之间的连接支持PIM等组播协议,VTEP不需要指定任何VTEP的NVE source,只需要将VNI映射到一个组播地址,比如 VNI 10 = 239.1.1.1 、VNI 20 = 239.1.1.2,所有VTEP部署相同的映射关系,比如VTEP1收到一个BUM流量,直接在北向接口封装成组播数据,而连接该VNI的其他VTEP都会侦听。

  • 相关阅读:
    Java设计模式-创建者模式-工厂模式
    自己写spring boot starter问题总结
    企业架构LB-服务器的负载均衡之LVS实现
    c# webapi 处理跨源问题
    GET请求或者POST请求的特点和业务中的应用场景
    关于JVM内存(堆和栈),线程共享和非线程共享。
    如何下载MySQL的JDBC驱动包
    1359:围成面积
    交互式绘图软件源码开发,简单好用功能强大的绘图工具
    LeetCode 567. 字符串的排列
  • 原文地址:https://blog.csdn.net/qinshangwy/article/details/125540039