基于软件定义网络的动态流调度方法及***
技术领域
本发明涉及一种基于软件定义网络的动态流调度方法及***,属于计算机网络领域。
背景技术
网络流量伴随着互联网技术的高速发展保持着指数式的增长,对现有网络的部署和维护增加了压力。尤其是大数据量的流媒体服务、视频点播业务的疯狂增长对网络性能提出了更高的要求。持续稳定的流量比重逐步增大,现有网络的低效,在这种情况下,提升网络性能、增加链路利用率、提高数据传输可靠性、加快流量转发效率成为亟待解决的网络问题。
IETF针对该问题提出了自己的解决方案—流量工程。流量工程作为研究计算机网络拥塞问题的主流方法,其主要流程是:流量分析、建模、策略调度,所以流量工程往往最常以流量调度的形式出现。其核心思想是解决网络阻塞,提升带宽利用率,并且尽可能的做到互联网架构最优化。其针对互联网的性能进行相关的评估和优化,以提升链路利用率为目标,优化网络转发设备的配置,最终避免上一段提出的诸多问题。
针对流量调度,利用IP的虚拟化特性传统网络主要集中在网络层附近对其解决方案进行研究。传统网络在解决流量工程问题时,不具备实时检测全网状态信息,造成网络流量并不能时刻在最优路径上传输,即不能根据实时链路状态改变转发策略。
采用多协议标签交换技术MPLS来实现流量调度使目前主流的是解决方案之一。MPLS网络的路由配置包括静态路由、策略转发、手动配置三种。其中最常用的是静态路由,策略转发、手工配置方法由于网管人员工作量及配置难度均较少使用。而且在该网络中所有的路由配置多为静态,如果使用动态配置也需要路由器间进行协调,对于转发设备有限小型网络尚可如此但在大范围转发设备采用此方法不仅不会对网络性能提升,反而造成了很大的延时。
因为分布式架构下的转发设备控制逻辑和数据转发均集中于一体,并不能对整个网络进行统一管控。在这样的情况下,首先不能对整个网络的链路状态统一获取,这样对于把控整个网络路径的健康状况不利,例如,图1中的网络如果路径2的带宽利用率几近饱和,而路径1鲜有流量经过,这时传统网络就出现了问题,因为明显的这时的最优路径是路径1,但由于传统网络无法根据实时的链路状态去改变相应的转发策略,造成了网络资源的低效率利用,而且也违背了流量工程的初衷。
而目前现有技术还处在如何使数据包在软件定义网络中实现设备的连通,在高效性上并未得到足够的提升。
发明内容
本发明的目的是提供一种基于软件定义网络的动态流调度方法,基于实时的链路状态制定所有策略,不同于传统网络的手动配置,保证了策略制定的实时性和有效性,解决传统网络在解决流量工程问题时,不具备实时检测全网状态信息,造成网络流量并不能时刻在最优路径上传输,即不能根据实时链路状态改变转发策略的问题。
本发明的技术解决方案是:
一种基于软件定义网络的动态流调度方法,
通过对交换机上传的流量信息进行流量的解析,流量识别分级模块对流量类型按照优先级进行分类;
调用统计管理模块获取交换机端口信息,计算出交换机的连接链路,并将链路信息传递给拓扑管理模块;
调用拓扑管理模块获取流量流向的可行路径,计算可行路径中链路的实时状态统计信息;
对这些链路属性进行分析,换算成路径在整体选择中的权重,通过该权重做出最优调度策略,并进行策略下发。
进一步地,对交换机未识别的上报流量进行流量类型识别,流量识别分级模块首先对流量中数据包携带的协议信息进行提取,然后查询***中已有的流量类型表,最后精确定位流量类型。
进一步地,拓扑管理模块通过周期性的遍历交换机的所有端口,并发送链路探测包,用于探测物理交换机网络的链路结构,获取的链路信息通过计算得出网络拓扑。
进一步地,获取交换机的实时状态信息和配置信息,并将这些信息进行二次加工,已得到链路权重;
根据可行路径计算模块计算出的路径将其包含链路信息进行组合,便计算出路径状态信息。
进一步地,利用可行路径计算和链路状态统计模块所提供的参数进行评测;按照链路长度、链路利用率的不同权重进行计算,将计算结果进行递减排序,结果数值最大的即为最优流量传输路径。
进一步地,根据最优路径计算模块得出的最优路径,结合实际物理网络,统计和路径相关的交换设备,针对不同的交换设备进行转发策略的下发;
具体为:
获取最优路径后,调用统计管理模块,获取相关链路信息,在拓扑管理模块中获取相关交换机信息,根据交换机的数据层标识映射实际物理设备,设备管理模块确定交换机的网络连接端口号,并确定下发策略端口,针对性编辑流表,协议插件管理模块进行消息封装后,下发转发策略。
一种基于软件定义网络的动态流调度***,包括网络控制层、调度策略层、接口层,
网络控制层:包括协议插件管理器、设备管理、拓扑管理、统计管理,提供管理服务,使网络正常通讯;
调度策略层:包括流量智能识别分级、可行路径计算、链路状态分析、最优路径计算、调度策略制定,具体为:
流量智能识别分级:对协议插件管理模块解析的数据包进行深度解析,确定其类型,为上层模块提供服务;
可行路径计算:通过路径计算算法计算出流量在网络中的可行路径;
链路状态分析:根据流量的可行路径对路径中每条链路的状态进行分析,包括链路带宽、链路吞吐量、链路利用率等信息;
最优路径计算:以可行路径和链路状态为基础,按照最优路径算法计算出最优路径;
调度决策:根据计算出的最优路径对流量进行调度;
接口层为外界访问流量调度***的接口。
进一步地,协议插件管理:通过插件机制来支持多种不同的网络协议,通过协议插件向上层提供链路控制和数据包控制功能。该模块用于在启动后载入注册的各个协议插件,在收到或发送消息时根据协议类型使用不同的协议插件对消息进行解码或编码;
设备管理:对网络中终端设备进行管理,包括存储设备的配置信息、状态信息;
拓扑管理:计算拓扑结构并维护拓扑信息;
统计管理:启动该模块后需要初始化统计模块需要的如存储和采集需要的资源,向其他模块提供统计服务。
进一步地,当进入交换机的数据包不能被匹配时,交换机将数据包封装在PacketIn消息中发送给控制器;
在接收到南向接口协议消息后首先对其进行协议解析,确定其为流量类型识别的消息后,将解析其data数据段,该段存放的是真实数据包信息;
控制器将对数据包进行解析,确定数据包类型,并且对流量类型进行分级。
进一步地,接口层通过本地方法调用面向过程的访问工具,或通过符合REST架构风格的面向对象的访问工具。
本发明的有益效果是:本发明算法提升了网络链路利用率、对链路带宽均衡了负载、可以节省数据包传输时间。本发明的转发策略是根据流量属性和实时的链路状况进行制定的。通过流量检测分级模块对流量类型按照优先级进行分类,计算出该流量的可行路径,获取可行路径中链路的实时状态统计信息。对这些链路属性进行分析,换算成路径在整体选择中的权重,通过该权重决定最优的流量流向。在这个过程中,所有策略的制定都是基于实时的链路状态,不同于传统网络的手动配置,保证了策略制定的实时性和有效性。
附图说明
图1是启动了流量工程的MPLS网络图。
图2是实施例面向软件定义网络的数据平面转发的流程示意图。
图3是实施例***的整体结构示意图。
图4是方案整体算法分析图。
图5是实施例***总体信息交互示意图。
图6是核心管理模块关键处理流程图。
图7是拓扑管理模块关键处理流程图。
图8是流量智能识别分级模块流程图。
图9是链路状态统计流程图。
图10是最优路径计算流程图。
图11是实验测试拓扑图。
图12是实施例与传统网络的运行情况模拟初期的最优路径图。
图13是实施例与传统网络在吞吐量达到一定阈值后的最优路径图。
图14是实施例与传统网络的吞吐量比较图。
图15是实施例与传统网络的带宽利用率比较图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例以软件定义网络为基础前提,利用软件定义网络的特性制定流量调度的相关算法。该算法所描述的策略体现在流量调度***端,作为整个网络的指挥官。
实施例在保证网络正常通信的情况下,通过深度包解析协议匹配算法实现对流量的精确匹配,并根据流量特征对流量进行优先级分类;通过可行路径分析算法实现端到端可行路径的全面掌握;对链路状态信息进行实时更新,利用链路信息分析算法计算全网链路的拥塞状况;以可行路径、链路状态信息等为参数,通过最优路径算法实现最优路径的确立;最后通过调度决策算法实现策略下发,确保制定的转发策略符合实时链路状态情况下的最优路径,如图2所示。
当OpenFlow交换机无法匹配流量或者该流量原本在交换机中的处理结果便是上传给流量调度***,这是交换机将包含流量信息PacketIn数据包交给流量调度***的两种方式。
实施例利用软件定义网络的统筹安排的特性,当交换机把流量信息通过PacketIn消息上传给流量调度***时,***会对其进行流量类型识别。将已经识别的流量进行针对性的流量疏导策略制定,策略确定后将其贯彻到相关的转发设备上,这里的转发设备是指基于软件定义网络的交换机。
该***下发转发策略并不是只能针对其中一个交换机,它能决定其管辖的SDN网络中每一个交换机的转发策略。这些交换机可以在离线方式下通过静态转发表,但更多的是经过流量调度***去配置,该***将高效的自动对相关交换机进行转发策略配置,这足以体现出其动态配置策略方面的效率优势。
实施例***的详细结构如图3所示。主要分为三个部分,分别为基础控制层、调度策略层、接口层,物理设备为该***运行的环境。
基础控制层的功能是提供一些基础的管理服务,保证网络的正常通信。该层主要包括协议插件管理器、设备管理、拓扑管理、统计管理。其中:
协议插件管理:通过插件机制来支持多种不同的网络协议,通过协议插件向上层提供链路控制和数据包控制功能。该模块用于在启动后载入注册的各个协议插件,在收到或发送消息时根据协议类型使用不同的协议插件对消息进行解码或编码;
设备管理:对接入SDN网络中的交换机、主机等终端设备进行管理,在控制器中为每一个交换机创建一个交换机实例,记录交换机的状态信息,端口(类型,状态,工作模式,带宽大小等),并维持此交换机实例与物理交换机之间的状态连接,对出现的各种影响网络拓扑事件(如交换机下线,端口down等)快速及时响应。
拓扑管理:主要用于管控整个网络中所有物理交换机之间的链路信息。交换机连接到控制器之后,向物理交换机管理模块上报其所有包含的端口信息。物理网络拓扑管理遍历交换机的所有端口,并发送链路探测包,用于探测物理交换机网络的拓扑链路结构。当有新交换机加入到网络中时,可以将其加入到交换机队列中,并立即触发发送LLDP报文,测量其和其他交换机的连接关系。另外,就是周期性的遍历所有交换机发送LLDP报文,以即使将物理网络的拓扑变化,反映到流量调度***中。另外,当物理交换机和控制器断开连接时,需要对物理网络拓扑进行相应的修改。
统计管理:启动该模块后需要初始化统计模块需要的如存储和采集需要的资源,向其他模块提供统计服务。
核心管理:该模块是基础控制模块和调度策略层的核心,将协议管理插件的OF消息转化其他模块用于监听的事件,作为流量调度***的事件转换中枢。
调度策略层是本***的核心部分,承担着整个流量工程解决方案的策略制定。该层主要包括流量分级、可行路径计算、链路状态分析、最优路径计算、调度策略制定。其中:
1)流量智能识别分级
由于网络中有着协议类型丰富的流量,不同类型的流量用户的使用频率也不同。本课题根据网络数据的分析结果,对流量类型按用户使用频率进行分类,并且制定相关优先级,对协议插件管理模块解析的数据包进行深度解析,确定其类型,并映射为相应的优先级,为上层模块提供服务。
2)可行路径计算
流量优先级确定后,根据流量确定端到端具体信息,根据源端和目的端的信息通过路径计算算法计算出流量在网络中的可行路径;
3)链路状态分析
根据流量的可行路径对路径中每条链路的状态进行分析,包括链路带宽、链路吞吐量、链路利用率等信息;
4)最优路径计算
以可行路径和链路状态为基础,按照最优路径算法计算出最优路径。
5)调度决策
根据计算出的最优路径对流量进行调度。
接口层:为外界访问流量调度***的接口,可以通过本地方法调用、RPC等面向过程的访问工具,也可通过符合REST架构风格的面向对象的访问工具。使用符合REST的架构风格,能有效的利用HTTP协议规定的URL通用接口,便于网络缓存、本地缓存、代理服务器等技术的复用。REST的重点是以资源为核心,而URL完全可以胜任这项工作,所有的网络资源的定位工作均由URL承担。作为整个资源的中枢,URL的定义和协调显得尤为重要,不仅需要结构简单,而且层次还要分明。从用户的角度出发,URL的定义可以预测,实现快速操作的目的。
如图4所示,为本***的整体算法流程。在***开始启动后,首先加载模块,各模块处于待命状态。下一步启核心模块,这些模块主要保证***的正常运行,包括***事件监听、南向接口协议处理、定时器、RESTAPI提供等。接下来将打开事件***,本***是基于事件监听机制,所有模块运行产生的事件加均放在事件池中。每个模块均包含事件***,当监测到事件池中存在匹配模块的监听事件,模块便执行相关事件处理机制。本模型符合生产者消费者思想。
***的主线程以消息监听为主,本***主要涉及的消息有PacketIn、PacketOut、FlowMod、FeatureRequest、FeatureReply、PortStatusRequest、PortStatusReply。
按照***算法的思路,本***对网络的链路进行主动测量,以交换机的端口为基本单元。通过一定的周期获取交换机端口的数据转发信息,并将这些数据进行二次加工。端口信息主要涉及的数据有端口带宽、端口转发的数据包数量、端口接收的数据包数量、端口转发的总数据量、端口丢弃的数据包数量、端口接收的总数据量、端口丢弃的数据包总数据量、错误数据包数量、错误总数据量。端口带宽由Feature消息获取。端口数据转发信息有PortStatus获取。
这里提到了数据的二次加工,由于端口信息数据量庞大,这里需要提取端口的有效信息,并进行分析。将端口状态数据处理后,将得到链路的状态信息,即链路利用率。链路利用率最后会转化为链路权重信息。
实施例的算法解决思路是当交换机有未识别的流量上报给流量调度***时,***开启线程对流量类型进行识别。识别算法首先对流量中数据包携带的协议信息进行提取,然后查询***中已有的流量类型表,最后精确定位流量类型。将流量分为两种类型,其一是持久且负载较高的稳定流量,称之为大象流,另一种是小股数据流构成的突发流量,称之为老鼠流。
由于考虑到大象流的持续性和稳定性,所以这里针对大象流的处理方法是进行有权重的最优路径选择。而老鼠流考虑到它的突发性和数据量细微性,所以针对老鼠流的做法是进行无权重的最优路径的选择。
最后***会根据不同类型的流量制定不同的流量调度策略,并且将策略贯彻落实到相关的转发设备上。这里一个大周期的策略调度算法就已完成。图5是整个流量调度***的总体信息交互图。
核心管理模块控制流量调度***与交换机之间的链接并且把OF消息(即OpenFlow消息,后面均以OF消息替代)转化为其它模块可以监听的事件,分派事件给各监听模块处理,据此事件处理模块可以让消息转发给下一个处理模块或者停止处理。该模块主要功能由Controller类提供,流量调度***启动时,Controller启动Netty监听服务,监听6633端口的OF消息,再调用OFChannelHandler类的processOFMessage方法开启OF消息处理及派发。其关键处理流程如图6所示。
实现流程如图6所示,OFMessage消息进入方法后,先判断消息类型,如果是HELLO消息,则发送FEATURES_REQUEST请求;该消息有多种应答方式需要需要解析。
如果是ECHO_REQUEST消息,则响应ECHO_REPLY消息;如果是ECHO_REPLY则结束流程;如果是FEATURES_REPLY消息,则发送SET_GET_CONFIG_REQUEST消息或者处理异步OFFeaturesReply(前提是当连接状态为非HandshakeState.HELLO);如果是VENDOR消息,则调用方法处理该消息或抛弃;如果是ERROR消息或STATS_REPLY消息,则调用相应方法处理;如果是PORT_STATUS消息,则按增、删、改三种状态分类处理;如果需要继续处理,则判断交换机是否处于未连接状态,是则结束流程,如果处于连接状态再判断是否是握手准备状态以及是否是备机,如果不是准备状态或是备机则结束流程,否则判断是否是PACKET_IN消息,是反序列化消息否则略过;再获取该类型消息***,通知相关模块处理消息事件;最后清理流量调度***上下文缓存。
拓扑管理模块通过遍历交换机的所有端口,并发送链路探测包,用于探测物理交换机网络的链路结构。获取的链路信息通过计算得出网络拓扑,周期性的遍历所有交换机发送LLDP报文,以即使将物理网络的拓扑变化,反映到流量调度***中。流量调度***可以对OF交换机进行分域。这里需要引入一个很重要的概念叫做OpenFlow域(简称OF域,下面将直接使用该简称),OF域指的是和同一个流量调度***中控制器实例相连的一组交换机。
OF域之间可以用二层的非OF交换机相连,例如:对于OFSwitch1--OFSwitch2—TraditionalSwitch—OFSwitch3网络部署,将会被看成两个OF域,第一个由OFSwitch1和OFSwitch2组成,第三个由OFSwitch3组成。拓扑管理模块会将当前所有的拓扑信息都被存储在一个拓扑实例中,任何Topo变化都会建立一个新的拓扑实例,并且通知监听者拓扑发生变化,如果其它模块需要监听拓扑变更,该模块就要实现ITopologyListener接口,并注册监听。该模块的核心流程是网络拓扑关系计算、更新操作。其关键处理流程如图7所示。
如图7所示,该流程首先判断链路是否有更新,如果有则判断链路增加还是删除并执行相应操作,如果没有则获取排除tunnel和广播域连接的所有OpenFlow连接信息,然后开始重新计算拓扑;计算步骤是先通过递归方式对OF交换机进行OF域划分,然后添加链接到OF域中,使用dijkstra算法计算最短路径,再计算OF域广播树,最后通知监听模块拓扑发生变化。
设备管理模块从PacketIn请求中得知获取设备信息,通过实体分类器将设备进行分类,并建立索引,默认的实体分类器使用MAC地址和VLAN标识一个设备。设备管理模块也可以获取到其它属性,如IP地址、最后一次被观察到的时间戳,甚至还可以获得该设备上次接入交换机的DPID及端口。设备管理模块同时负责维护另外一个重要的信息是设备的安装点,在一个OF域中,一个设备只能有一个安装点。
设备管理模块关键处理流程:PacketIn消息进入该流程后,从流量调度***的上下文中获取Ethernet对象,构建源实体。通过源实体信息从primaryIndex中获取deviceKey。如果deviceKey为空,则从实体分类器中查找deviceKey。如果deviceKey仍未找到,则创建deviceKey。构建该新device对象,添加到设备集合,并更新索引和设备更新列表。如果找到deviceKey,则通过deviceKey查找对应设备。判断该设备是否包含该实体(entity)信息。如果是则更新附着点,否则构建新device对象替换旧对象,再更新设备集合及索引。如果有待删除队列则构建设备删除更新加入变更列表,通知监听模块有设备发生变更;获取目标地址设备信息,结束流程。
流量智能识别分级:包括大象流、老鼠流。现在大多数用户主要的流量集中在音视频流、大数据量的文件传输等应用场景中,这些流是持久且负载较高的稳定流量。根据用户的使用习惯。所以根据协议可以将这些数据识别集中在音视频流、大数据流文件方面,现在主流的视频传输协议有RTP、RTSP。故通过协议对两类流进行区分是可行的。
大部分数据是以UDP和TCP为载体进行传输,故以TCP和UDP的端口号为评判标准进行数据包识别。大象流协议列表如表1所示。
表1大象流协议列表
协议类型 |
端口号 |
TP |
20/TCP、UDP |
RTSP |
554/TCP,UDP |
FTPProtocol(data)overTLS/SSL |
989/TCP,UDP |
远程桌面协议(RDP) |
3389/TCP |
RTPReal-timeTransportProtocol |
5004、5005/UDP |
X11 |
6000/TCP、6001/UDP |
PPS网络电视 |
17788/UDP |
对PacketIn消息的进行深度包检测,根据协议版本号、协议类型、信令等信息对数据包的类型进行识别。需注意,PaketIn的Payload默认长度是128,要通过控制器对Payload的长度定义为65535。
如图8所示,当进入交换机的数据包不能被匹配时,交换机将数据包封装在PacketIn消息中发送给控制器。在接收到OpenFlow消息后首先对其进行协议解析,确定为PacketIn消息后,将解析其data数据段,该段存放的是真实数据包信息。控制器将对数据包进行层层解析,确定其为TCP或UDP协议后,将根据其蜥蜴端口号进行在预先设定的排查表中查表匹配,对于匹配的数据包(即大象流)移交给选路模块。
链路状态统计:控制器通过StatsRequest信息获取交换机的实时状态信息,交换机回复的StatsReply包含了端口转发数据包的数量,这些信息在统计模块已进行收集,根据这些信息可以计算出端口的吞吐量。控制器可通过FeaturesRequest信息获取交换机的配置信息,主要是获取交换机的端口带宽信息。通过吞吐量和带宽相除可计算出链路利用率。根据计算出的数据可以设定链路的数据传输阈值,为下一步选路策略提供依据。实现了一条链路的状态获取,根据可行路径计算模块计算出的路径将其包含链路信息进行组合,便计算出路径状态信息,路径状态信息以吞吐量最大的链路为评判标准。
吞吐量计算公式:S=(N1-N2)/T;
链路利用率计算公式:U=S/B;
最优路径选择:利用可行路径计算和链路状态统计模块所提供的参数进行评测。按照链路长度、链路利用率的不同权重进行计算,将计算结果进行递减排序,结果数值最大的即为最优流量传输路径。不带权重的最优路径方案只需将以上方案去掉权重即可实现。图10是最优路径计算流程。
1)路径选择参数
最优路径选择的算法基于若干参数,包括路径长度、链路带宽、链路利用率等信息。下面将对这些参数进行详细阐述:
基于路径长度:该选路主要针对大象流,由于其数据量大且持续对到达目的主机的链路进行统计对比,在策略上将选择最短的路径进行传输。
基于链路利用率:该链路选择的策略以到达目的主机的多条链路为基础,策略先以其中一条链路为首选链路,所有数据转发均经过该链路,当吞吐量到达阈值时再转移其他链路,如此往复。
2)权重计算
将路径长度N的权重设为10,将链路状况的权重设为链路利用率U的倒数,设该路径链路数量为n,则最优路径选择系数W的计算公式为:
3)阈值策略
链路的状态决定了大象流是否可以通过,所以需要设置一个阈值(默认为链路利用率达到80%)以保证大象流的顺利通过。也就是说链路带宽利用率的大小决定了该条链路是否在路径备选范围之内。下面根据阈值将情况做一个细分,并针对不同情况执行不同的策略。
A、所有链路均未超过阈值:将链路利用率和路径长度分别作为权重进行计算以得到的最大值的路径为最优路径;
B、部分链路超过阈值,部分未超过:这时超过阈值的路径有两种情况:有路径不经过超过阈值的链路(情况(1))和所有可行路径都经过该链路(情况(2))
(1)将不经过超过阈值的链路按照1中方法计算;
(2)设置等待时间进行等待,在一个等待周期后对链路状况进行分析,若从阈值回落,则按情况(1)处理,若不回落继续等待,若一定周期后仍无回落,则丢弃。
4)基础算法分析
基于权重的最优路径计算,使用最优路径算法—Dijkstr_flyye1算法。使用该算法先求出最优路径,再求出次优路径,以此类推。算法思想如下:
以有向图作为算法参照图,设置两个集合,其中一个集合存储以计算的最优路径,另一个集合计算未计算好的最优路径。从原点到集合中每个顶点的权重均已标出。参照图理想的认为图中的没条链路均为双向链路,并且链路的两个方向均采用同样的权重信息。
带权重的有向图用G=(V,E)表示。加权函数为w,对所有的u∈V有d[u]=δ(s,u)用算法进行多次迭代,对每个顶点v∈S有d[u]=δ(s,u)对每个顶点u∈V,当u加入集合S时,d[u]=δ(s,u),在实现中以邻接矩阵表示。
本算法是以起始点为中心向外遍历,在遍历完所有节点算法结束。
决策调度:根据最优路径计算模块得出的最优路径,结合实际物理网络,统计和路径相关的交换设备。针对不同的交换设备进行转发策略的下发。获取最优路径后,调用统计管理模块,获取相关链路信息,在拓扑管理模块中获取相关交换机信息,根据交换机的dpid映射实际物理设备,设备管理模块确定交换机的TCP端口号,并确定下发流表端口,针对性编辑流表,协议插件管理模块进行消息封装后,发送FlowMod消息。
测试流程及数据分析
使用Mininet创建一个实验拓扑,如图11所示,该拓扑中包含三台交换机、10台主机,由于空间有限,故将主机用省略图表示。其中三台交换机采用两两相连的方式连成环状拓扑。该拓扑中主机和交换机的各端口的默认带宽均为10Gbps。该拓扑的Mininet创建代码如下所示:
其中,主机的IP地址分别为10.0.0.1—10.0.0.10,10.0.0.1—10.0.0.5和交换机S1的1—5端口相连。1.0.0.6—1.0.0.10和交换机S3的1—5端口相连。
iperf测试
客户端命令行,下面的5条命令分别作用在H1—H5的主机上,按照主机号加5的规律依次连接。
Iperf–c10.0.0.6–I1–n1000000000
Iperf–c10.0.0.7–I1–n1000000000
Iperf–c10.0.0.8–n1000000000
Iperf–c10.0.0.9–n1000000000
Iperf–c10.0.0.10–n1000000000
服务端命令行
Iperf–s-I1
运行情况如下所示
运行情况模拟:如图12所示,在***运行初期,传统网络和流量调度***均选择了最短路径算法。但是当S1—S2的链路流量增多时,链路吞吐量长上升态势。如图13所示,当吞吐量达到一定阈值后,传统网络仍使用原先路径,但SDN网络TE选择了另外一条可行的路线,直接的促进了数据的传输。
表2测试数据的时间—吞吐量关系表
时间(S) |
传统网络TE(Gbit/s) |
SDNTE(Gbit/s) |
0 |
0 |
0 |
1 |
0.7 |
0.7 |
2 |
1.3 |
1.3 |
3 |
1.9 |
1.9 |
4 |
2.5 |
2.5 |
5 |
3 |
3 |
6 |
3.4 |
3.5 |
7 |
3.7 |
4 |
8 |
3.9 |
4.4 |
9 |
4.1 |
4.9 |
10 |
4.25 |
5.3 |
11 |
4.35 |
5.7 |
12 |
4.35 |
6.1 |
13 |
4.35 |
6.5 |
14 |
4.35 |
6.8 |
15 |
4.35 |
7.1 |
16 |
4.35 |
7.35 |
17 |
4.35 |
7.55 |
18 |
4.35 |
7.7 |
实验测试的数据在表2中有体现,在图14中展现了时间—吞吐量关系图的曲线走势。试验中5个客户端主机按照总计20秒的时间,均分成5个时刻加载到链路上。图14中,在刚开始的0—8s内传统网络的TE曲线和SDN网络的TE曲线几乎重合。随着时间的推移传统网络的TE曲线在8s时和SDN网络的TE曲线出现分离,并且传统网络的TE曲线趋于平缓,吞吐量最终趋于4Gbps,而SDN网络的TE曲线依旧呈现增长态势,直到趋向于8Gbps为止。
根据图14中数据分析,传统网络和SDN网络TE在刚开始均使用同一链路。使用传统网络的TE在8s时最短路径已经趋近饱和状态,所以吞吐量指数趋于平缓。然而在使用了SDN网络的TE后,***实时的感应到链路状态的变化,选择了最优的路径S1—S2—S3,这时链路的等效吞吐量还在上升。
表3测试数据的吞吐量—带宽利用率关系表
吞吐量(G) |
传统网络TE(%) |
SDNTE(%) |
0 |
0 |
0 |
0.5 |
11 |
11 |
1 |
22 |
22 |
1.5 |
32 |
31 |
2 |
44 |
41 |
2.5 |
55 |
50 |
3 |
65 |
59 |
3.5 |
74 |
68 |
4 |
80 |
71 |
4.5 |
85 |
72.5 |
5 |
88 |
73.5 |
5.5 |
90 |
74 |
6 |
91 |
74 |
6.5 |
92 |
74 |
7 |
92.5 |
74 |
7.5 |
92.5 |
74 |
8 |
92.5 |
74 |
8.5 |
92.5 |
74 |
9 |
92.5 |
74 |
9.5 |
92.5 |
74 |
实验测试的数据在表3中有体现,在图15中展现了吞吐量—带宽利用率关系图的曲线走势。图中的网络的TE曲线代表传统网络的TE,SDN网络的TE曲线代表SDN网络的TE,在刚开始的0—3.5Gbps内网络的TE曲线和SDN网络的TE曲线几乎重合。随着吞吐量的增加网络的TE曲线在3.5Gbps时和SDN网络的TE曲线出现分离,并且网络的TE曲线趋于平缓,带宽利用率最终趋于92.5%,而SDN网络的TE曲线依旧呈现增长态势,直到趋向于74%为止。
根据图15中数据分析,传统网络和SDN网络TE在刚开始均使用同一链路。使用传统网络的TE在3.5Gbps时最短路径已经趋近饱和状态,所以吞吐量指数趋于平缓。然而在使用了SDN网络的TE后,***实时的感应到链路状态的变化,选择了最优的路径S1—S2—S3,这时链路的等效吞吐量还在上升。