SCTP bundling of SACK + DATA on a non-primary path.

Mikhail Plotkin <[email protected]> Thu, 03 Mar 2011 16:35:17 +0300
Newsgroups gmane.ietf.sigtran
Message-ID <[email protected]>
Hi All,

I need a piece of advise regarding interpretation of the rules from RFC 4960.
In chapter 6.4 it says:

   An endpoint SHOULD transmit reply chunks (e.g., SACK, HEARTBEAT ACK,
   etc.) to the same destination transport address from which it
   received the DATA or control chunk to which it is replying.  This
   rule should also be followed if the endpoint is bundling DATA chunks
   together with the reply chunk.

We see the issue here:
If the rule above is followed, SACK+DATA may be sent via the path which is different from the primary path. It may result in some problems, even to packets losses, especially  if paths are uni-directional. Moreover it seem to conflict with another rule from the same chapter:

   By default, an endpoint SHOULD always transmit to the primary path,
   unless the SCTP user explicitly specifies the destination transport
   address (and possibly source transport address) to use.

A possible solution could be NOT to bundle DATA with SACK if the SACK is going to be sent via not primary path. But then, there is another rule in chapter 6.1:

Before an endpoint transmits a DATA chunk, if any received DATA
chunks have not been acknowledged (e.g., due to delayed ack), the
sender should create a SACK and bundle it with the outbound DATA
chunk, as long as the size of the final SCTP packet does not exceed
the current MTU.
How should we resolve these seeming contradictions?
Thanks.