【问题标题】:Working behind the NATs - a scheme for device communication在 NAT 后面工作 - 一种设备通信方案
【发布时间】:2016-07-26 11:11:10
【问题描述】:

我正在尝试提出一种解决方案,支持在嵌入式设备(基于 xMega128(C))和 Android 应用程序之间进行数据交换。问题是数据交换必须通过互联网进行,嵌入式设备和运行应用程序的移动设备都可以位于不同的 NAT 之后,使用不同的 ISP、3G、LTE 等进行连接。

我尝试了 UDP 打孔,但它不适用于对称 NAT。带有预测的打孔也不能保证 100% 的可靠性。我也考虑过使用 ICE,但是 ICE C 库(pjnath、libnice)与选择的硬件不兼容(libs 需要 os)。现在我正在考虑实施或使用(如果存在)流量中继服务器,但这对我来说似乎是一种黑客攻击。

还有其他我没有考虑过的选择吗?任何帮助将不胜感激。

理想情况下,通信方案应该是:

  • 100% 可靠

  • 相对低延迟(3 秒绝对最大值)

  • 可扩展(例如未来最多 50 万台设备)

  • 可由应用程序和设备初始化

  • 多用户 - 一台设备可以连接多个安卓应用

此外,如果这有帮助,设备和应用程序之间的数据交换不是非常高强度 - 大约每小时 1 个会话,每个会话约 50 条消息,它们之间的间隔为 10-20 秒,每条消息的重量约为 100 字节.

【问题讨论】:

    标签: android c scalability hole-punching nat-traversal


    【解决方案1】:

    您所描述的实际上是点对点或其子集,要使其可靠地工作需要大量工作。在对等失败的情况下,您通常会退回到中继服务器。它可以完成,但是要做的工作量很大。您的要求列表也很陡峭...

    100% 可靠

    没有可靠的连接。您需要为应用构建容错功能以使其可靠。

    相对低延迟(3 秒绝对最大值)

    您经常会受到物理学(即光速)的限制。低延迟很难。

    可扩展(例如未来最多 50 万台设备)

    我不知道这意味着什么,即这是并发连接?

    来自关于 NAT Traversal 的维基百科

    存在许多技术,但没有一种方法适用于所有情况 因为 NAT 行为没有标准化。多种 NAT 穿越技术 需要来自公共可路由 IP 地址的服务器的帮助。 有些方法只在建立连接时使用服务器, 而其他人则基于通过它中继所有数据,这增加了 带宽成本并增加延迟,不利于实时语音 和视频通信。

    它有时会起作用,即它不可靠,因此您需要使用多种方法使其可靠。

    【讨论】:

    • 一台设备最多可与 10 部智能手机通信。让我们称之为系统。这样的系统可能多达 500k,解决方案必须能够处理它。
    【解决方案2】:

    只要两个端点都位于您无法控制的不同 NAT 之后,它就无法可靠地工作。没门。你需要一个继电器。

    【讨论】:

      猜你喜欢
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      相关资源
      最近更新 更多