Re: SCTP client discarding INIT_ACK sent with different remote IP address from multihomed SCTP server

Pau Espin Pedrol <[email protected]>
Newsgroups org.kernel.vger.linux-sctp
Message-ID <[email protected]>
Hi,

On 12/2/25 13:13, Andreas Fink wrote:
> You wrote:
> 
>      "That doesn't seem to be problem here though, since indeed the 
> INIT_ACK is announcing both 127.0.0.1 and 127.0.0.2"
> 
> Note: that this is in the REPLY. The question is whats in the original 
> REQUEST. The node which is sending an INIT should expect the answer to 
> come from any of these IP's.
> If he is only connecting to one, then he 
> might not recognize the connection and drop it.

The original REQUEST (INIT) contains AFAIU the local addresses of the 
client, which in all cases binds to only 1 IP address (127.0.01), so 
AFAIU not relevant here, this doesn't change in any of the scenarios. 
Since the client only binds to 1 local IP address, no "Address" SCTP 
param is included during INIT.


 > This kind of issue often > arises if one side has a single ip 
configure and the other has two
> configured due to a misconfiguration.

This indeed raises another question: Is the spec mentioning somewhere 
that one should use the exact same subset of IP addresses when 
configuring both client and server sides? I wasn't aware of this 
limitation, is this written somewhere? I was expecting server binding on 
A+B and client connecting to B would be fine enough, specially since 
AFAICT the remote addr list at the client is only used at connect time, 
afterwards it uses the addr list provided by the server.



> Then it depends on who hits first 
> if it works or not. Is this a client server (like in M3UA) or a peer to 
> peer setup (like in M2PA).

I'm talking about a client-server (connected socket) SCTP setup.


> 
> Its kind of a grey undefined zone here but I presume giving Sigtran 
> comes from redundant SS7 kind of setups, you tend to have the two IP's 
> on two totally different physical subnets and the reply which goes to 
> one of the IP is kind of expected to come back from that physical path. 
> Now this logic fails completely on local loop interfaces. We do this 
> normally by using two separate IP routing tables. So if the answer comes 
> from another IP, it would also go out on the other physical cable (which 
> is not automatically the case if you leave it to the kernel).

I am aware by doing all sort of interface/routing splitting this problem 
can be circumvented, but I'm surprised this kind of simple setup fails 
to work, specially using the same stack in client and server, and 
specially since some versions of the stack seem to work fine while 
others don't. So imho something's wrong somewhere in the linux sctp 
stack on some newish linux systems apparently.

> 
> The question which arrises here is also if there is any benefit of even 
> using two IP's on a loopback interface.  You clearly wont get any 
> failover/redundancy benefit on a lo interface.
> 
> Are you able to reproduce the issue on a ethernet interface as well?
> 

I agree, much benefit in principle, other than maybe being able to do IP 
address management/changes without tearing down existing connections, etc.

In this special case (which I think is also a valid one and even 
common), we make use of the loopback device to do a multihomed setup to 
easily test that a given program is indeed binding all of the IP 
addresses it was configured with when using the socket.

 > PS: can you send me the  pcap file or a source snipped to reproduce?

You can easily reproduce (if you are "lucky" and your kernel behaves 
like mine) by using the sctp_darn commands I shared in my initial post.

I'm also sharing here 2 pcaps for the "-c 127.0.0.2" and the "-c 
127.0.0.2 -c 127.0.0.1" cases, where it can be seen in both that 
INIT_ACK is discarded by the client:

http://pespin.espeweb.net/~pespin/tmp/osmocom/sctp_init_ack/sctp_darn_connect_to_127_0_0_2_fails.pcapng.gz
http://pespin.espeweb.net/~pespin/tmp/osmocom/sctp_init_ack/sctp_darn_connect_to_127_0_0_2_then_127_0_0_1.pcapng.gz


-- 
- Pau Espin Pedrol <[email protected]>         http://www.sysmocom.de/
=======================================================================
* sysmocom - systems for mobile communications GmbH
* Siemensstr. 26a
* 10551 Berlin, Germany
* Sitz / Registered office: Berlin, HRB 134158 B
* Geschaeftsfuehrer / Managing Director: Harald Welte
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.