本发明涉及一种测速方法,尤其是一种网络带宽测速方法。

背景技术:

:电信运营商为客户提供一定带宽的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层的序号(SequenceNumber)、TCP层窗口大小、及可选的时间戳标记;然后测速驱动组建一个测速驱动回复测速服务器的ACK报文,填入学习到的信息,包括IP层的标识、TCP层的序号、TCP层窗口大小、及可选的时间戳标记;向测速服务器返回测速驱动回复测速服务器的ACK报文;这样测速驱动就完美替换了IP协议栈以及测速应用的功能;此步骤中,测速驱动对收到的下行资料的报文作丢弃处理,不再发回IP协议栈以及上层的测速应用;此处省去了IP协议栈处理,以及Linux内核到应用层(测速应用处于应用层)的资料拷贝动作,资料报文收到后经过简单判断即被忽略,因此效率极高;步骤S5,当下载完成或者下载时间到了后,上层测速应用负责从测速驱动取回测速资料。经实际测试,本发明提供的方法,对于高带宽场景下的测试结果远优于传统方法的测试结果。如下表所示:运营商实际带宽传统方法本发明的方法100M95M98M240M220M236M1G350M965M当前第1页1&nbsp2&nbsp3&nbsp

linux内核下网络驱动流程,基于Linux内核驱动的网络带宽测速方法与流程相关推荐

  1. matlab 测速电机,一种精准的电机测速方法与流程

    本发明涉及电机测速领域,特别地,涉及一种精准的电机测速方法. 背景技术: 通常对电机进行转速测量,需要在电机内部安装某些传感器,但会降低电机运行可靠性,甚至某些电机无法在内部加装传感器.目前国内外常用 ...

  2. android 状态栏显示流程,基于Android系统的跨屏状态栏实现方法与流程

    本发明属于车机应用技术领域,具体涉及一种基于Android系统的跨屏状态栏实现方法. 背景技术: 目前,燃油车.新能源车等各类型车辆迅速发展.同时,与手持移动终端的发展趋势相似--从以黑莓品牌为代表的 ...

  3. 如何查看linux系统下的各种日志文件 linux 系统日志的分析大全

    如何查看linux系统下的各种日志文件 linux 系统日志的分析大全 日志分类: 1. 连接时间的日志 连接时间日志一般由/var/log/wtmp和/var/run/utmp这两个文件记录,不过这 ...

  4. linux如何运行verilog,linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令.doc...

    linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令 ncverilog: 08.10-p002: (c) Copyright 1995-2008 Cadence ...

  5. matlab血糖预测,一种基于VMD-PACF-BP模型的动态血糖在线预测方法与流程

    本发明属于血糖预测技术领域,尤其涉及一种基于VMD-PACF-BP模型的动态血糖在线预测方法. 背景技术: 目前,中国患有糖尿病人数已成为在世界上拥有糖尿病患者最多的国家.为了降低糖尿病患者长期处于高 ...

  6. Linux系统上hdparm工具参数详解,硬盘检查、测速、设定和优化

    Linux系统上hdparm工具参数详解,硬盘检查.测速.设定和优化 2012/07/25 hdparm, 硬盘 Linux命令相关 1 6,757 hdparm的功能:显示与设定硬盘的参数.hdpa ...

  7. 云计算 码率适配限速_一种基于云计算的应用于用户终端的测速方法

    一种基于云计算的应用于用户终端的测速方法 [专利摘要]本发明提供一种基于云计算的应用于用户终端的测速方法,包括:建立测速机制,定义相关参数,测速方法,输出测速结果:具体包括:建立测速机制,定义相关参数 ...

  8. 单片机c语言计数器测速,基于51单片机的光电编码器测速.doc

    课程设计报告 课程名称: 微机原理课程设计 题 目: 基于51单片机的光电编码器测速 摘要 光电编码器是高精度位置控制系统常用的一种位移检测传感器.在位置控制系统中,由于电机既可能正转,也可能反转,所 ...

  9. 网线传输速度测试_网络传输速率及测速方法

    网络传输速率概述根据国家颁布的通信行业标准,固定宽带4M/6M/12M/20M产品及3G网络21M/42M产品公布的速率均是指数据单位比特/秒(bps),而平常用户上网软件或者下载速度指的是字节/秒( ...

最新文章

  1. insight-vmi 编译中的问题
  2. 打破技术型思维:产品经理的门槛在门里面
  3. 一个释放临时表空间的实例
  4. gcc/g++ 编译器出现 undefined reference to ‘这里是函数名‘,往往意味这这个函数没有定义
  5. android15版本号手机,Lineage OS 15.1正式发布:基于Android 8.1
  6. go程序员面试算法宝典 pdf_Go程序员面试算法宝典
  7. Junit单元测试——如何正确测试异常
  8. 搭建RTSP流媒体服务器的三种方式
  9. 全志平台速鼎模块的BT调试记录
  10. 软件质量管理QM、QA、QC的区别
  11. 用四位16进制代码控制颜色
  12. 下载安装cygwin/X
  13. 华为一级产品线介绍(部分)
  14. 彻底解决烦人的win10更新
  15. 数据结构 - 队列 环形队列(循环队列)
  16. iOS 使用 SceneKit 实现全景图
  17. Python笔记,Python链接mysql
  18. abap SY-INDEX SY-TABIX
  19. DCM: 中间件家族迎来新成员
  20. Flask04_模板语法

热门文章

  1. 内容超出DIV宽高后隐藏或出现滚动条和overflow的属性
  2. mysql按条件查询left_mysql-查询条件下的LEFT JOIN
  3. 购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五人处理。
  4. 关于 爬虫使用 urllib.urlopen 提交默认 User-Agent值
  5. 我敢打赌,大多数人不知道DataGrip有这么厉害,只是都不会用而已
  6. Terraria及tModloader开服教程
  7. “夜游+”可为文旅带来哪些发展?深圳光语数字
  8. 16 个怪异的代码注释,想用的拿走
  9. java分页展示_Java实现分页展示
  10. 是一个新的开始,还是冥冥之中已经在路上。