Skip to content

Add MANUAL proxy-arp mode and manual-ip-range to openconfig-if-ip IPv4 mode#1461

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

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

Conversation

@jsingh2-c
Copy link
Copy Markdown

@jsingh2-c jsingh2-c commented Mar 30, 2026

…penconfig-if-ip model

Change Scope

  • [This change extends the openconfig-if-ip model to support selective (manual) IPv4 proxy ARP behavior using both CIDR prefixes and explicit IP address ranges. Introduces a new typedef ipv4-address-range to represent IPv4 address ranges (e.g. 10.0.0.1-10.0.0.5). Added a new container manual-ip-ranges under /ipv4/proxy-arp & models each entry using an OpenConfig list with condif/state separation. This allows each entry to be defined as either an IPv4 prefix (oc-inet:ipv4-prefix) or an address range (ipv4-address-range) via a union type. The changes also extends /proxy-arp/config/mode with a new value MANUAL, which is a mode in which proxy ARP responses are generated only when the target IPv4 address matches a configured prefix or range in manual-ip-ranges or matches an IP address assigned to the receiving interface]
  • [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](Vendor documentation for this feature is currently internal and not publicly
    shareable prior to feature completion. The externally visible behavior is fully described by the YANG model semantics.)
  • 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-ranges
+       |     +--rw manual-ip-range* [ip-range]
+       |        +--rw ip-range    -> ../config/ip-range
+       |        +--rw config
+       |        |  +--rw ip-range?   union
+       |        +--ro state
+       |           +--ro ip-range?   union
        +--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
Contributor

@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 thread release/models/interfaces/openconfig-if-ip.yang Outdated
Comment thread release/models/interfaces/openconfig-if-ip.yang Outdated
@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
@jsingh2-c
Copy link
Copy Markdown
Author

jsingh2-c commented Apr 22, 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.

Updated the Change Scope section to clearly explain the rationale for modeling manual (prefix-based) proxy ARP behavior and clarified MANUAL mode semantics.
Updated the Platform Implementations section to explain the reference implementation and note that vendor documentation is currently internal, with model behavior fully defined by the YANG descriptions.

@jsingh2-c jsingh2-c force-pushed the feature-proxy-arp-manual-mode branch from 4483e30 to 9d624fb Compare April 22, 2026 16:33
@jsingh2-c
Copy link
Copy Markdown
Author

Rebased the branch onto the latest upstream master.
Updated the YANG descriptions to clarify MANUAL proxy ARP semantics (including explicit target IPv4 address matching) and updated the PR description to better describe the rationale and reference implementation context. Thanks for the review.

@ElodinLaarz
Copy link
Copy Markdown
Contributor

/gcbrun

@OpenConfigBot
Copy link
Copy Markdown

No major YANG version changes in commit 5d99115

@ElodinLaarz
Copy link
Copy Markdown
Contributor

Reviewed at the OC Operators Meeting on May 5th, 2026:

Seems reasonable.

Failing whitespace CI check can be fixed. Will move to last-call if there are no objections in 2 weeks.

@ElodinLaarz ElodinLaarz moved this from Ready to discuss to last-call in OC Operator Review May 19, 2026
@ElodinLaarz
Copy link
Copy Markdown
Contributor

Reviewed in OC Operators Meet May 19th, 2026:

Forgot to move to last-call, but the checks need to be fixed as well.

Adding to last-call for next week.

@jsingh2-c
Copy link
Copy Markdown
Author

Thanks for the review and feedback so far.
To further improve usability and better align with real deployment needs, we are internally evaluating some enhancements around the modeling, specifically to support a broader range of use cases, including handling both individual prefixes and wider IP ranges more flexibly.
We’ll consolidate these changes and update the PR accordingly over the next couple of days.

@dplore
Copy link
Copy Markdown
Member

dplore commented May 26, 2026

Given this PR is planned to be revised by the author, I am moving to the the "waiting for author" queue. Please ping us when ready for review.

@dplore dplore moved this from last-call to Waiting for author in OC Operator Review May 26, 2026
@jsingh2-c jsingh2-c force-pushed the feature-proxy-arp-manual-mode branch 2 times, most recently from d10184a to 7c30fa5 Compare June 1, 2026 06:03
@jsingh2-c jsingh2-c changed the title Add MANUAL proxy-arp mode and manual-ip-prefix leaf-list to openconfig-if-ip IPv4 mode Add MANUAL proxy-arp mode and manual-ip-range to openconfig-if-ip IPv4 mode Jun 1, 2026
- Add ipv4-address-range typedef with pattern and posix-pattern
- Add MANUAL enum to proxy-arp mode with selective ARP response semantics
- Add manual-ip-ranges list under proxy-arp with config/state separation
- Bump openconfig-if-ip version to 3.10.0
@jsingh2-c jsingh2-c force-pushed the feature-proxy-arp-manual-mode branch from 7c30fa5 to a4b95b1 Compare June 1, 2026 20:07
@jsingh2-c
Copy link
Copy Markdown
Author

@dplore The PR has been updated and is ready for review. Changes since last version:

  1. Renamed manual-ip-prefixes → manual-ip-ranges with a union type (ipv4-prefix | ipv4-address-range) to support both CIDR prefixes and explicit IP ranges
  2. Fixed CI failures (added required oc-ext:posix-pattern)

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

Projects

Status: Waiting for author

Development

Successfully merging this pull request may close these issues.

4 participants