4.4 VXLAN沟通底层网络与叠加网络
之前说明过,使用叠加网络方案的好处就是可以在不修改现有的物理网络架构(底层网络)的情况之下提供网络虚拟化服务。叠加网络和底层网络之间的通信依赖于某种封装协议,IBM SDN VE采用了VXLAN来实现。图7是SDN VE解决方案中使用的VXLAN帧结构图。
VNID是一个24位的标识符用以标识源IP子网,和传统的VLAN使用12位的标识符只能支持4096个网段相比,VXLAN可以支持到最多1600万个网段。当一个VM发送了一个帧,用VNID封装这个帧之后就可以在传统的三层网络上创建一个穿越第三层的隧道将这个帧传输出去。在图4-4中蓝色部分的外部UDP头中包含了VTEP(VXLAN隧道端点)源端口和目标端口,外部IP头中包含了VTEP的IP,外部以太网头部中包含了源VTEP的源MAC地址和目标VTEP的目标MAC地址。图中绿色部分是内部以太网帧,这是最初由VM发出的包含VM的MAC地址和IP源地址和目标地址的帧,正是这个帧被封装起来在VXLAN隧道中传输。
5. SDN的应用和展望
5.1 IBM SDN VE在Openstack中的应用
IBM SDN VE KVM版提供了OpenStack Neutron插件,所以使用KVM作为hypervisor的基于OpenStack的云计算解决方案可以使用IBM SDN VE作为网络虚拟化方案以提供极大的网络灵活性和自动化。
▲图8 IBM SDN VE在OpenStack中的应用框图
通过本方案,结合OpenStack的Neutron部件,用户可以直接在Web Portal中进行创建多层网络应用的操作。用户对创建或者修改虚拟网络的操作通过Neutron插件对DOVE管理控制台(DMC)北向API的调用而反映到SDN VE环境中。这时DMC经过一系列的对虚拟网络的配置、策略控制和向各个相关虚拟交换机分发策略来实施这些用户操作,从而达到以软件获取网络能力的目标。
由于SDN VE提供了完善统一的日志信息和统计信息,可以通过这些信息根据网络使用量等数据实现“按需付费”。
叠加层网络实现过程简介
在每个KVM中,都有一个DOVE代理进程,这个代理进程直接侦听分布式连通性服务(DCS),同时也负责创建独立的桥接接口,这个桥接接口最终会显示给virt-manager或者虚拟机管理器。每个VM都可以创建1个或者多个虚拟网络接口,这些虚拟网络接口将VM与虚拟交换机相连接。
同一KVM内的VM之间需要通信时,只需要根据流表在这台KVM上的虚拟交换机内进行数据交换。不同KVM上的VM之间需要通信时,则会由虚拟交换机将从VM虚拟网络接口上收到的网络包进行VxLAN封装,封装后的包在底层IP网络上发送给目标VM所在的KVM,经过VxLAN的解封装,最终由源VM发出的网络包被交换到目标VM上。
如果VM要和遗留在底层网络上的物理机进行通信,则可以将VxLAN包发送到DOVE网关,由网关进行解封装并且发送到目标主机。物理机到VM的通信可以由相反的过程完成。
DOVE网关也用于叠加层网段中的广播。从叠加层网络的设计可以了解到分布于不同KVM中的同网段VM之间要实现广播必须借助于一些特别的设计。分布式连通性服务(DCS)保持了一个VM的地址表,通过这张地址表可以了解到某一叠加层网段内所有VM所对应的KVM。当网段内某一VM发出广播包时,DOVE网关会将这个广播包转发到所有需要的KVM中。
创建多层网络应用
用户可以通过OpenStack的用户界面向Neutron部件发出创建新网段的指令,这个指令由IBM SDN VE KVM版OpenStack Neutron插件转发到DOVE管理控制台(DMC),DOVE管理控制台向各个虚拟交换机分发策略,以创建这个网段。
用户创建多个这样的网段,然后通过OpenStack将各个VM和诸如路由器、防火墙等应用器件连接到各个网段,可以快速创建出一个多层网络应用。