← Back to team overview

kernel-packages team mailing list archive

[Bug 1383615] Re: Path MTU discovery doesn't work if there is no route to transit host

 

** Description changed:

  Suppose there is host X you want to connect to and there is some host Y
  on the path to X with MTU less than 1500. In usual conditions linux can
  discover PMTU, but not when there is no route to Y via the same
  interface as to X.
  
  Example: 10.2.2.2 is X, 10.2.2.2.1 is Y,10.0.0.2 is localhost and
  10.0.0.1 is gateway.
  
  # ip route
- default via 10.0.0.1 dev wlan0  proto static 
- 10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9 
+ default via 10.0.0.1 dev wlan0  proto static
+ 10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9
  # tracepath -n 10.2.2.2
-  1?: [LOCALHOST]                                         pmtu 1500
-  1:  10.0.0.1                                          2.362ms 
+  1?: [LOCALHOST]                                         pmtu 1500
+  1:  10.0.0.1                                          2.362ms
  ...
-  6:  10.2.2.2.1                                        6.100ms 
-  7:  10.2.2.2.1                                        7.450ms pmtu 1448
-  7:  10.2.2.2.2                                        9.232ms !H
-      Resume: pmtu 1448 
+  6:  10.2.2.2.1                                        6.100ms
+  7:  10.2.2.2.1                                        7.450ms pmtu 1448
+  7:  10.2.2.2.2                                        9.232ms !H
+      Resume: pmtu 1448
  # ping -M do -c 2 -s 1422 10.2.2.2
  PING 10.2.2.2 (10.2.2.2) 1422(1450) bytes of data.
  From 10.2.2.1 icmp_seq=1 Frag needed and DF set (mtu = 1448)
  ping: local error: Message too long, mtu=1448
  
  --- 10.2.2.2 ping statistics ---
  2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1000ms
  
  tcpdump output:
  10:53:54.813146 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 3218, seq 1, length 1430
  10:53:54.819162 IP 10.2.2.1 > 10.0.0.2: ICMP 217.78.182.234 unreachable - need to frag (mtu 1448), length 36
  
  Now lets add direct route to X and remove default route.
  
  # ip route del default
  # ip route add 10.2.2.2 via 10.0.0.1 dev wlan0
  # ip route
- 10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9 
- 10.2.2.2 via 10.0.0.1 dev wlan0 
+ 10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9
+ 10.2.2.2 via 10.0.0.1 dev wlan0
  # ping -M do -c 2 -s 1422 10.2.2.2
  PING 10.2.2.2 (10.2.2.2) 1422(1450) bytes of data.
  
  --- 10.2.2.2 ping statistics ---
  2 packets transmitted, 0 received, 100% packet loss, time 1008ms
  
  tcpdump output:
  12:01:43.222181 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 4100, seq 1, length 1430
- 12:01:43.234057 IP 10.2.2.1 > 10.0.0.2: ICMP 217.78.182.234 unreachable - need to frag (mtu 1448), length 36
+ 12:01:43.234057 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36
  12:01:44.231103 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 4100, seq 2, length 1430
- 12:01:44.239092 IP 10.2.2.1 > 10.0.0.2: ICMP 217.78.182.234 unreachable - need to frag (mtu 1448), length 36
+ 12:01:44.239092 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36
  
  For example, this behavior breaks VPN when all traffic is routed via
  tunnel. In this case there is only direct route to VPN gateway (except
  local net) via physical interface, and VPN packets larger than PMTU are
  discarded, since PMTUD doesn't work.
  
  I've also tested mainline kernel v3.18-rc1-utopic with the same results.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: linux-image-3.13.0-37-generic 3.13.0-37.64
  ProcVersionSignature: Ubuntu 3.13.0-37.64-generic 3.13.11.7
  Uname: Linux 3.13.0-37-generic i686
  ApportVersion: 2.14.1-0ubuntu3.5
  Architecture: i386
  AudioDevicesInUse:
-  USER        PID ACCESS COMMAND
-  /dev/snd/controlC0:  ranma      1846 F.... lxpanel
+  USER        PID ACCESS COMMAND
+  /dev/snd/controlC0:  ranma      1846 F.... lxpanel
  CRDA: Error: [Errno 2] Нет такого файла или каталога: 'iw'
  CurrentDesktop: LXDE
  CurrentDmesg:
-  [   70.293614] init: plymouth-upstart-bridge main process ended, respawning
-  [   70.338543] init: plymouth-upstart-bridge main process (1658) terminated with status 1
-  [   70.338612] init: plymouth-upstart-bridge main process ended, respawning
+  [   70.293614] init: plymouth-upstart-bridge main process ended, respawning
+  [   70.338543] init: plymouth-upstart-bridge main process (1658) terminated with status 1
+  [   70.338612] init: plymouth-upstart-bridge main process ended, respawning
  Date: Tue Oct 21 10:28:06 2014
  HibernationDevice: RESUME=UUID=67a1a865-4137-4325-a898-25905a17804b
  InstallationDate: Installed on 2014-09-08 (42 days ago)
  InstallationMedia: Lubuntu 14.04.1 LTS "Trusty Tahr" - Release i386 (20140722.2)
  MachineType: ASUSTeK Computer INC. 901
  ProcFB: 0 inteldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.13.0-37-generic root=/dev/mapper/root ro rootflags=subvol=@ persistent quiet splash
  RelatedPackageVersions:
-  linux-restricted-modules-3.13.0-37-generic N/A
-  linux-backports-modules-3.13.0-37-generic  N/A
-  linux-firmware                             1.127.7
+  linux-restricted-modules-3.13.0-37-generic N/A
+  linux-backports-modules-3.13.0-37-generic  N/A
+  linux-firmware                             1.127.7
  SourcePackage: linux
  StagingDrivers: zram
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 08/01/2008
  dmi.bios.vendor: American Megatrends Inc.
  dmi.bios.version: 1202
  dmi.board.asset.tag: To Be Filled By O.E.M.
  dmi.board.name: 901
  dmi.board.vendor: ASUSTeK Computer INC.
  dmi.board.version: x.xx
  dmi.chassis.asset.tag: 0x00000000
  dmi.chassis.type: 10
  dmi.chassis.vendor: ASUSTek Computer INC.
  dmi.chassis.version: x.x
  dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvr1202:bd08/01/2008:svnASUSTeKComputerINC.:pn901:pvrx.x:rvnASUSTeKComputerINC.:rn901:rvrx.xx:cvnASUSTekComputerINC.:ct10:cvrx.x:
  dmi.product.name: 901
  dmi.product.version: x.x
  dmi.sys.vendor: ASUSTeK Computer INC.

** Description changed:

  Suppose there is host X you want to connect to and there is some host Y
  on the path to X with MTU less than 1500. In usual conditions linux can
  discover PMTU, but not when there is no route to Y via the same
  interface as to X.
  
  Example: 10.2.2.2 is X, 10.2.2.2.1 is Y,10.0.0.2 is localhost and
  10.0.0.1 is gateway.
  
  # ip route
  default via 10.0.0.1 dev wlan0  proto static
  10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9
  # tracepath -n 10.2.2.2
   1?: [LOCALHOST]                                         pmtu 1500
   1:  10.0.0.1                                          2.362ms
  ...
   6:  10.2.2.2.1                                        6.100ms
   7:  10.2.2.2.1                                        7.450ms pmtu 1448
   7:  10.2.2.2.2                                        9.232ms !H
       Resume: pmtu 1448
  # ping -M do -c 2 -s 1422 10.2.2.2
  PING 10.2.2.2 (10.2.2.2) 1422(1450) bytes of data.
  From 10.2.2.1 icmp_seq=1 Frag needed and DF set (mtu = 1448)
  ping: local error: Message too long, mtu=1448
  
  --- 10.2.2.2 ping statistics ---
  2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1000ms
  
  tcpdump output:
  10:53:54.813146 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 3218, seq 1, length 1430
- 10:53:54.819162 IP 10.2.2.1 > 10.0.0.2: ICMP 217.78.182.234 unreachable - need to frag (mtu 1448), length 36
+ 10:53:54.819162 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36
  
  Now lets add direct route to X and remove default route.
  
  # ip route del default
  # ip route add 10.2.2.2 via 10.0.0.1 dev wlan0
  # ip route
  10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9
  10.2.2.2 via 10.0.0.1 dev wlan0
  # ping -M do -c 2 -s 1422 10.2.2.2
  PING 10.2.2.2 (10.2.2.2) 1422(1450) bytes of data.
  
  --- 10.2.2.2 ping statistics ---
  2 packets transmitted, 0 received, 100% packet loss, time 1008ms
  
  tcpdump output:
  12:01:43.222181 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 4100, seq 1, length 1430
  12:01:43.234057 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36
  12:01:44.231103 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 4100, seq 2, length 1430
  12:01:44.239092 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36
  
  For example, this behavior breaks VPN when all traffic is routed via
  tunnel. In this case there is only direct route to VPN gateway (except
  local net) via physical interface, and VPN packets larger than PMTU are
  discarded, since PMTUD doesn't work.
  
  I've also tested mainline kernel v3.18-rc1-utopic with the same results.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: linux-image-3.13.0-37-generic 3.13.0-37.64
  ProcVersionSignature: Ubuntu 3.13.0-37.64-generic 3.13.11.7
  Uname: Linux 3.13.0-37-generic i686
  ApportVersion: 2.14.1-0ubuntu3.5
  Architecture: i386
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  ranma      1846 F.... lxpanel
  CRDA: Error: [Errno 2] Нет такого файла или каталога: 'iw'
  CurrentDesktop: LXDE
  CurrentDmesg:
   [   70.293614] init: plymouth-upstart-bridge main process ended, respawning
   [   70.338543] init: plymouth-upstart-bridge main process (1658) terminated with status 1
   [   70.338612] init: plymouth-upstart-bridge main process ended, respawning
  Date: Tue Oct 21 10:28:06 2014
  HibernationDevice: RESUME=UUID=67a1a865-4137-4325-a898-25905a17804b
  InstallationDate: Installed on 2014-09-08 (42 days ago)
  InstallationMedia: Lubuntu 14.04.1 LTS "Trusty Tahr" - Release i386 (20140722.2)
  MachineType: ASUSTeK Computer INC. 901
  ProcFB: 0 inteldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.13.0-37-generic root=/dev/mapper/root ro rootflags=subvol=@ persistent quiet splash
  RelatedPackageVersions:
   linux-restricted-modules-3.13.0-37-generic N/A
   linux-backports-modules-3.13.0-37-generic  N/A
   linux-firmware                             1.127.7
  SourcePackage: linux
  StagingDrivers: zram
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 08/01/2008
  dmi.bios.vendor: American Megatrends Inc.
  dmi.bios.version: 1202
  dmi.board.asset.tag: To Be Filled By O.E.M.
  dmi.board.name: 901
  dmi.board.vendor: ASUSTeK Computer INC.
  dmi.board.version: x.xx
  dmi.chassis.asset.tag: 0x00000000
  dmi.chassis.type: 10
  dmi.chassis.vendor: ASUSTek Computer INC.
  dmi.chassis.version: x.x
  dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvr1202:bd08/01/2008:svnASUSTeKComputerINC.:pn901:pvrx.x:rvnASUSTeKComputerINC.:rn901:rvrx.xx:cvnASUSTekComputerINC.:ct10:cvrx.x:
  dmi.product.name: 901
  dmi.product.version: x.x
  dmi.sys.vendor: ASUSTeK Computer INC.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1383615

Title:
  Path MTU discovery doesn't work if there is no route to transit host

Status in “linux” package in Ubuntu:
  Confirmed

Bug description:
  Suppose there is host X you want to connect to and there is some host
  Y on the path to X with MTU less than 1500. In usual conditions linux
  can discover PMTU, but not when there is no route to Y via the same
  interface as to X.

  Example: 10.2.2.2 is X, 10.2.2.2.1 is Y,10.0.0.2 is localhost and
  10.0.0.1 is gateway.

  # ip route
  default via 10.0.0.1 dev wlan0  proto static
  10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9
  # tracepath -n 10.2.2.2
   1?: [LOCALHOST]                                         pmtu 1500
   1:  10.0.0.1                                          2.362ms
  ...
   6:  10.2.2.2.1                                        6.100ms
   7:  10.2.2.2.1                                        7.450ms pmtu 1448
   7:  10.2.2.2.2                                        9.232ms !H
       Resume: pmtu 1448
  # ping -M do -c 2 -s 1422 10.2.2.2
  PING 10.2.2.2 (10.2.2.2) 1422(1450) bytes of data.
  From 10.2.2.1 icmp_seq=1 Frag needed and DF set (mtu = 1448)
  ping: local error: Message too long, mtu=1448

  --- 10.2.2.2 ping statistics ---
  2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1000ms

  tcpdump output:
  10:53:54.813146 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 3218, seq 1, length 1430
  10:53:54.819162 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36

  Now lets add direct route to X and remove default route.

  # ip route del default
  # ip route add 10.2.2.2 via 10.0.0.1 dev wlan0
  # ip route
  10.0.0.0/22 dev wlan0  proto kernel  scope link  src 10.0.0.2  metric 9
  10.2.2.2 via 10.0.0.1 dev wlan0
  # ping -M do -c 2 -s 1422 10.2.2.2
  PING 10.2.2.2 (10.2.2.2) 1422(1450) bytes of data.

  --- 10.2.2.2 ping statistics ---
  2 packets transmitted, 0 received, 100% packet loss, time 1008ms

  tcpdump output:
  12:01:43.222181 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 4100, seq 1, length 1430
  12:01:43.234057 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36
  12:01:44.231103 IP 10.0.0.2 > 10.2.2.2: ICMP echo request, id 4100, seq 2, length 1430
  12:01:44.239092 IP 10.2.2.1 > 10.0.0.2: ICMP 10.2.2.2 unreachable - need to frag (mtu 1448), length 36

  For example, this behavior breaks VPN when all traffic is routed via
  tunnel. In this case there is only direct route to VPN gateway (except
  local net) via physical interface, and VPN packets larger than PMTU
  are discarded, since PMTUD doesn't work.

  I've also tested mainline kernel v3.18-rc1-utopic with the same
  results.

  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: linux-image-3.13.0-37-generic 3.13.0-37.64
  ProcVersionSignature: Ubuntu 3.13.0-37.64-generic 3.13.11.7
  Uname: Linux 3.13.0-37-generic i686
  ApportVersion: 2.14.1-0ubuntu3.5
  Architecture: i386
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  ranma      1846 F.... lxpanel
  CRDA: Error: [Errno 2] Нет такого файла или каталога: 'iw'
  CurrentDesktop: LXDE
  CurrentDmesg:
   [   70.293614] init: plymouth-upstart-bridge main process ended, respawning
   [   70.338543] init: plymouth-upstart-bridge main process (1658) terminated with status 1
   [   70.338612] init: plymouth-upstart-bridge main process ended, respawning
  Date: Tue Oct 21 10:28:06 2014
  HibernationDevice: RESUME=UUID=67a1a865-4137-4325-a898-25905a17804b
  InstallationDate: Installed on 2014-09-08 (42 days ago)
  InstallationMedia: Lubuntu 14.04.1 LTS "Trusty Tahr" - Release i386 (20140722.2)
  MachineType: ASUSTeK Computer INC. 901
  ProcFB: 0 inteldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.13.0-37-generic root=/dev/mapper/root ro rootflags=subvol=@ persistent quiet splash
  RelatedPackageVersions:
   linux-restricted-modules-3.13.0-37-generic N/A
   linux-backports-modules-3.13.0-37-generic  N/A
   linux-firmware                             1.127.7
  SourcePackage: linux
  StagingDrivers: zram
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 08/01/2008
  dmi.bios.vendor: American Megatrends Inc.
  dmi.bios.version: 1202
  dmi.board.asset.tag: To Be Filled By O.E.M.
  dmi.board.name: 901
  dmi.board.vendor: ASUSTeK Computer INC.
  dmi.board.version: x.xx
  dmi.chassis.asset.tag: 0x00000000
  dmi.chassis.type: 10
  dmi.chassis.vendor: ASUSTek Computer INC.
  dmi.chassis.version: x.x
  dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvr1202:bd08/01/2008:svnASUSTeKComputerINC.:pn901:pvrx.x:rvnASUSTeKComputerINC.:rn901:rvrx.xx:cvnASUSTekComputerINC.:ct10:cvrx.x:
  dmi.product.name: 901
  dmi.product.version: x.x
  dmi.sys.vendor: ASUSTeK Computer INC.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1383615/+subscriptions


References