VXLAN笔记1. 架构 理论

感谢泰克教育各位老师的教导。
原创文章,转载请注明出处。
Vxlan(工作在三层IP链路)和Vlan(工作在二层Trunk链路)共同工作,给虚机提供一个大二层环境。
vxlan 由思科和VMware提出,由IETF指定为二层隧道标准。
 
overlay给租户的虚拟机使用,安全隔离的虚拟网络,由SDN控制,随虚机动态变化;
underlay是spine-leaf或不同区域spine间的三层网络,物理网络。
 
思科的Nexus VPC技术最先推出,当时华为没有类似技术,在M-lag出现前,只有用本地优先转发跟思科竞争。思科的Nexus Nx-OS运行在Linux之上。思科技术:
  1. FabricPath大二层技术公开后,演变为Trill,运行在isis之上。后被VMWare的VXLAN取代;
  2. 最早的Overlay技术为OTV;
  3. 一虚多技术VDC,类似华为的VS;
  4. 纵向虚拟化技术为Fex,类似华为的SVF;
Juniper开发了netconf,对抗openflow【出现时,要求全软件,彻底取代传统硬件厂家】。
 

一、Spine-Leaf 脊叶结构

数据中心作为企业的信息中心,承载了越来越多的业务和应用。同时数据中心技术发展快速,虚拟化,分布式应用如hadoop,分布式存储等大规模部署。数据中心内部的东西向流量大幅度增长。80%为东西向流量,20%为南北向流量。当前数据中心的一组或者两组核心设备不满足业务需求。因此基于胖树的 SPINE-LEAF 架构成为数据中心(分区)网络主流拓扑架构。
  • Leaf节点:叶子节点,VXLAN Fabric网络功能接入节点,提供各种网络设备接入VXLAN网络功能。作为underlay网络的L2/L3分界,同Spine节点三层互通。
  • Spine节点:骨干节点(最少2台),VXLAN Fabric网络核心节点,提供高速IP转发功能,通过高速接口(L3)连接各个功能Leaf节点。
 
Fabric架构通常由SPINE-LEAF两层组成,每个SPINE和LEAF节点全互连(IP三层互联,ECMP 等价路由)。可以方便地通过扩展SPINE节点来扩展网络容量。主要特点如下:
  • 高效转发,任何两台服务器间的通信不超过3台设备。
  • 使用IP路由,VXLAN,TRILL等技术实现多路径链路负载分担,链路使用效率高,提升解决数据中心网络整体交换容量。(具体技术和设计详见Fabric设计)
  • 部署方便,网络规模可弹性扩展。对 spine leaf 的增加和移除,都不会影响整体网络的运行。
每一个leaf节点都跟所有的spine相连,Leaf、Spine节点使用Loopback接口建立邻居关系(bgp evpn),每一条物理链路均配置IP并发布进ospf(Loopback同样发布进ospf),Loopback间的路由都是经过spine的均衡路由。spine数量越多,均衡路由就越多。如果扩充spine节点,整个拓扑的东西横向负载能力就能大幅提升,有利于服务器间互访。
 
服务器使用双归上连(必备条件),leaf使用堆叠或M-lag。
不同的租户在服务器及vSwitch内部,使用VLAN隔离,同一台物理机中的虚机通过vswitch相连,vswitch与leaf交换机通过trunk相连。
数据包从服务器发出时,携带VLAN标签,由Leaf进行Vxlan封装【替换掉VLAN】。使用Vxlan隧道,穿透Spine-leaf间的 IP Fabric网络【Fabric网络是由一组Spine及Leaf节点设备互联组成,提供所有接入网络的各类节点间的无差异互访,实现一台物理设备供多个租户同时使用,多台物理设备可供一个租户使用,大大节约成本,提高了资源的利用率】。
FW、LB也是通过Trunk链路连接。FW使用vsys(虚墙)工作。LB也使用虚拟化来进行工作【F5的是Route Domains】。
 
优势即:ospf全三层收敛速度快、多路径负载分担、易于扩容、横向流量路径简单。
LAG:Link Aggregate Group 链路聚合组。
旧版中有 Trill 的内容,新版已经删除,华为在项目中也不推 Trill 了。
 

1.1 VXLAN Fabric 网络的二层/三层架构

华为把 leaf 分为三种:
    1. Sever Leaf:leaf 下连服务器;
    2. Service Leaf:连 FW、LB 等L4~L7增值服务;FW、LB使用虚拟化技术为租户提供虚拟私有服务【每个租户使用一套VPC虚拟私有云(租户对应的是VDC)。华为USG防火墙能支持4000+虚墙】;
    3. Border Leaf:连接到 WAN 或者其它网络,是Fabric的边界;
LDW:现网中,service&border leaf的功能多由 spine 承担,即其它设备(L4~L7)直接连接至 spine,路径更短更优。这是现网中,华为主推的方案。这种物理分区的架构规模受限:
  1. Spine 扩展性不如 leaf,且接口有限。
  2. Service Leaf 的模块化设计更容易扩展,对Spine的处理压力也小。
 
根据是否有Border Leaf交换机作为网关,VXLAN 的架构可以分为:
  • Spine/Leaf二层架构方案流量模型简单,维护简便,但扩展比较困难,适用于中小型网络场景。
  • GW/Spine/Leaf三层架构方案架构灵活,网络扩展能力强,但流量路径和维护相对复杂,适用于大中型网络场景。
 

1.2 Underlay 和 Overlay

Overlay意为叠加,即通过在现有网络上叠加一个软件定义的逻辑网络,原有网络尽量不做改造,通过定义其上的逻辑网络来实现业务逻辑,解决原有数据中心的网络问题。Overlay是一种将(业务的)二层网络构架在(传统网络的)三层/四层报文中进行传递的网络技术。
Overlay技术实际上是一种隧道封装技术,主要有VXLAN、NVGRE等,基本原理都是通过隧道封装的方式将二层报文进行封装后在现有网络中进行透明传输,到达目的地之后再解封装得到原始报文,相当于一个大二层网络叠加(overlay)在现有的网络之上。
Underlay是一张承载网,由各类物理设备构成,如TOR交换机、汇聚交换机、核心交换机、负载均衡设备与防火墙设备等。
实施Overlay技术后,会在Underlay网络基础上形成一张逻辑网。
Overlay网络是建立在Underlay网络基础上的虚拟网,由逻辑节点和逻辑链路构成。
Overlay网络具有独立的控制和转发平面,对于连接在Overlay边缘设备之外的终端来说,物理网络是透明的。
在华为CloudFabric解决方案中,选用VXLAN技术来构建Overlay网络,业务报文运行在VXLAN Overlay网络上,与物理承载网络解耦。
 
根据承担Overlay边缘设备(VXLAN NVE)属性的不同,基于VXLAN的Overlay又可以分为:
  1. Network Overlay:所有NVE全部由物理交换机承担(传统网络设备厂家主推,使用专用的网络设备,性能较好)。
  2. Host Overlay:所有NVE全部由vSwitch承担(VMware主推,大规模公有云也会使用:使用定制的服务器硬件,提高vSwitch性能,网络设备仅做IP转发。与网络设备商解耦)。
  3. Hybrid Overlay:NVE一部分部署在物理交换机上,另一部分部署在vSwitch上。
 

1.3 Spine-leaf 架构在企业网中的vxlan环路风险(刘大伟)

绿色框内都是有可能出环的场景【其中交换机都是二层,现网中不应这么部署】:
  • S1双上联到leaf1、leaf2,leaf1和leaf2之间vxlan二层隧道,stp在vxlan隧道无法应用,形成环路。
  • S2、S3分别上连到leaf3、leaf2,leaf3和leaf2之间vxlan二层隧道,成环原因同上。
所以leaf的南向接口,一般要求开启stp bpdu防护,一旦检测到bpdu报文,即关闭端口,以防止环路。
或者将图中的2台leaf虚拟为一个vtep,这样他们之间就不会建立vxlan隧道(参考M-lag)。
STP之类的BPDU报文不会进入vxlan隧道,因为BPDU虽然属于二层报文,但不会进入任何BD。
 

