jlivingood / IETF-L4S-Deployment

IETF L4S Deployment Design Recommendations
15 stars 3 forks source link

Should app-guide really recommend DCTCP? #44

Open Ealdwulf opened 1 year ago

Ealdwulf commented 1 year ago

I'm not completely familiar with the context in which these trials will run, but if it's expected to be over the public internet then it doesn't seem like a good idea to recommend DCTCP as a congestion control.

VMatrix1900 commented 1 year ago

DCTCP can be used as the scalable congestion control in L4S safely.

Ealdwulf commented 1 year ago

@VMatrix1900 , RFC9332 says "Prague fixes a number of problems with the Linux DCTCP code that make it unsuitable for the public Internet". Do you know if those problems have been fixed? (Even if they have, it would probably be wise for this doc to recommend only using the versions subsequent to the fix)

VMatrix1900 commented 1 year ago

@Ealdwulf I got your point. I am not aware if the problem in the Linux DCTCP is an Linux implementation issue or inherent to DCTCP RFC. AFAIK, Windows server and FreeBSD both implement DCTCP even before Linux.

Ealdwulf commented 1 year ago

There is a bit more information in rfc9330: Section 2: "Although DCTCP as-is functions well over wide-area round-trip times (RTTs), most implementations lack certain safety features that would be necessary for use outside controlled environments, like data centres (see Section 6.4.3)"

Section 6.4.2: "DCTCP needs some safety concerns to be fixed for general use over the public Internet (see Section 4.3 of the L4S ECN spec [RFC9331]), but DCTCP is not on by default, so these issues can be managed within controlled deployments or controlled trials."

That sounds like the issues also affect other implementations. I suspect it would be simplest just to remove the reference to DCTCP, but at the least it should only recommend it for controlled environments.

VMatrix1900 commented 1 year ago

Got it. From Section 4.3: "In uncontrolled environments, monitoring MUST be implemented to support detection of problems with an ECN-capable AQM at the path bottleneck that appears not to support L4S and that might be in a shared queue. Such monitoring SHOULD be applied to live traffic that is using Scalable congestion control. Alternatively, monitoring need not be applied to live traffic, if monitoring with test traffic has been arranged to cover the paths that live traffic takes through uncontrolled environments.

A function to detect the above problems with an ECN-capable AQM MUST also be implemented and used."

DCTCP does not implement such a function. I agree that DCTCP should only be recommended in controlled environments.