All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Wagner <wagi@monom.org>
To: linux-wireless@vger.kernel.org
Subject: QoS and DSCP
Date: Tue, 19 Aug 2008 10:46:53 +0200	[thread overview]
Message-ID: <48AA887D.5090307@monom.org> (raw)

Hi,

I was playing a bit with DSCP and my wireless setup. I don't know what 
the expected result should be there I'd like to ask you here what
is the expected result.

Server <---(ethernet)--> d-link AP <---(wireless)---> Desktop
192.168.100.1                                         192.168.202.198

On the server I have an icecast stream running on port 8000.

server# iptables -t mangle -A OUTPUT -p tcp --sport 8000 -j DSCP --set-dscp-class EF

The packets send from the AP to the desktop have the QoS Control Field Priority set
to 5:

Frame 13 (1622 bytes on wire, 1622 bytes captured)
PPI version 0, 84 bytes
IEEE 802.11 QoS Data, Flags: ......F.C
    Type/Subtype: QoS Data (0x28)
    Frame Control: 0x0288 (Normal)
    Duration: 48
    Destination address: IntelCor_9e:db:5d (00:1d:e0:9e:db:5d)
    BSS Id: D-Link_f0:b1:3c (00:1b:11:f0:b1:3c)
    Source address: D-Link_f0:b1:3c (00:1b:11:f0:b1:3c)
    Fragment number: 0
    Sequence number: 83
    Frame check sequence: 0xa06a35af [correct]
    QoS Control
        Priority: 5 (Video) (Video)
        ...0 .... = EOSP: Service period
        Ack Policy: Normal Ack (0x00)
        Payload Type: MSDU
        QAP PS Buffer State: 0x0
Logical-Link Control
Internet Protocol, Src: 192.168.100.1 (192.168.100.1), Dst: 192.168.202.198 
(192.168.202.198)
Transmission Control Protocol, Src Port: irdmi (8000), Dst Port: 32983 (32983), Seq: 
1449, Ack: 1, Len: 1448
Data (1448 bytes)

Now I'd like to prioritize frames from the desktop to the server as well.

After playing around with iptables & tc for a long time, I started to look 
into the code and a way I found to get my desktop to set the QoS 
Priority field is to use following iptables command:

desktop# iptables -t mangle -A POSTROUTING -p tcp --dport 8000 -j CLASSIFY --set-class 0:103

PPI version 0, 32 bytes
IEEE 802.11 QoS Data, Flags: .......TC
    Type/Subtype: QoS Data (0x28)
    Frame Control: 0x0188 (Normal)
    Duration: 44
    BSS Id: D-Link_f0:b1:3c (00:1b:11:f0:b1:3c)
    Source address: IntelCor_9e:db:5d (00:1d:e0:9e:db:5d)
    Destination address: D-Link_f0:b1:3c (00:1b:11:f0:b1:3c)
    Fragment number: 0
    Sequence number: 124
    Frame check sequence: 0xd60fe864 [correct]
    QoS Control
        Priority: 3 (Excellent Effort) (Video)
        Ack Policy: Normal Ack (0x00)
        Payload Type: MSDU
        Transmit Opportunity (TXOP) Limit Requested: 0x00
Logical-Link Control
Internet Protocol, Src: 192.168.202.198 (192.168.202.198), Dst: 192.168.100.1 (192.168.100.1)
Transmission Control Protocol, Src Port: 32983 (32983), Dst Port: irdmi (8000), Seq: 1, Ack: 1449, Len: 0

The argument '--set-class 0:103' is of course not really intuitive though after reading the code
it is clear why: they are magic! :)

wme.c: classify_1d

	/* skb->priority values from 256->263 are magic values to
	 * directly indicate a specific 802.1d priority.  This is used
	 * to allow 802.1d priority to be passed directly in from VLAN
	 * tags, etc.
	 */
	if (skb->priority >= 256 && skb->priority <= 263)
		return skb->priority - 256;


Trying the same trick as on the server with DSCP I had no success:

desktop# iptables -t mangle -A OUTPUT -p tcp --dport 8000 -j DSCP --set-dscp-class EF

No frame from the desktop has the QoS Priority field set. There is some code
in classify_1d which does something with DSCP but I haven't figured it out
how it is suppose to work.

So my question is, is my approach with iptables and DSCP supposed to work?

thanks,
daniel


             reply	other threads:[~2008-08-19  8:46 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-19  8:46 Daniel Wagner [this message]
2008-08-19  9:04 ` QoS and DSCP Johannes Berg
2008-08-19  9:11   ` Daniel Wagner
2008-08-19 11:23     ` Daniel Wagner
2008-08-19 12:05       ` Daniel Wagner
2008-08-19 13:44         ` [PATCH] Use only precedence level of DSCP field for frame classification Daniel Wagner
2008-08-19 13:59           ` Johannes Berg
2008-08-19 14:10             ` Daniel Wagner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48AA887D.5090307@monom.org \
    --to=wagi@monom.org \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.