Linux下实现网络加速的方法

文档序号:7954413阅读:3326来源:国知局
专利名称:Linux下实现网络加速的方法
技术领域
本发明涉及网络通信领域,特别涉及在LINUX操作系统下利用软件实现网络加速的方法。
背景技术
随着网络技术的飞速发展,网络设备的种类越来越多,而人们对网络产品的性能要求也越来越高,对产品价格期望越来越便宜。传统的加速方法通常采用纯硬件加速,或者使用软件配合硬件的实现方法对数据进行加速,如果涉及到硬件实现加速,势必会增加芯片的复杂度,进而增加芯片的生产成本,进而增加产品的成本。

发明内容
本发明的目的是设计一种纯软件加速实现网络加速的方法。本发明实现其发明目的所采用的技术方案是,LINUX下实现网络数据加速的方法,包括以下步骤
步骤A、从网络驱动器获得连接信息,判断该连接是否已加入到连接表中,否则,将该连接加入到所述的连接表中;
步骤B、提取目的地址,判断是从网络层转发还是从数据链路层转发,如果是数据链路层,则按照连接表直接发往接口驱动的TX函数,否则,转入步骤C ;
步骤C、将协议字段提取出来,进行方向判断,如果是从WAN向LAN,则转向步骤D,如果是从LAN向WAN则转向步骤F ;
步骤D、从WAN 口获取协议类型,如果是IP协议,则替换源MAC、源IP报头和源端口,转向步骤E,如果是PPPOE协议,则替换源MAC、增加PPOE报头,替换源IP和源端口,转向步骤E,
步骤E、将数据直接送往LAN驱动中的TX函数;步骤F、判断WAN协议类型,如果是PPOE协议,则剥除PPPOE报头;步骤G、连接跟踪表,替换目的IP地址、目的端口 ;步骤H、将数据发往网络驱动器。进一步的,上述的LINUX下实现网络数据加速的方法中所述的网络驱动器包括以太网络驱动和无线风驱动。进一步的,上述的LINUX下实现网络数据加速的方法中所述的步骤G中的跟踪表为LINUX协议栈连接跟踪条目表。相对于传统的加速器的实现,本发明的软件网络加速技术方案实现有如下几处创新
1、在离硬件最近处,即网络驱动层就进行数据转发。传统的软件网络加速通常都是协议栈中实现加速,而不会在驱动中去实现,这种实现方式会导致加速性能不够,当前的软件加速实现方法直接在网络驱动中对数据进行加速,网络数据触发中断后,直接进行加速,不再进行其它处理,这样使得数据转发处理非常高效;
2、在网络驱动中结合LINUX协议栈连接跟踪条目表进行网络数据加速。传统的网络加速器通常都是加速器模块本身在对数据连接信息进行解包,分析,然后将连接信息存储起来,在下次数据转发时,然后再利用学习的连接信息进行NAT替换,替换源地址和源端口,没有充分利充利用协议栈本身的连接信息,当前的软件加速在数据进入加速器入口前会检查数据包是否已被加速器处理过,如果没有被处理过,则走正常的网络转发路径到协议栈中,在完成了正常的连接过程后,将数据连接信息添加到协议栈的信息表中,当下次数据包过来时,直接经过加速器转发,将数据直接从LAN侧转发到WAN侧。WAN侧接收到的数据也采用同样的处理方法进行数据转发;
3、能同时对二层转发及三层转发的数据进行加速处理,LAN<->LAN侧的数据转发通常是走二层,LAN<->WAN数据通信通常是走三层,共进电子软件加速功能能同时支持这两种数据的加速转发,提高系统性能。下面结合附图和具体实施方式
对本发明进行详细地说明。


