一种分布式人工神经网络在SDN上的配置和交互方法与流程

文档序号:13250457阅读:222来源:国知局
技术领域本发明涉及分布式人工神经网络领域,更具体的,是涉及一种分布式人工神经网络DANN(DistributedArtificialNeuralNetwork)在SDN上的配置和交互方法。

背景技术:
SDN是新型的基于软件技术的网络体系结构,从技术上解决的TCP/IP传统网络架构的网络扩展性、安全性、业务承载能力的限制,是一种动态的网络运作模式。人工神经网络ANN是一种仿生物的结构和功能的数学模型,由大量的神经元进行计算,能够在外界信息的基础上改变内部结构的自适应系统。ANN通常表现为相互连接的“神经元”,神经元可以通过网络馈送信息计算输入值。ANN通常包括自适应权重的集合,即通过学习算法调整数值参数,权值就类似于大脑的记忆,在概念上为神经元之间的连接强度。Qt是一个跨平台的应用程序框架,可以完美运行于Linux、MacOSX、Windows。通过使用Qt,可以一次性开发应用程序和用户界面,然后将其部署到多个桌面或者操作系统中,无需重复编写源代码。目前基于人工神经网络在SDN的交互界面屈指可数,很多控制器尽管有UI界面,但是并没有关于神经网络的设置,设计思路一般也仅是对人工神经网进行简单的资源探测,缺失友好的交互界面,易操作性和灵活性大打折扣。

技术实现要素:
针对现有技术存在的局限,本发明的目的是提供一种分布式人工神经网络在SDN上的配置和交互方法,该方法能够在SDN网络上通过图形交互界面对人工神经网进行配置,并获取当前已有神经网络的资源的信息反馈到界面上。为解决上述技术问题,本发明的技术方案如下:一种分布式人工神经网络(DANN)在SDN上的配置和交互方法,方法包括前端,服务器端,SDN控制器,交换机,主机,数据库构成,其中服务器端负责与SDN进行管理,前端把用户的操作指令组成JSON字符串发送至服务器端,服务器端作为前端与控制器的枢纽部件,主要功能是将前端用户需求准确的传递给控制器,并将控制器返回的数据或者错误提示返回前端。前端主要是Qt框架实现,前端主要负责SDN流表增加,流表删除,网络拓扑信息等一系列操作的可视化。数据库主要是完成控制器计算资源模块的计算结果的预处理、存储、同步一系列数据的相关操作,并在需要的时候返回到前端进行展示。各部件具体设计方法如下:整体系统的设计方法是:(1)基于DANN在SDN上的配置和交互系统包括三个层面:数据获取层,数据存储与处理层,展示层。(2)设计数据获取层,首先,通过在控制器上构建组件应用来订阅底层基础网络的相关事件来获取数据。第二,通过链路发现方法和资源计算方法,获取需要的网络拓扑和资源数据。获取当前SDN系统中的神经网络的拓扑结构和相应的资源数据情况。(3)设计数据存储和处理层,利用资源计算模块得出的资源数据进行预处理判断数据格式和内容的正确性,使用MySQL数据库进行存储。(4)设计展示层,展示层使用MVC架构,MVC中的控制器负责将Qt界面UDPSocket传送的JSON数据放置到适当的模型中,并对数据库进行存储同步。而后将模型中的数据展示到视图。流表的添加方法:(5)从前端开始添加流表,在界面完成相关参数的设置;(6)拼接向控制器发起的请求,发送到服务器端;(7)控制器收到服务器端发送过来的请求进行处理。(8)查询流表中是否存在流表项与欲添加流表同名的,假设存在,返回带有该流表信息的JSON字符串。若没有则判断欲添加的流表是否满足依赖关系,满足条件就添加新流表,向服务器端返回流表项信息的JSON字符串。否则,添加流表失败,返回错误类型信息并在前端提示用户;(9)用户如果还需要添加新流表项则继续执行步骤(5);删除流表的方法:(10)在前端输入想要删除的流表项的流表名字;(11)设置完流表名后拼接请求发送至服务器端,服务器预处理后想控制器发起请求。(12)控制器收到服务器端发送过来的请求之后进行处理。(13)判断流表中是否存在同名的流表项,若不存在同样返回错误类型并在前端进行提示。若存在同名流表项,则进行删除并返回相应的信息提示流表已经删除;拓扑信息采集方法:(14)在前端设置需要采集的拓扑信息,包括主机,交换机,控制器等。(15)在前端拼接请求采集信息的JSON字符串,发送至服务器端。(16)服务器端进行数据预处理之后发送至控制器,控制器判断请求格式的正确性,不正确则返回错误类型并在前端进行提示,若是正确进行下一步。(17)控制器端获取相应的数据,并封装成数据模型,返回至服务器端。(18)服务器端进行解析,创建一个模型对象进行解析,每一项拓扑信息就是该模型的一个属性,通过Map映射到相应的模型对象。(19)服务器端把获取到数据更新到数据库。(20)若是需要继续获取拓扑信息,返回(14)。与现有技术相比,本发明技术方案的有益效果是:本发明提出的一种人工神经网络在SDN上的配置和交互方法,具体地说是在软件定义网络上的人工神经网络的配置、自定义和交互的界面实现方法,适用于非专业用户对SDN的操作。本发明提出的一种分布式人工神经网络DANN(DistributedArtificialNeuralNetwork)在SDN上的配置和交互方法,该方法通过在Linux系统下基于Qt开发的一套GUI(GraphicalUserInterface)图形用户交互,提供可视化窗口、菜单、图标等直观方式方便非专业用户配置DANN的操作方法。实现SDN网络中配置和交互系统的设计,SDN网络中流表的增加和删除,实现攻击类型检测,搭建一到多个人工神经网络,按照时间改变防御方向,周期训练模型参数等等功能,还可探测SDN网络的系统资源,如交换机、虚拟机以及网络拓扑情况的获取,通过交互界面展示统计数据。本发明实现了基于DANN(人工神经网络)在SDN网络管理系统上的自定义的方法、数据获取层获取网络资源信息的计算方法、数据存储与处理层总体设计方法、展示层设计与实现方法。附图说明图1是DANN在SDN网络中的配置和交互的系统架构图。图2是该系统的物理拓扑探测模块与数据计算与存储模块设计。图3是流表添加的流程图。图4是流表删除的流程图。图5是拓扑信息查看流程图。具体实施方式在下文描述中,出于解释目的,陈述众多实例及细节以便了解特定实施例。然而,对所属领域的技术人员显而易见的是,可在没有这些细节中的一些的情况实行某些实例。本系统是基于SDN分布式安全系统基础平台,提出一种用户友好的自定义DANN的灵活控制的GUI。一种分布式人工神经网络在SDN上的配置和交互方法,包括SDN网络拓扑创建、拓扑信息采集、SDN网络拓扑信息的展示、流表的添加和流表的删除。其中SDN网络拓扑创建方法包括:界面提供下拉列表,以供用户选择需要的创建的拓扑类型,比如6-4-1就表示输入层含有6个神经元,中间层含有4个神经元,输出层含有1个神经元;定制拓扑类型之后,系统开始建立各部分的逻辑关系,各部件一般包括:前端实现配置、交互DANN可视化,比如流表增删,拓扑创建或拓扑信息捕获等操作可视化。与前端密切联系的服务器端组件,用于及时把界面的用户操作需求传送到SDN控制器,以便控制器管理网络。数据库部分负责数据的存储与同步,是信息展示不可或缺的组件,是整个系统的数据中心。控制器显然是整个系统的大脑,交换机负责采集各种类型的数据包以便攻击类型检测。构建上述步骤的拓扑的逻辑关系,即上述各组件之间连接关系,包括SDN控制器,OpenFlow交换机、底层的主机组成网络拓扑,控制器连接交换机,交换机连接控制器或主机、交换机,控制器通过交换机对底层的主机进行管理配置,完成所需物理网络搭建。其中SDN拓扑信息采集方法是:数据存储与处理层实现了对拓扑数据的更新与处理功能,从数据处理部分获取到相应需要采集的拓扑信息,一般是指SDN控制器,交换机内存特性、网卡特性、CPU特性,主机,链路,交换机端口等相关信息。在确定了需要采集的信息之后,构建所需采集信息的命令,通过服务器端与SDN控制器的发起拓扑信息采集请求。采集方式是通过基于SNMP(SimpleNetworkManagementProtocol,简单网络管理协议)和LLDP(LinkLayerDiscoveryProtocol,链路发现协议)的二次开发进行获取数据。控制中心使用LLDP,该协议实现了标准的链路发现的方法,能够把设备自身的设备标识,接口标识,管理地址等相关信息组合成TLV(Type/Length/Value,类型/长度/值),接着封装成链路层发现协议数据单元发送给直接连接的设备,以MIB管理信息数据库的方式保存这些信息。控制器获取到从服务器发送过来的请求之后,会对前端请求获取的拓扑信息进行预处理,假设格式错误则在预处理模块返回错误并对错误类型予以提示,不再继续进行其他操作;若是格式正确则进行下一步。控制器解析JSON字符串,获取请求信息的类型,将所需信息封装成规定的JSON格式的字符串返回到服务器端。服务器收到控制器返回的拓扑信息,因为返回信息的格式是JSON字符串,需要对其进行JSON解析到相应的模型,JSON对应的key就是model类的属性,将JSON数据的value赋值到对应的model属性以保存。最后调用操作数据库的方法将拓扑信息更新或者存储到数据库中。由于网络拓扑信息是实时变化的,因此获取网络拓扑信息就应该是周期的任务,每隔一段周期就获取一次拓扑信息,周期重复上述步骤。其中SDN网络拓扑信息的展示的方法为:设计展示层,展示层使用MVC架构,MVC中的控制器负责将Qt界面UDPSocket传送的JSON数据放置到适当的模型中,并对数据库进行存储同步。而后将模型中的数据展示到视图。用户通过界面选择需要查看的拓扑信息,确定之后执行下一步;前端与服务器端通信,服务器端提供获取特定拓扑信息的方法读取数据库中所需的拓扑信息的最新值,所获取的拓扑信息来自控制中心。假设对应的拓扑信息不存在,则返回错误类型并予以相应的提示。前端收到服务器端返回的信息数据后,解析其封装的对象,在实现了拓扑信息的可视化。其中流表的添加方法包括:开始添加流表,主要是在前端完成。其具体操作是,配置需要添加流表的相关参数,设置完成后进行下一步;前端发送到服务器端,服务器端对相关参数进行预处理,拼接请求发送到控制器;控制器接收来自服务器的请求后,判断其格式的正确性,若不正确直接返回错误信息并提示重新增加流表,若正确则执行下一步;判断流表中是否存在与将要添加的流表同名的流表项,若存在则不再做任何处理直接返回带有entrypushed信息的JSON字符串。假设不存在同名的流表项,则判断所要添加的流表项能否满足所有的依赖关系,假设满足则满足条件就添加新流表,向服务器端返回流表项信息的JSON字符串。否则,添加流表失败,返回错误类型信息并在前端提示用户。其中流表的删除方法包括:在前端输入想要删除的流表项的流表名字;设置完流表名后拼接请求发送至服务器端,服务器预处理后想控制器发起请求。控制器收到服务器端发送过来的请求之后进行预处理。判断流表中是否存在同名的流表项,若不存在同样返回错误类型并在前端进行提示。若存在同名流表项,则进行删除并返回相应的“流表项deletesuccess”信息通过Qt框架的弹窗控件提示流表已经删除。本发明的各方面可以具体实现以下功能:物理网络实时拓扑,流表实时管理,用户自定义DANN,OpenFlow交换机资源管理,展示层显示实时拓扑和相应资源情况,数据存储、同步和处理层的设计。在步骤101中,数据获取层是在DANN拓扑采集模块中实现,数据获取层的实际目的就是为了获取当前SDN系统中的神经网络的拓扑结构和相应的资源数据情况。在步骤102中,数据存储和处理层利用资源计算模块得出的资源数据进行预处理判断数据格式和内容的正确性,使用MySQL数据库进行存储。在步骤103中,因为SDN分离是一种集中式管理的网络设计架构,所有对网络的控制、管理均存在于控制器。因此,对网络信息和资源的数据获取必须通过控制器的通信。本发明采用的控制器是POX控制器,POX是一个事件驱动的网络控制器,采用发布-订阅模式。数据获取层的设计步骤为:1.通过在控制器上构建组件应用来订阅底层基础网络的相关事件来获取数据。2.通过下述的链路发现方法和资源计算方法,获取需要的网络拓扑和资源数据。数据存储与处理层主要存储获取的网络拓扑及资源数据。作相应的处理后,到前端展示。展示层使用MVC架构,MVC中的控制器负责将Qt界面UDPSocket传送的JSON数据放置到适当的模型中,并对数据库进行存储同步。而后将模型中的数据展示到视图。在步骤104中,通过Qt界面自定义DANN的设计步骤为;(1)为非专业用户提供多种自定义选择:选择检测一种到多种攻击类型,包括正常情况下,DDOS-SYN,蠕虫攻击检测。搭建一个到多个神经网络,其中包括输入层,隐藏层,输出层的各层的神经元数目以及选用的激活函数。(2)对用户自定义的相关参数进行预处理并发送至数据存储同步模块。(3)在POX控制器在内核注册通知事件core.registerName(protocolChanged)和core.registerName(DetectAttack)。(4)当用户从界面点击事件时,将会在控制器相应的调用处理函数。(5)该系统进行参数的预处理。(6)该系统进行训练样本数据、采集网络数据、将数据进行处理并上传至中心控制器。(7)对处理过的数据作为神经网络的输入。(8)训练神经网络。(9)将个神经网络下发至分布式节点。(10)根据神经网络测试检测网络数据。步骤101中的计算机资源的计算方法:通过实时的从OpenFlow交换机获取CPU、内存、网卡等资源信息,经过资源计算算法计算性能最优的物理节点,便于虚拟网络DANN神经元计算单元的创建以及逻辑链路的搭建,使得虚拟网络DANN运行性能达到优化效果。在图1中的DANN拓扑信息采集模块中的数据计算模块设计方案:(11)使用vmstat获取OpenFlow交换机的内存和CPU信息,并予以采集数据。(12)使用ifconfig获取OpenFlow交换机网卡特性。由于网卡特性是历史时刻值,因此需要对相邻两时间的数据进行作差即刻得到该时间内的网卡带宽特性。下表为OpenFlow交换机特性说明。OpenFlow交换机特性说明通过OpenFlow交换机资源数据计算算法进行计算:(13)周期性采集内存、cpu以及网卡特性数据。对于内存和cpu特性,采取周期T1,采集次数N1。得到空闲物理内存值free1,free2,…,freen,虚拟内存使用值swpd1,swpd2,…,swpdn以及id1,id2,…,idn;同理,对于网卡特性,采取周期T2,采集次数N2,得到接收包以及发送报情况分别为rx1,rx2,…,rxn和tx1,tx2,…,txn。然后,对采集到的各特性数据求平均值,可以得到以下特性参数:平均空闲物理内存值:avg_free=Σi=1N1freeiN1]]>平均空闲虚拟内存大小:(C为总虚拟内存大小)avg_swpd=Σi=1N1(C-swpdi)N1]]>cpu空闲值:avg_id=Σj=1N1idiN1]]>网卡特性:avg_rtx=Σi=1N2[(rxi+1-rxi)+(txi+1-txi)]N2-1]]>(14)针对不同的特性对各数据进行归一化处理,处理函数如下(各项参数的最大和最小值通过记录一天样本各周期的最大值与最小值平均值获得):归一化空闲物理内存值:free*=avg_free-min-freemax_free-min_free]]>归一化虚拟内存值:swpd*=avg_swpd-min_swpdmax_swpd-min_swpd]]>归一化cpu空闲值:id*=avg_id-min_idmax_id-min_id]]>归一化网卡特性值:rtx*=avg_rtx-min_rtxmax_rtx-min_rtx]]>(15)根据不同的参数特性对OpenFlow交换机的影响设置不同的影响因子。因此最后的参数特性综合值如下:θ=αfree*+βswpd*+γid*+λrtx*(α,β,γ,λ∈[0,1];α+β+γ+λ=1)(16)由于虚拟网络DANN对交换机性能的优先级分别是cpu>网卡>物理内存>虚拟内存,分别设置为α=0.2,β=0.1,γ=0.4,λ=0.3,求得对应的特性综合值θ。显然,θ越大,表示OpenFlow交换性能越好,越适合构建虚拟网络DANN。SDN分布式安全系统采用集中控制的方式,控制器和交换机之间传送数据信息使用安全通道模块。目前实现的拓扑检测主要是链路发现与拓扑管理,物理拓扑信息的获取离不开链路发现技术。在SDN中是控制器统一完成。LLDP作为POX控制器的链路层发现协议,能提供标准的链路发现方式。LLDP能把设备自身的设备标识、接口标准、管理地址等信息组合成不同的TLV(Type/Length/Value,类型/长度/价值),然后封装成LLDPDU(LinkLayerDiscoveryProtocolDataUnit,链路层发现协议数据单元)发送给直连邻居设备,邻居设备收到LLDPDU后将会以标准的MIB(ManagementInformationBase,管理信息库)形式保存信息,控制中心便是通过MIB查询与判断链路的状况。图2中的整个链路发现过程步骤为:(17)控制器发送Packet_out消息给所有与之相连的OpenFlow交换机发送LLDPDU,Packet_out让所有交换机将LLDPDU通过其所有端口发送到相连设备。(18)接收到LLDPDU的设备若依旧是OpenFlow交换机,则执行相应的流表操作。但交换机没有处理LLDP的匹配项,将会通过Packet_in消息将数据包封装好发送回控制中心。(19)控制中心收到Packet_in消息,分析数据包,根据数据包的链路发现表创建交换机之间的连接记录。(20)当对所有OpenFlow交换机执行以上步骤时,控制中心表获取到了完整的物理拓扑结构图。图2中的资源计算模块的设计步骤为:(21)在POX上开发CalculateResource模块,负责SDN底层网络数据及资源的计算。(22)为该组件订阅关于OpenFlow交换机、交换机端口、链路、虚拟网、链路、流表、队列六种事件,分别为:交换机加入OFSW_add_event;交换机离开OFSW_del_event;交换机端口状态信息Port_status_event;链路转改信息Link_status_event;虚拟网离开Vlan_leave_event;流表下发Flow_mod_event;流表删除Flow_remove_event;队列信息Queue_status_event。(23)当该组件收到特定事件的通知是,将通过绑定特定的处理函数(_handle_someEvent)对相应事件作出处理。(24)在处理函数中对收集到的信息统一发送到数据计算模块。图3表述了系统流表添加的步骤是:(25)从前端开始添加流表,在界面完成相关参数的设置,设置完毕后进入下一步;(26)前端对相应的参数进行预处理,拼接向控制器发起的请求,发送到服务器端;(27)控制器收到服务器端发送过来的请求,判断请求的格式是否正确,若正确则直接进行下一步,若错误则返回错误类型并让前端提示出错;(28)查询流表中是否存在与欲添加流表同名的流表项,假设存在,返回带有该流表信息的JSON字符串。若没有则判断欲添加的流表是否满足依赖关系,满足条件就添加新流表,向服务器端返回流表项信息的JSON字符串。否则,添加流表失败,返回错误类型信息并在前端提示用户;(29)用户如果还需要添加新流表项则继续执行步骤(25);图4表述了系统删除流表的方法:(30)开始删除流表,首先,在前端输入想要删除的流表项的流表名字,设置后进入下一步;(31)设置完流表名后拼接请求发送至服务器端,服务器预处理后想控制器发起请求。(32)控制器收到服务器端发送过来的请求之后,对齐格式进行初步判断,若不符合规定则返回错误类型并在前端提示错误。若是正确进入下一步;(33)判断流表中是否存在同名的流表项,若不存在同样返回错误类型并在前端进行提示。若存在同名流表项,则进行删除并返回相应的信息提示流表已经删除;(34)假设还需删除流表,则返回(30);图5描述了SDN网络中DANN拓扑信息的展示的方法:(35)用户在界面选择想要查询的拓扑信息,确定之后进入第二步;(36)前端通过服务器端提供的获取拓扑信息的接口读取数据库,从数据库中读取相应的拓扑信息的最新值,将所需的信息封装成数据模型,发送至前端。若是不存在相应的拓扑信息,则返回错误类型进行提示。(37)前端收到服务器端返回的数据模型后,进行模型解析并展示相应的数据。(38)根据用户是否需要其他的拓扑信息做判断,若需要的话返回(35)显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1