3.1.2 计算虚拟化
操作系统软件的诸多创新为计算虚拟化铺平了道路(Rosenblum,2004)。多任务和多线程是操作系统最早的两项创新,它们显著提高了计算机的效率。多任务处理的基本思想是软件应用程序包含多项可独立调度实体的任务。随着单一软件进程中的逻辑变得越来越复杂,操作系统(OS)开发人员在操作系统进程中创建了多项任务。多任务易让人产生并行任务并发执行的错觉。
操作系统的另一项创新是将系统划分为多个独立操作系统。人们创建了一个名为系统管理程序(Hypervisor)的新型监控软件层,用于支持多个操作系统作为独立任务运行。反过来,这些操作系统使用多任务、多线程在多个用户之间实现机器的高效共享。这样就可以创建多个虚拟系统或虚拟机(VM,VirtualMachine)。每台虚拟机都有自己独立的执行环境。
多处理是操作系统另一项重要创新。多处理支持多个处理器(CPU)使用多任务、多线程功能来实现单层网络进程的真正并发。多处理允许将两项或多项任务和线程分配给同时运行的不同处理器(CPU)。Silberschatz等(2012)的著作是非常好的操作系统(OS)原理通用参考书。
3.1.3 网络功能虚拟化
如本章前面所述,网络功能在传统上是在专用供应商专有系统(硬件和软件)中实现的。我们将实现第三层或第三层组网功能的系统分别称为交换机或路由器。通常将实现其他组网功能的系统称为网络设备。典型的企业网络拥有诸多交换机、路由器和设备,有时在单个位置拥有多种此类系统。
通常情况下,网络和计算虚拟化技术支持在软件中实现网络功能,该软件在由服务器(基于x86硬件和 Linux操作系统)构成的通用计算机网络上执行。虚拟机为各种网络功能的软件实现提供执行环境。每台虚拟机都有一个逻辑端口,其特性类似于交换机、路由器或设备上的物理端口。
逻辑端口可以像物理端口一样进行联网。操作系统能够实现虚拟路由器(vR,virtualRouter)或虚拟交换机(vS,virtualSwitch),以支持网络链路的建立,该网络链路可将逻辑端口与同一服务器上其他逻辑端口或物理端口连接起来。在逻辑端口处终止的网络连接是3.1.1节中描述的虚拟叠加连接,我们将采用这种方式实现的网络功能称为虚拟化网络功能(VNF,VirtualizedNetworkFunction)。
图 3.4说明了在虚拟机上运行的用于实现网络连接(虚线)的 VNF,它可用于为给定源 - 目的地对承载分组流。VNF-1和 VNF-2表示在两台不同虚拟机上运行的网络应用软件。数据中心架构(用于以太网 /IP转发)和服务器提供基础设施,采用商用现货(COTS)硬件构建。例如,VNF-1可以是边缘路由器,VNF-2可以是用于对业务流进行故障诊断的网络分析器。
图3.4实现⽹络连接的VNF
大多数网络功能可以由商用现货平台(如 x86服务器)上运行的软件来实现。由于通用计算机在实现分组转发功能方面的效率较低,因而对于吞吐量需求量高的 VNF来说,NFV可能变得不切实际。总速率低于 10 Gbit/s的网络功能通常可以轻松实现虚拟化。在编写本书时,总速率高于 50Gbit/s的 VNF不适合进行虚拟化。但是,服务器技术和分组处理技术正在迅速发展。我们预计随着时间的推移,总速率的限制将会升至 50Gbit/s。在大型服务提供商网络中,除核心路由器(又称 P路由器)之外的所有 VNF都可以进行虚拟化。
VNF可以分为两大类:主机 VNF 和中间盒 VNF。主机 VNF是数据分组流量的源点和汇聚点,发起或终止最终用户网络连接。主机 VNF的实例如下。
(1) 域名服务(DNS,DomainNameService)。
(2) 远程用户拨号认证系统(RADIUS,RemoteAuthenticationDialInUserService)。
(3) 超文本传输协议(HTTP,HyperTextTransferProtocol)客户端。
顾名思义,中间盒 VNF不会终止最终用户网络连接,它们位于网络连接的中间。数据分组进出网络,这些 VNF很可能会对数据分组头进行修改。第二层交换或第三层路由是使用中间盒VNF实现的两种最常见功能。中间盒 VNF的实例如下。
(1) 用户边缘(CE,CustomerEdge)路由器。
(2) 提供商边缘(PE,ProviderEdge)路由器。
(3) 防火墙。
(4) 安全网关。
(5) 代理。
(6) 网络地址转换(NAT,NetworkAddressTranslation)。
(7) 负载均衡器。
(8) 广域网(WAN)加速。
(9) 服务架构演进(SAE,ServiceArchitectureEvolution)网关。
(10) 缓存 [ 内容分发网络(CDN)]。