一种基于任务驱动的自适应SDN仿真系统及仿真平台的制作方法

文档序号:16847932发布日期:2019-02-12 22:28阅读:309来源:国知局
一种基于任务驱动的自适应SDN仿真系统及仿真平台的制作方法

本发明属于sdn仿真技术领域,特别是涉及一种基于任务驱动的自适应sdn仿真系统及仿真平台。



背景技术:

opendaylight(odl)是一套基于sdn开发的模块化、可扩展、可升级、支持多协议的控制器框架,主要包括switchmanager、statisticsmanager、topologymanager、forwardingrulemanager、arpmanager等模块,可对其管理的网络设备进行统一管理与配置。鉴于sdn设备较为昂贵,组网成本太高,因此,目前多数基于sdn的科研是基于mininet展开的。

mininet是一个轻量级sdn和测试平台。它可以完成以一个单一系统模拟完整网络所需的内核系统和用户代码的运行,支持openflow、openvswith等多种相关协议,有助于互动开发、测试和演示。然而,其图像化程序较为简陋,且运行不稳定,需要采用命令行方式,构建的网络较为抽象。同时,它不能根据环境实时检测网络运行状态和网络数据并进行自适应调整,所需的实验数据只能通过间接测量,增加了实验的复杂性。



技术实现要素:

本发明目的是为了解决现有技术中的问题,提供了一种基于任务驱动的自适应sdn仿真系统及仿真平台。本发明可快速自适应地建立基于任务驱动的sdn(softwaredefinednetwork,软件定义网络),并可根据需要实时检测网络各状态指标,以进行网络动态响应与自适应调整。

本发明是通过以下技术方案实现的,本发明提出一种基于任务驱动的自适应sdn仿真系统,包括图形化控制平台、控制器模块以及虚拟网络环境;

所述图形化控制平台基于mininet原始模型实现图形化操作自定义网络拓扑及相关配置,用于完成基于任务驱动的各种命令操作,并提供可编程接口供基于任务的个性化命令设计使用;

所述控制器模块包括多个控制器,所述控制器利用hosttracker模块封装成python函数调用rpc,实现以ip地址作为参数,寻找对应的mac地址以及连接的交换机信息,从而实现主机定位功能;所述控制器利用流表控制网络的动态拓扑变化以实现虚拟网络管理与检测功能;所述控制器利用topologymanager模块主动收集网络设备的运行状态,将其有用信息进行提取、分析,进而实现实时监控;

所述虚拟网络环境是基于mininet的仿真网络环境,用于接收用户请求,按照用户的需要构建并配置网络拓扑结构,生成网络流量和构建web服务器。

进一步地,所述虚拟网络环境包括一个虚拟控制器,虚拟控制器通过虚拟链路连接一个或多个虚拟交换机,每个虚拟交换机通过虚拟链路连接一个或多个虚拟主机。

进一步地,所述控制器实现实时监控包括对网络时延的计算,计算过程具体为:控制器发送特定数据包到虚拟交换机,在数据包到达的虚拟交换机上给该数据包打上时间戳,并以广播形式发送给相邻的虚拟交换机,虚拟交换机接收到该广播数据包再打上时间戳并用主动获取或被动获取的方式将该数据包发送到控制器,在控制器中把两次时间戳取出并相减即可得到这条链路的时延大小。

进一步地,所述图形化控制平台包括接收模块、发送模块、监视模块、控制模块、日志模块和可编程接口;

所述接收模块:用于接收控制器收到的底层网络信息,进行解析信息并归类,汇总给控制模块,从而实时向监视模块反映网络状态;

所述发送模块:用于发送控制模块下发的各种信息,从而使控制信息实时传送给指定的目的以完成基于任务的网络自适应调整和安全防范响应;

所述监视模块:用于定时对底层网络和控制器进行检测,返回网络各个响应的结果,一旦出现设备故障或网络流量异常就上报给控制模块,进行网络安全攻击防范响应;

所述控制模块:用于接收用户发出的任务和安全响应操作,实现对网络的配置和管理,并根据图形化操作界面,任意添加/删除网络设备及必要的网络设置,建立设备之间的通信链接;同时,调用控制器的流表下发或删除相关操作实现路由器管理,进而实现流量管理;

所述日志模块:用于实时记录网络变化,并提供日志检索功能,对大量收集的日志数据进行整理和筛选,生成专业且利于用户阅读格式的报告;

所述可编程接口:用于提供接收控制命令接口,制定标准命令设计格式,基于odl可编程的特性,提供基于任务的个性化命令设计,完成sdn控制。

本发明还提出一种基于任务驱动的自适应sdn仿真平台,包括虚拟网络层、控制器层和应用层;

所述虚拟网络层是基于mininet构建仿真网络环境的流程,用于接收用户请求,按照用户的需要构建并配置网络拓扑结构,生成网络流量和构建web服务器;虚拟交换设备根据流表规则进行转发,对无法判断的数据封装成openflow数据发送到控制器层;

所述控制器层是基于odl控制器进行的二次开发,搜集底层网络状态信息,提供restconf接口进行虚拟交换设备的配置和网络状态信息的提供,将返回结果提供给应用层,接收应用层的格式化请求配置底层网络设备;

所述应用层用于接收用户的操作请求,对请求进行判断处理,分别交给虚拟网络层和控制器层完成相应的功能,将控制器层收集的json格式的数据进行分析解释后显示到界面上。

进一步地,所述界面上包括设置显示路由的拓扑结构控制台和实时监控网络状态信息的显示区。

进一步地,所述控制台界面包括:可供构建网络拓扑区的网络区域以及网络设备菜单可直接拖动虚拟交换机、虚拟主机、虚拟控制器和虚拟链路图标到网络区域形成整体拓扑结构,并且在网络区域右键网络设备或虚拟链路可弹出菜单,可对网络设备和虚拟链路进行配置或进入终端进行配置。

进一步地,所述显示区用于观察网络整体的信息,所述信息包括可用的主机列表及详细信息、虚拟交换机的运行状况、整个网络的带宽占用情况和任意连接两设备间的网络时延。

本发明设计的基于任务驱动的自适应sdn,基于mininet设计更具人性化设计的图形化控制平台,设计基于odl的检测模块。本平台可提高程序运行的稳定性,检测网络各项状态,并根据任务或检测结果对网络进行实时自适应调整,实时结果和相关参数显示在图形化控制平台上。

附图说明

图1是本发明所述基于任务驱动的自适应sdn仿真系统的框架图;

图2为网络时延流程图;

图3为本发明所述基于任务驱动的自适应sdn仿真平台架构图;

图4为网络自适应调整中的网络拓扑图;

图5是网络攻击防御实例图。

具体实施方式

下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1-5说明本实施方式,本发明将控制器模块与图形化控制平台分离,并将其分别运行在不同的虚拟机中,图形化控制平台通过rpc调用控制器模块,并利用json传输数据;而对其他模块的调用则通过get、post提交请求到相关页面等方式来获取数据,并将其设置或显示到图形化控制平台。控制平台通过捕获用户基于任务需求设定的各种配置信息,生成设置报文并发送到控制器端以激发网络进行自适应调整。

如图1所示,本发明提出一种基于任务驱动的自适应sdn仿真系统,包括图形化控制平台、控制器模块以及虚拟网络环境;

所述图形化控制平台基于mininet原始模型实现图形化操作自定义网络拓扑及相关配置,用于完成基于任务驱动的各种命令操作,并提供可编程接口供基于任务的个性化命令设计使用;

所述图形化控制平台包括接收模块、发送模块、监视模块、控制模块、日志模块和可编程接口;

所述接收模块:用于接收控制器收到的底层网络信息,进行解析信息并归类,汇总给控制模块,从而实时向监视模块反映网络状态;

所述发送模块:用于发送控制模块下发的各种信息,从而使控制信息实时传送给指定的目的以完成基于任务的网络自适应调整和安全防范响应;

所述监视模块:用于定时对底层网络和控制器进行检测,返回网络各个响应的结果,一旦出现设备故障或网络流量异常就上报给控制模块,进行网络安全攻击防范响应;

所述控制模块:用于接收用户发出的任务和安全响应操作,实现对网络的配置和管理,并根据图形化操作界面,任意添加/删除网络设备及必要的网络设置,建立设备之间的通信链接;同时,调用控制器的流表下发或删除相关操作实现路由器管理,进而实现流量管理;

所述日志模块:用于实时记录网络变化,并提供日志检索功能,对大量收集的日志数据进行整理和筛选,生成专业且利于用户阅读格式的报告;并且还会通过相关算法对网络的状态做出智能的总结;

所述可编程接口:用于提供接收控制命令接口,制定标准命令设计格式,基于odl可编程的特性,提供基于任务的个性化命令设计,完成sdn控制。

所述控制器模块包括多个控制器,所述控制器模块基于odl控制器进行二次开发设计restconf接口,主要利用switchmanager、statisticsmanager、topologymanager、forwardingrulemanager、arphandler和hosttracker等模块,实现主机定位、虚拟网络设备的管理、网络状态的实时监控和响应等功能,并设计相关接口以供调用,具体为:所述控制器利用hosttracker模块封装成python函数调用rpc,实现以ip地址作为参数,寻找对应的mac地址以及连接的交换机信息,从而实现主机定位功能;所述控制器利用流表控制网络的动态拓扑变化以实现虚拟网络管理与检测功能,相比于传统控制器端难以理解的流表字段,本发明将流表格式分解,按照可选项进行自定义设计,并可以判断设置的流表格式是否正确给以提示;所述控制器利用topologymanager模块主动收集网络设备的运行状态,将其有用信息进行提取、分析,进而实现实时监控(通过统计运算,可获取指定设备的吞吐量、丢包率、网络带宽等信息);所述控制器实现实时监控包括对网络时延的计算,计算过程具体为:控制器发送特定数据包到虚拟交换机,在数据包到达的虚拟交换机上给该数据包打上时间戳,并以广播形式发送给相邻的虚拟交换机,虚拟交换机接收到该广播数据包再打上时间戳并用主动获取或被动获取的方式将该数据包发送到控制器,在控制器中把两次时间戳取出并相减即可得到这条链路的时延大小,如图2所示。

所述虚拟网络环境是参考mininet自行设计仿真网络环境,用于接收用户请求,按照用户的需要构建并配置网络拓扑结构,生成网络流量和构建web服务器等功能。所述虚拟网络环境包括一个虚拟控制器,虚拟控制器通过虚拟链路连接一个或多个虚拟交换机,每个虚拟交换机通过虚拟链路连接一个或多个虚拟主机。

结合图3,本发明还提出一种基于任务驱动的自适应sdn仿真平台,包括虚拟网络层、控制器层和应用层;

所述虚拟网络层是参考mininet自行设计仿真网络环境,用于接收用户请求,按照用户的需要构建并配置网络拓扑结构,生成网络流量和构建web服务器;虚拟交换设备根据流表规则进行转发,对无法判断的数据封装成openflow数据发送到控制器层;

所述控制器层是基于odl控制器进行的二次开发,搜集底层网络状态信息,提供restconf接口进行虚拟交换设备的配置和网络状态信息的提供,将返回结果提供给应用层,接收应用层的格式化请求配置底层网络设备;其中控制器可开启web服务界面,可远程访问控制器的ip地址及配置的端口,经过身份验证完成后可利用提供的restconf接口采用json格式的数据管理控制器下的网络设备或者获得网络信息,并可通过rpc技术来获得数据进而进行分析或达到可编程的自动化控制。

所述应用层用于接收用户的操作请求,对请求进行判断处理,分别交给虚拟网络层和控制器层完成相应的功能,将控制器层收集的json格式的数据进行分析解释后显示到界面上。所述界面上包括设置显示路由的拓扑结构控制台和实时监控网络状态信息的显示区。所述控制台界面包括:可供构建网络拓扑区的网络区域以及网络设备菜单可直接拖动虚拟交换机、虚拟主机、虚拟控制器和虚拟链路图标到网络区域形成整体拓扑结构,并且在网络区域右键网络设备或虚拟链路可弹出菜单,可对网络设备和虚拟链路进行配置或进入终端进行配置。所述显示区用于观察网络整体的信息,所述信息包括可用的主机列表及详细信息(如:ip地址、mac地址、连接的交换机端口等)、虚拟交换机的运行状况(如:某端口接收包数量、转发包数、错误包数、丢包数、处理时延)、整个网络的带宽占用情况和任意连接两设备间的网络时延。

基于如上所述的实施例的方案,通过虚拟网络层、控制器层和应用层的三层架构,提供能支持一套完整流程的仿真环境,从而可以据此提高仿真过程协同效率,且稳定可靠性高,并依此进行相关实验。

具体的实验步骤:创建所需的网络拓扑;配置相关虚拟网络设备,如:网络设备和控制器端ip、虚拟交换机的基本交换规则等;连接到控制器;实验并收集网络信息;实验结果验证与分析。根据不同的题目可设计不同的实验,本实施例给出如下几例实验:

1、基本操作实施例

控制台界面的左侧为可拖动到构建网络拓扑区的虚拟设备图标,控制台中间区域为构建网络拓扑区,右侧区域为网络环境相关数据显示台。

根据用户需要构建网络拓扑:例,需在控制台拖动2个主机和4个交换机的图标到指定区域后,在该区域用指定的图标“链路”分别点击有通信关系的两设备建立连接即可。网络设备有默认的名称、ip和mac地址等信息。如果需要更改信息,可点击图标,右键选择“设置”,即可进行相应配置。也可以右键选择进入“终端模式”进行配置,并且可以在终端模式下开启简单的web服务,与控制器模块进行实时通信以自适应更新控制平台的各项数据。而且,虚拟交换设备还可以配置端口连接,流表操作等。

如果需要有控制器的进行控制的拓扑环境,需要对“控制器”图标进行设置,输入控制器的ip地址、端口、登陆用户名和密码等信息。点击菜单项中的开始,即可对整个网络拓扑的结构进行验证和网络信息的搜集并显示到控制台界面的显示区。如果外部控制器因网络问题或控制器本身原因无法连接,会给出提示信息。点击菜单栏中的主机信息,将以列表的形式展现所有的网络设备的详细信息,包括主机名、ip地址、mac地址等。点击交换机信息或在网络拓扑区点击交换机右键查看详细信息即可获得交换机的端口连接情况,包括端口连接情况、链路是否活跃、收包数、丢包数等。点击主机追踪输入ip或mac地址即可获得所需的主机链接的交换机名称。外部控制器链接无误后,可事先设定搜集信息的频率,如设为3秒,界面的右边将每3秒更新数据。

2、网络自适应调整实施例

假设在图4的网络拓扑中,a与b进行通信。二者之间的路由有两条:a-s1-s3-b和a-s2-s4-s3-b。按照传统的dijkstra算法,依照最短路径优先策略,通信链路将选择第1条路由。然而,在s1处理能力下降或者s1-s3网络阻塞时,该算法无法进行自适应调整;本发明设计改进的路由算法,使之考虑网络阻塞情况并自动调整路由以实现负载均衡。首先打开应用程序,上述的应用层可为使用者提供方便的图形化操作界面。在控制台拖动2个主机和4个交换机的图标到指定区域后,在该区域用指定的图标“链路”分别点击有通信关系的两设备建立连接。设置优先的路由为a-s1-s3-b:具体操作为:

(1)设置s1为传统交换机模式:点击在网络拓扑图s1的图标上右键,点击“流表配置”,点击“流表配置”,增加一条流表项将“action”项设定为“normal”;

(2)配置s1的流表项,将a的流量转发至s3(设置传统交换机模式可省略此步骤):点击s1图标右键,点击“流表配置”,点击“增加流表项”,增加1条流表项,将流表项“inport”设为连接a的s1物理端口号,“output”设置为连接s3的s1物理端口;

(3)s3可配置传统交换机模式或手动设置将ip为a的流量发送给主机b:操作同上。

(4)同理可配置s2和s4。

(5)在虚拟主机a的图标上右键,点击“进入终端”,在终端上使用命令ping主机b使网络产生流量,在界面显示区可观察到网络整体的信息。

在控制器端监控所有交换机的运行状况,当通过吞吐量发现s1的处理能力接近设定的阈值或s1-s2网络延迟较高时,可自适应调整流表并精确下发,从而a到b的流量改为通过s2-s4的路由,从而实现网络动态自适应调整,并达到负载均衡效果。也可利用平台可编程模块,结合本发明基于网络信息的自适应路由生成算法来实现基于任务驱动的链路自适应调整。

具体的路由算法大致如下:参考dijkstra算法,预先设定相关因素的影响因子值,例如时延占50%,吞吐率占20%等,将路径权值的计算公式设置为:

路径权值l=∑影响因素*影响因子值

当连接上控制器后,通过本发明提供的gettpo函数获得所有网络设备名称及其连接状态存储在数组arcs[v][k],通过getinfo函数获得吞吐率、时延等参与路径权值的计算,当s1-s3的网络时延较高并达到一定阈值时,改进的算法将选择s2-s3路由,具体的过程如下:

(1)调用主机追踪功能确定a连接的s1,调用控制器端的arp模块更新主机a中arp缓存b对应mac为s2。

(2)若是交换机si有多个路由选择,判断最短路径上的下一个路由sn,调用addflow函数添加流表将“match”项设置为源主机对应的mac地址,“action”设置为sn物理端口,下发到si函数成功将返回提示信息。

3、任务驱动实施例

本项目可针对用户的实际需要,可在控制平台上设计个性化任务流程,充分利用平台控制器功能、openflow协议和虚拟网络的配置,为对odl控制器的直接操作、防火墙的相关配置和真实物理设备的配置预留必要的接口。

例如:模拟某一真实网络需求的实施例,过程如下:根据某种需求,需要切断h1的网络链接,但网络管理员在外工作无法直接通过物理隔断h1,因此需要通过控制平台下发流表等信息来阻断h1的网络访问,并通过软件验证。具体的操作步骤如下:

(1)构建合理的网络拓扑并链接到控制器。

(2)在本机上访问控制器web界面(只要是能连接到控制器ip的主机都可以),在浏览器输入控制器的ip和端口连接到控制器的web控制台。

(3)在module中选择topologymanager模块,点击send,返回整个c1控制器下的网络设备的名称、ip和mac等信息。

(4)在module中选择hosttracker模块输入h1的ip或者mac地址,点击send,返回h1链接的交换机s1及与h1链接的端口等信息。

(5)利用控制器端下流表到s1的方式drop所有的h1流量,选择flow-node-inventory模块进行流表下发(具体的流表格式参照openflow协议)。

(6)在软件端验证即可发现在h1运行ping任意地址均无法到达则证明,在网络拓扑区会发现h1和s1之间的链接消失,右边显示区的s1的丢包数量增大。

4、网络攻击防范实施例

本发明平台可模拟典型的网络攻击与防范。平台可设定网络中虚拟设备的外部ip地址,设定虚拟网络环境中的带宽、延迟及丢包率等,通过外部主机进行攻击,测试对虚拟网络的影响,并可通过本平台实时收集的网络各类信息在操作界面上直观地体现动态过程。

例如:在图5所示实施例拓扑中,攻击者在外部向虚拟交换机发送大量的ip为a但对应mac为攻击者主机的arp广播(arp欺骗)来实现对a主机的断网攻击,或对a和s1的双向欺骗来实现中间人攻击。实施例在虚拟主机a上设置简单的web站点,攻击者制造大量流量使a直连的s1处理能力下降模拟dos攻击(可通过b对a的站点访问失败来验证)。另外,其他常见的ddos,如syn、arp泛洪等均可通过该平台进行测试。

具体的实施步骤如下:

(1)搭建网络拓扑。

(2)进入s1的虚拟终端,执行add-ports1网卡名,将与hacker位于同一局域网的网卡桥街道s1网桥上。

(3)进入虚拟主机a开启web服务器,执行命令python-msimplehttpserver80,关闭web服务执行kill%python。

(4)攻击者进行攻击。

(5)进入虚拟主机b中,执行wgeta对应ip,可查看a主机的web服务,并可获得处理的时间等信息,验证攻击成功。

(6)对攻击进行防御策略,通过带宽,网页返回时间等验证采取措施是否起到作用。

在受到攻击时,可人为地在本发明平台中,从控制台设置流表并下发到相应的交换机上及时阻断恶意流量,也可利用本平台提供的可编程接口进行编程操作下发信息和相应的流表到控制平台来实现对网络攻击的及时发现与防御。以下给出几例处理方案:

(1)针对单一流量型dos攻击,设置定时器定时获得网络剩余带宽,当发现可用带宽急剧减少时,获得网络中吞吐量最大的交换机si,改变si交换机传统模式的优先级,设置流量项“match”字段为hacker的主机ip,“action”为drop下发到si,进而拒绝hacker的流量访问。

(2)针对syn泛洪攻击,可设计流表项“match”为tcp,定时统计syn数据包的个数,在单位时间内超过一定值的记录ip,采用上述方式进行流量过滤。

(3)针对局域网内arp欺骗型的攻击,对超过一定arp广播次数的主机h,调用hosttrack模块确定直接连接的交换机s1,关闭h连接的端口,防止跨子网的广播进一步可以配置s1绑定静态arp防止攻击。

以上对本发明所提供的一种基于任务驱动的自适应sdn仿真系统及仿真平台,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1