Native IPv6 packets too big
Shadow Hawkins on Saturday, 10 July 2010 12:44:58
I have a local network of three machines, connected to a switch and accesspoint. A server (wired), a workstation (wired) and a laptop (wireless). They are on the same subnet.
When I transfer files from one machine to another via IPv4, all works great. Packetsizes are normal (length: 1448), and transferrate is limited by connection-speed.
However, when I use IPv6, transfarerate is about 13-25 KB/s! And the packetsizes are way too big: 2856! Here is a tcpdump-output from a filetransfer over scp:
12:38:42.793365 IP6 2001:14b8:16c::10.60917 > 2001:14b8:16c::5.22: Flags [S], seq 1670165922, win 5760, options [mss 1440,sackOK,TS val 68492 ecr 0,[|tcp]>
12:38:42.793433 IP6 2001:14b8:16c::5.22 > 2001:14b8:16c::10.60917: Flags [S.], seq 3034187951, ack 1670165923, win 5712, options [mss 1440,sackOK,TS val 2565949996 ecr 68492,[|tcp]>
12:38:42.793455 IP6 2001:14b8:16c::10.60917 > 2001:14b8:16c::5.22: Flags [.], ack 1, win 45, options [nop,nop,TS val 68492 ecr 2565949996], length 0
12:38:42.801838 IP6 2001:14b8:16c::5.22 > 2001:14b8:16c::10.60917: Flags [P.], seq 1:33, ack 1, win 45, options [nop,nop,TS val 2565949998 ecr 68492], length 32
[ ... ]
12:39:02.011108 IP6 2001:14b8:16c::5.22 > 2001:14b8:16c::10.60917: Flags [.], seq 24617:26045, ack 2008, win 107, options [nop,nop,TS val 2565954800 ecr 70414], length 1428
12:39:02.011119 IP6 2001:14b8:16c::10.60917 > 2001:14b8:16c::5.22: Flags [.], ack 26045, win 417, options [nop,nop,TS val 70414 ecr 2565954800], length 0
12:39:02.011127 IP6 2001:14b8:16c::5.22 > 2001:14b8:16c::10.60917: Flags [P.], seq 26045:27473, ack 2008, win 107, options [nop,nop,TS val 2565954800 ecr 70414], length 1428
12:39:02.011134 IP6 2001:14b8:16c::10.60917 > 2001:14b8:16c::5.22: Flags [.], ack 27473, win 439, options [nop,nop,TS val 70414 ecr 2565954800], length 0
12:39:02.011392 IP6 truncated-ip6 - 2894 bytes missing!5b2:14b8:16c::5.22 > 2001:14b8:16c::10.60917: Flags [.], seq 25704:29988, ack 1, win 107, options [nop,nop,TS val 2565954800 ecr 70414], length 4284
12:39:02.211889 IP6 2001:14b8:16c::5.22 > 2001:14b8:16c::10.60917: Flags [.], seq 27473:28901, ack 2008, win 107, options [nop,nop,TS val 2565954851 ecr 70414], length 1428
12:39:02.211922 IP6 2001:14b8:16c::10.60917 > 2001:14b8:16c::5.22: Flags [.], ack 28901, win 462, options [nop,nop,TS val 70434 ecr 2565954851], length 0
12:39:02.212076 IP6 truncated-ip6 - 1466 bytes missing!5b2:14b8:16c::5.22 > 2001:14b8:16c::10.60917: Flags [.], seq 29988:32844, ack 1, win 107, options [nop,nop,TS val 2565954851 ecr 70434], length 2856
As you can see, after just a few packets of normal length, the server-side starts to send too big packets.
Does anyone know why? I have search the internet, but came up empty!
All machines have different NICs, different OS and different kernel. It does not matter where I copy to or from, it's the same thing everywhere!
I really hope you can help!
-- vidar
Native IPv6 packets too big
Jeroen Massar on Saturday, 10 July 2010 13:38:07
What Operating Systems (distro,name,kernel versions) are involved?
Can you provide the "ifconfig" or "ip link show" output the involved interfaces?
Generally your MTU should be 1500 on Ethernet; unless you have jumboframes enabled on your switch and configured this exactly the same on all hosts that are connected to it
Also, if you have a Linux-based system amongst them, install and use tracepath6 to see what the routes think the packet sizes are.
'ip nei sho' on a Linux based system might also reveal per-destination MTU changes.
And lastly, do not forget to check your firewall rules which might modify things.
Native IPv6 packets too big
Shadow Hawkins on Saturday, 10 July 2010 18:27:46
Laptop:
Name: Ubuntu 10.04 64bit - 2.6.32-23-generic #37-Ubuntu SMP
ip link show:
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 0c:ee:e6:87:ed:80 brd ff:ff:ff:ff:ff:ff
ip -6 addr show:
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:14b8:16c::14/64 scope global
valid_lft forever preferred_lft forever
inet6 2001:14b8:16c:0:eee:e6ff:fe87:ed80/64 scope global dynamic
valid_lft 2591322sec preferred_lft 604122sec
inet6 fe80::eee:e6ff:fe87:ed80/64 scope link
valid_lft forever preferred_lft forever
ip nei sho:
fe80::20c:42ff:fe41:2605 dev eth1 lladdr 00:0c:42:2b:85:e1 router STALE
2001:14b8:16c::5 dev eth1 lladdr 00:26:18:26:a1:27 router REACHABLE
2001:14b8:16c::10 dev eth1 lladdr 00:24:8c:53:38:fb REACHABLE
tracepath6 -n 2001:14b8:16c::10:
1?: [LOCALHOST] pmtu 1500
1: 2001:14b8:16c::10 2.805ms reached
1: 2001:14b8:16c::10 5.315ms reached
Resume: pmtu 1500 hops 1 back 64
(The same for ::5)
--------------
Server:
Name: Debian Lenny (5.0.5) 64bit - 2.6.30 (own config, no patches)
ip link show:
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:26:18:26:a1:27 brd ff:ff:ff:ff:ff:ff
ip -6 addr show:
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:14b8:16c::5/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::226:18ff:fe26:a127/64 scope link
valid_lft forever preferred_lft forever
ip nei sho:
fe80::20c:42ff:fe41:2605 dev eth1 lladdr 00:0c:42:2b:85:e1 router REACHABLE
fe80::224:8cff:fe53:38fb dev eth1 lladdr 00:24:8c:53:38:fb STALE
2001:14b8:16c::14 dev eth1 lladdr 0c:ee:e6:87:ed:80 REACHABLE
2001:14b8:16c::10 dev eth1 lladdr 00:24:8c:53:38:fb REACHABLE
2001:14b8:16c::1 dev eth1 lladdr 00:0c:42:41:26:05 router REACHABLE
fe80::eee:e6ff:fe87:ed80 dev eth1 lladdr 0c:ee:e6:87:ed:80 REACHABLE
tracepath6 -n 2001:14b8:16c::10:
1?: [LOCALHOST] pmtu 1500
1: 2001:14b8:16c::10 0.218ms reached
1: 2001:14b8:16c::10 0.278ms reached
Resume: pmtu 1500 hops 1 back 64
--------------
Workstation:
Name: Ubuntu 9.10 64bit - 2.6.31-22-generic #60-Ubuntu SMP
ip link show:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:24:8c:53:38:fb brd ff:ff:ff:ff:ff:ff
ip -6 addr show:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:14b8:16c::10/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::224:8cff:fe53:38fb/64 scope link
valid_lft forever preferred_lft forever
ip nei sho:
fe80::eee:e6ff:fe87:ed80 dev eth0 lladdr 0c:ee:e6:87:ed:80 REACHABLE
fe80::20c:42ff:fe41:2605 dev eth0 lladdr 00:0c:42:2b:85:e1 router STALE
2001:14b8:16c::5 dev eth0 lladdr 00:26:18:26:a1:27 router REACHABLE
2001:14b8:16c::14 dev eth0 lladdr 0c:ee:e6:87:ed:80 REACHABLE
2001:14b8:16c::1 dev eth0 lladdr 00:0c:42:2b:85:e1 router STALE
tracepath6 -n 2001:14b8:16c::5:
1?: [LOCALHOST] pmtu 1500
1: 2001:14b8:16c::5 0.207ms reached
1: 2001:14b8:16c::5 0.151ms reached
Resume: pmtu 1500 hops 1 back 64
I have edited out unused NICs and IPv4.
There are no firewalls between (they are on the same subnet).
-- vidar
Native IPv6 packets too big
Jeroen Massar on Saturday, 10 July 2010 19:02:56
Looks fine to me, only thing I can think of is a SWITCH which is messing things up.
Can you try:
# ip ro list table all
Before and after the transfer? That should show bit more details about the neighbors.
Native IPv6 packets too big
Shadow Hawkins on Saturday, 10 July 2010 19:08:12
Before transfer:
Server:
local ::1 via :: dev lo proto none metric 0 mtu 16436 rtt 40ms rttvar 40ms cwnd 4 advmss 16376 hoplimit 4294967295
local 2001:14b8:16c:: via :: dev lo proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local 2001:14b8:16c::5 via :: dev lo proto none metric 0 mtu 16436 rtt 110ms rttvar 110ms cwnd 7 advmss 16376 hoplimit 4294967295
2001:14b8:16c::10 via 2001:14b8:16c::10 dev eth1 metric 0
cache mtu 1500 rtt 110ms rttvar 70ms ssthresh 4 cwnd 5 advmss 1440 hoplimit 4294967295
2001:14b8:16c::/64 dev eth1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
local fe80:: via :: dev lo proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::226:18ff:fe26:a127 via :: dev lo proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
fe80::/64 dev eth1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
ff00::/8 dev eth1 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
default via 2001:14b8:16c::1 dev eth1 metric 1 mtu 1500 advmss 1440 hoplimit 4294967295
unreachable default dev lo table unspec proto kernel metric -1 error -101 hoplimit 255
Workstation:
2001:14b8:16c::5 via 2001:14b8:16c::5 dev eth0 metric 0
cache mtu 1500 rtt 325ms rttvar 275ms cwnd 5 advmss 1440 hoplimit 4294967295
2001:14b8:16c::/64 dev eth0 proto kernel metric 256 expires 2591660sec mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
default via 2001:14b8:16c::1 dev eth0 metric 1 mtu 1500 advmss 1440 hoplimit 4294967295
default via fe80::20c:42ff:fe41:2605 dev eth0 proto kernel metric 1024 expires 1460sec mtu 1500 advmss 1440 hoplimit 4294967295
unreachable default dev lo table unspec proto kernel metric -1 error -101 hoplimit 255
local ::1 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local 2001:14b8:16c::10 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::224:8cff:fe53:38fb via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::250:56ff:fec0:1 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::250:56ff:fec0:8 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
ff00::/8 dev eth0 table local metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
After transfer:
Server:
local ::1 via :: dev lo proto none metric 0 mtu 16436 rtt 40ms rttvar 40ms cwnd 4 advmss 16376 hoplimit 4294967295
local 2001:14b8:16c:: via :: dev lo proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local 2001:14b8:16c::5 via :: dev lo proto none metric 0 mtu 16436 rtt 110ms rttvar 110ms cwnd 7 advmss 16376 hoplimit 4294967295
2001:14b8:16c::10 via 2001:14b8:16c::10 dev eth1 metric 0
cache mtu 1500 rtt 110ms rttvar 70ms ssthresh 4 cwnd 5 advmss 1440 hoplimit 4294967295
2001:14b8:16c::/64 dev eth1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
local fe80:: via :: dev lo proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::226:18ff:fe26:a127 via :: dev lo proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
fe80::/64 dev eth1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
ff00::/8 dev eth1 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
default via 2001:14b8:16c::1 dev eth1 metric 1 mtu 1500 advmss 1440 hoplimit 4294967295
unreachable default dev lo table unspec proto kernel metric -1 error -101 hoplimit 255
Workstation:
2001:14b8:16c::5 via 2001:14b8:16c::5 dev eth0 metric 0
cache mtu 1500 rtt 425ms rttvar 500ms cwnd 5 advmss 1440 hoplimit 4294967295
2001:14b8:16c::/64 dev eth0 proto kernel metric 256 expires 2591603sec mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
default via 2001:14b8:16c::1 dev eth0 metric 1 mtu 1500 advmss 1440 hoplimit 4294967295
default via fe80::20c:42ff:fe41:2605 dev eth0 proto kernel metric 1024 expires 1403sec mtu 1500 advmss 1440 hoplimit 4294967295
unreachable default dev lo table unspec proto kernel metric -1 error -101 hoplimit 255
local ::1 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local 2001:14b8:16c::10 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::224:8cff:fe53:38fb via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::250:56ff:fec0:1 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
local fe80::250:56ff:fec0:8 via :: dev lo table local proto none metric 0 mtu 16436 advmss 16376 hoplimit 4294967295
ff00::/8 dev eth0 table local metric 256 mtu 1500 advmss 1440 hoplimit 4294967295
unreachable default dev lo table unspec proto kernel metric -1 error -101 hoplimit 255
I do not know what I am looking for, but here is the output.
Native IPv6 packets too big
Jeroen Massar on Saturday, 10 July 2010 19:54:38 I do not know what I am looking for, but here is the output.
These two lines:
2001:14b8:16c::10 via 2001:14b8:16c::10 dev eth1 metric 0 cache mtu 1500 rtt 110ms rttvar 70ms ssthresh 4 cwnd 5 advmss 1440 hoplimit 4294967295
2001:14b8:16c::5 via 2001:14b8:16c::5 dev eth0 metric 0 cache mtu 1500 rtt 425ms rttvar 500ms cwnd 5 advmss 1440 hoplimit 4294967295
Aka what the server thinks of the client and vice versa. As you can see their MTU's are both correctly set to 1500, advmss is 1440 which is also correct, and actually there is nothing wrong there.
The only thing I can think of is that either your NIC, cabling or switch is causing broken packets, it doesn't look like it is your kernel... (at least from this data).
You might want to try different kernel versions though.
Native IPv6 packets too big
Shadow Hawkins on Thursday, 30 September 2010 10:05:17
Hi Jeroen,
thanks for the help on this. After some more test, and upgrading from Debian Lenny to Ubuntu Server 10.04 LTS on the server, half of the problems went away! Then I tried to boot up different clients from Sysrescd (Live CD), and doing the same test. And the results varied!
O\In other words: It was the Linux-kernel, and a faulty atl1e driver.
So I did a Google search, and it seems I am not the only one:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=558426
And, it is fixed:
ChangeLog-2.6.32.7: atl1e:disable NETIF_F_TSO6 for hardware limit
ChangeLog-2.6.32.16: atl1e: Allow TX checksum offload and TSO to be disabled and reenabled
The only client I now have with a problem is the Ubuntu 9.10 desktop, running 2.6.31-22-generic #65-Ubuntu SMP.
Posting is only allowed when you are logged in. |