Конфигурация DDS с многоадресной и одноадресной передачей

Я все еще пытаюсь понять DDS и его концепции. У меня есть конфигурация, где на 2 ноутбуках запускается приложение на основе dds. Моя среда не позволяет многоадресную передачу, поэтому я решил использовать одноранговое соединение (одноадресная передача). Чтобы привести оба ноутбука в одну сеть, я подключил их с помощью кабеля Ethernet (не уверен, было ли это необходимо или нет).

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

Вопрос:

  1. Как участники обнаруживаются? Многоадресная рассылка? так как я не делал никаких настроек для одноадресной рассылки.
  2. Было ли необходимо объединить их в одну сеть, то есть подключить через кабель Ethernet, если я хотел использовать одноадресную передачу?

РЕДАКТИРОВАТЬ:

Конфигурация выглядит следующим образом:

  • Первый ноутбук: ОС Windows: родное приложение на основе DDS: издатель: многоадресная рассылка не разрешена.
  • Второй ноутбук: Linux: подписчик на ROS2: многоадресная рассылка - нет проблем

2 ответа

Решение

Как участники обнаруживаются? Многоадресная рассылка? так как я не делал никаких настроек для одноадресной рассылки.

Я не могу ответить на этот вопрос с полной уверенностью, так как вы используете DDS как часть инфраструктуры ROS2, и я не знаю точных деталей того, как эти два настроены для взаимодействия друг с другом. Сказав это, из вашего описания кажется, что участники действительно используют многоадресную рассылку для обнаружения друг друга.

Лучший способ получить окончательный ответ - прослушать сеть - при условии, что у вас есть необходимые привилегии для этого. Например, вы можете использовать Wireshark, который поставляется с диссектором RTPS, который позволяет фильтровать сообщения RTPS. (RTPS - это имя стандартизированного проводного протокола DDS.) Проверьте адрес назначения и посмотрите, обнаруживаете ли вы какие-либо адреса в диапазоне многоадресной рассылки. Вы можете сделать это, запустив одно приложение на основе DDS. Он начнет объявлять себя по сети немедленно.

Было ли необходимо объединить их в одну сеть, то есть подключить через кабель Ethernet, если я хотел использовать одноадресную передачу?

Если вы хотите использовать одноадресную передачу, вам нужно знать IP-адреса или имена хостов всех одноранговых узлов. Пока эти равноправные узлы могут связываться друг с другом через UDP, все в порядке. Часто, но не всегда, ping даст вам знать, так ли это. Межсетевые экраны являются типичной причиной проблем.

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

Из коробки DDS требуется для поддержки Multicast и Unicast Discovery. Анонимные соединения обрабатываются через многоадресную рассылку. Если вам известен IP-адрес получателя, вы можете вручную настроить эти адреса в списке обнаружения одноадресной рассылки (у каждого поставщика будет свой способ присвоения имени / обработки этого списка).

"Многоадресная рассылка в нашей сети запрещена", в большинстве случаев означает, что ваш ИТ-отдел отключил переадресацию многоадресных пакетов на коммутаторе (или коммутаторах), который определяет структуру вашей сети.

Однако поставляемая стандартная конфигурация DDS, поставляемая в комплекте, не знает этой локальной политики (как это может быть?). Если вы не изменили конфигурацию в соответствии с вашими локальными политиками, участники DDS по- прежнему будут пытаться подключиться через многоадресную рассылку, поскольку вы ее не отключили.

Если компьютеры, использующие DDS, подключены к одному и тому же концентратору или к неуправляемому коммутатору (определенному здесь как тот, который не заботится или не настроен вашим ИТ-отделом), и топология сети не пересекает управляемый коммутатор, и они используют конфигурацию по умолчанию и находят друг друга, а затем используют многоадресное анонимное обнаружение.

Узнайте, как настроить реализацию DDS, чтобы добавить индивидуальные IP-адреса машин, которые должны обмениваться данными. Поскольку обнаружение обычно требуется только в одном направлении (если A обнаруживает B, то верно, что B обнаружил A, предполагая, что ни A, ни B не настроены на игнорирование другого [1]).

После настройки одноадресного обнаружения вы можете настроить отсутствие многоадресной рассылки. Если машины находятся в сетях со скачкообразной перестройкой IP (WiFi и т. Д.), Будет сложно, если реализация DDS не понимает многолучевое распространение. Поговорите с продавцом, чтобы узнать, так ли это.

[1] DDS - ничто, если не слишком настраиваемый.

Другие вопросы по тегам