1 module in this draft: - ietf-ipv6-nd@2026-04-20.yang YANG compiler errors or warnings (pyang 2.7.1, yanglint 5.8.6) - No compiler errors or warnings Summary: -------------------------------- This is a follow-on review from prior -02 version. Most prior comments have been addressed and the module is in overall good shape. A few additional comments below. Comments: -------------------------------- - `redirect`: default "false" - This is a carry over from prior review. RFC4861 Section 8.2 states "A router SHOULD send a redirect message" so whether explicit or implicit as false, the draft/module should likely justify this. - `reachable-time`: This leaf now has a default of 30000ms as well as reference to RFC4861 Section 6.3.2 but the range still looks borrowed from AdvReachableTime w/ the max not explained. - `age`: "when" and "units" are updated but suggest changing the last sentence rather to something along the lines of "This leaf is present only for dynamic neighbor entries." - `proxy-na`: This leaf description reads a bit awkward. Suggest maybe "Controls whether the router proxies for one or more other nodes by sending proxy Neighbor Advertisements."? - Since these counters augment up into `ietf-interfaces`, all prior definitions draw relation back to how discontinuities are detected. Suggest adding descriptions around each similar to those in the anchor module surrounding relationship back to `discontinuity-time` - Security Considerations: There is mention to various leafs but not statistics or `enhanced-dad/enable` and `enhanced-dad/auto-resolve`. `enhanced-dad` is mentioned but not the above 2 r/w leafs which can trigger automated actions (drops, blocking hosts). Per message counters can reveal neighbor activity, probing, drops and redirect behavior so it may be worth considering addition to this section? - Appendix B: `LinkMTU` appears to be missing coverage. Is this not covered by way of `ietf-ip` /interfaces/interface/ipv6/mtu ? - General Nit/Suggestion: Every sub-container/categorization under `statistics` repeats `*-stats`. We already know these are buckets of statistics so suggest dropping anything repetitive or shortform and possibly just expanding out any acronyms for those container names 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-09-06T00:00:00Z" }, "ietf-ip:ipv6": { "enabled": true, "forwarding": true, "address": [ { "ip": "2001:db8:100::", "prefix-length": 64 } ], "neighbor": [ { "ip": "2001:db8:100::1a", "link-layer-address": "50:54:00:b3:4f:4a", "origin": "dynamic", "ietf-ipv6-nd:age": 600 } ], "ietf-ipv6-nd:nd": { "reachable-time": 30000, "retrans-timer": 1000, "redirect": false, "proxy-na": true, "enhanced-dad": { "enable": true, "auto-resolve": false }, "statistics": { "ns-stats": { "in-pkts": "542321", "out-pkts": "45243899", "drop-pkts": "124", "in-unicast-pkts": "345223", "in-multicast-pkts": "783", "out-unicast-pkts": "893241", "out-multicast-pkts": "893", "drop-bad-code-pkts": "12", "drop-bad-hoplimit-pkts": "5", "drop-bad-len-pkts": "2", "drop-bad-option-pkts": "9", "drop-checksum-err-pkts": "10", "drop-fragmented-pkts": "4", "out-nud-pkts": "101" }, "na-stats": { "in-pkts": "542321", "out-pkts": "45243899", "drop-pkts": "124", "in-unicast-pkts": "345223", "in-multicast-pkts": "783", "out-unicast-pkts": "893241", "out-multicast-pkts": "893", "drop-bad-code-pkts": "12", "drop-bad-hoplimit-pkts": "5", "drop-bad-len-pkts": "2", "drop-bad-option-pkts": "9", "drop-checksum-err-pkts": "10", "drop-fragmented-pkts": "4", "in-solicited-pkts": "199", "in-unsolicited-pkts": "90", "in-override-pkts": "89", "in-nonoverride-pkts": "9", "out-solicited-pkts": "199", "out-unsolicited-pkts": "90", "out-override-pkts": "89", "out-nonoverride-pkts": "9" }, "rs-stats": { "in-pkts": "542321", "out-pkts": "45243899", "drop-pkts": "124", "in-unicast-pkts": "345223", "in-multicast-pkts": "783", "out-unicast-pkts": "893241", "out-multicast-pkts": "893", "drop-bad-code-pkts": "12", "drop-bad-hoplimit-pkts": "5", "drop-bad-len-pkts": "2", "drop-bad-option-pkts": "9", "drop-checksum-err-pkts": "10", "drop-fragmented-pkts": "4" }, "ra-stats": { "in-pkts": "542321", "out-pkts": "45243899", "drop-pkts": "124", "in-unicast-pkts": "345223", "in-multicast-pkts": "783", "out-unicast-pkts": "893241", "out-multicast-pkts": "893", "drop-bad-code-pkts": "12", "drop-bad-hoplimit-pkts": "5", "drop-bad-len-pkts": "2", "drop-bad-option-pkts": "9", "drop-checksum-err-pkts": "10", "drop-fragmented-pkts": "4" }, "redirect-stats": { "in-pkts": "542321", "out-pkts": "45243899", "drop-pkts": "124", "drop-bad-code-pkts": "12", "drop-bad-hoplimit-pkts": "5", "drop-bad-len-pkts": "2", "drop-bad-option-pkts": "9", "drop-checksum-err-pkts": "10", "drop-fragmented-pkts": "4" } } } } } ] } } ```