二、Vxlan(Virtual Extensible LAN,虚拟可扩展局域网)

不同leaf、甚至不同区域、不同数据中心下的虚机,有可能是同一个租户的,并处在同一个vlan。而不同leaf间是由ospf&bgp来做的三层环境,此时必须有一个技术,为虚机提供一个二层的隧道来穿越三层网络,以实现同租户不同虚机之间的二层东西向互访。vxlan就是这样一个技术。
硬件厂家如华为华三思科,都推荐在物理交换机leaf上对vxlan进行封装和解封装,性能好。
而软件厂家如VMware、微软,不生产交换机,它们的解决方案是在vswitch上直接对vxlan进行封装和解封装。NSX 是VMware的纯软件SDN解决方案。
FW、LB通过Trunk二层连接到Spine/Service-leaf,方便建立不同的vFW、vLB。
 
数据中心互联现在也以 vxlan 为主流,mpls、vpls 的极少。mpls要求设备支持标签,对软件也有要求。Vxlan 只要设备支持 ip 和隧道技术即可,实现简单。CE设备vxlan需要License。
RFC7348定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network)。VXLAN采用MAC in UDP(User Datagram Protocol 用户数据报协议)封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。
UDP的转发方式比TCP更接近以太网,尽力转发,效率更高。
 

2.1 MTU 的要求【Underlay MTU 调整到 9216byte 以上】

Vxlan报文:【20字节IP头+ 8字节udp头+ 8字节vxlan头+ 14字节原以太网帧头+ IP载荷】,共增加50字节的帧头(以太网载荷)。
  • 以太网帧最小 46byte,最大为 mtu(默认1500byte,下图IPv4报头长度最少应为20字节)。加14字节的以太网帧头,4字节的帧尾,以太网报文实际长度为 64~1518 byte,设备默认可以不分片传输。
  • 如果vxlan封装的帧(1550字节)在经过设备时,按照默认的1500字节 mtu,将发生分片,影响传输效率。所以ce交换机的mtu必须进行修改,一般设置到 9216字节 或更高【目前最高设置到 9600字节,默认1500字节。DCI线路经过运营商设备时,如波分,要注意确认其MTU】。
vxlan UDP 目标端口号 4789,源端口号根据载荷以太网帧头做 hash计算后得出,这个hash值实际上是参与了vxlan三层负担选路的)。
这种hash模式,在分布式网关跨网段访问时,Router’s MAC不会变化,这样负载分担效果不好。新版中的源端口生成方式不知道修改了没。
不同虚机跨vxlan隧道访问时的链路负载分担:如果在相同的两个leaf之间,源目IP相同,目的UDP端口号相同,唯一有可能变化的就是UDP源端口号,需要用 端口号+IP来做hash计算 以进行Spine+Leaf间的多IP链路负载分担,避免vxlan隧道的流量集中在某一条链路。
【】load-balance ecmp #进入ECMP视图。
【ecmp】hashmode 5 #配置ECMP负载分担的HASH算法,5为源目IP+源目端口。
 

2.2 Vxlan 相关名词定义

VNI【vxlan network ID,3字节】,Vxlan数据头中最重要的部分,以 VNI 来区分不同 vxlan网络中的二层域,目前只有一层vni【同子网通信时封装二层vni,跨子网时封装三层vni】。VNI与BD/VRF的对应关系由配置决定【手动或SDN下发,二层/三层VNI的范围在AC-DCN中定义】。VNI字段长3字节(24bit),共能区分 1677.7万个不同的 vxlan。
刘大伟:一个vlan(其实是BD)要对应一个vxlan网络,每个BD都有自己的vxlan隧道【两个vtep间所有的vxlan隧道其实是共用的】。
<HUAWEI> display vxlan vni 5000 verbose
BD ID : 10
State : up
NVE : 1610612739
Source Address : 1.1.1.1
Source IPv6 Address : -
UDP Port : 4789
BUM Mode : head-end
Group Address : -
Peer List : 2.2.2.2 2.2.2.3
IPv6 Peer List : -

   

NVO3(Network Virtualization Over Layer 3,3层网络虚拟化),基于三层IP overlay网络构建虚拟网络技术统称为NVO3,目前比较有代表性的有:VXLAN、NVGRE(微软私有,Over IP)、STT(VMware NSX 私有,无三次握手的TCP)。
 
NVE(Network Virtualization Edge,网络虚拟边界设备)运行NVO3的设备,它位于overlay网络的边界,实现二、三层的虚拟化功能。主要用于本地VTEP地址管理,VXLAN隧道管理,头端复制列表管理。
 
VTEP(VXLAN Tunnel EndPoint,VXLAN隧道端点):VXLAN网络中的NVE以VTEP进行标识,VTEP必须全网唯一。
  • 每一个NVE至少有一个VTEP,VTEP使用NVE的IP地址表示【一般用设备的Loopback接口,回环接口不会down,且更节约ip地址资源(可配置为32位)】;
  • 两个VTEP可以确定一条VXLAN隧道。np:VTEP间的这条VXLAN隧道将被两个NVE间所有的VNI公用。
 
BD(Bridge Domain,桥域)是VXLAN网络中转发数据报文的二层广播域(为支持vxlan,新增加的一个二层广播域定义)。在VXLAN网络中,将VNI(L2vni)以1:1方式映射到广播域BD,BD成为VXLAN网络转发数据报文的实体。
  • 所有广播域功能基于BD支持,如MAC学习、二层查表、广播复制等;
  • BD-ID本地有效,用以连接vlan和vxlan【可通过L2子接口、或vlan方式配置关联】。
 
vBDIF:BD域的三层路由接口,用于二层流量进入三层进行路由转发。BD通过vbdif接入租户的三层VRF虚拟路由器。不同的VRF通过L3vni来区分。
 
L2-Subif 二层子接口:用于用户接入,子接口接入方式包括:dot1q(单vlan或vlan区间),default(不区分tag,统一封装),untag,qinq双层封装(vid pe ce-vid ce)。
 
VXLAN隧道:用于VXLAN报文的转发,用本地VTEP地址+远端VTEP地址标识。
 
VXLAN防环机制:使用水平分割防环。即:设备从vxlan隧道收到的数据帧,如解封装后发现是二层BUM帧,则只会在VNI关联的BD本地接口泛洪(南向BD接口),不会重新封装发送给其它的VTEP。
 
VXLAN 的简化理解—---两次虚拟化:
1、第一次虚拟化:利用隧道技术将边缘设备互连透传二层报文;整网抽象理解成一台端口数目扩展的超大LAN switch。
2、第二次虚拟化利用VNI将这台超大的交换机虚拟出多个二层的广播域,和VLAN本质是一样的,VNI类比VLANID. 并通过定义VXLAN header中的VNI字段,将子网范围由4K扩展至16M。
 

2.3 TOR Leaf 交换机中 MAC 地址表的对应关系

Vxlan 对应的mac表格式,增加了vlan&vsi&bd的对应关系,及对应的vtep IP地址或物理接口,用以保存从Vxlan隧道中学到的MAC地址:
MAC Address    VLAN/VSI/BD Learned-From Type Age
--------------------------------------------------------
0000-3602-0311 -/-/20      2.2.2.2      evn  -

   

VSI:标识接口关联的VSI(Virtual Switching Instance)。
Learned-From:远端NVE地址或是本地接口。
evn:标识EVN或EVPN网络中存在的MAC地址表项。
 
  • 当目的MAC命中本地时,使用vlan封装【其实是根据出接口配置的封装方式进行封装】。
  • 当目的MAC命中Vtep邻居时,使用Vxlan封装,并通过Vxlan隧道发往对应的Vtep邻居。
 
虚机中对应的则是ARP表。
 
 

posted @ 2021-06-21 19:37  飞飞6779  阅读(3179)  评论(0编辑  收藏  举报