Octet

Explain the M, O and A flags, and what a host does with each combination.

Show the answer

Say this first

M (managed) and O (other config) sit in the RA header. A (autonomous) sits in each Prefix Information Option. A=1 means "build a SLAAC address from this prefix". M=1 means "get addresses from DHCPv6". O=1 means "get other settings, like DNS, from DHCPv6". The gateway always comes from the RA, whatever the flags. Hosts treat the flags as hints, and Android ignores DHCPv6 entirely, which is the classic surprise.

Go deeper

The combinations

MOAAddressesDNSTypical name
001SLAACRDNSS in the RA, or noneSLAAC only
011SLAACstateless DHCPv6SLAAC plus stateless DHCPv6
1any0stateful DHCPv6DHCPv6stateful DHCPv6
1any1both SLAAC and DHCPv6DHCPv6both, two or more addresses
000link-local onlynonegateway only

With M=1, O does not matter: the stateful exchange returns options as well.

Things that catch people

  • DHCPv6 has no gateway option. Even a fully managed network needs RAs with a non-zero router lifetime.
  • DHCPv6 gives no prefix length. Clients install the leased address as a /128. They learn which prefix is on-link from the RA's Prefix Information Option with L=1. Without it, a host sends traffic for its own subnet through the router.
  • Android does not implement DHCPv6 address assignment. On an M=1, A=0 network Android devices get only a link-local address.
  • Windows starts DHCPv6 when M or O is set. Linux depends on the network manager in use.

Setting the flags on IOS

Cisco IOS
interface GigabitEthernet0/0/0
 ipv6 nd managed-config-flag          ! M=1
 ipv6 nd other-config-flag            ! O=1
 ipv6 nd prefix default no-autoconfig ! A=0 for the prefixes on this interface

show ipv6 interface confirms with lines like "Hosts use DHCP to obtain routable addresses."

Traps

  • Saying the M flag gives hosts their default gateway from DHCPv6.
  • Assuming every OS honours the flags the same way.
How did you do?Book 4.2 IP Version 6