【技术实现步骤摘要】
一种报文转发方法、终端及计算机可读存储介质
[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目的端口号大于预设值,读取端口号对应的转发规...
【专利技术属性】
技术研发人员:李小军,吴闽华,孟庆晓,秦金昆,
申请(专利权)人:深圳震有科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。