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
next 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.