Windows 自组织网状网络

标签 windows wifi adhoc mesh-network

我已经用谷歌搜索了这个主题,但我仍然需要帮助。 stackoverflow 上有类似的问题,但没有一个完全匹配(也没有好的答案)。

我想编写一个程序(如果它尚不存在并且可能),允许 Windows 7+ 用户使用单个 WiFi 适配器配置临时网状网络,然后以某种方式允许类似于正常的连接每个节点的互联网连接。好处是,如果手机等设备不需要额外的软件,但可以连接到一个或多个网格节点,就好像它是标准接入点一样。

我不知道该怎么做,但我认为:

  1. 可以使用 Windows Wireless-ADHOC API 将单个无线卡配置为以编程方式在临时模式下运行
  2. Ad hoc 模式通常不包括基础设施模式,除非适配器的驱动程序支持它,因此从节点到真实互联网的连接需要第二个适配器。
  3. 我们的程序将/需要对 WiFi 适配器进行独占控制。
  4. 网状网络方面是通过 Babel 等路由协议(protocol)独立于自组织连接来实现的。
  5. 互联网必须通过我们的程序创建的一些新的虚拟适配器来提供。 (这个新适配器扮演什么角色,使其成为任何网络感知程序都应该选择引用以访问互联网的适配器?)
  6. 如果节点上有真正的互联网连接,该节点将通过 Babel 实现将其共享给网格上的其他节点
  7. 无论任何节点是否可以使用互联网,不确定网格本身可以托管哪些服务。如何提供资源/域名解析?
  8. 如果当前节点有互联网,任何对互联网资源的请求都将直接通过它,并且网格内的任何资源都将通过 Babel。如果该节点失去直接互联网,所有流量都将通过 Babel。假设我们的程序编写正确,是否需要对其进行编程,或者 Windows 网络堆栈是否知道如何处理此问题?
  9. 由于这是 Windows 7+,因此 IPv6 是对网格中的节点进行寻址的合理选择,但是,并非所有互联网连接都支持 IPv6。有些可能。我们如何从网状网段中定义互联网网段?
  10. 网格可以任意大,Babel 和其他组件能够以良好的带宽、低内存使用量和最佳路径收敛来处理它。

很明显,我没有实际完成这个项目的背景,但我想了解解决方案的概要。您能否评论一下大纲中哪些是正确的,哪些是缺失/错误的?由于新技术的出现,哪些概念是不必要的或过时的?

节点的操作有多简单?每个节点免受其他节点攻击的安全性如何?毒害网络流量和路由?

我读过一些在 Linux 上尝试类似目标的项目,但在当前的 Windows 上却没有。一些关于车辆和紧急响应人员的讨论,但这是不同的。桑迪飓风激起了我对在城市连接广泛中断的情况下流行的住宅操作系统的连接的兴趣。当许多人的电力和通信系统无法使用时,网格可以提供帮助。

几乎所有网格参与者都不会提前配置其节点。相反,他们可能会在自己的无线网络出现故障时寻找其他人的无线网络,并找到 SSID“免费紧急网状 WiFi”并进行连接。与热点一样,他们将看到一个代理登录页面,该页面解释了该项目,并在他们想参与时提供安装链接。如果没有,他们仍然可以作为客户端连接到网格“接入点”。

最佳答案

问题在于,您基本上是要求将单个 WiFi radio 同时置于三种不同的模式。为了使节点能够与其他节点通信,它需要处于 Ad-Hoc 模式。为了与接入点 (AP) 进行通信以进行 Internet 访问,它需要处于基础设施模式。为了让手机能够连接,大多数手机都不支持 Ad-Hoc 网络,因此您还需要将节点设置为主模式(使它们显示为正常接入点)。因此,您需要在一张 WiFi 卡上同时兼顾三种不同的操作模式。理论上,如果您拥有的卡和驱动程序支持原始帧注入(inject),那么您也许能够在应用程序中模拟 WiFi 和网络堆栈,并在一张卡上兼顾所有三种模式,但我有一种感觉,这会导致非常高的性能。如果您在笔记本电脑上运行此程序,冲突率、帧丢失、高延迟以及所有额外的 CPU 周期都会耗尽您的电池。

这可能吗?当然。这是一个实用的想法吗?并不真地。您最好使用华硕 USB-N10 等小型/廉价 WiFi 适配器来扩展笔记本电脑。额外的适配器可以处理额外的模式,在固件和内核空间中进行处理,速度更快、效率更高,并允许您在单独的 channel 上运行网络的每一层,以获得更高的吞吐量。

关于Windows 自组织网状网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129382/

相关文章:

c - 我如何知道我是否使用 Windows API 来使用 ARM?

android - 用户/开发人员如何为 2.x 版本设置 Android 的代理配置?

lua - 如何使用 NodeMCU 收听通过设备广播的其他 WiFi 网络 SSID?

cocoa - 通过 Cocoa 连接到 WIFI 网络

iphone - iPhone 上的 adhoc 应用程序安装失败,为什么?

windows - 使用 schtasks.exe 指定计划任务的运行目录

c# - 在不导入 C# 数据源的情况下创建 SQL Server 连接字符串

iphone - 续订过期的配置文件时出现问题

iphone - 签名者无效错误

python - 使用 Python 的 CGI 脚本 - 在本地服务器上测试浏览器