CN112350954B - 过载保护方法、***、计算机可读存储介质及电子设备 - Google Patents
过载保护方法、***、计算机可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN112350954B CN112350954B CN201910727486.1A CN201910727486A CN112350954B CN 112350954 B CN112350954 B CN 112350954B CN 201910727486 A CN201910727486 A CN 201910727486A CN 112350954 B CN112350954 B CN 112350954B
- Authority
- CN
- China
- Prior art keywords
- data packet
- packet
- rate
- token bucket
- packet loss
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/215—Flow control; Congestion control using token-bucket
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种过载保护方法,所述过载保护方法包括确定网卡的第一丢包率,根据第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;确定第一目标数据包的输出速率;根据第一目标数据包的输出速率确定第二丢包率,根据第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使第二目标数据包的输出速率在预设范围内;其中,第一原数据包为第一时刻接收到的数据包,第二原数据包为第二时刻接收到的数据包,所述第一时刻早于第二时刻。本申请能够灵活调整丢包率,提高过载保护操作的有效性。本申请还公开了一种过载保护***、一种计算机可读存储介质及一种电子设备,具有以上有益效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种过载保护方法、***、一种计算机可读存储介质及一种电子设备。
背景技术
在负载均衡场景中,可能会出现在某个时间节点用户请求数突然变多的情况,上述情况会导致设备接收大量的TCP链接和HTTP请求。但是,由于每一台设备的处理性能是有极限的,当大量的TCP链接请求数据包和HTTP请求到达设备时,由于数据包的数量已经超出了设备的处理能力,此时网卡队列中会出现数据包的积压情况,并且由于是处理的速率达不到请求的速率,这个数据包积压的情况会逐渐恶化,最终会出现网卡队列满载,网卡会无差别的丢掉到来的数据包。网卡队列满载不仅会导致新用户的请求无法处理,并且已经连接的用户的业务也会受到无差别丢包的影响,上述这种现象被称为过载。
为了避免过载现象的发生,需要对过载现象采取预防措施,即:在将要出现过载现象之前,通过丢弃新用户请求以使设备处理资源来完成原有用户的操作。相关技术通过令牌桶算法实现过载防护,但是相关技术无法灵活调整丢包率,无法保证过载保护操作的有效性。
因此,如何灵活调整丢包率,提高过载保护操作的有效性是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种过载保护方法、***、一种计算机可读存储介质及一种电子设备,能够灵活调整丢包率,提高过载保护操作的有效性。
为解决上述技术问题,本申请提供一种过载保护方法,该过载保护方法包括:
确定网卡的第一丢包率,根据所述第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;
确定所述第一目标数据包的输出速率;
根据所述第一目标数据包的输出速率确定第二丢包率,根据所述第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使所述第二目标数据包的输出速率在预设范围内;
其中,所述第一原数据包为第一时刻接收到的数据包,所述第二原数据包为第二时刻接收到的数据包,所述第一时刻早于所述第二时刻。
可选的,还包括:
接收TCP数据包,并利用过滤器筛选所述TCP数据包中的SYN数据包;
根据所述SYN数据包的接收时间将所述SYN数据包设置为所述第一原数据包或所述第二原数据包。
可选的,确定所述第一目标数据包的输出速率包括:
根据第一令牌桶的令牌剩余数确定所述第一目标数据包的输出速率;其中,当输出N个所述第一目标数据包时,所述第一令牌桶消耗N个令牌。
可选的,确定所述第一目标数据包的输出速率包括:
当输出M个所述第一目标数据包时,分别消耗第二令牌桶和第三令牌桶中的M个令牌;其中,所述第三令牌桶的令牌生成速率VP大于所述第二令牌桶的令牌生成速率VC,所述第三令牌桶的令牌初始数量等于所述第二令牌桶的令牌初始数量;
根据所述第二令牌桶的令牌剩余数量A和所述第三令牌桶的令牌剩余数量B确定所述第一目标数据包的输出速率。
可选的,根据所述第二令牌桶的令牌剩余数量A和所述第三令牌桶的令牌剩余数量B确定所述第一目标数据包的输出速率包括:
当A<Y1且B<Y1时,判定令牌桶组处于第一状态,并将所述第一状态对应的速率V1作为所述第一目标数据包的输出速率;其中,所述令牌桶组包括所述第二令牌桶和所述第三令牌桶;
当A<Y1且Y1≤B≤Y2时,判定所述令牌桶组处于第二状态,并将所述第二状态对应的速率V2作为所述第一目标数据包的输出速率;
当A<Y1且B>Y2时,判定所述令牌桶组处于第三状态,并将所述第三状态对应的速率V3作为所述第一目标数据包的输出速率;
当Y1≤A≤Y2且Y1≤B≤Y2时,判定所述令牌桶组处于第四状态,并将所述第四状态对应的速率V4作为所述第一目标数据包的输出速率;
当Y1≤A<Y2且B>Y2时,判定所述令牌桶组处于第五状态,并将所述第五状态对应的速率V5作为所述第一目标数据包的输出速率;
当A>Y2且B>Y2时,判定所述令牌桶组处于第六状态,并将所述第六状态对应的速率V6作为所述第一目标数据包的输出速率;
其中,V1>V2>V3>V4>V5>V6,上限值Y2大于下限值Y1。
可选的,所述预设范围为大于VC且小于VP的速率区间。
可选的,还包括:
当所述第三令牌桶的剩余令牌数量与所述第二令牌桶的剩余令牌数量的差值大于预设差值时,生成稳态信号以便保持当前时刻的丢包率执行丢包操作。
本申请还提供了一种过载保护***,该过载保护***包括:
丢包模块,用于确定网卡的第一丢包率,根据所述第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;
速率确定模块,用于确定所述第一目标数据包的输出速率;
丢包率调节模块,用于根据所述第一目标数据包的输出速率确定第二丢包率,根据所述第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使所述第二目标数据包的输出速率在预设范围内;
其中,所述第一原数据包为第一时刻接收到的数据包,所述第二原数据包为第二时刻接收到的数据包,所述第一时刻早于所述第二时刻。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述过载保护方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述过载保护方法执行的步骤。
本申请提供了一种过载保护方法,包括确定网卡的第一丢包率,根据第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;确定第一目标数据包的输出速率;根据第一目标数据包的输出速率确定第二丢包率,根据第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使第二目标数据包的输出速率在预设范围内;其中,第一原数据包为第一时刻接收到的数据包,第二原数据包为第二时刻接收到的数据包,所述第一时刻早于第二时刻。
本申请按照第一丢包率对原数据包执行丢包操作,输出第一目标数据包。在保持第一丢包率执行丢包操作的前提下,若原数据包的数量增加,目标数据包的输出速率也会增加;若原数据包的数量减少,目标数据包的输出速率也会减少。当处于过载状态时,接收到的数据包的数量持续增加,若不改变第一丢包率将会导致业务处理出现雪崩。本申请根据第一目标数据包的输出速率确定第二丢包率,并按照第二丢包率对新接收到的第二原数据包执行丢包操作。本申请为过载保护过程增加负反馈机制,能够灵活调整丢包率,提高过载保护操作的有效性。本申请同时还提供了一种过载保护***、一种计算机可读存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种过载保护方法的流程图;
图2为本申请实施例所提供的一种输出速率的确定方法的流程图;
图3为本申请实施例所提供的一种基于双令牌桶的过载保护原理示意图;
图4为实际应用中200%CPS压力下的流量曲线图;
图5为本申请实施例所提供的一种过载保护***的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
过载(overload)指当前业务的负载已经超出了设备处理性能极限的状态,过载将会导致部分业务故障甚至导致整个的业务处理出现雪崩。当出现故障状况时,可以通过执行丢包操作维持已经连接的用户的业务。相关技术中,通过令牌桶算法实现过载防护,但是相关技术只能对数据包进行着色处理,无法灵活调整丢包率,无法保证过载保护操作的有效性。本申请通过以下几种实施例通过新的过载防护方法,能够灵活调整丢包率,提高过载保护操作的有效性。
下面请参见图1,图1为本申请实施例所提供的一种过载保护方法的流程图。
具体步骤可以包括:
S101:确定网卡的第一丢包率,根据所述第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;
其中,本实施例可以应用于基于网卡接收请求数据包的电子设备中,例如可以包括:云端服务器、***开具服务端、防火墙、交换机等数据包接收端。由于客户端发送的请求数据包的数量和时间具有不确定性,而数据包接收端的处理性能有限,因此当发生大量数据包在同一时间段内发送的情况,将会导致数据包接收端出现过载状况。
客户端发送的请求数据包可以包括TCP连接请求数据包和HTTP(Hyper TextTransfer Protocol,超文本传输协议)请求数据包,在此不对请求数据包的种类进行限定。其中,TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。本实施例中提到的第一原数据包可以包括客户端发送的请求数据包,接收到的第一原数据包可以暂时存放于网卡队列中。
本实施例采取按照一定丢包率执行丢包操作的方式实现过载保护。在本步骤之前可以存在检测到当前业务负载处于过载状态时,生成过载保护指令的操作,以便根据过载保护指令确定丢包率并按照丢包率执行丢包操作。可以理解的是,在执行丢包操作的过程中丢包率可以实时变化,本实施例中的丢包操作可以持续执行;若丢包率改变,丢包操作也会根据丢包率的改变而改变。丢包操作可以按照一定的比率丢弃一部分原数据包,未被丢弃的原数据包为目标数据包,目标数据包可以执行后续的业务处理操作。
在本步骤之前可以存在接收丢包启动指令的操作,在接收到丢包启动指令后可以确定第一丢包率,并按照第一丢包率对第一原数据包执行丢包操作。第一原数据包可以为第一时刻接收到的数据包,当网卡接收到的第一原数据包数量过多时将会导致出现过载状况,因此需要对接收到的第一原数据包按照特定丢包率执行丢包操作。对第一原数据包按照第一丢包率执行丢包操作后,可以输出第一目标数据包以便执行相关的业务处理,其中,第一目标数据包为丢包操作后保留下来的第一原数据包。
S102:确定第一目标数据包的输出速率;
其中,在第一丢包率的不改变的前提下,影响第一目标数据包的输出速率的是第一原数据包的数量。即:第一数据包的数量与第一目标数据包的输出速率正相关。可以理解的是,第一原数据包为网卡在第一时刻接收到的数据包,网卡接收到的数据包数量可以随时变化,因此若保持第一丢包率执行丢包操作,在第一时刻后丢包操作后的数据包输出速率可以发生变化。为了避免出现过载现象导致的雪崩,本实施例可以执行S103的相关操作,以便调节丢包操作的丢包率。
S103:根据所述第一目标数据包的输出速率确定第二丢包率,根据所述第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使所述第二目标数据包的输出速率在预设范围内;
其中,若第一目标数据包的输出速率较大时,说明得到的目标数据包的数量较多,若此时不及时调整丢包率,将会导致网卡队列中的目标数据包满载,网卡会无差别丢掉数据包。因此为了避免出现业务过载状况,本实施例通过重新确定丢包率,调整丢包操作。若第一目标数据包的输出速率减小时,说明第一目标数据包的数量减少,若此时不及时调整丢包率,将会导致过多的数据包被丢弃,影响业务处理效果。因此本实施例根据第一目标数据包的输出速率确定第二丢包率,以使丢包操作输出的数据包的输出速率在预设范围内。通过上述过载保护方法能够使数据包接收端维持的连接速率处于一定范围内。
本实施例按照第一丢包率对原数据包执行丢包操作,输出第一目标数据包。在保持第一丢包率执行丢包操作的前提下,若原数据包的数量增加,目标数据包的输出速率也会增加;若原数据包的数量减少,目标数据包的输出速率也会减少。当处于过载状态时,接收到的数据包的数量持续增加,若不改变第一丢包率将会导致业务处理出现雪崩。本实施例根据第一目标数据包的输出速率确定第二丢包率,并按照第二丢包率对新接收到的第二原数据包执行丢包操作。本实施例为过载保护过程增加负反馈机制,能够灵活调整丢包率,提高过载保护操作的有效性。本实施例中第一原数据包为第一时刻接收到的数据包,第二原数据包为第二时刻接收到的数据包,所述第一时刻早于所述第二时刻,第一时刻与第二时刻的时间差小于预设时长。由于数据包接受数量在时间维度上具有一定的连续性,因此第一时刻的第一目标数据包的输出速率可以作为确定对于第二原数据包执行丢包操作的参考值。例如,在第5秒接收到100个数据包,按照第一丢包率执行丢包操作输出的第一目标数据包的速率较高;在第6秒接收到102个数据包,若继续按照第一丢包率执行丢包操作将会导致网卡队列中的数据包持续增多,因此本实施例根据第一目标数据包的输出速率重新确定丢包率,减少进入网卡队列的数据包数量。
客户端可以向数据包接收端发送TCP数据包,由于建立连接的数据包通常为SYN数据包,因此数据包接收端在接收到TCP数据包之后可以利用过滤器执行相关的过滤操作得到SYN数据包,具体在S101确定第一丢包率之前,还包括以下操作:根据所述SYN数据包的接收时间将所述SYN数据包设置为所述第一原数据包或所述第二原数据包;其中,所述第一原数据包为第一时刻接收到的数据包,所述第二原数据包为第二时刻接收到的数据包,所述第一时刻早于所述第二时刻。
其中,TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。SYN(Synchronize Sequence Numbers)指同步序列编号,在TCP建立链接时,请求链接的一方会发起带有SYN标记的数据包,SYN数据包即带有SYN标记的数据包。
作为一种可行的实施方式,本实施例可以基于令牌桶确定第一目标数据包的输出速率,具体过程可以包括:根据第一令牌桶的令牌剩余数确定第一目标数据包的输出速率;其中,当输出N个目标数据包数时,第一令牌桶消耗N个令牌。具体的,本实施例可以根据第一令牌桶的令牌消耗数量F、第一令牌桶的令牌补充速率以及第一令牌桶消耗F个令牌所用的时长确定第一令牌桶的令牌剩余数。
上述确定第一目标数据包的输出速率的方式为图1对应的实施例中S102的进一步介绍,可以将上述可行的实施方式与图1对应的实施例相结合得到更为优选的实施方式。
上述实施方式根据第一令牌桶的令牌剩余数确定第一目标数据包的输出速率。第一令牌桶中可以包括若干个令牌,每输出一个目标数据包时第一令牌桶会消耗一个令牌。本实施例中还可以为第一令牌桶设置对应的令牌生成器,令牌生成器可以按照固定的速率生成令牌以补充第一令牌桶中的令牌。当第一目标数据包的生成速率大于令牌生成器的生成速率时,第一令牌桶中的令牌数量会减少,当第一目标数据包的生成速率小于令牌生成速率时,第一令牌桶中的令牌数量会增加或保持饱和状态。当目标数据包的生成速率等于令牌生成速率时,第一令牌桶中的令牌数量会保持不变。因此,本实施例根据第一令牌桶中的令牌剩余数可以确定第一目标数据包的第一目标数据包的输出速率与令牌生成速率之间的关系。
进一步的,为了更准确的确定第一目标数据包的输出速率,本实施例可以根据一段时间内第一令牌桶的令牌剩余数的变化情况计算第一目标数据包的输出速率的值。举例说明上述操作,例如第一令牌桶的令牌生成速率为A,在预设时长T内令牌剩余数由B1变为B2,其中B1和B2不同时为0。若B1等于B2,且B1和B2为令牌数量最大值时,说明第一目标数据包的输出速率Vj小于或等于A;若B1等于B2,且B1和B2不为令牌数量最大值时,说明第一目标数据包的输出速率Vj等于A;若B1不等于B2时,第一目标数据包的输出速率Vj=A+(B1-B2)/T。
下面请参见图2,图2为本申请实施例所提供的一种输出速率的确定方法的流程图;本实施例是对图1对应的实施例中S102的进一步介绍,可以将本实施例与图1对应的实施例相结合得到更为优选的实施方式,本实施例具体可以包括以下步骤:
S201:当输出M个第一目标数据时,分别消耗第二令牌桶和第三令牌桶中M个令牌;
其中,本实施例基于双桶环节确定第一目标数据包的输出速率,本实施例中每输出一个第一目标数据,第二令牌桶和第三令牌桶都会分别消耗一个令牌。本实施例可以为第二令牌桶和第三令牌桶各设置对应的令牌生成器,第三令牌桶的令牌生成速率VP大于第二令牌桶的令牌生成速率VC,第三令牌桶的令牌初始数量等于第二令牌桶的令牌初始数量。
S202:根据第二令牌桶的令牌剩余数量A和第三令牌桶的令牌剩余数量B确定第一目标数据包的输出速率。
可以理解的是,若第一目标数据包的输出速率Vk小于或等于VC时,第二令牌桶的令牌剩余数量A和第三令牌桶的令牌剩余数量B都不会减少;若第一目标数据包的输出速率Vk大于VC、小于或等于VP时,第二令牌桶的令牌剩余数量A会减少,而第三令牌桶的令牌剩余数量B会增加或保持不变;当第一目标数据包的输出速率大于VP时,第二令牌桶的令牌剩余数量A和第三令牌桶的令牌剩余数量B都会减少。其中上述提到的第二令牌桶的令牌剩余数量A和第三令牌桶的令牌剩余数量B均为大于0的数。
进一步的,为了更准确的确定第一目标数据包的输出速率,本实施例可以根据一段时间内第二令牌桶和第三令牌桶的令牌剩余数的变化情况计算第一目标数据包的输出速率的值,具体可参见上文提到的根据第一令牌桶的令牌剩余数的变化情况计算第一目标数据包的输出速率的值的实现方法。
此外,本申请还可以根据第二令牌桶的令牌剩余数量和第三令牌桶的令牌剩余数量确定数据包接收状态,并将数据包接收状态对应的速率作为第一目标数据包的输出速率,具体步骤如下:
当A<Y1且B<Y1时,判定令牌桶组处于第一状态,并将所述第一状态对应的速率V1作为所述第一目标数据包的输出速率;其中,所述令牌桶组包括所述第二令牌桶和所述第三令牌桶;
当A<Y1且Y1≤B≤Y2时,判定所述令牌桶组处于第二状态,并将所述第二状态对应的速率V2作为所述第一目标数据包的输出速率;
当A<Y1且B>Y2时,判定所述令牌桶组处于第三状态,并将所述第三状态对应的速率V3作为所述第一目标数据包的输出速率;
当Y1≤A≤Y2且Y1≤B≤Y2时,判定所述令牌桶组处于第四状态,并将所述第四状态对应的速率V4作为所述第一目标数据包的输出速率;
当Y1≤A<Y2且B>Y2时,判定所述令牌桶组处于第五状态,并将所述第五状态对应的速率V5作为所述第一目标数据包的输出速率;
当A>Y2且B>Y2时,判定所述令牌桶组处于第六状态,并将所述第六状态对应的速率V6作为所述第一目标数据包的输出速率;
其中,V1>V2>V3>V4>V5>V6,上限值Y2大于下限值Y1。可以理解的是,第二令牌桶的令牌剩余数量和第三令牌桶的令牌剩余数量对应不同的令牌桶组状态。在根据第一目标数据包的输出速率确定第二丢包率时,第一目标数据包的输出速率的值与第二丢包率的值正相关。
作为一种可行的实施方式,当将本实施例与图1对应的实施例相结合后,能够将第二目标数据的输出速率控制在预设范围内,该预设范围为大于VC且小于VP的速率区间。
作为一种可行的实施方式,当将本实施例与图1对应的实施例相结合后,本实施例还可以在第三令牌桶的剩余令牌数量与第二令牌桶的剩余令牌数量的差值大于预设差值时,生成稳态信号以便保持当前时刻的丢包率执行丢包操作。
下面通过在实际应用中的实施例说明上述实施例描述的流程。请参见图3,图3为本申请实施例所提供的一种基于双令牌桶的过载保护原理示意图。本实施例可以应用于采用DPDK(Data Plane Development Kit)的数据包接收端,Vin为DPDK从网卡上接收的TCP数据包速率,即外界发起TCP链接的速率;Vb为经过过滤器后的TCP数据包速率;Vout为最终从过载保护***输出的TCP数据包速率。Vout相当于上述实施例中的第一目标数据包的输出速率,本实施例可以分为以下三个部分:
过滤器:过滤器的作用是根据DPDK收上来的是所有包进行遍历,筛选出其中的所有SYN数据包,并根据丢包率来对SYN数据包进行丢包操作。
双桶环节:如图3所示,图中有两个用于控制速率的桶,分别是C桶和P桶,每个桶中都塞满了N个令牌(Token),并且会有令牌生成器进行对桶中的令牌进行补充,两桶的令牌容量相同,但是令牌生成器对两个桶生成令牌的速率不同,C桶的令牌生成速率是Vc,P桶的令牌生成速率是Vp,每当一个SYN数据包经过双桶环节,C桶和P桶都会自动消耗一个令牌。
反馈环:反馈环会对双桶中剩余的令牌数进行检查,并且根据双桶中剩余的令牌数量来进行策略判断,即:根据剩余的令牌数量确定新的丢包率。
本实施例的过载防护流程如下:
DPDK收上来的数据包首先会到达过滤器,过滤器去遍历这批数据包,筛选出其中的SYN数据包,并根据丢包率对SYN数据包主动进行概率性丢包。剩余的SYN数据包经过第二个环节,也就是双桶环节,每有一个SYN数据包经过,C桶和P桶就会消耗一个令牌,如果令牌不足,那么判断令牌桶处于红色状态,如果令牌数尚有剩余,那么令牌桶处于黄色状态,如果令牌数非常充分,那么令牌桶处于绿色状态。最后经过反馈环,反馈环会根据C桶和P桶的着色状态来反馈到过滤器上,目的是调节丢包率,因为令牌桶的着色可以一定程度上反应当前***丢包率的正确与否。
作为一种可行的实施方式,C桶和P桶的着色策略可以为:当令牌桶中的剩余令牌数为0时可以将令牌桶着色为红色,当令牌桶中的剩余令牌数大于0、小于或等于最大令牌数的60%时可以将令牌桶着色为黄色,当剩余令牌数大于最大令牌数的60%时可以将令牌桶着色为绿色。通过上述方式,可以根据C桶和P桶的着色确定Vout的大小,进而调整丢包率。
本实施例通过对令牌桶着色来表示令牌桶的状态,本实施例可以将C桶的令牌生成速率设置为一个较小的值,这个值可以小于***能承受的最大链接数CPSmax(Connection Per Second),而P桶的令牌生成速率即为CPSmax,即P桶的令牌生成速率同等于当前***在当前流量模型下能够承受的最大每秒链接数。那么当过载流量来临时,其Vin会高于CPSmax(即Vp),并且远高于Vc,这样P桶和C桶的令牌都会出现生成速度比不上消耗速度,最后令牌数都会趋近于0,即被消耗殆尽,当出现消耗殆尽的情况下,本实施例可以将C桶和P桶着色为红色,反馈环收到红色的着色信号后,会反馈到过滤器上以便增大丢包率。
其中,由于Vin的大小取决于用户发起了多少的TCP链接,因此上述提到的Vin是不可变因素,当丢包率增大后,SYN数据包的丢包数量也会进一步增加,由于一部分SYN数据包被丢弃,会使得Vb变小,Vb变小后消耗的令牌数也会逐渐变少,令牌又进入了累积的过程;而当丢包率增加的过大时,会出现Vb小于Vp,甚至是Vb小于Vc,这样令牌桶的生成速率远大于消耗速率,最后令牌桶中的令牌数量会逐渐满载,此时会着色为绿色状态,反馈***受到绿色信号后会调小丢包率。上述流程不断的重复,会反复的调节丢包率,最后会将丢包率会趋于稳定,稳定在一个最佳值附近,使得C桶中的令牌趋近于0,而P桶的令牌趋近于满载,这样就可以使设备维持的连接速率在一个最佳的区间内,也就是大于Vc,小于Vp,不会进入过载状态。
请参见图4,图4为实际应用中200%CPS压力下的流量曲线图,在本测试中以最大性能上限CPSmax的2倍新建压力下进行测试,此时由于实际业务负载已经超过设备的处理极限,进入了过载状态。图4中第一类线为启动过载保护之前的数据包接收状态,图4中第二类线为启动过载保护之后的数据包接收状态。由此可见启动了本申请实施例所描述的过载保护档案后,不会出现过载现象,并且可以维持原有最大连接的80%以上,即在2倍的流量压力下,依然可以完成80%CPSmax,同样RPS也可以维持在原有最大RPS的80%以上。其中CPS(Connection Per Second)为衡量性能的指标,通常指每秒可以承受多少条TCP链接。当然还可以测试RPS max下的业务压力,RPS(Vector Packet Processing)为衡量性能的指标,通常指每秒可以承受多少的HTTP请求。
请参见图5,图5为本申请实施例所提供的一种过载保护***的结构示意图;
该***可以包括:
丢包模块100,用于确定网卡的第一丢包率,根据所述第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;
速率确定模块200,用于确定所述第一目标数据包的输出速率;
丢包率调节模块300,用于根据所述第一目标数据包的输出速率确定第二丢包率,根据所述第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使所述第二目标数据包的输出速率在预设范围内;
其中,所述第一原数据包为第一时刻接收到的数据包,所述第二原数据包为第二时刻接收到的数据包,所述第一时刻早于所述第二时刻。
本实施例按照第一丢包率对原数据包执行丢包操作,输出第一目标数据包。在保持第一丢包率执行丢包操作的前提下,若原数据包的数量增加,目标数据包的输出速率也会增加;若原数据包的数量减少,目标数据包的输出速率也会减少。当处于过载状态时,接收到的数据包的数量持续增加,若不改变第一丢包率将会导致业务处理出现雪崩。本实施例根据第一目标数据包的输出速率确定第二丢包率,并按照第二丢包率对新接收到的第二原数据包执行丢包操作。本实施例为过载保护过程增加负反馈机制,能够灵活调整丢包率,提高过载保护操作的有效性。
进一步的,还包括:
筛选模块,用于接收TCP数据包,并利用过滤器筛选TCP数据包中的SYN数据包;
设置模块,用于
根据所述SYN数据包的接收时间将所述SYN数据包设置为所述第一原数据包或所述第二原数据包;
进一步的,速率确定模块200具体为用于根据第一令牌桶的令牌剩余数确定所述第一目标数据包的输出速率的模块;其中,当输出N个所述第一目标数据包时,所述第一令牌桶消耗N个令牌。。
进一步的,速率确定模块200包括:
令牌消耗单元,用于当输出M个所述第一目标数据包时,分别消耗第二令牌桶和第三令牌桶中的M个令牌;其中,所述第三令牌桶的令牌生成速率VP大于所述第二令牌桶的令牌生成速率VC,所述第三令牌桶的令牌初始数量等于所述第二令牌桶的令牌初始数量;
输出速率计算单元,用于根据所述第二令牌桶的令牌剩余数量A和所述第三令牌桶的令牌剩余数量B确定所述第一目标数据包的输出速率。
进一步的,输出速率计算单元包括:
第一设置子单元,用于当A<Y1且B<Y1时,判定令牌桶组处于第一状态,并将所述第一状态对应的速率V1作为所述第一目标数据包的输出速率;其中,所述令牌桶组包括所述第二令牌桶和所述第三令牌桶;
第二设置子单元,用于当A<Y1且Y1≤B≤Y2时,判定所述令牌桶组处于第二状态,并将所述第二状态对应的速率V2作为所述第一目标数据包的输出速率;
第三设置子单元,用于当A<Y1且B>Y2时,判定所述令牌桶组处于第三状态,并将所述第三状态对应的速率V3作为所述第一目标数据包的输出速率;
第四设置子单元,用于当Y1≤A≤Y2且Y1≤B≤Y2时,判定所述令牌桶组处于第四状态,并将所述第四状态对应的速率V4作为所述第一目标数据包的输出速率;
第五设置子单元,用于当Y1≤A<Y2且B>Y2时,判定所述令牌桶组处于第五状态,并将所述第五状态对应的速率V5作为所述第一目标数据包的输出速率;
第六设置子单元,用于当A>Y2且B>Y2时,判定所述令牌桶组处于第六状态,并将所述第六状态对应的速率V6作为所述第一目标数据包的输出速率;
其中,V1>V2>V3>V4>V5>V6,上限值Y2大于下限值Y1。
进一步的,预设范围为大于VC且小于VP的速率区间。
进一步的,还包括:
稳态控制单元,用于当第三令牌桶的剩余令牌数量与第二令牌桶的剩余令牌数量的差值大于预设差值时,生成稳态信号以便保持当前时刻的丢包率执行丢包操作。
由于***部分的实施例与方法部分的实施例相互对应,因此***部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的***而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种过载保护方法,其特征在于,应用于基于网卡接收请求数据包的电子设备,包括:
确定网卡的第一丢包率,根据所述第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;
确定所述第一目标数据包的输出速率;
根据所述第一目标数据包的输出速率确定第二丢包率,根据所述第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使所述第二目标数据包的输出速率在预设范围内,以避免所述网卡出现业务过载状况;
其中,所述第一原数据包为第一时刻接收到的数据包,所述第二原数据包为第二时刻接收到的数据包,所述第一时刻早于所述第二时刻,所述第一原数据和所述第二原数据为客户端向所述网卡发送的请求数据包。
2.根据权利要求1所述过载保护方法,其特征在于,在确定网卡的第一丢包率之前,还包括:
接收TCP数据包,并利用过滤器筛选所述TCP数据包中的SYN数据包;
根据所述SYN数据包的接收时间将所述SYN数据包设置为所述第一原数据包或所述第二原数据包。
3.根据权利要求1所述过载保护方法,其特征在于,确定所述第一目标数据包的输出速率包括:
根据第一令牌桶的令牌剩余数确定所述第一目标数据包的输出速率;其中,当输出N个所述第一目标数据包时,所述第一令牌桶消耗N个令牌。
4.根据权利要求1或2任所述过载保护方法,其特征在于,确定所述第一目标数据包的输出速率包括:
当输出M个所述第一目标数据包时,分别消耗第二令牌桶和第三令牌桶中的M个令牌;其中,所述第三令牌桶的令牌生成速率VP大于所述第二令牌桶的令牌生成速率VC,所述第三令牌桶的令牌初始数量等于所述第二令牌桶的令牌初始数量;
根据所述第二令牌桶的令牌剩余数量A和所述第三令牌桶的令牌剩余数量B确定所述第一目标数据包的输出速率。
5.根据权利要求4所述过载保护方法,其特征在于,根据所述第二令牌桶的令牌剩余数量A和所述第三令牌桶的令牌剩余数量B确定所述第一目标数据包的输出速率包括:
当A<Y1且B<Y1时,判定令牌桶组处于第一状态,并将所述第一状态对应的速率V1作为所述第一目标数据包的输出速率;其中,所述令牌桶组包括所述第二令牌桶和所述第三令牌桶;
当A<Y1且Y1≤B≤Y2时,判定所述令牌桶组处于第二状态,并将所述第二状态对应的速率V2作为所述第一目标数据包的输出速率;
当A<Y1且B>Y2时,判定所述令牌桶组处于第三状态,并将所述第三状态对应的速率V3作为所述第一目标数据包的输出速率;
当Y1≤A≤Y2且Y1≤B≤Y2时,判定所述令牌桶组处于第四状态,并将所述第四状态对应的速率V4作为所述第一目标数据包的输出速率;
当Y1≤A<Y2且B>Y2时,判定所述令牌桶组处于第五状态,并将所述第五状态对应的速率V5作为所述第一目标数据包的输出速率;
当A>Y2且B>Y2时,判定所述令牌桶组处于第六状态,并将所述第六状态对应的速率V6作为所述第一目标数据包的输出速率;
其中,V1>V2>V3>V4>V5>V6,上限值Y2大于下限值Y1。
6.根据权利要求4所述过载保护方法,其特征在于,所述预设范围为大于VC且小于VP的速率区间。
7.根据权利要求4所述过载保护方法,其特征在于,还包括:
当所述第三令牌桶的剩余令牌数量与所述第二令牌桶的剩余令牌数量的差值大于预设差值时,生成稳态信号以便保持当前时刻的丢包率执行丢包操作。
8.一种过载保护***,其特征在于,应用于基于网卡接收请求数据包的电子设备,包括:
丢包模块,用于确定网卡的第一丢包率,根据所述第一丢包率对第一原数据包执行丢包操作并输出第一目标数据包;
速率确定模块,用于确定所述第一目标数据包的输出速率;
丢包率调节模块,用于根据所述第一目标数据包的输出速率确定第二丢包率,根据所述第二丢包率对第二原数据包执行丢包操作并输出第二目标数据包,以使所述第二目标数据包的输出速率在预设范围内,以避免所述网卡出现业务过载状况;
其中,所述第一原数据包为第一时刻接收到的数据包,所述第二原数据包为第二时刻接收到的数据包,所述第一时刻早于所述第二时刻,所述第一原数据和所述第二原数据为客户端向所述网卡发送的请求数据包。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述过载保护方法的步骤。
10.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述过载保护方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727486.1A CN112350954B (zh) | 2019-08-07 | 2019-08-07 | 过载保护方法、***、计算机可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727486.1A CN112350954B (zh) | 2019-08-07 | 2019-08-07 | 过载保护方法、***、计算机可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112350954A CN112350954A (zh) | 2021-02-09 |
CN112350954B true CN112350954B (zh) | 2022-11-22 |
Family
ID=74367360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910727486.1A Active CN112350954B (zh) | 2019-08-07 | 2019-08-07 | 过载保护方法、***、计算机可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112350954B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113722097B (zh) * | 2021-08-27 | 2024-04-19 | 北京天融信网络安全技术有限公司 | 一种浪涌保护方法、装置、电子设备及存储介质 |
CN114726930A (zh) * | 2022-03-30 | 2022-07-08 | 深信服科技股份有限公司 | 一种数据包跟踪方法、***、装置及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1925610A (zh) * | 2005-09-01 | 2007-03-07 | 乐金电子(惠州)有限公司 | 根据丢包率的帧速率调节方法 |
CN101873261A (zh) * | 2010-06-07 | 2010-10-27 | 北京网康科技有限公司 | 一种提高令牌桶流控效果的方法及设备 |
CN103944834A (zh) * | 2013-01-22 | 2014-07-23 | 北京随锐科技有限公司 | 一种音视频转发控制方法及*** |
CN109688064A (zh) * | 2018-12-19 | 2019-04-26 | 北京达佳互联信息技术有限公司 | 数据传输方法、装置、电子设备和存储介质 |
CN109819322A (zh) * | 2019-03-15 | 2019-05-28 | 网易(杭州)网络有限公司 | 视频传输方法、装置、计算机可读存储介质及电子设备 |
-
2019
- 2019-08-07 CN CN201910727486.1A patent/CN112350954B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1925610A (zh) * | 2005-09-01 | 2007-03-07 | 乐金电子(惠州)有限公司 | 根据丢包率的帧速率调节方法 |
CN101873261A (zh) * | 2010-06-07 | 2010-10-27 | 北京网康科技有限公司 | 一种提高令牌桶流控效果的方法及设备 |
CN103944834A (zh) * | 2013-01-22 | 2014-07-23 | 北京随锐科技有限公司 | 一种音视频转发控制方法及*** |
CN109688064A (zh) * | 2018-12-19 | 2019-04-26 | 北京达佳互联信息技术有限公司 | 数据传输方法、装置、电子设备和存储介质 |
CN109819322A (zh) * | 2019-03-15 | 2019-05-28 | 网易(杭州)网络有限公司 | 视频传输方法、装置、计算机可读存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112350954A (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9065795B2 (en) | Apparatus and method for providing a congestion measurement in a network | |
US7280477B2 (en) | Token-based active queue management | |
US6353616B1 (en) | Adaptive processor schedulor and method for reservation protocol message processing | |
US7330430B2 (en) | Packet-based traffic shaping | |
WO2003015355A2 (en) | Method for supporting non-linear, highly scalable increase-decrease congestion control scheme | |
CN112350954B (zh) | 过载保护方法、***、计算机可读存储介质及电子设备 | |
JP2002223243A (ja) | 伝送レート監視装置および伝送レート監視方法 | |
WO2020077696A1 (zh) | 一种域名带宽调节方法及相关设备 | |
WO2014031104A1 (en) | Congestion notification in a network | |
Kesselman et al. | Game-theoretic analysis of internet switching with selfish users | |
EP3560152B1 (en) | Determining the bandwidth of a communication link | |
CN115460156A (zh) | 一种数据中心无损网络拥塞控制方法、装置、设备及介质 | |
Qazi et al. | Congestion control with multipacket feedback | |
CN107920028B (zh) | 一种数据包发送方法、装置及设备 | |
Sun et al. | IAPI: An intelligent adaptive PI active queue management scheme | |
US20180167431A1 (en) | Client-side ack regulation based adaptive streaming method and apparatus | |
WO2020134753A1 (zh) | 请求消息处理方法、装置及***、服务器、存储介质 | |
CN114024913B (zh) | 一种网络性能优化方法、装置、设备以及存储介质 | |
WO2016173133A1 (zh) | 一种实现负荷分担的方法、接口机、业务处理机及*** | |
CN116319569A (zh) | 网络参数更新方法、网络参数更新装置、介质及电子设备 | |
KR20020063578A (ko) | 컴퓨터 네트워크에서의 패킷 전송 제어 방법 및 시스템 | |
CN112350880B (zh) | 过载检测方法、***、计算机可读存储介质及电子设备 | |
EP2388978A1 (en) | Methods and devices for determining network link load | |
KR100504005B1 (ko) | 컴퓨터 네트워크의 하위 파이프에서 흐름을 제어하기 위한 방법, 기록 매체 및 시스템 | |
CN109417494A (zh) | 在离线计费***中的动态分配 |
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 |