Skip to content

Local-as refactoring and extension#1508

Open
rszarecki wants to merge 5 commits into
openconfig:masterfrom
rszarecki:Local-AS_extension
Open

Local-as refactoring and extension#1508
rszarecki wants to merge 5 commits into
openconfig:masterfrom
rszarecki:Local-AS_extension

Conversation

@rszarecki

Copy link
Copy Markdown
Contributor

local-as-options container. Extending with RFC7705 no-prepend and replace-as explicit flags and dual-as option.

[Note: Please fill out the following template for your pull request. Replace
all the text in [] with your own content.]

[Note: Before this PR can be reviewed please agree to the CLA covering this
repo. Please also review the contribution guide -
https://github.com/openconfig/public/blob/master/doc/contributions-guide.md]

Change Scope

  • Deprecate below leafs as current schema do not allow for adding flags
    • /openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/config/local-as
      */openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/neighbors/neighbor/state/local-as
      */openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/config/local-as
      */openconfig-network-instance:network-instances/network-instance/protocols/protocol/bgp/peer-groups/peer-group/state/local-as
  • Add new container local-as-options and define local-as and flags for flexibility and RFC7705 compliance.

Platform Implementations

Cross-Vendor Translation Matrix

RFC 7705 Concept Arista EOS Cisco IOS-XR Juniper Junos Nokia SR Linux (SRL)
Basic Local-AS local-as <AS> local-as <AS> local-as <AS> local-as as-number <AS>
No-Prepend (Mech 2) local-as <AS> no-prepend local-as <AS> no-prepend local-as <AS> no-prepend-global-as Controlled via BGP Policy framework
Replace-AS (Mech 3) local-as <AS> no-prepend replace-as local-as <AS> no-prepend replace-as local-as <AS> private as-path replace <AS> policy action
Dual-AS Session fallback dual-as alias Supported natively per-session

Tree View

module: openconfig-network-instance
   +--rw network-instances
      +--rw network-instance* [name]
         +--rw protocols
            +--rw protocol* [identifier name]
               +--rw bgp
                  +--rw peer-groups
                     +--rw peer-group* [peer-group-name]
@@ -953,32 +964,43 @@
                        |        +--rw prefix-limit
                        |        |  +--rw config
                        |        |  |  +--rw max-prefixes?            uint32
                        |        |  |  +--rw prevent-teardown?        boolean
                        |        |  |  +--rw warning-threshold-pct?   oc-types:percentage
                        |        |  +--ro state
                        |        |     +--ro max-prefixes?            uint32
                        |        |     +--ro prevent-teardown?        boolean
                        |        |     +--ro warning-threshold-pct?   oc-types:percentage
                        |        |     +--ro prefix-limit-exceeded?   boolean
                        |        +--rw prefix-limit-received
                        |           +--rw config
                        |           |  +--rw max-prefixes?            uint32
                        |           |  +--rw prevent-teardown?        boolean
                        |           |  +--rw warning-threshold-pct?   oc-types:percentage
                        |           +--ro state
                        |              +--ro max-prefixes?            uint32
                        |              +--ro prevent-teardown?        boolean
                        |              +--ro warning-threshold-pct?   oc-types:percentage
                        |              +--ro prefix-limit-exceeded?   boolean
+                       +--rw local-as-options
+                       |  +--rw config
+                       |  |  +--rw local-as      oc-inet:as-number
+                       |  |  +--rw no-prepend?   boolean
+                       |  |  +--rw replace-as?   boolean
+                       |  |  +--rw dual-as?      boolean
+                       |  +--ro state
+                       |     +--ro local-as      oc-inet:as-number
+                       |     +--ro no-prepend?   boolean
+                       |     +--ro replace-as?   boolean
+                       |     +--ro dual-as?      boolean
                        +--rw enable-bfd
                           +--rw config
                           |  +--rw enabled?                       boolean
                           |  +--rw desired-minimum-tx-interval?   uint32
                           |  +--rw required-minimum-receive?      uint32
                           |  +--rw detection-multiplier?          uint8
                           +--ro state
                              +--ro enabled?                       boolean
                              +--ro desired-minimum-tx-interval?   uint32
                              +--ro required-minimum-receive?      uint32
                              +--ro detection-multiplier?          uint8
 module: openconfig-network-instance
   +--rw network-instances
      +--rw network-instance* [name]
         +--rw protocols
            +--rw protocol* [identifier name]
               +--rw bgp
                  +--rw neighbors
                     +--rw neighbor* [neighbor-address]
@@ -971,32 +982,43 @@
                        |     |  +--rw prefix-limit-received
                        |     |     +--rw config
                        |     |     |  +--rw max-prefixes?            uint32
                        |     |     |  +--rw prevent-teardown?        boolean
                        |     |     |  +--rw warning-threshold-pct?   oc-types:percentage
                        |     |     +--ro state
                        |     |        +--ro max-prefixes?            uint32
                        |     |        +--ro prevent-teardown?        boolean
                        |     |        +--ro warning-threshold-pct?   oc-types:percentage
                        |     |        +--ro prefix-limit-exceeded?   boolean
                        |     +--rw use-multiple-paths
                        |        +--rw config
                        |        |  +--rw enabled?   boolean
                        |        +--ro state
                        |        |  +--ro enabled?   boolean
                        |        +--rw ebgp
                        |           +--rw config
                        |           |  +--rw allow-multiple-as?   boolean
                        |           +--ro state
                        |              +--ro allow-multiple-as?   boolean
+                       +--rw local-as-options
+                       |  +--rw config
+                       |  |  +--rw local-as      oc-inet:as-number
+                       |  |  +--rw no-prepend?   boolean
+                       |  |  +--rw replace-as?   boolean
+                       |  |  +--rw dual-as?      boolean
+                       |  +--ro state
+                       |     +--ro local-as      oc-inet:as-number
+                       |     +--ro no-prepend?   boolean
+                       |     +--ro replace-as?   boolean
+                       |     +--ro dual-as?      boolean
                        +--rw enable-bfd
                           +--rw config
                           |  +--rw enabled?                       boolean
                           |  +--rw desired-minimum-tx-interval?   uint32
                           |  +--rw required-minimum-receive?      uint32
                           |  +--rw detection-multiplier?          uint8
                           +--ro state
                              +--ro enabled?                       boolean
                              +--ro desired-minimum-tx-interval?   uint32
                              +--ro required-minimum-receive?      uint32
                              +--ro detection-multiplier?          uint8

local-as-options container. Extending with RFC7705 no-prepend
and replace-as explicit flags and dual-as option.

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

Copy link
Copy Markdown
Contributor

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 deprecates the local-as leaf and introduces a new local-as-options container under BGP neighbor and peer-group configurations, extending it with RFC7705 options (no-prepend, replace-as, and dual-as). Feedback focuses on correcting a YANG syntax error where deprecated was used incorrectly instead of status deprecated, removing a mandatory true constraint that breaks the OpenConfig inheritance model, and fixing several typos and grammatical errors in the descriptions.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread release/models/bgp/openconfig-bgp-common.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-common.yang
Comment thread release/models/bgp/openconfig-bgp-common.yang
Comment thread release/models/bgp/openconfig-bgp-common.yang
Comment thread release/models/bgp/openconfig-bgp-common.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-neighbor.yang
Comment thread release/models/bgp/openconfig-bgp-peer-group.yang
@OpenConfigBot

OpenConfigBot commented Jun 16, 2026

Copy link
Copy Markdown

No major YANG version changes in commit ee7d45e

rszarecki and others added 4 commits June 16, 2026 13:29
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Corrected typos and improved descriptions in BGP local-as configuration.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants