From: Alexander Aring <alex.aring@gmail.com>
To: netdev@vger.kernel.org
Cc: linux-wpan@vger.kernel.org, stephen@networkplumber.org,
jukka.rissanen@linux.intel.com
Subject: fq_codel with 802.15.4 6LoWPAN fragmentation issue
Date: Fri, 16 Jan 2015 13:02:35 +0100 [thread overview]
Message-ID: <20150116120232.GD10068@omega> (raw)
Hi,
when using "fq_codel" as network scheduler, I noticed an issue with IEEE
802.15.4 6LoWPAN fragmentation. The issue is that high payloads IPv6
packets are dropped.
I detected the issue on the sending side which segments the 6LoWPAN
packet into several fragments.
In the IEEE 802.15.4 6LoWPAN fragmentation we have a 6LoWPAN interface
(MTU 1280) on top of an IEEE 802.15.4 interface (MTU 127). The 6LoWPAN
fragmentation algorithm creates in the "ndo_start_xmit" netdev_ops
callback function of the 6LoWPAN interface new sk_buffs for the
underlaying IEEE 802.15.4 interface (as skb->dev) and sends them via a
dev_queue_xmit.
IEEE 802.15.4 is a very slow connection and after each transmit there is
an "interframe spacing time" which depends on frequency setting. In my
testcase, that's about ~500 us for a payload above 18 bytes. This is
done by calling netif_stop_queue for the interface and start a timer
after each transmitted frame according to the interframe spacing time.
When the timer fires, it wakes the queue again by calling
netif_wake_queue.
Now: What I am noticed with fq_codel is that the code at [0] will drop
high payloaded IPv6 packets. Of course, if we have an IPv6 packet of
more than 1280 bytes payload we have a fragmentation (IPv6
fragmentation) over a fragmentation (802.15.4 6LoWPAN fragmentation).
When I increase the "params->interval" parameter I can send a "longer"
IPv6 packet depending how much I increase the "params->interval"
parameter.
I assume that the "params->interval" which defaults to MS2TIME(100) is
too small. I further assume that at the beginning of fragmentation the
interval measurement starts "vars->first_above_time = now +
params->interval;" (line 247 at [0]) and while sending several fragments
with the above mentioned interframe spacing time, the sending takes too
long and the skb will be dropped.
My questions are:
- What's the best way to deal with something like that?
- Is there a way to set the "params->interval" _per interface_? So I can
change the default parameter to a suitable value in the "ndo_init"
callback of the 6LoWPAN interface.
Thanks in advance.
- Alex
[0] http://lxr.free-electrons.com/source/include/net/codel.h#L248
next reply other threads:[~2015-01-16 12:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-16 12:02 Alexander Aring [this message]
2015-01-16 12:57 ` fq_codel with 802.15.4 6LoWPAN fragmentation issue Eric Dumazet
2015-01-16 13:00 ` Eric Dumazet
2015-01-16 13:04 ` Eric Dumazet
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=20150116120232.GD10068@omega \
--to=alex.aring@gmail.com \
--cc=jukka.rissanen@linux.intel.com \
--cc=linux-wpan@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.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.