概述
由于TCP/IP协议不适用于资源受限的嵌入式设备,IEFT提出了6lowpan协议栈,6lowpan框架如下:
图1
正如实现Zigbee协议的协议栈有z-stack、ember、Freakz一样,目前支持6lowpan的协议栈有Contiki、Tinyos。这里我们主要介绍Contiki系统。
Contiki系统内部集成了两种类型的网络协议栈:uIP和Rime。
Rime是一个独立、轻量级、专为LLN设计的协议栈,Rime本身提供了大量原语,能够实现单播、多播到复杂的多跳数据通信,Rime是一个完整的协议栈,就像Atmel LWMesh一样的小协议栈。在Rime中没有IP架构和协议的概念,所以,它既不基于IPv4,也不基于IPv6。实际中几乎没人使用Rime,因为使用Rime协议进行通信,就失去了Contiki设计的初衷了。
uIP是一个符合RFC规范的标准TCP/IP协议栈(和LWip类似),使得Contiki可以直接和Internet通信。uIP包括了IPv4和IPv6两个版本(注意,uIP是在sicalowpan的支持下实现IPv6的),支持TCP、UDP等协议,但在编译时只能选择其一,不可同时使用。
RPL是基于IPv6的多跳路由协议,使用了ICMPv6消息。Contiki中uIP和RPL的关系如下:
图2
uIP中已经实现了TCP通信,只是TCP和UDP相比,前者不适用WSN,所以一般情况下都是使用UDP通信。此外,RPL是基于IPv6实现的多跳路由,所以,IPv4时不能使用RPL协议。IPv4时可以调用uaodv实现多跳。下面是我认为的Contiki系统的完整框架:
图3
Contiki中的uaodv和Zigbee网络层中的AODV是不一样的。AODV的规范标准是RFC3561,该标准时针对IPv4。Zigbee网络层使用是修改后的AODV,不是完整的AODV标准因为RFC3561规定“AODV需要使用UDP来维护路由”,Zigbee网络做不到这一点,所以需要修改。但在Contiki系统中,uaodv借助uIP实现了标准的RFC3561,也就说,Contiki系统中应用的是标准规范的AODV协议。
对照图3和图1,你会发现,Contiki不但实现了6lowpan协议,而且要复杂的多,这主要是考虑到了实际的应用。关于Contiki系统框架,还有很多内容在本篇内容中没有涉及,比如MAC层又有NullMAC、什么MAC的。剩下的留在以后再说。
最后
以上就是淡淡泥猴桃为你收集整理的Contiki 系统框架的全部内容,希望文章能够帮你解决Contiki 系统框架所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复