Re: Odd tracepath and ping behavior when using a 9000 byte MTU

This is a discussion on Re: Odd tracepath and ping behavior when using a 9000 byte MTU within the Linux Networking forums, part of the Linux Forums category; John Stewart <john.stewart@noyb.com.invalid> wrote: > Summary: > I've recently switched my network to ...


Go Back   Usenet Forums > Linux Forums > Linux Networking

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-11-2004
Clifford Kite
 
Posts: n/a
Default Re: Odd tracepath and ping behavior when using a 9000 byte MTU

John Stewart <john.stewart@noyb.com.invalid> wrote:

> Summary:
> I've recently switched my network to gigabit. All the hardware is 9k
> jumbo frame clean. I can switch all the machines to a 9000 MTU and
> everything works great. But, if I run tracepath on my linux machine
> it decides the path MTU should be 1492. However if I set the MTU to
> 8996 or any MTU where size= 8x+4 then tracepath works fine.


> Details:
> MTU is set to 9000 via:
> ifconfig eth0 mtu 9000


> I run ttcp to send a few 32768 byte buffers and check the size of the
> on wire packets on the receiving end with ethereal. They're 9014
> bytes just like they're supposed to be.


> now I run tracepath and get the following output:
> tracepath 192.168.1.100
> 1: 192.168.1.103 (192.168.1.103) 0.099ms pmtu 9000
> 1: 192.168.1.103 (192.168.1.103) 0.018ms pmtu 8166
> 1: 192.168.1.103 (192.168.1.103) 0.015ms pmtu 4352
> 1: 192.168.1.103 (192.168.1.103) 0.016ms pmtu 2002
> 1: 192.168.1.103 (192.168.1.103) 0.013ms pmtu 1492
> 1: 192.168.1.100 (192.168.1.100) 0.347ms reached
> Resume: pmtu 1492 hops 1 back 1


> For some reason the sending machine seems to have decided it has to
> fragment the packets. And from the output it appears that it is doing
> it before it reaches the wire. From this point on the ttcp+ethereal
> test shows the on wire packet size as 1506. This behavior persists
> until I change the MTU. I.e. I think that it is remembering the
> "discovered" MTU for that route and using it for all subsequent
> connections.


If the sending machine is using PMTU Discovery as described in RFC 1191
then the receiving machine likely advertised a MSS of 8996, corresponding
to an MTU of 9014. The receiving machine starts with it's own 9000 MTU
and then tries, in descending order, the "plateaus" for the various
types of physical networks listed in that RFC which have MTUs less than
9000 and 9014, starting with 8166 (RFC 1042). When it finds one that
is an integral multiple of 8996

> But if I set the MTU to 8996. Or for that matter to any size between
> say 2k and 9k that is of the form size=8*x+4 (8996=8*1124+4) then
> tracepath works fine. example:
> ifconfig eth0 MTU 8996
> tracepath 192.168.1.100
> 1: 192.168.1.103 (192.168.1.103) 0.114ms pmtu 8996
> 1: 192.168.1.100 (192.168.1.100) 0.778ms reached
> Resume: pmtu 8996 hops 1 back 1


> Both before and after running tracepath the ttcp+ethereal test shows
> the on wire received packet size to be: 9010


> Some info on the machines in question:
> sending machine:
> motherboard: Tyan Tiger motherboard
> processors: dual Opteron 240
> NIC: Onboard intel gigabit
> Running: Gentoo Linux with kernel 2.6.4-r1 for AMD64
> Using the e1000 driver that came with the kernel with default
> settings.


> receiving machine:
> motherboard: MSI Pro266-TD Master-LR
> processors: Dual Intel tualatin PIIIs at 1.26 gHz
> NIC: Intel pro/1000 MT desktop adapter
> Running: Windows 2000
> Using the 6.01.03 drivers from Intel.


> switch: SMC 8508T


> And here's the results of additional testing using ping with the don't
> fragment flag set:


> immediately after setting an MTU of 9000 I do the following:
> ping -c 4 -M do -s 8968 192.168.1.100
> which succeeds:
> 8976 bytes from 192.168.1.100: icmp_seq=1 ttl=128 time=1.09 ms


> and then this:
> ping -c -4 -M do -s 8970 192.168.1.100
> which fails:
> From 192.168.1.103 icmp_seq=1 Frag needed and DF set (mtu = 8166)


> At this point the ttcp+ethereal test shows an on wire packet size of
> 8180 bytes.


> try again with the MTU at 8996:
> ping -c 4 -M do -s 8968 192.168.1.100
> success:
> 8976 bytes from 192.168.1.100: icmp_seq=1 ttl=128 time=1.12 ms


> ping -c 4 -M do -s 8970 192.168.1.100
> fails:
> From 192.168.1.103 icmp_seq=1 Frag needed and DF set (mtu = 8996)


> But notice it hasn't changed the MTU.


> Since the problem occurs with both ping and tracepath I'd guess it's
> not happening at the application level which leaves the network stack
> and the NIC driver.


> Does anyone have any ideas?
> Can anyone reproduce this?


> Thanks,


> John Stewart






--
Clifford Kite Email: "echo xvgr_yvahk-ccc@ri1.arg|rot13"
PPP-Q&A links, downloads: http://ckite.no-ip.net/
/* Bluffing in a poker game can win big; bluffing in a newsgroup
only attracts sharks. */
Reply With Quote
  #2 (permalink)  
Old 04-11-2004
Clifford Kite
 
Posts: n/a
Default Re: Odd tracepath and ping behavior when using a 9000 byte MTU

Clifford Kite <kite@see.signature.id> wrote:
> John Stewart <john.stewart@noyb.com.invalid> wrote:


>> Summary:
>> I've recently switched my network to gigabit. All the hardware is 9k
>> jumbo frame clean. I can switch all the machines to a 9000 MTU and
>> everything works great. But, if I run tracepath on my linux machine
>> it decides the path MTU should be 1492. However if I set the MTU to
>> 8996 or any MTU where size= 8x+4 then tracepath works fine.


>> Details:
>> MTU is set to 9000 via:
>> ifconfig eth0 mtu 9000


>> I run ttcp to send a few 32768 byte buffers and check the size of the
>> on wire packets on the receiving end with ethereal. They're 9014
>> bytes just like they're supposed to be.


>> now I run tracepath and get the following output:
>> tracepath 192.168.1.100
>> 1: 192.168.1.103 (192.168.1.103) 0.099ms pmtu 9000
>> 1: 192.168.1.103 (192.168.1.103) 0.018ms pmtu 8166
>> 1: 192.168.1.103 (192.168.1.103) 0.015ms pmtu 4352
>> 1: 192.168.1.103 (192.168.1.103) 0.016ms pmtu 2002
>> 1: 192.168.1.103 (192.168.1.103) 0.013ms pmtu 1492
>> 1: 192.168.1.100 (192.168.1.100) 0.347ms reached
>> Resume: pmtu 1492 hops 1 back 1


>> For some reason the sending machine seems to have decided it has to
>> fragment the packets. And from the output it appears that it is doing
>> it before it reaches the wire. From this point on the ttcp+ethereal
>> test shows the on wire packet size as 1506. This behavior persists
>> until I change the MTU. I.e. I think that it is remembering the
>> "discovered" MTU for that route and using it for all subsequent
>> connections.


> If the sending machine is using PMTU Discovery as described in RFC 1191
> then the receiving machine likely advertised a MSS of 8996, corresponding
> to an MTU of 9014. The receiving machine starts with it's own 9000 MTU
> and then tries, in descending order, the "plateaus" for the various
> types of physical networks listed in that RFC which have MTUs less than
> 9000 and 9014, starting with 8166 (RFC 1042). When it finds one that
> is an integral multiple of 8996


Sorry, forget this. I was trying to learn while composing a reply and
accidentally posted it before it was ready. In reality, it's likely
that it wouldn't have ever been completed and so been discarded.

--
Clifford Kite Email: "echo xvgr_yvahk-ccc@ri1.arg|rot13"
PPP-Q&A links, downloads: http://ckite.no-ip.net/

Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT +1. The time now is 10:34 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0