一种报文转发方法、终端及计算机可读存储介质技术

技术编号:32164550 阅读:22 留言:0更新日期:2022-02-08 15:18
本发明专利技术公开了一种报文转发方法、终端及计算机可读存储介质,所述方法包括:在内核中申请一段内存作为共享内存,应用层与内核共享所述共享内存;转发应用程序配置转发规则,并将所述转发规则发送到所述共享内存进行存储;网口驱动接收网口硬件发送的报文,所述网口驱动从共享内存中读取转发规则,匹配当前报文的转发规则,调用网口将当前报文进行转发。本发明专利技术直接在网口驱动上进行报文转发,报文只在网口驱动上进行处理,应用层和内核驱动共享内存,用于存放应用层下发的转发规则,当一个报文从网口驱动收上来后,匹配转发规则,进行相应的报文处理,然后再调用网口发送的接口,直接转发出去,大大提高了转发性能。大大提高了转发性能。大大提高了转发性能。

【技术实现步骤摘要】
一种报文转发方法、终端及计算机可读存储介质


[0001]本专利技术涉及通信
,尤其涉及一种报文转发方法、终端及计算机可读存储介质。

技术介绍

[0002]Linux(操作系统内核)平台下的网络报文转发,有几种方式。如图1所示,第一种是在应用层通过socket(套接字)将报文全部收上来,然后再转发出去,这个思路非常简单,实现容易,但是有个非常大的性能问题,报文从内核收到应用层,需要进行一次内存拷贝;报文从应用层发送到内核并转发出去,也需要一次拷贝。一个报文从接收处理,到转发完成,会经历2次内存拷贝。在每秒几十万个报文流量的情况下,这种方式很可能处理不过来。
[0003]如图2所示,第二种方法是通过Linux的Netfilter(Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换和基于协议类型的连接跟踪成为了可能)模块,在报文进入内核协议栈之前进行报文解析,然后根据应用层iptables配置的规则进行转发。这种方案比第一种性能提本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种报文转发方法,其特征在于,所述报文转发方法包括:在内核中申请一段内存作为共享内存,应用层与内核共享所述共享内存;转发应用程序配置转发规则,并将所述转发规则发送到所述共享内存进行存储;网口驱动接收网口硬件发送的报文,所述网口驱动从共享内存中读取转发规则,匹配当前报文的转发规则,调用网口将当前报文进行转发。2.根据权利要求1所述的报文转发方法,其特征在于,所述在内核中申请一段内存作为共享内存,应用层与内核共享所述共享内存,具体包括:启动内核转发模块;申请连续的物理内存;将所述物理内存所在的内存页面置为保留页面标志;将所述物理内存重新映射到用户空间;内核规则表为所述物理内存指向的内存空间。3.根据权利要求2所述的报文转发方法,其特征在于,所述用户空间表示地址空间。4.根据权利要求1所述的报文转发方法,其特征在于,所述转发应用程序配置转发规则,并将所述转发规则发送到所述共享内存进行存储,具体包括:开启用户空间APP;打开内核转发模块的驱动设备;获取转发规则表地址;初始化转发规则表;按照UDP端口号为索引,每个端口号分配一条转发规则。5.根据权利要求4所述的报文转发方法,其特征在于,所述转发规则包括:源MAC、目的MAC和有效标志。6.根据权利要求1所述的报文转发方法,其特征在于,所述网口驱动接收网口硬件发送的报文,所述网口驱动从共享内存中读取转发规则,匹配当前报文的转发规则,调用网口将当前报文进行转发,具体包括:第一网口开始接收报文;判断报文是否为IP报文;如果报文是IP报文,判断报文是否为UDP报文;如果报文是UDP报文,判断UDP目的端口号是否大于预设值;如果UDP目的端口号大于预设值,读取端口号对应的转发规...

【专利技术属性】
技术研发人员:李小军吴闽华孟庆晓秦金昆
申请(专利权)人:深圳震有科技股份有限公司
类型:发明
国别省市:

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

1