传统网络 VxLAN实现的大二层 电脑版发表于:2022/10/20 19:08  >#传统网络 VxLAN实现的大二层 [TOC] ## VxLAN 简介 tn2>RFC定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)。VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。 <br/> 服务器虚拟化技术的广泛部署,极大地增加了数据中心的计算密度;同时,为了实现业务的灵活变更,虚拟机VM需要能够在网络中不受限迁移,这给传统的“二层+三层”数据中心网络带来了新的挑战。 >### 虚拟机规模受网络设备表项规格的限制 tn2>在传统二层网络环境下,数据报文是通过查询MAC地址表进行二层转发。服务器虚拟化后,VM的数量比原有的物理机发生了数量级的增长,伴随而来的便是VM网卡MAC地址数量的空前增加。而接入侧二层设备的MAC地址表规格较小,无法满足快速增长的VM数量。 >### 网络隔离能力有限 tn2>VLAN作为当前主流的网络隔离技术,在标准定义中只有12比特,因此可用的VLAN数量仅4096个。对于公有云或其它大型虚拟化云计算服务这种动辄上万甚至更多租户的场景而言,VLAN的隔离能力无法满足。 >### 虚拟机迁移范围受限 tn2>由于服务器资源等问题(如CPU过高,内存不够等),虚拟机迁移已经成为了一个常态性业务。 虚拟机迁移是指将虚拟机从一个物理机迁移到另一个物理机。为了保证虚拟机迁移过程中业务不中断,则需要保证虚拟机的IP地址、MAC地址等参数保持不变,这就要求虚拟机迁移必须发生在一个二层网络中。而传统的二层网络,将虚拟机迁移限制在了一个较小的局部范围内。 为了应对传统数据中心网络对服务器虚拟化技术的限制,VXLAN技术应运而生,其能够很好的解决上述问题。 >### 针对虚拟机规模受设备表项规格限制 tn2>VXLAN将管理员规划的同一区域内的VM发出的原始报文封装成新的UDP报文,并使用物理网络的IP和MAC地址作为外层头,这样报文对网络中的其他设备只表现为封装后的参数。因此,极大降低了大二层网络对MAC地址规格的需求。 >### 针对网络隔离能力限制 tn2>VXLAN引入了类似VLAN ID的用户标识,称为VXLAN网络标识VNI(VXLAN Network Identifier),由24比特组成,支持多达16M的VXLAN段,有效得解决了云计算中海量租户隔离的问题。 >### 针对虚拟机迁移范围受限 tn2>VXLAN将VM发出的原始报文进行封装后通过VXLAN隧道进行传输,隧道两端的VM不需感知传输网络的物理架构。这样,对于具有同一网段IP地址的VM而言,即使其物理位置不在同一个二层网络中,但从逻辑上看,相当于处于同一个二层域。即VXLAN技术在三层网络之上,构建出了一个虚拟的大二层网络,只要虚拟机路由可达,就可以将其规划到同一个大二层网络中。这就解决了虚拟机迁移范围受限问题。<br/> 为了解决数据中心网络服务器虚拟化以及虚拟机不受限迁移问题,VXLAN特性应运而生。由于VXLAN特性在本质上属于一种VPN技术,因此,其同样能够应用在园区网络中,以实现分散物理站点之间的二层互联以及站点间的三层互联。<br/> 在当前的园区网中,租户站点与站点之间为了实现二、三层互联,需要部署相关设备以及多种二、三层网络技术。而基于Overlay的VXLAN技术,不感知当前的物理网络,能够在任意路由可达的网络上叠加二层虚拟网络,实现站点与站点之间的二层互联。同时,基于VXLAN三层网关,也能够实现站点与站点之间的三层互联。因此,通过VXLAN技术实现租户不同站点之间的互联更加快速、灵活。 ## VxLAN 包格式  tn2>1.Flags (8 bits) 其中 I 必须被设置为 1,才是有效的。R 需设为 0。 2.VXLAN Segment ID/VXLAN Network Identifier (VNI) –为 24bit,是虚拟网络的标识。 3.Reserved fields (24 bits and 8 bits) – 必须被设置为 0. 4.VXLAN 外层隧道的目的端口号为 4789,为专为 VXLAN 分配的端口号。 5.UDP Body实现基于流的负载分担。[SIP+DIP+SPORT+DPORT+TCP/UDP] ## VxLAN Topo tn2>VXLAN 技术是一种大二层的虚拟网络技术,主要的技术原理就是引入一个 UDP格式的外层隧道,作为数据的链路层,而原有数据报文内容作为隧道净荷来传输。由于外层采用了 UDP 作为传输手段,就可以让净荷数据轻而易举的在二三层网络中传送,为了能够支持原有 VLAN 广播域寻址能力,VXLAN 还引入了三层 IP 组播来代替以太网的广播,让 BUM(Broadcast 广播,unknown unicast, multicast)报文通过广播方式在虚拟网络中传送。  ## VxLAN - Underlay And Overlay >### Underlay 网络 tn2>以太网从最开始设计出来就是一个分布式网络,没有中心的控制节点,网路中的各个设备之间通过协议传递的方式学习网络的可达信息,由每台设备自己决定要如何转发,这直接导致了没有整体观念,不能从整个网络的角度对流量进行调控。由于要完成所有网络设备之间的互通,就必须使用通用的语言,这就是网络协议,RFC就是网络协议的法律,相当于国际法,各个设备供应商遵从国际法行事,就基本保证了整个网络世界的正常运行。Underlay就是当前数据中心网路基础转发架构的网络,只要数据中心网络上任意两点路由可达即可,指的是物理基础层。我们可以通过物理网络设备本身的技术改良、扩大设备数量、带宽规模等完善Underlay网络,其包含了一切现有的传统网络技术。 >### Overlay 网路 tn2>Overlay在网络技术领域,是一种网络架构上叠加的虚拟化技术模式,其大体框架是对基础网络不进行大规模修改的条件下,实现应用在网络上的承载,并能与其它网络业务分离。它是建立在已有网络上的虚拟网,用逻辑节点和逻辑链路构成了Overlay网络。Overlay网络是具有独立的控制和转发平面,对于连接在Overlay边缘设备之外的终端系统来说,物理网络是透明的。通过部署Overlay网络,可以实现物理网络向云和虚拟化的深度延伸,使云资源池化能力可以摆脱物理网络的重重限制,是实现云网融合的关键。Overlay网络也是一个网络,不过是建立在Underlay网络之上的网络。Overlay网络的节点通过虚拟的或逻辑的链接进行通信,每一个虚拟的或逻辑的链接对应于Underlay网络的一条路径(Path),由多个前后衔接的链接组成。 Overlay技术可以分为网络Overlay,主机Overlay和混合式Overlay三大类。网络Overlay是指通过控制协议对边缘的网络设备进行网络构建和扩展,也就是本文所讲的Overlay网络技术。Overlay网络技术多种多样,一般采用TRILL、VxLAN、GRE、NVGRE等隧道技术。TRILL技术是电信设备厂商主推的新型环网技术;NVGRE和STT是IT厂商主推的Overlay技术;以及大家非常熟悉的VXLAN(Virtual eXtensible LAN)等基于隧道的封装技术。由于这些也都是新增的协议,均需要升级现有网络设备才能支持。Overlay网络中应用部署的位置将不受限制,网络设备可即插即用、自动配置下发,自动运行,Overlay网络业务变化,基础网络不感知,并对传统网络改造极少,最为重要的是虚拟机和物理服务器都可以接入Overlay网络中。 ## VxLAN - ENSP  tn2>目的:使用VxLAN完成192.168.1.2 和 192.168.1.3之间的互联互通。模拟器使用eNSP。Underlay网络使用OSPFv2,Overlay使用VxLAN。 ## 实践  tn2>配置LSW1的`g0/0/2`接口,配置access ```bash system-view sysname LSW1 vlan 10 q int g0/0/2 port link-type access port default vlan 10 dis this q ```  tn2>配置LSW1的`g0/0/1`接口,配置trunk ```bash int g0/0/1 port link-type trunk port default vlan all dis this q ```  tn2>配置LSW2 ```bash system-view sysname LSW2 vlan 10 q int g0/0/2 port link-type access port default vlan 10 dis this q int g0/0/1 port link-type trunk port trunk allow-pass vlan all dis this q ``` tn2>配置CE5 ```bash # CE太高级了要commint一下 system-view sysname CE5 commit interface g1/0/0.10 mode l2 commit dis this encapsulation dot1q vid 10 commit dis this q # 设置bridge域并设置vni的值 bridge-domain 10 commit vxlan vni 10 commit dis this q int g1/0/0.10 dis this bridge-domain 10 commit undo shutdown commit int g1/0/0 undo shutdown commit int g1/0/0.10 dis this q ```   ```bash int g1/0/1 undo portswitch ip a 10.1.1.1 24 dis this comm dis this undo shutdown com dis this q ``` tn2>配置CE6 ```bash system-view sysname CE6 commit int g1/0/0.10 mode l2 encapsulation dot1q vid 10 commit undo shutdown commint dis this q bridge-domain 10 vxlan vni 10 commit dis this q int g1/0/0.10 bridge-domain 10 commit q int g1/0/0 sudo shutdown dis this q com # 关闭二层 int g1/0/1 undo portswitch undo shutdown ip a 10.1.1.2 24 dis this q commit q dis ip int b ``` tn2>创建CE5的环卫口 ```bash int l0 ip a 1.1.1.1 32 q commit ospf router-id 1.1.1.1 a 0 network 0.0.0.0 255.255.255.255 commit dis this ``` tn2>创建CE6的环卫口 ```bash int l0 ip a 2.2.2.2 32 q commit ospf router-id 2.2.2.2 a 0 network 0.0.0.0 255.255.255.255 commit dis this q ``` tn2>CE5测试直连 ```bash ping 10.1.1.2 ping 2.2.2.2 ```   tn2>传统配置完成。 更多的对端配置。 ```bash # CE5 interface Nve 1 commit source 1.1.1.1 vni 10 head-end peer-list 2.2.2.2 commit q ``` ```bash # CE6 interface Nve 1 commit source 2.2.2.2 vni 10 head-end peer-list 1.1.1.1 commit q ``` tn2>PC测试  tn2>我们在ping时,抓CE5`GE 1/0/1`接口的包会发现ping时的ARP包是基于二层的交换机进行,因为它返回的Mac地址是PC2的。如果是路由器的话应该返回接口的路由Mac地址,而不是PC的。 