网络功能虚拟化:NFV架构、开发、测试及应用
上QQ阅读APP看书,第一时间看更新

1.3 NFV技术基础

NFV的目标是降低运营商成本的同时提升服务的灵活性和资源的利用率。近几年,标准服务器技术、虚拟化技术、云计算、SDN、开源项目的发展都推进了NFV技术的产生和应用。

1.3.1 标准服务器

对网络功能虚拟化而言,行业标准服务器的使用是一个关键因素。网络功能虚拟化借助了IT行业的规模经济效应。IT行业的标准服务器设备由标准IT组件(如X86架构)构成。标准服务器的一个共性是,在服务器内的组件可替换,并且有一个充分竞争的供应商市场。

近几年X86、ARM架构的快速发展使得服务器平台多CPU、多核、多线程等技术非常成熟,同时SR-IOV网卡的广泛应用,业务加速芯片(如加密、压缩)技术的逐渐支持使得网络转发和业务性能更高,充分利用这些技术有助于提高网络设备的性能。随着硬件技术的发展,通用芯片的计算能力越来越高,通用网卡的转发能力也越来越强(已经达到10 Gbit/s、40 Gbit/s等)。

Intel DPDK(Intel Data Plane Development Kit,Intel数据平面开发套件)是一个专为Intel架构处理器提供的多核CPU数据平面开发套件。它主要用于快速地包处理,可以显著提升数据包处理性能,并且支持Intel最新网卡的硬件虚拟化操作。Intel DPDK源码开放,因此,网络厂商可以利用DPDK技术来提高网络设备的转发性能。

上述这些技术的发展使得标准服务器能够提供更高性能的网络应用。另外,标准服务器可用行业标准件组装,价格相对于小型机较低;这些设备的功耗更低,有助于服务器的大规模部署。因此,标准服务器的发展为NFV走出实验室和大规模商用奠定了坚实的基础。

1.3.2 虚拟化技术

在计算机科学中,虚拟化技术是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体间不可切割的障碍,使用户可以不受资源的实现、地理位置、物理包装和底层资源的物理配置的限制。

20世纪60年代,虚拟化技术就在美国的计算机学术界开始了萌芽。1959年,克里斯托弗(Christopher Strachey)发表了一篇名为《大型高速计算机中的时间共享(Time Sharing in Large Fast Computers)》的学术报告,这篇文章被认为是虚拟化技术最早的论述。

1965年IBM公司发布了IBM7044以及System/360 Model 67和TST分时共享系统,第一次在商业系统中实现虚拟化。随后虚拟化技术一直只在大型机上应用,而在PC服务器的X86平台上仍然进展缓慢。

随着X86处理器性能的提升和应用的普及,1999年VMware在X86平台上推出了可以流畅运行的商业虚拟化软件VMware Workstation,使得X86系统转变成通用的共享硬件基础架构。从此,虚拟化技术来到PC服务器的世界,虚拟化技术在X86平台上得到了突飞猛进的发展。

随后,虚拟化技术进入爆发期。2000年美国惠普公司(HP)进军虚拟化;IEEE提出VPN(Virtual Private Network,虚拟专用网)标准草案;2005年XenSource公司发布Xen3.0;2007年,Red Hat所有平台和管理工具都包含了Xen的虚拟化功能;2008年,Microsoft(微软)推出Hyper-V;2008年9月,红帽(Red Hat)收购了一家名叫Qumranet的以色列小公司,选择了一个新兴的、基于内核的虚拟化技术KVM(Kernelbased Virtual Machine,基于内核的虚拟机)。

2013年,dotCloud发布了Docker容器虚拟化的开源项目。Red Hat在RHEL6.5产品中支持Docker;Google也在PaaS产品中广泛应用Docker。

虚拟化技术的优势很多,主要包括以下几个方面。

(1)虚拟化技术实现了资源的最优利用。虚拟化技术可以实现在一台物理服务器或一套硬件资源上虚拟出多个虚拟机,让不同的应用服务运行在不同的虚拟机上,在不降低系统顽健性、安全性和可扩展性的同时,可提高硬件的利用率,减少应用对硬件平台的依赖性,从而使得企业能够削减资金和运营成本,同时改善IT服务交付,而不用受到有限的操作系统、应用程序和硬件选择范围的制约。

(2)利用虚拟机与硬件无关的特性,按需分配资源,实现动态地负载均衡。当VM监测到某个计算节点的负载过高时,可以在不中断业务的情况下,将其迁移到其他负载较轻的节点或者在节点内重新分配计算资源。同时,执行紧迫计算任务的虚拟机将得到更多的计算资源,保证关键任务的响应能力。

