面对服务器虚拟化的热潮,显然数据中心网络的技术不会停滞不前,为了满足服务器虚拟化的顺利部署,数据中心网络也迎来了新的变革,涌现出一批新兴的网络技术,以满足服务器虚拟化的需求。
服务器虚拟化技术在提升物理服务器CPU利用率、降低数据中心能耗、方便数据中心管理等方面有诸多优势,虚拟机就是虚拟化技术的具体应用形式。虚拟化技术是运行在内存中的一个操作系统实例,它与服务器的物理网卡没有直接的联系,对外的数据交互是通过Hypervisor模拟出来的网络接口实现的。服务器的虚拟化有这么多的好处,却给连接服务器的网络带来了难题。
举个最简单的例子,原来的服务器是一个网卡一个IP地址,通过一条链路连接到网络中,而现在通过虚拟化可以虚拟出很多个IP地址,而这些IP地址实际物理上还是通过一条链路连接到网络中,在同时工作时流量会全部挤在这一条链路上,多个虚拟化应用和网络端口之间形成了多对一的关系,这样就很难在单个端口上下发管理策略,增加了网络管理的复杂度。
虚拟桥接网络技术兴起
当服务器部署了虚拟化后,网络端口和服务器之间的对应关系由一对一变成了多对一,网络技术首先要解决这个多对一的对应问题。显然已经有人想到了解决的办法,那就是VEB技术。VEB(Virtual Ethernet Bridges,即虚拟桥接网络),用于连接虚拟机到接入网络设备的网络服务,VEB既可以通过软件在 VMM中实现,也可以通过硬件支持SR-IOV特性的网卡完成。
软件VEB指的是Hypervisor内部的虚拟交换机,目前主要指的就是Vmware的VSWITCH。VSWITCH从物理网卡上接收以太网报文,根据VMM下发的虚拟机MAC与VSWITCH逻辑端口对应关系表来转发报文。软件VEB节省了接入层网络设备,对现有网络标准兼容性好,但在运行的过程中会耗费CPU资源,也缺乏网络控制策略的实施能力,因此在实际应用中更偏向于使用硬件VEB技术。基于硬件实现的VEB技术是将软件VEB的实现移植到服务器物理网卡上,通过网卡硬件改善VSWITCH占用CPU资源而影响虚拟机性能的问题。到后来HP又提出将虚拟交换机的实现移植到硬件交换机上,实现虚拟机之间的 硬件换 。
采用这种方法,通常只需要对网卡驱动、VMM桥模块和外部交换机的软件做很小的改动,从而实现低成本方案目标,对当前网卡、交换机、现有的以太网报文格式和标准影响最小,这种方式已经得到了绝大多数网络厂商和服务器厂商的认可。不过这种方式需要在网络中引入新的支持VEPA的交换机设备,增加了投入成本。目前来看,针对服务器虚拟化应用最佳的方案就是部署支持VEPA的硬件交换机。
对网络设备性能要求更高
除了部署VEPA交换机之外,还需要数据中心网络做到更多。服务器部署虚拟化后整体运行效率提高,但却加大了网卡、网络的承载能力。原来的服务器CPU利用率普遍在20%左右,部署虚拟化之后一般都可达80%左右,网卡的速率也会加大,这增加了网络的压力。原来连接一台服务器的千兆网络端口可能只需要处理200M的平均流量,现在则处理800M的流量,这就需要接入网络设备的性能比较高。
很多网络设备虽然端口是千兆、万兆,但并不代表其有能力完全将这个线速流量转发出去,在网络设备内部会有很多可能产生拥塞的点,所以在部署虚拟化时,应该对未来的流量提升做好评估,现有的网络设备能否满足要求。对于服务器的网卡也一样,虽然标称是千兆网卡甚至万兆网卡,但是网卡是无法达到线速的,而且对突发流量的应对能力不足,这时就需要将压力传递到网络设备上,可以在网络设备和网卡上都开启流控功能,当服务器网卡能力不足时,可以及时发出流量,网络设备收到流控报文后减缓流量发送。
开启多网卡同时工作
服务器部署虚拟化后,一台服务器往往要承载多种应用,而服务器仅通过一条链路连接到网络设备上显然是不行的。现在的服务器都支持双网卡或多网卡同时工作,因此一般要在服务器上开启多网卡同时工作。这些网卡和网络设备如何互联,实现流量的负载分担,满足多网卡同时工作,都给网络设备出了难题。现在网络设备和网卡之间普遍采用聚合方式、NLB、单链路等方式实现互联。
虚拟化技术造成了多对一的连接关系,就要求网络设备的运行可靠性要高,因为就算是数据中心网络里最常见的一个链路端口出现了UP/DOWN,也可能会导致数十个应用无法运行,影响很大。因此要在网络部署聚合、LLDP、DLDP等协议,实时检测链路状态、邻居状态,一旦有问题流量可以切换到备用链路上,保持应用不中断。部署虚拟化之后,传统的二层环路协议很难发挥出作用,需要尝试新的数据中心二层协议技术。
服务器的虚拟化应用给数据中心网络带来了冲击,原有的数据中心网络已经无法满足应用需求,解决了服务器虚拟化多对一的问题只是完成了有无的问题,如何为服务器的虚拟化提供更好的网络服务,才是未来数据中心网络技术的发展方向。
延伸阅读:室内布线电缆未来的发展趋势
家里拉了假宽带?怎样识别真正的光纤宽带!