Contiki网络协议栈uIP和rime

时间:2022-08-08 11:06:12

低功耗无线传感器网络协议栈

 

Contiki系统内部集成了两种类型的无线传感器网络协议栈:uIP和Rime。uIP 是一个小型的符合RFC 规范的 TCP/IP 协议栈,使得 contiki 可以直接和Internet通信。uIP包含了IPv4 和 IPv6 两种协议栈版本,支持 TCP、UDP、ICMP等协议,但是编译时只能二选一,不可以同时使用。Rime 是一个轻量级为低功耗无线传感器网络设计的协议栈,该协议栈提供了大量的通信原语,能够实现从简单的一跳广播通信,到复杂的可靠多跳数据传输等通信功能。

uIP-tcpip;rime—低负载。应用程序可以使用两者之一或是两者都用,当然也可以都不用。Uip可以运行在rime之上,rime也可以运行uip之上。(adml)

 Contiki网络协议栈uIP和rimeContiki网络协议栈uIP和rime



uIP TCP/IP stack

uIP的TCP/IP协议栈是为能够在对内存具有严格要求的智能体和其他网络嵌入式设备运行而设计的。uIP的第一版在2001年9月发布,只有IPv4的通信功能,但在2008年思科系统扩充了uIP的IPv6功能,该uIPv6栈是第一个符合所有IPv6要求的。uIP的代码大小是几千字节,内存占用小于2KB。IPv6比IPv4要求略高。

uIP是一个简单好用的嵌入式网络协议栈,易于移植且消耗的内存空间较少,非常适合学习和使用。可以肯定的说uIP是嵌入式以太网学习的好起点,但不一定是终点。uIP的功能远不如LwIP强大,但两者并没有孰优孰劣之分,uIP和LwIP的作者同为Adam Dunkels,LwIP发布比uIP早一年的时间,uIP经过这几年的发展从IPV4迁移到IPV6,最终可以适用于无线传感网络。总的来说,uIP是一个很好的起点,学好uIP可以迁移到LwIP,也可以迁移到uIPV6。

Contiki 提供完整的 uIP 网络和低功耗无线网络协议栈。对于uIP 协议栈,一个轻量级的TCP/IP协议栈,实现了RFC定义的IPv4,IPv6。uIP很高效,只实现了协议要求的特性。例如整个协议栈只有一个buffer,用于接收和发送数据报。支持 IPv4 和 IPv6 两个版本,其中,IPv6 还包括 6Lowpan 适配层、ROLL RPL无线网络组网路由协议、CoRE/CoAP 应用层协议、还包括一些简化的 Web 工具,包括 Telnet、http 和 web 服务等。Contiki 还实现了无线传感器网络领域知名的MAC和路由层协议,其中 MAC 层包括 X-MAC、CX-MAC、NullMac、ContikiMAC、CSMA/CA、LPP 等,路由层包括 AODV、RPL等。

Application API

这里有两种方法使用uIP协议栈写程序:

·raw API:uIPraw API很适合实现一个简单的应用,例如一个简单的’echo’ server可以监听一些TCP端口并且将它收到的每个数据发送回去。然而当实现一个全功能的程序时编码变得越来越复杂,或者当多个程序需要共同使用时。甚至TCP连接状态机都有些烦人。

·protosocket API:protosocketlibrary利用 protothread library,提供一个更灵活的方式编写TCP/IP程序。这个库提供了一个类似于标准BSD sockets的接口,并允许在一个进程中编写程序。

Lower Layers

拥有一个有效的TCP/IP协议栈并且某些程序可以运行在其上当然很好,但是还不够。uIP协议栈要求一个更低的层(根据OSI模型)为了和peers通讯。我们将讨论两种类型的peers。

·节点(nodes):节点间通信是由无线连接实现的。uIP协议栈需要能够发送和接受数据包。取决于uIP版本,Contiki遵循不同的方法:

·1、当使用IPv6,Contiki将遵循route-over配置(RPL:低功耗有损网络的IPv6路由协议)。因此,uIP6使用一个被称为sicslowmac的简单MAC层。除了头部压缩由6loWPAN模型提供,它仅通过射频转发数据包。

2、对于IPv4(并不是IPv4),Contiki选用mesh-under配置。这由Rime通讯协议栈完成。Rime提供mesh routing和路由发现,因此uIP使用它来转发网络上的数据包。从IP point的角度来看,所有的传感器网络节点组成了一个本地子网,虽然multiple radio hops可能被要求。(这里的说法有待验证

 

Rime stack

官网对rime的解释:

对于带宽有限或者不能运行完整IPv6网络栈的环境Contiki定制了名为Rime的无线网络栈。Rime栈既支持简单操作,例如向所有邻居或指定邻居节点发送消息,也支持一些复杂机制,例如网络洪泛、多跳数据采集等。Rime可以运行在休眠路由上以降低功耗。

*中给出的关于rime网络的解释:

Contiki provides threenetwork mechanisms: the uIP TCP/IPstack,which provides IPv4 networking,the uIPv6 stack,which provides IPv6 networking,and the Rime stack, which is a set of custom lightweight networking protocolsdesigned specifically for low-power wireless networks. The IPv6 stack wascontributed by Cisco and was, at the time of release, the smallest IPv6 stackto receive the IPv6 Ready certification.TheIPv6 stack also contains the RPL routingprotocol for low-power lossy IPv6 networks and the 6LoWPAN headercompression and adaptation layer for IEEE802.15.4 links.

The Rime stack isan alternative(可供代替的)network stack that is intended to be used when the overhead of the IPv4 orIPv6 stacks is prohibitive. The Rime stack provides a set of communicationprimitives for low-power wireless systems. The default primitives aresingle-hop unicast, single-hop broadcast, multi-hop unicast, network flooding,and address-free data collection. The primitives can be used on their own orcombined to form more complex protocols and mechanisms.[8]


Rime协议栈提供一种递阶型无线网络协议,从简单的匿名广播到mesh网络路由。一个复杂的协议(比如multihop mesh routing)实现会被分解成若*分,复杂的模块利用相对简单的模块来组成。

Contiki网络协议栈uIP和rimeContiki网络协议栈uIP和rime

以下是对Rime不同模块的简述:

·abc:匿名广播,它仅通过射频驱动发送数据包和接收所有的数据包,并将他们送至上层;

·broadcast:标识广播,它为发出的数据包添加了发送者地址,然后传递给abc模块;

·unicast:这个模块添加给数据包添加一个目标地址,再传递给broadcast模块。在接收端,如果数据包的目标地址和当前节点地址不符,该数据包将为丢弃。

·stunicast:当要求发送数据包至某个节点,它将在给定的时间周期内反复发送,直到要求停止。

·runicast:可信单播,它使用stunicast模块发送数据包,并等待确认报文,收到后停止持续重发数据包。为了防止无限次发送,必须指定一个最大重发次数。

·politeipolite:这两个模块几乎相同,当一个数据包必须在给定的时间帧内被发送,模块在到达时间的一半时,检查是否收到的数据包与它准备发送的相同。如果收到了,这个数据包将不被发送,否则发送。这是一个有效的泛洪技术,可以避免没必要的重发。

· multihop:这个模块要求一个路由表功能,当将要发送数据时它会请求路由表提供下一跳,并且使用unicast发送。当它收到一个数据包,如果本身即为目标节点就将数据包传至上层,否则再次请求路由表提供下一跳并转发。

官网对rime的解释:

对于带宽有限或者不能运行完整IPv6网络栈的环境Contiki定制了名为Rime的无线网络栈。Rime栈既支持简单操作,例如向所有邻居或指定邻居节点发送消息,也支持一些复杂机制,例如网络洪泛、多跳数据采集等。Rime可以运行在休眠路由上以降低功耗。

*中给出的关于rime网络的解释:

Contiki provides threenetwork mechanisms: the uIP TCP/IPstack,which provides IPv4 networking,the uIPv6 stack,which provides IPv6 networking,and the Rime stack, which is a set of custom lightweight networking protocolsdesigned specifically for low-power wireless networks. The IPv6 stack wascontributed by Cisco and was, at the time of release, the smallest IPv6 stackto receive the IPv6 Ready certification.TheIPv6 stack also contains the RPL routingprotocol for low-power lossy IPv6 networks and the 6LoWPAN headercompression and adaptation layer for IEEE802.15.4 links.

The Rime stack isan alternative(可供代替的)network stack that is intended to be used when the overhead of the IPv4 orIPv6 stacks is prohibitive. The Rime stack provides a set of communicationprimitives for low-power wireless systems. The default primitives aresingle-hop unicast, single-hop broadcast, multi-hop unicast, network flooding,and address-free data collection. The primitives can be used on their own orcombined to form more complex protocols and mechanisms.[8]