Skip to main content

Early Review of draft-ietf-6man-ipv6-neighbor-discovery-yang-02
review-ietf-6man-ipv6-neighbor-discovery-yang-02-yangdoctors-early-aries-2026-02-22-00

Request Review of draft-ietf-6man-ipv6-neighbor-discovery-yang-02
Requested revision 02 (document currently at 05)
Type Early Review
Team YANG Doctors (yangdoctors)
Deadline 2026-02-26
Requested 2026-02-12
Requested by Bob Hinden
Authors Fan Zhang , Yongqing Zhu , Bo Wu , Jiayuan Hu
I-D last updated 2026-05-29 (Latest revision 2026-05-12)
Completed reviews Yangdoctors Early review of -02 by Ebben Aries (diff)
Comments
This is a 6man draft, and the chairs think it would be good to have an early Yang doctor review.  Not too many people in the working group are strong in this area.
Assignment Reviewer Ebben Aries
State Completed
Request Early review on draft-ietf-6man-ipv6-neighbor-discovery-yang by YANG Doctors Assigned
Posted at https://mailarchive.ietf.org/arch/msg/yang-doctors/Zvh54ou1_oibo4gcavmogWyWYpI
Reviewed revision 02 (document currently at 05)
Result Almost ready
Completed 2026-02-22
review-ietf-6man-ipv6-neighbor-discovery-yang-02-yangdoctors-early-aries-2026-02-22-00
1 module in this draft:
- ietf-ipv6-nd@2025-10-20.yang

YANG compiler errors or warnings (pyang 2.7.1, yanglint 4.2.2)
- No compiler errors or warnings

Summary:
--------------------
This is a well-scoped module and almost ready, however a few items need
addressing.

Draft:
--------------------
- Section 2.1 says `redirect` "enables the sending and processing of Redirect
  messages" but the leaf description says only "sending"
- RFC 4941 is in Normative References but only cited in the informative
  Appendix B table.  Suggest moving to Informative References.
- draft-ietf-intarea-arp-yang-model is in Normative References but only cited
  in the Introduction for background context.  Suggest moving to Informative
  References.
- Nit: malformed mailto URI in contact block: `<mailto: 6man@ietf.org>` should
  be `<mailto:6man@ietf.org>`.  Same issue in the module contact statement.

YANG Module
--------------------
- Nit: revision description "Init revision" is informal; use "Initial version."
- `units` are inconsistent throughout.  `stale-timeout` uses "second",
  `reachable-time` uses "millisecond", while `ns-interval` and `age` use
  "milliseconds".  All should use the plural form; RFC 8344 (ietf-ip) uses
  "milliseconds" consistently.  Additionally, is `stale-timeout` intentionally
  in seconds while all other timers are in milliseconds?
- `dynamic-discovery`: default "true" - what is the RFC 4861 basis for this
  default?  Address resolution is a fundamental protocol mechanism, not a
  configurable parameter with a defined default.
- `nud`: same question as above.  RFC 4861 Section 7.3 specifies NUD as
  required behavior.  Basis for this default?
- `redirect`: default "false" - RFC 4861 Section 8.1 states routers SHOULD
  send redirects.  Basis for the default?
- `reachable-time`: reference "RFC4861 - ReachableTime" is not a section
  citation.  This leaf models BaseReachableTime (Section 6.3.2; default
  30,000 ms per Section 10 REACHABLE_TIME); RFC 4861 defines no maximum for
  this variable - the range "0..3600000" is the cap on the distinct
  AdvReachableTime RA wire field (Section 6.2.1).  Cite Section 6.3.2,
  document the range rationale, and add `default "30000"`.
- `ns-interval`: reference cites Section 7.3.3; RetransTimer is defined in
  Section 6.3.2 (default 1,000 ms per Section 10 RETRANS_TIMER).  Update
  reference, add `default "1000"`, and add a minimum range constraint -
  a value of 0 would cause an NS flood it seems?
- `stale-timeout` (global and per-interface): not an RFC 4861 parameter;
  document the precedence between global and per-interface values.
- `proxy-na/inter-vlan-proxy` and `/all-proxy`: no `reference` statement;
  add RFC 4861 Section 7.2.8.  `inter-vlan-proxy` has no RFC 4861 basis;
  Is this implementation-specific?
- `enhanced-dad/enable`: no `reference` statement; add RFC 7527 Section 3.
- `enhanced-dad/enhanced-dad-auto-resolve`: no `reference` statement; add
  RFC 7527 Section 4.  Leaf name is redundant under `enhanced-dad`; prefer
  `auto-resolve`.
- All ten statistics leaves use `yang:counter32`; change to `yang:counter64`
  for consistency with RFC 8343 (ietf-interfaces) which this module augments.
- `age` augments `ip:neighbor` which covers both dynamic and static entries;
  for static entries, age is semantically undefined.  Add a `when` condition
  (e.g., `when "../ip:origin = 'dynamic'";`) or document the behavior.
  Reference Section 5.1 is imprecise; Section 7.3.2 or 7.3.3 is better.

Example Validated Instance Data:
--------------------
```
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "eth0",
        "type": "iana-if-type:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "if-index": 512,
        "statistics": {
          "discontinuity-time": "2026-02-21T16:00:00-08:00"
        },
        "ietf-ip:ipv6": {
          "enabled": true,
          "forwarding": true,
          "neighbor": [
            {
              "ip": "2001:db8:100::1a",
              "link-layer-address": "50:54:00:b3:4f:4a",
              "ietf-ipv6-nd:age": 600
            }
          ],
          "ietf-ipv6-nd:nd": {
            "dynamic-discovery": true,
            "nud": true,
            "reachable-time": 30000,
            "ns-interval": 1000,
            "stale-timeout": 600,
            "redirect": false,
            "proxy-na": {
              "inter-vlan-proxy": false,
              "all-proxy": false
            },
            "enhanced-dad": {
              "enable": false,
              "enhanced-dad-auto-resolve": false
            },
            "statistics": {
              "in-ns-pkts": 542321,
              "in-na-pkts": 5121,
              "in-rs-pkts": 789121,
              "in-ra-pkts": 12789532,
              "in-redirect-pkts": 0,
              "out-ns-pkts": 8343,
              "out-na-pkts": 9820934,
              "out-rs-pkts": 789243,
              "out-ra-pkts": 89032423,
              "out-redirect-pkts": 0
            }
          }
        }
      }
    ]
  },
  "ietf-ipv6-nd:nd": {
    "stale-timeout": 10000
  }
}
```