Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Nov 2003 12:18:15 +0200
From:      "Gerasimos Dimitriadis" <gedimitr@auth.gr>
To:        <freebsd-net@freebsd.org>
Subject:   Frame Overhead Discard Problem with Encapsulating Netgraph Node
Message-ID:  <000e01c3b33d$7128c4a0$5d13cf9b@ee.auth.gr>

next in thread | raw e-mail | index | archive | help
Dear all,

I have built a netgraph node that allows the formation of multihop ad =
hoc wireless networks in FreeBSD. This node employs routing tables based =
on hardware addresses, in order to give the impression to upper layers =
that all the network nodes are within one hop. This netgraph node =
accepts all traffic to the wireless interface and encapsulates it using =
a custom header. The encapsulated packet propagates towards its =
destination according to the routing tables maintained at each =
intermediate host, and when it reaches its final destination the =
netgraph node deencapsulates it and sends it to the upper layers (upper =
hook of ng_ether node).

This scheme worked fine with FreeBSD 4.7. However, when I ported it to =
5.1 it was broken. I found out that the received encapsulated frames =
were discarded, because their size were longer than accepted / expected =
by the kernel (The if_ethersubr.c makes these checks in 5.1). The =
message appearing was:

wi0: discard oversize frame (len 1536 > max 1514)

no matter if I reduced the interface MTU, this message persists.

I would like to ask you how can I tell the upper layers (i.e. IP, =
TCP/UDP) to leave more size in a packet, so that when my header is =
added, the total length does not exceed MTU + ether_header_length?

Also, if there is another solution to my problem I would be grateful if =
you could inform me about it

Thank you very much,

Gerasimos Dimitriadis (gedimitr at auth.gr)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000e01c3b33d$7128c4a0$5d13cf9b>