2016-04-06 7 views
0

Я пытаюсь найти решение, позволяющее обмен данными между встроенным устройством (на основе xMega128 (C)) и приложениями для Android. Ловушка - это обмен данными, должен осуществляться через Интернет, и как встроенное устройство, так и мобильное устройство, работающее с приложением, может находиться за разными NAT, подключаясь с использованием разных интернет-провайдеров, 3G, LTE и т. Д.Работа за NAT - схема связи с устройством

Я пробовал перфорирование отверстий UDP , но он не работает с симметричными NAT. Многопробивная штамповка с предсказанием также не гарантирует 100% надежности. Я также рассмотрел использование ICE, но библиотеки ICE C (pjnath, libnice) несовместимы с выбранным оборудованием (libs требуют os). Прямо сейчас я рассматриваю возможность реализации или использования (если есть) сервера ретрансляции трафика, но это похоже на хак для меня.

Есть ли другие варианты, которые я не рассматривал? Любая помощь будет оценена.

В идеале, схема связи будет:

  • 100% надежность

  • относительно низкой задержкой (3 секунды абсолютное макс)

  • масштабируемым (скажем, до 500k устройств в будущее)

  • , предназначенный как для приложения, так и для устройства

  • многопользовательский - одно устройство будет подключаться к нескольким андроид приложений

Кроме того, если это помогает, обмен данными между устройством и приложением не очень высокой интенсивности - примерно 1 сеанс в час , ~ 50 сообщений за сеанс с 10-20 секундами между ними, каждое сообщение весом около 100 байт.

ответ

0

То, что вы описываете, является равноправным сверстником или его подмножеством и для надежной работы, это большая работа. В случае сбоя одноранговой сети вы обычно возвращаетесь на сервер ретрансляции. Это можно сделать, но объем работы для этого довольно большой. Ваш список требований также довольно крутой ...

100% надежного

Там нет такого понятия, как надежное соединение. Вам нужно построить отказоустойчивость приложения, чтобы сделать его надежным.

относительно низкой латентностью (3 секунды абсолютный максимум)

Довольно часто вы будете ограничены физикой, т.е. скоростью света. Низкая латентность тяжелая.

масштабируемым (скажем до 500k устройств в будущем)

Я не знаю, что это означает, то есть это число одновременных подключений?существуют

Из википедии на NAT Traversal

Многие методы, но ни один метод не работает в любой ситуации поскольку поведение NAT не нормируется. Многие методы обхода NAT требуют помощи от сервера по общедоступному IP-адресу. Некоторые методы используют сервер только при установлении соединения, , в то время как другие основаны на ретрансляции всех данных через него, что добавляет расходы на полосу пропускания и увеличивает задержку, нанося вред голосу в реальном времени и видеосвязи.

ie он будет работать иногда, то есть будет ненадежным, поэтому вам нужно несколько способов сделать его надежным.

+0

Одно устройство общается с макс 10 смартфонами. Позволяет называть его системой. Там может быть до 500 тыс. Таких систем, и решение должно быть в состоянии справиться с этим. – rojarand

0

Пока обе конечные точки находятся за разными NAT, которые вы не контролируете, они не будут работать надежно. Ни за что. Вам нужна реле.

 Смежные вопросы

  • Нет связанных вопросов^_^