netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Network QoS support in applications
@ 2010-01-26  8:27 Kalle Valo
       [not found] ` <87k4v5nuej.fsf-ySPBbPOLdCfMApvqMRVM/A@public.gmane.org>
                   ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Kalle Valo @ 2010-01-26  8:27 UTC (permalink / raw)
  To: netdev-u79uwXL29TY76Z2rM5mHXA; +Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA

Hello,

I have been trying to understand how applications should use network
QoS. My interest have been mostly from wireless perspective,
especially how to utilise WMM and U-APSD properly, but naturally this
applicable to all networks.

I have done some research about this, but I haven't managed to get
anywhere. For example, from my point of view DiffServ is just one big
mess and I can't see how in practise it can help applications.

I wrote a small wiki page to sum up my findings:

http://wireless.kernel.org/en/developers/Documentation/qos

I would like to clear up all this by and I'm willing to write a
document for application developers about network QoS. But I need help
to understand what's the proper way to mark different QoS
prioritities.

In the wiki page I have tried to come up with different possible
solutions (copied below), but I'm sure there are even more ways.

Please comment. I would like to get some understanding about this.


----------------------------------------------------------------------
Solution 1: SO_PRIORITY with values 0-7

Easy, applications need to just use setsockopt() and be done with it.
It's unknown how widely supported values 0-7 are and the exact meaning
of them, but at least they make sense (0 default, 1 lowest priority
and 7 highest priority). The problem is that the priority is used only
in the first link, rest of the route is not able to benefit from the
classification.

Pros:

    * easy for applications
    * works with both IPv4 and IPv6 

Cons:

    * only visible in in the first L2 link, not visible to upper
      layers (IP)
    * no well defined meaning for the priority values 

Solution 2: SO_PRIORITY with values 256-263

mac80211 uses these values to map the packets to DSCP classes. Most
probably non other stack or driver (even non-wifi ones) use these
values. Otherwise similar as Solution 1.

Pros:

    * easy for applications
    * works with both IPv4 and IPv6 

Cons:

    * only visible in in the first L2 link, not visible to upper
      layers (IP)
    * no well defined meaning for the priority values
    * using values over 256 is not intuitive 

Solution 3: IPv4 DSCP field with values 0-7

Most, if not all, wifi drivers should use it. And, in theory, the
receiver should also benefit from the classification, unless ISPs
modify it of course. But the standardisation for IPv4 QoS bits is a
mess.

Pros:

    * visible in IP layer (but ISPs change the value often?) 

Cons:

    * applications need to handle IPv4 and IPv6 separately 
----------------------------------------------------------------------

-- 
Kalle Valo
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2010-05-31 20:30 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-26  8:27 Network QoS support in applications Kalle Valo
     [not found] ` <87k4v5nuej.fsf-ySPBbPOLdCfMApvqMRVM/A@public.gmane.org>
2010-01-26 11:30   ` Patrick McHardy
     [not found]     ` <4B5ED254.7010104-dcUjhNyLwpNeoWH0uzbU5w@public.gmane.org>
2010-01-26 11:51       ` Kalle Valo
     [not found]         ` <877hr5nkx0.fsf-ySPBbPOLdCfMApvqMRVM/A@public.gmane.org>
2010-01-26 11:59           ` Patrick McHardy
2010-01-26 12:16           ` David Miller
2010-01-26 12:56             ` Kalle Valo
2010-01-26 13:06               ` David Miller
     [not found]                 ` <20100126.050645.184040277.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2010-01-26 13:47                   ` Kalle Valo
2010-01-26 14:02                     ` Dunc
     [not found]                       ` <4B5EF5DF.2070005-9b9L1Hpe0sBAfugRpC6u6w@public.gmane.org>
2010-01-26 14:27                         ` Kalle Valo
     [not found]                           ` <87iqaplz5a.fsf-ySPBbPOLdCfMApvqMRVM/A@public.gmane.org>
2010-01-26 21:54                             ` Edgar E. Iglesias
2010-01-27  7:11                               ` Kalle Valo
2010-01-27  1:57                       ` Zhu Yi
2010-01-27 13:24                       ` Benny Amorsen
2010-03-11 19:21                       ` Philip A. Prindeville
     [not found]                         ` <4B9942A7.40205-9z15yex7P+UJvtFkdXX2HpqQE7yCjDx5@public.gmane.org>
2010-03-11 19:27                           ` David Miller
     [not found]                             ` <20100311.112754.142886660.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2010-03-11 19:29                               ` Philip A. Prindeville
2010-05-19  0:04                                 ` Philip A. Prindeville
     [not found]                                   ` <4BF32B2B.6010202-9z15yex7P+UJvtFkdXX2HpqQE7yCjDx5@public.gmane.org>
2010-05-31 19:30                                     ` Ben Gardiner
2010-05-31 20:28                                       ` Philip Prindeville
2010-01-26 14:43                     ` Rémi Denis-Courmont
     [not found]               ` <87wrz5m3cd.fsf-ySPBbPOLdCfMApvqMRVM/A@public.gmane.org>
2010-01-26 13:06                 ` Henning Rogge
2010-01-27  6:59                   ` Kalle Valo
2010-01-26 15:29             ` Steven Blake
2010-01-27  7:03               ` Kalle Valo
2010-01-27 16:18 ` Olaf van der Spek
2010-03-11 18:56 ` Philip A. Prindeville

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).