数据中心SDN网络、VXLAN、虚拟化之间的关系和概念
参考2个专业的资源:
http://www.h3c.com/cn/d_201811/1131076_30005_0.htm
https://support.huawei.com/enterprise/zh/doc/EDOC1100087027
传统VLAN网络
VLAN概念
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。
如图,两台交换机放置在不同的地点,比如写字楼的不同楼层,每台交换机连接两台属于不同企业用户的计算机,此时就可以将两台计算机划分到不同的VLAN,实现对不同企业用户的隔离。
VLAN报文
IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。其中,数据帧中的VID(VLAN ID)字段标识了该数据帧所属的VLAN,共12bit,数据帧只能在其所属VLAN内进行传输。一共支持4096个租户VLAN。
传统VLAN的限制
1、传统vlan标签受限于4096个(12bit)标签,当租户数量剧增,又必须隔离租户,传统的vlan满足不了要求;
2、传统vlan无法满足虚拟机动态迁移,虚拟化迁移业务要求迁移后IP不变,要求提供一个无障碍接入的网络,所以必须是大2层的网络结构;
VXLAN
VXLAN概念
VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization OverLayer 3)标准技术之一,是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP报文中,并在L3网络中传输。VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。从用户的角度来看,接入网络的服务器就像是连接到了一个虚拟的二层交换机的不同端口上(可把蓝色三角形虚框表示的数据中心VXLAN网络看成一个二层虚拟交换机),可以方便地通信。从服务器的角度看,VXLAN为它们将整个数据中心基础网络虚拟成了一台巨大的“二层交换机”,所有服务器都连接在这台虚拟二层交换机上。而基础网络之内如何转发都是这台“巨大交换机”内部的事情,服务器完全无需关心。
VXLAN关键术语
l VNI(VXLAN Network Identifier,VXLAN网络标识符):VXLAN通过VXLAN ID来标识,其长度为24bit。VXLAN 16M个标签数解决了VLAN标签不足的缺点。
l VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):VXLAN的边缘设备。VXLAN的相关处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN、基于VXLAN对数据帧进行二层转发、封装/解封装报文等。VTEP可以是一台独立的物理设备,也可以是虚拟机所在宿主服务器的虚拟交换机。
l VXLAN Tunnel:两个VTEP之间点到点的逻辑隧道。VTEP为数据帧封装VXLAN头、UDP头、IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。
l VSI(Virtual Switching Instance,虚拟交换实例):VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例。VSI可以看作是VTEP上的一台基于VXLAN进行二层转发的虚拟交换机,它具有传统以太网交换机的所有功能。
l VSI-Interface(VSI的虚拟接口):类似于Vlan-Interface,用来处理跨VNI即跨VXLAN的流量。VSI-Interface与VSI一一对应,在没有跨VNI流量时可以没有VSI-Interface。
l BD(Bridge-Domain)类似于传统网络中VLAN(虚拟局域网)的概念,只不过在VXLAN网络中,它有另外一个名字BD。不同的VLAN是通过VLAN ID来进行区分的,那不同的BD是通过VNI来区分的。
l 二层子接口, 传统VLAN网络中定义了三种不同类型的接口:Access、Trunk、Hybrid。这三种类型的接口虽然应用场景不同,但它们的最终目的是一样的:一是根据配置来检查哪些报文是允许通过的;二是判断对检查通过的报文做怎样的处理。在VXLAN网络中,VTEP上的接口也承担着类似的任务,是一个叫做“二层子接口”的逻辑接口。
VXLAN报文
作为传统的网络隔离技术,VLAN的TAG VID数量只有4000个,无法满足大型数据中心的租户间隔离需求。另外,VLAN的二层范围一般较小且固定,无法支持虚拟机大范围的动态迁移。
l VXLAN Header
增加VXLAN头(8字节),其中包含24bit的VNI字段,用来定义VXLAN网络中不同的租户(共支持16777216租户)。此外,还包含VXLAN Flags(8bit,取值为00001000)和两个保留字段(分别为24bit和8bit)。
l UDP Header
VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。
l Outer IP Header
封装外层IP头。其中,源IP地址(Outer Src. IP)为源VM所属VTEP的IP地址,目的IP地址(Outer Dst. IP)为目的VM所属VTEP的IP地址。
l Outer MAC Header
封装外层以太头。其中,源MAC地址(Src. MAC Addr.)为源VM所属VTEP的MAC地址,目的MAC地址(Dst. MAC Addr.)为到达目的VTEP的路径中下一跳设备的MAC地址。
虚拟机如何接入VXLAN
二层子接口主要做两件事:一是根据配置来检查哪些报文需要进入VXLAN隧道;二是判断对检查通过的报文做怎样的处理。在二层子接口上,可以根据需要定义不同的流封装类型(类似于传统网络中不同的接口类型)。以华为CloudEngine系列交换机为例,目前支持的流封装类型有dot1q、untag、qinq和default四种类型:
l dot1q:对于带有一层VLAN Tag的报文,该类型接口只接收与指定VLAN Tag匹配的报文;对于带有两层VLAN Tag的报文,该类型接口只接收外层VLAN Tag与指定VLAN Tag匹配的报文。
l untag:该类型接口只接收不带VLAN Tag的报文。
l qinq:该类型接口只接收带有指定两层VLAN Tag的报文。
l default:允许接口接收所有报文,不区分报文中是否带VLAN Tag。不论是对原始报文进行VXLAN封装,还是解封装VXLAN报文,该类型接口都不会对原始报文进行任何VLAN Tag处理,包括添加、替换或剥离。
下面一台虚拟化服务器中有两个不同VLAN VID的虚拟机VM1(VLAN 10)和VM2(VLAN 20),它们与其他虚拟机通信时需要接入VXLAN网络。此时我们可以分别在VTEP的物理接口10GE 1/0/1上,分别针对VM1和VM2封装不同的二层子接口,并将其分别加入不同的BD。这样后续VM1和VM2的流量将会进入不同的VXLAN隧道继续转发。vSwitch的上行口配置成Trunk模式。这样vSwitch发给VTEP的报文中,既有带tag的VM1流量(对应BD 10,VNI 5000),又有untag的VM2流量(对应BD 20,VNI 6000),此时在VTEP的接入口上创建两个二层子接口,分别配置为dot1q和untag的封装类型。
交换机相关命令行
1、建立VNI-BD映射
bridge-domain 10 //表示创建一个“大二层广播域”BD,其编号为10
vxlan vni 5000 //表示在BD 10下,指定与之关联的VNI为5000,BD与VNI是1:1的映射关系
2、查看映射
display vxlan vni
Number of vxlan vni : 1
VNI BD-ID State
---------------------------------------
5000 10 up
3、二层子接口命令
interface 10GE1/0/1.1 mode l2 //创建二层子接口10GE1/0/1.1
encapsulation dot1q vid 10 //只允许携带VLAN Tag 10的报文进入VXLAN隧道
bridge-domain 10 //指定报文进入的是BD 10
interface 10GE1/0/1.2 mode l2 //创建二层子接口10GE1/0/1.2
encapsulation untag //只允许不携带VLAN Tag的报文进入VXLAN隧道
bridge-domain 20 //指定报文进入的是BD 20
VXLAN网络之上的SDN
SDN提供从应用到物理网络的自动映射、资源池化部署和可视化运维,协助客户构建以业务为中心的网络业务动态调度能力。即可以独立承担业务呈现/协同的工作,也支持通过标准化的北向接口开放能力与业界主流云平台无缝对接,使得客户可以根据自身业务发展,灵活部署和调度网络资源,让数据中心网络更敏捷地为云业务服务。通过支持北向对接云平台,南向对接物理交换机、虚拟交换机、防火墙,实现了对网络资源的管理控制及计算、存储等资源的协同发放。
目前维护的开源产品:https://gitee.com/475660