一种基于多SDN协同机制的DDoS攻击防御系统及方法与流程

文档序号:17247954发布日期:2019-03-30 08:55阅读:232来源:国知局
一种基于多SDN协同机制的DDoS攻击防御系统及方法与流程

本发明涉及计算机网络安全技术领域,尤其涉及一种基于多sdn协同机制的ddos攻击防御系统及方法。



背景技术:

拒绝服务(denialofservice,dos)攻击,是指故意攻击网络协议实现的缺陷或直接耗尽被攻击对象的资源,让目标计算机或网络无法提供正常的服务或资源访问的行为。ddos则是指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动dos攻击,从而成倍地提高拒绝服务攻击的威力。ddos攻击是目前网络环境下最严重的威胁之一。而在传统网络环境下,难以从攻击源头对ddos攻击进行防御。

sdn是一种新型的数据和控制层面分离的灵活的网络架构。在控制层面,通过控制器监控整个网络,并实现对各种协议的部署和转发规则的分发;在数据转发层面,交换机只需要根据已有的转发规则,对数据包进行匹配转发。这种新型的网络架构由于其可控性,能有效地获取整个网络中的流量,并控制网络中的流量走向,从而解决从源头防御ddos攻击的问题。

对等网络(peer-to-peernetworking,p2p),是指参与者共享他们所拥有的一部分硬件资源,这些共享资源通过网络提供服务和内容,能被其它对等节点直接访问而无需经过中间实体的网络。相对于传统的客户端/服务器网络,p2p的主要特点为去中心化,网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点之间进行,无需中心服务器的介入,具有负载均衡、健壮性好、扩展性强等优势,更适用于作为本发明中多个sdn之间的通信网络结构。

用户数据报协议(userdatagramprotocol,udp),是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,是本发明中多sdn之间进行通信所采用的的传输层协议。

因此,本领域的技术人员致力于开发一种基于多sdn协同机制的ddos攻击防御系统及方法,以便能够有效地从源头上防御ddos攻击,并且不会影响正常的通信,尽量减小对网络中的其他流量的影响。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是针对传统网络环境下,ddos攻击者的溯源和阻断多在靠近受害者一端进行的状况,采用怎样的技术方案来有效地从源头上防御ddos攻击,同时保证基本不会影响正常的通信,尽量减小对网络中的其他流量的影响。

为实现上述目的,本发明提供了一种基于多sdn协同机制的ddos攻击防御系统,包括多个不同的sdn控制器、一个基于p2p的控制器网络、自定义的控制器网络通信协议以及ddos攻击数据交互协议;所述多个不同的sdn控制器构成所述基于p2p的控制器网络,所述多个不同的sdn控制器之间通过所述控制器网络通信协议以及所述ddos攻击数据交互协议进行通信,以合作完成对ddos攻击的防御。

进一步地,所述控制器包括流表下发模块、数据包收发模块、p2p网络通信模块和ddos攻击防御模块;所述流表下发模块被配置为实现所述控制器基础的流表控制功能;所述数据包收发模块被配置为实现所述控制器网络中的数据包收发功能,并提供udp数据包确认机制;所述p2p网络通信模块被配置为实现所述控制器网络通信协议,用于构建并维护所述基于p2p的控制器网络;所述ddos攻击防御模块被配置为实现所述ddos攻击数据交互协议,用于防御ddos攻击。

进一步地,所述基于p2p的控制器网络采用chord算法的思想实现,每个所述控制器被配置成为所述基于p2p的控制器网络中的一个节点,全部所述节点分布于一个容量为2n的环上,每个所述节点通过哈希函数生成一个表明其在网络中的位置的id,每个所述节点维护一张具有n个表项的指向表,依次记录位于该节点后20、21、...、2n-1个位置处的后继节点,其中,n为所述控制器节点编号的位数。

本发明还提供一种基于多sdn协同机制的ddos攻击防御方法,包括以下步骤:

步骤1、执行udp数据包确认机制;

步骤2、执行控制器网络构建及维护;

步骤3、执行ddos攻击防御。

进一步地,所述步骤1中的udp数据包确认机制由所述数据包收发模块提供;所述步骤2中的控制器网络构建及维护由所述p2p网络通信模块实现;所述步骤3中的ddos攻击防御由所述ddos攻击防御模块实现。

进一步地,所述步骤1还包含如下步骤:

步骤101、第一控制器发送数据包a到第二控制器,同时将所述数据包a、确认码ack和计时器t1作为一组数据,存入所述第一控制器的发包缓存区;

步骤102、所述第二控制器收到所述数据包a,发送回复包m到所述第一控制器,同时将所述回复包m、所述确认码ack和计时器t2作为一组数据,存入所述第二控制器的回复包缓存区;

步骤103、若所述第一控制器收到所述回复包m,则通过所述确认码ack找到所述第一控制器的发包缓存区中数据包a的对应记录,删除该记录,确认送达所述数据包a;

步骤104、若所述第一控制器未收到所述回复包m,则遍历所述第一控制器的发包缓存区,如果所述数据包a对应记录的所述计时器t1超过阈值t1,则重发所述数据包a,并更新所述计时器t1;

步骤105、所述第二控制器收到重发的所述数据包a,遍历所述回复包缓存区,如果所述回复包m匹配所述确认码ack成功,则丢弃该数据包a,并更新对应记录的所述计时器t2;

步骤106、所述第二控制器遍历所述回复包缓存区,如果所述回复包m对应记录的所述计时器t2超过阈值t2,则删除该记录。

进一步地,所述步骤2包括广播实现过程和新控制器加入及旧控制器退出网络过程。

进一步地,所述步骤2中的广播实现过程还包括以下步骤:

步骤2101、所述第一控制器构建数据包,设置初始跳数,将所述数据包发往与所述第一控制器对应的所述指向表中的所有所述后继节点;

步骤2102、第i控制器收到广播的所述数据包,如果所述数据包跳数为0,则舍弃该数据包,否则将所述跳数减1,执行操作,然后转发该数据包到与所述第i控制器对应的所述指向表中的所有所述后继节点。

进一步地,所述步骤2中的新控制器加入及旧控制器退出网络过程还包括以下步骤:

步骤2201、所述第一控制器首先初始化与其自身对应的所述指向表,初始情况下,所有所述后继节点均被设置为所述第一控制器自身,然后所述第一控制器遍历与其自身对应的所述指向表,对于其中的每个表项,向所述第二控制器发送查询数据包;

步骤2202、所述第二控制器收到所述查询数据包,在与其自身对应的所述指向表中查找是否有所述后继节点满足查询位置,如果有,则回复所述第一控制器查询结果数据包,否则转发所述查询数据包至所述第二控制器的指向表中在查询位置之前且离查询位置最近的所述后继节点;

步骤2203、重复所述步骤2202直到找到满足查询位置的节点;

步骤2204、所述第一控制器收到所述查询结果数据包,找到与该数据包对应的表项,对比查询结果和初始值,选择离查询位置距离更近的节点,更新所述表项,并使所述指向表的更新数加1,所述指向表的更新数初始值为0;

步骤2205、如果所述第一控制器的指向表更新数为n,表明指向表初始化完毕,则向所述第二控制器发送加入数据包,申请加入所述控制器网络,其中,n为所述控制器节点编号的位数;

步骤2206、所述第二控制器收到所述加入数据包,广播该数据包,并使用所述第一控制器的节点id更新所述第二控制器的指向表;

步骤2207、所述第一控制器退出所述控制器网络,广播退出数据包,所述退出数据包中包含所述第一控制器自身信息和第一个后继节点的信息;

步骤2208、第i控制器收到所述退出数据包,遍历所述第i控制器的指向表,如果找到所述第一控制器,则将所述第一控制器替换为所述第一控制器的第一个后继节点。

进一步地,所述步骤3还包括如下步骤:

步骤301、所述第一控制器的所述ddos防御模块收到检测系统的通知;

步骤302、所述第一控制器构建并广播溯源请求包,其中包含受害者ip和攻击特征;

步骤303、所述第i控制器收到所述溯源请求包,根据所述受害者ip和所述攻击特征在自己管辖sdn范围内匹配攻击者,如果匹配成功,则回复所述第一控制器一个溯源回复包,其中包含攻击者身份;

步骤304、所述第一控制器收到所述溯源回复包,向第i控制器发送阻断请求包,其中包含所述攻击者身份和受害者身份;

步骤305、所述第i控制器收到所述阻断请求包,向攻击者连接的交换机下发流表,丢弃从所述攻击者发往所述受害者的数据包。

与现有技术方案相比,本发明的有益技术效果包括三方面:

第一,本发明主要解决了传统网络环境下,针对ddos攻击者的溯源和阻断多在靠近受害者一端进行的问题,采用新型的sdn网络,能方便有效地从源头上防御ddos攻击。

第二,本发明中实现的基于p2p的控制器网络具有负载均衡、健壮性好、扩展性强等优势,控制器之间的通信开销小,基本不会影响正常的通信。

第三,能够应对sdn环境下同时发生多起ddos攻击的情况。并且阻断过程只在攻击者所在的交换机端口进行,尽量减小了对网络中的其他流量的影响。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例采用的整体网络结构图;

图2是本发明的一个较佳实施例采用的控制器网络结构图;

图3是本发明的一个较佳实施例的控制器网络通信协议中的数据包结构示意图;

图4是本发明的一个较佳实施例的ddos攻击数据交互协议中的数据包结构示意图;

图5是本发明的一个较佳实施例的udp数据包确认机制的流程示意图;

图6是本发明的一个较佳实施例的控制器网络构建及维护的流程示意图;

图7是本发明的一个较佳实施例的ddos攻击防御的流程示意图。

具体实施方式

以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。

本发明提供了一种基于多sdn协同机制的ddos攻击防御系统,包括多个不同的sdn控制器、一个基于p2p的控制器网络、自定义的控制器网络通信协议以及ddos攻击数据交互协议;所述多个不同的sdn控制器构成所述基于p2p的控制器网络,所述多个不同的sdn控制器之间通过所述控制器网络通信协议以及所述ddos攻击数据交互协议进行通信,以合作完成对ddos攻击的防御。

进一步地,所述控制器包括流表下发模块、数据包收发模块、p2p网络通信模块和ddos攻击防御模块;所述流表下发模块被配置为实现所述控制器基础的流表控制功能;所述数据包收发模块被配置为实现所述控制器网络中的数据包收发功能,并提供udp数据包确认机制;所述p2p网络通信模块被配置为实现所述控制器网络通信协议,用于构建并维护所述基于p2p的控制器网络;所述ddos攻击防御模块被配置为实现所述ddos攻击数据交互协议,用于防御ddos攻击。

进一步地,所述基于p2p的控制器网络采用chord算法的思想实现,每个所述控制器被配置成为所述基于p2p的控制器网络中的一个节点,全部所述节点分布于一个容量为2n的环上,每个所述节点通过哈希函数生成一个表明其在网络中的位置的id,每个所述节点维护一张具有n个表项的指向表,依次记录位于该节点后20、21、...、2n-1个位置处的后继节点,其中,n为所述控制器节点编号的位数。

本发明还提供一种基于多sdn协同机制的ddos攻击防御方法,包括以下步骤:

步骤1、执行udp数据包确认机制;

步骤2、执行控制器网络构建及维护;

步骤3、执行ddos攻击防御。

进一步地,所述步骤1中的udp数据包确认机制由所述数据包收发模块提供;所述步骤2中的控制器网络构建及维护由所述p2p网络通信模块实现;所述步骤3中的ddos攻击防御由所述ddos攻击防御模块实现。

进一步地,所述步骤1还包含如下步骤:

步骤101、第一控制器发送数据包a到第二控制器,同时将所述数据包a、确认码ack和计时器t1作为一组数据,存入所述第一控制器的发包缓存区;

步骤102、所述第二控制器收到所述数据包a,发送回复包m到所述第一控制器,同时将所述回复包m、所述确认码ack和计时器t2作为一组数据,存入所述第二控制器的回复包缓存区;

步骤103、若所述第一控制器收到所述回复包m,则通过所述确认码ack找到所述第一控制器的发包缓存区中数据包a的对应记录,删除该记录,确认送达所述数据包a;

步骤104、若所述第一控制器未收到所述回复包m,则遍历所述第一控制器的发包缓存区,如果所述数据包a对应记录的所述计时器t1超过阈值t1,则重发所述数据包a,并更新所述计时器t1;

步骤105、所述第二控制器收到重发的所述数据包a,遍历所述回复包缓存区,如果所述回复包m匹配所述确认码ack成功,则丢弃该数据包a,并更新对应记录的所述计时器t2;

步骤106、所述第二控制器遍历所述回复包缓存区,如果所述回复包m对应记录的所述计时器t2超过阈值t2,则删除该记录。

进一步地,所述步骤2包括广播实现过程和新控制器加入及旧控制器退出网络过程。

进一步地,所述步骤2中的广播实现过程还包括以下步骤:

步骤2101、所述第一控制器构建数据包,设置初始跳数,将所述数据包发往与所述第一控制器对应的所述指向表中的所有所述后继节点;

步骤2102、第i控制器收到广播的所述数据包,如果所述数据包跳数为0,则舍弃该数据包,否则将所述跳数减1,执行操作,然后转发该数据包到与所述第i控制器对应的所述指向表中的所有所述后继节点。

进一步地,所述步骤2中的新控制器加入及旧控制器退出网络过程还包括以下步骤:

步骤2201、所述第一控制器首先初始化与其自身对应的所述指向表,初始情况下,所有所述后继节点均被设置为所述第一控制器自身,然后所述第一控制器遍历与其自身对应的所述指向表,对于其中的每个表项,向所述第二控制器发送查询数据包;

步骤2202、所述第二控制器收到所述查询数据包,在与其自身对应的所述指向表中查找是否有所述后继节点满足查询位置,如果有,则回复所述第一控制器查询结果数据包,否则转发所述查询数据包至所述第二控制器的指向表中在查询位置之前且离查询位置最近的所述后继节点;

步骤2203、重复所述步骤2202直到找到满足查询位置的节点;

步骤2204、所述第一控制器收到所述查询结果数据包,找到与该数据包对应的表项,对比查询结果和初始值,选择离查询位置距离更近的节点,更新所述表项,并使所述指向表的更新数加1,所述指向表的更新数初始值为0;

步骤2205、如果所述第一控制器的指向表更新数为n,表明指向表初始化完毕,则向所述第二控制器发送加入数据包,申请加入所述控制器网络,其中,n为所述控制器节点编号的位数;

步骤2206、所述第二控制器收到所述加入数据包,广播该数据包,并使用所述第一控制器的节点id更新所述第二控制器的指向表;

步骤2207、所述第一控制器退出所述控制器网络,广播退出数据包,所述退出数据包中包含所述第一控制器自身信息和第一个后继节点的信息;

步骤2208、第i控制器收到所述退出数据包,遍历所述第i控制器的指向表,如果找到所述第一控制器,则将所述第一控制器替换为所述第一控制器的第一个后继节点。

进一步地,所述步骤3还包括如下步骤:

步骤301、所述第一控制器的所述ddos防御模块收到检测系统的通知;

步骤302、所述第一控制器构建并广播溯源请求包,其中包含受害者ip和攻击特征;

步骤303、所述第i控制器收到所述溯源请求包,根据所述受害者ip和所述攻击特征在自己管辖sdn范围内匹配攻击者,如果匹配成功,则回复所述第一控制器一个溯源回复包,其中包含攻击者身份;

步骤304、所述第一控制器收到所述溯源回复包,向第i控制器发送阻断请求包,其中包含所述攻击者身份和受害者身份;

步骤305、所述第i控制器收到所述阻断请求包,向攻击者连接的交换机下发流表,丢弃从所述攻击者发往所述受害者的数据包。

本发明中的sdn控制器包括流表下发模块、p2p网络通信模块、ddos攻击防御模块和数据包收发模块。通信协议分为两类,控制器网络通信协议通过p2p网络通信模块实现,ddos攻击数据交互协议通过ddos攻击防御模块实现。

流表下发模块为sdn控制器的基本功能,用于决定数据流的转发策略并向交换机下发对应的转发规则;

数据包收发模块用于发送和接收p2p网络通信模块和ddos攻击防御模块两个模块在运行过程中需要传递的udp数据包,并通过回复包和超时重传功能实现确认机制,确保数据包的到达;

p2p网络通信模块用于构建并维护基于p2p架构的控制器网络,并实现控制器网络内的广播功能;

ddos攻击防御模块用于防御ddos攻击,主要是接收ddos攻击检测系统提供的数据,通过控制器网络和其他sdn交互数据,完成对攻击者的溯源和阻断。

如图1所示,是本发明的一个较佳实施例的采用的整体网络结构图。

本发明提出了一种基于多sdn协同机制的ddos攻击防御系统及方法,多个sdn控制器独立地分布于传统网络中,各sdn控制器通过‘边界路由器’接入传统网络。

ddos攻击的攻击者与受害者分布在不同的sdn之中。

两个sdn控制器网络之间的通信,会经过传统网络以及任意数量的其他sdn控制器网络。各sdn控制器之间形成一个控制器网络,通过指定协议进行通信,来完成对攻击者的溯源和阻断。

如图2所示,是本发明的一个较佳实施例的采用的控制器网络结构图,本发明中不同sdn控制器之间的控制器网络是基于p2p网络中的chord算法思想实现的。

将控制器网络的整体结构看作是一个大小为2n的环,每个sdn控制器看成是环中的一个节点,环上的位置用0到2n-1来表示。

每个节点维护自己的ip地址、通信端口、id和指向表四个参数。其中ip地址和通信端口是节点的通信地址。id用于表示节点在控制器网络中的位置,即在环上的位置,该id由节点自己的ip地址通过哈希操作得到,位于0到2n-1之间,并确保不会重复。

指向表共有n个表项,分别用于存储位于该节点后20、21、...、2n-1个位置处的后继节点信息,包括对应后继节点的id、ip地址和通信端口。位置i处的后继节点是指控制器网络现有节点中,顺时针方向位于位置i之后(包括位置i)且距位置i最近的节点。通过这张表,每个节点能维护小部分的网络节点信息,所有节点结合起来就能维护整个网络结构的信息。

如图3所示是本发明的一个较佳实施例的控制器网络通信协议中的数据包结构示意图,如图4所示是本发明的一个较佳实施例的ddos攻击数据交互协议中的数据包结构示意图。

控制器网络通信协议由p2p网络通信模块实现,一共涉及到五种数据包:加入数据包、查询数据包、查询结果数据包、退出数据包和回复数据包。其中回复数据包是用于确认udp数据包送达的。

加入数据包用于新加入节点通知控制器网络中已有节点自己加入的消息,便于它们更新指向表。查询数据包用于新加入节点在初始化自己的指向表时,对于每个表项的位置,向其他节点查询这个位置的后继节点信息。加入数据包和查询数据包中的id、ip和端口均是发送节点的信息。

查询结果数据包是,当一节点收到查询数据包后,并在自己的指向表中找到了对应的后继节点,回复给查询者的数据包。其中id、ip和端口是查询到的后继节点的信息。

退出数据包是当一个节点退出控制器网络时,通知其他节点更新指向表。其中id、ip和端口是该节点的第一个后继节点的信息,而查询位置是该节点自己的id。

ddos攻击数据交互协议由ddos防御模块实现,一共涉及到四种数据包,包括溯源请求数据包、溯源回复数据包、阻断请求数据包和回复数据包。其中回复数据包是用于确认udp数据包送达的。

溯源请求包用于受害者一方的sdn控制器向其他sdn控制器请求溯源协助。溯源回复包是收到溯源请求包的sdn控制器在自己管辖范围内成功匹配攻击者后,回复给受害者所在sdn控制器的。阻断请求包是发往攻击者所在sdn控制器的,用于请求协助阻断由攻击者发往受害者的流量。

如图5所示是本发明的一个较佳实施例的udp数据包确认机制的流程示意图。

发包缓存区用于储存已发送而还未确认送达的数据包信息,包括数据包、ack、目的地址和计时器。

回复包缓存区用于储存最近一段时间内发出的回复包信息,包括回复包、ack、目的地址和计时器。

控制器1向控制器2发送数据包m,ack为a,同时将数据包m、ack=a、控制器2的地址和计时器t1存入发包缓存区。

控制器2收到数据包m,首先根据ack和控制器1的地址,和回复包缓存区中的记录对比,如果有记录匹配成功,表示收到过该数据包,则更新回复包的计时器t2,并丢弃收到的数据包m;如果匹配失败,则发送回复包n到控制器1,同时将回复包n、ack=a、控制器1的地址和计时器t2存入回复包缓存区。

控制器1如果收到回复包n,根据ack和控制器2的地址,和发包缓存区中的记录对比,若匹配成功则删除对应的记录,即删除数据包m,若匹配失败则忽略该回复包。

每隔一段时间,控制器1会遍历发包缓存区,如果数据包m对应的计时器t1大于阈值t1,则表明未收到回复包,重发数据包m到控制器2,并更新计时器t1。同样控制器2也会遍历回复包缓存区,如果回复包n对应的计时器t2大于阈值t2,则表明对方收到回复包,删除该条记录。

如图6所示是本发明的一个较佳实施例的控制器网络构建及维护的流程示意图。该过程包括节点加入、退出和广播操作,节点a和节点b代表两个不同sdn的控制器。

假定节点a进行广播操作,会先构建好需要广播的数据包,并设置初始跳数,然后发往指向表中的所有后继节点a1到an。节点b收到广播数据包后,先判断跳数是否为0,如果是则丢弃该广播包,不是则将跳数减1,然后把数据包发往自己指向表中的所有后继节点b1到bn。

新的节点加入网络需要事先知道网络中一个节点的信息,这里假定节点a通过节点b加入到控制器网络。节点a首先要初始化自己的指向表,如节点a要确定第i个后继节点,会将位置ai通过查询数据包发往节点b。节点b收到后,在自己指向表进行查询,如在第i个表项发现,ai在bi和bi之间,则通过查询结果数据包回复节点a,位置ai的后继节点为bi,如果ai在bi和bi+1之间,则转发查询数据包到节点bi,节点bi重复进行节点b的操作。

当节点a的指向表初始化完成之后,节点a会发送加入数据包到节点b。节点广播该数据包,并通过节点a的id来更新自己的指向表,如在第2个表项发现,a在b2和b2之间,则更新位置b2的后继节点为a。

节点a退出网络,会在控制器网络中广播退出数据包,包括自己的id和第一个后继节点a1的信息。节点b收到退出数据包后,如在指向表中匹配到b1=a,则更新后继节点b1的值为a1。

如图7所示是本发明的一个较佳实施例的ddos攻击防御的流程示意图,该过程包括溯源和阻断两个部分。

假定受害者所在sdn的控制器编号为1,攻击者所在sdn的控制器编号为2。

检测系统检测到攻击时,会通知控制器1此次攻击的特征。控制器1构建溯源请求包,在控制器网络内进行广播。

控制器2收到溯源请求包后,监控自己管辖范围内的流量,并和攻击特征进行匹配,将匹配到的攻击者身份通过溯源回复包发给控制器1。

控制器1收到溯源回复包后,向控制器2发出阻断请求包,控制器2下发流表项来丢弃从攻击者发往受害者的数据包。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

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