图1是网络数据驱动示意图。图2是发明流程图。图3是目前通过数据链路层传送数据流程图。图4是增加了本发明的网络数据加速方法的数据链路层传送数据流程图。图5是目前通过网络层传送数据流程图。图6是增加了本发明的网络数据加速方法的网络层传送数据流程图。
具体实施例方式实施例1,如图1所示,网络数据主要有如下几个入口点
以太网驱动,即上图中的ET部分,LAN<->LAN,LAN<->WAN之间转发的时候,数据从网口收到数据后即进入ET模块,在该模块中进行加速处理。另外,以太网驱动还涉及LAN内部数据传输加速。无线驱动,即上图中的WL部分,WLAN<->LAN,WLAN<->WAN之间转的时候,数据从无线网络收到数据后即进入莫块,在该模块中进行数据加速处理。支持二层Bridge (数据链路层)和三层TCP/IP (网络层)协议栈的数据加速二层(数据链路层)数据加速,按照正常的路径,如图3所示,先在ET或者WL驱动部
分接收数据,收到数据后将数据送往Linux Bridge中进行转发,Bridge会进行各种数据检查,接口判断等处理,会消耗较多的时间性能,在增加了软件加速模块后,直接在ET和WL模块中进行转发,不进入Linux Bridge中进行处理,提高数据转发性能如图4所示。三层(网络层)数据加速,按照正常的路径,如图5所示,先有ET或者WL部分接收数据,接着送往Linux Bridge中处理,再将数据往上传递到TCP/IP协议栈,经过网络处理进行NAT转换后再往ET或者WL驱动中发送,整个路径耗时较长,在增加了软件加速模块后,如图6所示,直接在ET和WL模块中进行加速转发,提高数据转发性能。如图2所示,LINUX下实现网络数据加速的方法,包括以下步骤步骤A、从网络驱动器获得连接信息,判断该连接是否已加入到连接表中,否则,将该连接加入到所述的连接表中;这里网络驱动器包括以太网络驱动ET和无线网络驱动WL。步骤B、提取目的地址,判断是从网络层转发还是从数据链路层转发,如果是数据链路层,则按照连接表直接发往接口驱动的TX函数,否则,转入步骤C ;
步骤C、将协议字段提取出来,进行方向判断,如果是从WAN向LAN,则转向步骤D,如果是从LAN向WAN则转向步骤F ;
步骤D、从WAN 口获取协议类型,如果是IP协议,则替换源MAC、源IP报头和源端口,转向步骤E,如果是PPPOE协议,则替换源MAC、增加PPOE报头,替换源IP和源端口,转向步骤E,
步骤E、将数据直接送往LAN驱动中的TX函数;步骤F、判断WAN协议类型,如果是PPOE协议,则剥除PPPOE报头;步骤G、连接跟踪表,替换目的IP地址、目的端口 ;步骤H、将数据发往网络驱动器。数据转发接口判断二层数据转发接口判断,二层数据转发接口判断主要是依赖MAC地址的学习,依据目标MAC地址判断数据应该发往何接口,因此加速模块会利用LinuxBridge中的br_fdb. c中对学习到的MAC地址信息进行共享,软件加速模块直接利用共享的MAC地址信息对加速数据进行转发。三层数据处理判断,三层数据转发主要是依据路由表和连接跟踪信息对数据进行修改和转发,因此加速模块会利用Linux Netfilter模块中的连接跟踪信息进行共享,在数据建立连接信息时,将连接信息共享给软件加速模块,软件加速模块利用这些信息对数据包进行NAT转换,转换后直接在LAN (ET,WL)<->WAN (ET)之间进行转发。软件加速针对二层数据和三层数据需要进行判断
> 二层数据加速主要是进行加速转发,在驱动之间进行数据传递.>三层数据的加速,还需要考虑到数据方向,LAN->WAN还是WAN->LAN,判定后根据连接跟踪表进行数据替换,也就是NAT转换,转换后再在驱动中进行数据传递。
权利要求
1.LINUX下实现网络数据加速的方法,其特征在于包括以下步骤步骤A、从网络驱动器获得连接信息,判断该连接是否已加入到连接表中,否则,将该连接加入到所述的连接表中;步骤B、提取目的地址,判断是从网络层转发还是从数据链路层转发,如果是数据链路层,则按照连接表直接发往接口驱动的TX函数,否则,转入步骤C ;步骤C、将协议字段提取出来,进行方向判断,如果是从WAN向LAN,则转向步骤D,如果是从LAN向WAN则转向步骤F ;步骤D、从WAN 口获取协议类型,如果是IP协议,则替换源MAC、源IP报头和源端口,转向步骤E,如果是PPPOE协议,则替换源MAC、增加PPOE报头,替换源IP和源端口,转向步骤E,步骤E、将数据直接送往LAN驱动中的TX函数;步骤F、判断WAN协议类型,如果是PPOE协议,则剥除PPPOE报头;步骤G、连接跟踪表,替换目的IP地址、目的端口 ;步骤H、将数据发往网络驱动器。
2.根据权利要求1所述的LINUX下实现网络数据加速的方法,其特征在于所述的网络驱动器包括以太网络驱动和无线风驱动。
3.根据权利要求1所述的LINUX下实现网络数据加速的方法,其特征在于所述的步骤G中的跟踪表为LINUX协议栈连接跟踪条目表。
全文摘要
LINUX下实现网络数据加速的方法,该方法通过判断是二层转发还是三层转发,对于二层转发直接发送到TX函数,如果是三层转必,通过判断不同的通信协议进行不同的加速方法。本发明的主要特点是首先、在离硬件最近处,即网络驱动层就进行数据转发。其次在网络驱动中结合LINUX协议栈连接跟踪条目表进行网络数据加速。最后,能同时对二层转发及三层转发的数据进行加速处理,LAN<->LAN侧的数据转发通常是走二层,LAN<->WAN数据通信通常是走三层。
文档编号H04L12/56GK102394815SQ20111033405
公开日2012年3月28日 申请日期2011年10月28日 优先权日2011年10月28日
发明者罗小建 申请人:深圳市共进电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1