Scheffenegger, Richard | 3 Aug 2012 01:58
Picon

draft-stewart-tsvwg-sctpecn

Hi,

While looking as to how other protocol do ECN feedback signaling, I found that this draft is missing (at
least not mentioning) an interesting detail.

The existence of a CWR Chunk indicates, that the feedback signal is supposed to be reliable.

However, the ECN Echo chunk defines the Number of CE marked Packets as 32-bit unsigned int, and does not
specify how a receiver should behave it never received a CWR chunk...

The sheer size of the ECN Echo chunk would lend itself to be a simple feedback signal, without any explicit
signal from the sender.

Historically, in RFC4960, it appears that this chunk effectively contained only a single bit (no counter;
only the presence of the chunk). In order to establish a reliable feedback for at most one ECN signal per
RTT, a handshake mechanism (CWR chunk) is required. That mechanism was very much alike what TCP does with
ECE / CWR.

IMHO, this draft should be more clear around the mechanism:

If a handshake is required, the 32-bit counter MUST NOT roll over at 2^32-1, but remain at that value until
CWR is received.

The sheer size of the counter however makes it highly unlikely that the sender will not receive a signal
(before the session collapses for lack of feedback from the receiver). So a handshake-less (CWR chunk
optional on the sender?) is also feasible, but then the ECN counter MUST roll over...

As it stands now, the counter rolls over, and is reset via CWR...

Are there any specific reasons for this chimera mechanism? 
(Continue reading)

Randy Stewart | 3 Aug 2012 17:35

Re: draft-stewart-tsvwg-sctpecn

Richard:

Well maybe am mis-understanding your comments. Are you concerned
that the counter really should not roll over?

This would require 2Billion attempts at sending an update CWR. This is a bit
far-fetched so I never thought about it ever happening.

Now the counter does not have a defined use, sort of like the duplicate receipts of TSN's
in the SACK. I was playing with it actually in a different CC algorithm and thought it 
was a good idea to have for future work since its easily obtainable.

As far as what to do when you don't get a CWR… hmm let me re-read the document. You are
supposed to (like TCP) continue to retransmit ECN Echo chunks until a CWR is received

Maybe I missed that statement in the document.

R

On Aug 2, 2012, at 7:58 PM, Scheffenegger, Richard wrote:

> Hi,
> 
> 
> While looking as to how other protocol do ECN feedback signaling, I found that this draft is missing (at
least not mentioning) an interesting detail.
> 
> The existence of a CWR Chunk indicates, that the feedback signal is supposed to be reliable.
> 
> However, the ECN Echo chunk defines the Number of CE marked Packets as 32-bit unsigned int, and does not
(Continue reading)

Randy Stewart | 3 Aug 2012 17:52

Re: draft-stewart-tsvwg-sctpecn

Richard:

Hmm

Re-reading the document a bit, I don't see that it does not tell
you to retransmit the chunk in the receiver side (5.3) we state:

"
After transmission of the ECN Echo chunk, usually bundled with the
   SACK, the receiver does NOT discard the ECN Echo chunk.  Instead it
   keeps the chunk in its queue and continues to send this chunk bundled
   with at least a SACK chunk on each outgoing packet, updating it as
   described above if other CE codepoint data packets arrive.  The ECN
   Echo chunk should only be discarded when a CWR Chunk arrives holding
   a TSN value that is greater than or equal to the value inside the ECN
   Echo Chunk.
"

If this is not clear enough please let me know a wording that would make it clearer.

Note that the ECN echo continues to be received until a CWR shows up
with a TSN number at least as big as the TSN sent in the ECN Echo.

R

On Aug 2, 2012, at 7:58 PM, Scheffenegger, Richard wrote:

> Hi,
> 
> 
(Continue reading)

Scheffenegger, Richard | 3 Aug 2012 18:17
Picon

Re: draft-stewart-tsvwg-sctpecn

Hi Randy,

My point being, that it is not clear, architecturally, if the mechanism implements a reliable feedback, or not.

The way TCP (3168) signals ECN is, that you have a counter that counts up to a specific maximum value, and
remains at that value until reset. In TCP, that counter is only 1 bit (ECE), and CWR is the reset signal.

Now, when the counter is large enough (5+ bits), the resiliency no longer requires a reset signal
(statistically), as the counter is increasingly unlikely to wrap over unnoticed. So with a 32 bit
counter, you can do away with the CWR signal entirely. Or is there any use to the receiver to know when the
sender has reacted to congestion (by an unknown extent)? (Historically, SCTP implemented the same
one-bit counter/reset scheme that TCP did, IIRC; so CWR is really only relevant for legacy
compatibility, correct?).

Since the receiver resets the ECN counter only if it receives a CWR with the appropriate TSN, that means that
you implicitly require at least one RTT without a CE mark, for that to happen...

Assume a pretty congested network, where you'll get one CE mark per RTT (and the source doesn't react
traditionally with halving the sending rate), then the counter can increase continuously.
Understanding the concept (counter with reset, pure counter) would answer what the receiver is to do when
the counter hits 2^32-1...

I am bringing this up because for TCP, a single bit counter is insufficient for the requirements of Conex;
and I want to understand if the signaling scheme was given thorough thought that I could leverage for a
redesign in the TCP space...

I do agree, that when one excludes misbehaving implementations, this question is more of academic
interest rather than a true issue of a deployment following the draft, owed to the large counter.

Richard Scheffenegger
(Continue reading)

Randy Stewart | 3 Aug 2012 19:27

Re: draft-stewart-tsvwg-sctpecn

Richard:

Ok so this is not a case where you are not seeing the ECN/CWR are reliable. Thats good ;-)

On Aug 3, 2012, at 12:17 PM, Scheffenegger, Richard wrote:

> Hi Randy,
> 
> My point being, that it is not clear, architecturally, if the mechanism implements a reliable feedback,
or not.
> 
> The way TCP (3168) signals ECN is, that you have a counter that counts up to a specific maximum value, and
remains at that value until reset. In TCP, that counter is only 1 bit (ECE), and CWR is the reset signal.
> 
> Now, when the counter is large enough (5+ bits), the resiliency no longer requires a reset signal
(statistically), as the counter is increasingly unlikely to wrap over unnoticed. So with a 32 bit
counter, you can do away with the CWR signal entirely. Or is there any use to the receiver to know when the
sender has reacted to congestion (by an unknown extent)? (Historically, SCTP implemented the same
one-bit counter/reset scheme that TCP did, IIRC; so CWR is really only relevant for legacy
compatibility, correct?).
> 
> Since the receiver resets the ECN counter only if it receives a CWR with the appropriate TSN, that means
that you implicitly require at least one RTT without a CE mark, for that to happen…

Correct.

> 
> Assume a pretty congested network, where you'll get one CE mark per RTT (and the source doesn't react
traditionally with halving the sending rate),
                                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(Continue reading)

Scheffenegger, Richard | 3 Aug 2012 19:44
Picon

Re: draft-stewart-tsvwg-sctpecn

Hi Randy,

you have elegantly avoided to answer my question around the conceptual behavior :)

So let me rephrase my question a little bit differently:

Suppose you are restricted on bits available to signal the congestion back to the sender, would you
implement a continuously increasing counter (that eventually wraps), or a gauge that only increases up
to a certain point before requiring an explicit reset.

Independently from this, do you see value in letting the receiver (and implicitly, the network)
explicitly know that the sender (supposedly) did perform a congestion control reaction?

Think of this scenario as when the send window (# packets) is larger than the largest value that the counter
could hold; With TCP, that happens with windows > 1 packet; with this draft, when the window grows beyond
2^32 packets (purely hypothetical).

Thanks for your help!

Richard Scheffenegger

> -----Original Message-----
> From: Randy Stewart [mailto:randall <at> lakerest.net]
> Sent: Freitag, 03. August 2012 10:28
> To: Scheffenegger, Richard
> Cc: gorry <at> erg.abdn.ac.uk; tsvwg <at> ietf.org; tuexen <at> fh-muenster.de; Matthew
> Mathis (mattmathis <at> google.com); stevedong <at> huawei.com
> Subject: Re: [tsvwg] draft-stewart-tsvwg-sctpecn
> 
> Richard:
(Continue reading)

John Leslie | 4 Aug 2012 03:03
Favicon

Re: draft-stewart-tsvwg-sctpecn

Scheffenegger, Richard <rs <at> netapp.com> wrote:
> 
> Suppose you are restricted on bits available to signal the congestion
> back to the sender, would you implement a continuously increasing
> counter (that eventually wraps), or a gauge that only increases up to
> a certain point before requiring an explicit reset.

   [tcpm] is facing this issue for TCP: I haven't posted an opinion
there yet; but frankly my opinion is that a counter that wraps is a
better mechanism. It end-runs a lot of race conditions.

   I don't know the exact details for SCTP -- but it seems avoiding
race conditions would be best here, too.

> Independently from this, do you see value in letting the receiver
> (and implicitly, the network) explicitly know that the sender
> (supposedly) did perform a congestion control reaction?

   There is arguably some value in that; but it tends to strike me as
a MAY rather than a MUST.

> Think of this scenario as when the send window (# packets) is larger
> than the largest value that the counter could hold; With TCP, that
> happens with windows > 1 packet; with this draft, when the window
> grows beyond 2^32 packets (purely hypothetical).

   TCP, here, serves only as a bad example IMHO. The one-bit counter
was barely adequate when first specified, and can never pass more than
one event per RTT. This is already considered inadequate for things we
want TCP to do today.
(Continue reading)

Scheffenegger, Richard | 4 Aug 2012 05:07
Picon

Re: draft-stewart-tsvwg-sctpecn

Thanks John,

I think I understand now what you are saying - at least to my understanding, you weren't as explicit over in
the TCPM WG list :)

Let me discuss these considerations with my co-author, perhaps we can come up with a proper way to encode all
these signals appropriately.

Any thoughts as to the exact sequence of CE marks being seen on the receiver side? (I think that this will be
too much information, better served by some kind of explicit byte-congestion counter, that has similar
properties to a packet-congestion counter).

Best regards,

Richard Scheffenegger

> -----Original Message-----
> From: John Leslie [mailto:john <at> jlc.net]
> Sent: Freitag, 03. August 2012 18:03
> To: Scheffenegger, Richard
> Cc: Randy Stewart; tsvwg <at> ietf.org
> Subject: Re: [tsvwg] draft-stewart-tsvwg-sctpecn
> 
> Scheffenegger, Richard <rs <at> netapp.com> wrote:
> >
> > Suppose you are restricted on bits available to signal the congestion
> > back to the sender, would you implement a continuously increasing
> > counter (that eventually wraps), or a gauge that only increases up to
> > a certain point before requiring an explicit reset.
> 
(Continue reading)


Gmane