首先介绍了SDN技术产生的原因、技术架构及其关键部件,然后分析了SDN网络和现有网络在路由互通,以及SDN网络内部如何最大限度利用网络传输资源等问题,提出了虚拟路由器的思想,并给出了详细的解决方案和主要实现过程。 

1 引言 
  全球化的竞争使得各企业需要不断的进行技术创新以提高自身的竞争力,网络技术在这种环境下在不断地演进和转变。从应用的角度看,这些显著地变化给用户和中小企业带来了极大的便利;但从网络的角度看,传统的网络架构已经很难胜任这种变化,急需一种新的网络架构,一些大学和机构于是开展了基于软件化的开放便捷网络技术研究,SDN技术应运而生。 
  在SDN网络内,控制器通过链路层发现协议收集各节点的网络资源(包括网络拓扑和网络资源,即节点连接关系、带宽、跳数、时延、误码率等信息),形成网络拓扑视图和资源视图。系统可基于网络拓扑,利用Dijkstra算法,找出系统中最短路径生成路由,但此路径只是最短花费路径,从源到目的仅仅一条。但是随着用户业务的逐渐丰富,业务对网络资源的占用也越来越多,如何充分地利用网络资源,在SDN网络内部选择一条高效、可靠、满足业务属性(包括带宽、时延和丢包率等)需求的路径,从而提高网络吞吐量和用户服务质量非常重要。另外,在SDN网络中交换机不再解析任何协议,只做流表匹配和转发,其控制方式采用集中式,所有协议解析都需上到控制器上,流表下发的也是统一从控制器下发,而目前的控制器只负责协议的解析和封装,并且SDN内部网络采用集中式管控,内部不再存在接口IP地址、路由协议等,因此当SDN网络需要和现有的IP网络路由设备在协议层面进行互通时,存在因为无法和标准的路由协议、MPLS标签转发协议互通等问题,难以和现有网络融合起来一起使用,这对处于过渡期的SDN技术是一种挑战。各国也展开了对SDN技术的研究,但目前研究主要集中在网络架构、协议安全和网络控制上,对SDN的和现有网络的路由互通和SDN网络内部高效利用网络资源实现多路径转发等技术的研究较少。 
  本文主要针对在SDN网络中业务如何最大限度利用网络传输资源等进行传输以及基于OpenFlow的SDN交换机和现有标准路由交换设备在路由如何互通等2个问题,提出了解决方案和关键技术点解决办法,试验验证本文提出的方案不但能实现和现有网络在路由层面的无缝互通,还提高了网络资源利用率。 
2 基于OpenFlow的SDN技术介绍 
  基于OpenFlow的SDN网络主要分为2个部分:OpenFlow交换机和SDN控制器。 
  SDN控制器完成的是控制面的工作,主要是通过收集到的整个网络的拓扑和资源形成拓扑视图和资源视图,然后实现对OpenFlow交换机的管控功能。控制器是一个独立运行的软件,是整个网络逻辑控制的核心。从控制方式上可分为集中式控制和分布式控制,当网络规模大的时候,一个控制器无法完成,需要多个分布式控制器协同工作,通常有更高一层逻辑控制来统筹这些控制器的协同工作。 
  OpenFlow交换机主要完成转发面的工作,即根据流表进行数据包转发,匹配流表表项执行相应转发规则,进行对应的操作,匹配方式可为单级或多级流表,匹配项涵盖了链路层、网络层和传输层大部分标识。由于交换机采取流表的匹配和行为转发模式,因此在交换机内不解析任何网络协议,需解析的协议由OpenFlow协议送到控制器解析,网络中也不再区分路由器和交换机,而是统称为OpenFlow交换机。基于OpenFlow的SDN网络架构如图1所示: 


3 解决方案 
3.1 解决思路 

  关于引言中提出的2个问题,第一个问题是SDN网络内部的问题,第二个问题是SDN网络和现有网络互通的问题(包括路由和业务)。为了解决上述2个问题,需要从内外两方面进行解决。对外,需要每一个控制器所控制之下的OpenFlow交换机都在控制器上进行映射,控制器上包含SDN内部底层网络映像,整个内部网络对外呈现可以虚拟成一个路由器,即虚拟路由器,SDN网络通过这个虚拟的路由器对外提供路由功能;对内,SDN控制器的北向接口需要提供基于网络拓扑或资源的多径算法,在网络拓扑和资源的基础上,找出适合业务传送特性的路径。 
3.2 虚拟路由器 
  通过映射的方式,每个基于OpenFlow的SDN交换网络在控制器上映射成一个虚拟路由器,交换网络对外的接口映射成路由器的外部接口,通过接口适配的方式,把这些接口适配成操作系统IP层的标准接口,这样通用的网络层协议都能在IP层之上很好地运行。在虚拟路由器和OpenFlow网络间建立一个虚拟的通道,这样虚拟路由器上的网络层协议通过适配的虚拟接口发送的所有网络层协议报文都能通过虚拟的通道发送到OpenFlow交换网络对应的接口上,实现SDN网络路由功能。 
  SDN虚拟路由器实现方案示意图如图2所示: 


  虚拟路由器软件架构可以分为SDN控制器模块、OpenFlow流表管理模块、路径算法模块、协议处理模块和内核模块。虚拟路由器对外呈现的接口即为OpenFlow交换网络对外呈现的接口,虚拟路由器运行的标准协议通过这些真实的接口对外呈现。虚拟路由器软件架构如图3所示。 


  各模块主要完成的功能如下: 
  (1)SDN控制器模块:对上提供标准的北向接口,把应用的流表配置指令和应用的报文数据转通过RYU控制器模块(由日本NTT公司设计研发的一款开源SDN控制器)进行OpenFlow协议封装,对下提供标准的南向接口,包括流表下发给各OpenFlow交换机执行,OpenFlow协议的封装和解析,标准TCP/IP协议报文的处理等。 
  (2)OpenFlow流表管理模块:根据协议模块生成的转发和处理规则,生成流表表项。
  (3)路径算法模块:根据拓扑信息和网络资源信息进行多径计算,计算出适合业务传送的路径,包括最少花费路径、最小跳数、最大带宽、最小时延等路径。

    (4)内核模块:完成OpenFlow交换网络对外的接口在虚拟路由器的IP接口映射,此模块对上层协议屏蔽底层实现方式,呈现标准的IP层和接口。在内核的网络驱动中增加虚拟接口驱动,并利用NETLINK通信机制[9]实现内核收发IP报文和SDN控制器间的通信。 
  (5)协议模块:完成标准的路由引擎和协议引擎的功能,包括单播路由协议、组播路由协议、MPLS协议等网络层协议。 
  通过虚拟路由器里的协议和外部网络的网络协议进行交互,虚拟路由器的网络层形成相应的转发路由表,通过流表管理转换成流表下发到OpenFlow执行,从而实现和外部交换机的无缝互通。 
3.3 路径算法 
  路由的本质是在已知的网络拓扑上进行路径的计算,而目前的控制器只是根据SDN控制器北向接口对外呈现的网络内部拓扑信息,进而根据Dijkstra计算最短路径,这是远远不够的。多径算法就是在已知的网络拓扑视图和网络资源视图上,根据业务的需求作为条件进行路径的计算,然后把计算的路径通过软件编程的方式下发到转发芯片执行。可以把路径计算分为如下两类: 
  (1)最短路径计算:计算的路径和标准的路由协议计算(Dijkstra)的路径一致,主要用于信令类报文的寻路; 
  (2)多径计算:根据业务的对带宽、跳数、误码率、时延等情况的需求采用多约束路径算法计算合适路径,能够根据网络流量分布和业务流量需求,触发建立满足业务特征、具备QoS保障的端到端连接。 
  本方案对最短路径算法不再赘述,仅给出多径算法过程。多路径算法能够根据网络流量分布和业务流量需求,触发建立满足业务特征、具备QoS保障的端到端连接。 
  描述SDN网络拓扑和资源情况,构建网络拓扑和资源表V(N,S),其中V表示拓扑和网络视图,即View;N表示所有节点集合,即Node;S表示所有节点所带的边(节点和其邻居连线称为“边”)的集合,即Side。基于双向链表的方式记录节点集合和边的集合V(N,S)。 
  对于业务,业务控制信令需要向网络申请业务传送资源,网络可根据当前的V(N,S)计算出满足业务特性需求条件的路径。假设在t时刻,收到业务传输资源申请,则根据V(N,S)设任意节点对(Ni,Nj),其中(i,j)∈E,如果节点对(Ni,Nj)间存在通信链路LijK(t)(K为第K条路径),则它们之间若有通信连接则状态为1,否则为0。SnK为第K条路径的第n条边,P为总的路径数,设定(Ni,Nj)节点对之间的路径函数Fij(t)是节点Ni与Nj之间所有路径边变量的相乘之和,则Fij(t)可以用来表示SDN网络中任意节点对(Ni,Nj)之间在t时间的可用路径,则推导Fij(t)如公式(1)所示: 
  
  基于公式(1)可用于计算节点对之间的多径通路,也可通过比较不同路径的代价进行路由优选。实现步骤如下: 
  1)遍历所有节点N,列出每个节点的邻居连接边S; 
  2)根据公式(1)列出所有路径Fij(t); 
  3)进行约束条件限定,不满足条件的边设置为0,去除所有不满足约束条件的边(单节点的带宽、时延、误码率)所在路径LijK(t); 
  4)针对每一条路径LijK(t),去除冗余项,冗余项包括: 
  ◆起点不是Ni节点; 
  ◆终端不是Nj节点; 
  ◆相邻的边Sm和Sm+1首尾相连; 
  ◆重复出现的环路节点。 
  5)在Fij(t)剩余的LijK(t)中,计算路径上总的带宽、跳数、时延、误码率等; 
  6)去除不符合业务特性需求的路径; 
  7)把剩余的路径记录在路径地址记录表中; 
  8)从路径地址记录表中,根据优选策略约束条件选择一条最优路径。 
  基于多径算法计算的路径有别于传统的路由算法只计算一条最短路径,这个路径的计算是基于链路初始带宽、跳数等因素,但没有考虑网络中业务分布情况和资源利用情况,资源利用率较低,而多径算法是基于当前网络资源和业务需求情况,找到一个平衡点,为每个业务单独计算一个路径,更高效地利用了网络资源,使得业务不至于都拥塞在个别链路上。 
4 试验验证 
  试验验证环境拓扑图如图4所示,测试环境包括: 


  (1)3台PC电脑:2台电脑作为终端(PC1和PC2),一台电脑作为OpenFlow控制器(PC3),PC3系统采用RedHat6.4系统,运行的软件为虚拟路由器软件,包括RYU控制器软件、Quagga协议软件、多径算法软件等; 
  (2)4台OpenFlow交换机:苏州盛科公司生成的OpenFlow交换机,型号V350; 
  (3)2台路由器:思科路由器,型号C3560; 
  (4)链路:OpenFlow交换网络内部交换机之间链路采用100M网口互连,其它接口采用1000M接口互连。 
  测试1:按照图4连接好设备,并照图4标识设置各个接口IP地址,虚拟路由器启动虚拟接口eth0和eth1,并在这2个接口上运行OSPF路由协议,同时路由器R1和R2也启动OSPF路由协议。查看R1路由表情况,在PC1上Ping电脑PC2。 
  试验结果如下(R1路由表情况如图5所示): 

 

     PC1上Ping电脑PC2情况如图6所示:


  测试2:PC1和PC2分别运行业务测试软件LanTraffic,PC1为发送模式,PC2为接收模式,在PC1上运行2种不同的业务,每种业务流量为100M,同时PC2上还运行流量监控软件NetPerSec,实时监控PC2接收的业务流量。首先采用传统的路由模式,即基于标准的OSPF协议计算的最短路径路由,观察此时接收侧NetPerSec流量情况;过一段时间后启动多径算法模块,继续观察接收侧NetPerSec流量情况。

   试验结果如图7所示: 


  从试验1的测试结果可以看出,运行虚拟路由器软件的控制器,类属此控制器的交换网络具有标准的路由器转发和路由功能,在路由协议上也能和标准路由器互通。从试验2的测试结果可以看出,在SDN网络中启动多径算法计算路径后,网络容量和资源利用率会增加,可提高网络转发效率和网络吞吐量。 
5 结束语 
  SDN技术是未来网络技术发展的重点,无论是在数据中心或校园网,还是在未来战术通信骨干网中都具有很好的应用前景。本文针对基于OpenFlow的SDN交换机和现有标准路由交换设备在路由互通上存在的问题,以及如何在SDN网络的基础上最大限度利用网络资源,提高整网的交换容量等进行分析,提出了虚拟路由器的思想,并在关键技术点,虚拟路由器和路径算法上给出了解决方案,最后通过试验验证,证明该方案可行。

作者简介:

李勇:工程师,学士毕业于哈尔滨工业大学通信工程专业,现任职于中国电子科技集团公司第七研究所,主要从事通信系统和网络的研究和总体设计工作。

刘学军:高级工程师,现任职于中国人民解放军96658部队205分队,主要从事通信系统和网络的研究和顶层设计工作。