CN102694774A - IPv6微型协议栈设计方法 - Google Patents
IPv6微型协议栈设计方法 Download PDFInfo
- Publication number
- CN102694774A CN102694774A CN2011100703395A CN201110070339A CN102694774A CN 102694774 A CN102694774 A CN 102694774A CN 2011100703395 A CN2011100703395 A CN 2011100703395A CN 201110070339 A CN201110070339 A CN 201110070339A CN 102694774 A CN102694774 A CN 102694774A
- Authority
- CN
- China
- Prior art keywords
- ipv6
- protocol stack
- data
- application
- miniature
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种IPv6微型协议栈设计方法,包括以下步骤:1)精简IPv6协议栈;2)独立于操作***进行协议栈调度;3)采用最大容限控制的内存分配方案;4)采用基于事件和数据类型驱动的应用程序接口。本发明摆脱了传统的TCP/IP协议栈实现需要太多的硬件和软件资源的限制,满足了传感器网络路由器低成本、低能耗的要求,具有体积小、能耗低、自适应性强、成本低、简单灵活等优点,符合IPv6协议栈的微型化趋势,推动了IPv6协议栈的微型化,在工农业生产、军事国防、医疗护理、环境监测、智能家居等领域有着广泛的应用前景。
Description
技术领域
本发明涉及一种IPv6微型协议栈设计方法。
背景技术
IPv6协议(Internet Protocol Version6”的缩写,也被称作下一代互联网协议)作为下一代网络的核心协议,较好地解决了当前IPv4协议所面临的问题,适应了未来网络基础设施在数量和质量上的需求,体现出灵活性、高效性等优点。IPv6与IPv4一样,都遵循TCP/IP模型分层化的体系结构。一般来说,根据协议分层模型,可将TCP/IP参考模型分为4个层次:网络接口层、网络层、传输层、应用层。应用层直接面向用户,并提供访问其它层服务的功能;传输层用于提供源主机和目的主机上的对等实体对话功能,网络接口层负责底层数据的接收和发送,该层技术细节通常与TCP/IP无关;网络层是整个TCP/IP体系结构的关键部分,其主要功能是主机可以把分组发往任何网络,并使分组可以独立地传送到目的主机。IPv6基本协议栈位于网络层,是基于IPv6的网络层协议栈,通过运行该基本协议栈以完成网络层的主要功能,支持其正常运行。IPv6基本协议栈的主要内容包括:IPv6协议、IcMPv6协议、邻居发现协议(ND)、地址自动配置协议、IPv4到IPv6的过渡协议等。其中,IPv6协议定义了IPv6的基本规范,负责把数据包添加包头后交由底层发送,并把接收到的IPv6报文递交给上层的TCP或uDP处理;ICMPv6协议封装在IPv6包中,通过协议的控制报文进行错误报告和网络诊断等;邻居发现协议和地址自动配置协议处于IPv6网络层和网络接口层之间,主要功能是实现无状态地址的自动配置和对网络配置性能进行改善;考虑到IPv6协议是在IPv4协议的基础上发展而来的,在实际网络中,利用IPv4到IPv6的过渡协议来实现从IPv4向IPv6的演进。
由于IPv6基本协议栈过于庞大,而传感器节点上各种资源是有限的,如CPU的处理速度、字长、RAM、ROM存储器的容量、接口的数量等和通用计算机相比有很大差距,所以“微型化”成为IPv6协议栈设计的关键问题。“微型化”思想主要体现在设计方案核心应着眼于设计体积小,但又不影响运行的协议栈,所以要对协议栈的裁剪方面进行深入研究,去掉不必要的组件、传统的复杂调度机制和额外的扩展功能。
发明内容
传统的TCP/IP协议栈实现需要太多的硬件和软件资源,无论是几百K字节的代码量还是几百千字节的数据存储区大小都无法满足传感器网络路由器低成本、低能耗的要求。为了将IPv6技术运用到无线传感器网络中,本发明的目的是设计一种精简的微型TCP/IPv6协议栈,以满足传感器网络路由器低成本、低能耗的要求。
本发明采用的技术方案如下:
一种IPv6微型协议栈设计方法,包括以下步骤:
1)精简IPv6协议栈;
2)独立于操作***进行协议栈调度;
3)采用最大容限控制的内存分配方案;
4)采用基于事件和数据类型驱动的应用程序接口。
进一步地:
在所述步骤1)中,对包括IPv6协议、ICMPv6协议、ND协议、TCP协议在内的各协议进行简化,去除其中无关和不必要的组件及扩展功能。
在所述步骤2)中,通过划分中断处理程序,使中断处理程序缩短,减小执行任务时产生的冲突。
在所述步骤3)中,采用两个全局变量inBuffer和outBuffer保存整个IPv6数据包,分别对TCP/IPv6协议栈各个字节进行处理。
步骤3)包括以下详细步骤:
当数据包接收后,首先解析IEEE802.15.4数据帧头部和适配层头部,将适配层数据帧的载荷存储在全局变量inBuffer中,同时将协议栈处理指针指向全局变量inBuffer的各个协议字段,调用TCP/IPv6协议处理函数进行解析,最后由应用程序接口进行应用数据的处理;
对应用层产生的数据进行TCP/IPv6封装的过程跟上述过程相反;
在应用层处理完数据后,首先将应用数据写入全局变量outBuffer,然后调用TCP/IPv6协议栈对数据包进行封装,填充适配层报头格式,最后递交到IEEE802.15.4介质接入控制层和物理层完成数据帧封装进行发送。
在所述步骤4)中,所述事件驱动是指:在TCP/IPv6协议栈中通过设置“轮循”、“接收数据”、“数据应答”和“重传”事件,通知应用程序接口调度相应的应用程序。
在所述步骤4)中,所述数据类型驱动是指:每个应用数据的头部都要填充传感数据类型,应用程序接口根据传感数据的类型,分别调度对应的应用程序,应用程序再进行数据采集或者数据处理,封装传感数据类型,递交到应用程序接口,由应用程序接口通知TCP/IPv6协议栈进行处理。
本发明具有以下优点:
本发明的协议栈代码量小、简易轻型并且可以与使用完整的TCP/IPv6协议栈的对等节点进行通信。本发明的协议栈采用了一种独立于操作***的网络事件调用方案,采用了基于事件和数据类型驱动的应用程序接口和基于需求驱动的重传机制,通过最大容限控制的内存分配方案,使得最终的协议栈软件的数据存储区控制在20千字节以内。
附图说明
图1为通用接口图。
具体实施方式
由于传感器节点上各种资源是有限的,如CPU的处理速度、字长、RAM、ROM存储器的容量、接口的数量等和通用计算机相比有很大差距,所以如何使协议栈做到精细、通讯可靠、功能相对完善,而且又能发挥单片机的特点成为IPv6微型协议栈设计的关键问题。IPv6微型协议栈从以下几个方面对IPv6协议栈进行了精简:
一.精简IPv6协议栈,去掉不必要的组件及额外扩展功能
由于无线传感器网络通常是在特定环境下,完成一种特定的功能或任务,因此对运行在其上的IPv6微型协议栈不必像通常IP协议栈那样,实现IP层的所有功能,只需考虑实现IPv6协议栈的基本协议和功能的实现。因此,我们可以对原协议栈进行必要的裁减,包括对IPv6协议、ICMPv6协议、ND协议、TCP协议等协议进行简化。
二.独立于操作***进行协议栈调度
无线传感器网络IPv6微型协议栈,直接面对硬件,MCU中的程序结构一般是顺序执行和硬件中断相配合的方式,与高级操作***中的多线程并发执行的方式截然不同。在高级操作***中,对网卡的驱动采用中断方式,中断与软中断、消息机制等相结合,运行时以分时为基础,进行动态优先级调度。为了节约节点设备存储空间和处理能耗,我们设计的IPv6微型协议栈独立于操作***,通过划分中断处理程序,使中断处理程序变短,减小执行任务时产生的冲突,从而达到嵌入式***的需要。
三.最大容限控制的内存分配方案
我们设计的微型TCP/IPv6协议栈并不采用动态分配内存的方式,而是采用两个全局变量inBuffer和outBuffer保存整个IPv6数据包,分别对TCP/IPv6协议栈各个字节进行处理。两个全局变量大小都为102个字节,满足IEEE802.15.4规定(最大包长度127字节-最小数据帧头15字节)。当数据包接收后,进行解析IEEE802.15.4数据帧头部和适配层头部,然后将适配层数据帧的载荷存储在inBuffer中,用全局变量buflen表示载荷长度,同时将协议栈处理指针指向inBuffer各个协议字段,调用TCP/IPv6协议处理函数对数据帧进行解析,最后由应用程序接口进行应用数据的处理。同样,应用层产生的数据进行TCP/IPv6封装的过程跟上述过程相反。为了防止在数据包发送过程中,对下一个接收的数据包进行覆盖,在应用层处理完数据后,将应用数据写入outBuffer,然后调用TCP/IPv6协议栈对数据包进行封装,填充适配层报头格式,然后递交到IEEE802.15.4介质接入控制层(MAC)和物理层(PHY)完成数据帧封装进行发送。
四.基于事件和数据类型驱动的应用程序接口
在大多数的操作***中,TCP/IP协议栈的应用程序接口为Socket应用程序接口(SocketAPI)。由于SocketAPI使用的是一种停止——等待的原语,需要多任务的操作***的支持,并且任务管理的开销、上下文的切换以及任务空间的分配都对当前的传感器节点体系结构提出很高的要求,所以我们提出一种基于事件和数据类型驱动的应用程序接口。通用接口的设计使得***具有很强的灵活性和扩展性。一方面,能实现应用层与下层无缝衔接,为新增应用功能而设计的应用程序可以方便载人***,无需考虑下层结构实现细节;另一方面,通用接口为应用层的实现完全屏蔽了下层硬件平台环境,同一应用程序可以在某一特定应用领域的各类设备上实现通用,大大增加了***的灵活性和移植性。通用接口设计如图1所示。在IPv6微型协议栈中设置“轮循”、“接收数据”、“数据应答”和“重传”事件,协议栈处理函数根据事件类型,通知应用程序通过接收接口APP_process(),把应用数据传入应用层,在应用层中的各应用程序再由子接口接收属于自己的数据,完成相应的应用处理操作。处理后的应用数据,由子接口递交到应用程序通用发送接口Send_toserver(),通知IPv6微型协议栈进行下一步的处理。
Claims (7)
1.一种IPv6微型协议栈设计方法,其特征在于包括以下步骤:
1)精简IPv6协议栈;
2)独立于操作***进行协议栈调度;
3)采用最大容限控制的内存分配方案;
4)采用基于事件和数据类型驱动的应用程序接口。
2.如权利要求1所述的IPv6微型协议栈设计方法,其特征在于:
在所述步骤1)中,对包括IPv6协议、ICMPv6协议、ND协议、TCP协议在内的各协议进行简化,去除其中无关和不必要的组件及扩展功能。
3.如权利要求1所述的IPv6微型协议栈设计方法,其特征在于:
在所述步骤2)中,通过划分中断处理程序,使中断处理程序缩短,减小执行任务时产生的冲突。
4.如权利要求1所述的IPv6微型协议栈设计方法,其特征在于:
在所述步骤3)中,采用两个全局变量inBuffer和outBuffer保存整个IPv6数据包,分别对TCP/IPv6协议栈各个字节进行处理。
5.如权利要求4所述的IPv6微型协议栈设计方法,其特征在于:
步骤3)包括以下详细步骤:
当数据包接收后,首先解析IEEE802.15.4数据帧头部和适配层头部,将适配层数据帧的载荷存储在全局变量inBuffer中,同时将协议栈处理指针指向全局变量inBuffer的各个协议字段,调用TCP/IPv6协议处理函数进行解析,最后由应用程序接口进行应用数据的处理;
对应用层产生的数据进行TCP/IPv6封装的过程跟上述过程相反;
在应用层处理完数据后,首先将应用数据写入全局变量outBuffer,然后调用TCP/IPv6协议栈对数据包进行封装,填充适配层报头格式,最后递交到IEEE802.15.4介质接入控制层和物理层完成数据帧封装进行发送。
6.如权利要求1所述的IPv6微型协议栈设计方法,其特征在于:
在所述步骤4)中,所述事件驱动是指:在TCP/IPv6协议栈中通过设置“轮循”、“接收数据”、“数据应答”和“重传”事件,通知应用程序接口调度相应的应用程序。
7.如权利要求1所述的IPv6微型协议栈设计方法,其特征在于:
在所述步骤4)中,所述数据类型驱动是指:每个应用数据的头部都要填充传感数据类型,应用程序接口根据传感数据的类型,分别调度对应的应用程序,应用程序再进行数据采集或者数据处理,封装传感数据类型,递交到应用程序接口,由应用程序接口通知TCP/IPv6协议栈进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100703395A CN102694774A (zh) | 2011-03-23 | 2011-03-23 | IPv6微型协议栈设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100703395A CN102694774A (zh) | 2011-03-23 | 2011-03-23 | IPv6微型协议栈设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102694774A true CN102694774A (zh) | 2012-09-26 |
Family
ID=46860061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100703395A Pending CN102694774A (zh) | 2011-03-23 | 2011-03-23 | IPv6微型协议栈设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102694774A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103248579A (zh) * | 2013-04-19 | 2013-08-14 | 中山大学 | 基于FPGA的UDP/IPv6硬件协议栈及实现方法 |
CN106060901A (zh) * | 2016-05-17 | 2016-10-26 | 深圳芯智汇科技有限公司 | 嵌入式无线网络***及其接入无线网络的方法 |
CN110933085A (zh) * | 2019-11-29 | 2020-03-27 | 上海上实龙创智慧能源科技股份有限公司 | 一种基于无线传感网络的边缘计算网关的协议转化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1794732A (zh) * | 2005-12-26 | 2006-06-28 | 北京交通大学 | IPv6微型传感路由器协议栈体系结构及实现方法 |
CN101442556A (zh) * | 2008-12-25 | 2009-05-27 | 北京交通大学 | 一种基于IPv6的无线传感器网络服务器*** |
-
2011
- 2011-03-23 CN CN2011100703395A patent/CN102694774A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1794732A (zh) * | 2005-12-26 | 2006-06-28 | 北京交通大学 | IPv6微型传感路由器协议栈体系结构及实现方法 |
CN101442556A (zh) * | 2008-12-25 | 2009-05-27 | 北京交通大学 | 一种基于IPv6的无线传感器网络服务器*** |
Non-Patent Citations (1)
Title |
---|
吴德伦等: "基于IEEE802.15.4无线传感器网络的IPv6协议栈", 《单片机与嵌入式***应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103248579A (zh) * | 2013-04-19 | 2013-08-14 | 中山大学 | 基于FPGA的UDP/IPv6硬件协议栈及实现方法 |
CN103248579B (zh) * | 2013-04-19 | 2016-09-07 | 中山大学 | 基于FPGA的UDP/IPv6硬件协议栈及实现方法 |
CN106060901A (zh) * | 2016-05-17 | 2016-10-26 | 深圳芯智汇科技有限公司 | 嵌入式无线网络***及其接入无线网络的方法 |
CN110933085A (zh) * | 2019-11-29 | 2020-03-27 | 上海上实龙创智慧能源科技股份有限公司 | 一种基于无线传感网络的边缘计算网关的协议转化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102769869B (zh) | 无线接入点的控制和配置报文快速转发*** | |
CN107613107A (zh) | 资源配置方法及相关产品 | |
CN104052759A (zh) | 一种物联网即加即用技术的实现*** | |
CN103945456A (zh) | 一种基于Linux***的LTE基站用户面高效UDP数据发送优化方法 | |
CN103902390A (zh) | 基于Android的应用层的进程间通信方法及基础应用通信*** | |
Baccelli et al. | RIOT: One OS to rule them all in the IoT | |
CN103441939A (zh) | 基于IPv6无线传感器网络的多功能边界路由器 | |
CN107347046A (zh) | 一种跨网段的数据报头压缩实现方法 | |
CN102571912B (zh) | 一种实现基于多核处理器和混合操作***的卸载协议栈的方法 | |
CN102662910A (zh) | 基于嵌入式***的网络交互体系及网络交互方法 | |
CN103324502A (zh) | 传感器网络节点代码升级管理中间件、方法及应用 | |
CN102546319A (zh) | 物联网终端互通的方法及*** | |
CN102711142A (zh) | 一种无线传感器网络节点通信控制***及其控制方法 | |
Baccelli et al. | OS for the IoT-goals, challenges, and solutions | |
CN108322443A (zh) | 设备交互通信方法、装置、存储介质及计算机设备 | |
US7428730B2 (en) | Software development environment | |
CN101170573B (zh) | 主动无线传感器网络中间件***与实现方法 | |
CN102694774A (zh) | IPv6微型协议栈设计方法 | |
EP1647889A1 (en) | Method and node of managing communication buffers by using an application framework for plurality of communication layers | |
Azzara et al. | The icsi m2m middleware for iot-based intelligent transportation systems | |
CN103944596A (zh) | 基于软件定义的支持多协议传输的通信设备 | |
CN114827292A (zh) | 工业异构协议高速转换优化处理方法及*** | |
CN102255800A (zh) | Can总线上ip数据包和can消息之间数据格式相互转换的方法 | |
Kundu et al. | Hardware acceleration for open radio access networks: A contemporary overview | |
CN107277011A (zh) | 终端设备的数据分类方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120926 |