首页> 中国专利> 一种防御消息攻击的方法及装置

一种防御消息攻击的方法及装置

摘要

本发明公开了一种防御消息攻击的方法及装置,可以在抵御消息攻击的同时,保证正常响应正常用户的服务请求。该方法包括:控制器接收至少一个交换机发送的上报消息;所述控制器将接收到的各个交换机发送的所述上报消息分别保存到所述各个交换机对应的交换机队列;所述控制器对所述各个交换机对应的交换机队列进行轮询调度。

著录项

  • 公开/公告号CN105991588A

    专利类型发明专利

  • 公开/公告日2016-10-05

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201510080973.5

  • 发明设计人 李金明;胡成臣;王换招;

    申请日2015-02-13

  • 分类号H04L29/06;H04L12/863;

  • 代理机构北京同达信恒知识产权代理有限公司;

  • 代理人冯艳莲

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-06-19 00:41:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-28

    授权

    授权

  • 2016-11-09

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20150213

    实质审查的生效

  • 2016-10-05

    公开

    公开

说明书

技术领域

本发明涉及通信技术领域,尤其涉及一种防御消息攻击的方法及装置。

背景技术

软件定义网络(Software Defined Network,简称SDN)是一种控制功能和转发功能相互分离的网络架构。SDN分为控制层面和数据层面,其中控制层面负责全网的控制管理,数据层面则按照控制层面指定的规则转发数据。控制层面的控制设备称为中央控制器(简称控制器),数据层面的转发设备为网络交换机(简称交换机)。控制器是整个SDN的核心设备,决策数据层面上流量的正确转发。交换机依据控制器发送的流表实现对数据包的处理,例如数据包的转发、丢弃等操作。

传统的网络安全中被攻击的对象通常是主机或者服务器。而在SDN网络中,控制器作为整个SDN网络的核心设备,同样面临被攻击的可能。控制器面临攻击形式通常是Packet_in消息洪泛攻击,其中Packet_in是一种消息类型。

在SDN网络中,当交换机接收到数据包时,首先与交换机内部流表中各个流表项进行匹配,若匹配成功,则执行所匹配成功的流表项所指示的操作;若内部流表中不存在与该数据包匹配的流表项,则交换机构造一条Packet_in消息,并将该Packet_in消息发送给控制器,请求控制器下发针对对该数据包进行处理的规则。

控制器在接收到Packet_in消息后,经过决策,向该交换机发送一条流表项,该流表项中包括对该数据包进行处理的规则。因此,控制器一个重要功能就是有效处理Packet_in消息。

因此,网络中恶意攻击者在对控制器进行攻击时,通常是构造大量无意义、 非法或者随机的数据包,使得交换机无法与内部流表的各个流表项进行匹配,交换机便会构造大量的Packet_in消息发送给控制器。这些Packet_in消息不仅占用控制器的资源,还会占用控制器与交换机之间安全通道的有效带宽,从而延长了控制器对非攻击的其他数据的处理时间,甚至无法响应正常用户的服务请求。

发明内容

本发明实施例提供一种防御消息攻击的方法及装置,可以在抵御消息攻击的同时,保证正常响应正常用户的服务请求。

第一方面,本发明实施例提供了一种防御消息攻击的方法,包括:

控制器接收至少一个交换机发送的上报消息;

所述控制器将接收到的各个交换机发送的所述上报消息分别保存到所述各个交换机对应的交换机队列;

所述控制器对所述各个交换机对应的交换机队列进行轮询调度。

结合第一方面,在第一方面的第一种可能的实现方式中,所述控制器将接收到的各个交换机发送的所述上报消息保存到所述各个交换机对应的交换机队列具体包括:

所述控制器确认所述上报消息所属的交换机队列;

所述控制器判断是否存在与所述上报消息所属的交换机队列对应的主机队列;所述主机队列为与所述上报消息所属的交换机队列对应的交换机相连的各个主机对应的各个主机队列;

在判断不存在与所述上报消息所属的交换机队列对应的主机队列且确定所述上报消息所属的交换机队列中已存储的上报消息数量大于第一阈值时,所述控制器建立与所述上报消息所属的交换机队列对应的主机队列,并将所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列;

所述控制器对所述各个交换机对应的交换机队列进行轮询调度时,若确定 当前调度的交换机队列为空,还包括:

所述控制器根据所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量和第二阈值确定当前调度的交换机队列对应的各个主机队列的优先级;

所述控制器根据所述当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述控制器根据所述当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度时,还包括:

在确定所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量都小于第三阈值时,所述控制器若接收到所述当前调度的交换机队列对应的交换机发送的上报消息,则将接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到所述当前调度的交换机队列,所述第三阈值小于第二阈值。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述控制器将接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到所述当前调度的交换机队列之后,还包括:

在确定所述当前调度的交换机队列对应的各个主机队列中存在上报消息数量为零的主机队列时,删除所述上报消息数量为零的主机队列;

或者,在确定所述当前调度的交换机队列对应的各个主机队列存储的上报消息数量均为零时,删除所述当前调度的交换机队列对应的各个主机队列。

结合第一方面的第一种至第三种可能的实现方式中的任一一种,在第一方面的第四种可能的实现方式中,所述控制器判断是否存在与所述上报消息所属的交换机队列对应的主机队列之后,还包括:

在判断不存在与所述上报消息所属的交换机队列对应的主机队列且确定所述上报消息所属的交换机队列中已存储的上报消息数量小于第一阈值时,所 述控制器将所述上报消息插入到所述上报消息所属的交换机队列。

结合第一方面的第一种至第四种可能的实现方式中的任一一种,在第一方面的第五种可能的实现方式中,所述控制器判断是否存在所述交换机队列对应的主机队列时,还包括:

若判断存在与所述上报消息所属的交换机队列对应的主机队列、且确定任一主机队列中已存储的上报消息数量大于第四阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,所述控制器将所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列,其中,所述第四阈值小于第二阈值。

结合第一方面的第一种至第五种可能的实现方式中的任一一种,在第一方面的第六种可能的实现方式中,所述控制器判断是否存在与所述上报消息所属的交换机队列对应的主机队列时,还包括:

当判断存在与所述上报消息所属的交换机队列对应的主机队列、且确定各个主机队列中已存储的上报消息数量均小于第五阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,所述控制器将所述上报消息插入到所述上报消息所属的交换机队列,其中所述第五阈值小于第二阈值。

结合第一方面和第一方面的第一种至第六种可能的实现方式中的任一一种,在第一方面的第七种可能的实现方式中,所述控制器对所述各个交换机对应的交换机队列进行轮询调度具体包括:

所述控制器根据预先为各个交换机分配的上报消息权重对所述各个交换机对应的交换机队列进行轮询调度。

第二方面,本发明实施例提供了一种防御消息攻击的装置,该装置包括:

接收模块,用于接收至少一个交换机发送的上报消息;

保存模块,用于将所述接收模块接收到的各个交换机发送的所述上报消息分别保存到所述各个交换机对应的交换机队列;

调度模块,用于对所述保存模块保存的所述各个交换机对应的交换机队列 进行轮询调度。

结合第二方面,在第二方面的第一种可能的实现方式中,还包括:

确认模块,用于确认所述上报消息所属的交换机队列;

判断模块,用于判断是否存在与所述上报消息所属的交换机队列对应的主机队列;所述主机队列为与所述上报消息所属的交换机队列对应的交换机相连的各个主机对应的各个主机队列;

第一确定模块,用于确定所述上报消息所属的交换机队列中已存储的上报消息数量大于第一阈值;

建立模块,用于在所述判断模块判断不存在与所述上报消息所属的交换机队列对应的主机队列、且所述第一确定模块确定所述上报消息所属的交换机队列中已存储的上报消息数量大于第一阈值时,建立与所述上报消息所属的交换机队列对应的主机队列;

所述保存模块,具体用于将所述上报消息插入到所述建立模块建立的与所述上报消息所属的交换机队列对应的主机队列;

第二确定模块,用于当所述调度模块对所述各个交换机对应的交换机队列进行轮询调度时,若确定当前调度的交换机队列为空,根据所述当前调度的交换机队列对应各个主机队列中已存储的上报消息数量和第二阈值确定各个主机队列的优先级;

所述调度模块,具体用于根据所述第二确定模块确定的所述当前调度的交换机队列对应各个主机队列的优先级对各个主机队列进行轮询调度。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,还包括第三确定模块;

第三确定模块,用于在所述调度模块根据所述当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度时,确定所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量是否都小于第三阈值;

所述保存单元,用于当所述第三确定模块确定所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量是否都小于第三阈值时,若所述接收模块接收到所述当前调度的交换机队列对应的交换机发送的上报消息,将所述接收模块接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到所述当前调度的交换机队列,所述第三阈值小于第二阈值。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括:

第四确定模块,用于在所述保存模块将所述接收模块接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到所述当前调度的交换机队列之后,确定所述当前调度的交换机队列对应的各个主机队列中是否存在上报消息数量为零的主机队列;

删除模块,用于在所述第四确定模块确定所述当前调度的交换机队列对应的各个主机队列中存在上报消息数量为零的主机队列时,删除所述上报消息数量为零的主机队列;

或者,

第四确定模块,用于在所述保存模块将所述接收模块接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到当前调度的交换机队列之后,确定所述当前调度的交换机队列对应的各个主机队列存储的上报消息数量是否均为零;

删除模块,用于在所述第四确定模块确定所述当前调度的交换机队列对应的各个主机队列存储的上报消息数量均为零时,删除所述当前调度的交换机队列对应的各个主机队列。

结合第二方面的第一种至第三种可能的实现方式中的任一一种,在第二方面的第四种可能的实现方式中,所述第一确定模块,还用于确定所述上报消息所属的交换机队列中已存储的上报消息数量小于第一阈值;

所述保存单元,还用于在所述判断模块判断不存在与所述上报消息所属的 交换机队列对应的主机队列、且所述第一确定模块确定所述上报消息所属的交换机队列中已存储的上报消息数量小于第一阈值时,将所述上报消息插入到所述上报消息所属的交换机队列。

结合第二方面的第一种至第四种可能的实现方式中的任一一种,在第二方面的第五种可能的实现方式中,还包括:

第五确定模块,用于在所述判断模块判断存在与所述上报消息所属的交换机队列对应的主机队列时,确定任一主机队列中已存储的上报消息数量大于第四阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值;

所述保存单元,还用于在所述判断模块判断存在与所述上报消息所属的交换机队列对应的主机队列、且第五确定模块确定任一主机队列中已存储的上报消息数量大于第四阈值且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,将所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列,其中,所述第四阈值小于第二阈值。

结合第二方面的第一种至第五种可能的实现方式中的任一一种,在第二方面的第六种可能的实现方式中,还包括:

第六确定模块,用于在所述判断模块判断存在与所述上报消息所属的交换机队列对应的主机队列时,确定各个主机队列中已存储的上报消息数量均小于第五阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值;

所述保存单元,在所述判断模块判断存在与所述上报消息所属的交换机队列对应的主机队列,且所述第六确定模块确定各个主机队列中已存储的上报消息数量均小于第五阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,将所述上报消息插入到所述上报消息所属的交换机队列,其中所述第五阈值小于第二阈值。

结合第二方面和第二方面的第一种至第六种可能的实现方式中的任一一 种,在第二方面的第七种可能的实现方式中,所述调度模块,具体用于根据预先为各个交换机分配的上报消息权重对所述各个交换机对应的交换机队列进行轮询调度。

本发明实施例中所述控制器对接收到的各个交换机发送的上报消息,分别保存到所述各个交换机对应的交换机队列;控制器不再对各个交换机发送的上报消息进行单独处理,而是对各个交换机队列中的上报消息进行轮询调度。从而控制器不再直接针对接收到攻击的交换机发送的上报消息处理完后再处理其他交换机发送的上报消息,而是在上报消息保存一个时间长度后,统一对各个交换机发送的上报消息进行轮询调度。从而在抵御消息攻击的同时,避免了在攻击发生时造成的非攻击流量的处理时间延长,保证了正常响应正常用户的服务请求。

附图说明

图1为本发明实施例提供的一种防御消息攻击的方法流程图;

图2为本发明实施例提供的另一种防御消息攻击的方法流程图;

图3为本发明实施例提供的又一种防御消息攻击的方法流程图;

图4为本发明实施例提供的上报消息处理示意图;

图5为本发明实施例提供的一种防御消息攻击的装置示意图;

图6为本发明实施例提供的另一种防御消息攻击的装置示意图;

图7为本发明实施例提供的又一种防御消息攻击的装置示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明提供一种防御消息攻击的方法及装置,可以在抵御消息攻击的同时,保证正常响应正常用户的服务请求。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

本发明实施例提供了一种防御消息攻击的方法及装置,控制器根据所连接的交换机个数维护一个共享的多队列结构,即针对每个交换机建立一个交换机队列,所有交换机队列构成了一个共享的多队列结构。控制器在接收到任一交换机发送的上报消息后,将接收到上报消息插入到该交换机对应的交换机队列。控制器不再对各个交换机发送的上报消息进行单独处理,而是对各个交换机队列中的上报消息进行轮询调度。从而控制器不再直接针对接收到攻击的交换机发送的上报消息处理完后再处理其他交换机发送的上报消息,而是对各个交换机发送的上报消息进行轮询调度。从而在抵御消息攻击的同时,避免了在攻击发生时造成的非攻击流量的处理时间延长,保证了正常响应正常用户的服务请求。

本发明实施例提供了一种防御消息攻击的方法,如图1所示,该方法包括:

步骤101,控制器接收至少一个交换机发送的上报消息。

步骤102,所述控制器将接收到的各个交换机发送的所述上报消息分别保存到所述各个交换机对应的交换机队列。

步骤103,所述控制器对所述各个交换机对应的交换机队列进行轮询调度。

需要说明的是,所述控制器在对所述各个交换机对应的交换机队列进行轮询调度时,还可能接收到至少一个交换机发送的上报消息,则控制器在对所述各个交换机对应的交换机队列进行轮询调度的同时,还会将接收到的各个交换机发送的所述上报消息分别保存到该至少一个交换机对应的交换机队列。因此,保存上报消息是有可能和轮询调度处理同时进行的。

其中,上报消息包括交换机发送的异步消息或者交换机向控制器发送的消息等等,例如Packet-in消息。交换机在接收到主机发送的数据包后,若找不到 匹配的流表规则,则将这个数据包封装为packet_in消息上报给控制器;或者交换机找到了匹配的流表规则,若这条规则里指明将数据包上报到控制器,则交换机也将该数据包封装为packet_in消息上报给控制器。

后续说明以Packet-in消息举例进行说明,其他消息可以参照实施,本发明实施例不再具体赘述。

本发明实施例中所述控制器对接收到的各个交换机发送的上报消息,分别保存到所述各个交换机对应的交换机队列;控制器不再对各个交换机发送的上报消息进行单独处理,而是对各个交换机队列中的上报消息进行轮询调度。从而控制器不再直接针对接收到攻击的交换机发送的上报消息处理完后再处理其他交换机发送的上报消息,而是在上报消息保存一个时间长度后,统一对各个交换机发送的上报消息进行轮询调度。从而在抵御消息攻击的同时,避免了在攻击发生时造成的非攻击流量的处理时间延长,保证了正常响应正常用户的服务请求。

具体的,所述控制器对所述各个交换机对应的交换机队列进行轮询调度时,具体根据预设的调度该交换机队列时需要的上报消息数量分别对各个交换机对应的交换机队列进行轮询调度。

其中,所述预设的调度该交换机队列时需要调度的上报消息数量,可以根据预先为各个交换机分配的上报消息权重来确定。具体可以是管理员通过人机接口为各个交换机分配上报消息权重。

则所述控制器对所述各个交换机对应的交换机队列进行轮询调度时,具体可以通过以下方式,包括:

所述控制器确定各个交换机的上报消息权重;

所述控制器根据各个交换机队列的上报消息权重确定当前调度的交换机队列在一个调度周期中的调度的Packet-in消息数量。

所述控制器根据所述确定的当前调度的交换机队列的Packet-in消息数量调度该交换机队列中的Packet-in消息出队处理。

其中,假设与控制器相连的交换机个数为n,即各个交换机对应的交换机队列分别为S1,S2,……,Sn,确定的各个交换机的上报消息权重为WSi,i=1,2……n。当控制器轮询到第i个交换机队列(即交换机队列Si)时,从队列中提取出个Packet-in消息进行处理。从而保证发生攻击交换机对应的交换机队列中的Packet-in消息不会阻塞其他正常交换机的Packet-in消息处理,起到了一定的隔离防御能力。

具体的,上述加权轮询调度流程可以通过以下伪代码描述:

加权轮询调度流程:

输入:pktinMQueue:每个交换机的交换机队列组成的MAP,activeSwitches:当前激活的交换机以及其权重wsi

利用上述方法解决了交换机队列之间Packet-in消息处理的竞争,但可能存在一定的不足:在主机(Host)层面,各个Host分别与交换机相连,且Host发送的消息通过交换机进行转发,若无法匹配,则通过Packet-in消息发送给控制器。当一个Host对控制器进行发包攻击时,控制器在调度该Host所连接的交换机队列中的Packet-in消息时,每次轮询都会先去处理发生攻击Host发送的消息,因此会导致该Host连接的交换机上,其他正常的Host发送的Packet-in消息无法得到及时的接收处理。因此通过以下实现方式实施。

在其中一个实施例中,所述控制器将接收到的各个交换机发送的所述上报消息保存到所述各个交换机对应的交换机队列,具体可以过通过以下方式:

a,所述控制器确认所述上报消息所属的交换机队列。

其中,可以根据上报消息中携带的交换机的标识信息确定交换机队列。交换机的标识信息可以是交换机的端口号,还可以是地址信息等等。

b,所述控制器判断是否存在与所述上报消息所属的交换机队列对应的主机队列;所述主机队列为与所述上报消息所属的交换机队列对应的交换机相连的各个主机对应的各个主机队列。

其中,与交换机相连的各个主机的主机队列,和该交换机的交换机队列相对应。

c,当确定不存在与所述上报消息所属的交换机队列对应的主机队列且所述上报消息所属的交换机队列中已存储的上报消息数量大于第一阈值时,所述控制器建立与所述上报消息所属的交换机队列对应的主机队列,并将所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列。

其中,所述控制器建立所述上报消息所属的主机队列时,可以根据所述上报消息依据主机的标识信息进行主机队列的建立,其中,Host的标识信息可以 是Host的端口号,还可以是地址信息等等。

上报消息中还可以携带主机的标识信息,则根据主机的标识信息确定该上报消息所属的交换机队列对应的主机队列,从而将该上报消息插入到该主机队列。

则所述控制器对所述各个交换机对应的交换机队列进行轮询调度时,若确定当前调度的交换机队列为空,所述控制器根据所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量和第二阈值确定所述当前调度的交换机队列对应的各个主机队列的优先级;

具体的,所述控制器根据各个主机队列中已存储的上报消息数量和第二阈值确定各个主机队列的优先级,可以为:初始建立的各个主机队列的优先级相同,可以均为第一优先级等级。当监测到某个主机队列中的上报消息数量达到第二阈值时,则确定该主机为攻击源,可以将该主机队列的优先级设置为第二优先级等级,其中第二优先级等级小于第一优先级等级。

所述控制器根据所述当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度。

可选地,所述控制器根据当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度时,若确定所述当前调度的交换机队列对应交换机队列对应的各个主机队列中已存储的上报消息数量都小于第三阈值,所述控制器若接收到所述当前调度的交换机队列对应交换机发送的上报消息,将接收到的所述当前调度的交换机队列对应交换机发送的所述上报消息插入到当前调度的交换机队列。

其中,所述控制器若接收到非当前调度的交换机队列对应交换机发送的上报消息,则根据交换机队列中存储的上报消息数量和第三阈值确定是否将接收到的上报消息存储到所述接收到的上报消息所属的交换机队列。

具体的,控制器预先为与其连接的各个交换机分别建立交换机队列。且交换机与各个Host连接。当Host发生攻击时,即该Host连接的交换机对应的交 换机队列的Packet-in消息数量大于第一阈值,则为该发生攻击的Host连接的交换机依据Host的端口号进行Host队列的建立。当然还可以为与该交换机相连的各个Host分别建立Host队列。具体还可以设置建立的Host队列的优先级,且初始建立的各个Host队列的优先级相同,均为第一优先级等级。当某个Host队列中的Packet-in消息数量达到第二阈值时,则确定该Host为攻击源,可以将该Host队列的优先级设置为第二优先级等级,其中第二优先级等级小于第一优先级等级。当攻击结束后,即各个Host队列中的Packet-in消息数量均小于第三阈值。其中,第三阈值小于第二阈值。

通过以上方案,为受到攻击的交换机连接的Host建立各自的Host队列,可将受到攻击的Host的Packet-in消息和其他正常的Host的Packet-in消息分开保存,并轮询处理,保证了其他正常的Host中的Packet-in消息得到及时的处理。

可选地,在已建立某个交换机对应的主机队列的情况下,所述控制器将接收到的该交换机发送的所述上报消息插入到该交换机对应的交换机队列之后,可以确定已建立交换机队列对应的主机队列的上报消息数量,当确定所述主机队列中存在上报消息存储量为零的主机队列时,删除所述上报消息存储量为零的主机队列;或者,当确定该交换机队列对应的各个主机队列存储的上报消息数量均为零时,删除该交换机队列对应的各个主机队列。

可选地,在确定存在当前调度的交换机对应的主机队列的情况下,所述控制器将接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到所述当前调度的交换机队列之后,在确定所述当前调度的交换机队列对应的各个主机队列中存在上报消息数量为零的主机队列时,删除所述上报消息数量为零的主机队列;或者,在确定所述当前调度的交换机队列对应的各个主机队列存储的上报消息数量均为零时,删除所述当前调度的交换机队列对应的各个主机队列。

可选地,确定已存在主机队列的情况下,所述控制器对所述各个交换机对 应的交换机队列进行轮询调度时,对各个交换机的主机队列进行监控,在确定任一交换机队列对应的各个主机队列中存在上报消息数量为零的主机队列时,删除该上报消息数量为零的主机队列,或者在确定任一交换机队列对应的各个主机队列存储的上报消息数量均为零时,删除当前调度的交换机队列对应的各个主机队列。

在其中一个可选地实施例中,所述控制器判断是否存在与所述上报消息所属的交换机队列对应的主机队列之后,当判断不存在所述交换机队列对应的主机队列且确定所述上报消息所属的交换机队列中已存储的上报消息数量小于第一阈值时,所述控制器将所述上报消息插入到所述上报消息所属的交换机队列。

在其中一个可选地实施例中,所述控制器判断是否存在与所述上报消息所属的交换机队列对应的主机队列之后,当判断存在与所述上报消息所属的交换机队列对应的主机队列、且任一主机队列中已存储的上报消息数量大于第四阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,所述控制器将所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列,其中,所述第四阈值小于第二阈值。

其中,第四阈值可以等于上述第三阈值,也可以不等于第三阈值。

在其中一个可选地实施例中,所述控制器判断是否存在与所述上报消息所属的交换机队列对应的主机队列之后,当确定存在与所述上报消息所属的交换机队列对应的主机队列、且各个主机队列中已存储的上报消息数量均小于第五阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,所述控制器将所述上报消息插入到所述上报消息所属的交换机队列,其中所述第五阈值小于第二阈值。

其中,第五阈值可以等于上述第三阈值或者第四阈值,也可以不等于第三阈值及第四阈值。

具体的,控制器针对Packet-in消息的接收入队流程如图2所示。控制器预 先为与其连接的各个交换机分别建立交换机队列。下面针对一个交换机以Packet-in消息为例进行说明。

步骤201,接收到交换机发送的Packet-in消息;执行步骤202。其中,Packet-in消息中携带与交换机相连的Host的标识信息。

步骤202,确定是否建立有Host队列,若否,执行步骤203,若是,执行步骤206。其中Host队列为与上述交换机相连的所有Host对应的Host队列。

步骤203,确定该交换机对应的交换机队列中的Packet-in消息数量是否大于第一阈值,若是,执行步骤204,若否,执行步骤205。

步骤204,为所述Host的标识信息对应的Host建立Host队列,并将所述Packet-in消息保存到建立的Host队列。

步骤205,将接收到的Packet-in消息保存到该交换机对应的交换机队列。

步骤206,确定建立的各个Host队列中的Packet-in消息数量是否均小于第二阈值,若是,执行步骤207,若否,执行步骤208。

步骤207,确定该交换机对应的交换机队列中的Packet-in消息数量是否大于第一阈值;若是,执行步骤205,若否,执行步骤208。

步骤208,将接收到的Packet-in消息保存到所述Host的标识信息对应的Host队列。

可选地,所述控制器根据所述确定的各个交换机队列的Packet-in消息数量调度各个交换机队列中的Packet-in消息出队处理时,若确定当前调度的交换机队列为空,且确定所述当前调度的交换机队列对应的建立的任一Host队列不为空时,根据各个交换机的Packet-in消息权重确定从当前调度的交换机队列的调度的Packet-in消息数量,从所述当前调度的交换机队列对应的不为空的各个Host队列中调度出对应数量的上报消息发送。其中对应数量为确定的Packet-in消息数量。

可选地,根据各个交换机的Packet-in消息权重确定从所述当前调度的交换机队列的调度的Packet-in消息数量,从所述当前调度的交换机队列对应的不为 空的各个Host队列中调度出对应数量的上报消息发送,具体可以通过以下方式:

从所述当前调度的交换机队列对应的不为空的Host队列中上报消息数量不大于第二阈值的Host队列(即第一优先级等级对应的Host队列)中优先调度第一数量的上报消息;

从所述当前调度的交换机队列对应的不为空的Host队列中上报消息的数量大于第二阈值的其他Host队列(即第二优先级等级对应的Host队列)中调度第二数量的上报消息;

其中,所述第一数量和第二数量之和小于等于所述Packet-in消息数量,且在所述第一数量大于等于Packet-in消息数量时,所述第二数量为0。

例如:确定某个交换机队列的对应数量为10个,若当前调度的交换机队列对应的不为空的Host队列中上报消息数量不大于第二阈值的Host队列的上报消息数量总和大于等于10,则在该次轮询中,从该上报消息数量不大于第二阈值的Host队列中调度10个上报消息处理,若当前调度的交换机队列对应的不为空的Host队列中上报消息数量不大于第二阈值的Host队列的上报消息数量总和小于10,例如为8个,则从该上报消息数量不大于第二阈值的Host队列中调度8个上报消息处理,然后在当前调度的交换机队列对应的不为空的Host队列中上报消息的数量大于第二阈值的其他Host队列中调度2个上报消息处理。

其中,若确定任一交换机队列对应的各个Host队列为空,删除该交换机队列对应的各个Host队列。

具体的,控制器针对交换机队列及Host队列中的Packet-in消息的调度出队流程如图3所示。

其中,假设与控制器相连的交换机个数为n,即各个交换机对应的交换机队列分别为S1,S2,……,Sn,确定的各个交换机队列的上报消息权重为WSi,i=1,2……n。当控制器轮询到第i个交换机队列(即交换机队列Si)时,从队 列中提取出个Packet-in消息进行处理。

步骤301,确定交换机队列Si是否为空,若否,执行步骤302,若是,执行步骤304。

步骤302,对交换机队列Si中的Packet-in消息进行调度处理;执行步骤303。具体的,可以从交换机队列中提取出个Packet-in消息进行处理。

步骤303,计算i=(i+1)%n,且经过计算后的i不等于0;执行步骤301。

步骤304,确定该交换机队列Si是否有对应的Host队列,若否,执行步骤303,若是,执行步骤305。

步骤305,确定该交换机队列Si对应的所有Host队列是否均为空,若是,执行步骤306,若否,执行步骤307。

步骤306,删除交换机队列Si对应的所有Host队列。执行步骤303。

步骤307,处理交换机队列Si对应的各个Host队列中的Packet-in消息。执行步骤303。

其中,处理交换机队列Si对应的各个Host队列中的Packet-in消息采用轮询调度(Round Bobin)方式。具体如下:

优先对未受到攻击的Host队列之间进行轮询调度,从而保证未受到攻击的Host队列中的Packet-in消息能够得到及时的处理。若之前在建立Host队列时建立了Host队列的优先级,则可以根据优先级等级的大小对Host队列进行调度。而受到攻击的Host队列的优先级最低,最后调度。例如:当调度到交换机队列2时,该交换机队列2为空,则以轮询调度的方式依次从所有Host队列取出M个Packet-in消息进行处理,其中若所有未收到攻击的消息数量不足M个,则对收到攻击的Host队列中的Packet-in消息进行调度。如图4所示,假设M=5,Host队列4为受到攻击的Host对应的 Host队列。调度时,依次取出1、2、3、4号Packet-in消息,非攻击Host队列中的消息个数不足5个,则从Host队列4中取出5号Packet-in消息进行调度。

本发明实施例还提供了一种防御消息攻击的装置,如图5所示,该装置应用于控制器中,该装置包括:

接收模块501,用于接收至少一个交换机发送的上报消息;

保存模块502,用于将所述接收模块501接收到的各个交换机发送的所述上报消息分别保存到所述各个交换机对应的交换机队列;

调度模块503,用于对所述保存模块502保存的所述各个交换机对应的交换机队列进行轮询调度。

本发明实施例中所述控制器对接收到的各个交换机发送的上报消息,分别保存到所述各个交换机对应的交换机队列;控制器不再对各个交换机发送的上报消息进行单独处理,而是对各个交换机队列中的上报消息进行轮询调度。从而控制器不再直接针对接收到攻击的交换机发送的上报消息处理完后再处理其他交换机发送的上报消息,而是在上报消息保存一个时间长度后,统一对各个交换机发送的上报消息进行轮询调度。从而避免了在攻击发生时造成的非攻击流量的处理时间延长,甚至无法响应正常用户的服务请求。并且通过在控制器层面进行改进,减少了交换机的负担,不再影响交换机的转发效率。

可选地,如图6所示,该装置还可以包括:

确认模块504,用于确认所述上报消息所属的交换机队列。

判断模块505,用于判断是否存在与所述上报消息所属的交换机队列对应的主机队列;所述主机队列为与所述上报消息所属的交换机队列对应的交换机相连的各个主机对应的各个主机队列。

第一确定模块506,用于在所述判断模块505判断不存在与所述上报消息所属的交换机队列对应的主机队列时,确定所述上报消息所属的交换机队列中已存储的上报消息数量大于第一阈值。

建立模块507,在所述判断模块505判断不存在所述上报消息所属的述交 换机队列对应的主机队列且所述第一确定模块506确定所述上报消息所属的交换机队列中已存储的上报消息数量大于第一阈值时,建立与所述上报消息所属的交换机队列对应的主机队列;

所述保存模块502,具体用于将所述上报消息插入到所述建立模块507建立的与所述上报消息所属的交换机队列对应的主机队列;

第二确定模块508,用于当所述调度模块503对所述各个交换机对应的交换机队列进行轮询调度时,若确定当前调度的交换机队列为空,根据所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量和第二阈值确定各个主机队列的优先级;

所述调度模块503,具体用于根据所述第二确定模块508确定的所述当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度。

可选地,该装置还可以包括第三确定模块;

所述第三确定模块,用于在所述调度模块503根据当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度时,确定所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量是否都小于第三阈值;

所述保存单元502,用于当所述第三确定模块确定所述当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量是否都小于第三阈值时,若所述接收模块501接收到所述当前调度的交换机队列对应的交换机发送的上报消息,将所述接收模块501接收到的当前调度的交换机队列对应的交换机发送的所述上报消息插入到当前调度的交换机队列,所述第三阈值小于第二阈值。

可选地,该装置还包括:

第四确定模块,用于在所述保存模块502将所述接收模块501接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到当前调度的交换机队列之后,确定所述当前调度的交换机队列对应的各个主机队列中是 否存在上报消息存储量为零的主机队列;

删除模块,用于在所述第四确定模块确定所述当前调度的交换机队列对应的各个主机队列中存在上报消息数量为零的主机队列时,删除所述上报消息数量为零的主机队列;

或者,

第四确定模块,用于在所述保存模块502将所述接收模块501接收到的所述当前调度的交换机队列对应的交换机发送的所述上报消息插入到所述当前调度的交换机队列之后,确定所述当前调度的交换机队列对应的各个主机队列存储的上报消息数量是否均为零;

删除模块,用于在所述第四确定模块确定所述当前调度的交换机队列对应的各个主机队列存储的上报消息数量均为零时,删除所述当前调度的交换机队列对应的各个主机队列。

可选地,所述第一确定模块506,还用于确定所述上报消息所属的交换机队列中已存储的上报消息数量小于第一阈值;

所述保存模块502,还用于在所述判断模块505判断不存在与所述上报消息所属的交换机队列对应的主机队列、且所述第一确定模块506确定所述上报消息所属的交换机队列中已存储的上报消息数量小于第一阈值时,将所述上报消息插入到所述上报消息所属的交换机队列。

可选地,该装置还包括:

第五确定模块,用于在所述判断模块505判断存在与所述上报消息所属的交换机队列对应的主机队列时,确定任一主机队列中已存储的上报消息数量大于第四阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值;

所述保存模块502,还用于在所述判断模块505判断存在与所述上报消息所属的交换机队列对应的主机队列、且第五确定模块确定任一主机队列中已存储的上报消息数量大于第四阈值且所述上报消息所属的交换机队列已存储的 上报消息数量小于第一阈值时,将所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列,其中,所述第四阈值小于第二阈值。

可选地,该装置还可以包括:

第六确定模块,用于在所述判断模块505判断存在与所述上报消息所属的交换机队列对应的主机队列时,确定各个主机队列中已存储的上报消息数量均小于第五阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值;

所述保存模块502,在所述判断模块505判断存在与所述上报消息所属的交换机队列对应的主机队列,且所述第六确定模块确定各个主机队列中已存储的上报消息数量均小于第五阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,将所述上报消息插入到所述上报消息所属的交换机队列,其中所述第五阈值小于第二阈值。

具体的,所述调度模块503,具体用于根据预先为各个交换机分配的上报消息权重对所述各个交换机对应的交换机队列进行轮询调度。

本发明还提供了一种防御消息攻击的装置,如图7所示,其中该装置可以设置于控制器中,该装置用于执行图1或者图2或者图3所示的方法,具体包括处理器701、存储器702、收发器703。其中,处理器701分别与存储器702及收发器703连接。本发明实施例中不限定上述部件之间的具体连接介质,本发明实施例在图7中以存储器702、处理器701、收发器703之间通过总线连接,总线在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。

本发明实施例中存储器702,用于存储处理器701执行的程序代码,可以是只读存储器(read-only memory,简称ROM),随机存取存储器(random-access memory,简称:RAM),也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代 码并能够由计算机存取的任何其他介质,但不限于此,例如存储器702可以是上述存储器的组合。

所述处理器701执行所述存储器702所存放的程序,实现本发明图1或者图2或者图3所示的防御消息攻击的方法。

收发器703接收至少一个交换机发送的上报消息;

处理器701将收发器703接收到的各个交换机发送的所述上报消息分别保存到所述各个交换机对应的交换机队列;

处理器701对所述各个交换机对应的交换机队列进行轮询调度。

其中,各个交换机对应的交换机队列保存在存储器702中。

处理器701将收发器703接收到的各个交换机发送的所述上报消息保存到所述各个交换机对应的交换机队列,具体可以通过以下方式:

处理器701确认收发器703接收到的所述上报消息所属的交换机队列;判断是否存在与所述上报消息所属的交换机队列对应的主机队列;所述主机队列为与与所述上报消息所属的交换机队列对应的交换机相连的各个主机对应的各个主机队列;

在判断不存在与所述上报消息所属的交换机队列对应的主机队列且确定所述上报消息所属的交换机队列中已存储的上报消息数量大于第一阈值时,所述控制器建立与所述上报消息所属的交换机队列对应的主机队列,并将所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列;

处理器701对所述各个交换机对应的交换机队列进行轮询调度时,若确定当前调度的交换机队列为空,根据当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量和第二阈值确定当前调度的交换机队列对应的各个主机队列的优先级;然后根据当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度。

其中,各个主机对应的主机队列保存在存储器702中。与交换机相连的各个主机的主机队列,和该交换机的交换机队列相对应。

处理器701根据当前调度的交换机队列对应的各个主机队列的优先级对各个主机队列进行轮询调度时,在确定当前调度的交换机队列对应的各个主机队列中已存储的上报消息数量都小于第三阈值时,若收发器703接收到当前调度的交换机队列对应的交换机发送的上报消息,则处理器701将收发器703接收到的当前调度的交换机队列对应的交换机发送的所述上报消息插入到当前调度的交换机队列,所述第三阈值小于第二阈值。

处理器701将收发器703接收到的当前调度的交换机队列对应的交换机发送的所述上报消息插入到当前调度的交换机队列之后,在确定当前调度的交换机队列对应的各个主机队列中存在上报消息数量为零的主机队列时,删除所述上报消息数量为零的主机队列;或者,在确定当前调度的交换机队列对应的各个主机队列存储的上报消息数量均为零时,删除当前调度的交换机队列对应的各个主机队列。

处理器701判断是否存在与所述上报消息所属的交换机队列对应的主机队列之后,在判断不存在与所述上报消息所属的交换机队列对应的主机队列且确定所述上报消息所属的交换机队列中已存储的上报消息数量小于第一阈值时,将收发器703接收到的所述上报消息插入到所述上报消息所属的交换机队列。

处理器701判断是否存在与所述上报消息所属的交换机队列对应的主机队列时,若判断存在与所述上报消息所属的交换机队列对应的主机队列、且确定任一主机队列中已存储的上报消息数量大于第四阈值、且所述上报消息所属的交换机队列已存储的上报消息数量小于第一阈值时,将收发器703接收到的所述上报消息插入到与所述上报消息所属的交换机队列对应的主机队列,其中,所述第四阈值小于第二阈值。

其中,第四阈值可以等于上述第三阈值,也可以不等于第三阈值。

处理器701判断是否存在与所述上报消息所属的交换机队列对应的主机队列时,当判断存在与所述上报消息所属的交换机队列对应的主机队列、且确定各个主机队列中已存储的上报消息数量均小于第五阈值、且所述上报消息所属 的交换机队列已存储的上报消息数量小于第一阈值时,将收发器703接收到的所述上报消息插入到所述上报消息所属的交换机队列,其中所述第五阈值小于第二阈值。

其中,第五阈值可以等于上述第三阈值或者第四阈值,也可以不等于第三阈值及第四阈值。

处理器701对所述各个交换机对应的交换机队列进行轮询调度,具体可以通过以下方式:

根据预先为各个交换机分配的上报消息权重对所述各个交换机对应的交换机队列进行轮询调度。

本发明实施例中控制器中的处理器701对收发器703接收到的每个交换机发送的上报消息,分别保存到存储器702中存储的该交换机对应的交换机队列;控制器不再对每个交换机发送的上报消息进行单独处理,而是对所有交换机队列中的上报消息进行轮询调度。从而控制器不再直接针对接收到攻击的交换机发送的上报消息处理完后再处理其他交换机发送的上报消息,而是在上报消息保存一个时间长度后,统一对各个交换机发送的上报消息进行轮询调度。从而在抵御消息攻击的同时,避免了在攻击发生时造成的非攻击流量的处理时间延长,保证了正常响应正常用户的服务请求。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入 式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号