基于信息家电的可重构协议栈的设计与实现
2010-01-05宫蓉蓉胡伏湘章登勇
宫蓉蓉 胡伏湘 章登勇
(1.长沙民政职业技术学院,湖南 长沙 410004;2.长沙理工大学,湖南 长沙 410076)
基于信息家电的可重构协议栈的设计与实现
宫蓉蓉1胡伏湘1章登勇2
(1.长沙民政职业技术学院,湖南 长沙 410004;2.长沙理工大学,湖南 长沙 410076)
针对信息家电上网的协议栈移植、地址资源有限等问题,设计并实现了一种可重构的嵌入式 TCP/IP协议栈。该协议栈可以根据用户需求重构为 IPv4.IPv6等多种协议栈,可以为家电上网以及其他嵌入式应用系统的远程网络控制提供一种良好的解决方案。
TCP/IP;信息家电;嵌入式协议栈;可重构;单片机
1.引言
随着现代信息技术和家电控制技术的融合与发展,现代家庭也将加入“信息化、自动化、网络化”的行列,以 Internet为介质实现信息交互的要求越来越强烈。传统的家用电器,绝大多数是由单片机控制,从传统家电升级为网络家电之后,为实现网络技术和家电控制系统的无缝连接,将具有网络功能的嵌入式软件和单片机的控制软件程序作了相应的调整,使之有机地结合成完整的嵌入式系统。但是嵌入式系统计算资源、存贮资源等十分有限;专用嵌入式操作系统,如VxW orks、uCL inux、pSOS等都是以其具体开发的实时操作系统为平台,没有考虑不同软硬件资源,移植困难;另外 IPv4地址资源受到严重挑战,IPv6网络代替IPv4网络已成为必然。目前一些开源嵌入式协议栈如 uC/IP,lw ip,u Ip,TinyTCP大都不支持或者没有完成IPv6协议栈的开发,不能满足过渡时期嵌入式设备的需求[1]。
如何开发代码小巧、资源占用量低、可移植性好、支持未来协议扩展的灵活高性能嵌入式 TCP/IP协议栈,成为了极具挑战的研究课题。
2.嵌入式协议栈可重构性分析
协议组合的可重构性:由于 TCP/IP协议栈被设计为分层结构,各协议层只需通过简单的层间接口进行交互服务,分别解决通信问题的一部分,并且当任何一层发生变化时,只要接口关系保持不变,则该层上下各层均不受影响;同一层间的不同协议,或相互独立,或协同工作,例如传输层的 TCP和UDP协议分别为面向连接服务和无连接服务,互不影响;IP层的 IPv4与IPv6及相关配合使用的协议可以在一个协议栈中并存,因为 IPv6采用了新的报头格式和 128位地址,处理方式上各自独立[2]。这样,使得不同层间协议的藕合度很低,便于协议的删减和扩展,使协议栈的重构成为可能。采用模块化思想来实现,使用户可以根据需求选择协议,构造特定的协议栈。
其次分析有效资源的可重复使用性。尽管 TCP/IP协议栈底层协议或多或少可以进行交叉存取,大部分 TCP/IP协议还是在应用层协议与底层协议之间进行严格的区分。底层协议被作为与应用层程序具有通讯接口的操作系统内核的一部分。应用程序被看作是TCP/IP协议的抽象,网络通讯与进程间通讯或者文件I/O只有很小的差别[3]。这意味着,应用程序不知道底层协议所使用的缓冲机制,它不能利用缓冲机制对经常使用的数据进行缓冲。同样,当应用程序发送数据时,在数据被网络处理前,必须把这些数据从应用程序存储区被拷贝到内部缓冲区。因此,在内核和应用进程之间并不存在严格的保护屏障。这就通过共享内存允许应用程序和底层协议之间使用一种更宽松的方案。应用层可以意识到底层协议所使用的缓存处理机制。应用层程序可以更有效地重用缓冲区,直接读写内部缓存,因此节省了执行拷贝的开销。
3.协议栈的设计
3.1 整体设计
系统采用模块化的设计思想,为了便于移植和减少系统的开销,不考虑任何嵌入式操作系统,而是基于裸机实现,最终设计成为具有比较小的代码量,尽量少地占用系统资源,高效、稳定、易于移植;支持 IPv6协议,使嵌入式设备具有更好的可扩展性;具有可重构性,嵌入式系统可根据自己的实际需要在编译的时候对协议栈进行重构新型协议栈。系统体系结构设计如下:其中各个模块均由宏开关打开,尽量减少各模块间的耦合,使协议栈可重构为开 IPv4.IPv6、UDP/IPv6协议栈等等。系统的体系结构图如图 1所示。
图 1 协议栈体系结构图
根据以上分析和实际需求,针对信息家电的特点,考虑到单片机的资源有限,所以网络协议根据系统应用的需求作了裁剪。由于目前家电入网还没有广泛普及,IPv4的地址数量足够使用。图 1的协议栈体系结构,可以只在传统的 TCP/IP协议栈的基础上进行适当裁减、修改即可。因此,系统中使用了 ARP、IPv4.ICM Pv4.UDP等部分协议,既保证单片机接入 Internet,又保证足够小的代码量。
3.2 详细设计
由于单片机的资源有限,所以网络协议根据系统应用的需求作了裁剪,系统中使用了 ARP、IP、ICM P、UDP等部分协议,既保证单片机接入 Internet,又保证足够小的代码量。
ARP协议为 32位 IP地址到对应 48位以太网地址之间提供动态映射。嵌入式系统中仅响应 ARP请求,发送ARP应答包。请求者广播出包含 ARP请求的以太帧和目的以太网地址为全 1的广播地址。本机收到后,由目的 IP地址发现自己是目的主机,发送一个 ARP回答。
嵌入式系统中,传输的数据都是一些数据量比较小的状态信息或者控制信息,因此数据报不会超过协议所限制的 1500字节 [4]。如果极少数数据实在比较大,可以在程序中进行处理,分批次进行传输。因此可以裁减掉 IP的分片和重组功能,而 IP数据包的路由功能则交给默认网关执行。
ICM P协议主要实现了回显请求和应答报文的功能。
UDP协议的开销很小,传输率比 TCP高出很多,实时性更强,所以 TCP/IP协议中采用 UDP协议作为运输层协议。
3.3 数据帧接收和发送流程
协议栈的 4层模型中,链路层部分由 RTL8019AS以及其驱动程序完成,网络层和传输层由单片机来处理,应用层则根据需要可以在单片机内完成,只实现对HTTP协议的精简,只支持简单请求。实现 HTTP协议才能实现网页文件的浏览。HTML网页数据可以存储在AT89S51单片机中。网页能够完成接收数据、发送网页数据等。本课题只考虑应用层接收进程的端口号是 80即 HTTP的情况,如果接收的报文目的端口号不是 80,就返回。系统的数据帧接收和发送部分的流程图如图 2和图 3所示。
图 2 数据帧发送流程图
图 3 数据帧接收流程图
4.结束语
虽然 IPv4被 IPv6取代是将来网络发展的必然趋势,但是构建在 IPv4或 IPv6技术之上的信息家电仍将共存,实现 IPv4/IPv6的无缝过渡和兼容在信息家电的远程控制系统中显得尤为重要。为了验证系统方案的可行性,进行了各方案的仿真实验,表现出稳定的工作状态,接收信息良好,可以满足信息家电的联网控制要求。
本文针对信息家电接入 Internet的协议栈进行了重新设计,使其可以支持 IPv4到 IPv6的无缝过渡,并可以根据不同的嵌入式设备入网要求,构架不同的协议栈。节约资源,移植方便。
[1]张杰,李霞,甘勇,李海燕 .信息家电远程控制中 IPv4/IPv6兼容的实现方案 [J].微计算机信息,2007,23(4):115-124.
[2]宋丽华,张晓彤,王沁,郭艳飞 .嵌入式协议栈可重构性分析与设计实现[J].计算机科学 .2007,34(9):69-76.
[3]徐健,周杏鹏 .嵌入式系统基于 RTL8019AS的以太网接入设计[J].电测与仪表 .2006,6(43):63-66.
[4]蔡利民 .基于 ARM的信息家电远程控制系统的设计[J].微计算机信息,2006,22(11):149-151.
[5]王艺,刘方,林晓辉 .基于 GPRS的嵌入式智能家居终端的设计与实现[J].微计算机信息,2007,23(9):23-25.
[6]韩光洁,赵海,王金东等 .Em bedded Internet环境下 TCP/IP协议簇的约简 [J].小型微型计算机系统,2004,25(9):1602-1606.
[7]康萍,袁红超 .智能家居系统接入 Internet的实现方法[J].计算机应用研究,2006,12(2):256-259.
[8]张小梅,陆俊,彭冰沁,刘宏 .嵌入式智能家居监控系统的设计与实现[J].微计算机信息,2007,23(2):49-55.
TP393
B
1671-5136(2010)01-0111-03
2010-01-25
宫蓉蓉 (1980-),女,山东威海人,长沙民政职业技术学院软件学院讲师、硕士。研究方向:计算机应用技术。