Можно ли использовать многоадресную передачу с надежным обменом сообщениями в стандарте OMG DDS или требуется одноадресная передача?
В настоящее время я пытаюсь выяснить что-то о DDS
приложение, которое я написал.
Мой писатель и читатель в настоящее время имеют надёжность, поэтому, если читатель пропустит сообщение, писатель опубликует сообщение. Я также использую мультикаст по умолчанию и не использую уни-каст для обнаружения издателей и подписчиков.
По протоколу мультивещания я использую только порты 7000
а также 7001
нужно быть открытым. Однако когда я сделал анализ с использованием wireshark, я увидел, что порты 7010
а также 7011
(одноадресные) порты также открыты.
После некоторых копаний я наткнулся на эту ссылку, и кажется, что для обеспечения надежности для читателей и писателей вам нужно включить uni-cast, и поэтому порты uni-cast также открыты и используются.
Нужно ли действительно включать uni-cast для надежной доставки сообщений, и если да, то зачем это нужно, а также почему многоадресная рассылка не может выполнять эту функцию?
1 ответ
В этом случае происходит то, что большая часть трафика будет выходить через MC. Иногда протокол надежности отправляет сообщение, в котором говорится, что "у меня есть порядковые номера от N до M".
Каждый читатель будет (и это в большой степени настраивается в разных реализациях) отвечать чем-то (через одноадресную рассылку!) "Хорошо" или "я не получил x или z".
Если только один считыватель не получил x, то нет смысла проверять восстановительный образец x, потому что он нужен только одному считывателю. Таким образом, писатель одноадресно передает его скрипучему читателю.
Вот вкратце, я мог бы потратить еще 10 параграфов на обсуждение параметров конфигурации и настройки поведения.
Но да, д-р: ожидаемое поведение.