一种数据报文转发方法及装置的制作方法

文档序号:7756859阅读:141来源:国知局
专利名称:一种数据报文转发方法及装置的制作方法
技术领域
本发明涉及Linux操作系统上的数据转发技术,特别是指一种数据报文转发方法
及装置。
背景技术
IT行业的激烈竞争,产品价格的不断下跌,都对IT企业带来了严峻的挑战。大家都纷纷将目光投到低价的嵌入式(Linux)操作系统上,Linux的普及以及发展就此展开。对终端类的网络产品来说,Linux无疑是操作系统的一个很好的选择。而且随着网络的发展,IP网络的使用越来越广泛,几乎每个人都有使用网络查询数据、电子邮件往返和玩联机游戏的经验。在这种情况下,用户对网速的要求也越来越高。但是目前光网络接入终端中非本地产生数据包的路由过程包括数据包接收、数据包选路、数据包发送三个步骤。当网卡收到一个数据包,会产生一个硬中断,网卡中断处理函数会识别出接收到一个数据包并调用硬中断处理函数进行处理,硬中断处理函数申请一个sk_buff (sk_buff是Linux网络代码中的一个重要的数据结构,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用),然后将数据从网卡拷贝至sk_buff所分配的数据空间。数据包经过硬中断后到接收软中断,然后上协议栈(在协议栈上经过桥处理到IP分发,再寻找路由),然后进QOS队列,再转给发送软中断,最后经硬件发送。至此,数据包离开本机,整个转发过程结束。IP的路由过程经历了数据接收,转发寻路和数据发送三个过程,在一般情况下,一个连接的所有数据包都将使用同一路径进行转发,在CPU都需要上协议栈进行处理,严重降低了报文转发的速度。而且sk_buff的结构变量比较多,由于协议栈中的很多模块都使用它,创建这个结构时很多变量都需要初始化,在快速转发时很多变量都用不到但也会初始化。

发明内容
本发明提供一种数据报文转发方法及装置,用于快速提高数据包的转发速度。本发明实施例提供了一种数据报文转发方法,包括当网卡终端处理单元识别出网卡接收到一个数据包时,通知硬中断处理单元进行处理;硬中断处理单元申请fk_buff数据存储结构,将该数据包从网卡中复制到fk_buff的数据区;确定该数据包是否满足转发条件;如果该数据包满足转发条件,则快速转发模块根据该数据报文的五元组信息索引设置的转发表中的转发表项,获得对应的转发路径,并按照转发路径利用硬件发送函数将fk_buff的数据区中的数据包转发;如果不满足转发条件,则将fk_buff作为sk_buff的数据上传给协议栈处理。本发明实施例提供的一种数据报文转发装置,包括
网卡终端处理单元,识别出网卡接收到一个数据包时,通知硬中断处理单元网卡处理数据包;硬中断处理单元,用于收到网卡收到数据包的通知时,申请fk_buff数据存储结构,将该数据包从网卡中复制到fk_buff的数据区;确定该数据包是否满足转发条件;快速转发单元,用于如果该数据包满足转发条件,则根据该数据报文的五元组信息索引转发表中的转发表项,获得对应的转发路径,并按照转发路径利用硬件发送函数将fk.buff的数据区中的数据包转发;如果不满足转发条件,则将fk_buff作为Sk_bufT的数据上传给协议栈处理。本发明实施例中,网卡终端处理单元收到数据报文时,通知硬中断处理单元网卡处理数据包;硬中断处理单元收到网卡收到数据包的通知时,申请fk_buff数据存储结构,将该数据包从网卡中复制到fk_buff的数据区;确定该数据包是否满足转发条件;如果该数据包满足转发条件,快速转发单元则根据该数据报文的五元组信息索引转发表中的转发表项,获得对应的转发路径,并按照转发路径利用硬件发送函数将fk_buff的数据区中的数据包转发;如果不满足转发条件,则将fk_buff作为sk_buff的数据上传给协议栈处理。采用这种方案,IP数据包的一个连接的所有数据包都使用同一路径进行转发,在连接的开始阶段记录下连接的转发路径,那么后续数据包的转发就可以提前进行,而不用每次都上传到协议栈的网络层去执行,因此,提高了报文转发速度。


图I为本发明实施例的数据报文转发方法的流程示意图;图2为fk_buff和sk_buff的对比不意图;图3为本发明实施例转发表的具体的维护流程示意图;图4为本发明实施例的快速转发路径的示意图;图5为本发明实施例的数据报文转发装置的结构示意图。
具体实施例方式为了提高转发速度,本发明实施例收到数据报文时,获得该数据报文的五元组信息,并判断数据报文是否为转发报文;如果是转发报文,则按照保存的转发表中该五元组信息对应的转发路径转发该数据报文;如果不是转发报文,则获取将该数据报文进行协议栈处理后,获得该数据报文的路由信息,再按照该路由信息发送该数据报文。参见图I所示,本发明实施例的数据报文转发方法包括以下步骤步骤101 :当网卡终端处理单元识别出网卡接收到一个数据包时,调用硬中断处理单元进行处理。具体的,该网卡终端处理单元可以是网卡终端处理函数。步骤102 :硬中断处理单元申请fk_buff数据存储结构,将该数据包从网卡中复制到fk_buff的数据区。硬中断处理单元可以是硬中断处理函数。步骤103 :硬中断处理单元确定该数据包是否满足转发条件;如果该数据包满足转发条件,则执行步骤104,否则,执行步骤105。具体的,可以这样判断确定该数据报文的五元组信息是否存在于转发表中,如果存在,则认为该数据报文为转发报文,否则,认为该数据报文为非转发报文。
步骤104 :快速转发模块根据该数据报文的五元组信息索引设置的转发表中的转发表项,获得对应的转发路径,并按照转发路径将fk_buff的数据区中的数据包转发,结束。具体的利用硬件发送函数进行发送。步骤105 :快速转发模块将fk_buff作为sk_buff的数据上传给协议栈处理。在本发明实施例中使用的是只用于快速转发的fk_buff结构,用于数据包的接收、转发和发送。这样就进一步提高了 IP数据包的转发速度。如果这个数据包并没有匹配到快速转发的规则,那么它可以直接作为Sk-buffer的数据区,给IP协议栈使用。参见表I所示,所述fk_bufT数据存储结构包括fk_bufT使用者计数、是否作为sk_bufT的数据区、存放数据包的起始指针、数据包长度、用于数据包头添加的预留字段、数据包。
权利要求
1.一种数据报文转发方法,其特征在于,该方法包括以下步骤当网卡终端处理单元识别出网卡接收到一个数据包时,通知硬中断处理单元进行处理;硬中断处理单元申请fk_buff数据存储结构,将该数据包从网卡中复制到fk_buff的数据区;确定该数据包是否满足转发条件;如果该数据包满足转发条件,则快速转发模块根据该数据报文的五元组信息索引设置的转发表中的转发表项,获得对应的转发路径,并按照转发路径利用硬件发送函数将fk_buff的数据区中的数据包转发;如果不满足转发条件,则将fk_buff作为sk_buff的数据上传给协议栈处理。
2.根据权利要求I所述的方法,其特征在于,所述fk_bufT数据存储结构包括fk_buff使用者计数、是否作为sk_bufT的数据区、存放数据包的起始指针、数据包长度、用于数据包头添加的预留字段、数据包。
3.根据权利要求I所述的方法,其特征在于,所述五元组信息包括IP源地址、IP目的地址、源端口、目的端口和协议号。
4.根据权利要求I所述的方法,其特征在于,所述转发路径包括路由信息,以太网头信息、VLAN TAG字段信息和PPP头信息,则按照转发路径将fk_buff的数据区中的数据包转发,包括将路由信息、以太网头信息、VLAN TAG字段信息和PPP头信息添加到fk_buff的数据区中的数据包中进行发送。
5.根据权利要求I所述的方法,其特征在于,所述转发表项通过如下方式设置在连接建立时连接跟踪机制被确认后,确定该连接的五元组信息对应的转发路径,并将确定的五元组信息对应的转发路径添加到转发表项中。
6.根据权利要求I所述的方法,其特征在于,判断数据报文是否满足转发条件,包括判断该数据报文的五元组信息是否存在于转发表中,如果存在,则认为该数据报文为转发报文,满足转发条件,否则,认为该数据报文为非转发报文,不满足转发条件。
7.根据权利要求6所述的方法,其特征在于,根据该数据报文的五元组信息索引转发表中的转发表项获得对应的转发路径时,针对该转发表项设置使用标记。
8.根据权利要求7所述的方法,其特征在于,进一步包括如果连接跟踪定时器超时,则确定转发表中的转发表项是否使用过,如果该转发表项使用过,则清除使用标记,如果未使用过,则删除该转发表项。
9.一种数据报文转发装置,其特征在于,该装置包括网卡终端处理单元,识别出网卡接收到一个数据包时,通知硬中断处理单元网卡处理数据包;硬中断处理单元,用于收到网卡收到数据包的通知时,申请fk_buff数据存储结构,将该数据包从网卡中复制到fk_buff的数据区;确定该数据包是否满足转发条件;快速转发单元,用于如果该数据包满足转发条件,则根据该数据报文的五元组信息索引转发表中的转发表项,获得对应的转发路径,并按照转发路径利用硬件发送函数将fk_buff的数据区中的数据包转发;如果不满足转发条件,则将fk_bufT作为sk_bufT的数据上传给协议栈处理。
10.根据权利要求9所述的装置,其特征在于,所述fk_buff数据存储结构包括fk_buff使用者计数、是否作为sk_bufT的数据区、存放数据包的起始指针、数据包长度、用于数据包头添加的预留字段和数据包。
11.根据权利要求9所述的装置,其特征在于,所述五元组信息包括IP源地址、IP目的地址、源端口、目的端口和协议号。
12.根据权利要求9所述的装置,其特征在于,所述转发路径包括路由信息、以太网头信息、VLAN TAG字段信息和PPP头信息,则按照转发路径将fk_buff的数据区中的数据包转发,包括将路由信息、以太网头信息、VLAN TAG字段信息和PPP头信息添加到fk_buff的数据区中的数据包中进行发送。
13.根据权利要求9所述的装置,其特征在于,进一步包括路径管理单元,用于在连接建立时连接跟踪机制被确认后,确定该连接的五元组信息对应的转发路径,并将确定的五元组信息对应的转发路径添加到转发表项中。
14.根据权利要求9所述的装置,其特征在于,快速转发单元,用于判断该数据报文的五元组信息是否存在于转发表中,如果存在,则认为该数据报文为转发报文,满足转发条件,否则,认为该数据报文为非转发报文,不满足转发条件。
15.根据权利要求14所述的装置,其特征在于,所述路径管理单元,用于在快速转发单元根据该数据报文的五元组信息索引转发表中的转发表项获得对应的转发路径时,针对该转发表项设置使用标记。
16.根据权利要求15所述的装置,其特征在于,所述路径管理单元,用于如果连接跟踪定时器超时,则确定转发表中的转发表项是否使用过,如果该转发表项使用过,则清除使用标记,如果未使用过,则删除该转发表项。
全文摘要
为了提高报文转发速度,本发明公开了一种数据报文转发方法及装置,该方法为当网卡终端处理单元识别出网卡接收到一个数据包时,调用硬中断处理单元进行处理;硬中断处理单元申请fk_buff数据存储结构,将该数据包从网卡中复制到fk_buff的数据区;确定该数据包是否满足转发条件;如果该数据包满足转发条件,则快速转发模块根据该数据报文的五元组信息索引设置的转发表中的转发表项,获得对应的转发路径,并利用硬件发送函数将fk_buff的数据区中的数据包转发;如果不满足转发条件,则将fk_buff作为sk_buff的数据上传给协议栈处理。
文档编号H04L12/70GK102957600SQ201110239908
公开日2013年3月6日 申请日期2011年8月19日 优先权日2011年8月19日
发明者郭红燕, 王日红, 靳海燕 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1