Re: Linux SCTP multihoming question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Samstag, dem 10.02.2024 um 17:03 +0000 schrieb David Laight:
> 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've been told once that using the socket option SO_BINDTODEVICE should
serve the trick, i.e., it should provoke Linux into choosing the picked
device's IP addr as the source IP addr.

I've never tested / verified that, though.
I'm also not sure if it would have other negative consequences, such as
limiting the reachability through non-bound devices.


P.


> 
> 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)






[Index of Archives]     [Linux Networking Development]     [Linux OMAP]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     SCTP

  Powered by Linux