Перейти к содержимому
Doob

Структурированная меш-сеть moonlink

Рекомендуемые сообщения

Насколько хорошо поддерживается изменение топологии сети?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что собой представляет адрес?

Как он генерируется?

Как узнать свой адрес?

Событие moonlink_message возвращает адрес получателя. А можно ли узнать адрес отправителя?

Интересует алгоритм динамической маршрутизации. Как часто обновляются таблицы маршрутизации? Если за секунду до отправки пакета отвалится один из промежуточных узлов, будет ли найден обходной путь или пакет потеряется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 часа назад, hohserg сказал:

Насколько хорошо поддерживается изменение топологии сети?

По таймеру каждые 30 секунд пингуются соседние узлы, в это время происходит сброс всех маршрутов и восстановление из поступающих ответов. Из-за медлительности пинг-понга может потеряться сообщение. Хотел добавить очередь для неотправленных сообщений, но почему-то не сделал. Скорее всего проблема будет в том, что при изменении топологии, с условием, что узел держащий сообщение, потерял связь с целевым, перенаправит по новому маршруту (следовательно, сообщение может вернуться к отправителю и будет гулять туда-сюда 2-3 раза).

Можно сделать подтверждение доставки, тогда не нужна очередь, а реализуется это поверх базового протокола.

 

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

 

16 минут назад, Zer0Galaxy сказал:

Что собой представляет адрес?

Как он генерируется?

Как узнать свой адрес?

Адрес это UUID сетевой карты, работает так же как обычный modem.send

 

 

16 минут назад, Zer0Galaxy сказал:

А можно ли узнать адрес отправителя?

Любой промежуточный узел может подменить сообщение, поэтому идентификацию пользователи должны реализовать своим протоколом.

 

 

16 минут назад, Zer0Galaxy сказал:

Если за секунду до отправки пакета отвалится один из промежуточных узлов, будет ли найден обходной путь или пакет потеряется?

Если узел не успел получить новый маршрут, то да, потеряется.

 

Наверно стоит сделать пинг перед отправкой сообщения, а не по таймеру. Будем тестировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, Doob сказал:

Наверно стоит сделать пинг перед отправкой сообщения, а не по таймеру.

Процедура ping() затрагивает только соседние узлы или всю сеть? Если всю, то будет слишком накладно делать пинг перед каждым сообщением. Если только соседей, то может не обнаружить потерю узла, стоящего за соседним.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Zer0Galaxy сказал:

Если только соседей, то может не обнаружить потерю узла, стоящего за соседним.

Да, как раз это и надо как-то хитро обойти.

 

Для частной магистрали вполне годится и так, там администратор сети отвечает за узлы.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю, нужно различать пользовательские узлы и роутеры, чтобы кто то, просто подключившись на пять минут, не нарушал маршрутизацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Достаточно добавить буфер для неотправленных сообщений, получится динамический A*. Эксперименты показывают, что прервать передачу можно только изолировав/отключив узел до того как он отправит сообщение, а против этого ни у какого протокола нет защиты.

Беда в том, что модемы работают крайне медленно, в реальных устройствах обмен данными идет очень быстро и два майнкрафт-тика, для настоящего сетевого интерфейса это бездна времени.

Остается только гонять динамический A*, других вариантов не вижу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что будет, если я попробую отправить пакет размерлм больше 8 килобайт? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...