一种基于流量感知的隧道预防分片攻击的方法和装置与流程

文档序号:36338676发布日期:2023-12-13 16:36阅读:36来源:国知局
一种基于流量感知的隧道预防分片攻击的方法和装置与流程

本发明涉及一种基于流量感知的隧道预防分片攻击的方法和装置,属于互联网中路由器研究领域。


背景技术:

1、由于在网络中物理链路存在最大传输单元(mtu),超过mtu的网络报文会被网络设备分片成多个报文再进行传输,分片会导致网络设备性能下降甚至出现故障。正常的网络场景下按照网络终端应用程序会按照mtu来构造报文,即便是特殊设置导致网络终端mtu要小于上联链路的mtu,网络报文的分片和重组也仅仅是在一对网络终端之间,不会对整体网络性能产生影响。但是,在网络中的路由器如果出现支持隧道、srv6等技术时,就会达到满足报文分片的条件,报文的分片和重组将消耗过多的网络设备资源,导致网络设备转发性能下降甚至不转发,就会导致比较严重的网络停服事件。很多网络黑客往往就利用这个漏洞对骨干网络的核心节点进行分布式拒绝服务攻击(ddos),对国家经济生活造成无法挽回的损失。

2、隧道技术对于网络报文的封装必然会导致封装报文大于网络最大传输单元,从而路由器将要对网络报文进行分片。本发明以在从ipv4网络向ipv6网络过渡的隧道技术为例,介绍基于流量感知的预防分片攻击方法和装置。

3、在从ipv4网络向ipv6网络过渡的众多技术之中,隧道技术是非常重要的技术之一。隧道技术指在ipv4/ipv6网络边界的路由器上,将ipv4/ipv6网络的报文再封装在一个ipv4/ipv6报头之下,到达对端的ipv4/ipv6网络边界路由器再进行解封装将原始的报文取出,从而解决孤岛网络通过异构协议进行互访的问题。

4、因此如何兼顾满足ipv6网络与ipv4网络隧道通信需要及避免封装报文分片是防止支持ipv6网络与ipv4网络隧道通信路由器被分片报文攻击,从而出现系统瓶颈的关键问题。


技术实现思路

1、针对现有技术的不足,本发明提供一种基于流量感知的隧道预防分片攻击的方法和装置,是一种基于分片流量占用带宽情况的更精细化自动化的流量感知算法,权衡和协调了分片次数和最大传输单元之间的效率矛盾,能有效防止过度降低最大传输单元带来的数据包过多,增加网络负担,降低传输效率问题。

2、本发明采用如下技术方案:

3、一种基于流量感知的隧道预防分片攻击的方法,包括如下步骤:

4、s100:路由器启动后创建隧道分片溯源监测表和隧道分片流量占用带宽情况表;

5、s200:路由器接收输入的报文,判断接收的是否为ipv4网络送往ipv6网络的报文,若是,记录下ipv4报文源地址和隧道封装报文转发的接口号,进行隧道报文封装,并判断封装后的报文尺寸是否大于1500字节,若封装后的报文尺寸大于1500字节,则对报文进行分片并封装,更新隧道分片流量占用带宽情况表、更新隧道分片溯源监测表;若封装后的报文尺寸小于等于1500字节,则直接对ipv4报文进行封装,并更新隧道分片流量占用带宽情况表,继续接收报文;

6、若接收的报文为非ipv4网络送往ipv6网络的报文,即ipv4网络送往ipv4网络的报文,则记录报文接口号、转发该ipv4报文上一跳ipv4路由器地址和报文转发的接口号,获取报文首部的总长度字段,并更新隧道分片流量占用带宽情况表;

7、s300:扫描隧道分片流量占用带宽情况表,判断当前时间-隧道分片流量占用带宽情况表的时间戳是否大于5s(即当前时间与隧道分片流量占用带宽情况表的时间戳进行比较,其差值是否大于5s),若否,则返回步骤s200,继续接收报文;若是,则将路由器接口索引、流量告警阈值、隧道分片流量统计和接口流量统计字段取出来,利用隧道分片流量统计和接口流量统计字段,计算出隧道分片流量统计值占接口流量统计值的百分比数值,若该百分比数值低于或等于预警阈值,则隧道分片流量统计和接口流量统计初始化为0,时间戳初始化为当前时间的绝对时间值,则返回步骤s300的开始,继续描隧道分片流量占用带宽情况表;

