CN106878107B - 基于Linux内核驱动的网络带宽测速方法 - Google Patents
基于Linux内核驱动的网络带宽测速方法 Download PDFInfo
- Publication number
- CN106878107B CN106878107B CN201710110543.2A CN201710110543A CN106878107B CN 106878107 B CN106878107 B CN 106878107B CN 201710110543 A CN201710110543 A CN 201710110543A CN 106878107 B CN106878107 B CN 106878107B
- Authority
- CN
- China
- Prior art keywords
- speed
- testing
- driving
- information
- tests
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0894—Packet rate
Landscapes
- Engineering & Computer Science (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种基于Linux内核驱动的网络带宽测速方法,被设计成HTTP协议及FTP协议由上层测速应用负责,等传输建立完后再透过信息通讯界面通知测速驱动,测速驱动收到特定信息(TCP连接的五元组信息)后在测速驱动内建议一条测速信息条目;由测速驱动学习IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记;一旦学习成功,立刻截断有关下行测速流,改由测速驱动负责处理TCP报文;同时统计下载资料信息,统计成功后,应用层负责读取信息并回报给相应的测速应用;本发明能够实现更高带宽的测速,满足在高带宽的场景下测试出实际运营商提供给客户带宽能力的需求。
Description
技术领域
本发明涉及一种测速方法,尤其是一种网络带宽测速方法。
背景技术
电信运营商为客户提供一定带宽的Internet接入;为了检验带宽是否达标,一般均由客户使用个人电脑在网页上直接测速。但是随着智能网关的流行,测速转由网关来进行;客户通过相应测速应用来发起测速并查看结果。
当前的测速方法通常由网关使用测速应用下载特定服务器的特定文件来计算网络带宽;测速应用如wget、axel等;当今网关使用的SoC,虽然其转发包处理能力多为线速,但是真正CPU的包处理能力并不强。处理Linux内核封包能力有限;而测试应用处理的封包需经过Linux内核IP协议栈的处理后才能被此类测试应用处理,故无法胜任大带宽(比如大于1Gbps)测速,实效性以及准确性难以保证,而且小带宽的准确性不高;越接近网关CPU处理能力上限测速结构越不精准,存在较大误差;
因此目前在网关上直接测速还无法满足在高带宽的场景下测试出实际运营商提供给客户带宽能力的需求。
发明内容
本发明的目的在于克服现有技术中存在的不足,提供一种基于Linux内核驱动的网络带宽测速方法,此方法缩短了Linux内核包处理、应用层的开销,极大地利用了有限的网关CPU资源,实现更高带宽的测速,满足在高带宽的场景下测试出实际运营商提供给客户带宽能力的需求。本发明采用的技术方案是:
一种基于Linux内核驱动的网络带宽测速方法,包括以下步骤:
步骤S1,测速开始,测速应用和测速服务器建立TCP连接,测速应用和测速服务器的传输建立,透过HTTP或FTP协议从测速服务器找到需要下载的资料并开始下载;IP协议栈缓存部分资料;
步骤S2,测速应用立即透过信息通讯界面告知Linux内核需要测速驱动参与下载;Linux内核把与测速服务器建立的TCP连接的五元组信息告知测速驱动;测速驱动添加一条测速信息条目用于后续处理;
步骤S3,测速驱动在上行流方向检查途径的报文,抓取IP协议栈与测速服务器的上行ACK报文,一旦抓取到匹配的上行ACK报文后,测速驱动会学习上行ACK报文中所带的信息;
步骤S4,学习到上行ACK报文后,测速驱动开始检查下行资料的报文,匹配到条目后,对下行资料的报文进行分析,分析并学习下行资料报文中的信息;
然后测速驱动组建一个测速驱动回复测速服务器的ACK报文,填入学习到的信息;向测速服务器返回测速驱动回复测速服务器的ACK报文;
接下来的资料报文由测速驱动处理;
步骤S5,测速结束后,上层测速应用负责从测速驱动取回测速资料。
进一步地,步骤S1中,测速应用不实际接收资料文件。
进一步地,步骤S2中,建立的测速信息条目用于记录:
Linux内核与测速服务器建立的TCP连接的五元组信息,学习以获得的IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记,以及统计信息。
进一步地,步骤S3中,测速驱动学习到的上行ACK报文中的信息包括:IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记。
进一步地,步骤S4中,测速驱动学习到的下行资料报文中的信息包括:IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记。
进一步地,步骤S4中,测速驱动组建一个测速驱动回复测速服务器的ACK报文,资料报文由测速驱动处理。
进一步地,步骤S4中,测速驱动对收到的下行资料的报文作丢弃处理,不再发回IP协议栈以及上层的测速应用。
本发明的优点在于:本发明提供的方法缩短了Linux内核包处理、应用层的开销,以及Linux内核网络栈中TCP重传的影响,直接在Linux内核驱动层对TCP包进行处理,从而极大地利用了有限的网关CPU资源,实现更高带宽的测速,满足在高带宽的场景下测试出实际运营商提供给客户带宽能力的需求。
附图说明
图1为本发明的实施例结构组成示意图。
图2为本发明的测速驱动的主要逻辑示意图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
实施例整体架构如图1所示,测试应用通过Linux内核与测速服务器通信;在Linux内核中,设有IP协议栈、PON驱动;PON驱动用于与网络中的OLT(光线路终端)通信,测速服务器连接OLT;
基于Linux内核驱动的网络带宽测速方法,通过设置一个测速驱动于上行媒介收发驱动处,上下行报文均会流经此处;由于IP协议栈庞大而复杂,不宜也不易放在测速驱动内;图1中上行为PON驱动向测速服务器方向;正常情况下测速驱动不工作,Linux内核接收到的资料由PON驱动对接Linux内核的IP协议栈;
本测速方法被设计成HTTP协议及FTP协议由上层测速应用负责,等传输建立完后再透过信息通讯界面通知测速驱动,测速驱动收到特定信息(TCP连接的五元组信息)后在测速驱动内建议一条测速信息条目;由测速驱动学习IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记;一旦学习成功,立刻截断有关下行测速流,改由测速驱动负责处理TCP报文;同时统计下载资料信息,统计成功后,应用层负责读取信息并回报给相应的测速应用;
测速驱动的主要处理逻辑如图2所示,包括四大部分:
1)测速信息条目,
测速信息是一笔资料结构,包含了测速驱动处理的五元组信息、IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记,以及统计信息等;
2)上行流处理,
上行流处理主要负责学习测速连接的信息,用于后续下行接替IP协议栈处理下行报文;
3)下行流处理,
下行流处理只有在上行流处理完才会介入,主要负责资料包统计,协议分析,然后根据需要回复ACK报文,收到的资料报文作丢弃处理,不发回IP协议栈和上层测速应用;
4)资料管理及异常处理,
这一部分负责添加删除测速信息,处理各种正常和异常情况,比如下载时间到,下载结束,学习失败,下载异常等;
在测速时,包括以下步骤:
步骤S1,测速开始,测速应用和测速服务器建立TCP连接,测速应用和测速服务器的传输建立,透过HTTP或FTP协议从测速服务器找到需要下载的资料并开始下载;测速应用不实际接收资料文件,但Linux内核已经开始下载,IP协议栈缓存一部分资料;
步骤S2,测速应用立即透过信息通讯界面告知Linux内核需要测速驱动参与下载;Linux内核把与测速服务器建立的TCP连接的五元组信息告知测速驱动;测速驱动添加一条测速信息条目用于后续处理;
步骤S3,测速驱动在上行流方向检查途径的报文,由于Linux内核的IP协议栈会缓存一部分资料,因此可以抓取到IP协议栈与测速服务器的上行ACK报文,一旦抓取到匹配的上行ACK报文后,测速驱动会学习上行ACK报文中所带的一些信息,比如IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记;这些学习到的信息会用于测速驱动组建测速驱动回复测速服务器的ACK报文;
步骤S4,学习到上行ACK报文后,测速驱动开始检查下行资料的报文,匹配到条目后,对下行资料的报文进行分析,分析并学习下行资料报文中的各信息,比如IP层的标识、TCP层的序号(Sequence Number)、TCP层窗口大小、及可选的时间戳标记;
然后测速驱动组建一个测速驱动回复测速服务器的ACK报文,填入学习到的信息,包括IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记;向测速服务器返回测速驱动回复测速服务器的ACK报文;这样测速驱动就完美替换了IP协议栈以及测速应用的功能;
此步骤中,测速驱动对收到的下行资料的报文作丢弃处理,不再发回IP协议栈以及上层的测速应用;
此处省去了IP协议栈处理,以及Linux内核到应用层(测速应用处于应用层)的资料拷贝动作,资料报文收到后经过简单判断即被忽略,因此效率极高;
步骤S5,当下载完成或者下载时间到了后,上层测速应用负责从测速驱动取回测速资料。
经实际测试,本发明提供的方法,对于高带宽场景下的测试结果远优于传统方法的测试结果。如下表所示:
运营商实际带宽 | 传统方法 | 本发明的方法 |
100M | 95M | 98M |
240M | 220M | 236M |
1G | 350M | 965M |
Claims (6)
1.一种基于Linux内核驱动的网络带宽测速方法,其特征在于,包括以下步骤:
步骤S1,测速开始,测速应用和测速服务器建立TCP连接,测速应用和测速服务器的传输建立,透过HTTP或FTP协议从测速服务器找到需要下载的资料并开始下载;IP协议栈缓存部分资料;
步骤S2,测速应用立即透过信息通讯界面告知Linux内核需要测速驱动参与下载;Linux内核把与测速服务器建立的TCP连接的五元组信息告知测速驱动;测速驱动添加一条测速信息条目用于后续处理;
步骤S3,测速驱动在上行流方向检查途径的报文,抓取IP协议栈与测速服务器的上行ACK报文,一旦抓取到匹配的上行ACK报文后,测速驱动会学习上行ACK报文中所带的信息;
步骤S4,学习到上行ACK报文后,测速驱动开始检查下行资料的报文,匹配到条目后,对下行资料的报文进行分析,分析并学习下行资料报文中的信息;
然后测速驱动组建一个测速驱动回复测速服务器的ACK报文,填入学习到的信息;向测速服务器返回测速驱动回复测速服务器的ACK报文;
接下来的资料报文由测速驱动处理;
步骤S5,测速结束后,上层测速应用负责从测速驱动取回测速资料。
2.如权利要求1所述的基于Linux内核驱动的网络带宽测速方法,其特征在于,
步骤S1中,测速应用不实际接收资料文件。
3.如权利要求1所述的基于Linux内核驱动的网络带宽测速方法,其特征在于,
步骤S2中,建立的测速信息条目用于记录:
Linux内核与测速服务器建立的TCP连接的五元组信息,学习以获得的IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记,以及统计信息。
4.如权利要求1所述的基于Linux内核驱动的网络带宽测速方法,其特征在于,
步骤S3中,测速驱动学习到的上行ACK报文中的信息包括:IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记。
5.如权利要求1所述的基于Linux内核驱动的网络带宽测速方法,其特征在于,
步骤S4中,测速驱动学习到的下行资料报文中的信息包括:IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记。
6.如权利要求1所述的基于Linux内核驱动的网络带宽测速方法,其特征在于,
步骤S4中,测速驱动对收到的下行资料的报文作丢弃处理,不再发回IP协议栈以及上层的测速应用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710110543.2A CN106878107B (zh) | 2017-02-28 | 2017-02-28 | 基于Linux内核驱动的网络带宽测速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710110543.2A CN106878107B (zh) | 2017-02-28 | 2017-02-28 | 基于Linux内核驱动的网络带宽测速方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106878107A CN106878107A (zh) | 2017-06-20 |
CN106878107B true CN106878107B (zh) | 2019-10-29 |
Family
ID=59169043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710110543.2A Active CN106878107B (zh) | 2017-02-28 | 2017-02-28 | 基于Linux内核驱动的网络带宽测速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106878107B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707422A (zh) * | 2017-08-24 | 2018-02-16 | 四川天邑康和通信股份有限公司 | 基于onu驱动层快速ack回复的网络测速方法 |
CN108011781A (zh) * | 2017-12-06 | 2018-05-08 | 上海市共进通信技术有限公司 | 基于Linux内核提高网络设备测试性能的方法 |
CN110958153A (zh) * | 2019-11-01 | 2020-04-03 | 上海盈赞通信科技有限公司 | 网络传输速率检测系统、方法及存储介质 |
CN111565131B (zh) * | 2020-04-22 | 2022-04-08 | 烽火通信科技股份有限公司 | 一种家庭网关cpu测速方法及系统 |
CN113676378B (zh) * | 2021-08-24 | 2024-05-24 | 芯河半导体科技(无锡)有限公司 | 一种简化Linux TCP协议栈的网络带宽测速方法 |
CN116708247B (zh) * | 2022-09-24 | 2024-05-17 | 荣耀终端有限公司 | 路由器测速方法和路由器 |
CN118381839A (zh) * | 2023-01-20 | 2024-07-23 | 达发科技(苏州)有限公司 | 计算机装置及其传输控制协议报文处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633110A (zh) * | 2005-01-14 | 2005-06-29 | 中国科学院计算技术研究所 | 基于Linux内核的流量分析方法 |
EP1681813B1 (en) * | 2002-06-28 | 2007-11-28 | Microsoft Corporation | Method and system for measuring load and capacity on a variable capacity channel |
US7424526B1 (en) * | 2001-07-31 | 2008-09-09 | Sprint Communications Company L.P. | Internet service node incorporating a bandwidth measurement device and associated methods for evaluating data transfers |
CN104780004A (zh) * | 2015-05-05 | 2015-07-15 | 烽火通信科技股份有限公司 | 一种家庭网关的带宽测速系统及方法 |
CN105978754A (zh) * | 2016-05-13 | 2016-09-28 | 中国联合网络通信集团有限公司 | 一种网络质量检测方法及网关设备 |
CN106302016A (zh) * | 2016-08-18 | 2017-01-04 | 成都网优力软件有限公司 | 小流量快速获取网络物理带宽的方法及系统 |
-
2017
- 2017-02-28 CN CN201710110543.2A patent/CN106878107B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7424526B1 (en) * | 2001-07-31 | 2008-09-09 | Sprint Communications Company L.P. | Internet service node incorporating a bandwidth measurement device and associated methods for evaluating data transfers |
EP1681813B1 (en) * | 2002-06-28 | 2007-11-28 | Microsoft Corporation | Method and system for measuring load and capacity on a variable capacity channel |
CN1633110A (zh) * | 2005-01-14 | 2005-06-29 | 中国科学院计算技术研究所 | 基于Linux内核的流量分析方法 |
CN104780004A (zh) * | 2015-05-05 | 2015-07-15 | 烽火通信科技股份有限公司 | 一种家庭网关的带宽测速系统及方法 |
CN105978754A (zh) * | 2016-05-13 | 2016-09-28 | 中国联合网络通信集团有限公司 | 一种网络质量检测方法及网关设备 |
CN106302016A (zh) * | 2016-08-18 | 2017-01-04 | 成都网优力软件有限公司 | 小流量快速获取网络物理带宽的方法及系统 |
Non-Patent Citations (2)
Title |
---|
IP网络性能测量技术研究;谢高岗;《中国博士学位论文全文数据库》;20040315;I136-33 * |
无线网络可用带宽测试技术方案研究;叶青等;《邮电设计技术》;20150620;第37-41页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106878107A (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106878107B (zh) | 基于Linux内核驱动的网络带宽测速方法 | |
US10349297B2 (en) | Quality of user experience analysis | |
US9426046B2 (en) | Web page download time analysis | |
US10764148B2 (en) | Methods, systems, and computer readable media for network traffic statistics collection | |
EP3906656B1 (en) | System and method for estimation of quality of experience (qoe) for web browsing using passive measurements | |
US20110296007A1 (en) | Method and device for identifying an sctp packet | |
CN105871509A (zh) | 数据传输方法及装置 | |
US9954693B2 (en) | System and method of assessing latency of forwarding data packets in virtual environment | |
CN105939297B (zh) | 一种tcp报文重组方法和装置 | |
CN106815112A (zh) | 一种基于深度包检测的海量数据监控系统及方法 | |
CN104320378B (zh) | 拦截网页数据的方法及系统 | |
CN102204164A (zh) | 网络丢包信息报告方法及装置 | |
KR101292873B1 (ko) | 네트워크 인터페이스 카드장치 및 상기 네트워크 인터페이스 카드장치를 이용한 트래픽 처리 방법 | |
CN1432231A (zh) | 测量互联网路由器业务的方法和装置 | |
CN108462615A (zh) | 一种网络用户分组方法和装置 | |
EP3203699A1 (en) | Method for man-in-the-middle processing for tcp without protocol stack | |
CN115174432A (zh) | Rdma网络状态监测方法、装置、设备及可读存储介质 | |
DE112019007406T5 (de) | Weiterleitung von nvsvse-overfabric-paketen | |
CN103139014A (zh) | 基于旁路的网络质量评测方法及装置 | |
JP2015504260A (ja) | Diameterルーティングノードをテストするための方法、システム、およびコンピュータプログラム | |
CN117061072B (zh) | 报文传输方法、装置、设备及存储介质 | |
CN108011781A (zh) | 基于Linux内核提高网络设备测试性能的方法 | |
CN102255749B (zh) | 一种引发网络设备故障的异常报文捕获方法及装置 | |
CN109379356A (zh) | 自动捕获cpu攻击报文的方法及装置 | |
US20210194805A1 (en) | Dns (domain name server)-based application-aware routing on sd-wan (software-defined wide access network) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |