Hi,
I'm getting a weird MTU problem while using IPv6 and I hope someone will be
so kind to give me some hints on where the issue is coming from.
If I do a 1300 bytes ping from a client to an IPv4 address, everything
works correctly. Viceversa if I do the same ping to an IPv6 address, the
client doesn't get the echo-reply back due to a strange behaviour of the
router.
Here you can see the IPv4 and IPv6 pings with the related tcpdumps and
lispd debugs:
-------------------------------------------------------------------------------------------------------------------------------------------
IPv4
-------------------------------------------------------------------------------------------------------------------------------------------
# ping -c 2 -s 1300 153.16.3.1
PING 153.16.3.1 (153.16.3.1) 1300(1328) bytes of data.
1308 bytes from 153.16.3.1: icmp_req=1 ttl=242 time=145 ms
1308 bytes from 153.16.3.1: icmp_req=2 ttl=242 time=145 ms
--- 153.16.3.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 145.189/145.582/145.975/0.393 ms
-------------------------------------------------------------------------------------------------------------------------------------------
client's tcpdump
16:19:03.281849 IP 153.16.51.66 > 153.16.3.1: ICMP echo request, id 26135,
seq 1, length 1308
16:19:03.427803 IP 153.16.3.1 > 153.16.51.66: ICMP echo reply, id 26135,
seq 1, length 1308
16:19:04.282942 IP 153.16.51.66 > 153.16.3.1: ICMP echo request, id 26135,
seq 2, length 1308
16:19:04.428092 IP 153.16.3.1 > 153.16.51.66: ICMP echo reply, id 26135,
seq 2, length 1308
-------------------------------------------------------------------------------------------------------------------------------------------
router's tcpdump
16:19:03.143499 IP 153.16.51.66 > 153.16.3.1: ICMP echo request, id 26135,
seq 1, length 1308
16:19:03.288922 IP 153.16.3.1 > 153.16.51.66: ICMP echo reply, id 26135,
seq 1, length 1308
16:19:04.144576 IP 153.16.51.66 > 153.16.3.1: ICMP echo request, id 26135,
seq 2, length 1308
16:19:04.289184 IP 153.16.3.1 > 153.16.51.66: ICMP echo reply, id 26135,
seq 2, length 1308
-------------------------------------------------------------------------------------------------------------------------------------------
router's lispd debug
DEBUG-3: Received packet in the tun buffer
DEBUG-3: OUTPUT: Orig src: 153.16.51.66 | Orig dst: 153.16.3.1
DEBUG-3: lookup_map_cache_node: The entry 153.16.3.1 is not found in the
map cache
DEBUG: No map cache retrieved for eid 153.16.3.1
DEBUG-2: Added map cache entry for EID: 153.16.3.1/32
DEBUG: Sent Map-Request packet for 153.16.3.1/32 to 217.8.98.46: Encap: Y,
Probe: N, SMR: N, SMR-inv: N . Nonce: 0x73043464-0x777d3d73
DEBUG-3: select_src_rmt_locators_from_balancing_locators_vec: src EID:
153.16.51.64, rmt EID: 0.0.0.0, protocol: 1, src port: 0 , dst port: 0 -->
src RLOC: 217.133.0.249, dst RLOC: 217.8.98.33
DEBUG-3: OUTPUT: Encap src: 217.133.0.249 | Encap dst: 217.8.98.33
DEBUG-3: Fordwarded eid 153.16.3.1 to petr
DEBUG-3: INPUT (4341): Inner src: 153.16.3.1 | Inner dst: 153.16.51.66
DEBUG-3: Received IPv4 packet in the control input buffer (4342)
DEBUG-2: Received a LISP control message
DEBUG: Received a LISP Map-Reply message
DEBUG-2: process_map_reply: Nonce of the Map Reply is: 0x73043464-0x777d3d73
DEBUG-2: Added map cache entry for EID: 153.16.3.0/24
DEBUG-2: EID prefix of the map cache entry 153.16.3.1/32 changed to
153.16.3.0/24.
DEBUG-2: Activating map cache entry 153.16.3.0/24
DEBUG-2: pkt_process_rloc_afi: LCAF address is not supported in locators
DEBUG-2: Completed processing of LISP control message
DEBUG-3: Received packet in the tun buffer
DEBUG-3: OUTPUT: Orig src: 153.16.51.66 | Orig dst: 153.16.3.1
DEBUG-3: select_src_rmt_locators_from_balancing_locators_vec: src EID:
153.16.51.64, rmt EID: 0.0.0.0, protocol: 1, src port: 0 , dst port: 0 -->
src RLOC: 217.133.0.249, dst RLOC: 217.8.98.33
DEBUG-3: OUTPUT: Encap src: 217.133.0.249 | Encap dst: 217.8.98.33
DEBUG-3: Fordwarded eid 153.16.3.1 to petr
DEBUG-3: INPUT (4341): Inner src: 153.16.3.1 | Inner dst: 153.16.51.66
-------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------
IPv6
-------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------
client's tcpdump
16:33:10.763514 IP6 2610:d0:217a::2 > 2610:d0:1103::1: ICMP6, echo request,
seq 1, length 1308
16:33:11.770118 IP6 2610:d0:217a::2 > 2610:d0:1103::1: ICMP6, echo request,
seq 2, length 1308
-------------------------------------------------------------------------------------------------------------------------------------------
router's tcpdump
16:33:10.586302 IP6 2610:d0:217a::2 > 2610:d0:1103::1: ICMP6, echo request,
seq 1, length 1308
16:33:10.727117 IP6 2610:d0:1103::1 > 2610:d0:217a::2: ICMP6, echo reply,
seq 1, length 1308
16:33:10.727234 IP6 ::127 > 2610:d0:1103::1: ICMP6, packet too big, mtu
1280, length 1240
16:33:11.592876 IP6 2610:d0:217a::2 > 2610:d0:1103::1: ICMP6, echo request,
seq 2, length 1308
16:33:11.727112 IP6 2610:d0:1103::1 > 2610:d0:217a::2: ICMP6, echo reply,
seq 2, length 1308
16:33:11.727230 IP6 ::127 > 2610:d0:1103::1: ICMP6, packet too big, mtu
1280, length 1240
-------------------------------------------------------------------------------------------------------------------------------------------
router's lispd debug
DEBUG-3: Received packet in the tun buffer
DEBUG-3: OUTPUT: Orig src: 2610:d0:217a::2 | Orig dst: 2610:d0:1103::1
DEBUG-3: select_src_rmt_locators_from_balancing_locators_vec: src EID:
2610:d0:217a::, rmt EID: 0.0.0.0, protocol: 58, src port: 0 , dst port: 0
--> src RLOC: 217.133.0.249, dst RLOC: 217.8.98.33
DEBUG-3: OUTPUT: Encap src: 217.133.0.249 | Encap dst: 217.8.98.33
DEBUG-3: Fordwarded eid 2610:d0:1103::1 to petr
DEBUG-3: INPUT (4341): Inner src: 2610:d0:1103::1 | Inner dst:
2610:d0:217a::2
DEBUG-3: Received packet in the tun buffer
DEBUG-3: OUTPUT: Orig src: ::127 | Orig dst: 2610:d0:1103::1
DEBUG-3: The entry ::127 is not a local EID
DEBUG-2: fordward_native: No output interface for afi 10
DEBUG-3: Received packet in the tun buffer
DEBUG-3: OUTPUT: Orig src: 2610:d0:217a::2 | Orig dst: 2610:d0:1103::1
DEBUG-3: select_src_rmt_locators_from_balancing_locators_vec: src EID:
2610:d0:217a::, rmt EID: 0.0.0.0, protocol: 58, src port: 0 , dst port: 0
--> src RLOC: 217.133.0.249, dst RLOC: 217.8.98.33
DEBUG-3: OUTPUT: Encap src: 217.133.0.249 | Encap dst: 217.8.98.33
DEBUG-3: Fordwarded eid 2610:d0:1103::1 to petr
DEBUG-3: INPUT (4341): Inner src: 2610:d0:1103::1 | Inner dst:
2610:d0:217a::2
DEBUG-3: Received packet in the tun buffer
DEBUG-3: OUTPUT: Orig src: ::127 | Orig dst: 2610:d0:1103::1
DEBUG-3: The entry ::127 is not a local EID
DEBUG-2: fordward_native: No output interface for afi 10
-------------------------------------------------------------------------------------------------------------------------------------------
>From what I can see, the XTR is getting the reply from the other end-point
but it considers the reply too big and rejects it.
I cannot understand two things:
(1) Where does that 1280 mtu comes from?
(2) Perhaps I'm reading the log in the wrong way, but it seems that the
ICMP6 packet too big is never sent to the other end-point.
Please let me know if you need any other information.
Thanks in advance,
Luca
Details:
- I'm using the latest GIT version of lispmob
- Here are some outputs:
root@rtr-ipv6:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
UP qlen 1000
link/ether 00:e0:c5:45:6e:1f brd ff:ff:ff:ff:ff:ff
inet 153.16.51.65/28 brd 153.16.51.79 scope global eth0
inet6 2610:d0:217a::1/48 scope global
valid_lft forever preferred_lft forever
inet6 fe80::2e0:c5ff:fe45:6e1f/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:e0:c5:45:6e:e7 brd ff:ff:ff:ff:ff:ff
4: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UNKNOWN
link/ether be:5d:67:75:ea:34 brd ff:ff:ff:ff:ff:ff
inet6 fd01::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::bc5d:67ff:fe75:ea34/64 scope link
valid_lft forever preferred_lft forever
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc
pfifo_fast state UNKNOWN qlen 3
link/ppp
inet 217.133.0.249 peer 213.205.53.77/32 scope global ppp0
8: lispTun0: <POINTOPOINT,UP,LOWER_UP> mtu 1440 qdisc pfifo_fast state
UNKNOWN qlen 500
link/none
inet 127.0.0.127/32 scope global lispTun0
inet6 ::127/128 scope global
valid_lft forever preferred_lft forever
-------------------------------------------------------------------------------------------------------------------------------------------
root@rtr-ipv6:~# ip route
0.0.0.0/1 dev lispTun0 proto static src 217.133.0.249
default dev ppp0 proto static
128.0.0.0/1 dev lispTun0 proto static src 217.133.0.249
153.16.51.64/28 dev eth0 proto kernel scope link src 153.16.51.65
213.205.53.77 dev ppp0 proto kernel scope link src 217.133.0.249
-------------------------------------------------------------------------------------------------------------------------------------------
root@rtr-ipv6:~# ip -6 route
::127 dev lispTun0 proto kernel metric 256
2610:d0:217a::/48 dev eth0 proto kernel metric 256
::/1 dev lispTun0 proto static metric 512
fd01::/64 dev dummy0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev dummy0 proto kernel metric 256
8000::/1 dev lispTun0 proto static metric 512