8、若百分比数值高于预警阈值,则利用路由器接口索引扫描隧道分片溯源监测表,取出计数器值排序前三且溯源标记字段为0的记录,将ip地址打印出来,提示需要将这三个ip的主机接口数据链路的最大传输单元mtu调低,并更新该三条记录的溯源标记更新为1,将隧道分片流量和接口流量初始化为0,时间戳初始化为当前的绝对时间值;

9、s400:路由器扫描隧道分片溯源监测表,依次取出表项并进行删除或更新,之后返回s200继续接收报文。

10、本发明与以往方案相比,虽都有可能涉及调低最大传输单元,但由于分片的次数并非直接影响传输效率,最大传输单元过大和过小都会对传输效率带来负面影响,故本发明侧重更为精细化自动化的流量监测和感知,并非如以往方案中遇到分片报文就立即减小最大传输单元,而是提供了一个基于分片流量占用带宽情况的感知算法,此算法能权衡和协调了降低分片和最大传输单元之间的效率矛盾,且能作为一种防御手段应用于分片攻击领域。

11、优选的,步骤s400的具体过程包括:

12、判断隧道分片溯源监测表中溯源标记的值是1还是0,若溯源标记的值为1,取出时间戳字段,将当前时间与时间戳相减,如果差值小于10s,代表当前主机发出的报文产生了分片并且最近被溯源过,表项可以保留,并且则将该条表项取出来,记数器初始化为0,溯源标记初始化为0,时间戳为当前时间的绝对时间值,如果差值大于等于10s,代表当前主机已经不活跃,则将表项删除;

13、如果溯源标记的值为0,取出时间戳字段,将当前时间与时间戳相减,如果差值小于5s,代表当前主机刚刚降为非溯源主机或者是刚刚造成路由器隧道分片的主机,表项可以暂时保留,将该条表项取出来,记数器初始化为0,溯源标记初始化为0,时间戳重置为当前时间的绝对时间值,如果差值大于等于5s,代表当前主机已经不活跃,则将表项删除。

14、优选的,步骤s100中,隧道分片溯源监测表包括路由器接口索引值、主机ip地址、记数器、溯源标记和时间戳,其中路由器接口索引值为当前创建表所绑定接口的编号,主机ip地址为发出在路由器上进行隧道分片报文的源主机ip地址,计数器为当前主机在路由器上进行隧道报文分片的次数,溯源标记为当前主机是否已经进行了隧道分片主机溯源,时间戳为记录某个时间的绝对时间值,初始路由器每个接口均创建一个表项,路由器接口索引值取自系统给每个接口所分配的编号数值,取值范围为1-64,主机ip地址初始化设置为0,记数器初始化为0,溯源标记初始化为0,时间戳初始化为0。

15、优选的,隧道分片溯源监测表中,主机ip地址和时间戳均占用32字节大小,路由器接口索引值和计数器均占用8字节大小,溯源标记值占用1字节大小。

16、优选的,隧道分片流量占用带宽情况表包括路由器接口索引值、隧道分片流量统计、接口流量统计、流量告警阈值和时间戳,其中路由器接口索引值为当前所创建表绑定的接口的编号,隧道分片流量统计为路由器单个接口在发送隧道报文时需要进行分片的字节数,接口流量统计为路由器单个接口发送所有报文的字节数,流量告警阈值为初始化设定的隧道分片报文流量所占当前接口实时流量带宽最高比例值,时间戳为记录某个时刻的绝对时间,初始路由器每个接口均创建一个表项,路由器接口索引值取自系统给每个接口所分配的编号数值,取值范围为1-64,隧道分片流量统计初始化为0,接口流量统计初始化为0,流量告警阈值初始化为10,时间戳初始化为0。

