CN102394815B - Linux下实现网络加速的方法 - Google Patents
Linux下实现网络加速的方法 Download PDFInfo
- Publication number
- CN102394815B CN102394815B CN201110334051.4A CN201110334051A CN102394815B CN 102394815 B CN102394815 B CN 102394815B CN 201110334051 A CN201110334051 A CN 201110334051A CN 102394815 B CN102394815 B CN 102394815B
- Authority
- CN
- China
- Prior art keywords
- data
- network
- forwarding
- layer
- linux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
LINUX下实现网络数据加速的方法,该方法通过判断是二层转发还是三层转发,对于二层转发直接发送到TX函数,如果是三层转必,通过判断不同的通信协议进行不同的加速方法。本发明的主要特点是:首先、在离硬件最近处,即网络驱动层就进行数据转发。其次在网络驱动中结合LINUX协议栈连接跟踪条目表进行网络数据加速。最后,能同时对二层转发及三层转发的数据进行加速处理,LAN<->LAN侧的数据转发通常是走二层,LAN<->WAN数据通信通常是走三层。
Description
技术领域
本发明涉及网络通信领域,特别涉及在LINUX操作系统下利用软件实现网络加速的方法。
背景技术
随着网络技术的飞速发展,网络设备的种类越来越多,而人们对网络产品的性能要求也越来越高,对产品价格期望越来越便宜。传统的加速方法通常采用纯硬件加速,或者使用软件配合硬件的实现方法对数据进行加速,如果涉及到硬件实现加速,势必会增加芯片的复杂度,进而增加芯片的生产成本,进而增加产品的成本。
发明内容
本发明的目的是设计一种纯软件加速实现网络加速的方法。
本发明实现其发明目的所采用的技术方案是,LINUX下实现网络数据加速的方法,包括以下步骤:
步骤A、从网络驱动器获得连接信息,判断该连接是否已加入到连接表中,否则,将该连接加入到所述的连接表中;
步骤B、提取目的地址,判断是从网络层转发还是从数据链路层转发,如果是数据链路层,则按照连接表直接发往接口驱动的TX函数,否则,转入步骤C;
步骤C、将协议字段提取出来,进行方向判断,如果是从WAN向LAN,则转向步骤D,如果是从LAN向WAN则转向步骤F;
步骤D、从WAN口获取协议类型,如果是IP协议,则替换源MAC、源IP报头和源端口,转向步骤E,如果是PPPOE协议,则替换源MAC、增加PPPOE报头,替换源IP和源端口,转向步骤E,
步骤E、将数据直接送往LAN驱动中的TX函数;
步骤F、判断WAN协议类型,如果是PPPOE协议,则剥除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之间转的时候,数据从无线网络收到数据后即进入WL模块,在该模块中进行数据加速处理。
支持二层Bridge(数据链路层)和三层TCP/IP(网络层)协议栈的数据加速:
二层(数据链路层)数据加速,按照正常的路径,如图3所示,先在ET或者WL驱动部分接收数据,收到数据后将数据送往LinuxBridge中进行转发,Bridge会进行各种数据检查,接口判断等处理,会消耗较多的时间性能,在增加了软件加速模块后,直接在ET和WL模块中进行转发,不进入LinuxBridge中进行处理,提高数据转发性能如图4所示。
三层(网络层)数据加速,按照正常的路径,如图5所示,先有ET或者WL部分接收数据,接着送往LinuxBridge中处理,再将数据往上传递到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、增加PPPOE报头,替换源IP和源端口,转向步骤E,
步骤E、将数据直接送往LAN驱动中的TX函数;
步骤F、判断WAN协议类型,如果是PPPOE协议,则剥除PPPOE报头;
步骤G、连接跟踪表,替换目的IP地址、目的端口;
步骤H、将数据发往网络驱动器。
数据转发接口判断:
二层数据转发接口判断,二层数据转发接口判断主要是依赖MAC地址的学习,依据目标MAC地址判断数据应该发往何接口,因此加速模块会利用LinuxBridge中的br_fdb.c中对学习到的MAC地址信息进行共享,软件加速模块直接利用共享的MAC地址信息对加速数据进行转发。
三层数据处理判断,三层数据转发主要是依据路由表和连接跟踪信息对数据进行修改和转发,因此加速模块会利用LinuxNetfilter模块中的连接跟踪信息进行共享,在数据建立连接信息时,将连接信息共享给软件加速模块,软件加速模块利用这些信息对数据包进行NAT转换,转换后直接在LAN(ET、WL)<->WAN(ET)之间进行转发。
软件加速针对二层数据和三层数据需要进行判断:
二层数据加速主要是进行加速转发,在驱动之间进行数据传递.
三层数据的加速,还需要考虑到数据方向,LAN->WAN还是WAN->LAN,判定后根据连接跟踪表进行数据替换,也就是NAT转换,转换后再在驱动中进行数据传递。
Claims (3)
1.LINUX下实现网络数据加速的方法,其特征在于:包括以下步骤:
步骤A、从网络驱动器获得连接信息,判断该连接是否已加入到连接表中,否则,将该连接加入到所述的连接表中;
步骤B、提取目的地址,判断是从网络层转发还是从数据链路层转发,如果是数据链路层,则按照连接表直接发往接口驱动的TX函数,否则,转入步骤C;
步骤C、将协议字段提取出来,进行方向判断,如果是从WAN向LAN,则转向步骤D,如果是从LAN向WAN则转向步骤F;
步骤D、从WAN口获取协议类型,如果是IP协议,则替换源MAC、源IP报头和源端口,转向步骤E,如果是PPPOE协议,则替换源MAC、增加PPPOE报头,替换源IP和源端口,转向步骤E,
步骤E、将数据直接送往LAN驱动中的TX函数;
步骤F、判断WAN协议类型,如果是PPPOE协议,则剥除PPPOE报头;
步骤G、连接跟踪表,替换目的IP地址、目的端口;
步骤H、将数据发往网络驱动器。
2.根据权利要求1所述的LINUX下实现网络数据加速的方法,其特征在于:所述的网络驱动器包括以太网络驱动和无线网络驱动。
3.根据权利要求1所述的LINUX下实现网络数据加速的方法,其特征在于:所述的步骤G中的跟踪表为LINUX协议栈连接跟踪条目表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110334051.4A CN102394815B (zh) | 2011-10-28 | 2011-10-28 | Linux下实现网络加速的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110334051.4A CN102394815B (zh) | 2011-10-28 | 2011-10-28 | Linux下实现网络加速的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102394815A CN102394815A (zh) | 2012-03-28 |
CN102394815B true CN102394815B (zh) | 2014-03-05 |
Family
ID=45862025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110334051.4A Active CN102394815B (zh) | 2011-10-28 | 2011-10-28 | Linux下实现网络加速的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102394815B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104283923A (zh) * | 2013-07-08 | 2015-01-14 | 中兴通讯股份有限公司 | 一种网络设备数据转发方法及装置 |
CN104243447B (zh) * | 2014-07-24 | 2017-11-10 | 深圳市共进电子股份有限公司 | 一种基于Netfilter防火墙的数据流处理方法及装置 |
CN106936718B (zh) * | 2017-03-30 | 2019-12-13 | 网宿科技股份有限公司 | PPPoE报文传输方法和PPPoE服务器 |
CN107872545B (zh) | 2017-09-26 | 2022-12-06 | 中兴通讯股份有限公司 | 一种报文传输方法及装置、计算机可读存储介质 |
CN112019645B (zh) * | 2020-07-06 | 2021-07-30 | 中科驭数(北京)科技有限公司 | 基于toe的网络地址管理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7428730B2 (en) * | 2003-12-15 | 2008-09-23 | Intel Corporation | Software development environment |
US7673074B1 (en) * | 2002-10-24 | 2010-03-02 | Emulex Design & Manufacturing Corporation | Avoiding port collisions in hardware-accelerated network protocol |
CN101894019A (zh) * | 2010-06-12 | 2010-11-24 | 中山大学 | 一种嵌入式Linux操作系统网络加速运行的系统及方法 |
CN102004667A (zh) * | 2010-12-03 | 2011-04-06 | 上海交通大学 | 基于Linux的SOPC软硬件协同工作系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149817B2 (en) * | 2001-02-15 | 2006-12-12 | Neteffect, Inc. | Infiniband TM work queue to TCP/IP translation |
-
2011
- 2011-10-28 CN CN201110334051.4A patent/CN102394815B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7673074B1 (en) * | 2002-10-24 | 2010-03-02 | Emulex Design & Manufacturing Corporation | Avoiding port collisions in hardware-accelerated network protocol |
US7428730B2 (en) * | 2003-12-15 | 2008-09-23 | Intel Corporation | Software development environment |
CN101894019A (zh) * | 2010-06-12 | 2010-11-24 | 中山大学 | 一种嵌入式Linux操作系统网络加速运行的系统及方法 |
CN102004667A (zh) * | 2010-12-03 | 2011-04-06 | 上海交通大学 | 基于Linux的SOPC软硬件协同工作系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102394815A (zh) | 2012-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102394815B (zh) | Linux下实现网络加速的方法 | |
US9240894B2 (en) | Multicast snooping on layer 2 virtual private network | |
CN104852893B (zh) | 用于以太网和can通讯之间信号转换的车载设备及其控制方法 | |
CN101394360B (zh) | 地址解析协议报文的处理方法、接入设备和通信系统 | |
CN102368727B (zh) | 跨ip网络的trill网络通信方法、系统和设备 | |
CN104518973B (zh) | 一种基于sdn环境的数据的可靠组播传输方法 | |
CN102075438B (zh) | 单播数据帧传输方法及装置 | |
CN102970227A (zh) | 在asic中实现vxlan报文转发的方法和装置 | |
CN102769576B (zh) | 流表自学习方法、报文转发方法和交换机 | |
CN201100949Y (zh) | 网络设备 | |
EP2965455A2 (en) | Enhanced acknowledgement and retransmission mechanism | |
CN102035751A (zh) | 一种数据的传输方法和设备 | |
CN105812259A (zh) | 一种报文转发方法和设备 | |
CN110225071A (zh) | 车载智能网关及汽车 | |
CN103326918A (zh) | 一种报文转发方法和设备 | |
CN102299862B (zh) | 二层隧道快速转发设备和方法 | |
WO2008020401A3 (en) | Decoupled connections | |
CN105141538A (zh) | 一种跨网络堆叠系统及其对报文的处理方法 | |
CN103326948A (zh) | 至多播路由器端口的未登记多播包转发 | |
CN103392324A (zh) | 向聚合网络环境中的源端节点转发消息 | |
CN101499938B (zh) | 实现cfm中高频连续性检测的装置及方法 | |
CN102404204B (zh) | 网络拓扑中的加速方法、装置及系统 | |
CN102984070A (zh) | 一种以太网无编号接口实现数据转发方法 | |
JPWO2005112370A1 (ja) | アクセスネットワークシステム及び加入者データ経路制御方法 | |
CN101087257B (zh) | 基于以太接口针对虚拟专用网流量实现服务质量的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |