一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种高性能多任务的TCP测速实现方法及系统与流程

2022-03-19 12:52:45 来源:中国专利 TAG:

一种高性能多任务的tcp测速实现方法及系统
技术领域
1.本技术涉及家庭智能网关技术领域,尤其涉及一种高性能多任务的tcp测速实现方法及系统。


背景技术:

2.为了解决上网最后一公里问题,推出了光纤到户,光纤到楼栋,解决宽带上网,智能网关设备离用户最近,最能影响用户体验,宽带测速能够给用户提供实际的体验感知,实时监测网络带宽流量,对自己的网络环境做到心中有数。由此测速需要提供精准无误的数据信息供用户参考,尤其是基于cpu的tcp测速方式,对测速性能有着极高的要求,如何有效利用cpu的性能,提高测速性能,保证数据精准可靠,由此而引申出了更多的性能优化方法。
3.传统的测速方法都是在应用层进行,通过应用层app完成测速功能,app功能主要有如下几大模块:配置模块、tcp数据下载模块(一般为http和ftp方式)和测速结果统计上报模块,测速中最关键点在tcp数据下载模块,保证能充分利用cpu性能,测速最大化。传统的测速下载模块数据流需要经过如下阶段:(1)网卡检测到数据到来,通过硬件中断的方式通知cpu收包处理;(2)网卡驱动收到包之后提交给tcp内核协议栈;(3)tcp协议栈处理完成之后提交给应用层测速app处理,测速app主要负责应用层协议的交互和处理。
4.但是,传统的测速下载模块中,硬件中断会影响cpu的性能,且测速app负责应用层协议的交互和处理时需要内核态到用户态的切换,这种切换会降低cpu的性能,另外存在数据的重复拷贝,造成资源的浪费;还有用户态app的下载模块以线程的方式运行,线程的调度机制也会影响cpu的性能。


技术实现要素:

5.本技术提供了一种高性能多任务的tcp测速实现方法及系统,以解决传统的tcp测速方式易影响cpu性能的问题。
6.为了解决上述技术问题,本技术实施例公开了如下技术方案:
7.第一方面,本技术实施例公开了一种高性能多任务的tcp测速实现方法,所述方法包括:
8.与服务器建立至少两条tcp连接,发起测速请求;
9.在cpu创建与所述至少两条tcp连接相应的延迟任务,并将所述tcp连接与所述延迟任务一一绑定;
10.所述cpu采用轮询方式将所述服务器发送的数据由内核态读取至相应的所述延迟任务;
11.实时采集所述数据的下载速率,得到所述tcp连接的传输速率。
12.第二方面,本技术实施例还提供了一种高性能多任务的tcp测速实现系统,包括:
13.配置模块,用于配置测速时的参数,以与服务器建立至少两条tcp连接;
14.收发包处理模块,设置在内核态内,用于接收所述服务器发送的数据;
15.多任务并发处理引擎模块,设置在所述内核态,用于在cpu上创建与所述至少两条tcp连接相应的延迟任务,并将所述tcp连接与所述延迟任务一一绑定;
16.应用层协议处理模块,设置在所述内核态,用于所述cpu采用轮询方式将所述收发包处理模块的数据读取至相应的所述延迟任务;
17.流量实时采集模块,设置在所述内核态,用于实时采集所述数据的下载速率,得到所述tcp连接的传输速率。
18.本技术提供了一种高性能、多任务并行处理的tcp测速方法,该方法包括:与测试服务器建立至少两条tcp连接,并在cpu上创建与至少两条tcp连接相应的延迟任务,将tcp连接与延迟任务一一绑定;服务器将数据发送至内核态,而不是传统方法中将数据发送至内核态,再由内核态传输至用户态,cpu读取数据时需依次经过用户态、内核态,如此数据传输路径只在内核态,而不需从内核态切换到用户态,能够消除用户态和内核态的切换,减少内存拷贝,提高测速性能;cpu将数据由内核态读取至相应的延迟任务,如此可实现多并发机制,发挥多cpu最大性能,提升下载速率;还有在测速阶段感知到大量数据后,就关闭网卡硬件中断,采用轮询方式读取数据,可提高cpu性能;实时跟踪周期性采集数据的下载速率,统计信息上报网管。本技术提供的高性能多任务的tcp测速实现方法,可以有效提升测速效率,充分发挥测速的优势,保证数据精确有效,有助于终端客户随时感知网络的状态,提供很好的用户体验感。
19.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
20.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
21.图1为传统的tcp测速系统框图;
22.图2为本技术实施例提供的一种高性能多任务的tcp测速实现系统的框图;
23.图3为本技术实施例提供的一种高性能多任务的tcp测速实现系统中数据处理流程图;
24.图4为本技术实施例提供的一种高性能多任务的tcp测速实现方法的流程图;
25.图5为传统的测速方法中tcp数据流和改进后tcp数据流的对比图;
26.图6为本技术实施例提供的一种高性能多任务的tcp测速实现方法中多并发机制的示意图。
具体实施方式
27.为了使本技术领域的人员更好地理解本技术中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
28.图1为传统tcp测速系统的框图。如图1所示,传统的tcp测速方法都是在用户端的应用层进行,通过应用层app完成测试功能,app功能主要有如下几大模块:配置模块、tcp数据下载模块(一般为http方式和ftp方式)和测速结果统计上报模块,测速中最关键点在tcp数据下载模块,保证能充分利用cpu性能,测速最大化,需要进行相应的优化。传统的测速下载模块数据流需要经过如下阶段:
29.(1)网卡检测到数据到来,通过硬件中断的方式通知cpu收包处理;
30.(2)网卡驱动收到包之后提交给tcp内核协议栈;
31.(3)tcp协议栈处理完成之后提交给应用层测速app处理,测速app主要负责应用层协议(http/ftp)的交互和处理,这里需要内核态到用户态的切换。
32.但是,传统tcp测速方法存在以下不足:(1)中的硬件中断会影响cpu的性能;(3)中涉及到内核态和用户态的切换,这种切换会降低cpu的性能,另外存在数据的重复拷贝也会造成资源的浪费;还有用户态app的下载模块以线程的方式运行,线程的调度机制也会影响cpu的性能。
33.针对上述问题,本技术实施例提供了一种高性能多任务的tcp测速实现方法及系统,该方法将传统方法中的tcp数据下载模块下沉到内核态,如此消除了用户态和内核态的切换,较少了内存拷贝,提高了tcp测速的高性能;同时下载任务以延迟任务(tasklet)的方式进行,这种方式好处在中断上下文中进行,而传统的方式都是在进程上下文中进行,这种的实时性不如中断上下文,延迟任务方式同时可以支持多并发,发挥多cpu最大性能,提升了下载速率。
34.图2为本技术实施例提供的一种高性能多任务的tcp测速实现系统的框图。如图2所示,本技术实施例提供的高性能多任务的tcp测速实现系统包括配置模块、收发包处理模块、应用层协议处理模块、流量实时采集模块、多任务并发处理引擎模块,该系统将传统tcp测速方法中的tcp数据下载模块拆分成了三个子模块,分别为收发包处理模块,应用层协议处理模块和多任务并发处理引擎模块。
35.配置模块用于设置测速时的参数,如服务器的ip和端口、数据的传输协议、测速时间、采集数据下载速率的时间间隔及tcp连接的并发连接数等参数;收发包处理模块设置在内核态,主要负责数据的接收和发送,即服务器将数据发送至内核态的收发包处理模块,且数据缓存至收发包处理模块,等待cpu进行读取;多任务并发处理引擎模块设置在内核态,负责多任务的调度,保证tcp测速高效并发运行,即在内核态创建多个延迟任务,每条tcp连接绑定一个延迟任务;应用层协议处理模块设置在内核态,主要负责完成http和ftp的前期信令交互流程,使得cpu可根据tcp连接将数据读取至相应的延迟任务,支持同时下载,保证能成功从服务器上拉到数据流,以及测速结束后的善后工作;流量实时采集模块设置在内核态,负责采集数据流量信息,定时更新上报。
36.图3为本技术实施例提供的一种高性能多任务的tcp测速实现系统中tcp测速流程图。如图3所述,进行tcp测速时,配置模块下发测速相关参数配置,发起测速请求;测速启动后,流程进入到收发包处理模块,由收发包处理模块接收服务器发送的数据;收发包处理模块接收到数据后,提交给多任务并发处理引擎模块,多任务并发处理引擎模块将tcp连接与创建的延迟任务一一绑定;绑定延迟任务后直接转接给应用层协议处理模块,由应用层协议处理模块根据协议将数据由收发包处理模块的数据读取至绑定的延迟任务,进行数据的
下载;数据下载过程中,流量实时采集模块负责采集速率,测速结束后主动上报给用户,展现一个测速的结果。
37.在本技术实施例中,在启动测速开始阶段,收发处理模块收取数据时,可以硬中断和软中断结合的方式告知cpu,一旦测速前期阶段完成进入下载拉流阶段,可以关闭硬中断,采用轮询的方式来告知cpu读取收发包处理模块中的数据,这样可以充分发挥cpu的最大性能。
38.多任务并发处理引擎模块包括tcp测试任务调度模块,该tcp测试任务调度模块可以根据cpu的负载均衡程度合理分配调度。具体地,查看cpu的负载均衡的情况,选取一个任务较轻的cpu,将延迟任务提交到该cpu上,该cpu采用轮询方式将数据由内核态的收发包处理模块读取至相应的延迟任务。
39.基于上述实施例所述的高性能多任务的tcp测速实现系统,本技术实施例提供了一种高性能多任务的tcp测速实现方法。如图4所示,该高性能多任务的tcp测速实现方法包括:
40.s100:与服务器建立至少两条tcp连接,发起测速请求。
41.在高性能多任务的tcp测速实现系统中,由配置模块配置测速时的参数,以与服务器建立tcp连接。配置模块配置的参数主要包括:
42.1)配置服务器ip和端口,便于向客户端发起tcp连接请求;
43.2)配置测速下载方式,http方式和ftp方式,http方式需要指明url,ftp方式需要给出用户名和密码;
44.3)配置测速时间,测速需要多长时间超时自动终止;
45.4)配置数据统计信息采集时间间隔,测速下载过程中多久采集一次统计信息;
46.5)配置并发连接数,同时允许多少条tcp链同时下载,保证最大限度满足带宽需求。
47.配置好测速时的参数后,根据参数与服务器建立至少两条tcp连接,发起测速请求。
48.图5为传统的测速方法中tcp数据流和本技术改进后数据流的对比图。如图5所示,传统测速方法可以看出tcp数据流的接收流程需要从内核态切换到用户态,tcp数据流的发送流程需要从用户态切换到内核态,这种不断的切换会影响cpu性能;改进后测速的发送与接收均在内核态执行,可以消除这种切换。
49.另外,传统方法终端1到2处有一次内存拷贝,3到4处有一次内存拷贝,存在重复拷贝的情况;而改进后的测速方法可以减少内存拷贝,避免了资源的浪费。
50.具体地,可在内核态创建虚拟网卡,建立tcp连接后进行虚拟网卡与服务器的前期信令交互,以实现虚拟网卡与服务器之间的数据交互;测速时,首先判断前期信令交互是否完成,若前期信令交互完成,则将服务器发送的数据传输至虚拟网卡。本技术实施例中,虚拟网卡为收发包处理模块。
51.s200:在cpu创建与至少两条tcp连接相应的延迟任务,并将tcp连接与延迟任务一一绑定。
52.由于客户端与服务器建立了至少两条tcp连接,为了提高tcp测速效率,可将至少两条tcp连接传输的数据并发进行处理,如此可将下载任务以延迟任务的方式进行,创建与
至少两条tcp连接相应的延迟任务,将不同tcp连接传输的数据分别映射到相应的延迟任务中,每个tcp连接绑定一个延迟任务,同时下载。
53.具体地,可在cpu上创建至少两个延迟任务,多任务并发处理引擎模块获取tcp连接的端口号和ip,并通过tcp端口号和ip得到一个hash值,根据该hash值将tcp连接与相应的延迟任务一一绑定。
54.s300:cpu采用轮询方式将服务器发送的数据由内核态读取至相应的延迟任务。
55.收发包处理模块接收到服务器发送的数据后,需要告知cpu数据已到达收发包处理模块,告知方式有两种,一种是收发包处理模块主动通过硬件中断的方式告知cpu,数据已经到达收发包处理模块,需要cpu读取,这种方式相对cpu来说是被动模式,这种方式的弊端在于频繁发起中断会影响cpu性能,尤其在网卡流量很大的情况下;还有一种为主动方式,主动轮询收发包处理模块的收包状态来读取数据,这种方式的弊端在于网卡空闲的时候高频次轮询对cpu的性能会造成很大消耗。
56.这两种方式各有利弊,需要组合灵活装配才能发挥最佳,传统的tcp测速方法不能根据实际情况灵活的选择,只能依赖于linux内核自身的调度模式;改进后的tcp测速方法可以灵活控制,在启动测速开始阶段,可以硬中断和软中断结合,一旦测速前期阶段完成进入下载拉流阶段,可以关闭硬中断,采用轮询的方式来读取收发包处理模块中的数据,这样可以充分发挥cpu的最大性能。
57.图6为本技术实施例提供的一种高性能多任务的tcp测速实现方法中多并发机制的示意图。如图6所示,收发包处理模块的收包事件分发到指定的延迟任务的整个过程都是在中断上下文中进行,可以优先保证实时性。在linux操作系统中,中断上下文的处理优先级要高于进程上下文,而传统的tcp测速方法是在进程上下文中进行,实时性不能保证。
58.延迟任务方式同时可以支持多并发,延迟任务1到延迟任务n都在中断上下文中进行,每个延迟任务可以运行在不同的cpu上,保证并发性,这些任务由tcp测速任务调度模块同一调配,可以根据cpu的负载均衡程度合理分配调度。具体地,查看cpu的负载均衡的情况,选取一个任务较轻的cpu,将延迟任务提交到该cpu上,该cpu采用轮询方式将数据由内核态的收发包处理模块读取至相应的延迟任务。
59.cpu读取数据时,进入linux内核的tcp协议栈,tcp协议栈处理完成后直接转接给应用层协议处理模块,应用层协议处理模块根据数据的传输报文协议分别进行处理,如果协议报文为http协议,则进入应用层协议处理模块的http模块进行处理;如果协议报文为ftp协议,则进入应用层协议处理模块的ftp模块进行处理。
60.具体地,cpu将收发包处理模块的数据读取至延迟任务时,首先确定数据的报文类型,若数据为http协议报文,则根据http协议将数据读取至与tcp连接绑定的延迟任务,实现数据的下载;若数据为ftp协议报文,则根据ftp协议将数据读取至与tcp连接绑定的延迟任务,实现数据的下载。
61.该步骤的关键点是将本在应用层处理的逻辑下沉到内核态完成。另外,传统的tcp测速方法中,应用层协议处理app以进程的方式运行,工作在进程上下文;而本技术提供的tcp测速方法工作在中断上下文中,有很好的实时性。
62.s400:实时采集数据的下载速率,得到tcp连接的传输速率。
63.数据下载过程中,由流量实时采集模块采集数据的下载速率,根据该下载速率统
计得到该tcp连接的传输速率。测试结束后主动上报给用户,展现一个测速的结果。
64.本技术实施例提供了一种高性能、多任务并行处理的tcp测速方法,该方法通过配置模块设置测速时的参数,与服务器建立至少两个tcp连接,发起测速请求;测速时,将服务器发送的数据传输至内核态的收发包处理模块,而不是传输至传统方法中的用户态,如此数据传输路径只在内核态,而不需从内核态切换到用户态,消除了用户态和内核态的切换,减少了内存拷贝,提高了测速性能;另外,在cpu创建与至少两条tcp连接相应的延迟任务,并将tcp连接与延迟任务一一绑定,且cpu将数据由收发包处理模块读取至相应的延迟任务,如此可实现多并发机制,发挥多cpu最大性能,提升下载速率;还有在测速阶段感知到大量数据后,就关闭网卡硬件中断,采用轮询方式读取数据,可提高cpu性能;实时跟踪周期性采集数据的下载速率,统计信息上报网管。本技术在tcp测速过程中能动态跟踪收包速率,实时动态调整终端与查询收包频次,提高了cpu性能;利用tcp机制,测速过程中用户态的动态下沉到内核态,减少了拷贝和用户内核切换次数,提高了测速性能;通过tcp链来绑定延迟任务,实现了多并发机制,发挥多cpu最大性能,提升了下载速率。
65.本技术提供的高性能多任务的tcp测速实现方法及系统,可以有效提升测速效率,充分发挥软件测速的优势,保证数据精确有效,有助于终端客户随时感知网络的状态,提供了很好的用户体验感。
66.需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的电路结构、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种电路结构、物品或者设备所固有的要素。在没有更多限制的情况下,有语句“包括一个
……”
限定的要素,并不排除在包括所述要素的电路结构、物品或者设备中还存在另外的相同要素。
67.本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本技术的其他实施方案。本技术旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由权利要求的内容指出。
68.以上所述的本技术实施方式并不构成对本技术保护范围的限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献