掌桥专利:专业的专利平台
掌桥专利
首页

一种报文缓存方法及系统

文献发布时间:2023-06-29 06:30:04


一种报文缓存方法及系统

技术领域

本申请涉及计算机报文缓存技术领域,尤其涉及一种报文缓存方法及系统。

背景技术

在网络分析监测领域,网络可视化方案中智能网卡设备的作用正越发重要。网络可视化通过分流器将多条链路的数据进行采集,汇聚分流输出到智能网卡,然后智能网卡再将链路中收到的数据流量上传到分析服务器内存中,智能网卡在可视化平台和用户数据链路中扮演了一个将前端分流器筛选分类的报文送到服务器处理最后一公里的“物流”角色。

由于网络可视化项目通常是基于大流量进行数据分析,所以后端服务器集群特别大,每台服务器需据自身处理流量的大小,配置对应流量接口的智能网卡将流量DMA上传至服务器主机内存中供主机业务程序进行处理,因此网卡需求数量众多,提升每块智能网卡大页内存报文缓存效率极其重要,不但涉及到服务器内存硬件成本,还会涉及到服务器业务程序对报文缓存内存的访问性能。

因此,提供一种可以解决大页内存报文缓存效率低,增加服务器内存硬件成本,服务器业务程序对报文缓存内存的访问性能待提高的报文缓存方法及系统是本领域技术人员亟待解决的问题。

发明内容

本发明的目的在于提供一种报文缓存方法及系统,可以有效提升大页内存报文缓存效率,降低服务器内存硬件成本,提高服务器业务程序对报文缓存内存的访问性能。

基于以上目的,本发明提供的技术方案如下:

一种报文缓存方法,包括以下步骤:

根据网络报文获取网络报文元信息;

根据所述网络报文元信息获取网络报文长度;

获取内存段集合;

根据所述网络报文长度从所述内存段集合中获取存储空间以存储所述网络报文。

优选地,所述根据网络报文获取网络报文元信息,具体为:

根据预设协议对网络报文进行解析以得到所述网络报文元信息。

优选地,所述网络报文元信息包括IP分片信息、TCP乱序信息、TCP分段信息;

所述根据所述网络报文元信息获取网络报文长度包括如下步骤:

根据所述IP分片信息、所述TCP乱序信息和所述TCP分段信息,处理所述网络报文以获取所述网络报文长度。

优选地,所述根据所述IP分片信息、TCP乱序信息和TCP分段信息,处理所述网络报文以获取所述网络报文长度,包括:

根据所述IP分片信息对所述网络报文重组,以获取第一报文。

优选地,所述根据所述IP分片信息对所述网络报文重组,以获取第一报文之后,包括:

根据所述TCP乱序信息对所述第一报文进行排序,以获取第二报文。

优选地,所述根据所述TCP乱序信息对所述第一报文进行排序,以获取第二报文之后,包括:

根据所述TCP分段信息对所述第二报文进行分段重组获取第三报文,以获取第三报文长度。

优选地,所述获取内存段集合包括:

根据预设大页内存页数获取大页内存;

根据所述大页内存获取连续内存地址空间;

根据预设顺序对所述大页内存进行排序以形成内存区块;

根据预设内存段范围对所述内存区块进行切分以形成所述内存段集合。

优选地,所述根据所述大页内存获取连续内存地址空间包括:

将所述大页内存映射至逻辑地址;

将所述逻辑地址映射至物理地址;

根据所述物理地址获取连续内存地址空间。

优选地,所述根据所述网络报文长度从所述内存段集合中获取存储空间以存储所述网络报文,具体为:

根据所述网络报文长度从所述内存段集合中匹配所述网络报文长度范围的存储空间以存储所述网络报文。

一种报文缓存系统,包括获取模块、处理模块、内存段集合模块和存储模块;

所述获取模块,用于根据网络报文帧获取网络报文元信息;

所述处理模块,用于根据所述网络报文元信息获取网络报文长度;

所述内存段集合模块,用于获取内存段集合;

所述存储模块,用于根据所述网络报文长度从所述内存段集合中获取存储空间以存储所述网络报文。

本发明提供了一种报文缓存方法,根据网络报文获取网络报文元信息;根据网络报文元信息获取网络报文长度;获取内存段集合;根据网络报文长度从内存段集合中获取存储空间以存储网络报文长度。该方法通过最终的报文长度分配不同的服务器报文缓存可以有效提升大页内存报文缓存效率,降低服务器内存硬件成本,提高服务器业务程序对报文缓存内存的访问性能。

本发明还提供了一种报文缓存系统,由于该系统与该报文缓存方法解决相同的技术问题,属于相同的技术构思,理应具有相同的有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中报文缓存方法的流程图;

图2为本发明实施例中步骤S3的流程图;

图3为本发明实施例中步骤F2的流程图;

图4为本发明实施例中报文缓存系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供一种报文缓存方法,包括以下步骤:

S1.根据网络报文获取网络报文元信息;

S2.根据网络报文元信息获取网络报文长度;

S3.获取内存段集合;

S4.根据网络报文长度从内存段集合中获取存储空间以存储网络报文。

步骤S1至S2中,本申请根据可编程网卡芯片通过将光纤过来流量进行解析后,得到网络报文的各个网络报文元信息;然后根据网络报文元信息对网络报文进行判断,并根据判断结果将网络报文进行重组生成最终的网络报文长度;

步骤S3中,通过用户预设预留大页内存页数申请可分配大页内存,将所有大页内存尽量在物理地址或者逻辑地址上申请到最大可连续内存地址空间;然后将所有大页内存按照可连续地址空间进行排序组成多个内存区块;再根据步骤S1中所获取的网络报文长度将多个不同大小的内存区块进行进行内存段的切分,形成内存段集合。

需要说明的是,内存段是指一段连续物理地址内存空间,用来供网卡将网络报文数据DMA至服务器的报文缓存的内存空间。

步骤S4中,根据不同的网络报文长度从内存段集合中获取存储空间来存储不同的网络报文;然后通过智能网卡通过DMA技术将已经分配好的存储空间上传至服务器内存,以供服务器业务程序使用。

需要说明的是,如果需要把网络报文从网卡传递到服务器业务程序处理时,就需要智能网卡驱动程序在初始化智能网卡时将申请到的服务器端内存,此申请的服务器端内存即为智能网卡的报文缓存,然后下放到智能网卡内部,智能网卡将报文通过DMA技术填入指定的服务器内存中,服务器业务程序从对应的报文缓存中拿到报文数据进行处理。

DMA技术是指直接内存存取;是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依于CPU的大量中断负载,是一种可以大大减轻CPU工作量的数据转移方式。DMA是一种允许外围设备直接访问系统主内存的机制。也就是说,基于DMA访问方式,系统主内存于硬盘或网卡之间的数据传输可以绕开CPU的调度。

优选地,所述步骤S1,具体为:

根据预设协议对网络报文进行解析以得到网络报文元信息。

具体的,服务器要进行网络可视化业务分析就必须获取到网络流量的数据内容,而网络流量的基本单位是以太网报文,智能网卡能够将网络中传输的光、电信号转换成最小网络流量单位报文;因此,通过现行网络3gpp规范已知定义协议对网络报文进行解析以得到网络报文元信息,因为网络报文格式是一层一层嵌套封装的,所以需要一层一层剥开解析以提取各个网络报文元信息;已知定义协议有IPV4、IPV6、TCP、UDP、STCP、GTP。

优选地,网络报文元信息包括IP分片信息、TCP乱序信息、TCP分段信息;

根据网络报文元信息获取网络报文长度包括如下步骤:

A1.根据IP分片信息、TCP乱序信息和TCP分段信息,处理网络报文以获取网络报文长度。

步骤A1中,在可编程网络芯片的整个流程中,对单个报文进行解析后将IP分片、TCP乱序、TCP分段报文进行了排序和重组,会将原本需要多个报文头拼接的报文组成一个整体,正好与根据报文长度区域划分的连续物理地址空间内存相结合,能最大程度的减少多个报文头占用缓存空间浪费,以及多个报文上传导致的尾巴剩余空间浪费,从而提升整体报文换效率。

TCP是Transmission Control Protocol的缩写,是指传输控制协议,是实现计算机之间的通信、网络系统资源共享所必不可少和非常重要的协议。它实现的功能不仅仅是弥补物理层和数据链路层协议中通信功能的缺陷,保证相同计算机系统之间、相同计算机网络系统之间信息的可靠传输,通过传输控制协议还要实现不同计算机系统之间、不同计算机网络系统之间信息的可靠传输。

具体的,IP分片是指因为受限了网络环境中设备传输限制,当实际生产数据大于传输限制时,会对IP报文进行拆分成分片传输;TCP乱序是指受网络信号质量、网络传输路径等影响,可能导致先传输报文后于晚传输报文达到终点,从而产生了TCP乱序报文;TCP分段是指当业务程序承载数据量过大时,需要将数据进行分段处理,形成多个TCP分段数据。

优选地,所述步骤A1,包括:

B1.根据所述IP分片信息对所述网络报文重组,以获取第一报文。

步骤B1中,通过可编程网络芯片网卡的可编程性,能最大程度将零散IP分片报文进行重组后形成第一报文以供后续使用。

优选地,所述步骤B1之后,包括:

C1.根据所述TCP乱序信息对所述第一报文进行排序,以获取第二报文。

步骤C1中,通过可编程网络芯片网卡的可编程性,能最大程度将零散IP分片报文进行重组后的乱序报文进行排序后形成第二报文以供后续使用。

优选地,所述步骤C1之后,包括:

D1.根据所述TCP分段信息对所述第二报文进行分段重组获取第三报文,以获取第三报文长度。

步骤D1中,经过IP分片和TCP乱序排序后的网络报文存在TCP分段,则将网络报文进行TCP分段重组来得到第三报文长度;因为经过IP分片重组和TCP乱序排序和TCP分段重组后,并没有割舍原始的网络报文长度,因此,第三报文长度就是最终的网络报文长度。由于将多包合并共用报文头部信息,从而使缓存报文缓存效率得到大量提升;并且由于业务程序接收到连续空间内存的同一业务包能加快处理速度提升内存复用率,从而使处理性能和报文缓存使用效率进行提升。

如图2所示,优选地,所述步骤S3包括:

F1.根据预设大页内存页数获取大页内存;

F2.根据大页内存获取连续内存地址空间;

F3.根据预设顺序对大页内存进行排序以形成内存区块;

F4.根据预设内存段范围对内存区块进行切分以形成内存段集合。

步骤F1中,通过调用系统API根据用户预留预设大页内存的内存页数申请可分配大页内存。

需要说明的是,大页内存有时也叫“大内存页”、“内存大页”、“标准大页”。操作系统以内存页为单位管理内存,内存页的大小对系统性能有影响。内存页设得太小,内存页会很多,管理内存页的数组会比较大,耗内存,内存页的大小的最优值是不同的,所以一般的系统都支持多种内存页的取值。

步骤F2中,根据可分配大页内存来获取可连续内存地址空间,可以减少空间浪费,同时可以保持高性能的连续地址空间的快速传输。

需要说明的是,在现有技术中,报文缓存模式对于每个报文预留的存储空间均为固定大小;将此固定大小的内存空间用于存放网络报文帧元数据以及网络报文帧本身,申请和释放缓存空间均只需要一个指令完成,但是因为网络流量中报文帧的大小不一而且分布不规律,此模式会带来极大的内存空间浪费,尤其在某些可能只需要处理报文头部信息业务流程中,由前端分流器对报文进行了截断,此时每个报文将会固定在某个比较小的报文长度范围内,空间浪费将会急剧加大;并且智能网卡同一个业务处理队列在往服务器DMA传送数据时由于要跳过固定长度中大段的空白地址空间,无法保持高性能的连续地址空间的快速传输。

