CN107592284A - 防DoS/DDoS攻击的装置和方法 - Google Patents
防DoS/DDoS攻击的装置和方法 Download PDFInfo
- Publication number
- CN107592284A CN107592284A CN201610527701.XA CN201610527701A CN107592284A CN 107592284 A CN107592284 A CN 107592284A CN 201610527701 A CN201610527701 A CN 201610527701A CN 107592284 A CN107592284 A CN 107592284A
- Authority
- CN
- China
- Prior art keywords
- api
- business request
- message
- message queue
- user terminal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提供一种防DoS/DDoS攻击的装置和方法,该装置包括:消息分发模块、消息队列处理模块和消息调度分发模块;消息分发模块用于接收用户终端发送的API业务请求消息;识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型;消息队列处理模块用于根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列;消息调度分发模块用于在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给API业务处理模块处理。本发明提供的防DoS/DDoS攻击的装置和方法,可以为用户终端提供公平的服务的能力,防止系统受到DoS/DDoS攻击时的崩溃。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种防DoS/DDoS攻击的装置和方法。
背景技术
云计算对外提供服务时,是以提供服务应用程序编程接口(ApplicationProgramming Interface,简称API)的方式呈现的,各种应用可以通过调用云计算的服务API,实现对云计算资源的调度、管理和使用。由于云计算服务API是直接暴露在互联网上的,做好服务API的安全性保护,是云计算业务正常开展的基本保障。API的安全保护,主要是两个方面,一个是做好认证与授权,防护被非法使用;另一个是做好防拒绝服务(Denial of Service,简称DoS)、分布式拒绝服务(Distributed Denial of Service,简称DDoS)攻击,避免系统无法及时接收并处理API业务消息请求,导致API接口不可用。
目前,对DoS/DDoS防护通常是在防火墙上配置策略,比如限制某个网络之间互连的协议(Internet Protocol,简称IP)的报文频率等。然而,采用目前在防火墙上配置策略具体到云计算服务API时,由于API业务复杂,且数量众多,在防火墙上无法通过简单的配置实现对API的有效防护。
发明内容
本发明提供一种防DoS/DDoS攻击的装置和方法,可以为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,防止系统受到DoS/DDoS攻击时的崩溃。
第一方面,本发明提供一种防DoS/DDoS攻击的装置,包括:消息分发模块、消息队列处理模块和消息调度分发模块;消息分发模块用于接收用户终端发送的API业务请求消息;识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型;消息队列处理模块用于根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列;消息调度分发模块用于根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。通过基于用户终端的ID和API业务请求消息的消息类型建立消息队列,将API业务请求消息中的业务API放到对应目标消息队列,根据API业务处理模块的负载状态,动态的调整系统能够处理的业务量,并在不同的用户终端间公平的调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面,在第一方面的第一种实现方式中,消息队列处理模块具体用于:根据消息类型判断API业务请求消息是否是API业务处理流程的首消息;若API业务请求消息是API业务处理流程的首消息,则将API业务请求消息添加到对与用户终端的ID对应的消息队列;若API业务请求消息是API业务处理流程的中间消息,则将API业务请求消息添加到公共消息队列。通过根据API业务请求消息是否是API业务处理流程的首消息还是中间消息,来确定将API业务请求消息分发到用户终端的ID对应的消息队列还是高优先级的公共消息队列实现建立,实现对接收的API业务请求消息的分发处理,在不同的用户终端间公平的调度API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面的第一种实现方式,在第一方面的第二种实现方式中,消息队列处理模块还用于:确定API业务请求消息中API的实时响应要求;消息队列处理模块具体用于:若所述API业务请求消息是API业务处理流程的首消息,将API实时响应要求大于或等于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第一消息队列;若所述API业务请求消息是API业务处理流程的首消息,将API实时响应要求小于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第二消息队列。通过根据API业务请求消息中API的实时响应要求为每一个用户终端建立不同优先级的消息队列,实现对接收的API业务请求消息的分发处理,在不同的用户终端间公平的调度API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面的第一种实现方式和第一方面的第二种实现方式,在第一方面的第三种实现方式中,消息队列处理模块还用于:判断与用户终端的ID对应的每个消息队列在第一预设时间内是否有API业务请求消息;若与用户终端的ID对应的每个消息队列在第一预设时间内没有API业务请求消息,则将在第一预设时间内没有API业务请求消息的消息队列添加到消息回收资源池。通过为所有用户终端建立公共的消息回收资源池,避免了消息队列没有API业务请求消息处理时长期占用系统空间,造成资源的浪费。
结合第一方面至第一方面的第三种实现方式,在第一方面的第四种实现方式中,消息队列处理模块还用于:遍历每个消息队列以确定是否存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息;若存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息,则丢弃未处理时间大于第二预设时间的API业务请求消息。通过对消息队列设置老化机制,避免消息队列长期未处理的API业务请求消息占用系统资源,造成资源的浪费。
结合第一方面至第一方面的第四种实现方式,在第一方面的第五种实现方式中,消息分发模块还用于:遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息;若存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,则拒绝接收占用率大于第二预设阈值的对应消息类型的API业务请求消息。通过对消息队列的反压监控,可以控制放入消息队列的API业务请求消息的数量,避免某一个用户连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面至第一方面的第五种实现方式,在第一方面的第六种实现方式中,消息分发模块还用于:判断是否存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端;若存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端,则将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。通过建立黑名单机制,并丢弃黑名单中的用户终端后续发送的所有API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面至第一方面的第五种实现方式,在第一方面的第七种实现方式中,消息分发模块还用于:判断是否存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端;若存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端,则将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。通过建立黑名单机制,并丢弃黑名单中的用户终端后续发送的所有API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面的第一种实现方式至第一方面的第七种实现方式,在第一方面的第八种实现方式中,消息调度分发模块具体用于:将所有用户终端的ID对应的消息队列进行轮循调度发送给对应的API业务处理模块处理,直至调度出的消息队列的数量等于业务量。通过采用轮循调度的调度策略对用户终端的ID对应的消息队列进行调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面的第一种实现方式至第一方面的第七种实现方式,在第一方面的第九种实现方式中,消息调度分发模块具体用于:确定不同级别用户终端的优先级权重;根据不同级别用户终端的优先级权重,确定不同级别用户终端的ID对应的消息队列的调度数量;将数量为调度数量的不同级别用户终端的ID对应的消息队列发送给对应的API业务处理模块处理。通过采用用户终端优先级权重的调度策略对用户终端的ID对应的消息队列进行调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
结合第一方面的第一种实现方式至第一方面的第七种实现方式,在第一方面的第十种实现方式中,消息调度分发模块具体用于:确定不同类别的消息队列的权重;根据不同类别的消息队列的权重,确定不同类别的消息队列的调度数量;将数量为调度数量的不同类别的消息队列发送给对应的API业务处理模块处理。通过采用消息队列优先级权重的调度策略对用户的消息队列进行调度,为用户提供公平的服务的能力,避免某一个用户连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
第二方面,本发明提供一种防DoS/DDoS攻击的方法,包括:接收用户终端发送的API业务请求消息;识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型;根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列;根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。通过基于用户终端的ID和API业务请求消息的消息类型建立消息队列,将API业务请求消息中的业务API放到对应目标消息队列,根据API业务处理模块的负载状态,动态的调整系统能够处理的业务量,并在不同的用户终端间公平的调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
本发明第二方面提供的方法用于执行第一方面所示装置实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
第三方面,本发明提供一种防DoS/DDoS攻击的装置,包括:存储器和处理器。存储器用于存储执行指令,处理器与存储器之间通信,处理器调用执行指令执行上述方法中的操作。通过基于用户终端的ID和API业务请求消息的消息类型建立消息队列,将API业务请求消息中的业务API放到对应目标消息队列,根据API业务处理模块的负载状态,动态的调整系统能够处理的业务量,并在不同的用户终端间公平的调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
本发明实施例提供的防DoS/DDoS攻击的装置和方法,通过消息分发模块接收API业务请求消息,识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型,消息队列处理模块根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列;消息调度分发模块根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,基于用户终端的ID和API业务请求消息的消息类型建立消息队列,将API业务请求消息中的业务API放到对应的目标消息队列,根据API业务处理模块的负载状态,动态的调整系统能够处理的业务量,并在不同的用户终端间公平的调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的防DoS/DDoS攻击的系统框架图;
图2为本发明实施例提供的防DoS/DDoS攻击的方法流程图;
图3为本发明实施例提供的防DoS/DDoS攻击的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前在防火墙上配置策略对DoS/DDoS防护时,由于API业务复杂,且数量众多,在防火墙上无法通过简单的配置实现对API的有效防护;而本申请的技术方案,基于用户终端的ID和API业务请求消息的消息类型建立消息队列,将API业务请求消息中的业务API放到用户终端的ID对应的消息队列,通过调用不同用户终端的ID对应的不同类型的消息队列,实现对接收的API业务请求消息的分发处理,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
图1为本发明实施例提供的防DoS/DDoS攻击的系统框架图,如图1所示,在API业务处理模块1前端增加一个防DoS/DDoS攻击的装置2,本实施例提供的防DoS/DDoS攻击的装置,包括:消息分发模块21、消息队列处理模块22和消息调度分发模块23。
消息分发模块21,用于接收用户终端发送的API业务请求消息;识别发送API业务请求消息的用户终端的标识(Identity,简称ID)和API业务请求消息的消息类型。
消息队列处理模块22,用于根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列。
消息调度分发模块23,用于根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。
具体的,本发明实施例中的防DoS/DDoS攻击的装置可以设置在OpenStack系统中,在OpenStack系统中的API业务处理模块1前端增加一个防DoS/DDoS攻击的装置2,防DoS/DDoS攻击的装置2由消息分发模块21、消息队列处理模块22和消息调度分发模块23三个模块组成,当用户需要调用API接口时,用户在用户终端中输入API业务请求消息,通过因特网(Internet)发送给DoS/DDoS攻击的装置,DoS/DDoS攻击的装置中消息分发模块21接收用户终端发送的API业务请求消息,其中,API业务请求消息中包括业务API的标识,业务API用于指示用户终端向OpenStack系统请求实现的业务。消息分发模块21根据API业务请求消息中API的标识可以识别出发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型。消息队列处理模块22根据用户终端的ID和消息类型确定目标消息队列,将API业务请求消息放入对应的目标消息队列,其中,目标消息队列是根据用户终端的ID和消息类型建立的,目标消息队列可以根据用户终端的ID建立的与用户终端的ID对应的消息队列,也可以根据API业务请求消息的消息类型建立的不同消息类型的消息队列,也可以根据用户终端的ID和API业务请求消息的消息类型建立的与用户终端的ID对应的不同消息类型的消息队列。消息调度分发模块23在各目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,具体的,采用一定的调度算法和调度策略在目标消息队列间进行API业务请求消息的调度,比如,可以采用调度算法确定出一个控制周期内API业务处理模块1可以处理的业务量,采用调度策略确定出调度哪些消息队列的API业务请求消息发送给对应的API业务处理模块1处理,如图1所示,消息调度分发模块23采用调度策略确定出调度哪些消息队列的API业务请求消息发送给API业务处理模块a、API业务处理模块b……API业务处理模块n中对应的API业务处理模块处理,a、b和n分别表示不同的API业务处理模块,a、b和n分别为大于等于1的整数。
可选的,消息调度分发模块23可以包括关键资源负载监控子模块、调度算法和策略子模块和消息调度执行子模块,关键资源负载监控子模块负责监控API业务处理模块的关键资源,如CPU、消息队列和高速缓冲存储器(CACHE)等。监控的方式可以是关键资源负载监控子模块向API业务处理模块1主动查询或由API业务处理模块1定时上报等。调度算法和策略处理子模块根据API业务处理模块关键资源的负载情况,并结合用户终端的ID的优先级和消息队列的优先级计算出调度策略。消息调度执行子模块根据调度策略,把不同用户终端的不同类型的消息队列的API业务请求消息分发到对应API业务处理模块1中进行处理。
需要说明的是,OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成,OpenStack其具体实现过程和实现原理与现有技术相同,本实施例在此不进行限定和赘述。
本发明实施例提供的防DoS/DDoS攻击的装置,通过消息分发模块接收API业务请求消息,识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型,消息队列处理模块根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列;消息调度分发模块根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,基于用户建立消息队列,将API业务请求消息中的业务API放到对应用户的对应消息队列,通过调用不同用户的不同类型的消息队列,实现对接收的API业务请求消息的分发处理,为用户提供公平的服务的能力,避免某一个用户连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图1所示实施例中,消息队列处理模块22,用于为每个用户终端建立不同优先级的消息队列,每一个级别的消息队列对应一种类型的消息队列;为所有用户建立高优先级的公共消息队列。
具体的,消息队列处理模块22为每个用户终端建立不同的优先级消息队列,根据用户终端的ID和API业务请求消息的消息类型为每一个用户终端建立与用户终端ID对应的不同消息类型的消息队列,以及为所有用户终端建立一个高优先级的公共消息队列,高优先级的公共消息队列的优先级大于每一个用户终端的任何级别的消息队列。其中,消息队列处理模块22可以根据API业务请求消息中的业务API的分类和级别为每一个用户终端建立至少一个优先级的消息队列,也即,一个用户终端可以只有一个类型的消息队列,此时,用户终端的消息队列也只有一个优先级;一个用户终端也可以有多个类型的消息队列,此时,一个用户终端存在多个优先级的消息队列,每一个API业务请求消息中的每一个类型的业务API对应一个级别的消息队列。如图1所示,消息队列处理模块22为用户终端1、用户终端2……用户终端N共N个用户终端建立不同的优先级队列,N为大于等于1的整数,以及为N个用户终端建立立一个高优先级的公共消息队列;本发明实施例中消息队列的优先级可以通过数字的大小表示消息队列的优先级级别的高低,数字大的消息队列的优先级高于数字小的消息队列的优先级,如图1中,用数字0和1分别表示不同的不同级别的消息队列,用数字2表示高优先级的公共消息队列,用数字2标记的高优先级的公共消息队列的优先级高于每一个用户终端的不同级别的消息队列,每一个用户终端中的用数字1标记的消息队列的优先级高于用数字0标记的消息队列的优先级。需要说明的是,本发明实施例可以但并仅限于通过数字的大小表示消息队列的优先级级别的高低,也可以通过英文字母(a、b和c等)表示消息队列的优先级级别的高低,也可以通过汉子(高、中和低)等表示消息队列的优先级级别的高低,本发明实施例在此不进行限定和赘述。
可选的,消息队列处理模块22还用于确定API业务请求消息中API的实时响应要求;消息队列处理模块22具体用于:将API实时响应要求大于或等于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第一消息队列;将API实时响应要求小于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第二消息队列。
具体的,可以根据API业务请求消息中API的实时响应要求为每一个用户终端建立不同优先级的消息队列,对实时响应要求低的API可以归为一类,放入一个级别的消息队列,如创建虚拟机请求API;对实时响应要求高的API可以归为一类,放入一个级别的消息队列,如查询类的API。本发明实施例中第一预设阈值是为了判断实时响应要求的高低,第一预设阈值可以根据系统中央处理器(Central Processing Unit,简称CPU)的处理速率而定,比如,若CPU的处理速率较慢,则第一预设阈值可以设置的较大一些;若CPU的处理速率较快,则第一预设阈值可以设置的较小一些,本发明实施例在此不进行限定和赘述。需要说明的是,本实施例中与用户终端的ID对应的第一消息队列和与用户终端的ID对应的第二消息队列是为了区别不同用户终端的ID对应的不同类型的消息队列,比如,可以但不仅限于放入创建虚拟机请求API的消息队列称为第一消息队列,将放入查询类的API的消息队列称为第二消息队列。
可选的,消息队列处理模块22还用于:判断用户终端的ID对应的每个消息队列在第一预设时间内是否有API业务请求消息;若与用户终端的ID对应的每个消息队列在第一预设时间内没有API业务请求消息,则将在第一预设时间内没有API业务请求消息的消息队列添加到消息回收资源池。
具体的,本发明实施例消息队列处理模块22还可以为所有用户终端建立公共的消息回收资源池,如果一个用户终端的消息队列在一定的时间段内都没有API业务请求消息处理,则对应用户终端的对应消息队列可以放入公共的消息回收资源池,当该用户终端有业务时,可以从公共的消息回收资源池中重新申请,避免了消息队列没有API业务请求消息处理时长期占用系统空间,造成资源的浪费。本发明实施例中第一预设时间可以根据API业务请求消息的数量而定,比如,若API业务请求消息的数量较多,则第一预设时间可以设置的较大一些;若API业务请求消息的数量较少,则第一预设时间可以设置的较小一些,本发明实施例在此不进行限定和赘述。
可选的,消息队列处理模块22还用于:遍历每个消息队列以确定是否存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息;若存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息,则丢弃未处理时间大于第二预设时间的API业务请求消息。
具体的,本发明实施例通过遍历每个消息队列以判断每个消息队列API业务请求消息的未处理时间是否大于第二预设时间,对消息队列设置老化机制,并且可根据消息队列的类型设置老化的时间,比如,将第二预设时间设置为3秒(s),消息队列的老化时间为3s,则API业务请求消息在消息队列超过3秒就自动老化丢弃。本发明实施例中第二预设时间可以根据系统CPU的处理速率而定,比如,若CPU的处理速率较慢,则第二预设时间可以设置的较大一些;若CPU的处理速率较快,则第二预设时间可以设置的较小一些,本发明实施例在此不进行限定和赘述。
消息队列处理模块22具体用于:根据消息类型判断API业务请求消息是否是API业务处理流程的首消息;若API业务请求消息是API业务处理流程的首消息,则将API业务请求消息添加到与用户终端的ID对应的消息队列;若API业务请求消息是API业务处理流程的中间消息,则将API业务请求消息添加到公共消息队列。
具体的,消息队列处理模块22根据用户终端的ID和API业务请求消息的消息类型,将API业务请求消息添加到对应用户终端的对应的消息队列时,将是API业务处理流程的首消息的API业务请求消息放入与用户终端的ID对应的消息队列,将是API业务处理流程的中间消息的API业务请求消息放入到高优先级的公共消息队列,根据API业务请求消息是否是API业务处理流程的首消息还是中间消息,来确定将API业务请求消息分发到不同用户终端的不同级别的消息队列还是高优先级的公共消息队列。进一步的,本发明实施中对于一个多消息交互的处理流程,所有中间消息放入高优先级的公共消息队列优先处理。因为API业务请求消息的中间消息产生在首消息之后,本发明实施例将中间消息的优先级高于所有首消息的优先级,可以避免如果中间消息与首消息一样的优先级,被丢弃没有被处理时,前面的首消息处理就浪费了,没有达到资源效率的最大使用。
本发明实施例提供的防DoS/DDoS攻击的装置,在上述实施例的基础上,通过消息队列处理模块为每个用户终端建立不同优先级的消息队列,每一个级别的消息队列对应一种消息类型的消息队列;为所有用户终端建立高优先级的公共消息队列;若API业务请求消息是API业务处理流程的首消息,则将API业务请求消息放入与用户终端的ID对应的消息队列;若API业务请求消息是API业务处理流程的中间消息,则将API业务请求消息放入到高优先级的公共消息队列,实现建立基于不同用户终端的不同优先级别的消息队列,在不同的用户终端间公平的调度API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图1所示实施例中,消息分发模块21还用于:遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息;若存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,则拒绝接收占用率大于第二预设阈值的对应消息类型的API业务请求消息。
具体的,消息分发模块21还可以包括反压控制子模块,负责监控消息队列处理模块22中消息队列的负载情况,根据消息队列的长度或者消息队列的占用率反压控制消息队列。比如,可以监控并判断每个消息队列API业务请求消息的占用率是否大于第二预设阈值,直接拒绝对应消息队列对应的消息类型的API业务请求消息。比如,创建虚拟机请求API对应的消息队列的占用率大于第二预设阈值,则消息分发模块在后续接到创建虚拟机请求API时直接丢弃。本发明实施例中,第二预设阈值可以根据系统CPU的处理速率而定,比如,若CPU的处理速率较慢,则第二预设阈值可以设置的较大一些;若CPU的处理速率较快,则第二预设阈值可以设置的较小一些,本发明实施例在此不进行限定和赘述。
本发明实施例提供的防DoS/DDoS攻击的装置,在上述实施例的基础上,通过消息分发模块遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,在消息队列API业务请求消息的占用率大于第二预设阈值时拒绝接收对应消息队列对应的类型的API业务请求消息,通过对消息队列的反压监控,可以控制放入消息队列的API业务请求消息的数量,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图1所示实施例中,消息分发模块21还用于:判断是否存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端;若存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端,则将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。
具体的,本发明实施例中消息分发模块21还可以建立黑名单机制,将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端加入黑名单,并丢弃该用户终端后续发送的所有API业务请求消息。比如,若一个用户终端在第三预设时间内发送了创建虚拟机请求API和查询类的API两种API业务请求消息,如果用户终端在第三预设时间内发送的创建虚拟机请求API和查询类的API数量大于第三预设阈值,则将该用户终端加入黑名单。本发明实施例中第三预设时间可以根据系统CPU的处理速率而定,比如,若CPU的处理速率较慢,则第三预设时间可以设置的较大一些;若CPU的处理速率较快,则第三预设时间可以设置的较小一些;本发明实施例中第三预设阈值可以根据API业务请求消息的数量而定,比如,若API业务请求消息的数量较多,则第三预设阈值可以设置的较大一些;若API业务请求消息的数量较少,则第三预设阈值可以设置的较小一些,本发明实施例在此不进行限定和赘述。
进一步地,在图1所示实施例中,消息分发模块21还用于:判断是否存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端;
若存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端,则将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。
具体的,本发明实施例中消息分发模块21还可以建立黑名单机制,将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端加入黑名单,并丢弃该用户终端后续发送的所有API业务请求消息,其中,预设类型是API业务请求消息中的预先选取的某一种或某一种消息类。比如,若一个用户终端在第四预设时间内发送了创建虚拟机请求API和查询类的API两种API业务请求消息,如果创建虚拟机请求API是比较关键的API业务请求消息,此时可以将创建虚拟机请求API设置为预设类型,如果用户终端在第四预设时间内发送的判断创建虚拟机请求API的数量大于第四预设阈值,则将该用户终端加入黑名单。本发明实施例中的第四预设时间可以和上述实施例中的第三预设时间相同,也可以设置为不同,第四预设时间可以根据系统CPU的处理速率而定,比如,若CPU的处理速率较慢,则第四预设时间可以设置的较大一些;若CPU的处理速率较快,则第四预设时间可以设置的较小一些;本发明实施例中的第四预设阈值可以和上述实施例中的第三预设阈值相同,也可以设置为不同,第四预设阈值可以根据API业务请求消息的数量而定,比如,若API业务请求消息的数量较多,则第四预设阈值可以设置的较大一些;若API业务请求消息的数量较少,则第四预设阈值可以设置的较小一些,本发明实施例在此不进行限定和赘述。
可选的,消息分发模块21自身也可以提供防DoS/DDoS保护。由于入口消息分发处理时,逻辑简单,消耗资源少,通过分布式部署的方式,在配置上要满足最大业务量请求的规格;消息分发模块21监控自身的关键资源的负载,如CPU占用率,当CPU占用率超过阈值时,丢弃接收的API业务请求消息,同时,告警,提醒管理员进行系统扩容。
本发明实施例提供的防DoS/DDoS攻击的装置,在上述实施例的基础上,通过建立黑名单机制,将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端加入黑名单,或者将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端加入黑名单,并丢弃添加到黑名单的该用户终端后续发送的所有API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图1所示实施例中,消息调度分发模块23具体用于:根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在不同用户的消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。
具体的,本发明实施例可以采用窗口接入控制算法(Windows AccessLimit,简称WAL)的调度算法确定出一个控制周期内API业务处理模块1可以处理的业务量,实现在不同用户的消息队列间进行API业务请求消息的调度。其中,WAL是流量控制中常用的一种算法,即根据资源负载状态(例如CPU占用率、队列时延、队列长度等因子)确定系统负载状态,根据负载状态确定一个控制周期内允许通过的业务量。本发明实施例以下以但不仅限于CPU占用率为负载控制对象描述WAL算法细节,以目标CPU控制区间为80%~85%为例,描述固定比例法WAL调整算法:
下一个周期可以处理的消息变量定义为pWAL,CPU的变量定义为pCPU;pWAL的取值范围WALmin~WALmax,WALmin为最小保护流量,WALmax是WAL为最大保护流量,防止系统突增流量太大WAL来不及调整把系统冲崩溃;pWAL初始化为WALmax;pCPU过载划分多少级不是固定的,一般至少4级,级别太少调整的粒度较粗容易出现波动;以分为6级为例,在CPU低于70%时,为非过载状态,WAL=WALmax(这时系统实际处理的业务量少于WALmax);当CPU超过70%时,系统进入控制状态。pCPU从不过载到过载时,WAL=Mpre,Mpre是上控制周期实际处理的业务量;(控制周期的长短可配置,通常配置为1s.)。pCPU其他情况下,WAL=WAL(1+X),X取决于过载级别:
·pCPU非过载(CPU:<70%):+20%
·pCPU I级(CPU:70%~75%):+10%
·pCPU II级(CPU:75%~80%):+5%
·pCPU III级(CPU:80%~85%):0
·pCPU IV级(CPU:85%~90%):-5%
·pCPU V级(CPU:90%~95%):-10%
·pCPU VI级(CPU:>95%):-15%
该算法的本质是,当控制对象的负载上升时,窗口缩小,减少下一个周期系统的业务处理量;当控制对象的负载下降时,窗口放大,增加下一个周期系统的业务处理量。这样,控制窗口的大小随着负载对象的变化而变化,从而保证的系统的平稳运行。
进一步地,在图1所示实施例中,消息调度分发模块23具体用于:
将所有用户终端的ID对应的消息队列进行轮循调度发送给对应的API业务处理模块处理,直至调度出的消息队列的数量等于业务量。
具体的,本发明实施例中采用调度策略确定出调度哪些消息队列API业务请求消息发送给对应的API业务处理模块1处理具体可以为:根据API业务队列的负载状态,计算出来下一个周期,比如可以处理100条查询类的请求消息,则在当前所有用户终端的ID对应的请求类消息队列进行轮循,至到调度出100条消息为止,并且下一个周期,从当前最后一个调度位置的下一个用户终端为起点开始调度。
本发明实施例提供的防DoS/DDoS攻击的装置,在上述实施例的基础上,通过消息调度分发模块将所有用户终端的ID对应的消息队列进行轮循调度发送给对应的API业务处理模块处理,直至调度出的消息队列的数量等于业务量。采用轮循调度的调度策略对用户终端的ID对应的消息队列进行调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图1所示实施例中,消息调度分发模块23具体用于:确定不同级别用户终端的优先级权重;根据不同级别用户终端的优先级权重,确定不同级别用户终端的ID对应的消息队列的调度数量;将数量为调度数量的不同级别用户终端的ID对应的消息队列发送给对应的API业务处理模块处理。
具体的,本发明实施例中采用调度策略确定出调度哪些消息队列API业务请求消息发送给对应的API业务处理模块1处理具体可以为:如果用户终端有优先级,也即用户终端的ID具有优先级,则预先根据优先级的权重计算出不同优先级可以调度的消息数据。假设用户终端分为两个优先级,高优先级的权重为6,低优先级的权重为4,如根据API业务队列的负载状态,计算出来下一个周期,可以处理100条查询类的请求消息,则高优先级的用户终端分配到的调度数为60,低优先级的用户终端分配到的调度数为40。更进一步的,如果高优先用户的消息队列请求消息数不足60,假设只有30,则可以把多余的30条消息处理能力转移给低优先级的用户终端,即低优先级的用户终端可以调度70条请求消息。同理,低优先级的消息数不足分配的调度数量,也可以转给高优先级的用户终端。
本发明实施例提供的防DoS/DDoS攻击的装置,在上述实施例的基础上,通过消息调度分发模块确定不同级别用户终端的优先级权重;根据不同级别用户终端的优先级权重,确定不同级别用户终端的ID对应的消息队列的调度数量;将数量为调度数量的不同级别用户终端的ID对应的消息队列发送给对应的API业务处理模块处理。采用用户终端优先级权重的调度策略对用户终端的ID对应的消息队列进行调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图1所示实施例中,消息调度分发模块23具体用于:确定不同类别的消息队列的权重;根据不同类别的消息队列的权重,确定不同类别的消息队列的调度数量;将数量为调度数量的不同类别的消息队列发送给对应的API业务处理模块处理。
具体的,本发明实施例中采用调度策略确定出调度哪些消息队列API业务请求消息发送给对应的API业务处理模块1处理具体可以为:如果用户的消息队列有多个,并且不同队列的消息处理对API业务资源处理模块的资源消耗是不一样,比如创建一个虚拟机的过程,消耗CPU两个点,查询一个用户虚拟机信息的,消耗CPU一个点,则创建虚拟机API的权重就是查询用户虚拟机API的两倍。在计算调度创建虚拟机消息队列的消息量时,调度一条消息,就要消息WAL两个基准值。API的权重可以预先配置,WAL计算时,以基础权重为计算单位,如果虚拟机创建API的权重为2,查询虚拟机API的权重为1,则处理一条虚拟机创建API消息的WAL统计为2,处理一条查询虚拟机API的统计为1。
本发明实施例提供的防DoS/DDoS攻击的装置,在上述实施例的基础上,通过消息调度分发模块确定不同类别的消息队列的权重;根据不同类别的消息队列的权重,确定不同类别的消息队列的调度数量;将数量为调度数量的不同类别的消息队列发送给对应的API业务处理模块处理。采用消息队列优先级权重的调度策略对用户的消息队列进行调度,为用户提供公平的服务的能力,避免某一个用户连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
需要说明的是,在上述实施例中,高优先级公共消息队列的API业务请求消息不需要计算,只要高优先级公共消息队列有API业务请求消息,就优先调度。
需要说明的是,本发明实施例也可以在云计算系统中增加一个防DoS/DDoS攻击的装置,在增加的防DoS/DDoS攻击的装置中根据每个用户终端的每个API的处理能力预先做配置,云计算系统每收到一条API业务处理消息,防DoS/DDoS攻击的装置就以用户终端和API为关键值进行统计,即统计每个用户终端的API的数量,如果在一个统计周期内,某个用户终端的API的数量超过预先配置的值,则在这个统计周期内,后续的API业务处理消息不再处理。本发明实施例在云计算系统中增加一个防DoS/DDoS攻击的装置,通过统计每个用户终端的API的数量,处理简单,且能够保证每个用户终端的每个API都能得到一定量的处理,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
图2为本发明实施例提供的防DoS/DDoS攻击的方法流程图。如图2所示,本发明实施例提供的方法,包括:
S201:接收用户终端发送的API业务请求消息。
S202:识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型。
S203:根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列。
进一步地,在S203中根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列,包括:根据消息类型判断API业务请求消息是否是API业务处理流程的首消息;若API业务请求消息是API业务处理流程的首消息,则将API业务请求消息添加到与用户终端的ID对应的消息队列;若API业务请求消息是API业务处理流程的中间消息,则将API业务请求消息添加到公共消息队列。
将API业务请求消息添加到与用户终端的ID对应的消息队列之前,还包括:确定API业务请求消息中API的实时响应要求;
将API业务请求消息添加到与用户终端的ID对应的消息队列,包括:将API实时响应要求大于或等于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第一消息队列;将API实时响应要求小于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第二消息队列。
S204:根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量。
S205:根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。
本发明实施例提供的方法用于执行图1所示装置实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例提供的防DoS/DDoS攻击的方法,通过接收API业务请求消息,识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型;根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列;根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,基于用户终端的ID和API业务请求消息的消息类型建立消息队列,将API业务请求消息中的业务API放到对应的目标消息队列,根据API业务处理模块的负载状态,动态的调整系统能够处理的业务量,并在不同的用户终端间公平的调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图2所示实施例中,根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,可以包括几下几种实现方式:
第一种实现方式:将所有用户终端的ID对应的消息队列进行轮循调度发送给对应的API业务处理模块处理,直至调度出的消息队列的数量等于业务量。
第二种实现方式:确定不同级别用户终端的优先级权重;根据不同级别用户终端的优先级权重,确定不同级别用户终端的ID对应的消息队列的调度数量;将数量为调度数量的不同级别用户终端的ID对应的消息队列发送给对应的API业务处理模块处理。
第三种实现方式:确定不同类别的消息队列的权重;根据不同类别的消息队列的权重,确定不同类别的消息队列的调度数量;将数量为调度数量的不同类别的消息队列发送给对应的API业务处理模块处理。
本发明实施例提供的防DoS/DDoS攻击的方法,在上述实施例的基础上,通过采用轮循调度、用户终端的优先级权重调度和消息队列的权重调度三种调度策略对用户的消息队列进行调度,为用户终端提供公平的服务的能力,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图2所示实施例中,本发明实施例提供的方法,还包括:
判断与用户终端的ID对应的每个消息队列在第一预设时间内是否有API业务请求消息;
若与用户终端的ID对应的每个消息队列在第一预设时间内没有API业务请求消息,则将在第一预设时间内没有API业务请求消息的消息队列添加到消息回收资源池。
本发明实施例提供的防DoS/DDoS攻击的方法,在上述实施例的基础上,通过消息队列处理模块为每个用户终端建立不同优先级的消息队列,每一个级别的消息队列对应一种消息类型的消息队列;为所有用户终端建立高优先级的公共消息队列;若API业务请求消息是API业务处理流程的首消息,则将API业务请求消息放入与用户终端的ID对应的消息队列;若API业务请求消息是API业务处理流程的中间消息,则将API业务请求消息放入到高优先级的公共消息队列,实现建立基于不同用户的不同优先级别的消息队列,在不同的用户终端间公平的调度API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图2所示实施例中,本发明实施例提供的方法,还包括:
遍历每个消息队列以确定是否存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息;
若存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息,则未处理时间大于第二预设时间的API业务请求消息。
本发明实施例提供的防DoS/DDoS攻击的方法,在上述实施例的基础上,通过遍历每个消息队列以确定是否存在API业务请求消息的未处理时间大于第二预设时间,对消息队列设置老化机制,并且可根据消息队列的类型设置老化的时间,避免消息队列长期未处理的API业务请求消息占用系统资源,造成资源的浪费。
进一步地,在图2所示实施例中,本发明实施例提供的方法,还包括:
遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息;
若存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,则拒绝接收占用率大于第二预设阈值的对应消息类型的API业务请求消息。
本发明实施例提供的防DoS/DDoS攻击的方法,在上述实施例的基础上,通过遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,在消息队列API业务请求消息的占用率大于第二预设阈值时拒绝接收对应消息队列对应的类型的API业务请求消息,通过对消息队列的反压监控,可以控制放入消息队列的API业务请求消息的数量,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图2所示实施例中,本发明实施例提供的方法,还包括:
判断是否存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端;
若存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端,则将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。
本发明实施例提供的防DoS/DDoS攻击的方法,在上述实施例的基础上,通过建立黑名单机制,将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端加入黑名单,并丢弃添加到黑名单的该用户终端后续发送的所有API业务请求消息,避免某一个用户终端连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
进一步地,在图2所示实施例中,本发明实施例提供的方法,还包括:
判断是否存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端;
若存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端,则将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。
本发明实施例提供的防DoS/DDoS攻击的方法,在上述实施例的基础上,通过建立黑名单机制,将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端加入黑名单,并丢弃添加到黑名单的该用户终端后续发送的所有API业务请求消息,避免某一个用户连续发起的多次恶意请求,可以防止系统受到DoS/DDoS攻击时的崩溃。
图3为本发明实施例提供的防DoS/DDoS攻击的装置的结构示意图。如图3所示,本发明实施例提供的防DoS/DDoS攻击的装置,包括:存储器31和处理器32。
具体的,存储器31用于存储执行指令,处理器32可以是一个中央处理器(Central Processing Unit,CPU),或者是特定集成电路(Application SpecificIntegrated Circuit,ASIC),或者完成实施本发明实施例的一个或多个集成电路。当防DoS/DDoS攻击的装置运行时,处理器32与存储器31之间通信,处理器32调用执行指令,用于执行以下操作:
接收用户终端发送的API业务请求消息;识别发送API业务请求消息的用户终端的ID和API业务请求消息的消息类型;根据用户终端的ID和消息类型确定目标消息队列,并将API业务请求消息添加到目标消息队列;据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据业务量在目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。
其中,处理器32还用于执行以下操作:
根据消息类型判断API业务请求消息是否是API业务处理流程的首消息;若API业务请求消息是API业务处理流程的首消息,则将API业务请求消息添加到与用户终端的ID对应的消息队列;若API业务请求消息是API业务处理流程的中间消息,则将API业务请求消息添加到公共消息队列。
其中,处理器32还用于执行以下操作:
确定API业务请求消息中API的实时响应要求;
处理器32具体用于将API实时响应要求大于或等于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第一消息队列;将API实时响应要求小于第一预设阈值的API业务请求消息添加到与用户终端的ID对应的第二消息队列。
其中,处理器32还用于执行以下操作:
判断与用户终端的ID对应的每个消息队列在第一预设时间内是否有API业务请求消息;若与用户终端的ID对应的每个消息队列在第一预设时间内没有API业务请求消息,则将在第一预设时间内没有API业务请求消息的消息队列添加到公共的消息回收资源池。
其中,处理器32还用于执行以下操作:
遍历每个消息队列以确定是否存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息;若存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息,则丢弃消未处理时间大于第二预设时间的API业务请求消息。
其中,处理器32还用于执行以下操作:
遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息;若存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,则拒绝接收占用率大于第二预设阈值的对应消息类型的API业务请求消息。
其中,处理器32还用于执行以下操作:
判断是否存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端;若存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端,则将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。
其中,处理器32还用于执行以下操作:
判断是否存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端;若存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端,则将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端添加到黑名单,并丢弃添加到黑名单的用户终端发送的API业务请求消息。
其中,处理器32还用于执行以下操作:
将所有用户终端的ID对应的消息队列进行轮循调度发送给对应的API业务处理模块处理,直至调度出的消息队列的数量等于业务量。
其中,处理器32还用于执行以下操作:
确定不同级别用户终端的优先级权重;根据不同级别用户终端的优先级权重,确定不同级别用户终端的ID对应的消息队列的调度数量;将数量为调度数量的不同级别用户终端的ID对应的消息队列发送给对应的API业务处理模块处理。
其中,处理器32还用于执行以下操作:
确定不同类别的消息队列的权重;
根据不同类别的消息队列的权重,确定不同类别的消息队列的调度数量;
将数量为调度数量的不同类别的消息队列发送给对应的API业务处理模块处理。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (22)
1.一种防DoS/DDoS攻击的装置,其特征在于,包括:消息分发模块、消息队列处理模块和消息调度分发模块;
所述消息分发模块,用于接收用户终端发送的应用程序编程接口API业务请求消息;识别发送所述API业务请求消息的用户终端的标识ID和所述API业务请求消息的消息类型;
所述消息队列处理模块,用于根据所述用户终端的ID和所述消息类型确定目标消息队列,并将所述API业务请求消息添加到所述目标消息队列;
所述消息调度分发模块,用于根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;根据所述业务量在所述目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。
2.根据权利要求1所述的装置,其特征在于,所述消息队列处理模块具体用于:
根据所述消息类型判断所述API业务请求消息是否是API业务处理流程的首消息;
若所述API业务请求消息是API业务处理流程的首消息,则将所述API业务请求消息添加到与所述用户终端的ID对应的消息队列;
若所述API业务请求消息是API业务处理流程的中间消息,则将所述API业务请求消息添加到公共消息队列。
3.根据权利要求2所述的装置,其特征在于,所述消息队列处理模块还用于:
确定所述API业务请求消息中API的实时响应要求;
所述消息队列处理模块具体用于:
若所述API业务请求消息是API业务处理流程的首消息,将API实时响应要求大于或等于第一预设阈值的所述API业务请求消息添加到与所述用户终端的ID对应的第一消息队列;
若所述API业务请求消息是API业务处理流程的首消息,将API实时响应要求小于所述第一预设阈值的所述API业务请求消息添加到与所述用户终端的ID对应的第二消息队列。
4.根据权利要求2或3所述的装置,其特征在于,所述消息队列处理模块还用于:
判断所述用户终端的ID对应的每个消息队列在第一预设时间内是否有所述API业务请求消息;
若与所述用户终端的ID对应的每个消息队列在第一预设时间内没有所述API业务请求消息,则将在所述第一预设时间内没有所述API业务请求消息的消息队列添加到消息回收资源池。
5.根据权利要求1-4任一项所述的装置,其特征在于,所述消息队列处理模块还用于:
遍历每个消息队列以确定是否存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息;
若存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息,则丢弃未处理时间大于第二预设时间的API业务请求消息。
6.根据权利要求1-5任一项所述的装置,其特征在于,所述消息分发模块还用于:
遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息;
若存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,则拒绝接收占用率大于所述第二预设阈值的对应消息类型的API业务请求消息。
7.根据权利要求1-6任一项所述的装置,其特征在于,所述消息分发模块还用于:
判断是否存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端;
若存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端,则将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端添加到黑名单,并丢弃添加到所述黑名单的用户终端发送的API业务请求消息。
8.根据权利要求1-6任一项所述的装置,其特征在于,所述消息分发模块还用于:
判断是否存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端;
若存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端,则将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端添加到黑名单,并丢弃添加到所述黑名单的用户终端发送的API业务请求消息。
9.根据权利要求2-8任一项所述的装置,其特征在于,所述消息调度分发模块具体用于:
将所有用户终端的ID对应的消息队列进行轮循调度发送给对应的API业务处理模块处理,直至调度出的消息队列的数量等于所述业务量。
10.根据权利要求2-8任一项所述的装置,其特征在于,所述消息调度分发模块具体用于:
确定不同级别用户终端的优先级权重;
根据不同级别用户终端的优先级权重,确定不同级别用户终端的ID对应的消息队列的调度数量;
将数量为所述调度数量的不同级别用户终端的ID对应的消息队列发送给对应的API业务处理模块处理。
11.根据权利要求2-8任一项所述的装置,其特征在于,所述消息调度分发模块具体用于:
确定不同类别的消息队列的权重;
根据不同类别的消息队列的权重,确定不同类别的消息队列的调度数量;
将数量为所述调度数量的不同类别的消息队列发送给对应的API业务处理模块处理。
12.一种防DoS/DDoS攻击的方法,其特征在于,包括:
接收用户终端发送的应用程序编程接口API业务请求消息;
识别发送所述API业务请求消息的用户终端的标识ID和所述API业务请求消息的消息类型;
根据所述用户终端的ID和所述消息类型确定目标消息队列,并将所述API业务请求消息添加到所述目标消息队列;
根据API业务处理模块的负载状态,确定一个控制周期内允许通过的业务量;
根据所述业务量在所述目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理。
13.根据权利要求12所述的方法,其特征在于,所述根据所述用户终端的ID和所述消息类型确定目标消息队列,并将所述API业务请求消息添加到所述目标消息队列,包括:
根据所述消息类型判断所述API业务请求消息是否是API业务处理流程的首消息;
若所述API业务请求消息是API业务处理流程的首消息,则将所述API业务请求消息添加到与所述用户终端的ID对应的消息队列;
若所述API业务请求消息是API业务处理流程的中间消息,则将所述API业务请求消息添加到公共消息队列。
14.根据权利要求13所述的方法,其特征在于,所述将所述API业务请求消息添加到与所述用户终端的ID对应的消息队列之前,所述方法还包括:
确定所述API业务请求消息中API的实时响应要求;
所述将所述API业务请求消息添加到与所述用户终端的ID对应的消息队列,包括:
将API实时响应要求大于或等于第一预设阈值的所述API业务请求消息添加到与所述用户终端的ID对应的第一消息队列;
将API实时响应要求小于所述第一预设阈值的所述API业务请求消息添加到与所述用户终端的ID对应的第二消息队列。
15.根据权利要求13或14所述的方法,其特征在于,所述方法还包括:
判断与所述用户终端的ID对应的每个消息队列在第一预设时间内是否有所述API业务请求消息;
若与所述用户终端的ID对应的每个消息队列在第一预设时间内没有所述API业务请求消息,则将在所述第一预设时间内没有所述API业务请求消息的消息队列添加到消息回收资源池。
16.根据权利要求12-15任一项所述的方法,其特征在于,所述方法还包括:
遍历每个消息队列以确定是否存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息;
若存在API业务请求消息的未处理时间大于第二预设时间的API业务请求消息,则丢弃未处理时间大于第二预设时间的API业务请求消息。
17.根据权利要求12-16任一项所述的方法,其特征在于,所述方法还包括:
遍历每个消息队列以确定是否存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息;
若存在API业务请求消息的占用率大于第二预设阈值的API业务请求消息,则拒绝接收占用率大于所述第二预设阈值的对应消息类型的API业务请求消息。
18.根据权利要求12-17任一项所述的方法,其特征在于,所述方法还包括:
判断是否存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端;
若存在在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端,则将在第三预设时间内发送的所有API业务请求消息的数量大于第三预设阈值的用户终端添加到黑名单,并丢弃添加到所述黑名单的用户终端发送的API业务请求消息。
19.根据权利要求12-17任一项所述的方法,其特征在于,所述方法还包括:
判断是否存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端;
若存在在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端,则将在第四预设时间内发送的预设类型的API业务请求消息的数量大于第四预设阈值的用户终端添加到黑名单,并丢弃添加到所述黑名单的用户终端发送的API业务请求消息。
20.根据权利要求13-19任一项所述的方法,其特征在于,所述根据所述业务量在所述目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,包括:
将所有用户终端的ID对应的消息队列进行轮循调度发送给对应的API业务处理模块处理,直至调度出的消息队列的数量等于所述业务量。
21.根据权利要求13-19任一项所述的方法,其特征在于,所述根据所述业务量在所述目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,包括:
确定不同级别用户终端的优先级权重;
根据不同级别用户终端的优先级权重,确定不同级别用户终端的ID对应的消息队列的调度数量;
将数量为所述调度数量的不同级别用户终端的ID对应的消息队列发送给对应的API业务处理模块处理。
22.根据权利要求13-19任一项所述的方法,其特征在于,所述根据所述业务量在所述目标消息队列间进行API业务请求消息的调度,将所调度的API业务请求消息发送给对应的API业务处理模块处理,包括:
确定不同类别的消息队列的权重;
根据不同类别的消息队列的权重,确定不同类别的消息队列的调度数量;
将数量为所述调度数量的不同类别的消息队列发送给对应的API业务处理模块处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610527701.XA CN107592284B (zh) | 2016-07-06 | 2016-07-06 | 防DoS/DDoS攻击的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610527701.XA CN107592284B (zh) | 2016-07-06 | 2016-07-06 | 防DoS/DDoS攻击的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107592284A true CN107592284A (zh) | 2018-01-16 |
CN107592284B CN107592284B (zh) | 2020-06-02 |
Family
ID=61044899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610527701.XA Active CN107592284B (zh) | 2016-07-06 | 2016-07-06 | 防DoS/DDoS攻击的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107592284B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109005164A (zh) * | 2018-07-20 | 2018-12-14 | 深圳市网心科技有限公司 | 一种网络系统、设备、网络数据交互方法及存储介质 |
CN109450941A (zh) * | 2018-12-25 | 2019-03-08 | 安捷光通科技成都有限公司 | 一种抗DDoS的SDN控制器消息调度方法 |
CN109634754A (zh) * | 2018-11-14 | 2019-04-16 | 彩讯科技股份有限公司 | 一种业务投递方法、装置、设备及计算机存储介质 |
CN110120963A (zh) * | 2018-02-06 | 2019-08-13 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、设备和机器可读介质 |
CN110324184A (zh) * | 2019-06-26 | 2019-10-11 | 深圳前海微众银行股份有限公司 | 服务扩容与迁移方法、装置、系统、设备及可读存储介质 |
CN111008087A (zh) * | 2019-12-25 | 2020-04-14 | 上海众源网络有限公司 | 一种消息处理方法及装置 |
CN111355663A (zh) * | 2018-12-20 | 2020-06-30 | 中兴通讯股份有限公司 | 一种消息处理方法及系统 |
CN111614549A (zh) * | 2020-05-21 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 交互处理方法、装置、计算机设备及存储介质 |
CN114124507A (zh) * | 2021-11-16 | 2022-03-01 | 北京安天网络安全技术有限公司 | 一种数据请求频次统计方法、装置、电子设备及存储介质 |
CN115208672A (zh) * | 2022-07-15 | 2022-10-18 | 北京天融信网络安全技术有限公司 | 黑名单调整方法、装置、电子设备和计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102111383A (zh) * | 2009-12-28 | 2011-06-29 | 北京安码科技有限公司 | 一种利用优先级队列防止dos攻击的方法 |
US20140108665A1 (en) * | 2012-10-16 | 2014-04-17 | Citrix Systems, Inc. | Systems and methods for bridging between public and private clouds through multilevel api integration |
CN104092619A (zh) * | 2014-07-25 | 2014-10-08 | 华为技术有限公司 | 流量控制方法及装置 |
CN105306277A (zh) * | 2015-11-19 | 2016-02-03 | 中国建设银行股份有限公司 | 消息队列的消息调度方法及消息调度装置 |
-
2016
- 2016-07-06 CN CN201610527701.XA patent/CN107592284B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102111383A (zh) * | 2009-12-28 | 2011-06-29 | 北京安码科技有限公司 | 一种利用优先级队列防止dos攻击的方法 |
US20140108665A1 (en) * | 2012-10-16 | 2014-04-17 | Citrix Systems, Inc. | Systems and methods for bridging between public and private clouds through multilevel api integration |
CN104092619A (zh) * | 2014-07-25 | 2014-10-08 | 华为技术有限公司 | 流量控制方法及装置 |
CN105306277A (zh) * | 2015-11-19 | 2016-02-03 | 中国建设银行股份有限公司 | 消息队列的消息调度方法及消息调度装置 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110120963A (zh) * | 2018-02-06 | 2019-08-13 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置、设备和机器可读介质 |
CN110120963B (zh) * | 2018-02-06 | 2022-08-12 | 斑马智行网络(香港)有限公司 | 一种数据处理方法、装置、设备和机器可读介质 |
CN109005164B (zh) * | 2018-07-20 | 2021-05-18 | 深圳市网心科技有限公司 | 一种网络系统、设备、网络数据交互方法及存储介质 |
CN109005164A (zh) * | 2018-07-20 | 2018-12-14 | 深圳市网心科技有限公司 | 一种网络系统、设备、网络数据交互方法及存储介质 |
CN109634754A (zh) * | 2018-11-14 | 2019-04-16 | 彩讯科技股份有限公司 | 一种业务投递方法、装置、设备及计算机存储介质 |
CN111355663B (zh) * | 2018-12-20 | 2023-04-07 | 中兴通讯股份有限公司 | 一种消息处理方法及系统 |
CN111355663A (zh) * | 2018-12-20 | 2020-06-30 | 中兴通讯股份有限公司 | 一种消息处理方法及系统 |
CN109450941A (zh) * | 2018-12-25 | 2019-03-08 | 安捷光通科技成都有限公司 | 一种抗DDoS的SDN控制器消息调度方法 |
CN109450941B (zh) * | 2018-12-25 | 2021-07-23 | 安捷光通科技成都有限公司 | 一种抗DDoS的SDN控制器消息调度方法 |
CN110324184B (zh) * | 2019-06-26 | 2021-06-25 | 深圳前海微众银行股份有限公司 | 服务扩容与迁移方法、装置、系统、设备及可读存储介质 |
CN110324184A (zh) * | 2019-06-26 | 2019-10-11 | 深圳前海微众银行股份有限公司 | 服务扩容与迁移方法、装置、系统、设备及可读存储介质 |
CN111008087A (zh) * | 2019-12-25 | 2020-04-14 | 上海众源网络有限公司 | 一种消息处理方法及装置 |
CN111008087B (zh) * | 2019-12-25 | 2024-03-15 | 上海众源网络有限公司 | 一种消息处理方法及装置 |
CN111614549A (zh) * | 2020-05-21 | 2020-09-01 | 腾讯科技(深圳)有限公司 | 交互处理方法、装置、计算机设备及存储介质 |
CN114124507A (zh) * | 2021-11-16 | 2022-03-01 | 北京安天网络安全技术有限公司 | 一种数据请求频次统计方法、装置、电子设备及存储介质 |
CN114124507B (zh) * | 2021-11-16 | 2024-08-06 | 北京安天网络安全技术有限公司 | 一种数据请求频次统计方法、装置、电子设备及存储介质 |
CN115208672A (zh) * | 2022-07-15 | 2022-10-18 | 北京天融信网络安全技术有限公司 | 黑名单调整方法、装置、电子设备和计算机可读存储介质 |
CN115208672B (zh) * | 2022-07-15 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 黑名单调整方法、装置、电子设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107592284B (zh) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107592284A (zh) | 防DoS/DDoS攻击的装置和方法 | |
US20180109557A1 (en) | SOFTWARE DEFINED NETWORK CAPABLE OF DETECTING DDoS ATTACKS USING ARTIFICIAL INTELLIGENCE AND CONTROLLER INCLUDED IN THE SAME | |
US7489632B2 (en) | Simple admission control for IP based networks | |
US7280477B2 (en) | Token-based active queue management | |
CN103442076B (zh) | 一种云存储系统的可用性保障方法 | |
CN103999414B (zh) | 一种归因针对相应用户寄存器的共享资源的拥塞贡献的方法和装置 | |
CN103986715A (zh) | 一种网络流量控制的方法及装置 | |
US7447155B2 (en) | Guaranteed service in a data network | |
CN106375239A (zh) | 一种网络数据接收的处理方法及装置 | |
Dimitriou | A preemptive resume priority retrial queue with state dependent arrivals, unreliable server and negative customers | |
CN115037694A (zh) | 一种数据传输方法、装置、电子设备和存储介质 | |
CN112350954B (zh) | 过载保护方法、系统、计算机可读存储介质及电子设备 | |
CN111897659A (zh) | 业务处理频率的控制方法、系统、装置、电子设备 | |
Baklizi et al. | Performance Evaluation of the Proposed Enhanced Adaptive Gentle Random Early Detection Algorithm in Congestion Situations | |
Mahi et al. | A new unified communication approach to comply bandwidth optimization technique using dynamic channel allocation | |
Ma et al. | Congestion and its role in network equilibrium | |
EP2355422B1 (en) | A method and apparatus to provide minimum resource sharing without buffering requests | |
Hamadneh et al. | Weighted RED (WTRED) strategy for TCP congestion control | |
CN114024913A (zh) | 一种网络性能优化方法、装置、设备以及存储介质 | |
EP2327187B1 (en) | Overload control in a quality-of-service- aware telecommunications network | |
Key | Resource pricing for differentiated services | |
KR101506448B1 (ko) | M2m 트래픽 관리 방법 및 장치 | |
CN115580618B (zh) | 一种负载均衡方法、装置、设备及介质 | |
Miller et al. | Towards the analysis of TCP with the aid of stochastic control | |
US20200213243A1 (en) | Regulating scheduler |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |