上海人物摄像交流群

VxLAN与逻辑交换机

只看楼主 收藏 回复
  • - -
楼主

传统VLAN网络的不足

传统VLAN环境下都有哪些不足?第一,虚拟机规模受到网络规格的限制,在大L2网络里,报文通过查询MAC地址转发,而MAC表容量限制了虚拟机的数量;第二,网络隔离的限制,普通的VLAN配置无法满足动态网络调整的需求,最多4094个VLAN远不能满足大规模云计算数据中心的需求。第三,虚拟机启动后假如在业务不中断基础上将该虚拟机迁移到另外一台物理机上去,需要保持虚拟机的IP地址和MAC地址等参数保持不变,这就要求业务网络是一个二层的网络,基于IP子网的区域划分限制了需要二层网络连通性的应用负载的部署。
为什么要用VxLAN网络
虚拟可扩展局域网VxLAN是一种基于Overlay的网络技术(一种在网络上叠加网络的虚拟化技术,大体框架是对基础网络架构不进行大规模修改的情况下,实现应用在网络上的承载,并能与其他网络业务隔离)。其核心技术理念是对现有的标签技术进行彻底的改变,以优化VLAN的缺陷。通过隧道机制,在三层网络之上叠加了一个二层的虚拟网络,从而绕过VLAN标签的限制。VxLAN将以太网报文封装在UDP传输层上的一种隧道转发模式。


从虚拟化层的角度来看,VxLAN实现了逻辑网络和物理网络的完全解耦。通过VxLAN的封装,虚拟机之间的通信完全在逻辑网络内部完成,与物理架构的底层架构已经没有任何关系,只有当虚拟机需要通过网络边界层与外界进行通信时,才会考虑与物理网络的路由和交换策略。


从封装的结构上来看,VXLAN提供了将二层网络overlay在三层网络上的能力。VxLAN网络标识VNI类似VLAN ID,用于区分VxLAN段,不同VxLAN段的虚拟机不能直接二层相互通信。VNI由24比特组成,一个VNI即表示一个租户,因此支持多达2­­的24次方,16M的租户,数量远远大于4096,并且UDP的封装可以穿越三层网络,显然比VLAN具有更好的扩展性。


VxLAN隧道机制

UDP是一个无连接的数据包服务,UDP在传输过程中并不保证数据包的送达和有效性验证。数据有可能会乱序到达,有可能会出现冗余,甚至可能出现丢失。这同样意味着传输过程不需要像TCP协议一样有个初始化的握手阶段,也不需要建立一条连接双方的通信管道(如果说应用程序需要有序,可靠的数据流传输,那么就应该选择TCP协议)。由于UDP没有通信管道,所以当进程要向另一个进程发送一批数据时,发送进程必须将目的进程和地址与这些数据联系起来。这样的传输机制有什么好处呢?UDP协议避免了因检查每个报文是否到达而产生的开销,对于那些不需要保证数据交付的应用来说更加的快速有效。


VxLAN的传输过程实际上就是将源主机的MAC地址,IP地址,VLAN信息等通通封装到UDP中再进行转发。在转发过程中,这个数据包只有到了目的地才会被终结掉,数据包在整个过程中保持了内部数据的完整性。这种数据转发机制就叫做隧道机制,可以减少对现有网络拓补的改动,而且方便网络在改动时仍然保持快速传输。可以看出来,与传统VLAN报文传输不同的是,在这个传输过程中,服务器的MAC地址,IP地址和VLAN信息都不会再作为转发依据。


上文所说的目的地指的是一个叫VTEP(VxLAN隧道终结点)的实体,用于实现对VxLAN报文进行封装和解封装,包括ARP请求报文和正常的VxLAN数据报文,在一段封装报文后通过隧道向另一端VTEP发送封装报文,另一端VTEP接收到封装的报文进行解封装。这样两端就可以在基于L3的网络基础上建立起L2虚拟网络。VxLAN报文中源IP地址为本节点的VTEP地址,VxLAN报文中目的IP地址为对端节点的VTEP地址,因此一对VTEP地址就对应着一个VXLAN隧道。


在虚拟化环境中,不管是通过二层还是三层连接的主机都可被分割成不同的组。这些组是基于VTEP端口所在的IP子网,也就是VTEP Segment,其中的每一个主机都可以充当这个隧道终结点。VTEP Segment ID和VLAN中的VLAN ID相似,都是用于隔断网络流量。VMware NSX的Segment ID默认从5000开始,最大可达1600万。每一个VTEP Segment传输区域都可以关联一或多个逻辑交换机,该网路传输区域内的虚拟机就可以通过VxLAN Overlay技术进行通信了。
虚拟交换机与逻辑交换机

