CN115967673A - 一种基于p4可编程交换机的大流五元组的查询方法 - Google Patents
一种基于p4可编程交换机的大流五元组的查询方法 Download PDFInfo
- Publication number
- CN115967673A CN115967673A CN202211207305.0A CN202211207305A CN115967673A CN 115967673 A CN115967673 A CN 115967673A CN 202211207305 A CN202211207305 A CN 202211207305A CN 115967673 A CN115967673 A CN 115967673A
- Authority
- CN
- China
- Prior art keywords
- bucket
- count
- flow
- value
- quintuple
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及网络测量的技术领域,特别是涉及一种基于P4可编程交换机的大流五元组的查询方法,其将网络流量测量的数据总结卸载至网内的可编程交换机完成,以充分发挥交换节点资源,实现网内流量决策,提升网络整体性能;首先将网络流量数据包进行过滤,过滤条件包括但不限于网络层协议和传输层协议,然后将其哈希映射到sketch中每个寄存器的一个存储桶中进行处理,并将满足条件的大流数据包进行重新提交操作,重新提交后在相应存储桶中得出计数并将计数和五元组信息进行存储,最后通过控制平面读取大流的五元组信息和流量大小。
Description
技术领域
本发明涉及网络测量的技术领域,特别是涉及一种基于P4可编程交换机的大流五元组的查询方法。
背景技术
网络管理员通常需要网络监控等手段进行故障排查、流量控制、负载均衡等。在大数据的时代背景下,网络流量日益增加,全球2020年3月的流量增长了25%-35%。这为终端处理报文并得出概括性的统计信息带来了巨大的挑战,因为这可能导致终端资源消耗更多,处理时间更久。
Sketch是一种基于概率数据结构的算法,可以通过极小的资源占用和较高的精确度实现网络流量测量。在网络监控中,通常sketch的做法是,将网络流量数据包的源地址、目的地址、传输层协议、源端口号、目的端口号作为五元组作为输入,通过哈希函数得出哈希值,并将其映射至数组中的一个桶中进行计数。传统的基于终端的统计方法,对终端的CPU、内存和存储等宝贵资源带来了大量的消耗,久而久之可能对终端性能带来不可逆的磨损。而基于P4的可编程交换机非常适合部署这种算法,因为P4语言具有可重配置性、协议无关性、平台无关性等优势,在无需更换硬件的情况下可以更改交换机的处理逻辑,而交换机作为网内的转发节点,拥有着高线速的巨大优势,这无疑成为了P4语言部署的最佳平台。因此,在基于P4的可编程交换机中以高线速对报文进行处理和统计,有助于帮助终端节点省下宝贵的时间和资源。综上,将流量监控从终端卸载到网内的可编程交换机,对高效、准确、快速的网络测量具有重要意义。
发明内容
为解决上述技术问题,本发明提供一种将网络流量测量的数据总结卸载至网内的可编程交换机完成,以充分发挥交换节点资源,实现网内流量决策,提升网络整体性能的一种基于P4可编程交换机的大流五元组的查询方法。
本发明的一种基于P4可编程交换机的大流五元组的查询方法,包括流量过滤:通过可编程交换机的解析器,对不满足条件的流量进行过滤,条件包括但不限于网络层协议和传输层协议,从而对满足条件的流量进行测量,重新提交后的报文,需要额外解析元数据。
本发明的一种基于P4可编程交换机的大流五元组的查询方法,更改桶信息:将每个数据包表示为p,取得32位哈希值h(p)后将其切片为16位的哈希值h(p)1、h(p)2、h(p)3用于确定映射至不同数组的存储桶编号。每个桶B有两部分信息:当前存储的流量五元组哈希值B.id以及计数B.value,并且二者均被初始化为0。当数据包到达桶时,根据以下四种不同的情况更改桶的信息:
(1)桶存储的哈希值B.id是当前数据包的哈希值h(p),且桶的计数大于等于一个预定义的阈值TH,则将桶的计数加1,并返回值为1以表示当前数据包所属流量为大流;
(2)桶存储的哈希值B.id是当前数据包的哈希值h(p),但桶的计数小于预定义的阈值TH,则将桶的计数加1,并返回值为0;
(3)桶存储的哈希值B.id不是当前数据包的哈希值h(p),且桶的计数大于等于一个预定义的阈值TH,则将桶的计数减1,并返回值为0;
(4)桶存储的哈希值B.id不是当前数据包的哈希值h(p),且桶的计数小于预定义的阈值TH,则将桶的计数减1的同时,更改桶存储的哈希值B.ID为当前数据包的哈希值h(e),并返回值为0。
本发明的一种基于P4可编程交换机的大流五元组的查询方法,还包括重新提交:在不同数组的桶的返回值中,根据情况,只要有一个为1,则对数据包进行环回操作,将数据包重新提交至解析器;
重新提交后,可以提取桶的计数,将返回值为1的桶作为该桶记录的该数据包所属五元组的计数,将返回值为0的桶的计数视为0,并从多个桶中得出的计数进行比较,得出最大值作为该五元组最终的计数。
本发明的一种基于P4可编程交换机的大流五元组的查询方法,还包括引入一个布隆过滤器以判断某个大流五元组是否为首次被记录;如果该五元组首次被确定为大流,则给出该流被确定为大流的顺序,并记录该流量的五元组信息,分别为源IP地址、目的IP地址、传输层协议、源端口号、目的端口号;如果不是首次被记录,则读取被确定为大流的顺序;
将大流每个数据包得出的最终计数在相应顺序的计数寄存器中判断,取较大者作为该寄存器存储的值。
本发明的一种基于P4可编程交换机的大流五元组的查询方法,还包括通过控制平面可以实时访问数据平面寄存器的存储信息,并实时返回输出结果,使网络管理员得出直观的大流信息,从而方便网络管理员进行下一步操作。
附图说明
图1是本发明实施的流程图;
图2是本发明的存储桶处理算法示意图;
图3是本发明的解析器处理流程图;
图4是本发明的大流信息收集器示意图;
图5是本发明的控制平面分析结果示意图。
具体实施方式
为了使本发明的技术内容更加清楚,以下将详细举出具体实例并配合附图进行说明。应当理解,此处描述的具体实例仅用以解释本发明,并不用于限定本发明。
图1为本发明基于P4可编程交换机的大流五元组的查询方法的流程图,包括以下步骤:
(1)流量过滤:数据包经过可编程交换机管道处理之前,需要经过解析器以提取首部字段。在解析器中设置过滤条件,包括但不限于网络层协议限定为IPv4、IPv6,传输层协议限定为TCP、UDP等,将不满足过滤条件的数据包进行丢弃处理。
(2)更改桶信息:将每个数据包表示为p,根据数据包的五元组信息通过哈希函数取得32位哈希值h(p)后,将其切片为h(p)1=h(p)[31:16]、h(p)2=h(p)[23:8]、h(p)3=h(p)[15:0]用于确定映射至不同数组的存储桶的编号。每个桶B有两部分信息:当前存储的流量五元组哈希值B.id以及计数B.value,并且二者均被初始化为0。当数据包到达桶时,根据以下四种不同的情况更改桶的信息:
(a)桶存储的哈希值B.id是当前数据包的哈希值h(p),且桶的计数大于等于一个预定义的阈值TH,则将桶的计数加1,并返回值为1以表示当前数据包所属流量为大流;
(b)桶存储的哈希值B.id是当前数据包的哈希值h(p),但桶的计数小于预定义的阈值TH,则将桶的计数加1,并返回值为0;
(c)桶存储的哈希值B.id不是当前数据包的哈希值h(p),且桶的计数大于等于一个预定义的阈值TH,则将桶的计数减1,并返回值为0;
(d)桶存储的哈希值B.id不是当前数据包的哈希值h(p),且桶的计数小于预定义的阈值TH,则将桶的计数减1的同时,更改桶存储的键B.id为当前数据包的哈希值h(p),并返回值为0。
(3)重新提交:由于网络流量分布满足大象流较少且老鼠流较多的特点,导致难免存在哈希碰撞的问题,故分配至不同数组的桶的键值存在差异。因此,在不同数组的桶的返回值中,根据情况,只要有一个为1,则对数据包进行环回操作,即将数据包重新提交至解析器。
(4)读取桶计数:重新提交后,可以提取桶的计数,将返回值为1的桶作为该桶记录的该数据包所属五元组的计数,将返回值为0的桶的计数视为0,并从多个桶中得出的计数进行比较,得出最大值作为该五元组最终的计数。
(5)写入数据:引入一个布隆过滤器以判断某个大流是否为首次被记录。如果首次被判断为大流,则给出该流被确定为大流的顺序,并记录该流量的五元组信息,分别为源IP地址、目的IP地址、传输层协议、源端口号、目的端口号。将大流每次到来的数据包得出的最终计数在相应顺序的寄存器中判断,取较大者作为该寄存器存储的值。
(6)管理数据:通过控制平面可以实时访问数据平面寄存器的存储信息,并实时返回输出结果,使网络管理员得出直观的大流五元组、大流计数和流量基数等信息,从而方便网络管理员进行访问控制列表、转发路径管理等下一步操作。
图2是本发明的存储桶处理算法示意图。每个数据包p经过解析器提取字段后,会被送至管道进行下一步处理。首先,哈希函数将数据包的五元组作为输入,可以得到代表一个五元组的32位哈希值h(p),并通过切片的方式得出不同数组中被映射的桶的编号,分别为h(p)1=h(p)[31:16]、h(p)2=h(p)[23:8]、h(p)3=h(p)[15:0],然后将其映射至每个数组中的对应存储桶。
在P4可编程交换机中,存储桶通过寄存器实现。目前,寄存器的限制较多,其中一个限制为,在一个寄存器动作中,至多进行两次比较判断。本发明提出了两个分别针对键和值的判断条件,即判断存储桶键和数据包的哈希值是否相同,以及存储桶的值与预定义阈值的比较,故存在四种不同的情况,并根据以下四种不同情况确定下一步操作:
(1)存储桶的键B.id与当前处理的数据包的哈希值h(p)相同,且当前存储桶的值B.value不小于一个预先定义的阈值TH,则鉴定当前数据包属于一个大流,并将存储桶的计数加一后,返回值为1代表将当前数据包重新提交至解析器;
(2)存储桶的键B.id与当前处理的数据包的哈希值h(p)相同,且当前存储桶的值B.value小于一个预先定义的阈值TH,则其不是大流,只将存储桶的计数加一,返回值为0代表不将当前数据包重新提交至解析器;
(3)存储桶的键B.id与当前处理的数据包的哈希值h(p)不同,且当前存储桶的值B.value不小于一个预先定义的阈值TH,则可以认为这里小流与大流之间发生了哈希碰撞,故将存储桶的计数饱和减一,这里饱和减一的定义为:若存储桶的计数大于零,则对存储桶的计数进行减一,否则不做处理的操作;
(4)存储桶的键B.id与当前处理的数据包的哈希值h(p)不同,且当前存储桶的值小于一个预先定义的阈值TH,则可以认为这里小流与小流之间发生了哈希碰撞,因为本发明的重点研究对象是大流,故将存储桶的计数饱和减一的同时,也将存储桶的键更改为当前数据包的哈希值。
关于情况(1)需要重新提交,其原因为P4寄存器的另一限制,即数据包每次经过管道的一个寄存器时,至多执行一次该寄存器的一个寄存器动作,这导致数据包只经过一次管道的情况下,无法在存储桶算法处理完成后再得出计数,因为这对同一寄存器执行了两次寄存器动作。如果在存储桶算法处理后将返回值设为寄存器计数,则无法分辨是否发生了哈希碰撞,故将读取寄存器计数的逻辑实现放在重新提交后。
在某五元组首次访问时,其适用情形为情况(4),因为存储桶的键和值均为0,而该五元组也恰巧为0的概率为1/(2^32),故可以认为五元组的哈希值与存储桶的键必不相同。对于大流而言,在不发生哈希碰撞的情况下,大流改变存储桶键为其五元组哈希值的代价仅仅是一个数据包,可以忽略不计;而对于小流而言,由于本发明的目的在于查询大流,小流之间发生哈希碰撞导致存储桶的键被更改,这是可以接受的,即使这牺牲了小流测量的精确度。
如果多个数组对应存储桶的返回值均为0,则该数据包所属流是小流,不对其进行后续操作。否则,即只要有一个存储桶的返回值为1,则将其重新提交至解析器进行大流的统计处理。
图3是本发明的解析器处理流程图。解析器用于将报文中不同层的首部字段进行提取。
(1)开始解析:首先根据P4可编程交换机对数据包添加的固有元数据来判断报文是否为重新提交的报文:若为重新提交的报文,则提取哪些数组需要输出桶计数的信息,然后初始化用户自定义元数据,否则直接初始化用户自定义元数据;
(2)初始化用户自定义元数据:元数据包含管道中处理报文所需临时变量等信息,将用户自定义元数据初始化,即将用户自定义元数据赋值为0;
(3)解析数据链路层首部:将以太网首部提取至头堆栈中,以太网首部包含源MAC地址、目的MAC地址以及类型等字段,并根据类型字段来判断如何解析网络层协议;
(4)解析网络层首部:网络层首部包含源IP地址、目的IP地址和传输层协议等信息。根据数据链路层解析的结果,将IPv4首部或者IPv6首部提取至头堆栈中。若为IPv4首部,则根据其协议字段来判断如何解析传输层协议;若为IPv6首部,则根据其下一首部字段来判断如何解析传输层协议;否则,将该数据包丢弃;
(5)解析传输层首部:传输层首部包含源端口和目的端口等信息。根据网络层解析的结果,若为TCP首部,则将TCP首部提取至头堆栈中;若为UDP首部,则将UDP首部提取至头堆栈中;否则端口信息全部置零。解析结束。
图4是本发明的大流信息收集器示意图。重新提交后,可在解析器提取出关键信息,即哪些数组对应的存储桶鉴定该数据包p属于大流。
再次进入管道后,对于重新提交前返回值为1的存储桶,得出的计数即为存储桶当前的计数;而对于重新提交前返回值为0的存储桶,得出的计数为0。对不同数组对应存储桶的计数相比较,即可得出最大值p.max。
随后,数据包经过布隆过滤器,布隆过滤器用于判断大流信息收集器是否记录过某个大流数据包的五元组。在P4可编程交换机中,布隆过滤器由寄存器实现,其存储的数据类型是1比特,并且初始状态设为0。若某五元组首次访问该布隆过滤器,则输出当前状态0的反状态值1以表示该大流五元组首次被记录,并将该布隆过滤器的状态设为1;而该大流五元组再次访问布隆过滤器时,输出当前状态1的反状态值0以表示该五元组曾被记录过,并将该布隆过滤器的状态设为1。
若某大流五元组为首次访问,则记录该五元组被判定为大流的顺序,作为大流五元组信息存储的编号,根据编号索引,使用五个寄存器分别记录该五元组信息:源IP地址、目的IP地址、传输层协议、源端口号以及目的端口号;若非首次访问,则读取其被判定为大流的顺序。
最后,根据编号索引,使用一个寄存器用于存储该五元组计算过的计数最大值,用于更新该五元组的计数。
图5是本发明的控制平面分析结果示意图。P4可编程交换机运行程序时,经过该交换机的数据包都会由数据平面的程序处理。网络管理员可以随时在控制平面得到数据并输出大流的测量结果。
表头从左到右分别表示大流五元组被判断为大流的顺序、大流的源IP地址、大流的目的IP地址、大流的传输层协议、大流的源端口、大流的目的端口和大流的数据包计数。以数据部分的第一行为例,该行表示源IP地址为203.85.126.61、目的IP地址为126.23.178.112、传输层协议为UDP协议、源端口号为40000、目的端口号为56747的五元组是第32个被确定为大流的五元组,且该五元组的数据包计数为140个。
通过控制平面收集数据,网络管理员可以收集到基数(cardinality)、大流数量(heavy hitter)、大流数据包个数(flow size)以及数据包个数从多到少排列的前k个流(top-k)等信息,并根据这些信息采取下一步决策,如修改访问控制列表(ACL)和转发路径等。
Claims (5)
1.一种基于P4可编程交换机的大流五元组的查询方法,其特征在于,包括流量过滤:通过可编程交换机的解析器,对不满足条件的流量进行过滤,条件包括但不限于网络层协议和传输层协议,从而对满足条件的流量进行测量,重新提交后的报文,需要额外解析元数据。
2.如权利要求1所述的一种基于P4可编程交换机的大流五元组的查询方法,其特征在于,还包括更改桶信息:将每个数据包表示为p,取得32位哈希值h(p)后将其切片为16位的哈希值h(p)1、h(p)2、h(p)3用于确定映射至不同数组的存储桶编号。每个桶B有两部分信息:当前存储的流量五元组哈希值B.id以及计数B.value,并且二者均被初始化为0。当数据包到达桶时,根据以下四种不同的情况更改桶的信息:
(1)桶存储的哈希值B.id是当前数据包的哈希值h(p),且桶的计数大于等于一个预定义的阈值TH,则将桶的计数加1,并返回值为1以表示当前数据包所属流量为大流;
(2)桶存储的哈希值B.id是当前数据包的哈希值h(p),但桶的计数小于预定义的阈值TH,则将桶的计数加1,并返回值为0;
(3)桶存储的哈希值B.id不是当前数据包的哈希值h(p),且桶的计数大于等于一个预定义的阈值TH,则将桶的计数减1,并返回值为0;
(4)桶存储的哈希值B.id不是当前数据包的哈希值h(p),且桶的计数小于预定义的阈值TH,则将桶的计数减1的同时,更改桶存储的哈希值B.ID为当前数据包的哈希值h(e),并返回值为0。
3.如权利要求2所述的一种基于P4可编程交换机的大流五元组的查询方法,其特征在于,还包括重新提交:在不同数组的桶的返回值中,根据情况,只要有一个为1,则对数据包进行环回操作,将数据包重新提交至解析器;
重新提交后,可以提取桶的计数,将返回值为1的桶作为该桶记录的该数据包所属五元组的计数,将返回值为0的桶的计数视为0,并从多个桶中得出的计数进行比较,得出最大值作为该五元组最终的计数。
4.如权利要求3所述的一种基于P4可编程交换机的大流五元组的查询方法,其特征在于,还包括引入一个布隆过滤器以判断某个大流五元组是否为首次被记录;如果该五元组首次被确定为大流,则给出该流被确定为大流的顺序,并记录该流量的五元组信息,分别为源IP地址、目的IP地址、传输层协议、源端口号、目的端口号;如果不是首次被记录,则读取被确定为大流的顺序;
将大流每个数据包得出的最终计数在相应顺序的计数寄存器中判断,取较大者作为该寄存器存储的值。
5.如权利要求4所述的一种基于P4可编程交换机的大流五元组的查询方法,其特征在于,还包括通过控制平面可以实时访问数据平面寄存器的存储信息,并实时返回输出结果,使网络管理员得出直观的大流信息,从而方便网络管理员进行下一步操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211207305.0A CN115967673A (zh) | 2022-09-30 | 2022-09-30 | 一种基于p4可编程交换机的大流五元组的查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211207305.0A CN115967673A (zh) | 2022-09-30 | 2022-09-30 | 一种基于p4可编程交换机的大流五元组的查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115967673A true CN115967673A (zh) | 2023-04-14 |
Family
ID=87353281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211207305.0A Pending CN115967673A (zh) | 2022-09-30 | 2022-09-30 | 一种基于p4可编程交换机的大流五元组的查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115967673A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582507A (zh) * | 2023-07-12 | 2023-08-11 | 华中科技大学 | 基于可编程交换机的网络微突发流检测方法及相关设备 |
-
2022
- 2022-09-30 CN CN202211207305.0A patent/CN115967673A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116582507A (zh) * | 2023-07-12 | 2023-08-11 | 华中科技大学 | 基于可编程交换机的网络微突发流检测方法及相关设备 |
CN116582507B (zh) * | 2023-07-12 | 2023-10-03 | 华中科技大学 | 基于可编程交换机的网络微突发流检测方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109921996B (zh) | 一种高性能的OpenFlow虚拟流表查找方法 | |
KR101409921B1 (ko) | 스위치 asic 내에 라인-레이트 애플리케이션 인식을 통합하기 위한 시스템 및 방법 | |
Baboescu et al. | Scalable packet classification | |
EP1788490B1 (en) | Method and apparatus for monitoring traffic in a network | |
US7787442B2 (en) | Communication statistic information collection apparatus | |
US8578024B1 (en) | Network application signatures for binary protocols | |
US10778588B1 (en) | Load balancing for multipath groups routed flows by re-associating routes to multipath groups | |
US20070171824A1 (en) | Sampling rate-limited traffic | |
EP3905622A1 (en) | Botnet detection method and system, and storage medium | |
US9305265B2 (en) | Method and system for probabilistic processing of data using a bit matrix, tuples, and hash values | |
KR20090054570A (ko) | 패킷 분류 장치 및 방법 | |
CN113328985B (zh) | 一种被动物联网设备识别方法、系统、介质及设备 | |
US10069797B2 (en) | 10Gbps line rate stream to disk with fast retrieval (metadata) and network statistics | |
CN115967673A (zh) | 一种基于p4可编程交换机的大流五元组的查询方法 | |
US7554980B1 (en) | Packet classification using relevance scoring | |
CN111970211A (zh) | 一种基于ipfix的大象流处理方法及装置 | |
CN116055362A (zh) | 基于时间窗口的两级哈希-Sketch网络流量测量方法 | |
Scherrer et al. | Low-rate overuse flow tracer (loft): An efficient and scalable algorithm for detecting overuse flows | |
WO2006130840A2 (en) | System and method for data streaming | |
KR100608541B1 (ko) | 샘플링과 시그너쳐 검색 기능을 구비한 인터넷 프로토콜패킷 수집 장치 및 그 방법 | |
CN111200542B (zh) | 一种基于确定性替换策略的网络流量管理方法及系统 | |
Li et al. | Scalable packet classification using bit vector aggregating and folding | |
CN114095265B (zh) | Icmp隐蔽隧道检测方法、装置及计算机设备 | |
CN113992364B (zh) | 一种网络数据包阻断优化方法以及系统 | |
CN114615200A (zh) | 一种基于acl的大象流检测方法及装置 |
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 |