一种多网口间以太网报文转发方法及系统技术方案

技术编号:14512367 阅读:59 留言:0更新日期:2017-02-01 09:58
本发明专利技术公开了一种多网口间以太网报文转发方法及系统,所述方法为:A、预先设置每个网口接收报文缓冲区个数为第一预定值,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区个数为第二预定值,发送报文缓冲区不预先分配内存;B、通过每个网口创建自己的接收以太网报文网络数据包任务,采取轮询方式收包;C、当网口接收到以太网报文后,判断以太网报文是否需要转发;D、当判断接收到的以太网报文需要转发时,通过调用需要被转发到的网口发包函数发送当前接收报文缓冲区报文,对需要被转发到的网口当前发送报文缓冲区设置不需要释放内存的标识,实现多网口间以太网报文零内存申请零拷贝转发,显著提升系统性能。

【技术实现步骤摘要】

本专利技术涉及网络数据转发
,尤其涉及的是一种多网口间以太网报文转发方法及系统
技术介绍
在数据通讯领域,经常要碰到大流量以太网报文转发的需求,如何提升处理器转发能力和系统数据吞吐能力,是系统工程师要思考的问题。传统的设计模式:网口A收报后,经过实际需要处理后,将报文指针传给网口B发送函数转发出去,同时给网口A重新申请内存,挂载在当前的BD上。网口B发送完成后,负责释放内存。另外,传统的网口驱动都采用中断方式,虽然实时性很强,但是在大流量下非常频繁的中断导致系统调度增加,内核也会消耗CPU资源。以上方法在一般流量下可以从容应付,但是在大流量每秒钟收包达到五万个以上时,则会出现大量丢包,CPU占用率超高,系统变得很不稳定。系统在内存申请和释放的操作上消耗了太多CPU资源,每秒钟至少是申请释放五万次以上。因此,现有技术还有待于改进和发展。
技术实现思路
鉴于上述现有技术的不足之处,本专利技术的目的在于提供一种多网口间以太网报文转发方法及系统,旨在通过省略报文转发时内存申请和释放的操作提升系统性能,实现多网口间以太网报文零内存申请零拷贝的转发。为了达到上述目的,本专利技术解决技术问题所采用的技术方案如下:一种多网口间以太网报文转发方法,包括以下步骤:A、预先设置每个网口接收报文缓冲区个数为第一预定值,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区个数为第二预定值,每个发送报文缓冲区不预先分配内存;B、通过每个网口创建自己的接收以太网报文网络数据包任务,采取轮询方式收包;C、当网口接收到以太网报文后,判断以太网报文是否需要转发;D、当判断接收到的以太网报文需要转发时,通过调用需要被转发到的网口发包函数发送当前接收报文缓冲区报文,并对需要被转发到的网口当前发送报文缓冲区设置不需要释放内存的标识。所述的多网口间以太网报文转发方法,其中,还包括步骤E:当判断网口接收到的以太网报文不需要转发时,则重新分配内存替代收到的以太网报文所在的内存,并将所述以太网报文内存传输给上层协议栈处理。所述的多网口间以太网报文转发方法,其中,步骤B具体为:每个网口接收报文缓冲区指针采用轮询方式、实时查询接收报文缓冲区是否已经收到报文,如果有收到报文,则查询下一个接收报文缓冲区,同时修改接收报文缓冲区指针。所述的多网口间以太网报文转发方法,其中,步骤C具体为:当网口接收到以太网报文后,判断是否符合特定业务,如果是,则需要转发,否则不需要转发。所述的多网口间以太网报文转发方法,其中,步骤D还包括:转发以太网报文的网口收包任务调用被转发到的网口发包函数时,通过发包函数首先判断发包网口发送报文缓冲区是否有保存上一轮发送时保存的、需要释放的内存指针,如果有,则释放,并保存当前发送的内存和释放标识。一种多网口间以太网报文转发系统,包括:预设置模块,用于预先设置每个网口接收报文缓冲区个数为第一预定值,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区个数为第二预定值,发送报文缓冲区不预先分配内存;收包模块,用于通过每个网口创建自己的接收以太网报文网络数据包任务,采取轮询方式收包;判断模块,用于当网口接收到以太网报文后,判断以太网报文是否需要转发;转发模块,用于当判断接收到的以太网报文需要转发时,通过调用需要被转发到的网口发包函数发送当前接收报文缓冲区报文,并对需要被转发到的网口当前发送报文缓冲区设置不需要释放内存的标识。所述的多网口间以太网报文转发系统,其中,还包括:协议栈处理模块,用于当判断网口接收到的以太网报文不需要转发时,则重新分配内存替代收到的以太网报文所在的内存,并将所述以太网报文内存传输给上层协议栈处理。所述的多网口间以太网报文转发系统,其中,收包模块具体为:每个网口接收报文缓冲区指针采用轮询方式、实时查询接收报文缓冲区是否已经收到报文,如果有收到报文,则查询下一个接收报文缓冲区,同时修改接收报文缓冲区指针。所述的多网口间以太网报文转发系统,其中,判断模块具体为:当网口接收到以太网报文后,判断是否符合特定业务,如果是,则需要转发,否则不需要转发。所述的多网口间以太网报文转发系统,其中,转发模块还包括:转发以太网报文的网口收包任务调用被转发到的网口发包函数时,通过发包函数首先判断发包网口发送报文缓冲区是否有保存上一轮发送时保存的、需要释放的内存指针,如果有,则释放,并保存当前发送的内存和释放标识。有益效果:相较于现有技术,本专利技术提供的一种多网口间以太网报文转发方法及系统,所述方法包括:A、预先设置每个网口接收报文缓冲区个数为第一预定值,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区个数为第二预定值,发送报文缓冲区不预先分配内存;B、通过每个网口创建自己的接收以太网报文网络数据包任务,采取轮询方式收包;C、当网口接收到以太网报文后,判断以太网报文是否需要转发;D、当判断接收到的以太网报文需要转发时,通过调用需要被转发到的网口发包函数发送当前接收报文缓冲区报文,并对需要被转发到的网口当前发送报文缓冲区设置不需要释放内存的标识。通过省略报文转发时内存申请和释放的操作,同时网口驱动采用轮询收报方式,每调度一次处理最多2000个报文,亦可节省OS内核调度时间,CPU占用率降低15%左右,实现多网口间以太网报文零内存申请零拷贝的转发,系统性能提升非常显著。附图说明图1为本专利技术提供的一种多网口间以太网报文转发方法较佳实施例流程图。图2为本专利技术提供的一种多网口间以太网报文转发系统功能模块图。具体实施方式为使本专利技术的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。请参见图1,图1是本专利技术提供的一种多网口间以太网报文转发方法较佳实施例流程图,包括步骤:S100、预先设置每个网口接收报文缓冲区个数为第一预定值,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区个数为第二预定值,每个发送报文缓冲区不预先分配内存;实施时,预先设置每个网口接收报文缓冲区、即接收报文缓冲区个数为第一预定值,第一预定值优选的为50000个,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区、即发送报文缓冲区的个数为第二预定值,第二预定值优选的为50000个,发送报文缓冲区不预先分配内存。具体来说,预先设置每个网口接收报文缓冲区,即Receive(缩写为RX)BufferDescription(缩写为BD),亦即接收报文缓冲区个数为50000个,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区,即Transmit(缩写为TX)BufferDescription,亦即发送报文缓冲区的个数为50000个,发送报文缓冲区不预先分配内存。S200、通过每个网口创建自己的接收以太网报文网络数据包任务,采取轮询方式收包;在本步骤中,通过每个网口创建自己的接收以太网报文网络数据包任务,即收包任务,采取轮询(即polling)方式收包。步骤S200中具体收包方式为:每个网口接收报文缓冲区指针、即接收报文缓冲区RING采用轮询方式、本文档来自技高网...

【技术保护点】
一种多网口间以太网报文转发方法,其特征在于,包括以下步骤:A、预先设置每个网口接收报文缓冲区个数为第一预定值,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区个数为第二预定值,每个发送报文缓冲区不预先分配内存;B、通过每个网口创建自己的接收以太网报文网络数据包任务,采取轮询方式收包;C、当网口接收到以太网报文后,判断以太网报文是否需要转发;D、当判断接收到的以太网报文需要转发时,通过调用需要被转发到的网口发包函数发送当前接收报文缓冲区报文,并对需要被转发到的网口当前发送报文缓冲区设置不需要释放内存的标识。

【技术特征摘要】
1.一种多网口间以太网报文转发方法,其特征在于,包括以下步骤:A、预先设置每个网口接收报文缓冲区个数为第一预定值,每个接收报文缓冲区预先分配1600字节的内存,预先设置每个网口发送报文缓冲区个数为第二预定值,每个发送报文缓冲区不预先分配内存;B、通过每个网口创建自己的接收以太网报文网络数据包任务,采取轮询方式收包;C、当网口接收到以太网报文后,判断以太网报文是否需要转发;D、当判断接收到的以太网报文需要转发时,通过调用需要被转发到的网口发包函数发送当前接收报文缓冲区报文,并对需要被转发到的网口当前发送报文缓冲区设置不需要释放内存的标识。2.根据权利要求1所述的多网口间以太网报文转发方法,其特征在于,还包括步骤E:当判断网口接收到的以太网报文不需要转发时,则重新分配内存替代收到的以太网报文所在的内存,并将所述以太网报文内存传输给上层协议栈处理。3.根据权利要求1所述的多网口间以太网报文转发方法,其特征在于,步骤B具体为:每个网口接收报文缓冲区指针采用轮询方式、实时查询接收报文缓冲区是否已经收到报文,如果有收到报文,则查询下一个接收报文缓冲区,同时修改接收报文缓冲区指针。4.根据权利要求1所述的多网口间以太网报文转发方法,其特征在于,步骤C具体为:当网口接收到以太网报文后,判断是否符合特定业务,如果是,则需要转发,否则不需要转发。5.根据权利要求1所述的多网口间以太网报文转发方法,其特征在于,步骤D还包括:转发以太网报文的网口收包任务调用被转发到的网口发包函数时,通过发包函数首先判断发包网口发送报文缓冲区是否有保存上一轮发送时保存的、需要释放的内存指针,如果有,则释放,并保存当前发送的内存和释放标识。6.一种多网口间以太网报文...

【专利技术属性】
技术研发人员:李小军
申请(专利权)人:深圳震有科技股份有限公司
类型:发明
国别省市:广东;44

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

1