嵌入式协议栈的TCP/IP设计与实现

2017-07-20 22:25周磊
魅力中国 2016年45期
关键词:嵌入式系统

周磊

【摘要】本文提出了一种嵌入式协议栈的设计及实现。功能上简化到能满足网络功能单一的嵌入式应用的基本需要,没有操作系统平台也能完成基本功能;对于传统的TCP协议,本文也从TCP状态机和TCP超时定时两个方面同时进行了改进设计。本文根据以上提出的的优化策略,分别设计了实现算法及其相关数据结构。

【关键词】嵌入式系统,网络协议,TCP/IP,状态机

1.研究背景及意义

随着经济全球化的不断发展以及信息社会对数字化要求的不断提高,国务院确定三网融合政策启动,互联互通的需求使嵌入式应用和其它计算机系统进行信息交互的需求也日益迫切。

要实现嵌入式系统的网络功能,肯定需要在嵌入式软件中加入相关的通讯协议栈组件。但是,这一方案的实现在嵌入式系统中存在着技术难点,其原因有:①需要加入的TCP/IP协议栈软件是一个比较复杂的软件系统,对于系统资源的消耗较大;②PC系统的TCP/IP协议栈在实时性能和精简程度等方面通常也不适应于嵌入式系统应用的实际要求。这两个问题的解决就需要针对特定应用实现一个简洁﹑高效的协议栈。

2.嵌入式系统协议栈中TCP/IP的设计和实现

嵌入式系统的网络协议栈研究是利用现有的TCP/IP协议栈进行系统的分析和研究,把相关子协议进行优化和简化,最终实现了一种全新的嵌入式TCP/IP协议栈MinIP。这个协议栈的设计目的是为瘦客户端嵌入式网络应用提供所需要的协议栈组件,在此对TCP/IP协议的设计过程进行论述。

2.1 TCP协议设计

2.1.1 取消滑动窗口

TCP在进行流量控制时,通常采用的是窗口机制来实现的,在MinIP的TCP设计里,抛弃窗口机制,没有对流量进行控制。考虑到MinIP主要运用在局域网络里,网络流量通常并不是很高,所以可以暂时不考虑其对流量与网络拥塞进行的控制,在实现过程中可对其进一步的精简。

2.1.2 简化处理的TCP状态机

简化后的有限状态机的流程是:前端采集数据填充发送缓冲后,会通过送含有标志字段SYN的数据包至目的主机,主动要求建立TCP连接,等待目的主机的SYN回复与ACK信息,当收到该数据包后然后发送ACK向目的主机进行确认,最后,MinIP和目的主机的“三次握手”也就完成了,而后双方开始相互交换实际数据。当完成数据发送的时候,MinIP的TCP发送含有标志字段FIN的信息至目的主机并要求关闭TCP,同时从ESTABLISHED状态变化为FIN_WAIT_1状态,而后等待目的主机反馈的信息ACK,在收到ACK数据包后,FIN_WAIT_1状态变化为FIN_WAIT_2状态,MinIP继续等待由目的主机发出的带FIN标志字段的数据包,在收到数据包后,进入TIME_WAIT状态,为了能够使最后发给目的主机的ACK数据包能够成功的到达,MinIP在发送完ACK后则会继续处于TIME_WAIT状态,继续等待2MSL。最后,一个完整的TCP通讯过程也就结束了。

2.1.3 改进的TCP定时机制

嵌入式设备的另一个特点就是需要考虑设备的功耗,多数便携式嵌入式设备一般使用电池来供电,这是和计算机平台不同的特点,所以节能就必须加以考虑。

TCP协议的连接及通信过程在任何的网络拓朴环境下,由于设计时的考虑,TCP都会存在一定的超时重传机制,而有些重传实际上是没有必要的,只是TCP为保证数据的可靠性及完整性而设计的,因此,可以考虑针对传统的TCP重传机制进行适当的优化,使重传时产生的时间延迟尽量减少,这样就可以减少无用数据的重传,进而节省了功耗。

把设备闲置时的系统能耗这里设为:Pi,设备处于TCP环境下通讯状态时,该设备数据发送产生的能耗和所需时间分别为:Plx、Tlx,接收数据时所需能耗和时间分别为:Pmx、Tmx,那么整个设备在T时间内的能耗El可以按下式计算:

El=Pi×(Tl-Tlx-Tlx)+Plx×Tlx+Pmx×Tmx

=Pi×Ti+Elx+Emx

=Pi×Ti+Ea

在上式中,Pi为设备闲置时的待机能耗,Ti为待机时间,Ea为通讯过程中的总能耗。从另外一个角度看,设备进行通讯时,发送数据或接收数据产生的能耗也可以等价为设备空闲时的能耗加上发送时的附加功耗Pt或接收数据时产生的功耗Pm,故有下式:

Plx=Pt+Pi

Pmx=Pm+Pi

所以经过前式和上式的结合,可以推导出:El=Pi×Tl+Ed。可得:

Pi×Tl+Ea=Pi×Ti+Ed.

而一般嵌入式(如:S3C44b0X)是含有节能处理模式的,所以,空闲情况下可以认为Pi<

经过推导,从得出的式子可以看出数据收发过程中设备所需的的能耗决定了总能耗高低,所以对数据包超时重发机制的改进,是可以减小发送数据时设备产生的能耗,从而可以从一定角度实现对设备的有效节能。

2.2 IP协议的设计

考虑到送时数据包大小已经约定,不会出现数据包过长的情况,MinIP中的IP协议删减了数据包的分解和合并相关操作,在针对嵌入式应用做了适当精简,但是对复杂的路由机制并没有实现,主要实现2类主要功能:(1)验证收到的数据包的头是否有错误,如无错误就进行解析该数据包,以确定该数据包是哪种层协议接收。(2)在发送的数据头封装相应的IP信息。

从网络设备发送端进入到数据缓冲区后,会先經过一个包类型判断,主要是判断出数据是IP数据还是arp数据包。如果是IP数据包,会调用IpRcv()来处理,然后对该数据进行校验,根据IP数据包的协议字段判断包中保存的是哪种类型的数据。

3.展望

本文虽然实现一个具备了基本功能并且结构完整的嵌入式协议栈MinIP,但离成熟的协议栈组件还有很大的一段距离,存在了一些问题,需要继续的研究与完善。

(1)安全性问题:MinIP基本没有过多的考虑到安全这一系列的问题,仅对数据包的格式做了一些基本校验,需要在MinIP中增加一些切实可行的网络安全机制,如在传输控制协议的基础上来实现安全套接字协议安全套接等进行弥补。

(2)网络传输效率的问题:“固定双缓冲”机制是MinIP的特点,但是同时也会导致MinIP在进行数据发送过程中显得过于慢。

(3)功能的完整性:MinIP只时包括一个连网应用的基本子协议,在对于要求复杂的网络应用中没有考虑。

参考文献:

[1]MartinD.Semantic markup for web services[EB/OL].http:www.w3.orSubmission,2009.

[2]ChristianBenvenuti.UnderstandingLinuxNetworkInternals[M].O'Reilly,2005.

[3]Sergio Scaglia著,潘琢金,徐蕾等译.嵌入式Intemet TCP/IP基础、实现及应用[M].北京:北京航空航天大学出版社,2008.

[4]Alan B.Johnston .SIP Understanding:The.Session.Initiation.Protocol-2nd[M].ArtechHouse ,2004.

猜你喜欢
嵌入式系统
Teaching Research on IoT and—Embedded System of Software Engineering
基于Xilinx口袋实验室的组合逻辑电路设计实验
面向应用的智能专业嵌入式系统教学
基于AVR单片机的SPI接口设计与实现
办公自动化系统的设计
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究