VLAN
此处对VLAN做简单介绍,不做详细解释,Virtual Local Area Network,虚拟局域网,二层隔离技术,先行标准为IEEE 802.1Q,一个VLAN属于一个广播域,原理为在报文源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag,其中有12bit用于标书vlan id,即4096个,实际可用为1-4094,通过配置交换机端口模式Access、Trunk、Hybird来实现对报文的解封装(打上Tag/去掉Tag)实现。
VxLAN
VLAN的限制
1.传统vlan标签受限于4096个(12bit)标签,当租户数量剧增,又必须隔离租户,传统的vlan满足不了要求;
2.传统vlan无法满足虚拟机动态迁移,虚拟化迁移业务要求迁移后IP不变,要求提供一个无障碍接入的网络,所以必须是大2层的网络结构;
VXLAN
Virtual eXtensible Local Area Network,虚拟扩展局域网,是对传统VLAN协议的一种扩展,原理是将L2的以太帧封装到UDP报文中,并在L3网络中传输,封装8字节的vxlan头部,其中24bit的VNI数据可提供16M个vxlan id。VXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发。
Vxlan术语
VNI
VXLAN Network Identifier,VXLAN网络标识符,VXLAN通过VXLAN ID来标识,其长度为24比特。VXLAN 16M个标签数解决了VLAN标签不足的缺点,相当于vlan id。
VTEP
VXLAN Tunnel End Point,VXLAN隧道端点,VXLAN的边缘设备,VXLAN的相关处理都在VTEP上进行,例如识别以太网数据帧所属的VXLAN、基于VXLAN对数据帧进行二层转发、封装/解封装报文等。VTEP可以是一台独立的物理设备,也可以是虚拟机所在服务器的虚拟交换机,可以理解为vlan的网关。
VXLAN Tunnel
两个VTEP之间点到点的逻辑隧道,VTEP为数据帧封装VXLAN头、UDP头、IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。
BD
Bridge-Domain,类似于传统网络中VLAN(虚拟局域网)的概念,只不过在VXLAN网络中,它有另外一个名字BD。不同的VLAN是通过VLAN ID来进行区分的,那不同的BD是通过VNI来区分的。
VSI
Virtual Switching Instance,虚拟交换实例,VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例。VSI可以看作是VTEP上的一台基于VXLAN进行二层转发的虚拟交换机,它具有传统以太网交换机的所有功能,包括源MAC地址学习、MAC地址老化、泛洪等。VSI与VXLAN一一对应。
VSI-Interface
VSI的虚拟三层接口,类似于Vlan-Interface,用来处理跨VNI即跨VXLAN的流量。VSI-Interface与VSI一一对应,在没有跨VNI流量时可以没有VSI-Interface。
二层子接口
传统VLAN网络中定义了三种不同类型的接口:Access、Trunk、Hybrid。这三种类型的接口虽然应用场景不同,但它们的最终目的是一样的:一是根据配置来检查哪些报文是允许通过的;二是判断对检查通过的报文做怎样的处理。在VXLAN网络中,VTEP上的接口也承担着类似的任务,是一个叫做“二层子接口”的逻辑接口。
VTEP和VSI关系
现有VTEP设备中,一般用“接口+VLAN”的方式来区分流量与VSI的对应关系,而VSI与VXLAN Tunnel之间既可以建立全连接,也可以根据需求进行关联。
VxlAN报文格式
VTEP会将原本报文封装新的报头,这个报头总计50字节。
Outer MAC Header
封装外层以太头,14字节,如果有VLAN TAG则为18字节。其中,源MAC地址(Outer Source MAC Address)为源VM所属VTEP的MAC地址,目的MAC地址(Outer Destination MAC Address)为到达目的VTEP的路径上下一跳设备的MAC地址。类型字段为0x0800,指示内层封装的是IP报文。
Outer IP Header
封装外层IP头,20字节。其中,源IP地址(Outer Source IP Address)为源VM所属VTEP的IP地址,目的IP地址(Outer Destination IP Address)为目的VM所属VTEP的IP地址。协议字段为0x11,指示内层封装的是UDP报文。
UDP Header
UDP报文头,8字节。其中,UDP目的端口号(UDP Destination Port)固定为4789,指示内层封装报文为VXLAN报文。UDP源端口号(UDP Source Port)为随机任意值,可以用于VTEP之间多路径负载分担的计算。
VXLAN Header
VXLAN协议新定义的VXLAN头,8字节。
Flags:8 bit,RRRRIRRR。“I”位为1时,表示VXLAN头中的VXLAN ID有效;为0,表示VXLAN ID无效。“R”位保留未用,设置为0。
VXLAN ID(VNI):24 bit,用于标识一个单独的VXLAN网络。
Reserved:分别为24 bit和8 bit。保留位。
Original L2 Frame
原始以太网报文。
注意
1.从报文的封装可以看出,VXLAN头和原始二层报文是作为UDP报文的载荷存在的,在VTEP之间的网络设备,只需要根据Outer MAC Header和Outer IP Header进行转发,利用UDP Source Port进行负载分担,这一过程,与转发普通的IP报文完全相同。这样,除了VTEP设备,现网的大量设备无需更换或升级即可支持VXLAN网络。
2.原始以太网报文默认为1500字节,报文在经过VTEP时,会封装上50字节的新报文头,就变成了1550字节,VTEP设备,一般在解封装VXLAN报文时,要求VXLAN报文不能被分片,否则无法正确解封装。这就要求VTEP之间的所有网络设备的MTU最小为 1550字节,但中间的网络设备一般是不方便设置MTU的值的,那么设置虚拟机的MTU值为1450,也可以解决这个问题。
Vxlan端口模式
传统网络中定义了三种不同类型的接口:Access、Trunk、Hybrid,根据配置来检查哪些报文是允许通过的,并判断对检查通过的报文做怎样的处理。
VXLAN网络中,VTEP上的接口也承担着类似的任务和功能,不过是对二层子接口进行设置,常见的有dot1q、untag、qinq和default四种接口类型。
dot1q:对于带有VLAN Tag的报文,该类型接口只接收与指定VLAN Tag匹配的报文;对于带有VLAN Tag和外层VxLan封装的报文,该类型接口只接收外层Vxlan封装与指定VLAN Tag匹配的报文。
untag:该类型接口只接收不带VLAN Tag的报文。
qinq:该类型接口只接收带有指定VLAN Tag和指定外层Vxlan封装的报文。
default:允许接口接收所有报文,不区分报文中是否带VLAN Tag。不论是对原始报文进行VXLAN封装,还是解封装VXLAN报文,该类型接口都不会对原始报文进行任何VLAN Tag处理,包括添加、替换或剥离。
注意
VXLAN隧道两端二层子接口的配置并不一定是完全对等的。正因为这样,才可能实现属于同一网段但是不同VLAN的两个VM通过VXLAN隧道进行通信。
并不是配置了VLAN就一定不能配置Vxlan,VLAN仍可作为本地局域网二层隔离的技术,不过需要跨网甚至跨地域大二层通信时再通过VxLAN隧道转发,也就是可以根据需求自定义配置交换机接收到一个报文是通过vlan转发还是vxlan转发。
VxLAN转发原理
如图,VM1(10.10.10.1)需通过vxlan隧道与VM2(10.10.10.12通信),他们各自的VTEP设备维持一张映射关系转发表,可理解为MAC表,不过它是由MAC地址、VNI和VTEP IP组成,表示主机的MAC位于哪个VTEP节点内。转发时若映射关系转发表里没有对应信息,则VTEP节点将目的需求洪泛给其他VTEP节点,类似于ARP广播的方式,之后根据表项内容点对点转发。
VxLAN转发举例
如图,一台虚拟化服务器中有两个不同VLAN VID的虚拟机VM1(VLAN 10)和VM2(VLAN 20),要求无它们与其他虚拟机通信时需要接入VXLAN网络,其中vSwitch与VTEP的PVID为vlan20。
配置为:
1.VTEP1的物理接口10GE 1/0/1上,分别针对VM1和VM2封装不同的二层子接口,并将其分别加入不同的BD,分别配置为dot1q和untag的封装类型。
2.vSwitch的上行口配置成Trunk模式,放行vlan10、20。
3.根据VTEP1和VTEP3的IP配置VxLAN隧道
4.VTEP3进行接口配置。
详细的配置命令本处省略,这样后续VM1和VM2的流量将会进入不同的VXLAN隧道继续转发了。
VXLAN网关
通过配置BDIF来设置VXLAN网关,BDIF接口的功能与VLANIF接口类似,是基于BD创建的三层逻辑接口,用以实现不同子网之间的通信,或VXLAN网络与非VXLAN网络之间的通信。
VXLAN二层网关与三层网关
和VLAN类似,不同VNI之间的主机,以及VXLAN网络和非VXLAN网络中的主机不能直接相互通信。为了满足这些通信需求,VXLAN引入了VXLAN网关的概念。VXLAN网关分为二层网关和三层网关:
VXLAN二层网关:用于终端接入VXLAN网络,也可用于同一VXLAN网络的子网通信。
VXLAN三层网关:用于VXLAN网络中跨子网通信以及访问外部网络。
VXLAN集中式网关与分布式网关
VXLAN集中式网关
集中式网关是指将三层网关集中部署在一台设备上,所有跨子网的流量都经过这个三层网关转发,实现流量的集中管理。
优点是集中管理,缺点是路径不是最优,随着网络流量增大可能存在ARP表项性能瓶颈,不利于后期扩展。
VXLAN分布式网关
通过部署分布式网关可以解决集中式网关部署的缺点。VXLAN分布式网关是指在典型的“Spine-Leaf”组网结构下,将Leaf节点作为VXLAN隧道端点VTEP,每个Leaf节点都可作为VXLAN三层网关(同时也是VXLAN二层网关),Spine节点不感知VXLAN隧道,只作为VXLAN报文的转发节点。如下图所示,Server1和Server2不在同一个网段,但是都连接到同一个Leaf节点。Server1和Server2通信时,流量只需要在该Leaf节点上转发,不再需要经过Spine节点。
部署分布式网关时:
Spine节点:关注于高速IP转发,强调的是设备的高速转发能力。
Leaf节点:
作为VXLAN网络中的二层网关设备,与物理服务器或VM对接,用于解决终端租户接入VXLAN虚拟网络的问题。
作为VXLAN网络中的三层网关设备,进行VXLAN报文封装/解封装,实现跨子网的终端租户通信,以及外部网络的访问。
优点是Leaf节点既可以做VXLAN二层网关,也可以做VXLAN三层网关,部署灵活,且只需要学习自身连接服务器的ARP表项,性能无瓶颈,扩展能力强。
VXLAN隧道如何建立
手工方式建立VXLAN隧道
这种方式需要用户手动指定VXLAN隧道的源IP为本端VTEP的IP、目的IP为对端VTEP的IP,也就是人为地在本端VTEP和对端VTEP之间建立静态VXLAN隧道。
自动方式建立VXLAN隧道
在网络规模很小的情况下,手工建立还可以接受,但是一旦涉及大规模网络或者频繁的租户业务连接需求,手工建立就显得很吃力且不好维护,此时就需要自动化的配置配置方式。
控制平面-Control Plane
自动建立VXLAN本质是将控制平面和数据平面分开,通过将各VTEP设备控制平面通过统一方式接入,实现自动化的配置维护。
控制平面的功能
VTEP邻居发现:VXLAN网络中的VTEP数量众多,类型不同,纯手工配置VTEP非常困难也不利于大规模部署。VXLAN的控制平面应该具有自动发现VTEP邻居、自动建立VXLAN Tunnel、自动进行关联等功能。
虚拟机信息同步:虚拟机信息同步主要是指MAC及ARP的同步。上线的虚拟机信息需要在各VTEP上同步,下线的虚拟机信息要能够在各VTEP上删除或老化,迁移的虚拟机信息要能够从旧VTEP转移到新VTEP。
此外,不同的控制平面协议还能实现自动部署、灵活调整、策略下发等功能。
不同控制平面技术
基于SDN Controller的控制平面
SDN Controller可以是一个或者一组硬件设备,也可以是一套软件。Controller与网络中所有设备建立连接,整个VXLAN网络的数据转发都由Controller来管理。Controller与设备连接的接口称为南向接口,可以使用OpenFlow、Netconf等协议;对用户提供服务的接口称为北向接口,也可以提供API以便与其他管理平台对接或进行深度开发。
基于VXLAN-ISIS的控制平面
为私有协议,目前已基本不再使用。基于VXLAN-ISIS的控制平面利用ENDP(Enhanced Neighbor Discovery Protocol,增强邻居发现协议)和VXLAN-ISIS两个协议共同完成VXLAN所需的自动建立隧道和信息同步功能。这种控制平面利用ISIS协议的可扩展特性来同步VXLAN建立和流量转发所需要的信息,是早期VXLAN控制平面探索时期的成果之一。
基于EVPN的控制平面
Ethernet Virtual Private Network,目前EVPN是最主流的Vxlan控制协议,可以在网络设备上直接进行配置。EVPN统一了各种VPN业务的控制面,利用BGP扩展协议来传递二层或三层的可达性信息,实现了转发面和控制面的分离。EVPN解决传统L2VPN的无法实现负载分担、网络资源的消耗较高等不足,同时也可以对L3VPN业务进行承载,降低了协议的复杂程度。EVPN还将IP VPN流量均衡和部署灵活的优势引入到了以太网中。种种优势使其广泛应用于大型数据中心二层网络互连场景。
EVPN+VXLAN也成为了目前一种主流的构建SDN网络的方式。
参考资源:华为-什么是VXLAN
视频讲解-华为CloudEngine系列交换机VXLAN特性介绍
第一部分
第二部分
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://tenkms.cn/archives/418
共有 0 条评论