一种进程间报文传输的方法、设备及介质技术

技术编号:27751635 阅读:19 留言:0更新日期:2021-03-19 13:47
本说明书提供一种进程间报文传输的方法、设备及介质,所述方法包括:预先分配的物理内存,并将该物理内存分别映射到内核态进程和应用进程,得到两者分别对应的虚拟内存空间,在传输报文时,发送报文的进程确定需要发送的报文在其对应的虚拟内存空间中的缓存地址,并根据发送报文的进程对应的虚拟内存空间的起始地址和该缓存地址,确定报文的地址偏移量,并将该偏移量通过Socket机制,发送给接收报文的进程,接收报文的进程根据接收的偏移量,和接收报文的进程对应的虚拟内存空间的起始地址,通过其对应的虚拟内存空间,从物理内存中获取该报文。在本说明书实施例中,在报文传输过程中,减少了拷贝次数,提升了报文传输效率。

【技术实现步骤摘要】
一种进程间报文传输的方法、设备及介质
本说明书涉及计算机应用
,尤其涉及一种进程间报文传输的方法、设备及介质。
技术介绍
在网络设备收发与处理报文的过程中,在操作系统(一般是linux)层面上往往会运行3种进程,分别是用于收发报文的网卡驱动进程、用于对报文进行网络协议层面处理的协议栈进程以及用于对报文进行应用层面处理的应用进程。其中,网卡驱动进程与协议栈进程之间需要进行报文传输,协议栈进程与应用进程之间需要进行报文传输。在实际应用中,网卡驱动进程与协议栈进程是基于内核态运行的,应用进程是基于用户态运行的。然而,基于内核态运行的进程与基于用户态运行的进程通常是基于Socket机制进行报文传输的,在进行报文传输时,会涉及到对报文的多次拷贝操作,此操作需要一定的时间开销,会降低报文传输效率。
技术实现思路
为克服现有技术中存在的报文传输效率低的问题,本说明书提供了一种进程间报文传输的方法、设备及介质。根据本说明书实施例的第一方面,提供一种进程间报文传输的方法,将网络设备的部分物理内存空间映射到网卡驱动进程与协议栈进程之间共享的地址空间,得到内核态虚拟内存空间,以及将所述部分物理内存空间映射到应用进程的地址空间,得到用户态虚拟内存空间;所述协议栈进程属于内核态进程,所述方法包括:所述网卡驱动进程接收报文,并将所述报文写入所述内核态虚拟内存空间;所述协议栈进程对所述报文处理后,基于所述报文在所述内核态虚拟内存空间中的缓存地址与所述内核态虚拟内存空间的起始地址,确定地址偏移量;所述协议栈进程基于套接字Socket机制,将所述地址偏移量传输给所述应用进程;所述应用进程基于所述地址偏移量与所述用户态虚拟内存空间的起始地址,确定所述报文在所述用户态虚拟内存空间中的缓存地址,并基于确定的缓存地址获取所述报文。根据本说明书实施例的第二方面,提供一种进程间报文传输的方法,将网络设备的部分物理内存空间映射到网卡驱动进程与协议栈进程之间共享的地址空间,得到内核态虚拟内存空间,以及将所述部分物理内存空间映射到应用进程的地址空间,得到用户态虚拟内存空间;所述协议栈进程属于内核态进程,所述方法包括:所述应用进程对报文处理完成后,将所述处理完成后的报文写入所述用户态虚拟内存空间;所述应用进程基于所述报文在所述用户态虚拟内存空间中的缓存地址与所述用户态虚拟内存空间的起始地址,确定地址偏移量;所述应用进程基于套接字Socket机制,将所述地址偏移量传输给所述协议栈进程;所述协议栈程基于所述地址偏移量与所述内核态虚拟内存空间的起始地址,确定所述报文在所述内核态虚拟内存空间中的缓存地址,并基于确定的缓存地址获取所述报文并对所述报文进行处理;在协议栈进程对所述报文处理完成后,网卡驱动进程通过所述内核态虚拟内存空间,获取并发送所述报文。根据本说明书实施例的第三方面,提供一种网络设备,将网络设备的部分物理内存空间映射到网卡驱动进程与协议栈进程之间共享的地址空间,得到内核态虚拟内存空间,以及将所述部分物理内存空间映射到应用进程的地址空间,得到用户态虚拟内存空间;所述网络设备在运行时:所述网卡驱动进程接收报文,并将所述报文写入所述内核态虚拟内存空间;所述协议栈进程对所述报文处理后,基于所述报文在所述内核态虚拟内存空间中的缓存地址与所述内核态虚拟内存空间的起始地址,确定地址偏移量;所述协议栈进程基于套接字Socket机制,将所述地址偏移量传输给所述应用进程;所述应用进程基于所述地址偏移量与所述用户态虚拟内存空间的起始地址,确定所述报文在所述用户态虚拟内存空间中的缓存地址,并基于确定的缓存地址获取所述报文。根据本说明书实施例的第四方面,提供一种网络设备,将网络设备的部分物理内存空间映射到网卡驱动进程与协议栈进程之间共享的地址空间,得到内核态虚拟内存空间,以及将所述部分物理内存空间映射到应用进程的地址空间,得到用户态虚拟内存空间;所述网络设备在运行时:所述应用进程对报文处理完成后,将所述处理完成后的报文写入所述用户态虚拟内存空间;所述应用进程基于所述报文在所述用户态虚拟内存空间中的缓存地址与所述用户态虚拟内存空间的起始地址,确定地址偏移量;所述应用进程基于套接字Socket机制,将所述地址偏移量传输给所述协议栈进程;所述协议栈程基于所述地址偏移量与所述内核态虚拟内存空间的起始地址,确定所述报文在所述内核态虚拟内存空间中的缓存地址,并基于确定的缓存地址获取所述报文并对所述报文进行处理;在协议栈进程对所述报文处理完成后,网卡驱动进程通过所述内核态虚拟内存空间,获取并发送所述报文。根据本说明书实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现本说明书实施例第一或第二方面任一方面所述的进程间报文传输的方法。本说明书实施例中,预先分配的物理内存,并将该物理内存分别映射到内核态进程和应用进程,得到两者分别对应的虚拟内存空间,在传输报文时,发送报文的进程确定需要发送的报文在其对应的虚拟内存空间中的缓存地址,并根据发送报文的进程对应的虚拟内存空间的起始地址和该缓存地址,确定报文的地址偏移量,并将该偏移量通过Socket机制,发送给接收报文的进程,接收报文的进程根据接收的偏移量,和接收报文的进程对应的虚拟内存空间的起始地址,通过其对应的虚拟内存空间,从物理内存中获取该报文。在本说明书实施例中,虽然仍是通过Socket进行通信,但是在通信过程中,减少了拷贝次数,提升了报文传输效率。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。图1是本说明书根据一示例性实施例示出的一种进程间的报文传输方法的流程图。图2是本说明书根据一示例性实施例示出的一种进程间的报文传输方法的应用场景图。图3是本说明书根据一示例性实施例示出的另一种进程间的报文传输方法的流程图。图4是本说明书根据一示例性实施例示出的另一种进程间的报文传输方法的应用场景图。图5是本说明书实施例执行进程间的报文传输方法的程序所在网络设备的一种硬件结构图。具体实施方式在网络设备中,用于收发报文的网卡驱动进程,和用于对报文进行网络协议层面处理的协议栈进程一般运行在内核态,而用于对报文进行应用业务层面处理的应用进程一般运行在用户态,而为了完成接收报文,对报文进行网络协议层面的处理,对报文进行应用层面的处理,对处理完成的报文进行网络协议层封装和发送报文这一整个流程,运行在用户态的应用进程,与运行在内核态的协议栈进程之间,需要进行通信,传输报文。在现有技术中,同一网络设备的协议栈进程和应用进程之间一般通过Socket机制进行报文传输。在网卡驱本文档来自技高网...

【技术保护点】
1.一种进程间的报文传输方法,其特征在于,将网络设备的部分物理内存空间映射到网卡驱动进程与协议栈进程之间共享的地址空间,得到内核态虚拟内存空间,以及将所述部分物理内存空间映射到应用进程的地址空间,得到用户态虚拟内存空间,所述方法包括:/n所述网卡驱动进程接收报文,并将所述报文写入所述内核态虚拟内存空间;/n所述协议栈进程对所述报文处理后,基于所述报文在所述内核态虚拟内存空间中的缓存地址与所述内核态虚拟内存空间的起始地址,确定地址偏移量;/n所述协议栈进程基于套接字Socket机制,将所述地址偏移量传输给所述应用进程;/n所述应用进程基于所述地址偏移量与所述用户态虚拟内存空间的起始地址,确定所述报文在所述用户态虚拟内存空间中的缓存地址,并基于确定的缓存地址获取所述报文。/n

【技术特征摘要】
1.一种进程间的报文传输方法,其特征在于,将网络设备的部分物理内存空间映射到网卡驱动进程与协议栈进程之间共享的地址空间,得到内核态虚拟内存空间,以及将所述部分物理内存空间映射到应用进程的地址空间,得到用户态虚拟内存空间,所述方法包括:
所述网卡驱动进程接收报文,并将所述报文写入所述内核态虚拟内存空间;
所述协议栈进程对所述报文处理后,基于所述报文在所述内核态虚拟内存空间中的缓存地址与所述内核态虚拟内存空间的起始地址,确定地址偏移量;
所述协议栈进程基于套接字Socket机制,将所述地址偏移量传输给所述应用进程;
所述应用进程基于所述地址偏移量与所述用户态虚拟内存空间的起始地址,确定所述报文在所述用户态虚拟内存空间中的缓存地址,并基于确定的缓存地址获取所述报文。


2.如权利要求1所述的方法,其特征在于,预先为Socket机制的发送函数添加第一计算功能,用于将所述报文在所述内核态虚拟内存空间中的缓存地址与所述内核态虚拟内存空间的起始地址相减,得到地址偏移量;预先为Socket机制的接收函数添加第二计算功能,用于将所述地址偏移量与所述用户态虚拟内存空间的起始地址相加,得到所述报文在所述用户态虚拟内存空间的缓存地址。


3.如权利要求1所述的方法,其特征在于,所述方法还包括:
所述应用进程在对所述报文完成处理后,通过所述用户态虚拟内存空间释放所述报文占用的物理内存。


4.一种进程间的报文传输方法,其特征在于,将网络设备的部分物理内存空间映射到网卡驱动进程与协议栈进程之间共享的地址空间,得到内核态虚拟内存空间,以及将所述部分物理内存空间映射到应用进程的地址空间,得到用户态虚拟内存空间,所述方法包括:
所述应用进程对报文处理完成后,将所述处理完成后的报文写入所述用户态虚拟内存空间;
所述应用进程基于所述报文在所述用户态虚拟内存空间中的缓存地址与所述用户态虚拟内存空间的起始地址,确定地址偏移量;
所述应用进程基于套接字Socket机制,将所述地址偏移量传输给所述协议栈进程;
所述协议栈程基于所述地址偏移量与所述内核态虚拟内存空间的起始地址,确定所述报文在所述内核态虚拟内存空间中的缓存地址,并基于确定的缓存地址获取所述报文并对所述报文进行处理;
在协议栈进程对所述报文处理完成后,网卡驱动进程通过所述内核态虚拟内存空间,获取并发送所述报文。


5.如权利要求4所述方法,其特征在于,预先为Socket机制的发送函数添加第一计算功能,用于将所述报文在所述用户态虚拟内存空间中的缓存地址与所述用户态虚拟内存空间...

【专利技术属性】
技术研发人员:曲博
申请(专利权)人:杭州迪普科技股份有限公司
类型:发明
国别省市:浙江;33

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

1