[Bridge] Problem bridging frames with bridge and real interface MTU > 1527

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 23 May 2006 10:07:13 +0930
"Mark Zipp" <mark.r.zipp@xxxxxxxxx> wrote:

> Hi,
> 
> I'm doing some fault finding where we suspect that the (non-linux)
> device with the fault is generating frames with an MTU / maximum size
> greater than 1500 / 1518 bytes. This device is performing GRE
> tunneling, and it seems that it isn't performing fragmentation or
> PMTUD before it attempts to send a normal, 1500 byte IP packet with
> the GRE header out a GigE interface with a 1500 byte MTU.
> 
> I've been asked by the vendor of this device to perform some packet
> captures. As I have a Linux box with a couple of interfaces that
> support > 1500 byte MTUs (an Intel GigE, and a Netgear FA311 (that
> supports an MTU up to 2024 bytes)), I figured I could bridge this
> traffic through this Linux box, and then perform some packet captures
> on the bridge virtual interface.
> 
> I set that all up, and it seemed to all be ok. I set both the real
> interface MTUs to 2024 bytes, and when I added them into a bridge, the
> bridge inherited this MTU.
> 
> Unfortunately I found that when I attempted to forward frames through
> this bridge configuration, certain sized ones were silently dropped.
> As the devices attached to the bridge shouldn't be generating frames
> with an MTU larger than 1500 (this is our work around solution as a
> reference), it seems that with this 2024 bridge MTU, even normal 1500
> byte MTU frames are dropped.
> 
> Through experimentation, by sending packets  and changing the MTU of
> the real and bridge interfaces, it seems that the bridge will only
> forward frames up to 1527 bytes MTU. Fortunately I think this will be
> enough to diagnose the fault we are having.
> 
> Is this expected behaviour ? A maximum of 1527 bytes seems to be an
> unsual value for the maxiumum supported bridge MTU.

The only bridge related dropping is here in br_forward.c

int br_dev_queue_push_xmit(struct sk_buff *skb)
{
	/* drop mtu oversized packets except tso */
	if (packet_length(skb) > skb->dev->mtu && !skb_shinfo(skb)->tso_size)
		kfree_skb(skb);

Are you doing VLAN's?  There was a bug not fixed until 2.6.17 that didn't
account for VLAN header properly.

Are you doing filtering?  Some netfilter module might be dropping the packets.

[Index of Archives]     [Netdev]     [AoE Tools]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux