# ICMP6 redirect didn't work?



## nekobe (May 26, 2014)

I'm p_er_forming an IPv6 Ready Logo Phase-2 Test on my FreeBSD 9.1R i386. And got some strange problems.

On #169 to #175 of nd.p2 (Neighbor Discovery for IPv6), I got a "Cleanup Fail" and "Initialization Fail". So I make another FreeBSD 7.1R (the only FreeBSD version that I can find on the Internet that passed this test) and do some `tcudump -vvi` to verify what's wrong is it.

On successful (Node under test is 7.1R)

```
14:06:18.136591 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 16) 3ffe:501:ffff:0:250:60ff:fe80:3883 > 3ffe:501:ffff:100:250:56ff:fe80:6a40: [icmp6 sum ok] ICMP6, echo request, seq 0
14:06:18.136819 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 16) 3ffe:501:ffff:100:250:56ff:fe80:6a40 > 3ffe:501:ffff:0:250:60ff:fe80:3883: [icmp6 sum ok] ICMP6, echo reply, seq 0

>> 14:06:18.179909 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 40) fe80::200:ff:fe00:a0a0 > 3ffe:501:ffff:100:250:56ff:fe80:6a40: [icmp6 sum ok] ICMP6, redirect, length 40, 3ffe:501:ffff:0:250:60ff:fe80:3883 to 3ffe:501:ffff:0:250:60ff:fe80:3883 <<

>> 14:06:18.203823 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 16) 3ffe:501:ffff:0:250:60ff:fe80:3883 > 3ffe:501:ffff:100:250:56ff:fe80:6a40: [icmp6 sum ok] ICMP6, echo request, seq 0 <<

14:06:18.203986 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) 3ffe:501:ffff:100:250:56ff:fe80:6a40 > ff02::1:ff80:3883: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has 3ffe:501:ffff:0:250:60ff:fe80:3883
```

In the indicated, I saw TN (Test Node, 9.1R) send a icmp6 redirect. Then NUT (Node Under Test, 7.1R) will not reply next icmp6 echo. That's what is expected to happen.

On failure (Node under test is 9.1R)

```
14:10:19.054571 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 16) 3ffe:501:ffff:0:250:60ff:fe80:3883 > 3ffe:501:ffff:100:250:56ff:fe80:6657: [icmp6 sum ok] ICMP6, echo request, seq 0
14:10:19.054790 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 16) 3ffe:501:ffff:100:250:56ff:fe80:6657 > 3ffe:501:ffff:0:250:60ff:fe80:3883: [icmp6 sum ok] ICMP6, echo reply, seq 0

>> 14:10:19.097796 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 40) fe80::200:ff:fe00:a0a0 > 3ffe:501:ffff:100:250:56ff:fe80:6657: [icmp6 sum ok] ICMP6, redirect, length 40, 3ffe:501:ffff:0:250:60ff:fe80:3883 to 3ffe:501:ffff:0:250:60ff:fe80:3883 <<

14:10:19.119554 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 16) 3ffe:501:ffff:0:250:60ff:fe80:3883 > 3ffe:501:ffff:100:250:56ff:fe80:6657: [icmp6 sum ok] ICMP6, echo request, seq 0

>> 14:10:19.119743 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 16) 3ffe:501:ffff:100:250:56ff:fe80:6657 > 3ffe:501:ffff:0:250:60ff:fe80:3883: [icmp6 sum ok] ICMP6, echo reply, seq 0 <<

14:10:21.159012 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::250:60ff:fe80:3883 > ff02::1: [icmp6 sum ok] ICMP6, neighbor advertisement, length 32, tgt is 3ffe:501:ffff:0:250:60ff:fe80:3883, Flags [override]
```

See the indicated lines, after receiving an icmp6 redirect. The 9.1R NUT still replies with the next icmp6 echo req.

Is there any sysctl OIDs to control this behavior? *O*r have I missed anything? Thanks for any hints or advises.

Below are configuration files of TN.

/etc/rc.conf

```
ipv6_enable="YES"
ipv6_network_interfaces="em0"
ipv6_default_interface="em0"
ifconfig_em0_ipv6="inet6 up accept_rtadv nud"
rtsold_enable="YES"
rtsold_flags="-1 -F em0"
```

/etc/sysctl.conf

```
net.inet6.icmp6.nd6_onlink_ns_rfc4861=1
net.inet6.ip6.accept_rtadv=1
```


----------

