如果虚拟化使服务器能够按成本效率和敏捷性需要进行上下调整,那这不正是实现虚拟网络组件的意义所在吗?毕竟,虚拟服务器需要进出站通信,而且还需要防火墙的保护以及部署负载均衡。这似乎是最适合使用能够按需调整虚拟网络设备的,是吗?不一定。
很多网络供应商已经开始通过使用Intel的平台和硬件产品来减小开发成本。例如,Cisco的ASA防火墙、F5的负载均衡器和Vyatta的路由器。接下来的事情是很明显的,其中一些此类供应商已经开始为虚拟设备提供产品了。F5已经有它的Local Traffic Manager–Virtual Edition (LTM VE)产品,而Vyatta则宣称具有一个全面虚拟设备解决方案。虽然VMware在这方面稍微有些落后,但也提供了虚拟防火墙(vShield Zones、vShield App)和路由器/负载均衡器(vShield Edge)。
虚拟网络设备:关键是什么?
网络设备与服务器不同,它们一般执行高I/O的任务,通过网络接口以最小附加处理来传输大量的数据,并且非常依赖于专用硬件。所有高速路由和数据包转发,包括加密(IPsec与SSL)和负载均衡,都依靠专用处理器。当一个网络设备被重新打包为一个虚拟机格式时,专用硬件就失效了,所有的这些任务现在都必须由通用的CPU执行,这有时候会导致性能的显着下降。
在虚拟设备中部署路由器、交换机或者防火墙可能会直接占用在其他地方可以更好利用的CPU时间–当然,除非您已经充实地预分配了服务器,并且还有大量闲置的CPU处理时间,否则在这种情况下您的规划将会出现严重的问题。
更糟糕的是,在服务器虚拟化解决方案中所使用的虚拟机管理软件也可以虚拟化网络接口。这意味着从网络设备到虚拟化硬件的每个I/O访问路径都会经过一个更高特权软件(虚拟机管理程序)进行环境转换,它可以使用大量的CPU时间来解码所需要做的事情,模拟想要的动作。同时,在虚拟机器之间传输的数据必须在它们的地址空间进行复制,这会给整个过程增加更多的延迟。
VMware的虚拟机管理程序具有的DVFilter API会带来一定的帮助,它支持一个可加载的内核模块,来检查和修改虚拟机管理程序(vNetwork Data Path Agent)内部或它与虚拟机(vNetwork Control Path Agent)之间传输的网络流量。可加载的内核模块能够显着地减少VM环境转换的开销。
虚拟网络设备发挥作用的位置
虚拟网络设备可以发挥作用的位置很多。例如,您可以将一个不依靠专用硬件而执行大量CPU密集处理的设备虚拟化。Web应用程序防火墙(WAF)和复杂的负载均衡器就是很好的例子(它们一般是作为Apache Web服务器或者作为Squid反向代理服务器的可加载模版实现,也就不足为奇了)。
同时,如果您正计划部署多租户云,那么将网络装置作为单击即可部署的乐高积木组件所获得的灵活性可能不仅仅可用于证明低于标准的性能。而如果您是按您用户实际使用的VM/CPU来计费的话,由于这种情况下您将不需要考虑他们所使用的CPU有多少,因此这一点会显得更为突出。
当防火墙和路由功能在每个虚拟机管理程序中作为虚拟交换机的一部分而实现时,虚拟化网络也会发挥作用。这可能会导致虚拟机之间出现最优的流量流(不管它们是否属于同一个IP子网),同时也能解决流量长号问题。可惜,似乎Cisco仍然是唯一使用Virtual Ethernet Module (VEM)功能来扩展VMware虚拟机管理程序交换机的供应商。
虽然有许多的安全解决方案已经部署了VMsafe API,但是目前我所知道的网络设备(包括VMware的vShield Edge)仍依靠虚拟机来转发虚拟(或物理)LAN中的流量。