VLAN and jumbo frame woes

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

 



Assume the following:

A host joins in 2 VLANs (VLAN ID 10 and 20) via eth0,
eth0.10 and eth0.20.  All the participants of VLAN 10 are
equipped with 16K Jumbo-frame capable NICs, while some in
VLAN 20 have good old 1500byte NICs.  Thus
 # ifconfig eth0    mtu 16000
 # ifconfig eth0.10 mtu 16000
 # ifconfig eth0.20 mtu 1500
are needed.

Here, all the packets which eth0.20 receives have 16K
socket buffer, each of which are >90% unused.  This may
confuse buffer size calculations in various parts in our
network stack, for example:
  - __tcp_grow_window does not expand the window size as
   physical NIC of mtu 1500 case
  - sk->rmem_alloc is overestimated and the rx queue get
   easily overflowed.
(we are using 2.4 but 2.6 has same problems at a glance)

These can be worked around by copying received data to
a smaller socket buffer in the VLAN driver, but this
requires heavy operations like kmalloc/memcpy/kfree.  Other
solutions we are considering are:
  - fake skb->truesize in VLAN case
  - revise all (some of?) the rx code which refer to
   skb->truesize to take into account the VLAN cases
  - others?

What is the right way to solve this problem?  Any ideas?

-- 
Minoura Makoto <minoura@xxxxxxxxxxxxx>
Engineering Dept., VA Linux Systems Japan
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux