Contiki 系统框架

        由于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的。剩下的留在以后再说。


        

展开阅读全文

没有更多推荐了,返回首页