微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种嵌入式IPv4/IPv6双协议栈的实现

一种嵌入式IPv4/IPv6双协议栈的实现

时间:04-13 来源:互联网 点击:

网络接口层是协议栈与下层网络设备驱动程序之间的接口,同时支持IPv4报文和IPv6报文,通过判断帧的类型字段,把接收到的不同类型的报文交给不同的协议模块进行处理。

3.3 IPv6模块

IPv6[2]模块主要包括两部分的功能,一是负责从网络接口层接收IPv6数据包,对数据包进行一定的处理后发送给上层处理模块(TCP或ICMPv6)。二是从上层接收数据,进行报文的选路,封装IPv6报头后将数据报发送给网络接口层。

3.3.1 ICMPv6[3]的简化分析

⑴ICMPv6信息报文

嵌入式设备只需作为Ping的接收端,所以不需要发送回显请求报文和处理回显应答报文。为了让客户端可以测试网络状态以及测试使用,必须支持接收请求报文和发送相应的应答报文。

⑵ICMPv6错误报文

由于嵌入式设备不会作为路由转发设备,所以需要实现发送端口不可达报文,同时要支持超时报文通告对端超时错误。在BSD中,IP层没有发送参数问题报文, ICMPv6无需支持处理参数问题报文。

3.3.2邻居发现协议(NDP)的简化分析

NDP[4]是IPv6协议的一个基本组成部分,它用于地址解析、邻居发现以及路由器及网络参数发现。本协议栈不支持路由功能,所以无需实现发送路由器通告报文,但必须接受路由器通告报文,以完成路由发现功能。同时支持邻居通告和邻居请求报文的接收和发送,以实现地址解析和重复探测。

3.4 TCP模块

在TCP之上实现有限的WEB服务,可以对该协议的实现机制作相应的简化及优化。

3.4.1 TCP模块的扩展

TCP对IPv4和IPv6报文的处理过程没有任何的不同,但是由于IPv4和IPv6地址结构不同,需要对使用IP地址的部分进行扩展。

⑴数据结构扩展

PCB是用来记录每个TCP连接状态的,包括本地IP地址和远程IP地址,扩展时使用union结构添加IPv6地址,同时添加标识位区别连接。

⑵操作扩展

在TCP处理过程中包括输入时对IP地址和端口号的匹配,输出时校验和的计算和路由的查找。由于对IPv4和IPv6报文调用相同的处理函数,需要在实现时在这几个函数的处理过程中加入对相应PCB中标识位的判断。

3.4.2 简化TCP状态机

TCP的面向连接和可靠性传输等特性决定了每一个标准的TCP状态机庞大而且复杂,对于嵌入式应用,可以根据需要进行简化。

建立连接分为主动打开和被动打开,本协议栈设计作为监听状态的服务器端,仅实现被动打开。在设计中去掉了CLOSED状态,让它一开始就处于LISTEN状态,等待对方发起连接。

断开连接分为主动断开和被动断开,从安全性的角度考虑,本设计仅实现主动断开连接。当服务器发送完数据时,向客户机发送关闭连接请求。

通过以上分析,根据特定的应用不失一般性的裁减掉复杂和冗余的机制,除去标准状态机中的客户端部分,简化连接的建立和关闭过程,就得到如图2所示的简化的TCP状态机模型。


3.4.3 简化的窗口机制

标准的TCP协议使用慢启动的滑动窗口机制[5],它允许发送方在等待一个确认之前发送多个窗口。其确认是一种批量的确认,处理器要对多个数据报连续传输进行维护和处理,困难较大。

而滑动窗口的一个极限情况,是只使用单个窗口,这就变成了一种简单确认的处理方法。只是对于单个数据报的发送和确认,虽然节约了系统的资源,也使维护更加方便,但是却降低了效率。

系统采用了一个折中的办法,适当调整窗口的大小,限制连续发送报文段的个数来实现了一个简化的窗口机制,如图3所示。在这里,设置窗口大小(snd_wnd)为4个最大报文段长度(MSS),可以适当提高数据传输效率。

4 协议栈的移植和测试

在完成双协议栈的设计调试后,将此协议栈移植到基于ARM7TDMI核的AT91M40800开发板上,使用其中内嵌的10Mbps以太网控制器 RTL8019AS作为网络接口。在该平台上实现了一个简单的Web Server。通过构建提供IPv4地址和IPv6地址访问的网络拓扑结构进行测试,该双协议栈运行稳定、正常。

同时,在相同环境下将此协议栈与开源的协议栈LwIP作了吞吐率性能方面的比较,如图4所示。可知,本协议栈有较好的吞吐率,在连接数达到3条以后,平均吞吐率达到了460kB/s。

5 结语

本文主要介绍了一种嵌入式双协议栈的实现,实践证明它是一个符合TCP/IP协议规范的,高性能,低开销,可移植的IPv4/IPv6双协议栈。本协议栈仅实现了基本的IPv4和IPv6通信功能,还有需多需要改进和增强的地方,扩展IPv6的移动功能是此协议栈下一步的研究重点。

本文作者创新点:嵌入式双协议栈的实现独立于操作系统内核和硬件平台。设计了具有较高处理效率的缓冲区管理机制,对IPv6功能模块进行了裁减,对TCP模块中的运行状态机和滑动窗口机制进行了简化。

参考文献:
[1] OKABEN. Mininum Requirement of IPv6 for Low Cost Network Appliance[EB/OL]. INTERNET- DRAFT,2001-2002.
[2]张杰.一种Web服务中IPv4/IPv6兼容的实现方案[J].微计算机信息,2006,10-3:31-72.
[3] CONTA A, DEERING S.Internet Control Message Protocol(ICMPv6),RFC 2463[S].Internet Engineering Task Force,1998.
[4] NARTENT. Neighbor Discovery for IP Version 6 (IPv6), RFC2461[S].1998.
[5] STEVENSWR.TCP/IP详解(卷1:协议)[M].范建华,胥光辉,张涛,等译.北京:机械工业出版社,1999.209-224.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top