Subject: [aqm] Catching up on diffserv markings

From: Dave Taht <[email-masked]>
Date: Wed, 21 Oct 2015 17:51:37 +0200

I unsubscribed from rmcat and rtcweb groups a while back after I got
overloaded, and appear.in started working so well, (for both ipv6 and
ipv4! I use it all day long now!), to focus on finishing up the new
"cake" qdisc/shaper/aqm/QoS system, among other things.

http://www.bufferbloat.net/projects/codel/wiki/CakeTechnical

Cake is now entering the testlab, and among other things, it has
support for the diffserv markings discussed in the related, now
concluded dart wg, but in ways somewhat different from that imagined
there. We have not got any good code in our testbeds yet to test
videoconferencing behavior, and we could use some, although it does
look like we can drive firefox with some remote control stuff with a
fixed video playback now....

Five questions:

1) Has anyone implemented or tested putting voice and video on two
different 5-tuples in any running code out there?

2) How about diffserv markings in general? Do any browsers or webrtc
capable software support what was discussed way back when?

3) Were diffserv marking changes eventually allowed on the same 5-tuple?

4) Did the ECN support that was originally in one draft or another
ever make it into any running code?

(yea, apple plans to turn on ecn universally in their next OS!)

5)  What else did I miss in the past year I should know about?

Feel free to contact me off list if these have already been discussed.
I have totally lost track of the relevant drafts.

Sincerely,

Dave Täht
I just lost five years of my life to making the edge
of the internet, and, wifi better.
And, now... the FCC wants to make my work illegal
for ordinary people to install.
https://www.gofundme.com/savewifi

---

From: Colin Perkins <[email-masked]>
Date: Thu, 22 Oct 2015 10:13:33 +0100

> On 22 Oct 2015, at 08:48, Pal Martinsen (palmarti) <[email-masked]> wrote:
> 
> 
>> On 21 Oct 2015, at 18:10, Harald Alvestrand <[email-masked] <mailto:[email-masked]>> wrote:
>> 
>> Den 21. okt. 2015 17:51, skrev Dave Taht:
>>> http://www.bufferbloat.net/projects/codel/wiki/CakeTechnical <http://www.bufferbloat.net/projects/codel/wiki/CakeTechnical>
>>> 
>> All VC systems I know of except WebRTC-based ones do it, AFAIK.
>> It’s putting them on the same that's unusual.
>> 
> That sounds like the world I am living in as well.
> 
> 
>> I know Hangouts did something like that internally, on the controlled
>> network. But not according to spec.
>> 
>> Yes, with caveats. draft-ietf-tsvwg-rtcweb-qos has the table.
>> 
>> I don't know. I think we lost it from the docs.
>> 
> So how would ECN work on UDP? I do not think the necessary bits from the IP header are available for the application to do anything. I do think Linux supports this, have not tested.
> 
> And what about the network, would it support UDP when setting the ECN bits? Probably a configuration related problem if not supported.

RFC 6679 describes how to use ECN with RTP on UDP, although as you say there are implementation difficulties on some platforms. I’m not sure whether there are implementations. 

>> For TCP and SCTP congestion controllers, we're back to one DSCP marking
>> per flow, and resetting the congestion control state if DSCP marking
>> changes.
>> 
> 
> There is a new ICE wg. It was created so “network people” could participate without the overhead of listening to the SDP related discussions. (https://datatracker.ietf.org/wg/ice/charter/ <https://datatracker.ietf.org/wg/ice/charter/>)
> 
> .-.
> Pål-Erik
> 
>>> 
>> They're not finished still :-)
>> 
>>> 
>>> Sincerely,
>>> 
>>> Dave Täht
>>> https://www.gofundme.com/savewifi <https://www.gofundme.com/savewifi>
>>> 
>>> _______________________________________________
>>> rtcweb mailing list
>>> [email-masked]
>>> https://www.ietf.org/mailman/listinfo/rtcweb
>>> 
>> 
>> _______________________________________________
>> rtcweb mailing list
>> [email-masked] <mailto:[email-masked]>
>> https://www.ietf.org/mailman/listinfo/rtcweb <https://www.ietf.org/mailman/listinfo/rtcweb>
> _______________________________________________
> rtcweb mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/rtcweb

-- 
Colin Perkins
https://csperkins.org/

---

From: Christian Huitema <[email-masked]>
Date: Thu, 22 Oct 2015 20:02:21 +0000

On Thursday, October 22, 2015 2:14 AM, Colin Perkins wrote:
>> On 21 Oct 2015, at 18:10, Harald Alvestrand <[email-masked]> wrote:
> ...

Several ports is common, but you have to consider priority issues. In a video conference, you want voice and video to be in sync, so the user sees the lips moving at the same time as the corresponding sound is heard. In fact, you want to see the lip moving slightly before you hear the sound. If voice arrives before video, many systems will delay the playback in order to achieve lip synchronization. There is not a whole lot to be gained by sending real-time voice "faster" than "video."

Dave did not ask the question, but the Cake document also mentions placing game traffic in the voice priority class. Note that Xbox One, the game traffic is encrypted with IPSEC, either natively over IPv6, or often tunneled over a single UDP port for IPv4 (http://www.nanog.org/sites/default/files/wed.general.palmer.xbox_.47.pdf). 

-- Christian Huitema

---

From: Jonathan Morton <[email-masked]>
Date: Fri, 23 Oct 2015 16:29:28 +0300

> On 22 Oct, 2015, at 22:54, Justin Uberti <[email-masked]> wrote:
> 
> At present I'm not aware of any widely-deployed OS where an app can read the received ECN markings. 

I have personally verified that this is possible (for UDP) on Linux - we were investigating the feasibility of adding ECN to uTP (ie. BitTorrent).  The code looks horrid, but what raw sockets code doesn’t?

 - Jonathan Morton

---

From: "Piers O'Hanlon" <[email-masked]>
Date: Thu, 29 Oct 2015 15:25:38 +0000

I implemented some prototype software that read and set ECN for UDP packets
whilst working on RFC6679, but there's no published open-source code I'm
aware of that fully implements RFC6679. I reported my experiences to the
AVT list back in 2011, and I've updated them here:

To set ECN on Linux, BSD and OSX one can use IP_TOS socket option, with the
setsockopt() call, to set the relevant ECN bits of the TOS byte. On Windows
one can use a similar technique though firstly one has to enable TOS byte
setting by enabling a particular Registry key ( DisableUserTOSSetting=0
(see
https://msdn.microsoft.com/en-us/library/windows/desktop/dd874008%28v=vs.85%29.aspx
One could also probably use the libpcap write functionality.

To obtain the ECN bits from a packet one needs a mechanism to retrieve the
ECN bits from each packet. On Linux, one needs to firstly set the
IP_RECVTOS socket option on the receiving socket, and use the recvmsg()
call to receive a packet, and then retrieve the TOS byte from the
associated csmg structure returned by the recvmsg() call. This still works
with linux-4.2.3. On OSX/BSD there are no suitable socket options to
retrieve the ECN/TOS bits and one cannot use raw sockets as they do not
function for UDP/TCP sockets (they do work with ICMP), so one has to use
alternatives such the bpf interface, or a REDIRECT socket. Whilst on
Windows it seems that the only way to retrieve the ECN bits is via a raw
socket, or custom NDIS driver, though it's possible there's an API I'm
missing.

On 22 October 2015 at 20:54, Justin Uberti <[email-masked]> wrote:

> iOS9 added support for this within the kernel, and it's used for TCP, but
> not exposed to userspace. There is an open Radar bug asking for this info
> to be exposed to userspace.
>
> FWIW, Chrome supports setting the DSCP markings if you set a magic
> parameter. But it's not on by default, mainly because we've never done the
> auditing necessary to ensure this doesn't randomly break in various
> dimly-lit parts of the internet.
>
> On Thu, Oct 22, 2015 at 2:13 AM, Colin Perkins <[email-masked]> wrote:
>
>> So how would ECN work on UDP? I do not think the necessary bits from the
>> IP header are available for the application to do anything. I do think
>> Linux supports this, have not tested.
>>
>> And what about the network, would it support UDP when setting the ECN
>> bits? Probably a configuration related problem if not supported.
>>
>>
>> RFC 6679 describes how to use ECN with RTP on UDP, although as you say
>> there are implementation difficulties on some platforms. I’m not sure
>> whether there are implementations.
>>
>>
>> There is a new ICE wg. It was created so “network people” could
>> participate without the overhead of listening to the SDP related
>> discussions. (https://datatracker.ietf.org/wg/ice/charter/)
>>
>> .-.
>> Pål-Erik
>>
>>

---

From: Harald Alvestrand <[email-masked]>
Date: Wed, 21 Oct 2015 18:10:53 +0200

All VC systems I know of except WebRTC-based ones do it, AFAIK.
It's putting them on the same that's unusual.

---

From: "Pal Martinsen (palmarti)" <[email-masked]>
Date: Thu, 22 Oct 2015 07:48:56 +0000

On 21 Oct 2015, at 18:10, Harald Alvestrand <[email-masked]<mailto:[email-masked]>> wrote:

Five questions:

There is a new ICE wg. It was created so “network people” could participate without the overhead of listening to the SDP related discussions. (https://datatracker.ietf.org/wg/ice/charter/)

.-.
Pål-Erik

Sincerely,

Dave Täht

_______________________________________________
rtcweb mailing list
[email-masked]<mailto:[email-masked]>
https://www.ietf.org/mailman/listinfo/rtcweb

---

From: Justin Uberti <[email-masked]>
Date: Thu, 22 Oct 2015 12:54:57 -0700

At present I'm not aware of any widely-deployed OS where an app can read
the received ECN markings.

---

From: Loganaden Velvindron <[email-masked]>
Date: Fri, 23 Oct 2015 17:31:56 +0400

On Thu, Oct 22, 2015 at 11:54 PM, Justin Uberti <[email-masked]> wrote:

> dimly-lit ? You mean regions like Africa ?

---

From: Sebastian Moeller <[email-masked]>
Date: Tue, 27 Oct 2015 09:06:41 +0100

Hi Justin,

On Oct 22, 2015, at 21:54 , Justin Uberti <[email-masked]> wrote:

> iOS9 added support for this within the kernel, and it's used for TCP, but not exposed to userspace. There is an open Radar bug asking for this info to be exposed to userspace.
> 
> FWIW, Chrome supports setting the DSCP markings if you set a magic parameter. But it's not on by default, mainly because we've never done the auditing necessary to ensure this doesn't randomly break in various dimly-lit parts of the internet.

	Slightly related question, is this DSCP marking capability restricted to webrtc packets or is there a way to make chrome use (arbitrary) DSCP marks for all its packets? For exercising different priority banding schemes such an option would be perfect (say to test whether a aqm+qos system will allow snappy browsing even with heavy download/upload/bittorrent traffic in other priority bands; this test is especially interesting if all traffic sources can reside on the same host, as this is a quite common set-up in home networks, one computer that does everything concurrently and where the users still want a decent browsing experience).

Best Regards
	Sebastian

> Cake mailing list
> [email-masked]
> https://lists.bufferbloat.net/listinfo/cake

---

From: Justin Uberti <[email-masked]>
Date: Tue, 27 Oct 2015 09:16:17 -0700

On Tue, Oct 27, 2015 at 1:06 AM, Sebastian Moeller <[email-masked]> wrote:

> > iOS9 added support for this within the kernel, and it's used for TCP,
> but not exposed to userspace. There is an open Radar bug asking for this
> info to be exposed to userspace.
> >
>         Slightly related question, is this DSCP marking capability
> restricted to webrtc packets or is there a way to make chrome use
> (arbitrary) DSCP marks for all its packets? For exercising different
> priority banding schemes such an option would be perfect (say to test
> whether a aqm+qos system will allow snappy browsing even with heavy
> download/upload/bittorrent traffic in other priority bands; this test is
> especially interesting if all traffic sources can reside on the same host,
> as this is a quite common set-up in home networks, one computer that does
> everything concurrently and where the users still want a decent browsing
> experience).
>

The option that currently exists only works for WebRTC packets.

---

From: Sebastian Moeller <[email-masked]>
Date: Tue, 27 Oct 2015 18:04:59 +0100

Hi Justin,

> The option that currently exists only works for WebRTC packets. 

Ah, thanks, that is a pity. It would be really sweet for testing different qos systems. I guess on a linux machine I should e able to fake it with a local iptable rule…

Best Regards
	Sebastian