Отказ от ответственности: я не использую многолучевое lksctp или ASCONF, но я прочитал исходный код модуля ядра.
Для каждого адреса однорангового узла создается отдельный sctp_transport, поэтому все будет зависеть от того, является ли ваш локальныйАддеры умножаются на один или два удаленных адреса.
Ассоциация сохраняет адрес назначения полученных пакетов для повторного использования в качестве предпочтительного источника при отправке через определенный sctp_transport.Установка SCTP_SET_PEER_PRIMARY_ADDR поможет партнеру сохранить правильный локальный адрес в качестве основного для определенного транспорта, и, если есть только один транспорт, возможно, все готово.Если существует более одного транспорта, это может заставить пира выбрать конкретный.Установка SCTP_PRIMARY_ADDR - это случай переворота, и если существует более одного транспорта, он определенно обновляет, какой транспорт является основным.
Для более чем одного транспорта не должно быть переключения от «основного» транспорта.если верхний слой не говорит.Однако то, какой транспорт является «активным», зависит от ошибок и т. Д., А для повторных передач спецификация явно рекомендует использовать альтернативные транспортные адреса.В целом, я бы сказал, что довольно бесполезно пытаться контролировать, какой транспорт активен (по сравнению с основным) все время.Простые вещи, такие как отправка INIT до запуска однорангового узла, будут переключать его назад и вперед.
Не упускайте из виду тот факт, что если вы привязываете / bindx к определенным адресам (вместо 0.0.0.0), он будет использовать их только в том случае, если у вас есть адреса, которые вы абсолютно не хотите использовать.
Желаю тебе удачи.