Конфигурация DDS с многоадресной и одноадресной передачей
Я все еще пытаюсь понять DDS и его концепции. У меня есть конфигурация, где на 2 ноутбуках запускается приложение на основе dds. Моя среда не позволяет многоадресную передачу, поэтому я решил использовать одноранговое соединение (одноадресная передача). Чтобы привести оба ноутбука в одну сеть, я подключил их с помощью кабеля Ethernet (не уверен, было ли это необходимо или нет).
Теперь я ничего не менял в QoS, т.е. я не делал никаких настроек для одноадресной рассылки. Но теперь мои приложения общаются друг с другом.
Вопрос:
- Как участники обнаруживаются? Многоадресная рассылка? так как я не делал никаких настроек для одноадресной рассылки.
- Было ли необходимо объединить их в одну сеть, то есть подключить через кабель 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 - ничто, если не слишком настраиваемый.