基于可编程交换机的网络微突发流检测方法及相关设备
未命名
08-15
阅读:162
评论:0
1.本发明属于网络安全领域,更具体地,涉及基于可编程交换机的网络微突发流检测方法及相关设备。背景技术:
::2.近年来,随着数据中心的网络规模显著扩大,各种应用和服务都迁移至云环境,在数据中心网络带宽大幅增加和应用程序愈加复杂的环境下,确保网络高可用性和满足不同应用的服务级别协议(sla,servicelevelagreement)具备高挑战性。sla中除去可用网络带宽,网络延迟也是影响用户体验的关键因素,例如实时会议视频流偶然经历的高延迟会导致画面时断时续;在金融领域的高频交易(hft,highfrequencytrading)中,网络延迟会显著地影响交易的公平性,进而造成经济损失。据报道,hft中每1ms的延迟差距就会带来每年1亿美元的利润差异。3.高速网络中端到端时延极低(《1ms),导致持续时间极短的网络拥塞也会产生高网络延迟,严重延长流完成时间(flowcompletedtime,fct),对网络性能产生影响。先前的工作将间歇发生的时间尺度极短的网络拥塞事件称为微突发(microburst),然而微突发极小的时间尺度使传统网络中粗粒度网管系统无法检测到微突发事件发生,一些现有的商业解决方案能够检测到微突发,但无法提供微突发流信息。在基于openflow的软件定义网络(softwaredefinenetwork,sdn)环境中,通过控制器以最快速度轮询openflow交换机内各类计数器进行检测,但只能统计微突发发生的轮询时间段。斯坦福大学教授nickmckeown于2014年设计并提出了协议无关报文处理语言(programmingprotocolindependentpacketprocessors,p4),工业界跟进研制了一系列可编程交换机。主要包含barefoottofino,caviumxpliant以及netronomenics等。以p4交换机为代表的可编程交换机可向数据包暴露设备内部性能数据(如报文排队时延等),为细粒度检测微突发提供了技术基础。4.经过调研发现,目前针对于微突发流的测量主要分为两大类,一类是在传统交换机上使用轮询计数器的方法进行检测,但是这种方法由于检测的粒度粗,从而无法检测到微突发的产生;另外一类是基于可编程交换机的方法,但是这种方法需要传输所有的微突发流数据包进行微突发流信息的获取,所占用的带宽开销较大,会严重影响可编程交换机的转发性能。技术实现要素:5.针对现有技术的缺陷和改进需求,本发明提供了基于可编程交换机的网络微突发流检测方法及相关设备,其目的在于,在不影响可编程交换机的转发性能的情况下,实现网络微突发流的检测并提供微突发流信息。6.为实现上述目的,按照本发明的一个方面,提供了一种基于可编程交换机的网络微突发流检测方法,包括在可编程交换机的数据平面执行的以下步骤:微突发流检测步骤:在数据包进入可编程交换机后,从其包头中提取数据包出队列时的队列深度,若大于预设的第一拥塞阈值,则判定其为微突发流数据包;微突发流存储步骤:利用布隆过滤器和可逆布隆查找表存储微突发流数据包中携带的流信息;布隆过滤器和可逆布隆查找表长度相等,且初始值均为0;可逆布隆查找表中,各槽位存储的信息包括:对应的流的流id异或值、流计数以及包计数;对于任意一个微突发流数据包p,其所携带的流f信息的存储方式包括:利用布隆过滤器判断流f的信息是否已经存储,若是,则确定可逆布隆查找表中与流f对应的槽位,并更新这些槽位中的包计数;否则,确定可逆布隆查找表中与流f对应的槽位,更新这些槽位的流id异或值、流计数和包计数,并将布隆过滤器中与流f对应的槽位置为1;以及微突发流传输步骤:按照原始转发路径转发进入可编程交换机的各数据包;每经过预设的时间间隔后,选取指定数量的数据包进行镜像,得到自定义数据包,将当前可逆布隆查找表中的内容嵌入自定义数据包的包头后,将自定义数据包包头传输至可编程交换机的控制平面。7.进一步地,微突发流存储步骤中,对于任意一个微突发流数据包p,其所携带的流f信息的存储方式包括如下子步骤:(s1)对流f的id进行散列,得到布隆过滤器中与流f对应的槽位,若各槽位均不为0,则判定流f的信息已经存储,并转入步骤(s4);否则,转入步骤(s2);(s2)将布隆过滤器中与流f对应的槽位置为1;(s3)根据流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5):将槽位内的流id异或值更新为原流id异或值与流f的id进行异或运算后的结果;将槽位内的流计数加1;将槽位内的包计数加1;(s4)根据所述流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5)将槽位内的包计数加1;(s5)微突发流数据包p所携带的流f的信息存储结束。8.进一步地,微突发流传输步骤中,将当前可逆布隆查找表中的内容嵌入自定义数据包的包头,包括:创建遥测头;遥测头包括:自定义数据包原始的协议号,自定义数据包出队列时的队列深度,iblt位图,以及iblt数据;将自定义数据包中原始的协议号替换为自定义协议号,剔除载荷数据,并将遥测头插入自定义数据包的包头;将可逆布隆查找表中各槽位清零;其中,iblt位图用于标识可逆布隆查找表中非零槽位的位置,iblt数据用于记录可逆布隆查找表中非零槽位的内容以及最后一个槽位的内容;自定义协议号用于指示该自定义数据包为携带有微突发流信息的数据包。9.进一步地,本发明提供的基于可编程交换机的网络微突发流检测方法,还包括:在可编程交换机的控制平面执行的解码步骤,用于从来自数据平面的自定义数据包中解码出微突发流信息;对于任意一个自定义数据包p',其解码过程包括如下子步骤:(t1)从自定义数据包p'中解析得到iblt位图和iblt数据后,重建得到可逆布隆查找表iblt';(t2)获取可逆布隆查找表iblt'中流计数为1的槽位,遍历这些槽位,对于遍历到的每一个槽位,提取其中的流id异或值,作为一个微突发流f'的流id,记为idf',并提取当前槽位内的包计数,得到微突发流f'所包含的包数量cf',对微突发流f'的id进行散列,得到微突发流f'对应的槽位,将各槽位内的流id异或值与idf'进行异或,并将槽位内的流计数减去1、包计数减去cf';(t3)重复执行步骤(t2),直至可逆布隆查找表iblt'中不存在流计数为1的槽位,自定义数据包p'的解码过程结束。10.进一步地,微突发流检测步骤还包括:对于微突发流数据包,根据其出队列时的队列深度对数据包的拥塞程度进行等级划分;并且,微突发流存储步骤中,针对每一个拥塞等级,分别创建对应的布隆过滤器和可逆布隆查找表,用于存储对应拥塞等级的微突发流数据包所属流的信息。11.进一步地,对于微突发流数据包,根据其出队列时的队列深度对数据包的拥塞程度进行等级划分,方式如下:若微突发流数据包出队列时的队列深度,则判断该微突发流数据包所属的拥塞等级为中度拥塞;若,则判断该微突发流数据包所属的拥塞等级为高度拥塞;其中,为可编程交换机的最大队列深度;为第一拥塞阈值,为预设的第二拥塞阈值,。12.进一步地,,。13.按照本发明的又一个方面,提供了一种网络微突发流检测器,包括:计算机可读存储介质,用于存储计算机程序;以及处理器,用于读取计算机可读存储介质中存储的计算机程序,执行本发明提供的基于可编程交换机的网络微突发流检测方法。14.按照本发明的又一个方面,提供了一种可编程交换机,该可编程交换机搭载有本发明提供的网络微突发流检测器。15.进一步地,本发明提供的可编程交换机为p4交换机。16.总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:(1)本发明在可编程交换机的数据平面,基于数据包包头内的队列深度信息完成微突发流数据包的检测,实现了细粒度的微突发流检测,基于布隆过滤器和可逆布隆查找表实现了对微突发流信息的轻量级存储,在此基础上,通过定时镜像的转发方式,以极低的带宽开销将微突发流信息的转发到了控制平面,在不影响交换机数据包转发功能的情况下,提供了微突发流信息。17.(2)本发明将存储于数据平面的微突发流信息转发至控制平面时,利用iblt位图和iblt数据对可逆布隆查找表中非零槽位的位置和内容进行记录,该记录将被嵌入到镜像得到的自定义数据包的头部,同时自定义数据包的载荷数据被剔除,在保证微突发流信息被完整转发到控制平面的基础上,尽可能减少了转发微突发流信息所占用的带宽开销,避免了对交换机正常转发功能的影响。18.(3)本发明进一步在可编程交换机的控制平面,利用数据包中的iblt位图和iblt数据重建可逆布隆查找表,并从其中流计数为1的槽位开始提取微突发流的id信息和包计数信息,每提取一个微突发流的信息,则通过相应的运算将该微突发流的信息从可逆布隆查找表中消除,之后继续查找流计数为1的槽位,并执行相同的操作,由此能够完整、准确获取到微突发流信息。附图说明19.图1为现有的基于tofino架构的p4交换机数据平面架构图。20.图2为本发明实施例提供的基于可编程交换机的网络微突发流检测方法示意图。21.图3为本发明实施例提供的布隆过滤器及可逆布隆查找表的结构示意图。22.图4为本发明实施例提供的流信息存储过程示意图。23.图5为本发明实施例提供的嵌入了可逆布隆查找表中内容的自定义数据包的包头示意图。24.图6为本发明实施例提供的数据解码示意图。25.图7为本发明实施例提供的微突发流检测方法的测试网络拓扑图。具体实施方式26.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。27.在本发明中,本发明及附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。28.为了解决在传统交换机上使用轮询计数器的检测方法无法检测到微突发流,而现有的基于可编程交换机的检测方法为提供微突发流信息,占用带宽较大的问题,本发明提供了基于可编程交换机的网络微突发流检测方法及相关设备,其整体思路在于:利用可编程交换机能够细粒度检测每个数据包的队列深度的特性,从各数据包的包头中提取数据包出队列时的队列深度,作为拥塞指标,实现细粒度的微突发流检测;对于微突发流,采用bf和iblt实现微突发流信息的轻量级存储,并通过定时镜像的方式以较小的带宽开销将所存储的微突发流信息转发至控制层面,在不影响交换机转发性能的情况下,提供微突发流信息。29.本发明所提供的微突发流检测方法,可适用于任意一种可编程交换机,不失一般性地,在以下实施例中,均以p4交换机为例进行说明。30.可编程交换机一般分为数据平面和控制平面,图1所示为现有的基于tofino架构的p4交换机的数据平面架构图,如图1所示,当数据包转发到出口流水线时,p4交换机在数据包头部向量(phv,packetheadervector)内附加出口固有元数据,tofino架构下包含出端口id,出队列时队列深度等相关性能数据。为便于描述,在以下实施例中,具体以图1所示的p4交换机为例进行说明。31.以下为实施例。32.实施例1:一种基于可编程交换机的网络微突发流检测方法,如图2所示,包括在可编程交换机的数据平面执行微突发流检测步骤、微突发流存储步骤以及微突发流传输步骤。以下针对各步骤进行具体说明。33.本实施例中,微突发流检测步骤在数据包进入可编程交换机后根据数据包中出队列时的队列深度判断数据包是否是微突发流数据包,对于微突发流数据包,会存储相应的流信息,该流信息即为微突发流信息,在后续步骤将转发到控制平面;相应地,本实施例设置了第一拥塞阈值,用于检测数据包是否是微突发流数据包,具体地,若数据包出队列时的队列深度大于第一拥塞阈值,说明该数据包在短时间内经历了网络拥塞,则判定其为微突发流数据包。34.本实施例中,为了为后续提供更多的微突发流信息,并保证后续解码的准确度,本实施例对于检测到的微突发流数据包,会进一步根据其出队列时的队列深度对数据包的拥塞程度进行等级划分;可选地,本实施例中,对于微突发流数据包,具体划分了两个拥塞等级,即中度拥塞和重度拥塞;中度拥塞数据包和重度拥塞数据包依据第二拥塞阈值判断。35.可选地,本实施例中,根据交换机最大排队时延确定两个阈值的具体取值;经过测试,tofino芯片下单个10g端口缓冲区最大为15.5mb左右,最大排队时延1550左右,直连p4交换机的终端平均rtt在80左右;基于此,设为最大队列深度,第一拥塞阈值和第二拥塞阈值分别为最大队列深度的0.05和0.2,数据包分类结果如表1所示。具体地,出队列时队列深度在0~0.05范围内的数据包为无拥塞数据包,不存储流信息;出队列时队列深度在0.05~0.2范围内的数据包为中度拥塞数据包,即时延至少增加一倍rtt,性能受到影响的数据包,需存储相应的流信息;出队列时队列深度在0.2~1.0范围内的数据包为重度拥塞数据包,此类数据包经历严重拥塞,交换机甚至产生丢包,也需要存储相应的流信息。36.基于以上微突发流检测步骤,本实施例基于数据包出队列时的队列深度实现了细粒度、准确的微突发流检测。基于以上微突发流检测步骤的检测结果,本实施例的微突发流存储步骤利用bf(bloomfilter,布隆过滤器)和iblt(invertiblebloomfilterlookuptable,可逆布隆查找表)设计并实现了微突发流的轻量级存储方案,在该方案中,多个微突发流的信息被压缩到同一个表项,并且,由于iblt能够在常数级时间复杂度内处理哈希冲突,因此,本实施例可以在几乎不影响交换机转发性能的情况下实现微突发流信息的存储。37.本实施中,布隆过滤器用于记录交换机中出现的流的信息,因此,基于布隆过滤器,可检测产生微突发流的数据包是否是新流从而决定是否需要对当前数据包的所有流信息进行存储;可逆布隆查找表则用于存储微突发流的信息,具体地,如图3所示,可逆布隆查找表中,各槽位存储的信息包括以下三个方面的信息:(1)flowxor:流id异或值,代表映射存储到该槽位的所有网络流id的异或值;流的id用于唯一表示一个流,本实施例中,具体使用五元组(源/目的ip,源/目的端口,传输层协议号)作为流的id;(2)flowcount:流计数,代表存储到该槽位所有不同网络流的流个数;(3)pktcount:包计数,代表存储到该槽位的所有数据包的个数。38.基于以上存储机制,对于一个微突发流数据包,本实施例会对其所属流的id进行散列,得到多个散列值,这多个散列值标识了bf中与当前流所对应的槽位,若各槽位的值均不为0,说明当前微突发流数据包并非流中的第一个数据包,因此,当前流的信息已经存储到了iblt中,只需要更新其对应槽位中的包计数器;否则,说明当前微突发流数据包是流中的第一个数据包,当前流的信息此前未进行存储,因此,需要将bf中的这些槽位置为1,同时将当前流的信息存储到iblt中。iblt的核心思想是固定哈希表大小,不处理哈希碰撞,而是主动“拥抱”碰撞,将待插入元素与槽位内已有数据相结合,实现常数级时间复杂度的数据插入过程。39.基于以上存储机制,本实施例中,微突发流存储步骤包括:利用布隆过滤器和可逆布隆查找表存储微突发流数据包中携带的流信息;如图4所示,对于任意一个微突发流数据包p,其所携带的流f信息的存储方式包括如下子步骤:(s1)对流f的id进行散列,得到布隆过滤器中与流f对应的槽位,若各槽位均不为0,则判定流f的信息已经存储,并转入步骤(s4);否则,转入步骤(s2);(s2)将布隆过滤器中与流f对应的槽位置为1;(s3)根据流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5):将槽位内的流id异或值更新为原流id异或值与流f的id进行异或运算后的结果;将槽位内的流计数加1;将槽位内的包计数加1;(s4)根据所述流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5):将槽位内的包计数加1;(s5)微突发流数据包p所携带的流f的信息存储结束。40.考虑到本实施例的微突发流检测步骤中,对于微突发流数据包进行了更为细致的分类,同时为避免压缩到同一个表项中的微突发流过多,本实施例的微突发流存储步骤中,对于每一个拥塞等级,会分别创建对应的布隆过滤器和可逆布隆查找表,用于存储对应拥塞等级的微突发流数据包所属流的信息,每一个拥塞等级下的微突发流的信息存储方式相同,具体可参考以上步骤(s1)~(s5)的描述。41.进行微突发流信息存储时,散列值哈希函数的选取有多种方式,可以根据布隆过滤器的长度和可编程交换机中所支持的哈希函数进行选取,并且哈希函数的个数可以根据可编程交换机的内存限制和实际需求自由选择;可选地,本实例选取了crc32、crc16作为微突发流的哈希函数,这两个散列值哈希函数分别用符号记为h1()和h2();图4中,h1(f1)和h2(f1)分别表示利用这两个哈希函数对流f1的id进行计算得到的散列值,h1(f2)和h2(f2)分别表示利用这两个哈希函数对流f2的id进行计算得到的散列值。42.基于以上微突发流存储步骤,本实施例实现了微突发流信息的轻量级存储,在此基础上,本实施例的微突发流传输步骤,用于在不影响交换机转发功能的情况下,将微突发流信息转发到控制平面,以供后续的分析处理。具体地,本实施例中,微突发流传输步骤具体包括:按照原始转发路径转发进入可编程交换机的各数据包;每经过预设的时间间隔后,选取指定数量的数据包进行镜像,得到自定义数据包,将当前可逆布隆查找表中的内容嵌入自定义数据包的包头后,将自定义数据包传输至可编程交换机的控制平面。43.本实施例的微突发流检测步骤中,将当前可逆布隆查找表中的内容嵌入各自定义数据包的包头,具体包括:创建遥测头;如图5所示,遥测头包括:自定义数据包原始的协议号,自定义数据包出队列时的队列深度,iblt位图,以及iblt数据;将自定义数据包中原始的协议号替换为自定义协议号,剔除载荷数据,并将遥测头插入自定义数据包的包头;将可逆布隆查找表中各槽位清零;其中,iblt位图用于标识可逆布隆查找表中非零槽位的位置,iblt数据用于记录可逆布隆查找表中非零槽位的内容以及最后一个槽位的内容;自定义协议号用于指示该自定义数据包为携带有微突发流信息的数据包;本实施例中,进行镜像时,所选取的数据包的数量具体与iblt的长度相同;对于选取的数据包,原始的协议号为ipv4;容易理解的是,自定义协议号不能与现有的协议号相冲突,可选地,本实施例中,该自定义的协议号具体为0xfa。44.上述微突发流传输步骤,利用到达出口流水线的镜像数据包遍历iblt内每一槽位,同时只将iblt中的非零数据嵌入包头,并在数据包包头记录iblt序号和槽位所包含的微突发流信息后将其镜像传输至控制平面,与此同时,将iblt内该槽位清零。本实施例中,iblt最后一个槽位内的数据无论是否为零都镜像至控制平面,以标志传输过程结束。45.该转发策略可视为一种定时镜像的策略,由于转发操作并非持续发生,且iblt中仅非零数据需要被转发,此外,iblt中存储的微突发流信息本身经过了压缩,因此,每次需要转发的数据量较小,相应地,转发嵌入有微突发流信息的数据包所占用的带宽开销极小,不会影响交换机对于正常数据包的转发功能。因此,本实施例可在不影响交换机转发功能的情况下,提供微突发流信息。46.在以上微突发流转发步骤的基础上,本实施例可在控制平面对数据平面所转发的嵌入有微突发流信息的数据包进行解析,以获取微突发流信息。相关步骤具体通过控制平面执行的解码步骤。47.如图6所示,对于任意一个自定义数据包p',其解码过程包括如下子步骤:(t1)从自定义数据包p'中解析得到iblt位图和iblt数据后,重建得到可逆布隆查找表iblt';由于iblt位图记录了非零槽位的位置,iblt数据记录了非零槽位内的内容,将非零槽位内的内容填充到对应位置,即可重建得到iblt';(t2)获取可逆布隆查找表iblt'中流计数为1的槽位,遍历这些槽位,对于遍历到的每一个槽位,提取其中的流id异或值,作为一个微突发流f'的流id,记为idf',并提取当前槽位内的包计数,得到微突发流f'所包含的包数量cf',对微突发流f'的id进行散列,得到微突发流f'对应的槽位,将各槽位内的流id异或值与idf'进行异或,并将槽位内的流计数减去1、包计数减去cf';槽位的流计数为1,说明该槽位仅记录了一个微突发流的信息,可从该槽位内容中提取该微突发流的id和数据包数量,基于该微突发流的散列值可获得iblt'中对应的槽位,将各槽位内的流id异或值与idf'进行异或,并将槽位内的流计数减去1、包计数减去cf',可完成单个流信息的解码和消去;(t3)重复执行步骤(t2),直至可逆布隆查找表iblt'中不存在流计数为1的槽位,自定义数据包p'的解码过程结束。48.基于解码步骤,本实施例能够在控制平面解析得到完整的微突发流信息,便于后续的进一步分析利用。49.总体而言,本实施例基于数据包包头内的队列深度信息完成微突发流数据包的检测,实现了细粒度的微突发流检测,基于布隆过滤器和可逆布隆查找表实现了对微突发流信息的轻量级存储,在此基础上,通过定时镜像的转发方式,以极低的带宽开销将微突发流信息的转发到了控制平面,在不影响交换机数据包转发功能的情况下,提供了微突发流信息。50.为了本实施例所提供的微突发流检测方法在交换机中的实际部署效果,在基于tofino架构的p4交换机tofinox321p-t中对提出的基于p4的数据中心网络中的微突发流检测机制进行部署实现,同时使用了三台服务器和p4交换机相连接,搭建了如图7所示的网络拓扑。在服务器1中采用dpdk发送10gbps的背景流量,服务器2使用tcpreplay间接性满速重放微突发流数据集,其速率可达到2.5gbps,p4交换机中的端口速率设置为10gbps,服务器1和服务器2的数据均经过p4交换机发往服务器3,从而能够在p4交换机内形成微突发流量。p4交换机自身的管理cpu作为控制器,接收镜像报文并解码获取微突发流信息。其获取的部分微突发流信息如表2所示,表2中,source_ip、source_port、dst_ip和dst_port分别表示五元组中的源ip、源端口、目的ip和目的端口,count表示流中所包含的数据包个数。51.表2所示结果显示,本实施例可有效检测到微突发流,并获取到微突发流的id和数据包数量信息。52.实施例2:一种网络微突发流检测器,包括:计算机可读存储介质,用于存储计算机程序;以及处理器,用于读取计算机可读存储介质中存储的计算机程序,执行上述实施例1提供的基于可编程交换机的网络微突发流检测方法。53.实施例3:一种可编程交换机,该可编程交换机搭载有上述实施例2提供的网络微突发流检测器。54.本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
技术特征:
1.一种基于可编程交换机的网络微突发流检测方法,其特征在于,包括在所述可编程交换机的数据平面执行的以下步骤:微突发流检测步骤:在数据包进入可编程交换机后,从其包头中提取数据包出队列时的队列深度,若大于预设的第一拥塞阈值,则判定其为微突发流数据包;微突发流存储步骤:利用布隆过滤器和可逆布隆查找表存储微突发流数据包中携带的流信息;所述布隆过滤器和所述可逆布隆查找表长度相等,且初始值均为0;所述可逆布隆查找表中,各槽位存储的信息包括:对应的流的流id异或值、流计数以及包计数;对于任意一个微突发流数据包p,其所携带的流f信息的存储方式包括:利用布隆过滤器判断流f的信息是否已经存储,若是,则确定可逆布隆查找表中与流f对应的槽位,并更新这些槽位中的包计数;否则,确定可逆布隆查找表中与流f对应的槽位,更新这些槽位的流id异或值、流计数和包计数,并将所述布隆过滤器中与流f对应的槽位置为1;以及微突发流传输步骤:按照原始转发路径转发进入可编程交换机的各数据包;每经过预设的时间间隔后,选取指定数量的数据包进行镜像,得到自定义数据包,将当前所述可逆布隆查找表中的内容嵌入自定义数据包的包头后,将自定义数据包包头传输至所述可编程交换机的控制平面。2.如权利要求1所述的基于可编程交换机的网络微突发流检测方法,其特征在于,所述微突发流存储步骤中,对于任意一个微突发流数据包p,其所携带的流f信息的存储方式包括如下子步骤:(s1)对所述流f的id进行散列,得到所述布隆过滤器中与所述流f对应的槽位,若各槽位均不为0,则判定所述流f的信息已经存储,并转入步骤(s4);否则,转入步骤(s2);(s2)将所述布隆过滤器中与所述流f对应的槽位置为1;(s3)根据所述流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5):将槽位内的流id异或值更新为原流id异或值与流f的id进行异或运算后的结果;将槽位内的流计数加1;将槽位内的包计数加1;(s4)根据所述流f的id的散列结果,确定可逆布隆查找表中与流f对应的槽位,对于每一个槽位,按照如下方式进行更新后转入步骤(s5):将槽位内的包计数加1;(s5)所述微突发流数据包p所携带的流f的信息存储结束。3.如权利要求2所述的基于可编程交换机的网络微突发流检测方法,其特征在于,所述微突发流传输步骤中,将当前所述可逆布隆查找表中的内容嵌入自定义数据包的包头,包括:创建遥测头;所述遥测头包括:自定义数据包原始的协议号,自定义数据包出队列时的队列深度,iblt位图,以及iblt数据;将自定义数据包中原始的协议号替换为自定义协议号,剔除载荷数据,并将所述遥测头插入自定义数据包的包头;将所述可逆布隆查找表中各槽位清零;
其中,所述iblt位图用于标识所述可逆布隆查找表中非零槽位的位置,所述iblt数据用于记录所述可逆布隆查找表中非零槽位的内容以及最后一个槽位的内容;所述自定义协议号用于指示该自定义数据包为携带有微突发流信息的数据包。4.如权利要求3所述的基于可编程交换机的网络微突发流检测方法,其特征在于,还包括:在所述可编程交换机的控制平面执行的解码步骤,用于从来自数据平面的自定义数据包中解码出微突发流信息;对于任意一个自定义数据包p',其解码过程包括如下子步骤:(t1)从所述自定义数据包p'中解析得到iblt位图和iblt数据后,重建得到可逆布隆查找表iblt';(t2)获取可逆布隆查找表iblt'中流计数为1的槽位,遍历这些槽位,对于遍历到的每一个槽位,提取其中的流id异或值,作为一个微突发流f'的流id,记为id
f'
,并提取当前槽位内的包计数,得到微突发流f'所包含的包数量c
f'
,对微突发流f'的id进行散列,得到微突发流f'对应的槽位,将各槽位内的流id异或值与id
f'
进行异或,并将槽位内的流计数减去1、包计数减去c
f'
;(t3)重复执行步骤(t2),直至可逆布隆查找表iblt'中不存在流计数为1的槽位,自定义数据包p'的解码过程结束。5.如权利要求1~4任一项所述的基于可编程交换机的网络微突发流检测方法,其特征在于,所述微突发流检测步骤还包括:对于微突发流数据包,根据其出队列时的队列深度对数据包的拥塞程度进行等级划分;并且,所述微突发流存储步骤中,针对每一个拥塞等级,分别创建对应的布隆过滤器和可逆布隆查找表,用于存储对应拥塞等级的微突发流数据包所属流的信息。6.如权利要求5所述的基于可编程交换机的网络微突发流检测方法,其特征在于,对于微突发流数据包,根据其出队列时的队列深度对数据包的拥塞程度进行等级划分,方式如下:若微突发流数据包出队列时的队列深度,则判断该微突发流数据包所属的拥塞等级为中度拥塞;若,则判断该微突发流数据包所属的拥塞等级为高度拥塞;其中,为所述可编程交换机的最大队列深度;为所述第一拥塞阈值,为预设的第二拥塞阈值,。7.如权利要求6所述的基于可编程交换机的网络微突发流检测方法,其特征在于,,。8.一种网络微突发流检测器,其特征在于,包括:计算机可读存储介质,用于存储计算机程序;以及处理器,用于读取所述计算机可读存储介质中存储的计算机程序,执行权利要求1~7任一项所述的基于可编程交换机的网络微突发流检测方法。9.一种可编程交换机,其特征在于,搭载有权利要求8所述的网络微突发流检测器。
10.如权利要求9所述的可编程交换机,其特征在于,所述可编程交换机为p4交换机。
技术总结
本发明公开了基于可编程交换机的网络微突发流检测方法及相关设备,属于网络安全领域,包括:在数据包进入可编程交换机后,从包头提取出队列时的队列深度,若大于预设阈值,则判定其为微突发流数据包;利用BF和IBLT存储微突发流数据包中携带的流信息,BF和IBLT等长且初始值均为0;IBLT中,各槽位存储的信息包括:对应流的流id异或值、流计数以及包计数;按原始转发路径转发进入交换机的各数据包;每经过预设的时间间隔后,选取指定数量的数据包进行镜像,将当前IBLT中的内容嵌入镜像所得数据包的包头后,将这些数据包包头传输至控制平面。本发明能够在不影响可编程交换机的转发性能的情况下,实现网络微突发流的检测并提供微突发流信息。发流信息。发流信息。
技术研发人员:于俊清 王佳宇 李冬 谢一丁 高源
受保护的技术使用者:华中科技大学
技术研发日:2023.07.12
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
