目录
这部分主要对已有实际部署的、影响较大的几个SDN应用场景进行介绍与分析,主要从SDN在实验唇膏、网络虚拟化以及流量工程三个面的应用展开探讨。
一、SDN在网络试验平台中的应用
互联网的网络层和传输层基本架构并没有发生太大的变化,这种完全基于TCP/IP的传输层和网络层架构既促进了互联网的发展,也在某些方面逐渐成为了瓶颈。为了推动互联网体系架构发展,尤其是网络转发层面的创新,构建新型虚拟化试验床得到越来越高的呼声。SDN基础的出现,让学术界关于SDN建设未来网络试验床的项目已经越来越多。
1.1 GENI OpenFlow
1.2 OFELIA OpenFlow
1.3 RISE
1.4 TWAREN
1.5 FINE
二、基于SDN的网络虚拟化简介
网络虚拟化是指将底层网络中的硬件和软件资源进行整合,形成一个统一的管理实体,并通过虚拟资源与物力资源的映射机制使得多个逻辑虚网共享底层物理网络基础设施,是当前促进网络革新的技术之一。
传统的网络虚拟化技术大致可分为三类:虚拟局域网(VLAN)、虚拟私有网(VPN)以及虚拟路由转发(VRF)。
当前,VLAN技术广泛应用在以太网中用来切分多个广播域,该技术通过配置交换机边缘端口属性使得拥有相同VLAN ID号的边缘端口属于同一个VLAN,同时通过配置交换机内部端口属性使得多条虚拟链路可以复用(QUESTION)同一条物理链路,从而使得不同VLAN的数据报文可以通过一条无物理链路在多个交换机间传输(OK)。本质上,VLAN是一种从物理端口的维度将网络资源进行切分的虚拟化技术。
VPN通过隧道技术(QUESTION)将位于不同地点的站点(站点之间可以使任意类型网络)进行互联。依据报文在何种网络协议层被分装,VPN技术划分为一层VPN、二层VPN和三层VPN。本质上,VPN属于网络虚拟化中的链路虚拟化技术。
VRF通过在交换机/路由器中创建多个路由转发实例,每一个实例彼此独立且拥有独立的控制转发逻辑。VRF的实现方式有两种:一种利用软件的灵活性进行逻辑转发;另一种通过堆积硬件的方式,每一个转发实例都采用独立的硬件芯片。相比于VLAN和VPN,该技术可以实现更高层次的网络虚拟化,在VINI和Planetlab试验床中得到广泛应用。
在传统网络中,由于每个路由器或交换机都运行各自的控制转发逻辑,因此,对其进行虚拟化会涉及到分布式的操作,比较复杂。
SDN数据平面和控制平面分离且出现了基于协议的连接,因此可以通过在数据控制平面的连接中进行虚拟化简单的实现SDN网络虚拟切片。FlowVisor便是基于此模式,其核心思想是把网络流空间划分为多个分片,每个分片有一个SDN控制器进行管理,多个分片之间共享网络资源。
当前学术界的多种设计思路区别重要体现在“转换单元”位置的不同上,即实现物理网络资源与虚拟网络资源映射位置的不同。
(1)转换单元部署到一个独立的硬件设备上,作为交换机和控制器之间的协议代理,根据虚网的配置信息把不同的网络流量交付给相应的控制机和交换器处理。
(2)转换单元在交换机中实现,每个交换机连接到多个控制器,并根据交换机上的配置信息把相应的流交付给对应的控制器处理。
(3)转换单元在交换机中实现,与方案二(只包含一个openflow实例)不用的是,每个交换机鞥狗运行多个openflow实例,每个实例连接到一个控制器上,转换单元格努配置信息把流交付给相应的openflow实例。
(4)与上一步的不同在于,交换机把数据转发平面也进行平行分割,转换单元需要识别不同的转发端口(虚拟端口或物理端口)与风格后的转发平面的对应。
(5)两个转换单元协作完成SDN的网络虚拟化,相当于是把方案一和方案三综合,其中一个转换单元负责转发层面的虚拟化,另一个作为交换机与控制器的协议代理。
2.2网络虚拟化工具FlowVisor
2.2.1工作原理
FV是建立在OpenFlow至上的网络虚拟化工具,它可以将物理网络划分成多个逻辑网络从而实现网络切片。能够令管理员通过定义流规则的方式来管理网络,而非传统形式通过调整路由器和交换机配置的方式。FlowVisor也可以理解成一个特殊的OpendFlow控制器,部署在普通openflow控制器和交换机之间,成为二者的透明代理。普通openflow控制器与交换机之间通信的所有消息都将透过FlowVisor进行传送,因此FlowVisor能够根据虚妄规则进行消息的拦截、修改、转发等操作,而实现普通openflow控制器只能即受到其控制的虚网的流,并不知道这些流已经被FlowVisor进行了过滤操作。
类似于计算机操作系统能够使用指令集控制计算、存储资源,FlowVisor可以接到多个控制器,每个控制器控制一个网络切片。在使用FlowVisor实现对SDN的虚拟化切分过程中,可以部署多个FlowVisor来实现多级虚拟网络的管理,如图。
FlowVisor在设计过程中遵循如下两个原则:一方面,FlowVisor对控制器和交换机而言是透明的。另一方面,FlowVisor的虚网划分策略应该是灵活的、模块化的且可扩展的。另外,FV在设计过程中希望对如下几个字元氏县虚拟化。
(1)带宽:每个徐旺应该毒战一部分链路带宽,这就需要对链路带宽进行切分。
(2)拓扑:每个虚网要有自己的网络节点及其拓扑图。控制器通过openflow协议发现虚网中的节点和拓扑,经FV的过滤,每个控制器看到的网络拓扑都是不同的。
(3)流量:为了实现不同虚网的流量互不干扰,需要对流量进行抽象并管理,确保流量能够严格地隔离到一个特定切片。
(4)交换设备CPU:交换机和路由器包含的计算资源需要被划分,交换机对慢速路径的数据分组转发(如packet-in消息、Flow-mod消息等)、计数器更新、转发表更新需要消耗大量的CPU资源,如果没有适当的设备CPU划分,就可能影响其他虚网的正常工作。
(5)流表:如果没有流表隔离机制,一个虚网的数据分组转发策略可能会影响到另一个虚拟网中数据分组的转发。
FV在实现过程中采用基于流的虚拟化资源切分机制,可以在物理层、数据链路层、网络层以及传输层四个层面上(L1~L4)提供物理端口号、源/终端MAC地址、以太网类型、VLAN ID号、VLAN优先级、源/终端IP地址、IP数据分组优先级、传输层协议类型以及传输层源/终端端口号共12个维度的虚网划分和资源整合。作为底层物理资源的硬件抽象层,FV使用OpenFlow协议控制下层物理网络,并且为上层控制软件提供虚网操作接口。根据虚拟网流空间的配置信息,FV能够将上行信令迎神到对象的控制器中,并可以将下阿星信令进行过滤整合,然后下发给数据平面交换设备。FV在支持多个相互隔离的向虚拟网络并行运行的同时,允许每个虚拟网络拥有独立的控制逻辑。这给网络研究人员验证新的协议和想法带来了极大的方便,同时也提高了网络资源利用率,节约率网络部署和运营成本。
2.2.2 FlowVisor架构
FV主要有FVClassifier,FVSlicer和FlowSpace数据库三部分组成。FVClassifier用于维护与物理openflow交换设备的链接,处理IO请求并记录每个物理设备的端口、性能等信息,每个FVC对应一个OpenFlow交换设备。FVS用于维护与控制器的链接,管理OF会话并对控制器下发的信令进行处理。当流从一个物理的OF交换设备到达FlowSpace数据库后,此模式能够根据数据库的切片规则,把OF消息交给本切片内的FVS,再由FVS发送给连接的控制器。
FV的核心工作原理主要是对上行消息的映射和对下行信令的过滤、如图,控制器和交换机与FV的所有联系都通过 Poll Loop轮询来交互。交换机交给控制器的数据分组通过OFSwitchAcceptor模块接收后,递交给对应的FVC模块以对数据分组的来源进行分析;随后此数据分组进入FVS模块,此模块能够与数据库交换,已实现数据分组与FS的比对;最终由FVS模块决定慈湖距分组所述的虚网,并交给相应地控制器。同理,控制器下发给交换机的数据分组会通过相反的过程送达交换机。
FV网络的基本要素是网络切片,FS作为FV划分和管理每个切片流空间额核心模块,其划分策略是灵活多样的。首先,每个FS都有相应的行为限定。
允许:符合此规则的流表能够被相应虚网的控制器接收,并且匹配此规则的流条目能够被加入到交换机流表中;
只读:符合此规则的流仅能被此虚网的控制器接收监控。
丢弃:符合此规则的流不能被控制器接收,控制器更不能像交换机中加入匹配此FS的流表。
其次,FS的匹配范围涵盖了物理层、数据链路层、网络层和传输层的协议字段,以数据分组的12元组作为划分依据,按照流的向将网络资源进行合理分配,以达到限定当前切片内数据流量类型的目的。一般来讲,对于某个特殊地应用,可以通过制定源/目的IP地址、源/目的MAC地址或者TCP端口信息来把数据分组划分到一个切片内。FS的配置使用方法将在第14张进行具体介绍。
2.2.3 FV优点及存在的问题
FV作为第一个基于OF实现的网络虚拟化平台,为后续昂罗虚拟化平台的设计提供了许多借鉴。两个以科学研究为重点的大型网络GENI和Internet2也在使用FV。其优点主要包括如下几个方面:
提供了丰富的虚网划分能力。可在多个层面实现对OF网络的划分。
使用方便易操作,FV提供多条命令行,启动完成后能够使用命令行直接完成虚妄的配置和流空间的配置,无需操作数据库即可完成FV管理虚妄的所有功能。
支持多级FV同时部署,呢能够在已创建的虚网上部署更高一层的虚网,实现对资源更加灵活的调度。
问题所在(注意这时只在2014年以前,现在什么样不确定):
2.3 网络虚拟化平台CNVP
暂略,待补充,只放图。
三、SDN在流量工程中的应用
流量工程(TE)的主要目标是将业务流映射到现有物理拓扑上。如果一个流量工程的应用能够实现一组正确的功能,它将使用ISP在其路由域内对业物流的分步实现精确的控制。
早些年,这种映射的实现主要通过网络设备的路由配置来实现,但是当某条链路发生阻塞时则无法实时修改配置,只能通过预先提供过量带宽来保障性能。随着互联网的发展,网络规模越来越大啊,需求也更加灵活,因此,如何有效的实现动态流量工程成为一个重要研究方向。
SDN的提出为实现动态流量工程提供了一个可行的新思路。203年,Google公司在Sigcomm发表了一篇关于Google B4网络的文章,其中详细描述了基于SDN实现数据中心间流量工程的方案和部署实现。
B4是第一个基于SDN/OPENFLOW实现规模不熟的生产性网络,在SDN技术的发展过程中起到了重要的推动作用。本节将从背景情况、设计思路、实施方案以及效果评估等方面,介绍与分析SDN在Google B4之中的作用,让扶着能够更深入地了解这个SDN产业化应用案例的细节。B4基于利用SDN的流量功能,平均链路利用率从30%~40%提升到70%,甚至在很多链路中能够接近100%。
Google公司一直致力于互联网搜索、云计算、广告技术等领域的创新,开发并且提供了大量互联网的产品与服务。
它是至2014年为止ONF官网上仅有的三个用户案例之一。
3.1 B4的设计思路
3.1.1 设计依据
B4的流量工程主要是为了调度Google数据中心建流量,以提升链路利用效率,因此,设计人员首先对需要调度的流量进行了分析与归类。
网络流量大致可以分为3种,具体描述如下:
用户数据拷贝:用于保证可用性和持久性的跨数据中心流量,包括视频、图片文字等。
远程存储访问:用于分布式计算的流量。
大数据规模同步:多个数据之中心之间的状态同步
这三类流量数据量一次增大,对延迟的敏感度一次降低,优先级也一次遍地。基于上述流量分类,B4网络在设计中需要考虑如下四个需求。
动态的贷款需求:数据中心的主要流量来自于跨站点的数据同步这些应用需要大量带宽,并且能适应带宽的周期性减少。
稳定的站点数量:B4网络必须从多个维度来衡量,从数据中心部署的角度来看,广域网站点的数目优先且保持稳定。
后端应用管控:Google控制应用连接到B4网络站点,因此Google可以强制指定相关应用的优先级并且控制网络边缘的爆发性流量,而非通过过量供应带宽或复杂调度功能来实现管控。
成本敏感:B4的容量与增长率会导致过高的成本预算。如果使用传统的30%~40%地链路利用率会导致网络基础设施异常昂贵。
基于上述因素,Google在B4的设计过程中作出了4个设计决策,见表6-2。
SDN数据控制分离、逻辑集中控制、网络设备可编程的架构能够良好的 满足上述提出的设计决策,因此,Google选定了SDN技术来构建B4网络,下面将介绍Google B4如何将SDN应用在数据中心间互联网络之中。
3.2 体系架构设计
B4的SDN架构逻辑上分为3层,分别为交换硬件层、站点控制层和全局控制层,如图。
下面两层由多个广域网站点组成,一个站点就相当于一个数据中心,每个站点有多个服务器集群。在每个站点内,交换硬件层通过使用自行设计的交换机对流量进行转发,并不运行复杂的控制程序。站点控制层由网络控制服务器(NCS)组成,其上运行OF控制器(OFC)和网络控制应用(NCA)。全局控制层则由一些逻辑上集中的应用(如SDN网关、全局流量工程服务器等)组成,从而能够通过NCA来集中控制整个网络。
OF控制器维护基于NCA网络控制应用指令和交换机事件的网络状态,并基于这种变化的网络状态向交换机下发流表。基于容错性的考虑,在站点的服务器集群中,每台服务器均运行一个控制器,一台交换机可以连接多个控制器,但其中只有一个控制器是出于工作状态的。通过运行站点的PAXOS实例程序进行选举,即选出工作状态的主MASTER控制器。值得一提的是,这种选举并不是基于控制器的,而是基于功能性的,也就是说对于控制功能1来说,选举控制器1作为主控制器,而对于控制功能2则可能选举其他控制器作为主控制器。
在B4的部署中,路由与TE作为独立的服务运行在SDN架构之上,具体来说,在初始阶段部署标准的网络路由服务,并且逐步将TE作为OVERLAY部署。这样的设计可以让B4在最初的建设中只关注于构建SDN架构,再逐步升级功能。
3.3 数据控制平面设计
在数据平面交换机设计的方面,GOOGLE选择了自行设计交换机硬件,这是因为在开始部署B4时仍没有一个能够支持SDN部署的软硬件平台。出于对站点的带宽需求的考虑,Google需要一种高阶(High-Radix)交换机,虽然部署数量更少,但却需要拥有更为强大的功能,这种高阶交换机在管理性和软件可扩展性方面具有更好的表现。
Google定制的交换机是一个128口交换机。
略。
交换机上运行着用户态进程OFAopenflow代理,连接到远程的OFC控制器上,接收openflow命令,转发响应的数据分组和连接状态到OFC。
关于控制平面的设计,B4的大多数功能运行在NCS上,NCS与交换机共享专属的数据平面网络。Google B4使用的OPENFLOW控制器是由于基于分布式的Onix控制器改造来的。NIB(网络信息BASE)包含当前网络的状态、Trunk配置以及链路状态等信息。OFC有多个热备份,OFA保持与多个OFC相连接,但一次只与一个OFC通信(基于Paxos选举)当启动或选出新的OFC时,OFC从本地读取静态网络状态,再与交换机同步动态网络状态。关于ONIX的具体信息可以参考文献15。
3.4 B4的核心网络功能
B4的核心网络功能主要就是处理不同站点之间的流量,其核心目标是如何保证这些站点之间流量的正确路由,同时在正确路由的基础上,如何能最大可能的提高链路的利用率。
接下来研究B4的两个核心功能:域间路由使用传统的路由协议保证域间流量的正常转发;流量工程最大化地提高域间的链路利用率,并根据应用的不同带宽需求,动态调整隧道下发策略。
3.4.1域间路由
域间路由用于B4站点之间的路由信息更新,其主要挑战是如何与OF交换机相结合,从而实现混合网络的部署。Google使用了Quagga(一种路由软件,用于实现多种路由协议)开源协议栈具体实现BGP/ISIS协议,并运行在NCS上。另外,Google编写了一个路由代理(RAP)的SDN应用,以保证Quagga和OF交换机之间的交换以及OFS和OFC之间的互联。
如图,控制器收到下面交换机送上来的路由协议报文以及链路状态通知时本身并不处理,而是通过路由代理RAP将它送给Quagga协议栈。控制器会把它所管理的所有交换机端口信息都通过RAP告知Quagga,该协议栈管理了所有这些端口。Quagga协议栈计算出的路由信息,即RIB路由信息基础缓存,并使用RAP守护进程(RAPD)通过RPC方式将RIB更新值OFC的RAP组建中。RIB将地址段映射到一个或多个物理端口上,RAP缓存了QUAGGA的RIB信息并有ONIX将其转换为NIB信息。
在OFC中,RIB被分解为FLOW和ECMP group两种不同的表。FLOW表讲不通的目的地址映射到不同的ECMP GROUP表中,然后由ECMP GROUP确定该数据分组的下一跳出口,BGP和ISIS运行在B4的数据平面上,但QUAGGA没有与数据平面相连接,因此为了处理路由信息,RAP必须代理QUAGGA和数据平面之间的路由数据分组。最终,RAP通知QUAGGA关于交换机的端口状态变化。一旦检测到端口状态发生改变,OFA向OFC发出OPENFLOW消息,OFC更新本地NIB,赋值给RAPd,最终更新QUAGGA的路由信息。
后续略。
OF应用和控制器之间的安全问题。
包括具体实现、代码解析、更细节的流量工程优化算法TE等略。