运行在虚拟化hypervisor层上的虚拟交换机是用于连接虚拟机和物理设备的交换设备,主要包括标准交换机和分布式交换机两种,两者的不同点在于前者是运行在一个主机上,而后者则是运行在整个数据中心上。虚拟交换机的运行模式与物理交换机类似,负责监测与虚拟端口相连接的虚拟机,并在虚拟机之间转发流量。虚拟交换机的作用在于,虚拟机之间的网络流量可以在本地进行转发;虚拟机可以通过虚拟交换机访问物理机或集群所连接的外部网络。除此之外,虚拟交换机可以合并多个网络适配器的带宽实现网络带宽的负载均衡额IO控制。


虚拟交换机同样分为管理层和基础数据层两部分,管理层负责为虚拟交换机进行各种配置,而数据层则负责hyoervisor层上的数据交换工作。由于每个主机都有各个MAC地址所属的端口组的相关信息,主机本身也参与控制层的工作,也就是说虚拟交换机和物理交换机一样,控制层和数据层并没有完全分离。最典型的例子是,即便是虚拟化层的控制节点(例如vCenter)出现故障,虚拟交换机依然可以按照制定策略继续工作,原因在于这些控制节点并不负责数据层的工作。


逻辑交换机是基于虚拟交换机工作的。与虚拟交换机不同的是,逻辑交换机的控制层与数据层是完全分离的。主机只负责数据平面的工作,而控制层则完全交给控制节点(NSX Manager)来完成。由于逻辑交换机使用VxLAN Overlay进行数据的封装,不再使用MAC、IP以及VLAN作为传输依据,因此允许二层网络在不同的服务器机柜中横向扩展,甚至可以跨越不同的数据中心。这种扩展和底层物理网络架构是完全独立的。

VxLAN表项与虚拟机通信示例

当一个虚拟机添加到一个VxLAN网段时,其所在主机就会向控制层生成一个携带VNI/VTEP映射关系的控制平面信息。控制层收到信息后会生成一个携带这些信息的本地VTEP表项,并转发统一VxLAN网段内的虚拟机所在的所有主机,之后这些主机就知晓其下属虚拟机在本地VxLAN网段中的所有信息。


主机还需要向控制端提供虚拟机连接到具体VNI的MAC地址表,同样的,控制节点也会建立本地的MAC地址表,但是并不会像VTEP信息一样被发送到所有的主机,这就是为什么在VxLAN环境下主机只会关心本地连接虚拟机的MAC地址,大大节省了网络设备中MAC地址表项。


最后一个需要主机提供的表项为虚拟机的IP地址,无论是DHCP地址还是静态地址,用来建立本地的ARP表,并实现ARP抑制功能。该功能允许在虚拟机连接的VxLAN网段中移除可能会泛洪的ARP流量,减少广播流量,有利于提高整个网络架构的稳定性和可扩展性。


如图所示,三个主机组成一个VTEP Segment,每个主机都可以充当这个隧道终结点。其中VM1和VM3连接在VxLAN 5000,VM2和VM4连接在VxLAN 5001,以下是VM1和VM3两个虚拟机建立一个单播通信的过程。


1.      VM1发出了一个ARP请求,希望可以与VM3的MAC和IP地址进行映射
2.      VM1所在的host1截获了这个请求,并生成了一个控制平面的请求,要求控制端提供MAC地址和IP地址的映射信息。
3.      控制端接收到了这个请求,检查了与所需映射信息相关的ARP表,并将这个映射信息发送到了host1

4.      Host1接收到了这个信息,更新了自己本地的表项,于是对于VM1来说,VM3的VTEP就是已知的了。


如果控制端没有相关的映射信息,控制端会将这个情况通知给host1,使其可以在VxLAN 5000进行泛洪,以便ARP请求可以到达VM3。VM1会向所有传输范围内所有的虚拟机发送数据包, 由于VM2和VM4在VxLAN 5001上,会直接丢弃这个数据包,是不受影响的;只有VM3最终可用收到这个数据包。


一旦上述工作完成,VM1就有了ARP缓存,就可以将数据流量发送到VM3。转发流程如下所示:


1.      VM1生成了一个直接去VM3的数据包。
2.      host1已经在之前通过控制端的回馈信息知晓了VM3的位置,就可以将VM1发出的原始报文封装成一个VxLAN包,送到host3上。

3.      Host3收到数据包并解封装,并将这个报文传递给VM3。在这个过程中host3同时也学习到了VM1的位置。


这时候,host1和host3都有了对方的本地表项,流量就可以双向传递了。


值得注意的是,在这个例子中,三个主机位于一个二层物理网络中。如果主机之间需要三层通信,运行在其上的虚拟机依然可以建立起一个VxLAN传播区域,因为VxLAN是将以太网报文封装在UDP传输层上的一种隧道转发模式,是在三层网络之上叠加的一个二层虚拟网络。


相关文章:

网络虚拟化之SDN,Openflow和Overlay

CPU虚拟化知多少?

SDS软件定义存储技术沙龙随笔

NSX为什么这么火,究竟为哪般?



举报 | 1楼 回复

友情链接