摘 要:本文通过对常用 ipv6 技术的研究和分析,针对嵌入设备处理速度慢,存储容量小
等特点,对常用 tcp/ipv6 协议栈进行了裁减和简化,裁减掉一些不常用但不影响基本通信 功能的协议模块,同时对要保留下来要实现的各个协议进行简化,只实现其基本功能。设计完 成实现后的协议栈,具有代码量少,运行效率高和良好的可移植性等特点,适合于各种嵌入 式设备,是一种解决嵌入式设备接入 ipv6 网络的可行方案。
关键词:ipv6;嵌入式操作系统;邻居发现;icmpv6;地址解释
abstract
via the research and analyse for the ipv6 technique in this article.in allusion to the mcu on embeded system is not fast,and the storage capability is low,we cut down the common ipv6 stack. in this design we cut down some unusuary used but not affect basic communication protcols.besides, for the saved protocols we only realize it’s basic function.after the achievment we find that this stack little-codes, efficiency-runing and have good grafted ability. so it fit for embeded system devices, and be
considered as a feasible scheme for embedded system connecting to ipv6 network.
keywords: pv6; embedded operating system; neighbor discovery; icmpv6; address resolution.
1. 引言
嵌入式internet技术是指把internet技术 应用于嵌入式设备, 实现嵌入式设备的信息 交互,是嵌入式技术与internet技术的结合, 具有非常广大的市场前景。WWW.133229.COm目前不少厂商都 在进行这方面研究, 并推出了不少嵌入式 internet解决方案,比较常用的成熟的解决方 案有,瑞士计算机科学院adam dunkels写的 ulp和 lwip,它们以ipv4技术为基础,以精 简为指导思想,把复杂的tcp/ip技术引入嵌 入式设备,满足嵌入式设备接入网络的需 求。而作为ipv4改良版本的ipv6,是对ipv4 的升级和改进,是下一代网络的核心,如何 以ipv6技术为基础,设计一款和嵌入设备结 合的具 有 代码量 少 ,功能 简 单的精简 tcp/ipv6协议栈是一件非常现实意义的挑 战,也是本课题设计的目的所在。
2. ipv6 协议栈
ipv6协议栈是基于ipv6网络层的协议, 和ipv4一样,遵循现有互联网四层网络互联 体系结构,如图1所示。从图中我们可以看到, 协议栈分为网络接口层,互联网
层,传输层,应用层四层。应用层直接面 向用户,并提供访问其它层服务的功能;传 输层用于提供源主机和目的主机上的对等 实体对话;网络接口层屏蔽了具体的硬件实
现细节,负责底层数据的接收和发送;网络
层是整个tcp/ip体系结构的关键部分,其主 要功能是在网络上提供可靠的主机到主机 的数据传送。ipv6协议正是位于该层,它包 含的主要协议模块有ipv6,icmpv6,邻居发 现nd,ipsec等。
2.1 ipv6 协议
根据rfc2460对ipv6功能的描述,ipv6 主要负责把上层来的数据段添加ipv6报头, 交由底层发送;把下层接收到的报文经过处 理和分析,交给tcp,udp或icmpv6处理。 和ipv4相比 ipv6的改变主要集中在以下几 个方面:地址容量的扩展,报头格式的简化, 支持扩展和选项的改进,数据流标签的能力,认证和保密的能力等[1]。
2.2 icmpv6 协议
icmpv6协议合并了ipv4中icmp(控制 报文协议),i- gmp(组成员协议)、arp(地 址解析协议)等多个协议的功能,实现差错 控制,地址解释等功能,并支持mobile ipv6。 icmpv6报文封装在ip报文中,是ip报文的 有效载荷数据,它通过它的各种错误报文和 信息报文的交换来实现差错控制,地址解释 和路由前缀信息获取等功能。
2.3 邻居发现(neighbor discovery) 协议
邻居发现协议nd是ipv6协议栈中的核 心协议,是ipv6解决邻节点交互的一个重要 协议。它定义了下列问题的解决机制:路由 发现,前缀发现,参数发现,地址自动配置, 地址解释,下一跳决定,邻居不可达,重复 地址检测,重定向。邻居发现的这些功能是 通过5个icmp报文(邻居请求/邻居通告报 文,路由器请求/路由器通告报文,重定向报 文)的交换来实现的。3. ipv6 协议栈的精简
协议栈精简的核心是“微型化”,我们对 协议栈进行协议模块裁减和单个协议简化。
3.1 协议模块裁减
协议模块裁减是指在保障基本通信功 能的前提下尽可能去掉一些协议模块,节省 系统资源。网络接口层我们只考虑 802.3 以 太网协议(csma/cd,mac,llc),不考 虑面向 can,rs-232,rs-485,射频,蓝牙等 相关的支持模块。接入方式上只考虑用路由 器接入方式,不考虑拨号连接方式,去掉和 拨号连接方式相关的面向点对点连接的 ppp 协议和 slip 协议,这两个协议在网络 接口层占用的代码量比较多;ip 层只实现基 本的报头,不实现扩展报头,去掉基于认证 头和封装安全载荷头选项的 ipsec 协议,安 全控制交给其他层。icmpv6 和 nd 是核心
协议必须保留;传输层 tcp 和 udp 可以全 部实现也可以只实现一种,考虑的适应性, 本设计中都给予实现。因此协议模块裁减后 要实现的核 心协议族 为 802.3 , ipv6 ,
icmpv6,nd,tcp,udp。
3.2 单个协议简化
单个协议简化是指以单个协议为目标, 进行功能和数据结构的简化。对 ipv6 协议 来说,只接收,发送报文,不支持报文的分 片与重组,不支持扩展报头选项,对可靠连 接传输来讲,包过大得不到确认,会根据拥 塞控制机制和重传机制,减少数据分组长 度,进行重新发送,对大多数应用来说这不 会产生其他严重问题。对 icmpv6 来说,只 实现错误报文中的目的不可达报文,信息报 文中的应答回复报文,不实现超时报文,报 文过大报文和应答请求报文,一般包过大, 超时报文由路由器实现,应答请求报文用于 主动测试中发起测试的 pc 机一端。对邻居 发现 nd 模块来说,只实现邻居请求和邻居 应答报文,嵌入式设备刚接入网络,它可以静 态的等待网络上路由器定时发送的路由公 告报文,而不是主动发送路由请求报文来获 取,不需实现路由请求/路由应答报文。嵌 入式设备连接的邻居接点,路由一般简单, 传输量少,不需重定向报文来进行路由定 向。简化的大块在 tcp,tcp 是整个协议簇 中最复杂,代码量最多的协议。它的功能模 块有:滑动窗口,流量控制,拥塞控制,tcp 连接状态机,往返时间估计,重传协议。本 协议栈的目标是有操作系统支持的嵌入式 系统,速度和存储量比 8 位和 16 位单片机 都有提高,不必采用分配固定缓冲区的形式 进行接收一帧处理一帧,可以考虑采用分配 一个较大的缓冲区实现滑动窗口机制,用来 提高传输效率,实验证明,传输效率的提高 是明显的,往返时间估计和重传机制比较简 单,代码量不大,可以实现,tcp 状态机表 示 tcp 进程通信的状态迁移,是 tcp 的核
心必须实现,可以不实现流量控制机制,因
为流量不是很大。因此 tcp 模块实现的功 能有:tcp 有限自动机,滑动窗口,往返时 间估计,重传协议。忽略流量控制与拥塞控 制模块,在可靠连接中,当因拥塞而发生数 据丢失的时候,发送方收不到确认就采用重 传机制重发数据[2]。
4. 嵌入式精简 ipv6 协议栈的设
计与实现
在设计协议栈过程中,我们在嵌入式操 作系统基础上设计和实现一个操作系统模 拟层,实现基本的时钟,消息管理和进程同 步等基本操作系统功能。协议进程方面,把 所有的协议栈封装到单独进程中,应用程序 可以驻留在其中或作为一个单独的进程,这 样既实现了与操作系统分离,又避免了层间 切换。对于内存管理采用类 bsd buf 结构, 把静态缓冲区和动态缓冲区链接起来[3]。
4.1 ipv6
参考文献
[1] robert e f. embedded internet systems come home[ j]. ieee internet computing,2001,5(1):52-53.
[2] ruhuarvi j,mahonen p,saaranen m j. providing
[3] soung s. network-driven layered multicast with ipv6[j],lecture notesin computer science, 2000 , volume
18 :11.
[4] liu li-feng,zou shi-hong. a congestion and rate control scheme based on directed diffusion in wireless sensor networks[j].journal of beijing university of posts and telecommunications,2006,29(2):54-58.
[5] chris m,maillik t, a look at native ipv6
multicast[j], ieee internet computing,2004 volume8 issue4: 48
[6] 周立功. sopc 嵌入式系统实验教程. 深圳:北京航空航天出版社. 2006 :241-248
[7] 姚羽,石林. ipv6 技术项目实验指导书. 北京:电子工业出版社. 2007 :24-28
[8]免费论文网