一种报文传输方法、系统及存储介质与流程

文档序号:31753705发布日期:2022-10-11 23:23阅读:44来源:国知局
一种报文传输方法、系统及存储介质与流程

1.本发明涉及通信传输技术领域,尤其涉及一种报文传输方法、系统及存储介质。


背景技术:

2.报文(packet)是网络中交换与传输的数据单元,随着网络技术的快速发展,报文的发送量与日俱增,目前,市场上的交换机和路由器无法靶向针对带有攻击性质的合法报文进行判断,无法做到智能识别效果,大多数交换机和路由器对于报文冲击cpu保护的功能有限,行业类主要做法是对cpu接口限速、基于入端口上cpu报文全局限速、基于cpu端口cos队列限速、基于以太网报文类型限速,并未判断报文是否带有攻击性,当交换机或路由器收到一种或多种速率较大,报文内容固定,且会上cpu的报文,如果此报文内容合法,市面上大多数交换机或路由器不会对此冲击cpu的报文判断为攻击性而丢弃。而当大量带有攻击性质的报文冲击交换机或路由器cpu,必定会占用设备cpu资源,占用cpu接口带宽,这样会导致正常上cpu的协议报文不能正常处理,或延时较大,同时也会引起系统内部进程通信异常。可见,现有方式在传输报文时,不能及时发现报文的攻击性,导致报文传输延时较大,影响系统内部进程。


技术实现要素:

3.本发明提供了一种报文传输方法、系统及存储介质,以解决现有方式在传输报文时,不能及时发现报文的攻击性,导致报文传输延时较大,影响系统内部进程的问题。
4.为了实现上述目的,本发明通过如下的技术方案来实现:
5.第一方面,本发明提供一种报文传输方法,包括:
6.基于预设运算算法生成与接收的报文唯一对应的第一key码;
7.从预存储的数据库中查找与所述key码对应的令牌桶,在查找到与所述第一key码对应的第一令牌桶的情况下,将第一令牌桶的桶内的令牌数量加1;每一令牌桶对应一个key码;
8.判断令牌数量是否大于预设令牌阈值,若令牌数量大于或者等于所述预设令牌阈值,则将第一令牌桶对应的动作修改为丢弃,并丢弃接收的所述报文;若令牌数量小于所述预设令牌阈值,则将第一令牌桶对应的动作修改为转发,并继续转发接收的所述报文。
9.可选地,所述基于预设运算算法生成与接收的报文唯一对应的第一key码,包括:
10.定义一个数据类型为32位的无符号整形数组key,数组元素大小为16,总共数组大小为64字节;
11.根据所述报文的报文长度确定预设运算算法,基于预设运算算法、报文以及所述整形数组key生成所述第一key码。
12.可选地,所述根据所述报文的报文长度确定预设运算算法,包括:
13.在报文长度小于16字节时,预设运算算法满足如下关系式:
14.push16=(((x1)&(y1))|((~w1)&(z1)));
15.其中,x1为报文内容0-3字节和key数组元素0进行与运算的结果,y1为报文内容4-7字节和key数组元素1进行与运算的结果,w1为报文内容8-11字节和key数组元素2进行与运算的结果,z1为报文内容12-15字节和key数组元素3进行与运算的结果,~表示取反运算,&表示与运算,|表示或运算;
16.在报文长度大于16小于32字节时,预设运算算法满足如下关系式:
17.push32=(((x2)&(z2))|((y2)&(~w2)));
18.其中,x2为报文内容16-19字节和key数组元素4进行与运算的结果,z2为报文内容20-23字节和key数组元素5进行与运算的结果,y2为报文内容24-27字节和key数组元素6进行与运算的结果,w2为报文内容28-31字节和key数组元素7进行与运算的结果;
19.在报文长度大于32小于48字节时,预设运算算法满足如下关系式:
20.push48=((w3)^(x3)^(y3)^(z3));
21.其中,w3为报文内容32-35字节和key数组元素8进行与运算的结果,x3为报文内容36-39字节和key数组元素9进行与运算的结果,y3为报文内容40-43字节和key数组元素10进行与运算的结果,z3为报文内容44-47字节和key数组元素11进行与运算的结果,^表示亦或运算;
22.在报文长度大于48小于64字节时,预设运算算法满足如下关系式:
23.push64=(((y4)|(~w4))^((x4)|(~z4)));
24.其中,y4为报文内容48-51字节和key数组元素12进行与运算的结果,w4为报文内容52-55字节和key数组元素13进行与运算的结果,x4为报文内容56-59字节和key数组元素14进行与运算的结果,z4为报文内容60-63字节和key数组元素15进行与运算的结果;
25.在报文长度大于64小于112字节时,预设运算算法满足如下关系式:
26.pushtail=(((x5)&(y5))|((~w5)&(z5)));
27.其中,x5为报文内容96-99字节和key数组元素0进行与运算的结果,y5为报文内容100-103字节和key数组元素1进行与运算的结果,w5为报文内容104-107字节和key数组元素2进行与运算的结果,z5为报文内容108-111字节和key数组元素3进行与运算的结果;
28.所述生成所述第一key码,满足如下关系式:
29.keycode=(push16+push32+push48+push64+pushtail)|(pktlen《《4)|(pktlen》》4);
30.其中,pktlen《《4表示报文长度左移4位,pktlen》》4表示报文长度右移4位。
31.可选地,若在预存储的数据库中未查找到与所述第一key码对应的第一令牌桶,且数据库中的令牌桶资源已满,则将数据库中令牌桶数量最少的令牌桶对应的第二key码改写为所述第一key码;若未查找到与所述第一key码对应的令牌桶,且数据库中的令牌桶资源充足,则创建一个与所述第一key码对应的令牌桶。
32.可选地,所述从预存储的数据库中查找与所述key码对应的令牌桶之前,所述方法还包括:
33.在报文的收包速率大于预设速率时,开启令牌桶阻断机制;
34.所述从预存储的数据库中查找与所述key码对应的令牌桶,包括:
35.在开启令牌桶阻断机制的情况下,从预存储的数据库中查找与所述key码对应的令牌桶。
36.可选地,所述方法还包括:
37.若令牌桶当前动作为丢弃且令牌数量等于预设恢复值,则令牌桶的动作转为准备;
38.若令牌桶当前动作为准备且令牌数量等于预设恢复值减去取令牌数,则令牌桶的动作转为转发,并恢复对该报文的转发。
39.第二方面,本发明提供一种报文传输系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
40.第三方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的方法步骤。
41.有益效果:
42.本发明提供的一种报文传输方法,通过预设运算算法与报文内容进行运算,生成一个此报文唯一对应的第一key码,从预存储的数据库中查找与第一key码对应的令牌桶,并进一步根据令牌桶的令牌数量判断报文是否存在攻击性从而决定丢弃报文还是继续转发报文,这样,可以高效的判别报文的攻击性,减小报文传输延时,保证系统内部的正常进程。
43.在优选的实施方案中,采用预设运算算法对报文内容与定义的key数组进行位运算,计算方式高效,占用cpu资源较少,且预设运算算法能对每一个不同内容的报文生成唯一的key码。
44.在优选的实施方案中,若令牌桶当前动作为准备且令牌数量等于预设恢复值减去取令牌数,则令牌桶的动作转为转发,并恢复对该报文的转发,这样,当攻击报文速率减小不再有攻击性时可以自动恢复转发。可以达到既能防范报文对cpu的冲击,也能保证业务正常运转的效果。
附图说明
45.图1为本发明优选实施例的一种报文传输方法的流程图之一;
46.图2为本发明优选实施例的key码生成方式示意图;
47.图3为本发明优选实施例的令牌桶开启流程示意图;
48.图4为本发明优选实施例的取令牌及关令牌流程的示意图;
49.图5为本发明优选实施例的一种报文传输方法的流程图之二。
具体实施方式
50.下面对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.除非另作定义,本发明中使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“连接”或者“相连”等类似的
词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也相应地改变。
52.应理解,本技术提供的一种报文传输方法可以应用于数据通信领域的各类转发装置,例如,转发装置可以是交换机或路由器cpu,此处仅作示例,不做限定。当大量带有攻击性质的报文冲击交换机或路由器cpu,必定会占用设备cpu资源,占用cpu接口带宽,这样会导致正常上cpu的协议报文不能正常处理,或延时较大,同时也会引起系统内部进程通信异常。由此就会导致远端网管软件访问失败、协议处理不及时导致网络故障、导致设备卡顿无法管理、设备自动重启等现象发生。基于此,本技术提供一种报文传输方法。
53.请参见图1,本技术提供的一种报文传输方法,包括:
54.基于预设运算算法生成与接收的报文唯一对应的第一key码;
55.从预存储的数据库中查找与第一key码对应的令牌桶,在查找到与第一key码对应的第一令牌桶的情况下,将第一令牌桶的桶内的令牌数量加1;每一令牌桶对应一个key码;
56.判断令牌数量是否大于预设令牌阈值,若令牌数量大于或者等于预设令牌阈值,则将第一令牌桶对应的动作修改为丢弃,并丢弃接收的报文;若令牌数量小于预设令牌阈值,则将第一令牌桶对应的动作修改为转发,并继续转发接收的报文。
57.在本实施例中,令牌桶是一种流量监管算法,通过令牌桶中的令牌数量,可以统计报文数,每一令牌桶对应一个key码,如果命中,该令牌桶就将令牌加入桶中,令牌桶中的对应令牌数量加1。若此时令牌数量大于阀值,则将该令牌桶中的令牌数量设为阀值加1,其中,预设令牌阈值可以由工作人员根据实际需求设置。其中,令牌数量大于或者等于预设令牌阈值,表明报文数较大,视为该报文存在攻击性质。
58.上述的报文传输方法,通过预设运算算法与报文内容进行运算,生成一个此报文唯一对应的第一key码,从预存储的数据库中查找与第一key码对应的令牌桶,并进一步根据令牌桶的令牌数量判断报文是否存在攻击性从而决定丢弃报文还是继续转发报文,这样,可以高效的判别报文的攻击性,减小报文传输延时,保证系统内部的正常进程。
59.可选地,所述基于预设运算算法生成与接收的报文唯一对应的第一key码,包括:
60.定义一个数据类型为32位的无符号整形数组key,数组元素大小为16,总共数组大小为64字节;
61.根据所述报文的报文长度确定预设运算算法,基于预设运算算法、报文以及所述整形数组key生成所述第一key码。
62.需要说明的是,64字节对应普通以太网报文最短长度,当cpu收到以太网报文后,将报文内容与此key数组通过预设运算算法进行运算,可以生成一个无符号32位整形key code(key码),并将此运算得出的key码保存于预存储的数据库中,表示此报文已被标记,后续再收到此报文通过key码匹配,可以快速判断出是否命中,从而对此报文数进行令牌桶运算,进一步根据运算结果决定报文是否丢弃。
63.可选地,所述根据所述报文的报文长度确定预设运算算法,包括如图2所示的算法一:在报文长度小于16字节时,预设运算算法满足如下关系式:
64.push16=(((x1)&(y1))|((~w1)&(z1)));
65.其中,x1为报文内容0-3字节和key数组元素0进行与运算的结果,y1为报文内容4-7
字节和key数组元素1进行与运算的结果,w1为报文内容8-11字节和key数组元素2进行与运算的结果,z1为报文内容12-15字节和key数组元素3进行与运算的结果,~表示取反运算,&表示与运算,|表示或运算。
66.算法二:在报文长度大于16小于32字节时,预设运算算法满足如下关系式:
67.push32=(((x2)&(z2))|((y2)&(~w2)));
68.其中,x2为报文内容16-19字节和key数组元素4进行与运算的结果,z2为报文内容20-23字节和key数组元素5进行与运算的结果,y2为报文内容24-27字节和key数组元素6进行与运算的结果,w2为报文内容28-31字节和key数组元素7进行与运算的结果;
69.算法三:在报文长度大于32小于48字节时,预设运算算法满足如下关系式:
70.push48=((w3)^(x3)^(y3)^(z3));
71.其中,w3为报文内容32-35字节和key数组元素8进行与运算的结果,x3为报文内容36-39字节和key数组元素9进行与运算的结果,y3为报文内容40-43字节和key数组元素10进行与运算的结果,z3为报文内容44-47字节和key数组元素11进行与运算的结果,^表示亦或运算;
72.算法四:在报文长度大于48小于64字节时,预设运算算法满足如下关系式:
73.push64=(((y4)|(~w4))^((x4)|(~z4)));
74.其中,y4为报文内容48-51字节和key数组元素12进行与运算的结果,w4为报文内容52-55字节和key数组元素13进行与运算的结果,x4为报文内容56-59字节和key数组元素14进行与运算的结果,z4为报文内容60-63字节和key数组元素15进行与运算的结果;
75.算法五:在报文长度大于64小于112字节时,预设运算算法满足如下关系式:
76.pushtail=(((x5)&(y5))|((~w5)&(z5)));
77.其中,x5为报文内容96-99字节和key数组元素0进行与运算的结果,y5为报文内容100-103字节和key数组元素1进行与运算的结果,w5为报文内容104-107字节和key数组元素2进行与运算的结果,z5为报文内容108-111字节和key数组元素3进行与运算的结果;
78.算法六:所述生成所述第一key码满足如下关系式:
79.keycode=(push16+push32+push48+push64+pushtail)|(pktlen《《4)|(pktlen》》4);
80.其中,pktlen《《4表示报文长度左移4位,pktlen》》4表示报文长度右移4位。
81.需要说明的是,上述的公式仅为其满足的一种数学表达式,在其他可行的实施方式中,还可以将上述公式变换为其余形式,但不论其作何变换,都在本技术保护的范围之内。其中,最后得到结果keycode,keycode即为需要保存到数据库中key码,用来映射到对应的报文,该key码主要用于后面令牌桶阻断冲击机制,判断报文是否命中数据库中保存的key码(每一个令牌桶对应一个key码)。这样,采用预设运算算法对报文内容与定义的key数组进行位运算,计算方式高效,占用cpu资源较少,且预设运算算法能对每一个不同内容的报文生成唯一的key码。
82.可选地,若在预存储的数据库中未查找到与所述第一key码对应的第一令牌桶,且数据库中的令牌桶资源已满,则将数据库中令牌桶数量最少的令牌桶对应的第二key码改写为所述第一key码;若未查找到与所述第一key码对应的令牌桶,且数据库中的令牌桶资源充足,则创建一个与所述第一key码对应的令牌桶。
83.在本可选的实施方式中,令牌桶资源已满是指令牌桶种类已到最大,无可用资源。令牌桶资源充足是指令牌桶种类未到最大,存在可用资源。
84.本实施例中,通过查找情况改写令牌桶对应的key码以及新增或者减少令牌桶,可以根据用户需求和使用场景进行合理的配置。
85.可选地,所述从预存储的数据库中查找与所述key码对应的令牌桶之前,所述方法还包括:
86.在报文的收包速率大于预设速率时,开启令牌桶阻断机制;
87.所述从预存储的数据库中查找与所述key码对应的令牌桶,包括:
88.在开启令牌桶阻断机制的情况下,从预存储的数据库中查找与所述key码对应的令牌桶。
89.需要说明的是,如图3所示,令牌桶阻断机制是当cpu收包速率到底一定值(用户配置的值)时,才会自动开启。若端口下的令牌桶没有开启,由定时器触发的处理函数就会读取令牌桶记录表中的速率,判断是否超过每秒取报文数。若超速则将令牌桶记录表中的超速次数加1,若未超速则将令牌桶记录表中的超速次数清零。判断超速次数是否到最大允许的超速次数(该超速次数可以通过用户配置确定),若已到最大超速次数则开启令牌桶。
90.这样,根据cpu收包速率来自动开关令牌桶,可以节约计算资源。
91.可选地,上述的方法还包括:
92.若令牌桶当前动作为丢弃且令牌数量等于预设恢复值,则令牌桶的动作转为准备;
93.若令牌桶当前动作为准备且令牌数量等于预设恢复值减去取令牌数,则令牌桶的动作转为转发,并恢复对该报文的转发。
94.在本可选的实施方式中,如图4所示,若端口下的令牌桶已开启,由定时器触发的处理函数就会遍历令牌记录,取走令牌。在对桶中令牌的动作进行判断时,若动作为丢弃则以单次取令牌数两倍的数量取走令牌,若为其他动作则以单次取令牌数量取走令牌。从桶中取走令牌时,令牌桶记录表中记录的令牌数目减少。若令牌当前动作为丢弃且令牌数等于恢复值,则令牌的动作转为准备。若令牌当前动作为准备且令牌数等于恢复值减去取令牌数,则令牌动作转为转发,恢复对该报文的转发。这样,当攻击报文速率减小不再有攻击性时可以自动恢复转发。可以达到既能防范报文对cpu的冲击,也能保证业务正常运转的效果。
95.在一示例中,若某令牌桶的令牌数为零,则将它从令牌桶记录表中删除,桶中令牌种类减一。若令牌桶记录表中的令牌记录为空,说明令牌桶中所有令牌已被取走,关闭令牌桶。
96.在一完整示例中,如图5所示,cpu收到报文时,通过上面的运算生成key码,然后与数据库中保存的key码比较,通过命中查找出该报文对应的令牌桶。如果命中,该令牌桶就将该令牌加入桶中,令牌桶中的对应令牌的数量加1。若此时令牌数大于阀值,则将该令牌桶中的令牌数量设为阀值加1。如果没有命中,则创建一个此报文对应的新令牌桶。先查看已有令牌桶种类是否已到最大,即资源是否可用。若已到最大,就替换掉令牌数最少的令牌桶,令牌桶种类数量不变。若未到最大,将创建该key码对应的令牌桶,并将该令牌桶记录在令牌桶数据库中,令牌桶种类数量加1。新加入令牌桶的令牌数量为初始令牌值。若该令牌
桶中令牌数量大于或等于阀值且动作不为丢弃,则将该令牌桶的动作变为丢弃,存入令牌桶数据库中。转发动作之外其他动作的报文将会被丢弃。这样,建立了有效判断及阻断报文攻击的机制,通过对报文精准识别、记录、速率运算、攻击性质判断、阻断动作响应、恢复等一套处理机制来达到精准判断报文攻击,并有效阻断报文冲击cpu的效果。根据cpu收包速率来自动开关令牌桶,自动识别攻击性质的报文,自动下发阻断攻击动作,停止攻击自动恢复转发。本发明的令牌桶,包括对桶阀值、正常恢复值、单次取令牌数值、初始化令牌值的设置,可以根据用户需求和使用场景进行合理的配置,从而达到既能防范对cpu的冲击,也能保证业务正常运转的效果。
97.本技术还提供一种报文传输系统,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。该报文传输系统可以实现上述的报文传输方法的各个实施例,且能达到相同的有益效果,此处,不做赘述。
98.本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的方法步骤。该可读存储介质可以实现上述的方法的各个实施例,且能达到相同的有益效果,此处,不做赘述。
99.以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1