17、优选的,隧道分片流量占用带宽情况表中,接口流量统计占用20字节大小,时间戳占4字节大小,隧道分片流量统计占2字节大小,路由器接口索引值和流量告警阈值均占1字节大小。

18、优选的,步骤s200中,封装后的报文尺寸为ipv4完整报文再加上ipv6报文首部40字节为封装后的尺寸。

19、优选的,步骤s200中,若封装后的报文尺寸大于1500字节,对报文进行分片并封装的过程为:

20、路由器将分片的ipv4报文从数据部分开始分割成多部分(具体分割成几部分,需要根据报文尺寸决定,如两片、三片或者更多),若分割成n份,则分片1~分片n-1的数据部分尺寸均为1500字节-首部尺寸,分片n的数据部分尺寸为ipv4报文除去前面n-1个分片数据部分总尺寸外剩余的数据部分尺寸,其中,n为大于等于2的自然数,分片1~分片n-1封装后的报文尺寸为1500字节,分片n封装后的报文尺寸为除去前面n-1个分片数据部分总尺寸外剩余的数据部分尺寸+首部尺寸,保证报文分片之后的封装尺寸小于等于1500字节;

21、此分割方法,即将超出的部分根据超出mtu:1500字节部分进行分割,如1700字节的报文,假设其首部为20字节,其数据部分为1680字节,分片后分片1应为1500字节,数据部分1480字节,分片2应为220字节,数据部分200字节。

22、分片之后分别加上两个ipv4报文头部,在填充相应信息之后进行隧道封装,从封装之后的ipv6报文净载荷字段中取出隧道报文的净载荷长度(净载荷指报文中去掉报文头和尾的数据内容即有用信息),再加上ipv6报文首部长度40字节,得到隧道报文分片之后封装的报文长度;

23、利用隧道报文转发的接口号扫描隧道分片流量占用带宽情况表,将本次隧道报文分片之后的报文长度与隧道分片流量占用带宽情况表中隧道分片流量统计字段值相加,并且再更新隧道分片流量统计字段,利用隧道报文转发的接口号和ipv4报文源地址扫描隧道分片溯源监测表,如果没有记录则创建一条记录,路由器接口索引值填入隧道报文转发的接口号,主机ip地址填入ipv4报文源地址,记数器值为1,时间戳为当前时间的绝对时间值,如果有记录,记数器值加1,时间戳为当前时间的绝对时间值。

24、优选的,步骤s200中,若封装后的报文尺寸小于等于1500字节,则直接对ipv4报文进行封装,从封装之后的ipv6报文净载荷字段中取出隧道报文的净载荷长度,再加上ipv6报文首部长度40字节,得到隧道封装之后的报文长度;利用隧道报文转发的接口号扫描隧道分片流量占用带宽情况表,将本次隧道报文长度与隧道分片流量占用带宽情况表中接口流量统计字段值相加,更新接口流量统计字段。

25、优选的,步骤s200中,如果路由器接收ipv4网络送往ipv4网络的报文,利用报文转发的接口号扫描隧道分片流量占用带宽情况表,将本次报文长度与隧道分片流量占用带宽情况表中接口流量统计字段值相加,更新接口流量统计字段,实现隧道分片流量占用带宽情况表的更新。

26、一种基于流量感知的隧道预防分片攻击的装置,用于实现上述的基于流量感知的隧道预防分片攻击的方法,包括第一路由器和第二路由器,第一路由器用于接收左边ipv4网络中发出的报文,并通过隧道技术封装报文传递到ipv6网络,第二路由器用于解封装报文传递到下一个ipv4网络。

27、本发明未详尽之处,均可参见现有技术。

28、本发明的有益效果为:

29、1、本发明的基于流量感知的隧道预防分片攻击的方法和装置,为一种更精细化自动化的流量感知算法,权衡和协调了分片次数和最大传输单元之间的效率矛盾,且能作为一种有效防御手段应用于分片攻击领域。

30、2、本发明能有效解决过度降低最大传输单元带来的数据包过多,增加网络负担,降低传输效率问题。

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