CN113595822B - 一种数据包管理方法、系统和装置 - Google Patents
一种数据包管理方法、系统和装置 Download PDFInfo
- Publication number
- CN113595822B CN113595822B CN202110843163.6A CN202110843163A CN113595822B CN 113595822 B CN113595822 B CN 113595822B CN 202110843163 A CN202110843163 A CN 202110843163A CN 113595822 B CN113595822 B CN 113595822B
- Authority
- CN
- China
- Prior art keywords
- flow table
- address
- cache
- target
- destination
- 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.)
- Active
Links
- 238000007726 management method Methods 0.000 title claims abstract description 55
- 238000012545 processing Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims abstract description 44
- 230000032683 aging Effects 0.000 claims description 33
- 238000004422 calculation algorithm Methods 0.000 claims description 26
- 238000012986 modification Methods 0.000 claims description 17
- 230000004048 modification Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 13
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000002441 reversible effect Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000002457 bidirectional effect Effects 0.000 description 5
- 241000406668 Loxodonta cyclotis Species 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000002431 foraging effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Environmental & Geological Engineering (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种数据包管理方法、系统和装置,所述方法包括:对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。
Description
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种数据包管理方法、系统和装置。
背景技术
目前,用户发送内存访问命令访问内存中的用户数据,从发送内存访问命令到内存将访问命令反馈至用户数据,其中有一定的时间延时,而且该时间延时不固定。若同一条数据流的两个报文之间的时间间隔小于内存的访问延时,此时第二个报文获取到的流量信息并不是第一个报文更新之后的数据,因此会出现流量信息不准确的问题。若第二个报文等第一个报文更新之后再去访问内存,会降低处理效率,从而导致网络设备的处理性能较低。
发明内容
本发明的一个目的在于提供一种数据包管理方法,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。本发明的另一个目的在于提供一种数据包管理系统。本发明的再一个目的在于提供一种数据包管理装置。本发明的还一个目的在于提供一种计算机可读介质。本发明的还一个目的在于提供一种计算机设备。
为了达到以上目的,本发明一方面公开了一种数据包管理方法,包括:
对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;
若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;
若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;
若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新。
优选的,数据包消息包括报文关键值,缓存流表中包括多条流表项,每条流表项对应一个缓存哈希值;
对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果,包括:
对报文关键值进行哈希计算,得到报文哈希值;
将报文哈希值与缓存哈希值进行匹配;
若存在与报文哈希值匹配的目标缓存哈希值,将目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括目标缓存流表项的第一匹配结果;
若不存在与报文哈希值匹配的目标缓存哈希值,生成不包括目标缓存流表项的第一匹配结果。
优选的,数据包消息包括报文关键值,内存流表中包括多条流表项,每条流表项对应一个内存哈希值;
对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果,包括:
对报文关键值进行哈希计算,得到报文哈希值;
将报文哈希值与内存哈希值进行匹配;
若存在与报文哈希值匹配的目标内存哈希值,将目标内存哈希值对应的流表项确定为目标内存流表项,并生成包括目标内存流表项的第二匹配结果;
若不存在与报文哈希值匹配的目标内存哈希值,生成不包括目标内存流表项的第二匹配结果。
优选的,数据包消息包括业务需求,目标缓存流表项包括目标缓存地址和目标缓存队列标识;
若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新,包括:
将数据包消息和目标缓存地址写入目标缓存队列标识所指示的目标等待队列;
从目标等待队列中获取队头位置的数据包消息和目标缓存地址;
按照业务需求对目标缓存地址对应的目标缓存流表项进行更新。
优选的,业务需求包括新建、删除、查找或修改;
按照业务需求对目标缓存地址对应的目标缓存流表项进行更新,包括:
若业务需求为新建,对目标缓存流表项对应的缓存流表进行新建流表项;
若业务需求为删除,删除目标缓存流表项;
若业务需求为查找,按照目标缓存地址查询出对应的目标缓存流表项;
若业务需求为修改,按照获取的修改需求对目标缓存流表项进行修改。
优选的,内存流表还包括老化时间字段;
方法还包括:
按照内存流表的地址序列对内存流表的老化时间字段进行遍历,并根据当前时间和老化时间字段,判断老化时间字段对应的流表项是否超时;
若超时,删除超时的流表项;
若未超时,重复执行按照内存流表的地址序列对内存流表的老化时间字段进行遍历的步骤。
本发明还公开了一种数据包管理系统,系统包括:消息管理子系统、缓存子系统和内存流表子系统;
消息管理子系统用于获取数据包报文,并从数据报文中提取出数据包消息,将数据包消息发送至缓存子系统;
缓存子系统用于对数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,将数据包消息发送至内存流表子系统;
内存流表子系统用于对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新。
优选的,缓存子系统包括高速缓存模块;
高速缓存模块用于对报文关键值进行哈希计算,得到报文哈希值;将报文哈希值与缓存哈希值进行匹配;若存在与报文哈希值匹配的目标缓存哈希值,将目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括目标缓存流表项的第一匹配结果;若不存在与报文哈希值匹配的目标缓存哈希值,生成不包括目标缓存流表项的第一匹配结果。
优选的,数据包消息包括业务需求,目标缓存流表项包括目标缓存地址和目标缓存队列标识;缓存子系统还包括等待队列模块和业务处理模块;
等待队列模块用于存储多个等待队列,每个等待队列包括对应的缓存队列标识;
高速缓存模块用于将数据包消息和目标缓存地址写入目标缓存队列标识所指示的目标等待队列;
业务处理模块用于从目标等待队列中获取队头位置的数据包消息和目标缓存地址;按照业务需求对目标缓存地址对应的目标缓存流表项进行更新。
本发明还公开了一种数据包管理装置,包括:
缓存判别单元,用于对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;
缓存更新单元,用于若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;
内存判别单元,用于若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;
内存更新单元,用于若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新。
本发明还公开了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法。
本发明还公开了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述处理器执行所述程序时实现如上所述方法。
本发明对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据包管理系统的结构示意图;
图2为本发明实施例提供的一种数据包管理方法的流程图;
图3为本发明实施例提供的又一种数据包管理方法的流程图;
图4为本发明实施例提供的一种匹配HASH链表的流程示意图;
图5为本发明实施例提供的一种数据包管理的整体流程示意图;
图6为本发明实施例提供的一种业务处理模块处理数据包过程的TCP报文状态变化的流程示意图;
图7为本发明实施例提供的一种数据包管理装置的结构示意图;
图8为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解本申请提供的技术方案,下面先对本申请技术方案的相关内容进行说明。随着微电子技术和计算机技术的不断发展,以及人们对互连网应用需求的不断增长,计算机网络的规模迅速扩大,网络上的各种应用也层出不穷。计算机网络从方方面面影响着人们的生活,网络安全成为互连网应用的最重要的基础需求,需要对网络中的海量数据进行流管理,实时掌握流量的详细信息,对网络中的流量类型和流量大小做出综合分析,实时调整网络设备,最大限度的提升用户体验感。
传输控制协议/网际协议(Transport Control Protocol/Internet Protocol,简称:TCP/IP)是网络协议中最重要的协议之一,TCP/IP应用最为广泛,以协议号、源IP地址、目的IP地址、源端口地址和目的端口地址的五元组可以唯一标识一个双向的应用连接。本发明提出的数据包管理方法,以TCP/IP协议为例与重要的应用场景进行结合说明。但本发明提出的数据包管理方法不限于TCP/IP协议,也可以应用到其它协议的网络环境。
五元组相同的报文称为一条流,将从客户端到服务器端的报文称之为正向报文,对应的数据流量为正向流量;从服务器端到客户端的报文称之为反向报文,对应的数据流量为反向流量。正向报文和反向报文中的源IP地址和目的IP地址相反,且源端口和目的端口也相反。
目前,将同一条数据流的两个报文之间的时间间隔小于内存的访问延时的数据流称为大象流,若网络中存在大象流,此时第二个报文获取到的流量信息并不是第一个报文更新之后的数据,因此会出现流量信息不准确的问题,其中,流量信息包括正向流量和反向流量的报文个数以及报文字节数。若第二个报文等第一个报文更新之后再去访问内存,会降低处理效率,从而导致网络设备的处理性能较低。为解决上述技术问题,本发明提供了一种数据包管理方法,通过缓存和内存相互配合的方式进行数据包管理。数据包管理,即:通过数据包中的五元组信息对内存中的流表进行管理,包括对表项的新建、删除、修改和查询。当网络中出现大象流,第二个报文可以无需访问内存,直接在缓存中对数据包进行管理,可以缓解内存的访问压力,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。
图1为本发明实施例提供的一种数据包管理系统的结构示意图,如图1所示,数据包管理系统包括消息管理子系统100、缓存子系统200和内存流表子系统300。其中,消息管理子系统100与缓存子系统200连接,缓存子系统200与内存流表子系统300连接。
消息管理子系统100用于获取数据包报文,并从数据报文中提取出数据包消息,将数据包消息发送至缓存子系统200。具体地,消息管理子系统100接收上级模块发送的数据报文,以获取到数据报文。其中,上级模块为数据包解析模块,数据包解析模块对网络数据包进行解析,生成数据报文,并将数据报文发送至消息管理子系统100。消息管理子系统100在接收到数据报文后,将数据报文进行存储,并提取数据报文中的五元组信息和业务需求;根据五元组信息和业务需求,生成数据包消息,并将数据包消息发送至缓存子系统200。本发明实施例中,五元组信息包括协议号、源IP地址、目的IP地址、源端口地址和目的端口地址;业务需求包括但不限于TCP状态、长度、内存地址、请求内容。
缓存子系统200用于对数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,将数据包消息发送至内存流表子系统。具体地,数据包消息中的五元组信息作为用于与缓存流表的流表项进行匹配的关键(KEY)值。
本发明实施例中,缓存子系统中的缓存流表为哈希(HASH)链表,缓存流表包括但不限于五元组信息、哈希值、缓存地址、状态、等待队列指针和引用计数。其中,哈希值是通过哈希算法,根据五元组信息计算得到的,具体地,比较源IP地址与目的IP地址的大小,若源IP地址大于目的IP地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源IP地址小于目的IP地址,则哈希算法的五元组信息的输入顺序为目的IP地址、源IP地址、协议号、目的端口地址和源端口地址;若源IP地址与目的IP地址相同,则比较源端口地址和目的端口地址的大小,若源端口地址大于目的端口地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源端口地址小于目的端口地址,则目的IP地址、源IP地址、协议号、目的端口地址和源端口地址。确定出哈希算法的五元组信息的输入顺序可以保证同一条流的上下行报文能够计算出相同的哈希值,便于后续对流表项的更新处理。
等待队列指针为指向该流表项对应的等待队列的指针,一个流表项对应于一个或零个等待队列;引用计数表明等待队列中等待消息的数量。
本发明实施例中,缓存流表的流表项包括已同步或未同步两种状态,已同步状态表明与内存流表的流表项已完成消息同步,未同步状态表明与内存流表的流表项未完成消息同步。
内存流表子系统300用于对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新。具体地,数据包消息中的五元组信息作为用于与内存流表的流表项进行匹配的KEY值。
本发明实施例中,内存流表子系统300中的内存流表为HASH链表,哈希冲突问题可以通过链式地址法的方式解决,内存流表包括但不限于五元组信息、状态、哈希值和内存地址。作为一种可选方案,内存流表子系统300包括HASH表模块和流表老化管理模块。HASH表模块用于根据业务信息对内存流表的流表项进行更新,即:对流表项进行新建、删除、修改和查询。流表老化管理模块用于对超时的内存流表的流表项进行老化处理。
本发明实施例中,内存空间被按指定比例划分为线性空间和共享空间两部分,作为一种可选方案,指定比例为线性空间占内存空间的75%,共享空间占内存空间的25%。线性空间用于存储HASH链表,共享空间用于为HASH链表的扩展提供空间。
本发明实施例中,缓存子系统200包括高速缓存模块210。
高速缓存模块210用于对报文关键值进行哈希计算,得到报文哈希值;将报文哈希值与缓存哈希值进行匹配;若存在与报文哈希值匹配的目标缓存哈希值,将目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括目标缓存流表项的第一匹配结果;若不存在与报文哈希值匹配的目标缓存哈希值,生成不包括目标缓存流表项的第一匹配结果。
本发明实施例中,数据包消息包括业务需求,目标缓存流表项包括目标缓存地址和目标缓存队列标识。缓存子系统200还包括等待队列模块220和业务处理模块230。其中,高速缓存模块210与等待队列模块220通过第一通信接口连接;高速缓存模块210与业务处理模块230通过第二通信接口连接;等待队列模块220与业务处理模块230通过第三通信接口连接;高速缓存模块210与内存流表子系统300通过第四通信接口和第五通信接口连接,第四通信接口用于高速缓存模块210向内存流表子系统300发起的查找访问,第五通信接口用于高速缓存模块210向内存流表子系统发起的更新处理。本发明实施例对设置的通信接口的类型不作限定。
本发明实施例中,通过对内存流表子系统300的查找访问和维护处理设置不同的通信接口,使得低性能的维护处理不会影响到高性能的查找访问。
等待队列模块220用于存储多个等待队列,每个等待队列包括对应的缓存队列标识。具体地,等待队列模块220通过第三通信接口将等待队列中队头位置的数据包消息和目标缓存地址发送至业务处理模块230。
高速缓存模块210用于将数据包消息和目标缓存地址写入目标缓存队列标识所指示的目标等待队列。具体地,高速缓存模块210通过第一通信接口将数据包消息和目标缓存地址写入目标缓存队列标识所指示的目标等待队列。
高速缓存模块210还用于通过第一通信接口将同步完成消息发送至等待队列模块220中的等待队列,以便于等待队列将数据包消息推送至业务处理模块230。
高速缓存模块210还用于通过第四通信接口对内存流表子系统300中的内存流表进行查找访问,通过第五通信接口向内存流表子系统300中内存流表的内存流表项启动老化处理或对内存流表项进行与缓存流表项对应的更新处理。
业务处理模块230用于从目标等待队列中获取队头位置的数据包消息和目标缓存地址;按照业务需求对目标缓存地址对应的目标缓存流表项进行更新。具体地,业务处理模块230通过第二通信接口访问高速缓存模块210,并按照业务需求对目标缓存地址对应的目标缓存流表项进行更新。
本发明实施例提供的技术方案中,对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。
值得说明的是,图1所示的数据包管理系统还适用于图2或图3的数据包管理方法,在此不再赘述。
下面以数据包管理装置作为执行主体为例,说明本发明实施例提供的数据包管理方法的实现过程。可理解的是,本发明实施例提供的数据包管理方法的执行主体包括但不限于数据包管理装置。
图2为本发明实施例提供的一种数据包管理方法的流程图,如图2所示,该方法包括:
步骤101、对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果。
本发明实施例中,数据包消息包括报文关键值,缓存流表中包括多条流表项,每条流表项对应一个缓存哈希值。
步骤102、若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新。
步骤103、若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果。
本发明实施例中,内存流表中包括多条流表项,每条流表项对应一个内存哈希值。
步骤104、若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新。
本发明实施例提供的技术方案中,对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。
图3为本发明实施例提供的又一种数据包管理方法的流程图,如图3所示,该方法包括:
步骤201、对报文关键值进行哈希计算,得到报文哈希值。
本发明实施例中,各步骤由数据包管理装置执行。
本发明实施例中,从数据包消息中获取报文关键值,报文关键值为五元组信息,即:源IP地址、目的IP地址、协议号、源端口地址和目的端口地址。具体地,通过哈希算法,根据五元组信息计算得到报文哈希值。
本发明实施例中,为保证同一条流的上下行报文能够计算出相同的哈希值,需要确定出哈希算法的五元组信息的输入顺序。具体地,比较源IP地址与目的IP地址的大小,若源IP地址大于目的IP地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源IP地址小于目的IP地址,则哈希算法的五元组信息的输入顺序为目的IP地址、源IP地址、协议号、目的端口地址和源端口地址;若源IP地址与目的IP地址相同,则比较源端口地址和目的端口地址的大小,若源端口地址大于目的端口地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源端口地址小于目的端口地址,则目的IP地址、源IP地址、协议号、目的端口地址和源端口地址。确定出哈希算法的五元组信息的输入顺序可以保证同一条流的上下行报文能够计算出相同的哈希值,便于后续对流表项的更新处理。
步骤202、将报文哈希值与缓存哈希值进行匹配,若存在与报文哈希值匹配的目标缓存哈希值,执行步骤203;若不存在与报文哈希值匹配的目标缓存哈希值,执行步骤204。
本发明实施例中,缓存流表中包括多条流表项,每条流表项对应一个缓存哈希值。具体地,将报文哈希值与缓存哈希值进行匹配,判断是否存在于报文哈希值匹配的目标缓存哈希值,若存在,表明数据包消息命中缓存流表的流表项,将命中的流表项对应的缓存哈希值确定为目标缓存哈希值,执行步骤203;若不存在,表明数据包消息未命中缓存流表的流表项,继续执行步骤204。
步骤203、将目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括目标缓存流表项的第一匹配结果,继续执行步骤206。
具体地,将命中的流表项确定为目标缓存流表项,生成第一匹配结果,第一匹配结果为命中,第一匹配结果包括目标缓存流表项,继续执行步骤206。
进一步地,将数据包消息、目标缓存地址和分配的目标等待队列标识发送至等待队列模块中,以供等待队列模块将数据包消息和目标缓存地址写入目标等待队列标识所指示的目标等待队列中,并将目标缓存流表项对应的引用计数进行加1处理。
步骤204、生成不包括目标缓存流表项的第一匹配结果。
具体地,若数据包消息未命中缓存流表,生成第一匹配结果,第一匹配结果为未命中,第一匹配结果不包括目标缓存流表项。
进一步地,在缓存流表中新建一个缓存流表项,为新建的缓存流表项分配一个等待队列模块内的等待队列,将分配的等待队列的等待队列标识与新建的缓存流表项进行绑定;将数据包消息、新建的缓存流表项的序号和绑定的等待队列标识发送至等待队列模块,以供等待队列模块将数据包消息和新建的缓存流表项的序号写入绑定的等待队列标识所指示的等待队列中,并将新建的缓存流表项对应的引用计数进行加1处理,继续对内存流表的流表项进行进一步匹配,继续执行步骤205。
步骤205、对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果,若第二匹配结果包括目标内存流表项,执行步骤207;若第二匹配结果不包括目标内存流表项,执行步骤208。
本发明实施例中,数据包消息包括报文关键值,内存流表中包括多条流表项,每条流表项对应一个内存哈希值。具体地,若第二匹配结果包括目标内存流表项,表明数据包消息命中内存流表的流表项,执行步骤207;若第二匹配结果不包括目标内存流表项,表明数据包消息未命中内存流表的流表项,执行步骤208。
本发明实施例中,步骤205具体包括:
步骤2051、对报文关键值进行哈希计算,得到报文哈希值。
步骤2052、将报文哈希值与内存哈希值进行匹配,若存在与报文哈希值匹配的目标内存哈希值,执行步骤2053;若不存在与报文哈希值匹配的目标内存哈希值,执行步骤2054。
步骤2053、将目标内存哈希值对应的流表项确定为目标内存流表项,并生成包括目标内存流表项的第二匹配结果。
步骤2054、生成不包括目标内存流表项的第二匹配结果。
本发明实施例中,步骤2051至步骤2054与步骤201至步骤204的匹配相同,区别仅在于步骤201至步骤204是针对于数据包消息与缓存流表的匹配,步骤2051至步骤2054是针对于数据包消息与内存流表的匹配,匹配具体过程参见步骤201至步骤204,在此不再一一赘述。
以内存流表为HASH链表为例,图4为本发明实施例提供的一种匹配HASH链表的流程示意图,如图4所示,对HASH链表进行匹配,首先根据数据包消息中的报文关键值进行哈希计算,计算出报文哈希值;将报文哈希值与内存线性空间的HASH链表的内存哈希值进行匹配,若匹配到目标内存哈希值,输出第二匹配结果,第二匹配结果为命中且第二匹配结果包括与目标内存哈希值对应的目标内存流表项;若未匹配到目标内存哈希值,判断是否存在HASH链表的下一结点,若存在,继续与HASH链表下一结点的内存哈希值进行匹配;若不存在,输出第二匹配结果,第二匹配结果为未命中,第二匹配结果不包括目标内存流表项。
步骤206、根据数据包消息对目标缓存流表项进行更新,流程结束。
本发明实施例中,步骤206具体包括:
步骤2061、将数据包消息和目标缓存地址写入目标缓存队列标识所指示的目标等待队列。
本发明实施例中,数据包消息包括报文关键值和业务需求,将数据包消息和目标缓存地址写入目标缓存队列标识所指示的目标等待队列,以按顺序将数据包消息推送至业务处理模块进行处理。
步骤2062、从目标等待队列中获取队头位置的数据包消息和目标缓存地址。
本发明实施例中,按照队列先进先出原则,从目标等待队列中获取队头位置的数据包消息和目标缓存地址,以推送至业务处理模块进行处理,直到目标等待队列为空。当目标等待队列为空时,释放该空队列,并将目标缓存流表项的目标缓存队列标识置空。若此时等待队列模块接收到发送至空队列的数据包消息和目标缓存地址,则将数据包消息和目标缓存地址推送至业务处理模块进行处理。
步骤2063、按照业务需求对目标缓存地址对应的目标缓存流表项进行更新。
本发明实施例中,业务需求包括新建、删除、查找或修改。
具体地,若业务需求为新建,业务处理模块对目标缓存流表项对应的缓存流表进行新建流表项;若业务需求为删除,业务处理模块删除目标缓存流表项;若业务需求为查找,业务处理模块按照目标缓存地址查询出对应的目标缓存流表项;若业务需求为修改,业务处理模块按照获取的修改需求对目标缓存流表项进行修改。
当业务处理模块完成对目标缓存流表项的更新,对目标缓存流表项对应的引用计数进行减1处理。当引用计数为0时,高速缓存模块对目标缓存流表项启动老化处理,并对内存流表进行相应更新,将目标缓存流表项的状态修改为无效。
进一步地,当缓存流表项完成更新,需要将更新的缓存流表项与对应的内存流表项进行对应更新。当缓存流表项频繁更新,则对应的内存流表项长时间不更新,因此对缓存流表设置有对应的更新时长阈值,若一个缓存流表项未更新的时长大于更新时长阈值,高速缓存模块将该缓存流表项与对应的内存流表项进行对应更新,以避免内存流表项由于长时间未更新而触发流表老化管理模块对该内存流表项发起的老化处理。
步骤207、根据数据包消息对目标内存流表项进行更新,流程结束。
具体地,按照业务需求对目标内存地址对应的目标内存流表项进行更新。其中,业务需求包括新建、删除、查找或修改。若业务需求为新建,业务处理模块对目标内存流表项对应的内存流表进行新建流表项;若业务需求为删除,业务处理模块删除目标内存流表项;若业务需求为查找,业务处理模块按照目标内存地址查询出对应的目标内存流表项;若业务需求为修改,业务处理模块按照获取的修改需求对目标内存流表项进行修改。
进一步地,当内存流表项完成更新,需要将更新的内存流表项与对应的缓存流表项进行对应更新。
进一步地,当内存流表项完成更新,并将当前时间更新为老化时间字段中的更新时间,需要将更新的内存流表项与对应的缓存流表项进行对应更新。当缓存流表项完成对应更新后,高速缓存模块向目标等待队列发送同步完成消息,并为缓存流表项添加命中的标识。
进一步地,内存流表还包括老化时间字段,老化时间字段包括更新时间和每个内存流表项对应的超时时间阈值。其中,更新时间为内存流表项更新的时间,超时时间阈值是根据不同的内存流表项的实际需求进行设置的,可以达到快速删除超时的流表项的目的,本发明实施例对超时时间阈值的设置不作限定。
该方法进一步包括:按照内存流表的地址序列对内存流表的老化时间字段进行遍历,并根据当前时间和老化时间字段,判断老化时间字段对应的流表项是否超时,若超时,表明该流表项不再活跃,删除超时的流表项,并将该流表项的状态设置为无效;若未超时,表明该流表项活跃,重复执行按照内存流表的地址序列对内存流表的老化时间字段进行遍历的步骤。其中,将当前时间减去老化时间字段中的更新时间,得到时间差值,判断时间差值是否大于老化时间字段中的超时时间阈值,若是,表明老化时间字段对应的流表项超时;若否,表明老化时间字段对应的流表项未超时。
作为一种可选方案,可以在内存中设置一个老化表,用于记录内存流表项的更新时间和超时时间阈值,并按照老化表地址序列对每个内存流表项进行遍历。
由于哈希冲突问题通过链式地址法的方式解决,在HASH链表进行新建和删除时会引起链表的变化,可能会引起暂时的访问异常。为了避免同时修改、新建或删除同一个哈希值对应的不同流表项,将对同一个哈希值对应的流表项的更新操作写入一个预设队列,当一个更新操作完成后才会从预设队列中取出下一更新操作对流表项进行更新,即:对同一个哈希值对应的流表项的更新操作采用预设队列进行串行控制,不同的哈希值对应的流表项的更新操作采用多个不同等待队列的并行控制,既能够避免访问异常的问题,也能够提高处理效率,提升网络设备性能。
步骤208、输出查找失败消息,流程结束。
本发明实施例中,若数据包消息命中既未命中缓存流表的流表项,也未命中内存流表的流表项,输出查找失败消息。
进一步地,若第二匹配结果为未命中,将新建的缓存流表项的状态设置为无效。
进一步地,若第二匹配结果为未命中,高速缓存模块向分配的等待队列发送同步完成消息,并为该新建的缓存流表项添加未命中的标识。
图5为本发明实施例提供的一种数据包管理的整体流程示意图,如图5所示,将数据包消息发送至高速缓存模块;高速缓存模块判断数据包消息是否命中缓存流表的流表项,若是,将数据包消息和目标缓存地址写入等待队列模块,并从等待队列模块中的目标等待队列中将数据包消息和目标缓存地址推送至业务处理模块;若否,在高速缓存模块中新建一个缓存流表项,并对数据包消息与内存流表中的流表项进行二次匹配判别,并向高速缓存模块返回第二匹配结果,若匹配出内存流表中的流表项,对目标内存流表项进行更新且对对应的缓存流表项进行对应更新,将数据包消息和目标内存地址发送至推送至业务处理模块;若未匹配出内存流表中的流表项,输出查找失败消息,高速缓存模块向等待队列模块发送同步完成消息,并相应修改缓存流表项的状态。
以数据包消息包括TCP报文为例,图6为本发明实施例提供的一种业务处理模块处理数据包过程的TCP报文状态变化的流程示意图,如图6所示,接收用于建立连接(SYN)的TCP报文,SYN为单向状态;接收反向SYN确认消息(ACK),该TCP报文的状态为反向访问状态,即:数据流方向为从服务器至客户端的方向;接收正向SYN确认消息(ACK),该TCP报文的状态双向访问状态(双向EST-STA),即:数据流方向为从服务器至客户端的方向以及从客户端至服务器的方向,表明客户端与服务器之间的双向连接建立成功。双向连接建立成功后,若接收正向关闭连接消息(正向FIN),该TCP报文的状态为等待正向连接关闭状态(CS-FIN-WAIT);接收正向确认消息(ACK),该TCP报文的状态为确认正向连接关闭状态(CS-CLOSE),表明从客户端至服务器的连接关闭。双向连接建立成功后,若接收反向关闭连接消息(反向FIN),该TCP报文的状态为等待反向连接关闭状态(SC-FIN-WAIT);接收反向确认消息(ACK),该TCP报文的状态为确认反向连接关闭状态(SC-CLOSE),表明从服务器至客户端的连接关闭。若从客户端至服务器的连接以及从服务器的连接均已关闭,删除该TCP报文,业务处理模块对TCP报文的处理结束。值得说明的是,对于TCP报文来说,数据流方向只有从客户端至服务器的方向(正向)以及从服务器至客户端的方向(反向)两种方向。
本发明实施例中,通过缓存和内存相互配合的方式进行数据包管理,充分利用了缓存的高速访问能力和内存的大规模存储能力,提升网络设备的处理性能,并且可以在较高处理性能的基础上精确统计数据包的流量信息,为后续的流分析提供可靠支持;通过将数据包消息先与缓存流表进行匹配,若未匹配到目标缓存流表项,再与内存流表进行匹配的方式,在出现大象流的情况下可以降低内存的访问压力。其中,对数据包的流量信息进行统计可以通过报文关键值与预设的上行报文关键值和下行报文关键值进行匹配,确定出该报文为上行报文或下行报文。
本发明实施例提供的数据包管理方法的技术方案中,对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。
图7为本发明实施例提供的一种数据包管理装置的结构示意图,该装置用于执行上述数据包管理方法,如图7所示,该装置包括:缓存判别单元11、缓存更新单元12、内存判别单元13和内存更新单元14。
缓存判别单元11用于对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果。
缓存更新单元12用于若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新。
内存判别单元13用于若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果。
内存更新单元14用于若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新。
本发明实施例中,缓存判别单元11具体用于对报文关键值进行哈希计算,得到报文哈希值;将报文哈希值与缓存哈希值进行匹配;若存在与报文哈希值匹配的目标缓存哈希值,将目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括目标缓存流表项的第一匹配结果;若不存在与报文哈希值匹配的目标缓存哈希值,生成不包括目标缓存流表项的第一匹配结果。
本发明实施例中,内存判别单元13具体用于对报文关键值进行哈希计算,得到报文哈希值;将报文哈希值与内存哈希值进行匹配;若存在与报文哈希值匹配的目标内存哈希值,将目标内存哈希值对应的流表项确定为目标内存流表项,并生成包括目标内存流表项的第二匹配结果;若不存在与报文哈希值匹配的目标内存哈希值,生成不包括目标内存流表项的第二匹配结果。
本发明实施例中,内存更新单元14具体用于将数据包消息和目标缓存地址写入目标缓存队列标识所指示的目标等待队列;从目标等待队列中获取队头位置的数据包消息和目标缓存地址;按照业务需求对目标缓存地址对应的目标缓存流表项进行更新。
本发明实施例中,内存更新单元14具体用于若业务需求为新建,对目标缓存流表项对应的缓存流表进行新建流表项;若业务需求为删除,删除目标缓存流表项;若业务需求为查找,按照目标缓存地址查询出对应的目标缓存流表项;若业务需求为修改,按照获取的修改需求对目标缓存流表项进行修改。
本发明实施例中,该装置还包括:判断单元15和删除单元16。
判断单元15用于按照内存流表的地址序列对内存流表的老化时间字段进行遍历,并根据当前时间和老化时间字段,判断老化时间字段对应的流表项是否超时,若未超时,重复执行按照内存流表的地址序列对内存流表的老化时间字段进行遍历的步骤。
删除单元16用于若超时,删除超时的流表项;
本发明实施例的方案中,对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若第一匹配结果包括目标缓存流表项,根据数据包消息对目标缓存流表项进行更新;若第一匹配结果不包括目标缓存流表项,对数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若第二匹配结果包括目标内存流表项,根据数据包消息对目标内存流表项进行更新,能够高效、准确统计出数据包的流量信息,从而提高网络设备的处理性能。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
本发明实施例提供了一种计算机设备,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现上述数据包管理方法的实施例的各步骤,具体描述可参见上述数据包管理方法的实施例。
下面参考图8,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。
如图8所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有计算机设备600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据包管理方法,其特征在于,所述方法包括:
对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;
若所述第一匹配结果包括目标缓存流表项,根据所述数据包消息对所述目标缓存流表项进行更新;
若所述第一匹配结果不包括目标缓存流表项,对所述数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;
若所述第二匹配结果包括目标内存流表项,根据所述数据包消息对所述目标内存流表项进行更新;
所述数据包消息包括报文关键值,所述缓存流表中包括多条流表项,每条流表项对应一个缓存哈希值;
所述对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果,包括:
对所述报文关键值进行哈希计算,得到报文哈希值;
将所述报文哈希值与所述缓存哈希值进行匹配;
若存在与所述报文哈希值匹配的目标缓存哈希值,将所述目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括所述目标缓存流表项的第一匹配结果;
若不存在与所述报文哈希值匹配的目标缓存哈希值,生成不包括目标缓存流表项的第一匹配结果;
所述报文关键值为五元组信息,所述五元组信息包括源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;
所述对所述报文关键值进行哈希计算,得到报文哈希值,包括:
通过哈希算法,根据五元组信息计算得到报文哈希值;
所述方法还包括:
确定出哈希算法的五元组信息的输入顺序,具体包括:
比较源IP地址与目的IP地址的大小;
若源IP地址大于目的IP地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;
若源IP地址小于目的IP地址,则哈希算法的五元组信息的输入顺序为目的IP地址、源IP地址、协议号、目的端口地址和源端口地址;
若源IP地址与目的IP地址相同,则比较源端口地址和目的端口地址的大小;
若源端口地址大于目的端口地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;
若源端口地址小于目的端口地址,则目的IP地址、源IP地址、协议号、目的端口地址和源端口地址。
2.根据权利要求1所述的数据包管理方法,其特征在于,所述数据包消息包括报文关键值,所述内存流表中包括多条流表项,每条流表项对应一个内存哈希值;
所述对所述数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果,包括:
对所述报文关键值进行哈希计算,得到报文哈希值;
将所述报文哈希值与所述内存哈希值进行匹配;
若存在与所述报文哈希值匹配的目标内存哈希值,将所述目标内存哈希值对应的流表项确定为目标内存流表项,并生成包括所述目标内存流表项的第二匹配结果;
若不存在与所述报文哈希值匹配的目标内存哈希值,生成不包括目标内存流表项的第二匹配结果。
3.根据权利要求1所述的数据包管理方法,其特征在于,所述数据包消息包括业务需求,所述目标缓存流表项包括目标缓存地址和目标缓存队列标识;
所述若所述第一匹配结果包括目标缓存流表项,根据所述数据包消息对所述目标缓存流表项进行更新,包括:
将所述数据包消息和目标缓存地址写入所述目标缓存队列标识所指示的目标等待队列;
从所述目标等待队列中获取队头位置的数据包消息和目标缓存地址;
按照业务需求对所述目标缓存地址对应的目标缓存流表项进行更新。
4.根据权利要求3所述的数据包管理方法,其特征在于,所述业务需求包括新建、删除、查找或修改;
所述按照业务需求对所述目标缓存地址对应的目标缓存流表项进行更新,包括:
若业务需求为新建,对所述目标缓存流表项对应的缓存流表进行新建流表项;
若业务需求为删除,删除所述目标缓存流表项;
若业务需求为查找,按照所述目标缓存地址查询出对应的目标缓存流表项;
若业务需求为修改,按照获取的修改需求对所述目标缓存流表项进行修改。
5.根据权利要求1所述的数据包管理方法,其特征在于,所述内存流表还包括老化时间字段;
所述方法还包括:
按照内存流表的地址序列对所述内存流表的老化时间字段进行遍历,并根据当前时间和所述老化时间字段,判断所述老化时间字段对应的流表项是否超时;
若超时,删除超时的流表项;
若未超时,重复执行所述按照内存流表的地址序列对所述内存流表的老化时间字段进行遍历的步骤。
6.一种数据包管理系统,其特征在于,所述系统包括消息管理子系统、缓存子系统和内存流表子系统;
所述消息管理子系统用于获取数据报文,并从所述数据报文中提取出数据包消息,将所述数据包消息发送至所述缓存子系统;
所述缓存子系统用于对所述数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;若所述第一匹配结果包括目标缓存流表项,根据所述数据包消息对所述目标缓存流表项进行更新;若所述第一匹配结果不包括目标缓存流表项,将所述数据包消息发送至所述内存流表子系统;
所述内存流表子系统用于对所述数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;若所述第二匹配结果包括目标内存流表项,根据所述数据包消息对所述目标内存流表项进行更新;
所述缓存子系统包括高速缓存模块;
所述高速缓存模块用于对报文关键值进行哈希计算,得到报文哈希值;将所述报文哈希值与缓存哈希值进行匹配;若存在与所述报文哈希值匹配的目标缓存哈希值,将所述目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括所述目标缓存流表项的第一匹配结果;若不存在与所述报文哈希值匹配的目标缓存哈希值,生成不包括目标缓存流表项的第一匹配结果;
所述报文关键值为五元组信息,所述五元组信息包括源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;
所述高速缓存模块具体用于通过哈希算法,根据五元组信息计算得到报文哈希值;
所述缓存子系统还用于确定出哈希算法的五元组信息的输入顺序,具体用于:
比较源IP地址与目的IP地址的大小;若源IP地址大于目的IP地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源IP地址小于目的IP地址,则哈希算法的五元组信息的输入顺序为目的IP地址、源IP地址、协议号、目的端口地址和源端口地址;若源IP地址与目的IP地址相同,则比较源端口地址和目的端口地址的大小;若源端口地址大于目的端口地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源端口地址小于目的端口地址,则目的IP地址、源IP地址、协议号、目的端口地址和源端口地址。
7.根据权利要求6所述的数据包管理系统,其特征在于,所述数据包消息包括业务需求,所述目标缓存流表项包括目标缓存地址和目标缓存队列标识;所述缓存子系统还包括等待队列模块和业务处理模块;
所述等待队列模块用于存储多个等待队列,每个等待队列包括对应的缓存队列标识;
所述高速缓存模块用于将所述数据包消息和目标缓存地址写入所述目标缓存队列标识所指示的目标等待队列;
所述业务处理模块用于从所述目标等待队列中获取队头位置的数据包消息和目标缓存地址;按照业务需求对所述目标缓存地址对应的目标缓存流表项进行更新。
8.一种数据包管理装置,其特征在于,所述装置包括:
缓存判别单元,用于对获取的数据包消息与缓存流表中的流表项进行一次匹配判别,生成第一匹配结果;
缓存更新单元,用于若所述第一匹配结果包括目标缓存流表项,根据所述数据包消息对所述目标缓存流表项进行更新;
内存判别单元,用于若所述第一匹配结果不包括目标缓存流表项,对所述数据包消息与内存流表中的流表项进行二次匹配判别,生成第二匹配结果;
内存更新单元,用于若所述第二匹配结果包括目标内存流表项,根据所述数据包消息对所述目标内存流表项进行更新;
所述数据包消息包括报文关键值,所述缓存流表中包括多条流表项,每条流表项对应一个缓存哈希值;
所述缓存判别单元,具体用于对所述报文关键值进行哈希计算,得到报文哈希值;将所述报文哈希值与所述缓存哈希值进行匹配;若存在与所述报文哈希值匹配的目标缓存哈希值,将所述目标缓存哈希值对应的流表项确定为目标缓存流表项,并生成包括所述目标缓存流表项的第一匹配结果;若不存在与所述报文哈希值匹配的目标缓存哈希值,生成不包括目标缓存流表项的第一匹配结果;所述报文关键值为五元组信息,所述五元组信息包括源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;
所述缓存判别单元,具体用于通过哈希算法,根据五元组信息计算得到报文哈希值;
所述缓存判别单元,还用于确定出哈希算法的五元组信息的输入顺序,具体用于:
比较源IP地址与目的IP地址的大小;若源IP地址大于目的IP地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源IP地址小于目的IP地址,则哈希算法的五元组信息的输入顺序为目的IP地址、源IP地址、协议号、目的端口地址和源端口地址;若源IP地址与目的IP地址相同,则比较源端口地址和目的端口地址的大小;若源端口地址大于目的端口地址,则哈希算法的五元组信息的输入顺序为源IP地址、目的IP地址、协议号、源端口地址和目的端口地址;若源端口地址小于目的端口地址,则目的IP地址、源IP地址、协议号、目的端口地址和源端口地址。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5任一项所述的数据包管理方法。
10.一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,其特征在于,所述程序指令被处理器加载并执行时实现权利要求1至5任意一项所述的数据包管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110843163.6A CN113595822B (zh) | 2021-07-26 | 2021-07-26 | 一种数据包管理方法、系统和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110843163.6A CN113595822B (zh) | 2021-07-26 | 2021-07-26 | 一种数据包管理方法、系统和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113595822A CN113595822A (zh) | 2021-11-02 |
CN113595822B true CN113595822B (zh) | 2024-03-22 |
Family
ID=78249971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110843163.6A Active CN113595822B (zh) | 2021-07-26 | 2021-07-26 | 一种数据包管理方法、系统和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113595822B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114629842B (zh) * | 2022-03-30 | 2024-06-28 | 阿里巴巴(中国)有限公司 | 流表处理方法、电子设备、可读存储介质及产品 |
CN115955446A (zh) * | 2022-12-22 | 2023-04-11 | 绿盟科技集团股份有限公司 | 一种流表处理方法及装置 |
CN115914102B (zh) * | 2023-02-08 | 2023-05-23 | 阿里巴巴(中国)有限公司 | 数据转发方法、流表处理方法、设备及系统 |
CN116208554A (zh) * | 2023-02-28 | 2023-06-02 | 曙光信息产业(北京)有限公司 | 一种基于fpga的流表处理方法、装置、设备以及存储介质 |
CN116055397B (zh) * | 2023-03-27 | 2023-08-18 | 井芯微电子技术(天津)有限公司 | 队列表项维护方法与装置 |
CN116366530B (zh) * | 2023-04-23 | 2025-03-25 | 北京火山引擎科技有限公司 | 一种流表老化方法、装置、计算机设备和存储介质 |
CN116389322B (zh) * | 2023-06-02 | 2023-08-15 | 腾讯科技(深圳)有限公司 | 流量数据处理方法、装置、计算机设备和存储介质 |
CN118277318A (zh) * | 2024-03-29 | 2024-07-02 | 海光信息技术(苏州)有限公司 | 传输数据流结束信息的电路、数据传输芯片及电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011078108A1 (ja) * | 2009-12-21 | 2011-06-30 | 日本電気株式会社 | マルチプロセッサ環境におけるパターンマッチング方法、及び装置 |
CN104601468A (zh) * | 2015-01-13 | 2015-05-06 | 杭州华三通信技术有限公司 | 报文转发方法和设备 |
CN105099920A (zh) * | 2014-04-30 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种设置sdn流表项的方法和装置 |
CN106789733A (zh) * | 2016-12-01 | 2017-05-31 | 北京锐安科技有限公司 | 一种提高大规模网络流表查找效率的装置及方法 |
CN107113282A (zh) * | 2014-12-30 | 2017-08-29 | 华为技术有限公司 | 一种抽取数据报文的方法及装置 |
CN109347745A (zh) * | 2018-09-20 | 2019-02-15 | 郑州云海信息技术有限公司 | 一种基于OpenFlow交换机的流表匹配方法和装置 |
CN109600318A (zh) * | 2018-11-29 | 2019-04-09 | 新华三技术有限公司合肥分公司 | 一种监控sdn中应用程序的方法及sdn控制器 |
CN109600313A (zh) * | 2017-09-30 | 2019-04-09 | 迈普通信技术股份有限公司 | 报文转发方法及装置 |
CN109873768A (zh) * | 2017-12-01 | 2019-06-11 | 华为技术有限公司 | 更新转发表的方法、硬件加速器、ovs和服务器 |
CN111092785A (zh) * | 2019-12-05 | 2020-05-01 | 深圳市任子行科技开发有限公司 | 数据监测方法及装置 |
CN112491901A (zh) * | 2020-11-30 | 2021-03-12 | 北京锐驰信安技术有限公司 | 一种网络流量精细化筛选装置及方法 |
CN112994983A (zh) * | 2021-04-01 | 2021-06-18 | 杭州迪普信息技术有限公司 | 流量统计方法、装置和电子设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103281246A (zh) * | 2013-05-20 | 2013-09-04 | 华为技术有限公司 | 报文处理方法及网络设备 |
US10284470B2 (en) * | 2014-12-23 | 2019-05-07 | Intel Corporation | Technologies for network device flow lookup management |
US10798048B2 (en) * | 2015-04-07 | 2020-10-06 | Nicira, Inc. | Address resolution protocol suppression using a flow-based forwarding element |
CN105516016B (zh) * | 2015-11-25 | 2018-05-11 | 北京航空航天大学 | 一种使用Tilera多核加速卡基于流的数据包过滤系统及数据包过滤方法 |
US10218647B2 (en) * | 2015-12-07 | 2019-02-26 | Intel Corporation | Mechanism to support multiple-writer/multiple-reader concurrency for software flow/packet classification on general purpose multi-core systems |
US10243850B2 (en) * | 2016-03-08 | 2019-03-26 | Nicira, Inc. | Method to reduce packet statistics churn |
CN106453129A (zh) * | 2016-09-30 | 2017-02-22 | 杭州电子科技大学 | 一种大象流两级识别系统及方法 |
US10880206B2 (en) * | 2018-06-13 | 2020-12-29 | Futurewei Technologies, Inc. | Multipath selection system and method for datacenter-centric metro networks |
CN109714266B (zh) * | 2018-12-25 | 2022-06-07 | 迈普通信技术股份有限公司 | 一种数据处理方法及网络设备 |
US11831663B2 (en) * | 2019-10-10 | 2023-11-28 | Intel Corporation | Secure networking protocol optimization via NIC hardware offloading |
-
2021
- 2021-07-26 CN CN202110843163.6A patent/CN113595822B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011078108A1 (ja) * | 2009-12-21 | 2011-06-30 | 日本電気株式会社 | マルチプロセッサ環境におけるパターンマッチング方法、及び装置 |
CN105099920A (zh) * | 2014-04-30 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种设置sdn流表项的方法和装置 |
CN107113282A (zh) * | 2014-12-30 | 2017-08-29 | 华为技术有限公司 | 一种抽取数据报文的方法及装置 |
CN104601468A (zh) * | 2015-01-13 | 2015-05-06 | 杭州华三通信技术有限公司 | 报文转发方法和设备 |
CN106789733A (zh) * | 2016-12-01 | 2017-05-31 | 北京锐安科技有限公司 | 一种提高大规模网络流表查找效率的装置及方法 |
CN109600313A (zh) * | 2017-09-30 | 2019-04-09 | 迈普通信技术股份有限公司 | 报文转发方法及装置 |
CN109873768A (zh) * | 2017-12-01 | 2019-06-11 | 华为技术有限公司 | 更新转发表的方法、硬件加速器、ovs和服务器 |
CN109347745A (zh) * | 2018-09-20 | 2019-02-15 | 郑州云海信息技术有限公司 | 一种基于OpenFlow交换机的流表匹配方法和装置 |
CN109600318A (zh) * | 2018-11-29 | 2019-04-09 | 新华三技术有限公司合肥分公司 | 一种监控sdn中应用程序的方法及sdn控制器 |
CN111092785A (zh) * | 2019-12-05 | 2020-05-01 | 深圳市任子行科技开发有限公司 | 数据监测方法及装置 |
CN112491901A (zh) * | 2020-11-30 | 2021-03-12 | 北京锐驰信安技术有限公司 | 一种网络流量精细化筛选装置及方法 |
CN112994983A (zh) * | 2021-04-01 | 2021-06-18 | 杭州迪普信息技术有限公司 | 流量统计方法、装置和电子设备 |
Non-Patent Citations (3)
Title |
---|
"基于DPI的高速网络报文处理技术研究";王鑫;《中国优秀硕士学位论文全文数据库 信息科技辑》;全文 * |
"应用于协议无感知转发交换机的流缓存方法";曹作伟等;《中国优秀硕士学位论文全文数据库 信息科技辑》;全文 * |
数据流特征感知的交换机流表智能更新方法;姜立立;曾国荪;丁春玲;;计算机应用(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113595822A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113595822B (zh) | 一种数据包管理方法、系统和装置 | |
US11080239B2 (en) | Key value store using generation markers | |
JP4792505B2 (ja) | データの同期処理方法、クライアント、サーバ、及びクライアントとサーバとのデータ同期システム | |
CN105224255B (zh) | 一种存储文件管理方法及装置 | |
CN103581052B (zh) | 一种数据处理方法、路由器及ndn系统 | |
CN107197050A (zh) | 一种分布式存储系统中文件写入的方法及系统 | |
CN110727727B (zh) | 一种数据库的统计方法及装置 | |
US11507277B2 (en) | Key value store using progress verification | |
CN103377043B (zh) | 消息队列的实现方法和系统、消息队列处理系统 | |
US11334623B2 (en) | Key value store using change values for data properties | |
CN110650182B (zh) | 网络缓存方法、装置、计算机设备及存储介质 | |
CN113572582B (zh) | 数据发送、重传控制方法及系统、存储介质及电子设备 | |
CN109564502A (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
CN114244752A (zh) | 流量统计方法、装置和设备 | |
CN104731722B (zh) | 一种针对缓存页面的页面管理方法及装置 | |
CN107180118A (zh) | 一种文件系统缓存数据管理方法及装置 | |
CN107615259A (zh) | 一种数据处理方法及系统 | |
WO2023142605A1 (zh) | 一种基于区块链的数据处理方法和相关装置 | |
CN103442091B (zh) | 一种数据传输方法及装置 | |
JPH07239808A (ja) | 分散データ管理方式 | |
KR101747270B1 (ko) | 이기종 데이터베이스들 간의 쿼리 결과를 동기화하기 위한 방법, 서버 및 컴퓨터-판독가능 매체에 저장된 컴퓨터 프로그램 | |
WO2020238748A1 (zh) | 数据同步的处理方法、装置、电子设备及计算机存储介质 | |
CN112395296A (zh) | 一种大数据归档方法、装置、设备及存储介质 | |
CN115599711B (zh) | 缓存数据处理方法、系统、装置、设备及计算机存储介质 | |
CN114221847B (zh) | 网络会话管理方法、装置及设备、存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |