[Contiki系列论文之2]WSN的自适应通信架构

说明:本系列文章翻译自Contiki之父Adam Dunkels经典论文,版权归原作者全部。
Contiki是由Adam Dunkels及其团队开发的系统。研读其论文是对深入理解Contiki系统的最佳资料。

Contiki经典论文翻译——索引文件夹


摘要

  随着传感器网络的多样化发展,产生了越来越多的链路层、MAC层协议以及潜在的传输机制。

系统开发人员必须使他们的应用和系统能够自适应于广泛的、潜在的协议和机制。只是,因为已经存在的传感器通信架构在设计时并没有考虑到这个多样性,所以系统开发人员必须为每种潜在的协议和机制又一次开发他们的系统。为了补救这样的情形,我们提出了一个通信架构。该架构能够在不须要改动不论什么应用和协议的前提下,适用于广泛存在于从MAC层到传输层的潜在的通信机制。

该架构具有足够的表现力以适应典型地传感器网络协议。

通过測试证明,相对于非自适应架构。该架构的执行时间仅仅添加了一点点。

1 介绍

  随着传感器网络的多样性发展,传感器网络的协议操作受到非常大的挑战。比方。假设一个应用程序执行于一个多链路层技术之上,应用程序和协议就不能依赖于已经存在的相关的链路层机制——比方链路层重传。

这让我们不得不又一次思考传感器网络的通信架构。


  就互用性和代码重用而言。一个通用的传感器网络架构能带来非常多益处。

传感器网络社区近期注冊了一些不同的传感器网络架构,比方Polastre等人的SP架构。Cheng等人的模块化网络架构。只是。SP和模块化网络架构都不能自适应执行在架构之上的协议。
  SP没有指定不论什么协议头。因此能够自适应潜在的协议。但正是因为没有指定协议头,SP也在网络协议自适应的时候存在问题。Cheng等人的模块化架构依照网络层的功能划分成若干模块,在每一个模块中定义自己的模块头。假设要加入附加协议,应用程序猿必须清楚地定义模块边界并指定包的子头。
  在本篇论文中。我们展示了一个用于传感器网络的通信架构——变色龙。

变色龙架构由两部分组成:Rime通信协议栈和一系列的包传输模块。变色龙架构不仅能够适用于已存在的典型传感器网络协议,还能够自适应大量潜在的协议和机制。


  设计具有互操作性通信架构的最大问题在于寻找一个通用的头格式。

这样的头格式必须同一时候满足两个条件:对架构支持的通信模式具有足够的表现力。对将来的架构扩展具有足够的灵活性。对于一个传感器网络架构而言。这个问题更具有挑战性,因为必须保证这个头足够小。


  为了寻找这样一个通用头,变色龙採用了一个彻底的不同的方法:变色龙全然不定义不论什么头,取而代之使用头属性——一种对包头中的信息的抽象。
  变色龙中有一个独立的头转换模块,它负责将应用数据和包属性转换为包头,从而能够形成一个具有包头和负载的完整包。

通过使用不同的变色龙模块,使创建一个遵从不论什么给定包头说明的数据包成为可能。


  


  
图1.一个执行多个链路层协议的分层架构

  图1中的网络中存在3个不同的协议:一个低功耗无线电,比方CC1100。一个中功耗802.15.4无线电,以及因特网中的TCP/IP。这个网络使用了三个变色龙模型:一个负责生成低功耗无线电的链路层包,一个负责生成802.15.4的MAC层包,一个负责生成UDP/IP传输层包。与其他通信架构不同。执行在变色龙架构上的应用程序不须要依据不同的通信机制做改动。

只是,仅仅是头转换还不足以模仿这些协议的操作。

在一些案例中,变色龙头转换模块必须实现它所模仿的协议的一部分协议逻辑。

比方。负责生成UDP/IP包的变色龙头转换模块必须实现ARP协议以解决IP地址向因特网MAC地址转换的问题。
  变色龙架构的第二部分是Rime通信架构。Rime提供了一些列基本通信元(范围是从最好的单跳广播和最好的单跳单播,到最好的网络洪和逐跳的可信赖的多跳单播)。我们已经基于典型的传感器网络协议的通信需求选择了Rime元。
  我们已经在Contiki操作系统中实现了变色龙架构,并在Tmote Sky motes上进行了评估。


  我们在本篇论文中有三个贡献。第一,通过从具体的包头信息中分离协议逻辑。对分层通信栈中的跨层处理问题提供了解决方式。我们展示了用于替代包头的包属性的使用,这同意应用程序在不违背分层原则的前提下訪问底层信息,且其执行时间性能满足传统的基于包头实现的标准。第二。我们展示了一个传感器网络的轻量级分层通信架构——Rime协议栈,这减小了实现网络协议的复杂性。我们展示了协议栈中的通信元到典型传感器网络的映射:数据传播、数据收集和网络路由协议(mesk routing protocols)。第三。我们展示了数据包的使用,这使在该协议栈和其他通信栈(链路层、MAC层协议和TCP/IP)之间自适应成为可能。
  本篇论文剩下的部分以例如以下的形式组织:第2章介绍通信架构的背景,第3章介绍变色龙架构的顶层设计,第4章介绍Rime协议栈,第5章介绍变色龙包转换模块。第6章介绍架构的实现,第7章介绍一系列已经实现的传感器网络协议,第8章介绍变色龙模块,第9章对架构做评估。第10章回想相关的工作。第11章做总结。

2 背景

  一个传感器网络的自适应通信架构必须既支持执行在通信架构之上的典型传感器网络协议,又支持架构所在的MAC层和链路层协议。

在本节,我们将回想一下顶层架构下关于通信栈的问题,关于传感器网络协议的需求。关于潜在的MAC层、链路层协议和标准的需求。

2.1 狭窄的腰(The Narrow Waist)

ps:全然搞不懂这一小节说的是啥,将来再补充

  设计一个网络架构最開始的挑战是在什么地方放架构的狭窄的腰,在什么地方放其他网络架构周围的固定的点。狭窄的腰须要同意不同的协议执行在其之上,同意不同的技术执行在其之下。


  在曾经的传感器网络通信架构中。将传感器网络协议栈的腰放在网络层之下。链路层之上。因为狭窄腰放在这个位置,基本的通信元是单跳广播。这同意在该架构下能有效的实现其他机制,比方拥塞控制。
  我们的架构已经证实。传感器网络架构的狭窄的腰应该是单跳的最努力的广播(single-hop best-effort broadcast)。

2.2 地址自由协议(Address-free Protocols)

  传感器网络的一个重要的特色是地址自由协议。地址自由协议是一种不使用节点地址的协议。地址自由协议最常见的一个样例是数据散发协议(data dissemination protocal)。在数据散发协议中,数据从一个源节点发送到它所覆盖的网络中的全部节点。

源节点或者网络中的其他全部节点都不须要知道接收节点的地址。

相反。节点能够利用广播发送数据到它们全部的单跳邻居节点。而邻居节点反过来也能够又一次广播数据到它的全部单跳邻居节点。

2.3 基于名字的协议

  虽然地址自由协议在传感器网络中扮演着基本的角色,但总存在基于名字的协议。

对于基于名字的协议(name-based protocols),每一个节点都被确切地命名(通常使用它们的节点标识地址)。

最出名的基于名字的协议是单播多跳路由,这样的协议要求网络中的数据包必须由一个指定的节点发送到还有一个指定的节点,且发送方知道接收方的地址,发送方和接收方之间的路由中间节点也知道接收方的地址。
  数据採集协议是地址自由协议和基于名字协议的混合体。在一个数据採集协议中,參与数据採集的节点发送数据到网络中的一个或多个sink节点(不知道该翻译成啥)。而数据则被以多跳形式被转发到不论什么sink节点。參与节点不须要知道终于接受数据的水槽节点的地址。只是一般须要知道单跳邻居的地址。一个节点为了向一个sink节点发送数据,必须发送数据到单跳邻居。

因此,数据採集协议在多跳感知时是地址自由协议,在单跳感知时是基于名字的协议。

2.4 邻居抽象

  很多传感器网络算法都是在研究物理或者逻辑上相互靠近的节点,因此也产生了开发这些算法的编程抽象。
  虽然邻居抽象通常隐藏了抽象层的通信。可是參与邻居抽象的节点通常与其他节点互换消息。一些消息被直接发送到指定邻居。还有一些消息被广播到全部邻居。

Others need scoped flooding to reach all n-hop neighbors [18]. Similarly, some messages are of higher importance than others and may therefore need to be sent using a reliable communication channel, while others can be sent using best-effort messages. A communication architecture for sensor networks must handle such communication patterns.

2.5 MAC协议

  传感器网络MAC协议的最基本的目标是减小传感器节点的功耗。无线通信一般是能耗最高的模块之中的一个,且其接收消息与发送消息的能耗一样高。因此,MAC协议必须尽可能频繁地关闭无线,但为了与其他节点通信,无线的开启事件又必须足够长。
  传感器网络存在很多MAC协议,包括时隙TDMA协议和基于竞争的CSMA协议。

在基于TDMA的协议中,每一个节点都会被分配一个时隙,且仅仅有在这个时隙内才干发送消息。基于CSMA的协议通过对信道进行空暇评估,以确保在不论什么时刻仅仅有一个发送端占用信道。通过这些机制。包一般不会马上传输,而是在实际传输之前被排队到队列中。
  传感器网络MAC协议总是差别对待单播和广播传输。单播传输仅仅须要将包送到接收器。因此其他全部节点在这个包传输期间能够关闭无线开关。
  很多链路层和MAC层协议都支持对单播包进行自己主动确认。通过对包标记一个特殊的比特位。表示它已经被可到传输。

假设发送方没收到确认帧,将会重传该报。


  不同的链路层和MAC层协议使用不同的编址模式。甚至一个协议支持多个编址模式。以链路层802.15.4为例,它的包既能够使用16位短地址模式。也能够使用64位扩展地址模式。在包头中。甚至有一个选项能够全然关闭地址。
  自适应传感器网络通信架构必须能够支持上面全部的机制:包排队。广播包、单播包分开处理,单播包自己主动确认和重传。不同的编址模式。  

2.6 相关标准

  ZigBee规范是一个短范围、低数据速率控制、感知应用的工业标准。ZigBee协议栈採用分层架构,通过IEEE 802.15.4的网络层和应用支持子层,提供端到端可靠数据传输。

ZigBee further specifies how applications can be constructed by requiring a pre-defined application profile along with associated commands, called clusters, for all nodes in the network. ZigBee supports mesh routing protocol based on AODV [28].
  一般觉得,传统的因特网协议族TCP/IP不适用于传感器网络。为了能够让TCP/IP应用于无线传感器网络。我们之前已建议使用简化的TCP/IP协议族,并採用一定的优化技术,比方头部压缩。

近期,标准组织6lowpan IETF工作组和工业界已经认同了该想法。

比如,为了满足传感器网络的严格能耗限制标准,6lowpan不全然遵循IPv6标准,且在传输之前将IPv6头部进行压缩。
  理想情况下,自适应传感器网络架构应该让执行在该架构之上的协议兼容这些标准协议。

3 变色龙架构

  变色龙架构是传感器网络的自适应架构,该结构的目的主要有三方面。第一,简化传感器网络通信协议栈的实现。

这已通过Rime协议栈实现。第二,同意已经实现的执行在架构之上的协议利用潜在的链路层和MAC层协议的特性。

这已通过包属性取代包头实现。第三,不用关心执行在架构之上的协议、应用程序,能够独立构成要传输的包头。这已通过独立的包传输模块实现。
  变色龙架构借鉴了之前关于传感器网络架构、分布式编程和通用网络架构的经验。
  

这里写图片描写叙述

  
图2. 变色龙架构:应用程序和网络协议执行在Rime协议栈之上,Rime的输出被头转换模块转换成不同的底层协议

  图2展示了变色龙的架构。

该架构包括三部分:Rime协议栈,为执行在协议栈之上的应用程序提供一系列通信原语。执行在Rime之上的一些列网络协议;变色龙头部传输模块,依据Rime协议栈输出端的数据创建包和包头。应用程序既能够直接执行在Rime协议栈之上,也能够执行在Rime协议栈之上的网络协议之上。
  变色龙头部传输模块既能够生成紧密的按位组合的包头,也能够生成遵相关定链路层、MAC层协议或者其他通信协议的包头。一些头部传输模块甚至实现了它们所模仿的协议的部分协议逻辑。
  应用程序和网络协议向下往Rime协议栈数据传输。Rime协议栈会为数据加入数据包属性,然后将数据和包属性一起传递给下层的变色龙头部传输模块。头部传输模块通过包属性建立好包头,将最后的包送究竟层驱动或者MAC层。MAC层会检查包属性,以决定怎样传输包。比如,MAC层在发送单播包时与发送广播包的发送方式不同,须要在发送时打开链路层确认机制。

3.1 协议逻辑和协议头的分离

  Rime中的协议逻辑不处理包头的底层细节。这些底层的包头细节交由头部转换模块管理。


  变色龙架构不使用包头,而使用包属性。

在包头中包括的信息,都能在包属性中找到。包属性信息是包头信息的一种抽象。

表3.1列举了在变色龙架构中提前定义的包属性。

应用程序和底层协议都能够自己定义额外的包属性。
  提前定义的包属性包括发送方地址、接收方地址、包ID、包类型、已经被转发的次数以及一些从底层来的反馈信息。比方对链路质量、无线信道拥塞信息的预估结果。
  每一个包属性都有一个范围。包属性的范围指定了属性能尾随包多远。假设属性的范围是0,表面属性仅仅能在本节点内尾随包。假设属性的范围是1,表明包头中的属性最多能被转发到一个节点。假设属性的范围是2。属性就能偶尾随包传递到最后的接收者。
  

这里写图片描写叙述

  
表3.1 提前定义的变色龙包属性

3.1.1 头部字段对齐

  通用的通信协议。比方TCP/IP协议栈。都要求其全部头部字段进行字节对齐处理。这样做的原因是很多微处理器不能訪问未对齐的数据。
  协议的设计者必须确保全部的头部字段被正确对齐,因此有时必须在包头插入填充字节。

然而。低功耗无线协议不能负担得起全部头部字段对齐的代价,因为他们必须将保证其头部尺寸尽量小。
  通过变色龙的包属性,因为头部转换模块中包括了全部底层头部对齐的细节。所以实现协议时不须要对头部字段进行底层对齐处理。

3.1.2 字节序

  在设计协议头时。通常都要保证具有不同字节序的主机能够相互通信。

在通信协议中,最常见的字节序是网络字节序(与大多数微处理器的字节序不同)。因此。在实现协议时,先必须明白地将头部全部的多字节字段转换为网络字节序。然后才写入包头。当接收到包时。进行相反的转换。


  通过使用包属性,实现协议时不须要考虑被传输的包是什么字节序。能直接以主机字节序訪问包属性。变色龙的头部转换模块将负责字节序的转换。

3.1.3 头部字段跨层位组合

  协议头的非常多字段仅仅须要一个或几个比特位,比方flag字段、指定包类型的字段。

为了减小包头的总尺寸,通常将很多单字节字段放到一个字节里。

在传感器网络中。包的总尺寸非常小(比如,Tomte Sky的无线收发器芯片将包的限制大小为128字节)。为了在一个包中传输尽量多的数据,减小头部尺寸就成了一项非常重要的工作。


  手工填充单比特的头部字段有非常多缺点。

第一。实现协议时必须知道单比特字段的确切数量,且这些头部字段必须通过移位操作和布尔表达式訪问。第二,实现协议时必须知道单比特字段的内存位置。

第三,处于不同层的协议不能将它们的单字节字段合并到一个字节。
  在传统的分层通信架构中。不可能将处于不同层的不满一个字节的字段打包成到一个字节内。相反,这些字段都须要占用整个字节。

图3是一个样例。
  

图3.

  变色龙架构的包属性简化了头部字段位组合的实现,能够让本层内以及不同层之间的头部字段进行位组合。

因为头部传输模块能訪问每一个包的全部包属性。因此它能有效地将比特属性打包为单字节,如图4所看到的。
  

这里写图片描写叙述

3.1.4 头部压缩

  头部压缩是一个减小传输头的机制。头部压缩不仅能添加网络吞吐量,还能够减小无线网络中的功耗、包丢失率。在无线传感器网络中,头部压缩已被用于减小6lowpan的IPv6头部尺寸。


  在传统的头部压缩中,头部压缩模块既要解析原始头格式,又要进行位组合。通过包属性,头部压缩被包括到架构之中。

3.2 逻辑通道channel

  在变色龙架构中。使用不同的逻辑通道进行通信。

每一个通道有自己的协议和包属性。
  ##3.3 缓冲管理
  ##3.4 轻量级分层
  ##3.5 头部传输
  ##3.6 头部传输还不够
  ##3.7 底层反馈
  #4 Rime协议栈
  ##4.1 Rime通信原语
  
  
  

posted @ 2018-04-22 19:24  llguanli  阅读(212)  评论(0编辑  收藏  举报