基于可编程交换机的网络微突发流检测方法及相关设备

文档序号:35133187发布日期:2023-08-15 08:32阅读:46来源:国知局
基于可编程交换机的网络微突发流检测方法及相关设备

本发明属于网络安全领域,更具体地,涉及基于可编程交换机的网络微突发流检测方法及相关设备。


背景技术:

1、近年来,随着数据中心的网络规模显著扩大,各种应用和服务都迁移至云环境,在数据中心网络带宽大幅增加和应用程序愈加复杂的环境下,确保网络高可用性和满足不同应用的服务级别协议(sla,service level agreement)具备高挑战性。sla 中除去可用网络带宽,网络延迟也是影响用户体验的关键因素,例如实时会议视频流偶然经历的高延迟会导致画面时断时续;在金融领域的高频交易(hft,high frequency trading)中,网络延迟会显著地影响交易的公平性,进而造成经济损失。据报道,hft 中每 1ms 的延迟差距就会带来每年 1 亿美元的利润差异。

2、高速网络中端到端时延极低(<1ms),导致持续时间极短的网络拥塞也会产生高网络延迟,严重延长流完成时间(flow completed time,fct),对网络性能产生影响。先前的工作将间歇发生的时间尺度极短的网络拥塞事件称为微突发(microburst),然而微突发极小的时间尺度使传统网络中粗粒度网管系统无法检测到微突发事件发生,一些现有的商业解决方案能够检测到微突发,但无法提供微突发流信息。在基于openflow的软件定义网络(software define network,sdn)环境中,通过控制器以最快速度轮询openflow交换机内各类计数器进行检测,但只能统计微突发发生的轮询时间段。斯坦福大学教授nickmckeown于2014年设计并提出了协议无关报文处理语言(programmingprotocolindependent packet processors,p4),工业界跟进研制了一系列可编程交换机。主要包含 barefoot tofino,caviumxpliant以及netronomenics等。以p4交换机为代表的可编程交换机可向数据包暴露设备内部性能数据(如报文排队时延等),为细粒度检测微突发提供了技术基础。

3、经过调研发现,目前针对于微突发流的测量主要分为两大类,一类是在传统交换机上使用轮询计数器的方法进行检测,但是这种方法由于检测的粒度粗,从而无法检测到微突发的产生;另外一类是基于可编程交换机的方法,但是这种方法需要传输所有的微突发流数据包进行微突发流信息的获取,所占用的带宽开销较大,会严重影响可编程交换机的转发性能。


技术实现思路

1、针对现有技术的缺陷和改进需求,本发明提供了基于可编程交换机的网络微突发流检测方法及相关设备,其目的在于,在不影响可编程交换机的转发性能的情况下,实现网络微突发流的检测并提供微突发流信息。

2、为实现上述目的,按照本发明的一个方面,提供了一种基于可编程交换机的网络微突发流检测方法,包括在可编程交换机的数据平面执行的以下步骤:

3、微突发流检测步骤:在数据包进入可编程交换机后,从其包头中提取数据包出队列时的队列深度,若大于预设的第一拥塞阈值,则判定其为微突发流数据包;

4、微突发流存储步骤:利用布隆过滤器和可逆布隆查找表存储微突发流数据包中携带的流信息;布隆过滤器和可逆布隆查找表长度相等,且初始值均为0;可逆布隆查找表中,各槽位存储的信息包括:对应的流的流id异或值、流计数以及包计数;对于任意一个微突发流数据包p,其所携带的流f信息的存储方式包括:

5、利用布隆过滤器判断流f的信息是否已经存储,若是,则确定可逆布隆查找表中与流f对应的槽位,并更新这些槽位中的包计数;否则,确定可逆布隆查找表中与流f对应的槽位,更新这些槽位的流id异或值、流计数和包计数,并将布隆过滤器中与流f对应的槽位置为1;

6、以及微突发流传输步骤:按照原始转发路径转发进入可编程交换机的各数据包;每经过预设的时间间隔后,选取指定数量的数据包进行镜像,得到自定义数据包,将当前可逆布隆查找表中的内容嵌入自定义数据包的包头后,将自定义数据包包头传输至可编程交换机的控制平面。

7、进一步地,微突发流存储步骤中,对于任意一个微突发流数据包p,其所携带的流f信息的存储方式包括如下子步骤:

8、(s1)对流f的id进行散列,得到布隆过滤器中与流f对应的槽位,若各槽位均不为0,则判定流f的信息已经存储,并转入步骤(s4);否则,转入步骤(s2);

9、(s2)将布隆过滤器中与流f对应的槽位置为1;

10、(s3)根据流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5):

11、将槽位内的流id异或值更新为原流id异或值与流f的id进行异或运算后的结果;

12、将槽位内的流计数加1;

13、将槽位内的包计数加1;

14、(s4)根据所述流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5)

15、将槽位内的包计数加1;

16、(s5)微突发流数据包p所携带的流f的信息存储结束。

17、进一步地,微突发流传输步骤中,将当前可逆布隆查找表中的内容嵌入自定义数据包的包头,包括:

18、创建遥测头;遥测头包括:自定义数据包原始的协议号,自定义数据包出队列时的队列深度,iblt位图,以及iblt数据;

19、将自定义数据包中原始的协议号替换为自定义协议号,剔除载荷数据,并将遥测头插入自定义数据包的包头;

20、将可逆布隆查找表中各槽位清零;

21、其中,iblt位图用于标识可逆布隆查找表中非零槽位的位置,iblt数据用于记录可逆布隆查找表中非零槽位的内容以及最后一个槽位的内容;自定义协议号用于指示该自定义数据包为携带有微突发流信息的数据包。

22、进一步地,本发明提供的基于可编程交换机的网络微突发流检测方法,还包括:在可编程交换机的控制平面执行的解码步骤,用于从来自数据平面的自定义数据包中解码出微突发流信息;对于任意一个自定义数据包p',其解码过程包括如下子步骤:

23、(t1)从自定义数据包p'中解析得到iblt位图和iblt数据后,重建得到可逆布隆查找表iblt';

24、(t2)获取可逆布隆查找表iblt'中流计数为1的槽位,遍历这些槽位,对于遍历到的每一个槽位,提取其中的流id异或值,作为一个微突发流f'的流id,记为idf',并提取当前槽位内的包计数,得到微突发流f'所包含的包数量cf',对微突发流f'的id进行散列,得到微突发流f'对应的槽位,将各槽位内的流id异或值与idf'进行异或,并将槽位内的流计数减去1、包计数减去cf';

25、(t3)重复执行步骤(t2),直至可逆布隆查找表iblt'中不存在流计数为1的槽位,自定义数据包p'的解码过程结束。

26、进一步地,微突发流检测步骤还包括:

27、对于微突发流数据包,根据其出队列时的队列深度对数据包的拥塞程度进行等级划分;

28、并且,微突发流存储步骤中,针对每一个拥塞等级,分别创建对应的布隆过滤器和可逆布隆查找表,用于存储对应拥塞等级的微突发流数据包所属流的信息。

29、进一步地,对于微突发流数据包,根据其出队列时的队列深度对数据包的拥塞程度进行等级划分,方式如下:

30、若微突发流数据包出队列时的队列深度,则判断该微突发流数据包所属的拥塞等级为中度拥塞;

31、若,则判断该微突发流数据包所属的拥塞等级为高度拥塞;

32、其中,为可编程交换机的最大队列深度;为第一拥塞阈值,为预设的第二拥塞阈值,。

33、进一步地,,。

34、按照本发明的又一个方面,提供了一种网络微突发流检测器,包括:

35、计算机可读存储介质,用于存储计算机程序;

36、以及处理器,用于读取计算机可读存储介质中存储的计算机程序,执行本发明提供的基于可编程交换机的网络微突发流检测方法。

37、按照本发明的又一个方面,提供了一种可编程交换机,该可编程交换机搭载有本发明提供的网络微突发流检测器。

38、进一步地,本发明提供的可编程交换机为p4交换机。

39、总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:

40、(1)本发明在可编程交换机的数据平面,基于数据包包头内的队列深度信息完成微突发流数据包的检测,实现了细粒度的微突发流检测,基于布隆过滤器和可逆布隆查找表实现了对微突发流信息的轻量级存储,在此基础上,通过定时镜像的转发方式,以极低的带宽开销将微突发流信息的转发到了控制平面,在不影响交换机数据包转发功能的情况下,提供了微突发流信息。

41、(2)本发明将存储于数据平面的微突发流信息转发至控制平面时,利用iblt位图和iblt数据对可逆布隆查找表中非零槽位的位置和内容进行记录,该记录将被嵌入到镜像得到的自定义数据包的头部,同时自定义数据包的载荷数据被剔除,在保证微突发流信息被完整转发到控制平面的基础上,尽可能减少了转发微突发流信息所占用的带宽开销,避免了对交换机正常转发功能的影响。

42、(3)本发明进一步在可编程交换机的控制平面,利用数据包中的iblt位图和iblt数据重建可逆布隆查找表,并从其中流计数为1的槽位开始提取微突发流的id信息和包计数信息,每提取一个微突发流的信息,则通过相应的运算将该微突发流的信息从可逆布隆查找表中消除,之后继续查找流计数为1的槽位,并执行相同的操作,由此能够完整、准确获取到微突发流信息。

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