Skip to content

Add MANUAL proxy-arp mode and manual-ip-prefix leaf-list to openconfig-if-ip IPv4 mode#1461

Open
jsingh2-c wants to merge 1 commit intoopenconfig:masterfrom
jsingh2-c:feature-proxy-arp-manual-mode
Open

Add MANUAL proxy-arp mode and manual-ip-prefix leaf-list to openconfig-if-ip IPv4 mode#1461
jsingh2-c wants to merge 1 commit intoopenconfig:masterfrom
jsingh2-c:feature-proxy-arp-manual-mode

Conversation

@jsingh2-c
Copy link
Copy Markdown

…penconfig-if-ip model

Change Scope

  • [This change extends the openconfig-if-ip model to support manual/static proxy ARP behavior by adding a manual-ip-prefixes list, placed parallel to the existing config and state containers under the /ipv4/proxy-arp subtree.
    Each list entry (manual-ip-prefix) is keyed by prefix and models both config and state, following the openconfig model.
    The mode enumeration under proxy-arp/config is extended to include a new value: MANUAL. In MANUAL mode, only prefixes defined under manual-ip-prefixes are eligible for proxy ARP responses.]
  • [This change is fully backward compatible:
    Existing enum values (DISABLE, REMOTE_ONLY, ALL) remain unchanged.
    Existing clients not using MANUAL mode are unaffected.
    The new list is optional and has no operational effect unless mode=MANUAL.]

Platform Implementations

  • Implementation A: Ciena 6500
    The platform requires operator‑controlled manual proxy ARP for deployment scenarios.
    The implementation uses Linux kernel proxy ARP + NFtables filtering.
    link to documentation
  • Implementation B: OpenROADM Proxy ARP Model
    OpenROADM models a similar structure for proxy ARP entries as “proxy‑subnet” using CIDR prefixes, which our model aligns with conceptually. link to documentation

Tree View

[Next, cut and paste the relevant portion of the tree with enough context for reviewers to quickly understand the change.]

 module: openconfig-if-ip
    augment /oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/oc-if:subinterface:
     +--rw ipv4
        +--rw addresses
        |  +--rw address* [ip]
        |     +--rw ip        -> ../config/ip
        |     +--rw config
        |     |  +--rw ip?              oc-inet:ipv4-address
        |     |  +--rw prefix-length?   uint8
        |     |  +--rw type?            ipv4-address-type
        |     +--ro state
        |     |  +--ro ip?              oc-inet:ipv4-address
        |     |  +--ro prefix-length?   uint8
        |     |  +--ro type?            ipv4-address-type
        |     |  +--ro origin?          ip-address-origin
        |     +--rw vrrp
        |        +--rw vrrp-group* [virtual-router-id]
        |           +--rw virtual-router-id     -> ../config/virtual-router-id
        |           +--rw config
        |           |  +--rw virtual-router-id?        uint8
        |           |  +--rw virtual-address*          oc-inet:ip-address
        |           |  +--rw priority?                 uint8
        |           |  +--rw preempt?                  boolean
        |           |  +--rw preempt-delay?            uint16
        |           |  +--rw accept-mode?              boolean
        |           |  +--rw advertisement-interval?   uint16
        |           +--ro state
        |           |  +--ro virtual-router-id?        uint8
        |           |  +--ro virtual-address*          oc-inet:ip-address
        |           |  +--ro priority?                 uint8
        |           |  +--ro preempt?                  boolean
        |           |  +--ro preempt-delay?            uint16
        |           |  +--ro accept-mode?              boolean
        |           |  +--ro advertisement-interval?   uint16
        |           |  +--ro current-priority?         uint8
        |           +--rw interface-tracking
        |              +--rw config
        |              |  +--rw track-interface*      -> /oc-if:interfaces/interface/name
        |              |  +--rw priority-decrement?   uint8
        |              +--ro state
        |                 +--ro track-interface*      -> /oc-if:interfaces/interface/name
        |                 +--ro priority-decrement?   uint8
        +--rw proxy-arp
        |  +--rw config
        |  |  +--rw mode?   enumeration
        |  +--ro state
-       |     +--ro mode?   enumeration
+       |  |  +--ro mode?   enumeration
+       |  +--rw manual-ip-prefixes
+       |     +--rw manual-ip-prefix* [prefix]
+       |        +--rw prefix    -> ../config/prefix
+       |        +--rw config
+       |        |  +--rw prefix?   oc-inet:ipv4-prefix
+       |        +--ro state
+       |           +--ro prefix?   oc-inet:ipv4-prefix
        +--rw neighbors
        |  +--rw neighbor* [ip]
        |     +--rw ip        -> ../config/ip
        |     +--rw config
        |     |  +--rw ip?                   oc-inet:ipv4-address
        |     |  +--rw link-layer-address    oc-yang:phys-address
        |     +--ro state
        |        +--ro ip?                   oc-inet:ipv4-address
        |        +--ro link-layer-address    oc-yang:phys-address
        |        +--ro origin?               neighbor-origin

@google-cla
Copy link
Copy Markdown

google-cla bot commented Mar 30, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Copy link
Copy Markdown

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

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 IPv4 proxy ARP model to version 3.10.0, introducing a 'MANUAL' mode and a corresponding 'manual-ip-prefixes' list for explicit prefix configuration. The review feedback suggests improving the clarity of the documentation by explicitly referring to 'proxy ARP mode' in the descriptions of the new configuration elements to ensure consistency and avoid ambiguity.

Comment on lines +1329 to +1330
"IPv4 prefix for which proxy ARP replies are sent when
mode is MANUAL.";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Clarify that "mode" refers to the "proxy ARP mode" in the description for better readability and consistency with other parts of the model.

Suggested change
"IPv4 prefix for which proxy ARP replies are sent when
mode is MANUAL.";
"IPv4 prefix for which proxy ARP replies are sent when the
proxy ARP mode is MANUAL.";

Comment on lines +1508 to +1509
"Collection of IPv4 prefixes for which proxy ARP replies are
sent when mode is MANUAL.";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Clarify that "mode" refers to the "proxy ARP mode" in the description to avoid ambiguity.

Suggested change
"Collection of IPv4 prefixes for which proxy ARP replies are
sent when mode is MANUAL.";
"Collection of IPv4 prefixes for which proxy ARP replies are
sent when the proxy ARP mode is MANUAL.";

@dplore
Copy link
Copy Markdown
Member

dplore commented Mar 30, 2026

Please add more description in the yang model of what the MANUAL mode is. Is this a filter of which client IP address the device will respond to ARP requests when doing proxy-ARP?

The Ciena link only goes to the main website. Please add a link to documentation describing the feature being added.

@dplore dplore moved this to In Progress in OC Operator Review Mar 30, 2026
@dplore dplore moved this from In Progress to Ready to discuss in OC Operator Review Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Ready to discuss

Development

Successfully merging this pull request may close these issues.

2 participants