public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: Sven Eckelmann <sven@narfation.org>
To: "b.a.t.m.a.n@lists.open-mesh.org"
	<b.a.t.m.a.n@lists.open-mesh.org>,
	"Martin Hundebøll" <martin@hundeboll.net>
Subject: [B.A.T.M.A.N.] Fragmentation and padding in batman-adv
Date: Mon, 01 Dec 2014 08:49:34 +0100	[thread overview]
Message-ID: <4472936.imSdHEx948@sven-edge> (raw)

[-- Attachment #1: Type: text/plain, Size: 2073 bytes --]

Hi,

I've just noticed that the padding by the underlying network protocol seems 
not to be handled by the fragmentation. Maybe Martin can correct me. I will 
now use following assumptions:

 * the fragmentation code is sending first the last part of the packet and
   tries to fill the complete skb (max 1400 byte)
 * the mtu of the underlying device is 1400
 * the minimum packet size (user data + eth header) of the underlying device
   is 70
 * the packet send by the user would end up to be 1401 bytes before
   fragmentation

Ok, then I would guess that the fragmentation code would try to generate 
fragments with the max_fragment_size 1366 (+headers of course, not sure why 
the code assumes that the ethernet header is part of the MTU). This would mean 
that the 1401 byte packet is split into a 1366 byte fragment (+header) and a 
35 byte fragment (+header).

But the 35 byte fragment containing the first part of the packet is (even with 
the headers) still smaller than the required packet size of the underlying 
device. Now some extra bytes are added as padding to the last fragment 
(containing the first part of the original packet).

The receiving node cannot merge the fragments anymore because the length of 
the last fragment skb will be too large and therefore the
total_size < chain->size.

Even when it could be merged (because of some bug in the size check) then the 
resulting packet would have a padding byte in the middle of of the original 
byte.

And just in case somebody has something against the imaginary 70 bytes padding 
(802.3 has 60): I had to work with virtual devices in the past which had a 
fixed MTU of ~1400 and a minimum packet size of ~1400.

And yes, I am fully aware of the workaround of using an extra virtual device 
between batman-adv and the actual device which only adds a header with the 
payload length and restores this length on the receiver site. This (or at 
least something similar) was used by me in the other project with the MTU/min 
packet size of ~1400 device.

Any comments, corrections?

Kind regards,
	Sven

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

             reply	other threads:[~2014-12-01  7:49 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-01  7:49 Sven Eckelmann [this message]
2014-12-01 12:25 ` [B.A.T.M.A.N.] Fragmentation and padding in batman-adv Martin Hundebøll
2014-12-01 13:31 ` Sven Eckelmann

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=4472936.imSdHEx948@sven-edge \
    --to=sven@narfation.org \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    --cc=martin@hundeboll.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox