一、网络虚拟化及SDN简介
1.1 Network Virtualization(网络虚拟化)
网络虚拟化(以下简称NV)是一种提高网络灵活性和提高网络资源利用率的技术方案。当今网络以“尽力而为”作为服务模型,而它在安全性、移动性、服务质量(QoS)等方面都面临严峻挑战。
特别是在网络部署和网络维护上面的问题凸显。
在网络部署上:我们知道在传统网络领域,一个网络的部署必须依赖一套底层的网络硬件设备,而不同的用户往往有不同的布网需求,这就要求我们要有十分庞大的硬件部署来满足用户的网络需求。毫无疑问,这样的方式会使网络部署费用极大上升,同时还会极具浪费网络资源。
在网络维护上:如果一个底层硬件设备故障,很有可能造成整个网络瘫痪,传统的网络架构无法及时的解决这样的故障问题,往往需要长时间的排查、更换和调试硬件设备。另外,在我们需要为网络增加节点或硬件设备时,大量的配置调试工作又极大的提高了升级维护成本。
基于这些问题NV应运而生了,它利用虚拟化技术将网络硬件设备虚拟化,通过软件采用切片的方式将一个具体的物理网络抽象成为多个虚拟网络,供多个用户使用,用户之间相互隔离,就像他们各自铺设了一个实际的物理网络一样(图1)。这样为用户极大的降低了网络部署成本。在升级维护方面,只需要用软件的方式就可以轻松的改变网络来满足自己的需求。
图1
在NV领域,核心的问题就是虚拟网络映射问题,即决定虚拟网络节点或链路所映射的物理网络节点或链路。在映射问题上,有三个指标:
实际上,虚拟网络映射问题是一个资源分配问题,资源分配的问题的核心就是要使资源得到高效利用。在虚拟网络映射问题上,请求接受率越高,表示一个物理网络资源利用率越高,那么运营商在固定成本下所获得的收益也就越高。所以一个高接受率的算法一定是受欢迎的,它既可以节约资源也可以提高收益。
1.2 SDN(Soft Defined Network)
SDN的出现同样是解决了网络骨化问题,但它解决的是控制与转发分离问题,即解决了底层物理硬件的管理问题。实际上,人们为了解决网络骨化问题、提高网络灵活性提出了三个解决方案SDN 、NV、NFV(Network Functions Virtualization),三者解决了网络骨化问题的不同方面。SDN在物理层面上使得硬件的管理更加容易,NV在网络转发层面上使得物理硬件可以允许多租户模式,NFV(网络功能虚拟化)使得防火墙、负载均衡这类网络功能得以从硬件上脱离,可以供用户便携配置。
二、SDN及NV相结合
那么要真正解决网络骨化问题只有将三者结合才能形成一个支持智慧网络的完整系统。那么本文关注SDN与NV的融合问题。图2是将SDN和NV结合的架构图,Network Hypervisors层是NV存在的架构层,它介于SDN控制器和南向接口层之间,负责将Infrastructure(物理硬件层)的网络抽象提供给上层用户使用。这与我们所理解传统意义的SDN架构并不大相同,可以说它是下一代的SDN网络架构。
图2
那么言归正传,本文想阐述一种在SDN框架内的NV映射思路,在传统NV领域,在虚拟化资源时往往是静态划分,即给一个虚拟网络分配固定的资源,无论用户使用率如何,资源划分不会改变。这样其实导致的是另一种形式的资源分配“骨化”,例如以带宽资源为比喻,一个用户在某个时刻需要100Mbps的带宽,而大部分时间所需带宽是远远小于这个数字的,那么用户只能不得已申请100Mpbs的带宽资源,这不仅提高了用户的成本,这种静态划分使得闲置资源无法被利用,浪费了资源。另一个方面,在SDN上的NV不仅要考虑链路节点资源分配,还要考虑控制器资源分配。那么在SDN于NV结合之后,本文从内存动态分配技术得到灵感,提出将网络资源动态化分配,摆脱“骨化”状态。示意图如图3图4
图3
图4
图3表示传统NV分配方式它只能把资源固定分配,例如现在资源量是100,传统NV在分配完两个资源需求量为50的网络后就无法再接受虚拟网络分配请求。而在动态分配后,如图4,却可以接受四个资源需求量为50的网络请求(图3的直线表示固定分配,图4的曲线表示动态分配即每个虚网的资源区可以根据实际需求动态变化)。这样就大大提高了我们网络的接受率。
其实,在动态分配资源之后肯定会出现资源分配冲突问题,即但所有网络需要资源同时达到最大值时,总网络资源数将不够分配,那么这种问题必然导致用户服务质量降低,是不被允许的。笔者也考虑了这个问题,那么提出一种控制器、节点、链路资源迁移的思路。如图5所示。
图5
图上的节点可以代表底层网络硬件设备如:交换机,也可表示SDN的控制器资源。绿色的节点表示虚拟网络节点,用蓝线所连接的表示它所对应的物理节点。红色节点表示备用节点,即当网络资源分配冲突时,供资源迁移所用节点。例如,现在A节点发生资源冲突,对于图中的VN来说,他需要把a节点的资源进行迁移以保证网络可用性。首先我们考虑,将a向A的周边节点(非备用节点如:E、D)迁移。当周边节点不能够承受迁移时再考虑将a迁向备用节点F。这么做的原因是考虑到,为了保证备用节点的可用性,若一开始就考虑迁移向备用节点,在冲突结束后必然要回迁,每次迁移时是要有代偿的,这就增加了网络迁移的代偿。如果是先考虑周边节点,在迁移结束后完全不用回迁,这样就降低了代偿。
原文出处:http://xilinx.eetrend.com/news/10623