From: o.evistel@xxxxxxx > Sent: 09 February 2024 10:06 > > I am using linux-sctp as transport for SIGTRAN M3UA on RHEL 8.4 with > multihoming (sctp_bindx(), sctp_connectx() API functions). > I would like to know, after association setup, if it is possible to > instruct SCTP to use a specific local address from the list of bound > addresses to reach the peer. Unlikely in the extreme. If there are 'n' bound local addresses and 'm' remote addresses (IIRC from the INIT_ACK - but they come from the far end) then Linux only verifies a route to each local address and picks an appropriate local address for each one. So it only sends heartbeats to 'm' addresses, not on 'n * m' address pairs. So if anything of this nature did exist it would limit the remote addresses used, not the local ones. I think you'll also find that specifying multiple address with sctp_connectx() only affects where the initial INIT is sent to (I suspect the addresses get tried in turn). Once the connection is established the addresses received from the remote system are almost certainly used instead. We don't use connectx(), just try a list of addresses in sequence. This can then contain the addresses of alternate systems as well and alternate addresses for a single system. If does have to be said that M3UA works a lot better over TCP! As well as being a far lighter protocol it is much easier to get multiple M3UA messages into a single ethernet frame with TCP. If you've got 10 messages to send, you can use a single send() to send them (etc). A single recv() can read lots of pending message and you can cheaply debatch them in userspace. This all starts mattering when you are trying to send 10000 SMS every second (we don't know what they are sending...) David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)