(3)虚拟化带来系统自愈功能,提升系统可靠性。系统服务器硬件故障时,可自动重启虚拟机。消除在不同硬件上恢复操作系统和应用程序安装所带来的困难,其中任何物理服务器均可作为虚拟服务器的恢复目标,进而减少硬件成本和维护成本。

(4)提升系统节能减排能力。与服务器管理硬件配合实现智能电源管理;优化虚拟机资源的实际运行位置,达到耗电最小化,从而可为运营商节省大量电力资源,减少供电成本,节能减排。

(5)平台虚拟化提高了管控效率。硬件需要维护时,可以实现无停机快速批量地迁移应用,自动化快速在线补丁,而未虚拟化时需要迁移应用或者重新搭建应用,并且停机手动单个更新各种补丁。

Hypervisor是所有虚拟化技术的核心,它是运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。目前市场主要厂商及产品包括VMware vSphere、微软Hyper-V、Citrix XenServer、IBM PowerVM、Red Hat Enterprise Virtulization、Huawei FusionSphere、Xen、VirtualBSD等。

NFV利用虚拟化技术实现软硬件的解耦,也就是在标准物理服务器平台上,用软件实现网络功能。虚拟化技术实现了物理资源的逻辑抽象和统一表示。通过虚拟化技术可以提高资源的利用率,并能够根据用户业务需求的变化,快速、灵活地部署资源。因此,虚拟化是NFV的一个重要技术支撑。

1.3.3 云计算

目前,云计算没有一个统一的定义。维基百科上云计算的定义是:云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。云计算的核心思想是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。提供资源的网络被称为“云”。

1961年,图灵奖得主John McCarthy提出计算能力作为一种像水、电一样的公用事业提供给用户的思想。1999年,MarcAndreessen创建LoudCloud,这是第一个商业化的IaaS平台。2001年,Google CEO Eric Schmidt在搜索引擎大会上首次提出云计算(Cloud Computing)的概念。2005年,Amazon陆续推出在线存储服务S3和弹性计算云EC2等云计算服务。2007年10月,Google与IBM开始在美国大学校园,包括卡内基美隆大学、麻省理工学院及加州大学伯克利分校等,开设云计算课程。与此同时,云计算概念开始获得全球公众和媒体的广泛关注。2007年,戴尔成立数据中心解决方案部门,先后为WindowAzure、Facebook和Ask.com提供云基础架构。2008年,Gartner发布报告,认为云计算代表了计算的方向。同年,HP、Inter和Yahoo联合创建云计算试验台OpenCirrus,微软发布WindowsAzurePlatform云计算平台,思杰发布新的C3云中心产品系列。在我国, 2009年阿里软件在江苏南京建立首个“电子商务云计算中心”,中国移动云计算平台“大云”计划启动。2010年,微软正式发布Microsoft Azure云平台服务,并宣布90%员工将从事云计算和相关工作。渐渐地,云计算已经成为IT领域令人关注的话题,成为当前大型企业、互联网的IT建设正在考虑和投入的重要领域。

云计算是一种服务,类似于水电。云计算包括以下几个特征:基于虚拟化技术快速部署资源或获取服务;可以实现动态、可伸缩地扩展;按需求提供资源、按使用量付费;通过互联网提供海量信息的处理;用户可以方便地参与;形态灵活,聚散自如;降低用户终端的处理负担,并且可以降低用户对于IT专业知识的依赖。

云计算定义了三种服务模式,分别为基础设施即服务(Infrastructure-as-a-Service, IaaS)、平台即服务(Platform-as-a-Service,PaaS)以及软件即服务(Software-as-a-Service, SaaS)。有些人认为云计算还包括网络即服务(Network-as-a-Service,NaaS),但是NaaS服务模型还没有一个标准的定义,它一般在IaaS下提供。下面我们主要介绍前三种服务模式。

IaaS(基础设施即服务),通过互联网提供基础的计算资源,包括处理能力、存储空间、网络等,用户能从中申请到硬件或虚拟硬件,包括裸机或虚拟机,然后在上面安装操作系统或其他应用程序。IaaS公司包括Amazon、Microsoft、VMWare、Rackspace和Red Hat等。

PaaS(平台即服务),把计算环境和开发环境等平台作为一种服务通过互联网提供给用户,用户能从中申请到一个安装了操作系统以及支撑应用程序运行所需要的运行库等软件的物理机或虚拟机,然后在上面安装其他应用程序,但不能修改已经预装好的操作系统和运行环境。PaaS提供者有Google App Engine、Microsoft Azure、Force.com、Heroku、Engine Yard等。最近兴起的公司有AppFog、Mendix和Standing Cloud。

SaaS(软件即服务),通过互联网为用户提供软件及应用程序的一种服务方式。应用软件安装在厂商或者服务供应商那里,用户可以通过网络以租赁的方式来使用这些软件,而不是购买,比较常见的模式是提供一组账号密码。一些用作商务的SaaS应用包括Citrix的GoToMeeting,Cisco的WebEx,Salesforce的CRM、ADP、Workday和SuccessFactors。

1.3.4 软件定义网络(SDN)

SDN(Software Defined Network,软件定义网络)是一种新兴的网络架构,是网络虚拟化的一种实现方式。SDN利用将网络设备的控制层面和数据转发层面相分离的方式,实现了网络流量的灵活控制和集中式管理, 使网络变得更加智能。

SDN起源于美国斯坦福大学学生Casado M和他的导师McKeown N教授的研究项目Ethane。该项目试图通过设置一个集中式的控制器来达到让网络管理员可以方便地定义基于网络流的安全控制策略,并将这些应用到不同的网络设备中,从而实现对整个网络通信的安全控制。受到该项目技术的启发,McKeown N等人提出了最早的OpenFlow的概念并在2008年在ACM SIGCOMM发表了题为《OpenFlow:enabling innovation in campus networks》的论文。文中首次提出并详细介绍了OpenFlow的概念,即将传统网络设备的数据平面和控制平面两个功能模块相分离,通过集中式的控制器以标准化的接口对各种网络设备进行管理和配置。在此基础上,基于OpenFlow为网路带来的可编程特性,McKeown教授进一步提出了SDN最早的概念。

相对于传统网络,由于SDN实现了控制功能和数据平面的分离和网络的可编程,进而为更加集中化、精细化的控制奠定了基础。SDN相对于传统网络具有以下的优势和特性:

(1) SDN网络中,网络设备的控制权由集中的控制器管理,无须依赖底层网络设备(路由器、交换机、防火墙),屏蔽了来自底层网络设备的差异,避免了更改或者添加新业务时繁琐的配置,有利于新业务的快速部署。

(2)控制的集中化有利于从更宏观的角度调配网络资源,提高资源的利用效率。

(3)控制与转发分离,实施控制策略软件化,有利于网络的智能化、自动化和硬件的标准化。

(4)控制权完全对用户开放,用户可以自定义任何想实现的网络路由和传输规划策略,从而更加灵活和智能。

(5) SDN网络的可编程性,使得工程师可以在一个底层物理基础设施上加速多个虚拟网络,然后使用SDN控制器分别为每个网段实现QoS,从而扩大了传统差异化服务的程度和灵活性。

SDN技术将对基础设施层的网络设备的管理接口通过南向协议统一集中到了中心控制层上,中心控制层的SDN控制软件包含对底层网络设备的所有控制权限,同时又能够向上抽象出可编程接口,对应用层细分控制权限,使得底层的网络设备能够为应用层的不同应用呈现不同的网络表现状态,应用层不需要了解底层网络设备的细节,它能够解析控制层对底层网络的抽象即可。

总之,SDN可以说是对网络功能的一种重构,即将传统网络设备的封闭的结构打散,按照网络功能划分出不同的网络层次以形成统一、开放的网络架构。从另一个角度来说, SDN是对网络的再抽象,包括分布式状态的抽象、指令的抽象、转发的抽象,并以此来屏蔽底层的物理设施的实现细节。SDN将网络的智能从硬件转移到软件,用户不需要更新已有的硬件设备就可以为网络增加新的功能,控制功能的剥离和整合也让网络硬件设备变得更可靠,有助于降低设备购买和运营的成本。

1.3.5 开源软件

没有开源软件企业的崛起,像OPNFV这样的项目就无法生存。OPNFV搭建了NFV部署的开源平台。OPNFV是基于已存在的开源项目搭建的一个集成的、开放的平台,它允许网络设备提供商、运营商、平台提供商以及硬件提供商在这个平台上进行合作、创新。

OPNFV垂直整合各上游工程组件,包括OpenDaylight(具体内容见第3章)、OpenStack(具体内容见第4章)、KVM(具体内容见第5章)、Open vSwitch(具体内容见第5章)、Data Plane Development Kit(DPDK)等。

通过开源软件产业间的协作,开源项目为NFV提供一个研发与应用的公共基础,降低探索、测试和部署新技术的风险。开源项目是NFV发展的助推器。