New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 44 users

Issue metadata

Status: Available
Owner: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug

Sign in to add a comment

Missing DSCP support on POSIX platforms

Reported by, Mar 15 2016 Back to list

Issue description

What steps will reproduce the problem?
1. Set "googDSCP: true" constraint in peer connection settings
2. Make audio/video call
3. Check the DiffServ field value of outgoing IP packets 

What is the expected result?
DiffServ field should have following value: 
100010 00 
(DSCP part of field should be equal to 100010 (34 dec, AF41)),
for packets with video data, and
101110 00 
(DSCP part of field should be equal to 101110 (34 dec, EF)),
for packets with audio data as per

What do you see instead?
DiffServ field has 000000 00 value for both audio and video packets.

What version of the product are you using? On what operating system?
Android platform. 

Please provide any additional information below.
Here is closely related issue for iOS platform:

190 KB View Download

Comment 1 by, Mar 15 2016

I experience this issue on relatively old version of WebRTC, but it seems that DSCP support is omitted on upstream version too:
int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
case OPT_DSCP:
  LOG(LS_WARNING) << "Socket::OPT_DSCP not supported.";
  return -1;

My proposal is to add support for this option for Android platform, as was shown there in
int PhysicalSocket::TranslateOption(Option opt, int* slevel, int* sopt) {
case OPT_DSCP:
  *slevel = IPPROTO_IP;
  *sopt = IP_TOS;

After this "fix" I've found, that WebRTC sets DSCP field value incorrectly:
it assigns DSCP value to DiffServ field directly (see attachment). 
183 KB View Download

Comment 2 by, Mar 15 2016

So, instead of direct assigning DSCP value to DiffServ field, we should shift it first: DSCP <<= 2; 

I think that we can ignore ECN part of DiffServ field for now, because its support is not implemented yet.
189 KB View Download

Comment 3 by, Mar 16 2016

Here is related patch:
Project Member

Comment 4 by, Mar 16 2016

honghaiz@, is the cl good to land now?
Project Member

Comment 5 by, Mar 16 2016

Yes, although you may need an owner approval (unless you are an owner yourself).

Comment 6 by, Mar 18 2016

Guys, please proceed with testing and commiting of this patchset, because I don't have enough privileges on your servers :)
Project Member

Comment 7 by, May 18 2016

How's going here?

Comment 8 by, May 19 2016

As I understood, proposed change potentially could break Chrome's DSCP support.
Could you please describe, how can I check it? 
Project Member

Comment 9 by, Oct 31 2016

Components: PeerConnection
Labels: OS-Android
Project Member

Comment 10 by, Nov 10 2016

Labels: EngTriaged
Status: Available
Summary: Missing DSCP support on POSIX platforms (was: Missing DSCP support on Android)
We can take over the CL (comment #3) when we come back to fixing DSCP. It only needs small changes.
Project Member

Comment 11 by, Nov 12 2016

 Issue 4951  has been merged into this issue.
Project Member

Comment 12 by, Dec 14 2016

Owner: ----

Sign in to add a comment