报文的处理系统和方法技术方案

技术编号:15106013 阅读:116 留言:0更新日期:2017-04-08 16:38
本发明专利技术公开了一种报文的处理系统和方法,该系统包括:报文缓存区,用于存放接收报文和发送报文;收包队列,用于存放接收报文的物理地址;发包队列,用于存放发送报文的物理地址和报文长度。本发明专利技术通过使用统一的报文缓存区来存储接收报文和发送报文,并使收包队列、发包队列分别仅存储接收报文和发送报文的地址,从而实现报文接收、报文发送、报文转发全程零数据拷贝,并能够有效地降低CPU的处理时间、提高处理效率。

【技术实现步骤摘要】

本专利技术涉及报文处理领域,具体来说,涉及一种报文的处理系统和方法
技术介绍
操作系统的标准网卡驱动是基于数据拷贝操作的,即报文数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行拷贝。但是,数据拷贝操作导致极大的CPU开销,限制了处理性能,因此,提出了零拷贝(zero-copy)技术以避免不必要CPU数据拷贝操作。但是,传统零拷贝机制虽然能在一定程度上实现零拷贝报文接收和发送,却无法实现零拷贝报文的转发。其中,报文接收为网卡将收到的报文交给CPU处理;报文发送为CPU将报文交给网卡,网卡将报文发送到网络中;报文转发为将接收到的报文经过修改或不修改再发送出去。因此,对于传统的零拷贝机制来说,当需要对报文进行转发时,必须将接收报文从接收缓存区拷贝到发送缓存区。显然,这样的报文拷贝操作将消耗大量CPU时间,严重影响系统处理性能。针对相关技术中的上述问题,目前尚未提出有效的解决方案。
技术实现思路
针对相关技术中的上述问题,本专利技术提出一种报文的处理系统和方法,能够实现报文接收、报文发送、报文转发全程零数据拷贝,并有效地降低CPU的处理时间、提高处理效率,有效改善报文处理的性能。本专利技术的技术方案是这样实现的:根据本专利技术的一个方面,提供了一种报文的处理系统。该处理系统包括:报文缓存区,用于存放接收报文和发送报文;收包队列,用于存放接收报文的物理地址;发包队列,用于存放发送报文的物理地址和报文长度。其中,报文缓存区、收包队列、发包队列均为地址连续的内存区域。此外,报文缓存区包括多个固定长度的报文存储单元,用于存放接收报文和发送报文。其中,一个报文存储单元用于存放一个接收报文或一个发送报文。另外,接收报文的物理地址为存放该接收报文的报文存储单元的物理地址;发送报文的物理地址为存放该发送报文的报文存储单元的物理地址。根据本专利技术的另一方面,提供了一种用于上述任意一项处理系统的处理方法。该处理方法包括:从报文缓存区申请第一报文存储单元以存放接收报文的报文内容;将该第一报文存储单元的物理地址写入收包队列;根据收包队列中存放的物理地址在报文缓存区的对应第一报文存储单元中读取接收报文。此外,该处理方法进一步包括:从报文缓存区申请第二报文存储单元,并将发送报文的报文内容写入至第二报文存储单元;将该第二报文存储单元的物理地址和该发送报文的报文长度写入发包队列;在发送完成发送报文后,释放第二报文存储单元的存储空间。另外,该处理方法进一步包括:在需要对接收报文转发的情况下,根据应用需求对读取的接收报文进行修改或不修改处理;将该第一报文存储单元的物理地址和经过该修改或不修改处理后的该接收报文的报文长度写入发包队列;在经过该修改后不修改处理后的该接收报文转发完成后,释放第一报文存储单元的存储空间。此外,该处理方法进一步包括:在不需要对接收报文转发的情况下,在读取接收报文后,释放第一报文存储单元的存储空间。本专利技术通过使用统一的报文缓存区来存储接收报文和发送报文,并使收包队列、发包队列分别仅存储接收报文和发送报文的地址,从而实现报文接收、报文发送、报文转发全程零数据拷贝,并能够有效地降低CPU的处理时间、提高处理效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例的报文的处理系统的示意图;图2是根据本专利技术实施例的报文的处理方法的流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。根据本专利技术的实施例,提供了一种报文的处理系统。如图1所示,根据本专利技术实施例的处理系统包括:报文缓存区,用于存放接收报文和发送报文;收包队列,用于存放接收报文的物理地址;发包队列,用于存放发送报文的物理地址和报文长度。其中,在一个实施例中,接收报文的物理地址为存放该接收报文的报文存储单元的物理地址;发送报文的物理地址为存放该发送报文的报文存储单元的物理地址。此外,从图1可以看出,处理系统在运行过程中还包括CPU、网卡。其中,在一个实施例中,报文缓存区为一块地址连续的内存区域,分割为大量的固定长度的报文存储单元,每个报文存储单元可以存放一个网络报文(发送报文或接收报文),并且,每个报文存储单元的长度相同。此外,在一个实施例中,收包队列为一块地址连续的内存区域,用来存放接收报文的地址,报文地址指向报文缓存区的报文存储单元。另外,在一个实施例中,发包队列为一块地址连续的内存区域,用来存放发送报文的地址和报文长度,报文地址指向报文缓存区的报文存储单元。此外,根据本专利技术实施例的处理系统还包括:头指针和尾指针,用于管理收包队列和发包队列。其中,在一个实施例中,头指针和尾指针为网卡寄存器。在具体实例中,CPU控制头指针,网卡控制尾指针。在一个实施例中,头指针和尾指针之间的队列内容为CPU放入队列中等待网卡处理的内容。在一个实施例中,在处理系统启动之前,需要进行系统初始化,具体包括:网卡驱动申请地址连续的内存空间作为报文缓存区、收包队列、发包队列;将收包队列、发包队列的起始物理地址和深度写入网卡相应寄存器;以及,由于操作系统包括内核态和用户态,在用户态CPU只能访问自身的虚拟地址空间所以,需要用户态程序使用mmap(一个文件或者其它对象映射进内存)将报文缓存区、收包队列、发包队列、网卡寄存器映射到虚拟地址空间,这样CPU才可以访问上述报文缓存区、收包队列、发包队列和网卡寄存器。根据本专利技术的实施例,还提供了一种用于上述处理系统的报文的处理方法。如图2所示,根据本专利技术实施例的处理方法包括:步骤S201,从报文缓存区申请第一报文存储单元以存放接收报文的报文内容;步骤S203,将该第一报文存储单元的物理地址写入收包队列;步骤S205,根据收包队列中存放的物理地址在报文缓存区的对应第一报文存储单元中读取接收本文档来自技高网...

【技术保护点】
一种报文的处理系统,其特征在于,包括:报文缓存区,用于存放接收报文和发送报文;收包队列,用于存放所述接收报文的物理地址;发包队列,用于存放所述发送报文的物理地址和报文长度。

【技术特征摘要】
1.一种报文的处理系统,其特征在于,包括:
报文缓存区,用于存放接收报文和发送报文;
收包队列,用于存放所述接收报文的物理地址;
发包队列,用于存放所述发送报文的物理地址和报文长度。
2.根据权利要求1所述的处理系统,其特征在于,所述报文缓存区、
所述收包队列、所述发包队列均为地址连续的内存区域。
3.根据权利要求1所述的处理系统,其特征在于,所述报文缓存区包
括多个固定长度的报文存储单元,用于存放所述接收报文和所述发送报文。
4.根据权利要求3所述的处理系统,其特征在于,一个报文存储单元
用于存放一个所述接收报文或一个所述发送报文。
5.根据权利要求3所述的处理系统,其特征在于,所述接收报文的物
理地址为存放该接收报文的报文存储单元的物理地址;所述发送报文的物
理地址为存放该发送报文的报文存储单元的物理地址。
6.一种用于如权利要求1~5任意一项所述的处理系统的处理方法,其
特征在于,包括:
从所述报文缓存区申请第一报文存储单元以存放所述接收报文的报文
内容;
将该第一报文存储单元的物理地址写...

【专利技术属性】
技术研发人员:陈玉龙甯青松纪奎窦晓光
申请(专利权)人:曙光信息产业北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1