大数据技术与应用
上QQ阅读APP看书,第一时间看更新

3.4 网络虚拟化

随着计算虚拟化技术和存储虚拟化技术的日渐成熟,网络虚拟化成为又一个热点。简单地讲,网络虚拟化是指把逻辑网络从底层的物理网络分离开来,包括网卡的虚拟化、网络的虚拟接入技术、覆盖网络交换,以及软件定义的网络(SDN/OpenFlow)等。 

网络虚拟化的概念已经产生比较久了,VLAN、VPN和VPLS等都可以归为网络虚拟化的技术。在云计算的发展中,虚拟化技术一直是重要的推动因素。作为基础构架,服务器和存储的虚拟化已经发展得有声有色,而同作为基础构架的网络却还是一直沿用老的套路。在这种环境下,网络确实期待一次变革,使之更加符合云计算和互联网发展的需求。在云计算的大环境下,网络虚拟化包含的内容有了很大增加(如动态性、多租户模式等)。 

3.4.1 网卡虚拟化

多个虚拟机共享服务器中的物理网卡,需要一种机制既能保证I/O的效率,又能保证多个虚拟机共享使用物理网卡。I/O虚拟化的出现就是为了解决这类问题。I/O虚拟化包括从CPU到设备的一揽子解决方案。 

从CPU的角度看,要解决虚拟机访问物理网卡等I/O设备的性能问题,能做的就是直接支持虚拟机内存到物理网卡的DMA操作。Intel的VT-d技术及AMD的IOMMU技术通过DMA Remapping机制来解决这个问题。DMA Remapping机制主要解决了两个问题,一方面为每个VM创建了一个DMA保护域并实现了安全的隔离,另一方面提供一种机制将虚拟机的物理地址翻译为物理机的物理地址。 

从虚拟机对网卡等设备访问角度看,传统虚拟化的方案是虚拟机通过Hypervisor来共享地访问一个物理网卡,Hypervisor需要处理多虚拟机对设备的并发访问和隔离等。具体的实现方式是通过软件模拟多个虚拟网长(完全独立于物理网卡),所有的操作都在CPU与内存进行。这样的方案满足了多租户模式的需求,但是牺牲了整体的性能,因为Hypervisor很容易形成一个性能瓶颈。为了提高性能,一种做法是虚拟机绕过Hypervisor直接操作物理网卡,这种做法通常称为PCI pass through,VMware、XEN和KVM都支持这种技术。但这种做法的问题是虚拟机通常需要独占一个PCI插槽,不是一个完整的解决方案,成本较高且扩展性不足。 

最新的解决方案是物理设备(如网卡)直接对上层操作系统或Hypervisor提供虚拟化的功能,一个以太网卡可以对上层软件提供多个独立的虚拟的PCIe设备,并提供虚拟通道来实现并发访问,这些虚拟设备拥有各自独立的总线地址,从而可以提供对虚拟机I/O的DMA支持。这样一来,CPU得以从繁重的I/O中解放出来,能够更加专注于核心的计算任务(如大数据分析)。这种方法也是业界主流的做法和发展方向,目前已经形成了标准。 

3.4.2 虚拟交换机

在虚拟化的早期阶段,由于物理网卡并不具备为多个虚拟机服务的能力,为了将同一物理机上的多台虚拟机接入网络,引入了虚拟交换机(Virtual Switch)的概念。通常也称为软件交换机,以区别于硬件实现的网络交换机。虚拟机通过虚拟网片接入到虚拟交换机,然后通过物理网卡外连到外部交换机,从而实现了外部网络接入,例如VMware vSwitch见图3-6)就属于这一类技术。 

978-7-111-53304-7-Chapter03-6.jpg

图3-6 VMware vSwitch结构图 

这样的解决方案也带来一系列的问题。首先,一个很大的顾虑就是性能问题,因为所有的网络交换都必须通过软件模拟。研究表明:一个接入10~15台虚拟机的软件交换机,通常需要消耗10%~15%的主机计算能力;随着虚拟机数量的增长,性能问题无疑将更加严重。其次,由于虚拟交换机工作在第二层,无形中也使得第二层子网的规模变得更大。更大的子网意味着更大的广播域,对性能和管理来说都是不小的挑战。最后,由于越来越多的网络数据交换在虚拟交换机内进行,传统的网络监控和安全管理工具无法对其进行管理,也意味着管理和安全的复杂性大大增加了。 

3.4.3 接入层的虚拟化

在传统的服务器虚拟化方案中,从虚拟机的虚拟网卡发出的数据包在经过服务器的物理网卡传送到外部网络的上联交换机后,虚拟机的标识信息被屏蔽掉了,上联交换机只能感知从某个服务器的物理网卡流出的所有流量,而无法感知服务器内某个虚拟机的流量,这样就不能从传统网络设备层面来保证服务质量和安全隔离。虚拟接入要解决的问题是要把虚拟机的网络流量纳入传统网络交换设备的管理之中,需要对虚拟机的流量做标识。 

3.4.4 覆盖网络虚拟化

虚拟网络并不是全新的概念,事实上人们所熟知的VLAN就是一种已有的方案。VLAN的作用是在一个大的物理二层网络里划分出多个互相隔离的虚拟三层网络,这个方案在传统的数据中心网络中得到了广泛的应用。这里就引出了虚拟网络的第一个需求—隔离;VLAN虽然很好地解决了这个需求,然而由于内在的缺陷,VLAN无法满足第二个需求,即可扩展性(支持数量庞大的虚拟网络)。VLAN使用一个12位的二进制数字来标识子网,即子网的数量最多只有4096个。而随着云计算的兴起,一个数据中心需要支持上百万的用户,每个用户需要的子网可能也不止一个。在这样的需求背景下,VLAN已经远远不敷使用,需要重新思考虚拟网络的设计与实现。当虚拟数据中心开始普及后,其本身的一些特性也带来对网络新的需求。物理机的位置一般是相对固定的,虚拟化方案的一个很大特性在于虚拟机可以迁移。当虚拟机的迁移发生在不同网络和不同数据中心之间时,对网络产生了新的要求,比如需要保证虚拟机的IP在迁移前后不发生改变,需要保证虚拟机内运行在第三层(链路层)的应用程序也在迁移后仍可以跨越网络和数据中心进行通信等。这又引出了虚拟网络的第三个需求——支持动态迁移。 

覆盖网络虚拟化(Network Virtualization Overlay)就是应以上需求而生的,它可以更好地满足云计算和下一代数据中心的需求。覆盖网络虚拟化为用户的虚拟化应用带来了许多好处(特别是对大规模的、分布式的数据处理),包括:①虚拟网络的动态创建与分配;②虚拟机的动态迁移(跨子网、跨数据中心);③一个虚拟网络可以跨多个数据中心;④将物理网络与虚拟网络的管理分离;⑤安全(逻辑抽象与完全隔离)。 

3.4.5 软件定义的网络(SDN) 

OpenFlow和SDN尽管不是专门为网络虚拟化而生,但是它们带来的标准化和灵活性却给网络虚拟化的发展带来无限可能。OpenFlow起源于斯坦福大学的Clean Slate项目组,其目的是要重新发明因特网,旨在改变现有的网络基础架构。2006年,斯坦福的学生Martin Casado领导的Ethane项目,试图通过一个集中式的控制器,让网络管理员可以方便地定义基于网络流的安全控制策略,并将这些安全策略应用到各种网络设备中,从而实现对整个网络通信的安全控制。受此项目启发,研究人员发现如果将传统网络设备的数据转发(Data plane)和路由控制(Control plane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置,这将为网络资源的设计、管理和使用提供更多的可能性,从而更容易推动网络的革新与发展。 

OpenFlow可能的应用场景包括:①校园网络中对实验性通信协议的支持;②网络管理和访问控制;③网络隔离和VLAN;④基于Wi-Fi的移动网络;⑤非IP网络;⑥基于网络包的处理。 

3.4.6 对大数据处理的意义

相对于普通应用,大数据的分析与处理对网络有着更高的要求,涉及从带宽到延时,从吞吐率到负载均衡,以及可靠性、服务质量控制等方方面面。同时随着越来越多的大数据应用部署到云计算平台中,对虚拟网络的管理需求就越来越高。首先,网络接入设备虚拟化的发展,在保证多租户服务模式的前提下,还能同时兼顾高性能与低延时、低CPU占用率。其次,接入层的虚拟化保证了虚拟机在整个网络中的可见性,使得基于虚拟机粒度(或大数据应用粒度)的服务质量控制成为可能。覆盖网络的虚拟化,一方面使得大数据应用能够得到有效的网络隔离,更好地保证了数据通信的安全;另一方面也使得应用的动态迁移更加便捷,保证了应用的性能和可靠性。软件定义的网络更是从全局的视角来重新管理和规划网络资源,使得整体的网络资源利用率得到优化利用。总之,网络虚拟化技术通过对性能、可靠性和资源优化利用的贡献,间接提高了大数据系统的可靠性和运行效率。