An example of accept_ra

In IPv6, Router Advertisement (referred to as RA) is a critical ICMP package, and Stateless AutoConf is relying on RA configuration IP address, the host sends Router Solicitation (RS) broadcast, a bit similar to DHCP Request in IPv4, and the router will respond RA, similar to DHCP reply. Different, DHCP is Stateful, because the DHCP server must maintain an address table, and IPv6’s router is not required, so it is stateless, and RA broadcast is periodic.

The above is the technical background. Obviously, in general, you have to accept this package. And I have had a situation but have to disable this option.

This is the case, the two hosts are connected by a switch. Now we modify the two hosts and the switch’s MTU to 9000. ICMPV6_PKT_TOOBIG.

Here, there is a need to point out an important difference between IPv6 and IPv4 is that the fragmentation of the package is done on the host instead of being completed by Router. Wikipedia said:

IN IPv4, Routers Perform Fragmentation, WHEREAS IN IPv6, Routers Do Not Fragment, But Drop The Packets That Are Larger THAN THE MTU.

And I hereby “The computation of the PMTU is done by the host: since IPv6’s ROUTER does not sharpen, the host must know the smallest MTU on the entire Path before sending, ie PMTU.

Ok, since we modified the host’s MTU, the PMTU also needs to be updated, especially the MTU in the IPv6 routing table. Fortunately, this is done automatically by the kernel, which is done by NetDev_changemtu. `ip -6 r s. It can also see that the corresponding MTU does become 9000, but after a while, I will find that the MTU will automatically become a previous 1500. This is very strange, then I will capture some packages and find that this MTU will change whenever I receive RA! Don’t look at the code, you can understand it right away, RA must also contain a Router’s MTU, this MTU is 1500, so PMTU will jump back to 1500!

But we are not the MTU that has been modified the switch, why will it issue RA (MTU1500) broadcast? At connection with the switch, Jumbo MTU is indeed changed to 9000, but the Routing MTU is still 1500, and it is not possible to modify it into 9000. After all, the Gigabit NIC has not been popular. So now the problem is that this configuration is actually right, 8000 bytes of packages are physically available, but IPv6 cannot be sent because the switch’s Routing MTU is 1500, which we have to It is forbidden to get an option of Accept_ra, and the acquisition of the address is DHCPv6.