步骤F3中,根据连续地址空间对大页内存进行从大到小的排序以形成不同大小的内存区块。在服务器驱动程序中根据用户预设预留大页内存页数申请可分配大页内存,将所有大页内存尽量在物理地址或者逻辑地址上申请到最大可连续内存地址空间;然后将所有大页内存按照可连续地址空间进行从大到小排序组成多个不同大小的内存区块。

步骤F4中,根据内存段对内存区块进行切分以形成内存段集合。本申请将网络报文的长度根据64-9216的报文长度范围划分成8段,然后从各个不同大小的内存区块进行内存段的切分,最终形成内存段集合,且保证每个内存段能存放以64-9216长度范围8段切分的最大长度值报文2048个。

如图3所示,优选地,所述步骤F2包括:

H1.将大页内存映射至逻辑地址;

H2.将逻辑地址映射至物理地址;

H3.根据物理地址获取连续内存地址空间。

步骤H1至H3中,服务器驱动需先从系统中申请到指定大页内存块,然后将申请到的指定大页内存块进行虚拟地址与物理地址映射并整理每个块的对应关系;将整理的大页内存进行地址排序并建立对应索引方便后续进行内存地址检索,然后根据排序结果对大页内存块进行分段操作并建立队列索引机制;得到不同大小块,然后跟报文长度分段进行一一对应并且建立其中的索引表,组建各种长度的段管理队列,并将所有队列表项交给队列管理单元进行调度,由于所有缓存块是根据实际报文长度区域进行划分,即可最大程度解决使用固定长度缓存块的空间浪费问题提升缓存效率;并且由于缓存块处于连续地址空间内,报文前后预留长度可以自由配置。

需要说明的是,网卡向内存DMA请求需要使用物理地址。

优选地,所述步骤S4,具体为:

根据网络报文长度从内存段集合中匹配网络报文长度范围的存储空间以存储网络报文。

具体的,由于网络报文长度的范围不一致以及内存段集合中的存储空间也不一致,因此,需要根据根据网络报文长度从内存段集合中选取适合网络报文长度范围的存储空间来存储网络报文。

如图4所示,一种报文缓存系统,包括获取模块、处理模块、内存段集合模块和存储模块;

获取模块,用于根据网络报文帧获取网络报文元信息;

处理模块,用于根据网络报文元信息获取网络报文长度;

内存段集合模块,用于获取内存段集合;

存储模块,用于根据网络报文长度从内存段集合中获取存储空间以存储所述网络报文。

实际运用过程中,报文缓存系统中,设置有获取模块、处理模块、内存段集合模块和存储模块;获取模块与处理模块连接;内存段集合模块与获取模块、处理模块是并列关系;存储模块分别与处理模块、内存段集合模块连接;获取模块获取网络报文元信息后,将网络报文元信息发送至处理模块中;处理模块根据网络报文元信息获取网络报文长度后,将网络报文长度发送至选取存储模块中;内存段集合模块获取内存段集合后,将内存段集合发送至存储模块中;存储模块根据网络报文长度从内存段集合中选取存储空间以存储网络报文长度。

在本申请所提供的实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个模块或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

另外,在本发明各实施例中的各功能模块可以全部集成在一个处理器中,也可以是各模块分别单独作为一个器件,也可以两个或两个以上模块集成在一个器件中;本发明各实施例中的各功能模块既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令及相关的硬件来完成,前述的程序指令可以存储于计算机可读取存储介质中,该程序指令在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

应当理解,本申请中如若使用了“系统”、“装置”、“单元”和/或“模块”,仅是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换该词语。

如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。

本申请中如若使用了流程图,则该流程图是用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。

以上对本发明所提供的一种报文缓存方法及系统进行了详细介绍。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术分类

06120116019863