什么叫网络虚拟化?先上两张简单粗暴的图。
所有的通信应用无非就是两部分组成:计算和网络。这两者关系密不可分,但两者关系严重缺乏对称性,网络一直拖累着计算。
4G网络RAN将会不断进化,据说,未来的4G网络空口速率将是现在的10倍。随着智能硬件的爆发,大量的应用接入4G网络,人们的流量需求如同海啸般汹涌而至,我们似乎赶上了好时代。不过,传统的通信网络里,每一类服务对应基于专用集成电路的带有专用处理器的专用服务器。网络里的设备很多,但是,这些家伙就像霸道总裁的办公室,仅供总裁专用,不管他在与不在,位置都占在那里,谁也不敢冒然挪用。
这样下去,网络会严重拖计算的后腿。于是,有人想到了虚拟化。
或者,可以这么理解,服务器觉得老这样拖着网络跑不是办法,迟早会被累死,就开始向网络扔砖头了!
专用的硬件对应专用的服务,这样的花费是昂贵的,为了节省成本,我们得想想物尽其用。
想想你有一栋超级大的空置的公寓,你想出租,但是每一位租客的需求是不一样的。这个时候,你想到了“虚拟化”。根据租客的需求,把这栋公寓虚拟化成不同的建筑风格。于是,你对租客1说,“我有两栋公寓要出租,你喜欢红色那一栋还是蓝色那一栋?”。然后你对租客2说,“我有三栋公寓要出租,大、中、小,你喜欢哪一栋?”。接着租客3。。。 继续忽悠。。。 然后,所有的租客都住进了你的虚拟公寓,你按住宿时间和使用空间来收租金。
2012年10月,13家运营商发起在ETSI组织下正式成立网络功能虚拟化工作组,即ETSI ISG NFV,致力于实现网络虚拟化的需求定义和系统架构制定。
谈到虚拟化,首先得了解什么是虚拟化技术?最常用的虚拟化技术有操作系统中内存的虚拟化,实际运行时用户需要的内存空间可能远远大于物理机器的内存大小,利用内存的虚拟化技术,用户可以将一部分硬盘虚拟化为内存,而这对用户是透明的。又如,可以利用虚拟专用网技术(VPN)在公共网络中虚拟化一条安全,稳定的“隧道”,用户感觉像是使用私有网络一样。
NFV就是基于大型共享的OTS(Off-The-Shelf,成品)服务器,通过软件定义的方式,探索网络实体的虚拟化使用。在NFV中使用的虚拟机(Virtual Machines,VMs)技术是虚拟化技术的一种。
基于软件定义的虚拟机部署成本低,而且可以快速适应网络需求变化。虚拟机就像是将所有能想到的东西都放在一台物理服务器(physical server)上,有了云计算和虚拟化,那些冗余的服务器都可以部署在独立的物理服务器上,不但可以并行处理,满足网络峰值需求,还可以根据网络需求随时释放资源,方便部署,利于故障管理,快速升级,快速满足市场需求。
NFV技术颠覆了传统电信封闭专用平台的思想,同时引入灵活的弹性资源管理理念,因此,ETSI NFV提出了突破传统网元功能限制、全新通用的NFV架构下图所示。
NFV技术主要由3个部分构成:VNF(虚拟网络层,Virtualized Network Function)、NFVI(网络功能虚拟化基础设施NFVI,NFV Infrastructure)和MANO(NFV管理与编排,Management and Orchestration)。
(1)虚拟网络层是共享同一物理OTS服务器的VNF集。对应的就是各个网元功能的软件实现,比如EPC网元、IMS网元等的逻辑实现。
(2)NFVI,你可以将它理解为基础设施层,从云计算的角度看,就是一个资源池。NFVI需要将物理计算/存储/交换资源通过虚拟化转换为虚拟的计算/存储/交换资源池。NFVI映射到物理基础设施就是多个地理上分散的数据中心,通过高速通信网连接起来。
(3)NFVMANO。基于不同的服务等级协议(Service Level Agreements ,SLAs),NFVMANO运营支撑层负责“公平”的分配物理资源,同时还负责冗余管理、错误管理和弹性调整等,相当于目前目前的OSS/BSS系统。
这样一来,现在的移动通信网络结构就变成了这样:
上图顶部的VNF对应了网元功能的逻辑实现,比如,由多个VNF组成的VNF-FG(VNF Forwarding Graph)定义了LTE网络服务。
那么软件定义网络(SDN)和NFV又有什么关系呢?
NFV负责各种网元的虚拟化,而SDN负责网络本身的虚拟化(比如,网络节点和节点之间的相互连接)。我们先来看看一个典型的网络结构图。
如上图,一个网络由网络节点和节点间的链路组成。每一个节点都有一个控制面和与其它节点交换的网络信息。在上图中,右边的H节点获知一个新的网络(10.2.3.x/24)存在,现在它需要将这一信息告诉给网络中的其它节点。然而,节点H只和节点F和G直接相连,节点H通过链路状态通告(Link State Advertisements ,LSAs)通知节点F和G,F和G再将信息传递给它们的邻近节点,最终该消息传达到整个网络。这样,网络内每个节点都会更新自己的路由表,以确保数据可以传送到网络10.2.3.x/24。
如果节点C和E之间的链路中断,尽管C和E知道C-E链路中断,但节点A并不知道,节点A会继续通过C-E链路向网络10.2.3.x/24传送数据包。由于节点的“近视”,导致数据堆积在该节点,这需要花一些时间来向整个网络传送网络状态更新信息和完成纠错。网络越大,这种情况就越容易发生。
我们再来看看节点G,它由控制面(control plane)和数据面(data plane)组成。为了适应快速更新,控制面基本上是基于软件的,这实际上意味着控制消息的处理时长比基于硬件的逻辑单元(比如,数据面)要慢5到10倍。一直以来,我们仅要求控制面能够灵活更新,但对时延要求并不是太高。相对于数据面来讲,时延要求较高,我们希望数据包能够传送得越快越好,所以它必须是基于硬件来实现的。尽管基于软件实现的控制面能满足目前的要求,但随着设备的大量接入,特别是物联网的应用,控制面的时延也需要进一步提升。
软件定义网络(SDN)负责分离控制面和数据面,将网络控制面整合于一体。这样,网络控制面对网络数据面就有一个宏观的全面的视野。路由协议交换、路由表生成等路由功能均在统一的控制面完成。实现控制平面与数据平面分离的协议叫OpenFlow,OpenFlow是SDN一个网络协议。如下图所示:
从上图中,我们可以看到,首先需要通过OpenFlow将网络拓扑镜像到控制面,控制面初始化网络拓扑,初始化完成后,控制面会实时更新网络拓扑。
控制面完成初始化后,会向每个转发节点发送转发表,根据转发表用户数据在网络内传送。假设现在节点H获知新的网络 (10.2.3.x/24)。节点H将通过OpenFlow告知控制面,因为控制面统领全局,它可以快速的为每一个转发节点创建新的路由表,这样用户数据就可以传送到这个新网络。