跟着嵌入式体系的开展,在嵌入式体系中完结网络衔接已成为研讨热门,广泛运用的廉价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 之间是瓶颈途径,模仿交换机之间的线路状况。
嵌入式TCP 协议的功能指标有吞吐量(throughp ut) ,即单位时间内TCP 源节点发送的字节数;延时,即源节点的运用层宣布数据到意图节点运用层接纳到数据的时间量。
依据Nagle 的简化TCP 协议的吞吐率
作为一个简略承认的TCP 协议,因为窗口始终是1 ,所以吞吐率( t hroughp ut ) 是稳定的,因为选用Nagle 算法,不再有许多小数据包产生,进步了吞吐率,进步的倍数约等于Internet 数据包最大值除以运用层产生数据包巨细。比方运用层产生的数据包是10 byte ,那么吞吐率就进步了1000/ 10 = 100 倍。
如图4 所示,接纳到的数据是跟着时间线性添加的,也就是说吞吐率是稳定的。最高的曲线是选用Nagle 算法的简化TCP 协议的吞吐率;最低的曲线是未选用Nagle 算法的简化TCP 协议在相同环境下的吞吐率;中心曲线为未通过简化的规范TCP 协议,因而能够从图中看出,选用Nagle 算法显着优于其他两种状况,并且大大改进了简化TCP 的吞吐率。
依据Nagle 的简化TCP 协议的呼应时间
再看看延时的问题,Nagle 算法会当即传送开端的数据,然后再以大吞吐量发送余下的数据。这就导致,榜首,吞吐率大大添加,使得传送数据更快;第二,产生的数据包数量削减,使得产生拥塞重传的时机也削减。图5 和6 平分别是规范TCP 协议的延时颤动(jit ter) 和选用Nagle 算法的TCP 协议的延时颤动。
图6 曲线在开端的尖峰说明晰在数据衔接的开端Nagle 算法会当即发送接纳到的小数据包,而接下来是将接纳的许多的数据打成大包发送。图6曲线的滑润状况说明晰延时颤动很小,合适嵌入式体系中实时数据的传输。在相同的模仿参数下,规范TCP 协议发送了许多的数据包(120 个) ,而选用Nagle 算法的简化的TCP 协议发送了不到20 个数据包。清楚明了,选用Nagle 算法的简化TCP 协议在吞吐率高的一起还节省了网络的带宽。
对该协议有用性的剖析
网络协议的有用性体现为,在恶劣的网络环境(如数据丢掉) 下,能够坚持衔接并且能够康复数据的传输。
前面现已剖析到,因为大大下降了网络上小数据包的数量,下降了网络带宽的需求,使得依据Nagle 算法的TCP 协议比一般TCP 协议呈现堵塞的可能性大大下降。
假如一旦网络呈现堵塞,会呈现数据包的丢掉。TCP 的数据发送方会接纳到3 个重复的承认(ACK) 信号,依据Nagle 算法的简化TCP ,相同履行规范的重发数据的作业,从头发送丢掉的数据包。因为发送窗口始终是1 ,则不存在“快速康复”问题。
对该协议模仿的成果如图7 所示:图中横坐标是模仿时间,纵坐标是数据包的序列号。上面两条曲线是Tahoe TCP 的数据和承认,而下面两条曲线是依据Nagle 的TCP 的数据和承认。 图中Tahoe TCP在慢发动后的某个时间,接纳方收到了3 个相同的ACK承认包,表明网络呈现了堵塞,并且传送相同的数据Tahoe TCP 的带宽占用比依据Nagle 的简化TCP 大多了。而依据Nagle 的简化TCP 却并未堵塞。
由以上剖析可见, 依据Nagle 算法的简化的TCP 在数据传输方面是牢靠的。能够广泛的在嵌入式TCP 中运用,并且与其他TCP 算法能够彻底兼容,并且能够大幅度进步网络功能,削减网络堵塞,特别是在运用层数据量比较小但数据包数量却许多的状况下能够大大改进数据的吞吐率和网络占用率,是一种十分有用的算法。WindowsTM也在其Telnet 程序中运用了Nagle 算法。
依据Nagle 算法的TCP 协议因为算法简略,功能优异,能够担任广阔的嵌入式Internet 的运用领域包含:工业操控、智能家居、智能监控、主动抄表,等等。该协议能够运用于实时性要求比较高的场合,可是假如实时性要求特别高而网络带宽殷实时则主张不选用Nagle 算法。
结 语
本文提出的依据Nagle 算法的简化TCP 协议,大大减轻了微处理器的运算担负和体系的存储空间,使得TCP 协议得以在一般8/ 16 位处理器上实选用了Nagle 算法,在不添加多少代码的状况下,进步了协议的吞吐率、下降了协议的带宽占用,在嵌入式运用中其吞吐率乃至高于未简化的规范TCP 协议。它的延时颤动基本是稳定的,十分合适嵌入式体系中的实时数据的传输。它发送少数的大数据包而不是许多的小数据包,然后节省了网络带宽。依据本文算法的主动抄表计划现已在浙大校园网、杭州网通、宁波网通、上海有线通等宽带网络下进行了现场测验,测验成果契合规划要求。
该计划现已被国内多家电表出产企业所采用,并运用于新式网络电能表的出产上,这种网络电能表能够方便地完结网络化主动集抄体系,这些体系现已运用在上海、杭州、宁波等地的电力部门中。一起,依据本文计划的新式电能表以及其技能文件现已向全国电工仪器仪表规范化技能委员会进行了引荐和报批。