IPv6 can appear to stop functioning for some time as ICMPv6 'Packet Too Big' messages are ignored

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 6
  • IPv6

Issue

  • IPv6 can appear to stop functioning for some time . A packet capture shows that ICMPv6 'Packet Too Big' messages are being ignored during these periods.

Resolution

  • This issue was resolved by RHSA-2014:1997-2 in kernel version 2.6.32-504.3.3.el6. Upgrading to this kernel or later will resolve this issue.

Root Cause

  • When a large frame is sent along a path with a lower MTU an ICMPv6 'Packet Too Big' message should be returned. In response to this, the OS adds a temporary ("discovered") route for that path which enforces a lower MTU. Under certain circumstances, when a discovered MTU path expired, the IPv6 connection became unavailable for a short period of time. This bug has been fixed, and the connection now works as expected.

Diagnostic Steps

  • The following can be observed when running ping6 to a remote host with a small remote MTU:
1308 bytes from <redacted>: icmp_seq=58 ttl=59 time=6.46 ms
1308 bytes from <redacted>: icmp_seq=59 ttl=59 time=1.16 ms
1308 bytes from <redacted>: icmp_seq=60 ttl=59 time=1.12 ms
From <redacted> icmp_seq=61 Packet too big: mtu=1280
From <redacted> icmp_seq=62 Packet too big: mtu=1280
From <redacted> icmp_seq=63 Packet too big: mtu=1280
From <redacted> icmp_seq=64 Packet too big: mtu=1280
From <redacted> icmp_seq=65 Packet too big: mtu=1280
From <redacted> icmp_seq=66 Packet too big: mtu=1280
From <redacted> icmp_seq=67 Packet too big: mtu=1280
From <redacted> icmp_seq=68 Packet too big: mtu=1280
From <redacted> icmp_seq=69 Packet too big: mtu=1280
From <redacted> icmp_seq=70 Packet too big: mtu=1280
From <redacted> icmp_seq=71 Packet too big: mtu=1280
From <redacted> icmp_seq=72 Packet too big: mtu=1280
From <redacted> icmp_seq=73 Packet too big: mtu=1280
From <redacted> icmp_seq=74 Packet too big: mtu=1280
From <redacted> icmp_seq=75 Packet too big: mtu=1280
From <redacted> icmp_seq=76 Packet too big: mtu=1280
From <redacted> icmp_seq=77 Packet too big: mtu=1280
From <redacted> icmp_seq=78 Packet too big: mtu=1280
From <redacted> icmp_seq=79 Packet too big: mtu=1280
From <redacted> icmp_seq=80 Packet too big: mtu=1280
From <redacted> icmp_seq=81 Packet too big: mtu=1280
From <redacted> icmp_seq=82 Packet too big: mtu=1280
From <redacted> icmp_seq=83 Packet too big: mtu=1280
From <redacted> icmp_seq=84 Packet too big: mtu=1280
1308 bytes from <redacted>: icmp_seq=85 ttl=59 time=1.11 ms
1308 bytes from <redacted>: icmp_seq=86 ttl=59 time=1.05 ms
1308 bytes from <redacted>: icmp_seq=87 ttl=59 time=1.15 ms

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments