Subject: RE: [Tsvwg] End point and association Address conflict

From: [email-masked]
Date: Fri, 26 Apr 2002 11:30:06 +0300

Hi all!

	I think I haven't been so clear when explaining my doubt... Let me make it clearer...

> [email-masked] wrote:
> ....
> >         Now I have another doubt... Imagine that we have an 
> endpoint 
> > E1 with addresses IPa, IPb and port 1. We have an association A1 
> > that only uses IPa, whose peer is IPz and port 65535. Thus the 
> > association A1 can be represented as [(IPa; Port1), (IPz; 
> Port 65535)]. 
> > What happens now if we receive an INIT from IPz/65535 
> directed to IPb/1?
> > 
> >         As IPb is not being used in A1, we should answer with an 
> > INIT ACK as in a normal establishment of an association. However, 
> > when you receive an INIT chunk, you include all the 
> addresses of the endpoint
>                                       ^^^^^^^^^^^^^
> Here your "..include all the addr..." directly violated the "under no
> circumstance can an SCTP transport address ever be present in 
> more than
> one SCTP endpoint" rule (see last the paragraph, page 23 of the SCTP
> book).
> 
>         E1               E2
> A1 = [(IPa; Port1), (IPz; Port 65535)]
> 
>         E3                 E2
> A2 = [(IPa, IPb; Port1), (IPz; Port 65535)]
> 
> And you have IPa/Port1 present in both E1 and E3 (they are 
> TWO different
> endpoints by definition!). This is prohibited by the SCTP association
> definition.

	No, I don't think what I'm proposing is illegal at all... Take into account that you can make use of the AddIP extension to delete IPb... Thus, initially, the association had all the addresses of the endpoint (IPa and IPb). Later on you delete your source address IPb. And then all this happens...

	So, the problem is that the pair IPb/1-IPz/65535 is not part of any association... :-/

	BR Iván Arias Rodríguez

> -Qiaobing
> 
> > in the INIT ACK chunk... But we have to be careful, because in
> > this case, when receiving the COOKIE ECHO, we have two options:
> 

_______________________________________________
tsvwg mailing list
[email-masked]
https://www1.ietf.org/mailman/listinfo/tsvwg

---

From: Qiaobing Xie <[email-masked]>
Date: Fri, 26 Apr 2002 14:53:35 -0500

Hi, Ivan,

This is a very important discussion. Please see my comments below...

> > And you have IPa/Port1 present in both E1 and E3 (they are TWO different 

Applying Add/Delete-IP is ok, but anytime you do that, you must not
break the basic rules that define the endpoint and association.
Otherwise, you will get into troubles as you've noticed in your own
analysis.

Let us layout what you are proposing in details.

Suppose you originally have:

          E1                  E2
  A1 = [(IPa,IPb; Port1), (IPz; Port 65535)]

then you delete IPb from E1 (Note, this effectively changes the
definition of E1 to E1' and A1 to A1'. They are logically differently
defined now):

          E1'                  E2
  A1' = [(IPa; Port1), (IPz; Port 65535)]

Now, E2 sends an INIT to IPb/Port1, and you decide it's ok to setup
assoc A2, which is ok. But you are _PROBINITED_ by the endpoint
definition to have:

          E1'                  E2
  A1' = [(IPa; Port1), (IPz; Port 65535)]

          E3                  E2
  A2 = [(IPa,IPb; Port1), (IPz; Port 65535)]  /* bad, illegal assoc */

I don't know how you can detect and prevent this illegal setup conflict
in your implementation. But allowing this will violate the basic SCTP
association rule I mentioned above. Another way to understand why this
is illegal is to think about this: if this were to be allowed, what
would happen if you then go ahead and add IPb back to A1'? You would
magically end up with _two_ association between the same pair of
endpoints!?! 

However, it is perfectly ok to have:

          E1'                  E2
  A1' = [(IPa; Port1), (IPz; Port 65535)]

          E3                  E2
  A2 = [(IPb; Port1), (IPz; Port 65535)]  /* good, legal assoc */

This discussion is very good. We should capture this and caution people
not to break SCTP association definitions when using ADD/DELETE-IP.

-Qiaobing