> 技术文档 > 6LoWPAN:无线嵌入式物联网提升【1.8】_6lowpan被取代

6LoWPAN:无线嵌入式物联网提升【1.8】_6lowpan被取代


3. 2. 3 注册冲突

边缘路由器的白板被用作所有注册到边缘路由器中的节点的共享数据库, 这样可以保证扩展 LoWPAN 与整体 LoWPAN 可以结合。 由于 LoWPAN 是个分布式系统, 每个节点都试图在该数据库中创建条目, 那么多个节点间可能会产生冲突。 在 6LoWPAN - ND 中有两种冲突检测等级:

(1) 地址冲突检测和解析 如果有多个节点同时注册相同的 IPv6 地址, 只有一个能够注册成功。 每个注册都由 OII 和 IPv6 地址对确定。 如果一个节点要注册一个 IPv6地址, 而这个地址同时已经与一个不同的 OII 注册过或是在另一台边缘路由器注册过,那么该注册请求将被拒绝, 节点需要重新尝试一个新的 IP 地址。 这种机制代替了 LoWPAN 中的 DAD, 并且主要是可以保证 16 位短地址和产生出的 IPv6 地址的唯一性。

(2) OII 冲突检测 地址冲突检测和解析机制是基于 OII 是全球唯一的假设。 原则上, 我们认为 EUI - 64 的分配方式是可以保证这一原则的。 但是如果分配或者存储EUI - 64 时发生错误就可能导致两个节点共享一个 OII, 造成地址冲突检测失败, 并导致 LoWPAN 有出现严重故障的可能性。 这种错误在以太网 MAC - 48 标识码中发生过,有时候是因为伪造造成的。 所以有必要加入一个错误检测机制。

OII 的唯一性假设使得地址冲突检测和解析相对变得简单一些。 当一个 NR 报文进来时, 对每一个地址选项中给出的 IPv6 地址, 在白板中搜索它已有的绑定。

1) 如果找不到这样的绑定, 就要创建一个新的绑定 (可能要在检查完其他边缘路由器之后———参见第 3. 2. 7 节), 并且返回给节点一个节点确认报文表示成功。

2) 如果存在和相同 OII 的绑定, 绑定通过检查完 TID 来检测一个可能的 OII 冲突后 (请看下面), 获得一个新的生命期, 一个节点确认消息将返回给节点表示成功。

3) 如果存在一个和不同 OII 的绑定, 就会发生地址冲突, 将会返回一个拒绝节点确认消息。

表 3-1 总结了一个绑定中由边缘路由器保存的信息。

更为困难的且应该避免的情况是网络中的两个节点都认定它们有同样的 EUI - 64,因而也有着同样的 OII。 一般看来, 其他节点很难区分这两个节点, 除非为它们加上一些其他的不同的特性, 比如: 随机号码 (随机数会产生冲突的概率是相当低的)。 这就是为什么标准的 ND 把使每个节点找到与自身冲突的其他节点作为它的职责———因为只有每个节点自身才能够可靠地把自己和其他节点区分开来。 要想把冲突检测交给白板从而避免多播, 需要白板能检测并拒绝拥有相同 OII 的不同节点。 6LoWPAN - ND 通过启动时的所有者随机数 (owner nonce) 来支持这个功能, 也就是说, 每次当一个节点启动时都会产生一个随机数字。 所有者随机数建立一个注册并维护它; 使用不同的所有者随机数的注册冲突要么指出了重复的 OII, 要么指出了重