基于数据统计LwIP延迟ACK定时器周期自适应方法与流程

文档序号:15197733发布日期:2018-08-19 01:20阅读:1754来源:国知局

本发明涉及一种基于数据统计lwip延迟ack定时器周期自适应方法,属于嵌入式系统的以太网通信技术领域。



背景技术:

嵌入式设备接入互联网是物联网时代不可阻挡的大趋势。轻量级tcp/ip协议栈能够适应嵌入式环境中非常有限的存储容量和计算资源,并实现了tcp/ip协议栈的基本功能,为设备的网络连接提供优质的服务。

tcp/ip协议无论应用数据的大小,每个数据包都要在数据前加上40字节的数据包首部,嵌入式系统通信中存在大量的短帧数据,如果直接发送这些数据,则通信中会充斥着大量的短帧数据包,在滑动窗口机制下,接收和发送窗口都会变得很小,不仅大大降低了通信效率,同时也容易造成网络拥塞。为了避免通信拥塞,tcp/ip协议在发送端采用nagle算法阻止逐个数据段发送,在接收端采用延迟ack策略延迟ack包的回复,发送端会将需要发送的数据段存入缓存组成一个大的数据包,一直等接收到ack包才发送数据包。这样可以大大减少通信中短帧数据包的数量,提高以太网通信效率。和tcp/ip协议栈一样,lwip协议栈也采用了nagle算法和延迟ack策略,但是嵌入式以太网通信以短帧数据包为主,nagle算法和延迟ack策略会大大降低通信的实时性,这在单向数据传输的应用中尤为明显。

公开号为cn102413503a的中国专利公开了一种用于semi-tcp的自适应确认分组延迟发送的方法,该方法设计了算法计算ack延时间隔,自适应地决定所收数据分组的确认包发送的时间。但是其目的在于提高通信效率,避免通信拥塞而不是提高通信实时性,且该方法是基于semi-tcp而不是基于lwip协议栈。



技术实现要素:

为解决现有技术的不足,本发明的目的在于提供一种基于数据统计lwip延迟ack定时器周期自适应方法,尽可能少占用嵌入式cpu使用效率的前提下提高以太网通信的实时性。

为了实现上述目标,本发明采用如下的技术方案:

一种基于数据统计lwip延迟ack定时器周期自适应方法,其特征是,包括如下步骤:

步骤1)将延迟ack定时器从lwip的快速定时器中独立出来;

步骤2)基于数据统计的周期判断方法判断定时器周期是否合适;

步骤3)根据周期判断结果对定时器周期的值做相应处理;

步骤4)基于惯性原理的延迟ack定时器周期重置。

前述的一种基于数据统计lwip延迟ack定时器周期自适应方法,其特征是,所述步骤1)的具体步骤如下:

11)设置延迟ack定时器周期为一个变量;

12)将发送延迟ack包功能转移到延迟ack定时器处理函数中。

前述的一种基于数据统计lwip延迟ack定时器周期自适应方法,其特征是,所述步骤2)的具体步骤如下:

21)每次进入延迟ack定时器处理函数时查询以太网通信块的工作状态,如果处于延迟ack状态则将标志flag置1,反之则将flag置0;

22)在n+1次进入延迟ack定时器处理函数时得到一个新的flagn+1,则flagn+1将被加入到长度为m的标志保存序列,之前的标志整体往出口端平移,flagn-m从出口端去除,n=0,1,2,...,n≤m时,不产生从出口端去除的动作;

23)求取当前标志保存序列的和,如果该序列的和等于m则表示延迟ack定时器周期过长,如果该序列的和小于参数l,则表示延迟ack定时器周期过短。

前述的一种基于数据统计lwip延迟ack定时器周期自适应方法,其特征是,所述步骤3)的具体内容为:

如果判断定时器周期过长,则将定时器周期的值除以2;

如果判断定时器周期过短,若此时周期不大于20ms,则将该周期的值加上1,若此时周期大于20ms则加上该周期的10%。

前述的一种基于数据统计lwip延迟ack定时器周期自适应方法,其特征是,所述步骤4)的具体内容为:

41)在n+1次进入延迟ack定时器处理函数时得到一个新的定时周期tn+1,则tn+1将被加入到长度为k的周期保存序列,之前所有参数往出口整体平移,tn-k从出口端去除,n=0,1,2,…,n≤k时,不产生从出口端去除的动作;

42)求取当前周期保存序列的平均值,序列中所有的参数类型均为整形,对序列平均值四舍五入,将延迟ack定时器周期设置为当前平均值。

前述的一种基于数据统计lwip延迟ack定时器周期自适应方法,其特征是,所述标志保存序列的长度m取值范围为10~15,参数l取值为的整数部分,l为整数。

前述的一种基于数据统计lwip延迟ack定时器周期自适应方法,其特征是,所述周期保存序列的长度k取值范围为4或5。

本发明所达到的有益效果:本发明可直接应用到嵌入式系统的以太网通信中,在1s中左右自适应发送端的发送周期,能够在保证嵌入式cpu使用效率的前提下大大提高通信的实时性,通信周期能够降低到1ms,通信延迟1ms以内。

附图说明

图1是基于数据统计的周期判断方法流程图;

图2是标志保存序列的更新方式示意图;

图3是延迟ack定时器周期处理流程图;

图4是基于惯性原理的延迟ack定时器周期重置流程图;

图5是实验系统结构图;

图6(a)是原始lwip协议栈正弦波信号通信效果图,图6(b)是原始lwip协议栈方波信号通信效果图;

图7(a)是使用本发明的lwip协议栈正弦波信号通信效果图,图7(b)是使用本发明的lwip协议栈方波信号通信效果图。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明中所述的惯性原理是指当通信稳定时,延迟ack定时器周期不会发生瞬间的快速波动,因此可以根据最新一段周期内的周期保存序列计算出当前的通信周期,该周期在通信稳定时不会出现瞬间快速波动。

本专利通过独立lwip协议栈的延迟ack定时器,并在该定时器中加入基于数据统计的周期判断方法判断周期是否合适,根据周期判断结果对定时器周期的值做相应处理,最后利用惯性原理重置延迟ack定时器周期。采用该专利的lwip协议栈能够在保证嵌入式cpu使用效率的前提下大大提高通信的实时性,通信周期能够降低到1ms,通信延迟1ms以内。

下面结合具体实施例对本发明做进一步说明,基于数据统计的lwip延迟ack定时器周期自适应过程如下:

实验系统结构图如图5所示,主要包括信号发生器、示波器、嵌入式系统a和嵌入式系统b。嵌入式系统arm采用tm4c1294ncpdt处理器,该处理器内部集成了以太网物理层,便于进行以太网通信。嵌入式系统a通过ad转换采集信号发生器提供的模拟信号,并将数据通过rj45网口传递给嵌入式系统b,嵌入式系统b将收到的数据da转换为模拟信号,最后通过在示波器上对比信号发生器和嵌入式系统b生成的模拟信号论证通信效果。

步骤1)将lwip协议栈中的延迟ack定时器从快速定时器中分离出来,重新设置延迟ack定时器周期为一变量,将发送延迟ack包功能转移到延迟ack定时器处理函数中。

步骤21)每次进入延迟ack定时器处理函数便查询以太网通信块的工作状态,如果处于延迟ack状态则将标志flag置1,反之则将flag置0;

步骤22)在n+1次进入延迟ack定时器处理函数时得到一个新的flagn+1,则flagn+1将被加入到长度为10的标志保存序列,之前的标志整体往出口端平移,flagn-10从出口端去除。

步骤23)求取当前标志保存序列的和,如果该序列的和等于10则表示延迟ack定时器周期过长,如果该序列的和小于参数8,则表示延迟ack定时器周期过短。

步骤3)根据周期判断结果对定时器周期的值做相应处理:如果判断定时器周期偏长则将定时器周期的值除以2,如果判断定时器周期偏短,若此时周期不大于20ms,则将该周期的值加上1,若此时周期大于20ms则加上该周期的10%。如图3所示,图中told表示旧的周期,tnew表示新的周琦。

步骤41)在n+1次进入延迟ack定时器处理函数时得到一个新的定时周期tn+1,则tn+1将被加入到长度为4的周期保存序列,之前所有参数往出口整体平移,tn-4从出口端去除;

步骤42)求取当前周期保存序列的平均值,序列中所有的参数类型均为整形,对序列平均值四舍五入,将延迟ack定时器周期设置为当前平均值。

嵌入式系统a每1ms采集一次信号发生器产生的模拟信号,采集完成后将数字量通过以太网传输给嵌入式系统b。嵌入式系统b收到数据后立即将数据转换成模拟信号。

未采用本发明时通信效果如图6所示,图6(a)显示的是信号发生器产生正弦波信号时的通信效果图,图中可见通信周期只能到250ms,图6(b)显示的是信号发生器产生方波信号时的通信效果图,图中可见延迟高达224ms。

使用本发明后实际通信效果如图7所示,图7(a)显示的是信号发生器产生正弦波信号时的通信效果图,图中可见通信周期以及达到了1ms,图7(b)显示的是信号发生器产生方波信号时的通信效果图,图中可见延迟为1.4ms,通过实验测得该系统ad转换和da转换一共耗时960μs,所以通信延迟降低到了440μs,本发明大大提高了通信实时性。分别设置不同的通信周期,通过jtag口得到此时lwip协议栈中延迟ack定时器定时周期的值,测试4次,得到的数据如表1所示,从表1可以看出本发明可以保证自适应的延迟ack定时器周期在80%通信周期~100%通信周期之间,这样可以在保证通信实时性的基础上提高arm的使用效率。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1