Jonathan,

Will you be writing up this ELR idea soon? You might not realise that your descriptions of it so far in emails have not been understandable (to me), so a proper write up is needed. I'm not even sure what problem it is trying to solve (don't spend time explaining by email - write it up properly pls).

We are currently finalising an Internet draft on an identifiers for L4S (aimed for the tsvwg, which owns ECN and Diffserv standardisation, but I'll cross-post to aqm too). It should appear before Monday's IETF deadline. It will be written as if it is a draft to standardise the chosen identifier), with all the proposals and their pros and cons in an appendix.

Inline...

On 07/08/15 08:55, Jonathan Morton wrote:

A flow-isolating AQM such as fq_codel would be able to deal with different flows responding differently to CE.

The problem is that core and semi-core network nodes don't have the resources to do flow isolation at line rate, or (equivalently) they deal with too many simultaneous flows to make a meaningful flow isolation scheme practically implementable. This, I assume, is where the dual queue proposal comes in.

Yes, and because flow-queuing overrides the packet rate choices of applications (breaking the end-to-end principle). In testing, fq completely rips apart CBR and variable rate video when running alongside long-running TCP flows, when they would otherwise work just fine in a FIFO.

I've been whingeing about this ever since fq_CoDel was first mooted. But I didn't want to make too much noise until we had fully tested a better alternative.

Fundamentally, dual queue needs to be able to identify the packets belonging to each queue. DSCP is a non-starter because it doesn't, in practice, survive end to end.

Not a complete non-starter. A valid deployment model is for ISPs to initially deploy L4S for their own services (CDNs, premium services etc) as local-network only. Then as more e2e ECN sources migrate to L4S (and any attempt to use the DSCP gets bleached), each ISP could choose to remove the DSCP rule from its L4S queues leaving only the ECN rule, so that ECN alone could become the identifer, and it would work e2e.

At the moment we're favouring ECT(1), but I keep wavering as I find new issues with each approach. Watch for the draft.

I'm wary of using the ECN field for the same purpose - it could work, but promotimg CE packets from classic ECN flows could result in spurious retransmissions due to reordering.

I'd need the experts to confirm this, but I don't think this would lead to spurious retransmits - at least very rarely - and very rare spurious retransmissions are not a problem.

Reason: If a classic CE-marked packet arrives earlier than the rest of the flow around it, TCP will see one dupack. Then subsequent (non-CE) packets will continue to advance the cumulative ACK number closing the gap towards the one packet up ahead, so there will be no further dupacks. With SACK, it will report the gap on the SACK of the CE packet, then again, subsequent packets will close the gap, so no ill effects - I believe.

An odd packet delivered early might confuse the smart mechanisms (in e.g. Linux) for characterising the level of persistent re-ordering, which are intended to prevent spurious retransmits. But a good algo should be able to ignore outliers.

3 classic CEs in a row would cause a spurious retransmit. But the probability of that from a good AQM should be tiny.

Also, reordered CE packets would be very rare in the first place because:
i) it is quite unusual to experience more than one bottleneck queue on a path; ii) even then, reordering would only occur if there was simultaneous mixing of classic and L4S traffic, which would be more unlikely in an access link, which is where most bottlenecks are located.


Simply using the presence of ECN capability is also a bad idea, because Apple's imminent deployment of classic ECN to millions of end hosts will break that assumption.

Agreed. Altho the deployment seemed to have happened, I looked at packets emitted from my iPhone after it autoinstalled the public release of iOS 9.0.2, a few days ago, and SYNs did not attempt to negotiate ECN. I've tried to find out what's (not) happening from Apple, but...?

A more robust deployment option would be to use a new transport protocol ID. Then it wouldn't be TCP any more, and you can throw away some cruft while you're at it. I'll leave the problems with that idea to your fertile imaginations.

Nah. Lots of reasons why the protocol ID is not useful for this. Pasting from our draft to be...

* A new protocol ID would need to be paired with the old one for each transport (TCP, SCTP, UDP, etc.); * In IPv6, there can be a sequence of Next Header fields, and it would not be obvious which one would be expected to identify a network service like L4S; * A new protocol ID would rarely provide an end-to-end service, because It is well-known that new protocol IDs are often blocked by numerous types of middlebox;
* The approach is not a solution for AQMs below the IP layer;

The middlebox bullet is the killer (which is why DCCP, SCTP etc still don't work e2e).

As a gentle reminder, ELR is designed to solve the same problem while avoiding these deployment problems. It does "burn" ECT(1), but for a good cause and - crucially - doesn't require the network to be aware of it before endpoints can safely turn it on.

ELR sounds similar to previously published stuff (VCP maybe?). But until you write it up, we can't tell for sure.



Bob

- Jonathan Morton



_______________________________________________
aqm mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/aqm

--
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/

_______________________________________________
aqm mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/aqm

Reply via email to