Explicit Congestion Notification (ECN) and Controlled Delay (CoDel)

558 views
Skip to first unread message

Sebastian Kummer

unread,
Jun 18, 2015, 10:42:07 AM6/18/15
to discuss...@googlegroups.com
Hi folks,

At the last WWDC, Stuart Cheshire talked about Explicit Congestion Notification (ECN -> RFC 3168) and Controlled Delay (CoDel) and how they used it to improve their screen sharing application. In short, they use this existing TCP/IP feature to overcome buffer bloat without experiencing packet loss. Additionally they can reduce latency in overused networks. 

You can watch the talk or download the slides at https://developer.apple.com/videos/wwdc/2015/?id=719 (interesting part starting at about 29:00)

After a quick scan of the WebRTC stack, I found that the usrsctplib has some code to handle an ECN echo, but I was not yet able to find out if the WebRTC itself does something with this information (e.g. reducing screen resolution). However, (in my understanding) if that already would be the case, the LEAKY_BUCKET flag then should not make such a difference like it actually does, because we would net experience buffer bloat / packet loss.

Am I missing something here? 

Stefan Holmer

unread,
Jun 23, 2015, 6:06:54 AM6/23/15
to discuss...@googlegroups.com
Webrtc uses RTP for screencasting (handled as regular video). We currently don't use ECN when doing bandwidth estimation and congestion control for RTP streams.

What you are referring to is the webrtc DataChannels (sctp), and the leaky bucket/pacer of webrtc doesn't affect DataChannels.

I have not yet been able to look at the link you sent since it requires a mac, but I will take a look when I get a chance.

Thanks,
/Stefan

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/discuss-webrtc/76d365ac-e27f-426c-a110-acd85cf5db3a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Sebastian Kummer

unread,
Jun 23, 2015, 7:10:09 AM6/23/15
to discuss...@googlegroups.com

Justin Uberti

unread,
Jun 23, 2015, 4:03:29 PM6/23/15
to discuss-webrtc
It's unclear whether ECN info is exposed to userland, or used at all for non-TCP flows. Do you know if there is an API in iOS9 for this?

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.

Harald Alvestrand

unread,
Jun 23, 2015, 4:35:00 PM6/23/15
to discuss...@googlegroups.com

Ecn has been in linux kernels for years. Used to default off, think it may have changed recently. Dont rrmrmber abt Windows support. Codel is å routeer feature.

Sebastian Kummer

unread,
Jun 23, 2015, 8:32:52 PM6/23/15
to discuss...@googlegroups.com
I went through the talk once again and it became clear that there is no need to request ECN support in the application itself - ECN will just be enabled by default in iOS 9 and OSX 10.11 (http://wan.poly.edu/pam2015/papers/4.pdf predicts a minimal risk). Hopefully, other platforms will follow that priciple if Apple's experiments succeeds.

Unfortunately, it seems like they are only speaking about TCP, but not about other protocols like SCTP or UDP (-> https://tools.ietf.org/html/rfc6679)

Justin Uberti

unread,
Jun 24, 2015, 12:06:57 AM6/24/15
to discuss-webrtc
That's what I would expect. That said, enabling ECN for TCP is a significant step forward in the journey of getting ECN working everywhere.

On Tue, Jun 23, 2015 at 5:32 PM, Sebastian Kummer <sebastian...@gmail.com> wrote:
I went through the talk once again and it became clear that there is no need to request ECN support in the application itself - ECN will just be enabled by default in iOS 9 and OSX 10.11 (http://wan.poly.edu/pam2015/papers/4.pdf predicts a minimal risk). Hopefully, other platforms will follow that priciple if Apple's experiments succeeds.

Unfortunately, it seems like they are only speaking about TCP, but not about other protocols like SCTP or UDP (-> https://tools.ietf.org/html/rfc6679)

--

---
You received this message because you are subscribed to the Google Groups "discuss-webrtc" group.
To unsubscribe from this group and stop receiving emails from it, send an email to discuss-webrt...@googlegroups.com.

Sebastian Kummer

unread,
Aug 27, 2015, 3:42:33 AM8/27/15
to discuss-webrtc
By the way: Microsoft enabled ECN by default in Windows Server 2012 - see https://technet.microsoft.com/en-us/library/hh997028.aspx

Seems like they are ready too.
Reply all
Reply to author
Forward
0 new messages