IPv6-Only RA Flag

In the IETF 6man working group, the draft-ietf-6man-ipv6only-flag discusses an option by which a client shall disable IPv4 processing if all routers on a link consistently announce the IPv6-Only flag.

Work has been ongoing to produce a prototype implementation for FreeBSD in a private repository so people can gain experience and changes were merged back to FreeBSD head. The code is compile time disabled by default under the EXPERIMENTAL src.conf and kernel options.

Changes for the IPv6-Only flag include updates of user space utilities to announce the ā€œSā€ (IPv6-Only) flag to the network and to show it in management utilities.

The kernel logic includes a global flag to disable processing of the IPv6-Only flag even if the logic to act upon the IPv6-Only flag is compiled in. There are checks for IPv4 configuration on a receiving interface, which if found, will also force the IPv6-Only flag to be ignored. Further there are input and output filters for IPv4, ARP, and REVARP in place for when the flag passes the aforementioned checks and is enabled.

In addition to the draft there is a manual option to enable the IPv6-Only filtering logic manually to observe the system behaviour on links without router(s) advertising the IPv6-Only flag.

In case you have questions please contact BjoernZeeb.

Below is a list of chronological commits (oldest to newest in reading order) related to the IPv6-Only flag work. Some of the commits are not directly related to the flag (e.g., ARP changes) but help to improve the overall system behaviour in case the flag is on (and possibly otherwise as well).

    • Update for draft '-05':
      • Global option to disable processing of the RA flag (enabled by default as per draft).
      • Detection of IPv4 configuration on the interface when we would turn the IPv6-Only flag on by RA and ignore.
    • Add manual flag (to be able to play with the feature without automatic notification by RA).
    • IPv4/ARP/REVARP input filter, added REVARP to output filter as well.

Patches are available for:

  • Improve logic for logging in case of IPv4 interface configuration when we receive the IPv6-Only flag for the same interface. Currently we log for each RA.
  • Send notifications to user space to more easily act upon IPv6-Only flag changes on a link. Based on this (temporarily) disable DCHPv4 for the interface; should automatically re-start on link-up. Need to handle the case when the IPv6-Only flag is turned off.
  • Statistics counters for dropped packets (input or output) due to the IPv6-Only flag.
  • Currently running my Laptop with the flag set manually. ARP and dhclient produce quite some (console) noise still.
  • Ran two FreeBSD routers in a lab setup, FreeBSD Laptop on WiFi and wired, Win10 and OSX clients. The 3rd party OSes did not fall over when receiving the IPv6-Only flag set and seem to have ignored it.

  • ipv6/ipv6onlyraflag.txt
  • Last modified: 2019/03/17 09:32
  • by BjoernZeeb