Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Rules] On the optimization of self-discovery ad hoc networks #217

Closed
StardustSeemsInk opened this issue Feb 5, 2023 · 8 comments · Fixed by #278
Closed

[Rules] On the optimization of self-discovery ad hoc networks #217

StardustSeemsInk opened this issue Feb 5, 2023 · 8 comments · Fixed by #278
Assignees
Labels
enhancement New feature or request

Comments

@StardustSeemsInk
Copy link
Member

🪦 Is your feature request related to a problem? Please describe.

原先每秒进行一次udp发包的自发现方式有一点浪费,且可能为日后kitx的大规模任务场景留下隐患。

🪧 Describe the solution you'd like

将发包逻辑改为:

  • 启动时(以及用户手动发起发包指令时)进行一定时长的udp广播
  • 一定时间无回应,将自己作为主控
  • 新设备出现并广播自己时,予以udp回应,并完成入网程序

🧾 Describe alternatives you've considered

  • 由组网中的主控设备持续发包,负责“介绍人”工作;从控仅通过tcp与主控链接

📎 Additional context

  • 为用户提供手动重试按钮,规避可能发生的组网失败的问题。
  • 由用户指定入网设备
@StardustSeemsInk StardustSeemsInk added enhancement New feature or request help wanted Extra attention is needed labels Feb 5, 2023
@Dynesshely Dynesshely self-assigned this Feb 5, 2023
@Dynesshely
Copy link
Member

延伸思路:
我们也许可以提供多种模式来完成自发现

  1. 持续广播模式, 即现有广播模式
  2. 介绍人模式, 即 @StardustSeemsInk[Rules] On the optimization of self-discovery ad hoc networks #217 提到的方式
  3. 村口广播模式, 即主控持续广播本机消息, 加入组网的设备不广播, 新设备自行加入主控组网

@Cranyozen
Copy link
Contributor

Cranyozen commented Feb 5, 2023

于 2023.5.27 更新 (From QQ Group)
可用的详细思路:
介绍人找朋友模式 (主控为介绍人)

  1. 请求阶段
    • 连续发送若干个广播包请求主机, 观察是否有主控回应
  2. 连接阶段
    • 主控回应了从控的请求 (发送 ip 地址等信息) , 从控连接
  3. 建立阶段
    • 没有主控回应, 自己建立主控
    • 等待阶段
      • 观察广播包是否有新的自组网请求

此模式具体的好处为:

  1. 仅在从控自组网时才会有网络请求的产生
  2. ... 待补充

@ChenPi11
Copy link
Member

ChenPi11 commented Feb 5, 2023

一般的内网,设备很少变化,所以可以整个上一次的连接历史,提高连接速度(这点特别适合虚拟机-实体机组网)
启动时阅读连接历史,尝试连接这些设备。连接错误或连接过程不要报出来
这个功能可以设置开启或关闭供用户选择

@Dynesshely
Copy link
Member

可用的详细思路: 介绍人模式 (主控为介绍人)

  1. 请求阶段

    • 连续发送若干个广播包请求主机, 观察是否有主控回应
  2. 连接阶段

    • 主控回应了从控的请求 (发送 ip 地址等信息) , 从控连接
  3. 建立阶段

    • 没有主控回应, 自己建立主控

    • 等待阶段

      • 观察广播包是否有新的自组网请求

此模式具体的好处为:

  1. 仅在从控自组网时才会有网络请求的产生
  2. ... 待补充

一般的内网,设备很少变化,所以可以整个上一次的连接历史,提高连接速度(这点特别适合虚拟机-实体机组网) 启动时阅读连接历史,尝试连接这些设备。连接错误或连接过程不要报出来 这个功能可以设置开启或关闭供用户选择

好主意

@Dynesshely
Copy link
Member

Tracked by #223 .

@Dynesshely Dynesshely added the tracking This issue is tracking by another issue label Mar 5, 2023
@Dynesshely
Copy link
Member

Tracked by #224 .

@Dynesshely Dynesshely removed the help wanted Extra attention is needed label Mar 8, 2023
@Dynesshely Dynesshely changed the title 关于自发现自组网的优化思路 On the optimization of self-discovery ad hoc networks May 29, 2023
@Dynesshely Dynesshely changed the title On the optimization of self-discovery ad hoc networks [Rules] On the optimization of self-discovery ad hoc networks May 31, 2023
@Dynesshely
Copy link
Member

延伸思路: 我们也许可以提供多种模式来完成自发现

  1. 持续广播模式, 即现有广播模式
  2. 介绍人模式, 即 @StardustSeemsInk[Rules] On the optimization of self-discovery ad hoc networks #217 提到的方式
  3. 村口广播模式, 即主控持续广播本机消息, 加入组网的设备不广播, 新设备自行加入主控组网

我更加倾向于重写成 3 的模式
即: 启动时监听 udp 广播 5s, 若有收到主控的广播消息直接加入主控网络 (比较建立时间, 加入建立时间最早的主控网络), 若超出此段时间仍未收到主控广播消息, 则认为本机为局域网络第一个设备, 建立主控网络并开始广播主控广播消息, 在此期间, 持续监听是否有其他设备的主控广播消息, 若存在则比较主控网络建立时间, 后建立主控网络的设备自行关闭主控网络.

@Dynesshely
Copy link
Member

另外, #202 可以合并到此 issue, 有关同步设备时间的问题

@Dynesshely Dynesshely removed the tracking This issue is tracking by another issue label Feb 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

Successfully merging a pull request may close this issue.

4 participants