Subject: [Tsvwg] sctp multi-homed

From: devayya <[email-masked]>
Date: Fri, 26 May 2006 16:58:53 +0530

Hi,

Consider a case where one endpoint is multi-homed with two interfaces 
with ip addresses x.x.x.x and y.y.y.y
and another endpoint (a.a.a.a) with single interface. And the sctp 
association is established between these two endpoints.
Suppose third endpoint (b.b.b.b) tries to associate with the first 
multi-homed endpoint on secondary ip address y.y.y.y , should this 
association comes to established state? On getting INIT from third 
endpoint the INIT-ACK is sent in response but is ignored by the third 
endpoint. Is this correct behaviour?
In otherwords, in this configuration, is it possible to have a 
association with first interface(x.x.x.x) as primary. and another 
association with second interface(y.y.y.y) as primary?

INIT (x.x.x.x, y.y.y.y) from x.x.x.x to a.a.a.a.
INIT ACK (a.a.a.a) from a.a.a.a to x.x.x.x is accepted.

INIT(x.x.x.x, y.y.y.y) from y.y.y.y to b.b.b.b.
INIT ACK (b.b.b.b) from b.b.b.b to y.y.y.y is ignored by y.y.y.y.  WHY ?

regards,
devayya

---

From: "Brian F. G. Bidulock" <[email-masked]>
Date: Fri, 26 May 2006 05:47:59 -0600

devayya,

devayya wrote:                                                     (Fri, 26 May 2006 16:58:53)
> INIT ACK (b.b.b.b) from b.b.b.b to y.y.y.y is ignored by y.y.y.y.  WHY ?

What are the port numbers involved?

--brian

-- 
Brian F. G. Bidulock
[email-masked]
http://www.openss7.org/

---

From: devayya <[email-masked]>
Date: Fri, 26 May 2006 17:16:04 +0530

Brian,

The port number is 3565 for both source and destinations for all the 
endpoints.

regards,
devayya

---

From: Michael Tuexen <[email-masked]>
Date: Fri, 26 May 2006 13:54:26 +0200

Hi devayya,

see my comments below.

Best regards
Michael

On May 26, 2006, at 1:28 PM, devayya wrote:

> Hi,
>
> Consider a case where one endpoint is multi-homed with two  
> interfaces with ip addresses x.x.x.x and y.y.y.y
> endpoint the INIT-ACK is sent in response but is ignored by the  
> third endpoint. Is this correct behaviour?
Why not?
> INIT ACK (b.b.b.b) from b.b.b.b to y.y.y.y is ignored by y.y.y.y.   
Maybe a bug in the implementation?

---

From: "Brian F. G. Bidulock" <[email-masked]>
Date: Fri, 26 May 2006 06:09:18 -0600

devayya,

As I suspected.

While it is technically possible from the protocol perspective
to form the two associations you cite, it is not required that a
given implementation support what you are trying to do.

I take it that you are setting SO_REUSEADDR/T_IP_REUSEADDR when
binding the second socket/stream.  While this permits you to
bind both to (x.x.x.x,y.y.y.y):3656 when the INIT-ACK is
received for the second association, it is pretty much up to the
implementation to decide whether a conflict might occur or not.

The OpenSS7 implementations (and others, I'm sure) will accept
the INIT-ACK because they check connection hashes for overlap
and find none.  However, the implementation you are using
_might_ assume that because the local endpoint conflicts that
the association would conflict and drops the association, or it
_might_ have a bug in its logic while processing the INIT-ACK.

I agree that is not very good behaviour for M2PA (port 3565)
which uses the model that associations should always be formed
port 3565 to 3565.  However, it _is_ possible to support the two
associations that you cite.  Not only that, it is possible to
support the two association that you cite without listening on
either side (i.e.  both sides initiate the association at about
the same time).

--brian

devayya wrote:                                        (Fri, 26 May 2006 17:16:04)

-- 
Brian F. G. Bidulock
[email-masked]
http://www.openss7.org/

---

From: Michael Tuexen <[email-masked]>
Date: Fri, 26 May 2006 14:51:27 +0200

Hi Brian,

If you use the one-to-many style socket, the scenario should
work. The endpoint just binds to INADDR_ANY and sends a packet
to a.a.a.a. Later it sends a packet to b.b.b.b. So every implementation
supporting the socket api would support it.

The different source address of the INIT may come from different
routes, that may up to the IP layer.

Best regards
Michael

On May 26, 2006, at 2:09 PM, Brian F. G. Bidulock wrote:

>> devayya wrote:                                                      
>> (Fri, 26 May
>>  2006 16:58:53)

---

From: "Brian F. G. Bidulock" <[email-masked]>
Date: Fri, 26 May 2006 07:10:22 -0600

Michael,

I don't think M2PA can use one-to-many: it cannot handle
associations forming and being dropped mid-communications,
because that would drop the signalling link and cause MTP3
changeover procedures to begin.  Nor is it well suited to
receiving: M2PA would have to demultiplex on source address to
distinguish to which link the message belonged.  It is rather
inefficient for the application to do this demultiplexing when
the one-to-one model does it quite nicely (when the association
is looked up, which the one-to-many model must do anyway).

Of course your welcome to do what you wish, but IMHO 1:1 is
better for M2PA.

--brian

Michael Tuexen wrote:                                              (Fri, 26 May 2006 14:51:27)

-- 
Brian F. G. Bidulock
[email-masked]
http://www.openss7.org/

---

From: Michael Tuexen <[email-masked]>
Date: Fri, 26 May 2006 17:05:28 +0200

Brian,

I think this depends on your programming style. I could imagine
someone writing M2PA using 1-to-many API (you can disable AUTOCLOSE),
but I would also use the 1-to-1 style unless I ran into resource
problems...

Best regards
Michael

---

From: Mark Butler <[email-masked]>
Date: Fri, 26 May 2006 09:49:55 -0600

> association with second interface(y.y.y.y) as primary?

First problem is that an endpoint is a transport layer concept, not a 
network layer concept.  You need to have the port # included.  You can 
have multiple end points using the same set of addresses, with different 
port numbers.

Not only that but an endpoint *can*, but is not required to host more 
than one association.  Nothing about SCTP per se makes an implemenation 
ignore new association requests, unless they have the same source and 
destination endpoint as a previously established association.  A change 
in IP address on the same host does not generally imply a different 
endpoint, a change in port number does.

 - Mark B.