Router 选择

2023-05-16

Connected Dominating Set

在这里插入图片描述

Example of a Connected Dominating Set

Router 必须形成一个 CDS(Connected Dominating Set,连接支配集),这意味着:

  1. 在任何两个 Router 之间都有一个 Router-only 的路径。
  2. Thread 网络中的任何一个 Router 都可以通过完全位于 Router 集中而到达其他任何 Router。
  3. Thread 网络中的每个 End Device 都直接连接到 Router。

Thread 使用分布式算法维护 CDS,从而确保最低程度的冗余。每个设备最初都作为 End Device(子)连接到网络。随着 Thread 网络状态的更改,算法会增添或移除 Router 以维护 CDS。

Thread 在下列情况下将会增添 Router:

  • 如果网络低于 Router 阈值(16) —— 为了增加覆盖范围
  • 增加路径多样性
  • 保持最低程度的冗余
  • 扩展连接并支持更多子节点

Thread 在下列情况下将会移除 Router:

  • 将路由状态减少到最多 32 个 Router 以下
  • 必要时允许在网络的其他部分使用新 Router

升级成 Router

子设备连接到 Thread 网络后,可以选择成为 Router。在开始 MLE Link Request 过程之前,子设备会向 Leader 发送 Address Solicit 消息,以请求一个 Router ID。如果 Leader 同意该请求,则它将响应一个 Router ID 给子设备,并且子设备会将自身升级为 Router。

然后,MLE Link Request 过程用于与相邻的 Router 建立双向 Router-Router 链路。

  1. 新 Router 将发送一个多播 Link Request 到相邻的 Router。
  2. Router 使用 Link Accept and Request 消息进行响应。
  3. 新 Router 使用单播的 Link Accept 响应每个 Router,以建立 Router-Router 链路。

1. Link Request

Link Request 是从 Router 到 Thread 网络中所有其他 Router 的请求。首次成为 Router 时,设备会发送一个多播 Link Request 到 ff02::2。稍后,在通过 MLE Advertisement 发现其他 Router 后,设备将发送单播的 Link Request。
在这里插入图片描述

Link Request Message Contents
VersionThread 协议版本
Challenge测试 Link Response 的及时性,以防止重放攻击
Source Address发送者的 RLOC16
Leader DataRouter 的 Leader 的相关信息(RLOC, Partition ID, Partition weight)

2. Link Accept and Request

Link Accept and Request 是 Link Accept 和 Link Request 消息的组合。Thread 在 MLE Link Request 过程中使用此优化将消息的数量从四减少到三。
在这里插入图片描述

3. Link Accept

Link Accept 是对来自相邻 Router 的 Link Request 的单播响应,该响应提供有关自身的信息并接受到相邻 Router 的链路。
在这里插入图片描述

Link Accept Message Contents
VersionThread 协议版本
Response测试 Link Response 的及时性,以防止重放攻击
Link Frame Counter发送者上的 802.15.4 帧计数器
MLE Frame Counter发送者上的 MLE 帧计数器
Source Address发送者的 RLOC16
Leader DataRouter 的 Leader 的相关信息(RLOC, Partition ID, Partition weight)

降级成 REED

当 Router 降级成 REED 时,其 Router-Router 链路断开,并且设备开始 MLE Attach 过程以建立父子链路。

有关 MLE Attach 过程的更多信息,请参阅 加入现有网络。

单向接收链路

在某些情况下,建立单向接收链路是有必要的。

在 Router 重置后,相邻 Router 可能仍具有与重置的 Router 的有效接收链路。在这种情况下,重置的 Router 发送 Link Request 消息以重新建立 Router-Router 链路。

置的 Router 的有效接收链路。在这种情况下,重置的 Router 发送 Link Request 消息以重新建立 Router-Router 链路。

End Device 也可能希望与相邻的 Router(非父节点)建立接收链路,以提高多播可靠性。当我们进入多播路由时,我们将学习更多与此相关的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Router 选择 的相关文章

  • react-router-dom错误

    index tsx 24 Uncaught Error useLocation may be used only in the context of a lt Router gt component at invariant index t
  • Angular执行测试报错: 'router-outlet' is not a known element

    本机环境 xff1a ng version Angular CLI 7 1 1 Node 10 11 0 OS darwin x64 Angular 7 1 1 animations cli common compiler compiler
  • angularjs路由ui-router示例

    angularjs默认提供的路由是angular route min js提供的 xff0c 这里介绍一个开源的 xff0c 基于angularjs实现的ui router路由 思路是类似的 页面不再使用ng view来指定一个模板子页面
  • 编译mavlink-router

    1 首先安装meson ninjia gcc g 43 43 等工具 xff1a sudo apt install git meson ninjia build pkg config gcc g 43 43 system 可能会出现一下错误
  • react router路由传参三种方式

    react router路由传参三种方式 xff1a 通过通配符传参 query传参和state传参 1 通配符传参 Route定义方式 xff1a lt Route path 61 39 path name 39 component 61
  • vue router进行路由跳转并携带参数(params/query)

    在使用 router push 进行路由跳转到另一个组件时 可以通过 params 或 query 来传递参数 1 使用 params 传参 在路由跳转时传递参数 router push name targetComponent param
  • angular 路由

    参考 angular 路由 文档 路由案例 路由参数 paramMap和Snapshot 当组件需要复用的时候使用paramMap获取路由参数 如一个组件不刷新 只更改了路由参数 那么就可以实时获取路由参数 当确定组件不复用的时候直接使用S
  • Flutter的路由router-页面跳转

    文章目录 概念介绍 基本路由 Basic Routing 跳转到某个页面 弹出页面 命名路由 Named Routing 第三方路由管理库 Third Party Routing Libraries Android原生的路由 Intent
  • 如何在 Java 中确定路由器/网关的 IP?

    如何在 Java 中确定路由器 网关的 IP 我可以很容易地获得我的IP 我可以使用网站上的服务获取我的互联网 IP 但我如何确定我的网关的 IP 如果您了解相关方法 那么在 NET 中这有点容易 但在 Java 中如何做到这一点呢 在 W
  • play Framework2:查明应用程序是否在 http 或 https 上运行

    我试图查明 play 2 使用 scala 应用程序是否在 http 或 https 上运行 我尝试使用routes Application index absoluteURL request 像这样 def chatUri usernam
  • 模拟网络连接不良

    我正在开发一个可以通过 LAN 访问互联网的嵌入式设备 我现在正处于测试阶段 我想测试当互联网连接较差时设备的性能 目前 该设备通过集线器连接到路由器 我用集线器通过 Wireshark 监控数据包 降低设备的互联网速度以模拟可能发生的场景
  • 以编程方式更改无线路由器设置 - Netgear 理想的选择

    是否可以使用 C 以编程方式更改 Netgear 无线路由器上的设置 我有经常更改的设置 我想创建自己的界面来进行这些更改 目前 我导航到管理网页 10 0 0 1 它提示我输入用户名和密码 身份验证后 我可以使用 Web 界面更改路由器的
  • 无法将路由器服务传递给 symfony 2.6 中的 twig 扩展

    我有一个树枝扩展 我试图在其中注入路由器服务 所以 服务 yml app twig extension class SeoReportBundle Twig SeoReportExtension arguments router tags
  • SSH -L 连接成功,但本地主机端口转发不起作用“通道 3:打开失败:连接失败:连接被拒绝”

    我的实验室在服务器上运行 RStudio 几周前 我在表弟家里成功通过 ssh 连接到服务器 并通过本地 Firefox 浏览器启动了服务器端 RStudio 现在 当我尝试从家里访问服务器 RStudio 通过我自己的路由器 时 它不起作
  • React Router 在刷新页面之前不会加载页面

    大家好 我是 Tanbhir Hossain 我正在尝试将 HTML 模板转换为 React js 问题出在 React Router 中 当我单击任何页面时 仅显示预加载 直到手动刷新页面 刷新页面时 它显示得很好 现在我想摆脱这个问题
  • ZMQ 模式经销商/路由器心跳

    我在客户端有一个经销商套接字 它连接到服务器端的路由器套接字 我经常看到心跳机制 服务器定期向客户端发送消息 以便客户端知道自己是否正确连接到服务器 以便客户端在一段时间内没有收到消息时可以重新连接 例如这里的偏执海盗模式 http zgu
  • useParams 钩子在 React 功能组件中返回未定义

    该应用程序显示所有照片
  • 内核模块未加载(但 insmod 返回 0)

    我必须向现有设备 mips arch 添加一些功能 我已经尝试了几个 SDK 目前我取得了一些进展 但是 insmod 返回 0 成功 并且 lsmod 显示它们 但是 printk 和 create proc entry 都不起作用 但我
  • 路由是否会影响具有绑定源地址的套接字?

    假设我有两个网络接口 eth0有地址10 0 0 1 eth1有地址192 168 0 1 Using route or ip route add我已将其设置为路由 所有地址至eth0 1 2 3 4只为了eth1 所以数据包到1 2 3
  • Nodejs 在路由器页面中包含 socket.io

    我有一个 Express Node 应用程序 并且我试图通过不在 app js 中包含所有 socket io 内容来保持代码整洁 我不知道解决这个问题的最佳方法 这是我最初的想法 感觉不是最干净的 app js var express r

随机推荐