跟着嵌入式体系的开展,在嵌入式体系中完结网络衔接已成为研讨热门,广泛运用的廉价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) 技能不同,它和慢发动相同运用自计时( self clocking) 、用承认的抵达来触发其他数据的传输。因而它没有引进额定的延时,并且能有效地削减网络上小数据包的流量。
Nagle 算法的描绘
在一个衔接上现已传输的数据还没有被承认的状况下,发送方的运用程序又生成了后续数据,并照常将数据送到输出缓冲区中,但这时并不发送后续报文段,而是比及有满足的数据填满一个抵达最大长度的报文段之后再把缓冲区中的数据发送出去。
假如某个运用程序每次仅发生一个八位组的数据, TCP 会当即发送开始的那个八位组,可是在承认抵达之前, TCP 会把后续数据存入缓冲区中。因而当运用程序生成数据的速率比网络的速率快很多时(如传送文件) ,后续的报文段将包括很多的数据,而当运用程序比网络速度更慢时(如用户敲键盘) ,就会发送较短的报文段而不用经过长的延时。
Nagle 算法在嵌入式环境的适用性
在嵌入式体系的环境中,嵌入式TCP 协议会晤临着各种状况,比方一两个开关量的传输,或者是传感器数据实时的传输,而Nagle 算法可以主动习惯网络速率和运用层数据流量的各种状况,由于它是以承认来触发的自计时的协议。
网络模仿
NS-2 是一个运用于网络研讨的离散事情模仿器,它充沛支撑有线与无线网络上关于TCP、路由和多播协议的模仿。它自面世以来遭到学术界的充沛信任,成为规划和查验新的协议和算法的威望网络模仿测验渠道。
网络模仿环境的构建
图3 是本文构建的网络模仿环境:节点0 运用本文提出的嵌入式TCP 协议发送数据,节点1 运用用户投文协议(UDP) 组播协议来发送很多的数据,用于测验嵌入式TCP 协议在网络堵塞状况下的功能,节点2 和节点3 之间是瓶颈途径,模仿交换机之间的线路状况。