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: `` should be ``. 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 } } ```