6LowPan 邻居发现优化策略

时间:2022-08-15 03:37:10

摘 要:IETF 6lowpan 工作小组定义了基于低功耗个域网的IPv6 协议。邻居发现是一种专用于IPv6的新协议,由于6LowPan 网络应用的特点,邻居发现协议必须优化。为了更好地降低功耗,提出了限制多播路由请求和路由公告,避免重复地址检测、多播邻居请求和邻居不可达检测信息等一系列6LowPan邻居发现优化策略

关键词:6LowPan;邻居发现;IPv6;广播

中图分类号:TN91172文献标识码:B

文章编号:1004-373X(2008)07-065-03オ

6LowPan Neighbor Discovery Optimization

JIN Fang1,LIU Dachen2,WU Xuezhi1

(1.Electronics Engineering College,Naval University of Engineering,Wuhan,430033,China;2.Equipment Department of 91913 Unit,Dalian,116041,China)オ

Abstract:IETF 6LowPan working group defines IPv6 over low-power personal area network (IEEE 802.15.4).Neighbor discovery is a new protocol for IPv6.Due to the nature of 6LowPan network,the protocol must be optimized,and broadcast messages should be minimized.This document suggests some optimizations for IPv6 neighbor discovery related multicast messages in order to reduce signaling in the low-cost low-power network.

Keywords:6LowPan;neighbor discovery;IPv6;broadcast

6LowPan(IPv6 over IEEE802.15.4或IPv6 over LR[CD#*2]PAN的简称)是IETF于2004年11月新成立的一个工作组,致力于完成IPv6数据包在IEEE802.15.4上传输的实现,规定6LowPan技术在底层采取IEEE802.15.4协议,MAC层与网络层之间采用6LowPan 适配层,MAC层以上采取IPv6协议栈。

IEEE 802.15.4 链路层支持广播但不支持多播。广播信息可以在某些方案中表示所有节点的多播信息,由于6LowPan 网络和传感器网络的特点,为节约能量,周期性的广播信息应被最小化。

为此,在保持邻居发现协议功能的条件下,可通过限制多播路由请求和路由公告,减小或避免多播中重复地址检测、多播邻居请求和邻居不可达检测等策略来实现邻居发现协议优化。

1 邻居发现概述

IPv6邻居发现协议(消息格式如图1所示)被用来解决关于相同物理链路上的节点之间的交互问题,如:路由器发现、地址解析、重复地址检测、邻居不可达检测、重发前缀、下一跳确定以及重定向等。邻居发现过程使用5个不同的ICMPv6数据报类型来确定和维护IPv6路由器之间的邻居关系,他们是路由请求、路由通告、邻居请求、邻居发现和重定向。邻居发现的过程如下:

(1) 主机选择一个本地链路IPv6地址,并且通过广播一个重复地址检测机制的邻居发现来确定他是否是链路上惟一的。在这之前,主机要连接界面上的节点请求多播地址。节点请求接入组需要发送MLD链路信息以处理MLD侦探开关的链路。

(2) 当主机初始化网络后,向所有IPv6路由多播地址多播一个或几个邻居请求信息,直到他收到一个路由公告。

(3) 路由接收到路由请求后发送一个路由公告。按照邻居发现规范,路由可以单播路由公告或者向所有IPv6多播地址多播路由公告。

(4) 一旦主机收到一个带有一个或更多“A”标记系列前缀选项的路由公告,主机将执行自动地址配置。对每个构成部分的IPv6地址,他将通过向多播地址请求节点多播一个邻居请求信息。

当一个加于链路的主机想与另一个主机通信时,如果主机地址是链路前缀的一部分,则主机将会多播一个邻居请求以寻找对等的链路层地址,这同样适用于路由接收到需要转发到主机的链路前缀的数据包,对邻居请求的反应是单播邻居公告;如果目的地不是链路前缀的一部分,主机将向一个默认路由发送数据包,主机将从接收到的路由公告信息中得到链路层地址。

2 关于拓扑和地址映射的假设

为了优化邻居发现协议,在此结合链路层和网络层的功能作一些假设。

(1) 一个PAN-ID定义一个LowPan网络。

(2) 就像一个PAN-ID可以确定一个子网一样,每个LowPan网络都与一个IPv6子网相对应。

(3) 每个LowPan网都有一个PAN协调器或PAN群首。

(4) 在LowPan网络范围内IPv6路由器是一个PAN协调器。

(5) 当一个设备连接至LowPan网链路层时,他将为协调器寻找单播链路层地址。

(6) 当网络重建时,先前的消息能够表明协调器在与LowPan连接时的位置。因此,单播地址将会指引到PAN协调器的所有路径。

(7) IPv6路由通过前缀公告赋地址值。

(8) 其他的全功能节点不充当IPv6路由器,但他们一般会在链路层传输数据包。

(9) 星型拓扑中假设每个节点离PAN协调器只有一跳。

(10) 本文定义一个网状拓扑,在网状拓扑中每个节点都具有转发能力。这样,他可以看作是有一个PAN协调器和若干其他协调器的全功能节点设备(Full Function Devices,FFDs)。

(11) 全功能节点离PAN协调器至多一跳距离。

(12) 假设在LowPan网络中,链路层地址为64位EUI-64地址,因为这些地址不会由于加入一个节点而改变。

3 最小化路由请求和路由公告

3.1 避免最初的路由请求和路由公告的链路层广播

因为我们假设PAN协调器也是IPv6路由器,所以可以完全避免LowPan节点在初始化过程中多播路由请求和路由公告。

当一个LowPan节点初始化并需要发送一个路由请求地址到所有IPv6多播地址时,他只需发送一个请求指令到节点协调器,这样第二层目的地址将会是协调器地址。在星型拓扑中,协调器同时是PAN协调器以及IPv6路由器,这样路由请求将会被发送至路由。在网状拓扑中,当协调器接收到一个数据包后,他将会查找IPv6报头,如果他是指定到所有IPv6多播地址的,他将转发数据包到协调器,这样将通过PAN协调器传送路由请求。

在路由请求中,LowPan节点必须包括一个发送者链路层地址选项,因为这样会允许路由回应一个单播路由公告。

因为每个主机在连接至PAN网络时发送一个路由请求,而且对PAN协调器只有惟一的路由,路由将会侦测所有IPv6链路本地地址的到来,这将允许路由器拥有一个有链路层地址的链路上所有节点的完全表,这将会对其他优化很有用。

3.2 避免周期性路由公告的链路层广播

在网状拓扑中,IPv6路由器中周期性的路由公告将会充满整个网络。首先,只要主机能够使用其他机制来侦测路由消失就可以增加默认时间标记。其次,因为路由器通过接收到的路由请求可以得知PAN中所有链路层地址,所以他只需复制单播地址而不需要广播链路层地址。而向所有节点发送IPv6多播地址数据包将导致给每个单播地址发送副本。这样,路由器需要更多的能量,但对PAN中的节点是有利的。

4 最小化邻居请求

在此考虑两个方案以减小或消除多播邻居请求信息。一个方案是找到实际的邻居和他们的链路层地址,而实际的邻居来自LowPan网络内部或外部均可。另一方案是寻找不存在的邻居,例如一个不存在或不可达的IPv6地址可能有相同的子网前缀配置到6LowPan网络,对一个不存在的IPv6地址的路由请求会随机发生或者从LowPan网外攻击DOS。

4.1 避免链路层对已存在节点广播邻居请求信息

为IPv6地址发送邻居请求信息以解决链路层地址的方法同样是浪费带宽和能量的。这样,以下方案试图向很可能是全功能节点的PAN协调器广播链路层信息。即使协调器离询问节点有两跳距离,每个邻居请求也将会牵涉路径上很少的节点。所以说,单播请求可以解决地址问题。

这个提案不需变换任何协议,而只依赖于现有的邻居发现。前缀公告路由不会置“on-link”标志。在前缀中,即使这些前缀已在链路上,也会导致PAN的主机一开始向链路上所有确定节点的路由器发送数据包,同时,双向数据包将会返回PAN并重新向发送者发送信息,重发信息包括目标的链路层地址,因为在他的邻居缓存中存有这些信息。

当路由器不知道每个LowPan节点在PAN中的链路层地址时,路由器需要在重新发送前多播邻居请求,而以上方案可以避免这一点。

4.2 避免链路层向不存在的节点广播邻居请求信息

如果对没有公告的链路前缀配置以上方案,数据包遇到不明或不存在的节点,将会终止。无论数据包是由LowPan节点发起还是由互联网节点发起还是传向LowPan路由器,这一点都成立。

在标准的邻居发现中,这将导致路由器多播一个邻居请求信息,如果节点不存在或不可达路由器,重传数据包将会再次多播邻居请求信息。

如果路由器能够拥有一张现在LowPan链路层地址的所有IPv6地址的权威表,将会大大避免资源损耗。以上已经阐明这张表格可以依赖接收的路由请求来维持本地链路IPv6地址。如果我们也能让路由器维持全球IPv6地址,那么应避免任何未知目的地的路由请求信息。

如果一个节点向一个LowPan中不存在的节点目的地址发送数据包,PAN协调器在表中不能找到该节点,他将迅速向发起者发送未知目的节点错误信息,这样将会避免任何邻居请求信息的多播。

由以上讨论可知,如果有若干IPv6路由器连接至PAN,他们会很快将IPv6地址与PAN链路层地址匹配。

5 避免重复地址检测(DAD)

当一个节点获取一个新的地址时,他首先必须确信链路上没有其他的节点使用该IP地址,这就触发了重复地址检测(Duplicate Address Detection,DAD)。

如果在链路节点上没有私有或临时地址的存在,而且可以确保IPv6地址的惟一性,则可避免重复地址检测。

在星型网络拓扑中,可以广播DAD信息至默认路由器,但在多跳的LowPan网络中,这将导致泛洪。当一个节点导入或配置到他的LowPan网络接口时,他将像发送路由请求一样发送重复地址检测信息;而在多跳网络中,信息将被发送至网络协调器。IPv6路由器可以查看他的邻居表,以检测地址是否重复,同时做出相应的响应。然而,如果我们假设每个IPv6节点配置一个EUI-64位的MAC地址,而且节点不再使用临时地址,则所有IPv6地址可以由EUI-64直接惟一生成。这样,在LowPan网络中就可以避免重复地址检测了。

6 避免邻居不可达检测(NUD)

链路上的节点通过邻居不可达检测(Neighbor Unreachable Detection,NUD)过程来检测链路上的目标节点。因为IPv6到MAC层的地址映射不会改变,所以如果在LowPan中使用EUI-64 MAC层地址,而且IPv6地址尚未重新配置到其他节点,就没有必要向主机执行NUD过程。此外,还可采用其他机制,当PAN协调器的链路层检测失败、恢复,或由其他PAN协调器替换都不需要向路由器执行邻居不可达检测。

7 结 语

为了更好地降低功耗,本文提出了限制多播路由请求和路由公告,减小或避免多播中重复地址检测、邻居请求和邻居不可达检测等一系列6LowPan邻居发现优化策略,但这些策略是否会为6LowPan网络引入新的安全威胁还有待进一步探讨。本文所探讨的6LowPan邻居发现优化策略可应用于其他基于IPv6的新技术中。

参 考 文 献

[1]Montenegro G,Kushalnagar N.Transmission of IPv6 Packets over IEEE 802.15.4 Networks[EB/OL].2007.

[2]Kushalnagar N,Montenegro G.6LowPan:Overview,Assumptions,Problem Statement and Goals[EB/OL],2007.

[3]Chakrabarti S,Nordmark E.LowPan Neighbor Discovery Extensions[EB/OL].2007.

[4]Stojmenovic I,Wu J.Broadcasting and Activity-Scheduling in Ad Hoc Networks[J].IEEE Transactions on Computers,2004,27(6):25-29.

[5]IEEE Computer Society,IEEE Std.802.15.4[S],2003.

[6]袁琦.IPv6的邻居发现技术[J].电信技术,2005(3):65-68.

[7]时廷堂.IPv6邻居发现过程的安全性研究[EB/OL].,中国科技论文在线.

作者简介

金 芳 女,1983年出生,河北唐山人,通信与信息系统专业,硕士研究生。主要研究方向为信息网络。

刘大臣 男,1976年出生,吉林榆树人,助理工程师。主要从事通信装备维修和保障方面的研究和工程实践。

吴学智 男,1962年出生,湖北人,硕士生导师,教授。主要研究方向为信息网络。

上一篇:基于MicroBlaze的嵌入式Web服务器设计与实现 下一篇:皮肤阻抗检测系统隔离刺激器的设计与实现