基于Nagle算法的嵌入式TCP协议

企业团队 / 2021-07-31 01:59

本文摘要:随着嵌入式系统的发展,在嵌入式系统中构建网络连接已沦为研究热点,普遍用于的廉价8/16位嵌入式处理器的性能严重不足与网络协议的简单包含了锐利的对立。嵌入式Internet技术的核心是在嵌入式系统中构建TCP/IP协议簇,TCP协议的机制比较复杂,对8/16位嵌入式处理器的存储能力和运算能力拒绝较高,必需展开修改。 本文明确提出了一种限于于8/16位短距离处理器的修改TCP协议。对其性能展开分析找到,在嵌入式网络大量用于小数据包,导致网络带宽利用率低落并且更容易导致网络堵塞。

鸭脖体育app

随着嵌入式系统的发展,在嵌入式系统中构建网络连接已沦为研究热点,普遍用于的廉价8/16位嵌入式处理器的性能严重不足与网络协议的简单包含了锐利的对立。嵌入式Internet技术的核心是在嵌入式系统中构建TCP/IP协议簇,TCP协议的机制比较复杂,对8/16位嵌入式处理器的存储能力和运算能力拒绝较高,必需展开修改。

  本文明确提出了一种限于于8/16位短距离处理器的修改TCP协议。对其性能展开分析找到,在嵌入式网络大量用于小数据包,导致网络带宽利用率低落并且更容易导致网络堵塞。因此在修改的TCP协议中引进Nagle算法,大幅增加了嵌入式网络中发送到的小数据包个数,提升了陡然亲率,并增加了所需的比特率。

  修改TCP协议的明确提出  TCP协议的数据传输分成3个阶段:创建相连、传输数据和断开连接,可以用状态机来构建。8/16位嵌入式微控制器要原始构建这样简单的状态机是十分困难的。在嵌入式系统中修改TCP的构建有数涉及的研究,本文更进一步引进了Nagle算法并且展开了网络仿真,得出了实验结果。

  相连创建和插入机制  TCP创建相连有两种方式:主动关上和被动关上。如果构建服务器端应用于,可以将TCP状态机的主动关上相连部分修改掉。同理客户端应用于,可以将状态机的被动关上相连部分修改掉。断开连接也有两种方式:主动插入和被动插入。

其中被动断开连接的处置较为简单。但为了确保安全性,期望主动断开连接。主动断开连接修改构建的方法是:发送到一个Fin数据报,在接管到对Fin数据报的证实后,再行发送到一个Reset数据报,就可已完成主动断开连接。

  以服务器端的TCP相连为事例,修改后的TCP状态机如图1。  单TCP相连  在8/16位微控制器上构建修改TCP协议,需要构建多个TCP相连,只需构建单个TCP相连才可。  非常简单证实机制  嵌入式系统发送到数据包并不大,可以将TCP协议的滑动窗口机制去除,沦为非常简单证实机制,只对单个数据报而不是批量数据发送到证实。构建方法是设置TCP头部windows字段的大小为1,才可确保TCP协议双方都用于非常简单证实。

  仅有计算出来发送到TCP报文的校验和  由于TCP协议校验和的计算出来对系统存储和计算资源的闲置都较为多,可以省却对接收数据报校验和的计算出来,保有发送数据报TCP校验和的计算出来。  修改TCP方案小结  在上述4个方面的基础上,在嵌入式处理器中构建了修改的TCP协议,程序流程如图2。其中有所不同状态的适当处置指根据接管到的TCP报文打算待发送数据报并将其发送到以太网上。

  修改TCP协议的性能分析  这种修改的TCP协议的性能可以通过在NS-2  网络模拟器中展开仿真构建。  一般来说在嵌入式的环境中,应用层产生的数据包是较小的,常常是每个包在只有几个、十几、几十个字节的数据,这样就产生了一个问题:TCP协议的报头支出过于大。

假设数据仅有一个字节,而TCP的张家口有40个字节,这样的数据报对底层网络的利用率意味着只有1/41,考虑到分组之间的间隙和网络硬件构成帧还必须一些比特,实际的网络利用率更加较低。嵌入式系统的这种少见的小的数据包造成了网络带宽的很大浪费。除了网络利用率不低之外,还有另外一个问题是产生TCP数据包数量近于多,网关和路由器不会由于这些很大数量的小数据包而再次发生堵塞。

  组块技术与其严重不足  通过以上分析,很大自然的想起使用组块技术(clumping)把一定数量的数据包构成一个帧,这样既能增大报头支出,又能增大TCP数据包的数量,而且代码量减少很少。但是,这样组包会产生一个问题,TCP在数据帧并未超过一定大小之前会传输数据,这样产生的延时不会影响到数据的动态传输。

因此,有适当对怎样防止这种延时展开研究。  Nagle算法的由来  在因特网发展初期,由于bbs和新闻组的风行,网络上弥漫着大量的telnet产生的小的数据包,数量很大的这些数据包使得路由器和网关再次发生了相当严重的堵塞现象,这和嵌入式系统中的情形类似于。

JoneNagle明确提出了一种算法来对付这种棘手的小数据包问题,后来被称作Nagle算法。  Nagle算法与非常简单的组包(clumping)技术有所不同,它和快启动一样用于自计时(selfclocking)、用证实的抵达来启动时其余数据的传输。

因此它没引进额外的延时,而且能有效地增加网络上小数据包的流量。  Nagle算法的叙述  在一个相连上早已传输的数据还没被证实的情况下,发送到方的应用程序又分解了先前数据,并如常将数据送往输入缓冲区中,但这时并不发送到先前报文段,而是等到有充足的数据填充一个超过仅次于长度的报文段之后再行把缓冲区中的数据发送到过来。  如果某个应用程序每次仅有产生一个八位组的数据,TCP不会立刻发送到最初的那个八位组,但是在证实抵达之前,TCP不会把先前数据现金缓冲区中。因此当应用程序分解数据的速率比网络的速率慢很多时(如传输文件),先前的报文段将包括大量的数据,而当应用程序比网络速度更快时(如用户敲打键盘),就不会发送到较短的报文段而不用经过宽的延时。

  Nagle算法在嵌入式环境的适用性  在嵌入式系统的环境中,嵌入式TCP协议不会面对着各种情况,比如一两个电源量的传输,或者是传感器数据动态的传输,而Nagle算法需要自动适应环境网络速率和应用层数据流量的各种情况,因为它是以证实来启动时的自计时的协议。  网络仿真  NS-2是一个应用于网络研究的线性事件模拟器,它充份反对有线与无线网络上对于TCP、路由和多播协议的仿真。它自问世以来受到学术界的充份信赖,沦为设计和检验新的协议和算法的权威网络仿真测试平台。

  网络仿真环境的建构  图3是本文建构的网络仿真环境:节点0用于本文明确提出的嵌入式TCP协议发送数据,节点1用于用户投文协议(UDP)组播协议来发送到大量的数据,用作测试嵌入式TCP协议在网络堵塞情况下的性能,节点2和节点3之间是瓶颈路径,仿真交换机之间的线路情况。


本文关键词:鸭脖体育app,基于,Nagle,算法,的,嵌入式,TCP,协议,随着

本文来源:鸭脖体育官网-www.pmaahk.com