云计算中心面对多租户的需求,需将不同租户的网络进行隔离,租户之间无法获取到不属于自己的网络流量,防止恶意租户的攻击、租户流量泄漏。同时还需满足虚拟机迁移的需求,实现网路通信的不中断。
VLAN
传统的网络隔离方法,有VLAN方式。通过在数据帧上添加上VLAN标签(0-4096),并对网络交换机进行配置,规定交换机的哪些端口转发哪些VLAN标签的数据,完成虚拟网络的建设,实现不同租户数据的隔离。
不足:面临云计算虚拟化环境,物理服务器上可能运行着多个租户的虚拟机,导致会出现一个端口映射了多个VLAN,无法实现。此外,租户的数量会超过VLAN标签的最大值,导致VLAN方法的失效。因此需采用其他的方式实现网络虚拟化。
UnderLay
使用underlay的方式,对云计算中心的网络地址空间进行划分,租户可使用任一个地址空间,然后通过网络设备对不同的地址空间完成数据路由(网络设备包含物理设备,也包含物理机hypervisor上的虚拟交换机),从而实现不同租户的网络隔离。
underlay方式的网络虚拟化,对网络的灵活性要求较高,需要管理人员能够根据地址空间的划分,自定义网络设备的转发行为。基于Openflow技术的交换机,即可实现。通过中央控制器管理Openflow交换机上的流表,自定义对不同地址空间数据的转发端口。
不足:如果使用IP地址空间,对虚拟机的迁移有一定的要求。虚拟机创建之初,MAC地址同IP地址就固定了,为了通信方便,不会迁移出地址空间的局域网,否则会造成网络地址的割裂,需要单独为此IP地址的数据进行流表定义,无法使用通配符的形式,这就导致了流表数量迅速增加。使用MAC地址也可以进行地址空间划分,由于虚拟机的MAC地址可以自定义,也可是实现IP地址一样的分层形式,但是虚拟机创建之初,MAC地址同IP地址就固定了,同IP地址空间划分一样,无法迁出通信局域网,否则会造成网络地址割裂,导致流表数量增加。
因此underlay的方式,在每个租户的网络规模不大或者租户数量不是很多时,可以使用。随着云计算中心的规模增加,租户以及租户虚拟机规模的增加,underlay的方式,对网络交换机的要求也会提高,除非解决交换机流表存储的问题,不然无法使用underlay。
OverLay
最常见的用户接触最早的overlay技术,应该是vpn了。通过MAC-in-MAC、IP-in-MAC、MAC-in-IP、IP-in-IP的形式,将虚拟机的数据封装起来,然后通过包最外面的MAC或者IP地址,完成数据的路由转发功能,在到达目的服务器时,将数据包拆解,保留内部的数据信息,并根据真正的地址信息,转发给目的虚拟机。
这对云计算中心内的传输网络,没有任何要求,其可以继续按照传统的路由方式,实现数据转发。唯一的需要变化的就是网络边缘的网络设备,或者物理服务器内部的hypervisor虚拟交换机,其需要实现数据包的包装与解封功能,同时需要维护一张虚拟机地址同网络边缘设备地址的映射表,这样挽留过边缘的设备才能正确的包装虚拟机的数据,并转发出去。
目前常用的有NvGRE以及VxLAN技术。
不足:需要网络边缘的设备支持相应的overlay技术,并且包装与解封的需要大量的计算能力,在网络流量较大时,无法使用hypervisor内的虚拟交换机。因为会影响物理机的性能,进而影响虚拟机的性能。
TRILL (FabricPath)
这是一种大二层网络技术,主要解决虚拟机迁移后的通信问题。在以太网技术,需要考虑到CSMA/CD的需求,大量的广播以及MAC地址并非为寻址而设计的特点,导致使用以太网技术的二层网络无法很好地扩展到较大的通信半径。同时在使用STP协议防止环路出现时,会造成链路的限制,浪费资源。
TRILL代替STP完成二层的链路状态维护工作,相比STP协议,可大幅度提高链路的利用率,使得二层通信扩展到较大的半径。
RBridge:实现了TRILL协议的设备叫做Routing Bridge,简称RBridge。
TRILL报文:Ingress RBridge nickname (16 bits), Egress RBridge nickname (16 bits), Hop count (6 bits), and a Multidestination flag bit (1 bit)
TRILL设备中有两个表:一个是MAC表,用于学习源MAC地址,并且查找目的MAC地址所对应的RBridge nickname;另一个是TRILL转发表,在TRILL域转发时用,即从ingreee RBridge如何到达egress RBridge。
通过IS-IS路由方式,实现MAC地址的学习。