Skip to content

Add support for IPv6 RA reachable-time and router-preference - #1543

Open
vishak-mut wants to merge 1 commit into
openconfig:masterfrom
vishak-mut:add-ipv6-ra-reachable-time-router-preference
Open

Add support for IPv6 RA reachable-time and router-preference#1543
vishak-mut wants to merge 1 commit into
openconfig:masterfrom
vishak-mut:add-ipv6-ra-reachable-time-router-preference

Conversation

@vishak-mut

@vishak-mut vishak-mut commented Sep 9, 2026

Copy link
Copy Markdown
  • (M) release/models/interfaces/openconfig-if-ip.yang
    • Add support for IPv6 RA reachable-time (RFC 4861).
    • Add support for IPv6 RA router-preference (RFC 4191).

Change Scope

This change adds support for configuring two standard IPv6 Neighbor Discovery (ND) Router Advertisement (RA) parameters within the OpenConfig interfaces IP model:

  1. reachable-time (RFC 4861 §4.2 & §6.2.1):

    • Carried in the 32-bit Reachable Time field of ICMPv6 Router Advertisement messages.
    • Defines the time (in milliseconds) a node assumes a neighbor remains reachable after receiving a reachability confirmation.
    • Setting to 0 indicates that reachable time is unspecified by the advertising router.
    • Essential in bare-metal and data center environments with dynamic or routed host interfaces to tune neighbor unreachability detection (NUD) and ARP/ND cache refresh cycles.
  2. router-preference (RFC 4191 §2.1 & §2.2):

    • Advertised in the 2-bit Default Router Preference (Prf) field of the flag octet in ICMPv6 Router Advertisement messages.
    • Allows routers to signal preference levels (HIGH, MEDIUM, LOW) to downstream hosts.
    • Multi-homed hosts utilize this preference to prioritize default gateway selection when multiple routers are present on a shared or redundant segment.

The change is backwards-compatible and purely additive (minor version bump 3.9.0 -> 3.10.0).

Platform Implementations

Proof of implementation across two separate network operating system platforms:

  • HPE Aruba Networking (AOS-CX) documentation

    • AOS-CX supports both parameters under the interface context:
      • ipv6 nd ra reachable-time <TIME>: Configures the reachable time in milliseconds advertised in RAs (default: 0).
      • ipv6 nd router-preference {high | medium | low}: Configures the Default Router Preference in RAs (default: medium).
    • Verification: show ipv6 nd interface <interface-name>
  • Arista EOS documentation

    • Arista EOS supports both parameters under interface configuration mode:
      • ipv6 nd reachable-time <0-3600000>: Configures the reachable time in milliseconds advertised in RAs (default: 0).
      • ipv6 nd router-preference {high | medium | low}: Configures the Default Router Preference in RAs (default: medium).
    • Verification: show ipv6 interface <interface-name>

Tree View

 module: openconfig-interfaces
   +--rw interfaces
      +--rw interface* [name]
         +--rw subinterfaces
            +--rw subinterface* [index]
               +--rw oc-ip:ipv6
                  +--rw oc-ip:router-advertisement
                     +--rw oc-ip:config
                     |  +--rw oc-ip:enable?              boolean
                     |  +--rw oc-ip:interval?            uint32
                     |  +--rw oc-ip:lifetime?            uint32
                     |  x--rw oc-ip:suppress?            boolean
                     |  +--rw oc-ip:mode?                enumeration
                     |  +--rw oc-ip:managed?             boolean
                     |  +--rw oc-ip:other-config?        boolean
+                    |  +--rw oc-ip:reachable-time?      uint32
+                    |  +--rw oc-ip:router-preference?   enumeration
                     +--ro oc-ip:state
                        +--ro oc-ip:enable?              boolean
                        +--ro oc-ip:interval?            uint32
                        +--ro oc-ip:lifetime?            uint32
                        x--ro oc-ip:suppress?            boolean
                        +--ro oc-ip:mode?                enumeration
                        +--ro oc-ip:managed?             boolean
                        +--ro oc-ip:other-config?        boolean
+                       +--ro oc-ip:reachable-time?      uint32
+                       +--ro oc-ip:router-preference?   enumeration

* (M) release/models/interfaces/openconfig-if-ip.yang
  - Add support for IPv6 RA reachable-time (RFC 4861).
  - Add support for IPv6 RA router-preference (RFC 4191).

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the openconfig-if-ip.yang module to version 3.10.0, introducing reachable-time and router-preference leaves to the IPv6 Router Advertisement configuration. The review feedback recommends adding a range constraint of 0..3600000 to the reachable-time leaf to comply with RFC 4861 limits.

Comment on lines +1184 to +1193
leaf reachable-time {
type uint32;
units milliseconds;
default 0;
description
"The time, in milliseconds, that a node assumes a neighbor is
reachable after having received a reachability confirmation. Set
to 0 to indicate that reachable time is unspecified by this router.";
reference "RFC4861: Neighbor Discovery for IPv6, section 4.2 and 6.2.1";
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

According to RFC 4861 Section 6.2.1, the ReachableTime value MUST be no greater than 3,600,000 milliseconds (1 hour). It is highly recommended to add a range constraint to the reachable-time leaf to enforce this limit and prevent invalid configurations.

    leaf reachable-time {
      type uint32 {
        range "0..3600000";
      }
      units milliseconds;
      default 0;
      description
        "The time, in milliseconds, that a node assumes a neighbor is
        reachable after having received a reachability confirmation.  Set
        to 0 to indicate that reachable time is unspecified by this router.";
      reference "RFC4861: Neighbor Discovery for IPv6, section 4.2 and 6.2.1";
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant