Skip to content

Create openconfig-bgp-bmp.yang#1343

Open
vvlakshmanamurthy wants to merge 51 commits into
masterfrom
vvlakshmanamurthy-patch-1
Open

Create openconfig-bgp-bmp.yang#1343
vvlakshmanamurthy wants to merge 51 commits into
masterfrom
vvlakshmanamurthy-patch-1

Conversation

@vvlakshmanamurthy
Copy link
Copy Markdown

@vvlakshmanamurthy vvlakshmanamurthy commented Jul 27, 2025

Creating BGP BMP yang OC path definitions

[Note: Please fill out the following template for your pull request. lines
tagged with "Note" can be removed from the template.]

[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

  • [Please briefly describe the change that is being made to the models.]
  • [Please indicate whether this change is backwards compatible.]

Platform Implementations

[Note: Please provide at least two references to implementations which are relevant to the model changes proposed. Each implementation should be from separate organizations.].

Tree view

         |     +--rw bgp
+        |     |  +--rw oc-bgp-bmp:bmp
+        |     |     +--rw oc-bgp-bmp:stations
+        |     |        +--rw oc-bgp-bmp:station* [name]
+        |     |           +--rw oc-bgp-bmp:name                -> ../config/name
+        |     |           +--rw oc-bgp-bmp:config
+        |     |           |  +--rw oc-bgp-bmp:name?                       string
+        |     |           |  +--rw oc-bgp-bmp:enabled?                    boolean
+        |     |           |  +--rw oc-bgp-bmp:description?                string
+        |     |           |  +--rw oc-bgp-bmp:station-address?            oc-inet:host
+        |     |           |  +--rw oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |           |  +--rw oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |           |  +--rw oc-bgp-bmp:connection-mode?            connection-mode-type
+        |     |           |  +--rw oc-bgp-bmp:source-address?             union
+        |     |           |  +--rw oc-bgp-bmp:reconnect-interval?         uint32
+        |     |           |  +--rw oc-bgp-bmp:statistics-enabled?         boolean
+        |     |           +--ro oc-bgp-bmp:state
+        |     |           |  +--ro oc-bgp-bmp:name?                       string
+        |     |           |  +--ro oc-bgp-bmp:enabled?                    boolean
+        |     |           |  +--ro oc-bgp-bmp:description?                string
+        |     |           |  +--ro oc-bgp-bmp:station-address?            oc-inet:host
+        |     |           |  +--ro oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |           |  +--ro oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |           |  +--ro oc-bgp-bmp:connection-mode?            connection-mode-type
+        |     |           |  +--ro oc-bgp-bmp:source-address?             union
+        |     |           |  +--ro oc-bgp-bmp:reconnect-interval?         uint32
+        |     |           |  +--ro oc-bgp-bmp:statistics-enabled?         boolean
+        |     |           +--rw oc-bgp-bmp:tcp-keepalive
+        |     |           |  +--rw oc-bgp-bmp:config
+        |     |           |  |  +--rw oc-bgp-bmp:idle-time?            uint32
+        |     |           |  |  +--rw oc-bgp-bmp:probe-count?          uint16
+        |     |           |  |  +--rw oc-bgp-bmp:probe-interval?       uint16
+        |     |           |  |  +--rw oc-bgp-bmp:keepalive-interval?   uint16
+        |     |           |  +--ro oc-bgp-bmp:state
+        |     |           |     +--ro oc-bgp-bmp:idle-time?            uint32
+        |     |           |     +--ro oc-bgp-bmp:probe-count?          uint16
+        |     |           |     +--ro oc-bgp-bmp:probe-interval?       uint16
+        |     |           |     +--ro oc-bgp-bmp:keepalive-interval?   uint16
+        |     |           +--rw oc-bgp-bmp:route-monitoring
+        |     |              +--rw oc-bgp-bmp:config
+        |     |              |  +--rw oc-bgp-bmp:exclude-non-eligible?   boolean
+        |     |              |  +--rw oc-bgp-bmp:exclude-non-feasible?   boolean
+        |     |              +--rw oc-bgp-bmp:ribs
+        |     |                 +--rw oc-bgp-bmp:rib* [rib-type]
+        |     |                    +--rw oc-bgp-bmp:rib-type     -> ../config/rib-type
+        |     |                    +--rw oc-bgp-bmp:config
+        |     |                    |  +--rw oc-bgp-bmp:rib-type?   identityref
+        |     |                    |  +--rw oc-bgp-bmp:enabled?    boolean
+        |     |                    +--ro oc-bgp-bmp:state
+        |     |                    |  +--ro oc-bgp-bmp:rib-type?   identityref
+        |     |                    |  +--ro oc-bgp-bmp:enabled?    boolean
+        |     |                    +--rw oc-bgp-bmp:afi-safis
+        |     |                       +--rw oc-bgp-bmp:afi-safi* [name]
+        |     |                          +--rw oc-bgp-bmp:name      -> ../config/name
+        |     |                          +--rw oc-bgp-bmp:config
+        |     |                          |  +--rw oc-bgp-bmp:name?      identityref
+        |     |                          |  +--rw oc-bgp-bmp:enabled?   boolean
+        |     |                          +--ro oc-bgp-bmp:state
+        |     |                             +--ro oc-bgp-bmp:name?      identityref
+        |     |                             +--ro oc-bgp-bmp:enabled?   boolean

[ ... ]

         |     |  +--rw global

[...]

+        |     |  |  +--rw oc-bgp-bmp:bmp
+        |     |  |     +--rw oc-bgp-bmp:config
+        |     |  |     |  +--rw oc-bgp-bmp:enabled?                    boolean
+        |     |  |     |  +--rw oc-bgp-bmp:statistics-interval?        uint32
+        |     |  |     |  +--rw oc-bgp-bmp:dscp?                       uint8
+        |     |  |     |  +--rw oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |  |     |  +--rw oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |  |     +--ro oc-bgp-bmp:state
+        |     |  |     |  +--ro oc-bgp-bmp:enabled?                    boolean
+        |     |  |     |  +--ro oc-bgp-bmp:statistics-interval?        uint32
+        |     |  |     |  +--ro oc-bgp-bmp:dscp?                       uint8
+        |     |  |     |  +--ro oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |  |     |  +--ro oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |  |     +--rw oc-bgp-bmp:route-monitoring
+        |     |  |     |  +--rw oc-bgp-bmp:ribs
+        |     |  |     |     +--rw oc-bgp-bmp:rib* [rib-type]
+        |     |  |     |        +--rw oc-bgp-bmp:rib-type     -> ../config/rib-type
+        |     |  |     |        +--rw oc-bgp-bmp:config
+        |     |  |     |        |  +--rw oc-bgp-bmp:rib-type?   identityref
+        |     |  |     |        |  +--rw oc-bgp-bmp:enabled?    boolean
+        |     |  |     |        +--ro oc-bgp-bmp:state
+        |     |  |     |        |  +--ro oc-bgp-bmp:rib-type?   identityref
+        |     |  |     |        |  +--ro oc-bgp-bmp:enabled?    boolean
+        |     |  |     |        +--rw oc-bgp-bmp:afi-safis
+        |     |  |     |           +--rw oc-bgp-bmp:afi-safi* [name]
+        |     |  |     |              +--rw oc-bgp-bmp:name      -> ../config/name
+        |     |  |     |              +--rw oc-bgp-bmp:config
+        |     |  |     |              |  +--rw oc-bgp-bmp:name?      identityref
+        |     |  |     |              |  +--rw oc-bgp-bmp:enabled?   boolean
+        |     |  |     |              +--ro oc-bgp-bmp:state
+        |     |  |     |                 +--ro oc-bgp-bmp:name?      identityref
+        |     |  |     |                 +--ro oc-bgp-bmp:enabled?   boolean
         |     |  +--rw neighbors
         |     |  |  +--rw neighbor* [neighbor-address]

[ ... ]

+        |     |  |     +--rw oc-bgp-bmp:bmp
+        |     |  |        +--rw oc-bgp-bmp:config
+        |     |  |        |  +--rw oc-bgp-bmp:enabled?                    boolean
+        |     |  |        |  +--rw oc-bgp-bmp:statistics-interval?        uint32
+        |     |  |        |  +--rw oc-bgp-bmp:dscp?                       uint8
+        |     |  |        |  +--rw oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |  |        |  +--rw oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |  |        +--ro oc-bgp-bmp:state
+        |     |  |        |  +--ro oc-bgp-bmp:enabled?                    boolean
+        |     |  |        |  +--ro oc-bgp-bmp:statistics-interval?        uint32
+        |     |  |        |  +--ro oc-bgp-bmp:dscp?                       uint8
+        |     |  |        |  +--ro oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |  |        |  +--ro oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |  |        +--rw oc-bgp-bmp:route-monitoring
+        |     |  |        |  +--rw oc-bgp-bmp:ribs
+        |     |  |        |     +--rw oc-bgp-bmp:rib* [rib-type]
+        |     |  |        |        +--rw oc-bgp-bmp:rib-type     -> ../config/rib-type
+        |     |  |        |        +--rw oc-bgp-bmp:config
+        |     |  |        |        |  +--rw oc-bgp-bmp:rib-type?   identityref
+        |     |  |        |        |  +--rw oc-bgp-bmp:enabled?    boolean
+        |     |  |        |        +--ro oc-bgp-bmp:state
+        |     |  |        |        |  +--ro oc-bgp-bmp:rib-type?   identityref
+        |     |  |        |        |  +--ro oc-bgp-bmp:enabled?    boolean
+        |     |  |        |        +--rw oc-bgp-bmp:afi-safis
+        |     |  |        |           +--rw oc-bgp-bmp:afi-safi* [name]
+        |     |  |        |              +--rw oc-bgp-bmp:name      -> ../config/name
+        |     |  |        |              +--rw oc-bgp-bmp:config
+        |     |  |        |              |  +--rw oc-bgp-bmp:name?      identityref
+        |     |  |        |              |  +--rw oc-bgp-bmp:enabled?   boolean
+        |     |  |        |              +--ro oc-bgp-bmp:state
+        |     |  |        |                 +--ro oc-bgp-bmp:name?      identityref
+        |     |  |        |                 +--ro oc-bgp-bmp:enabled?   boolean
         |     |  +--rw peer-groups
         |     |  |  +--rw peer-group* [peer-group-name]

[ ... ]

+        |     |  |     |  +--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
+        |     |  |     +--rw oc-bgp-bmp:bmp
+        |     |  |        +--rw oc-bgp-bmp:config
+        |     |  |        |  +--rw oc-bgp-bmp:enabled?                    boolean
+        |     |  |        |  +--rw oc-bgp-bmp:statistics-interval?        uint32
+        |     |  |        |  +--rw oc-bgp-bmp:dscp?                       uint8
+        |     |  |        |  +--rw oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |  |        |  +--rw oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |  |        +--ro oc-bgp-bmp:state
+        |     |  |        |  +--ro oc-bgp-bmp:enabled?                    boolean
+        |     |  |        |  +--ro oc-bgp-bmp:statistics-interval?        uint32
+        |     |  |        |  +--ro oc-bgp-bmp:dscp?                       uint8
+        |     |  |        |  +--ro oc-bgp-bmp:station-port?               oc-inet:port-number
+        |     |  |        |  +--ro oc-bgp-bmp:station-network-instance?   -> /oc-netinst:network-instances/network-instance/name
+        |     |  |        +--rw oc-bgp-bmp:route-monitoring
+        |     |  |        |  +--rw oc-bgp-bmp:ribs
+        |     |  |        |     +--rw oc-bgp-bmp:rib* [rib-type]
+        |     |  |        |        +--rw oc-bgp-bmp:rib-type     -> ../config/rib-type
+        |     |  |        |        +--rw oc-bgp-bmp:config
+        |     |  |        |        |  +--rw oc-bgp-bmp:rib-type?   identityref
+        |     |  |        |        |  +--rw oc-bgp-bmp:enabled?    boolean
+        |     |  |        |        +--ro oc-bgp-bmp:state
+        |     |  |        |        |  +--ro oc-bgp-bmp:rib-type?   identityref
+        |     |  |        |        |  +--ro oc-bgp-bmp:enabled?    boolean
+        |     |  |        |        +--rw oc-bgp-bmp:afi-safis
+        |     |  |        |           +--rw oc-bgp-bmp:afi-safi* [name]
+        |     |  |        |              +--rw oc-bgp-bmp:name      -> ../config/name
+        |     |  |        |              +--rw oc-bgp-bmp:config
+        |     |  |        |              |  +--rw oc-bgp-bmp:name?      identityref
+        |     |  |        |              |  +--rw oc-bgp-bmp:enabled?   boolean
+        |     |  |        |              +--ro oc-bgp-bmp:state
+        |     |  |        |                 +--ro oc-bgp-bmp:name?      identityref
+        |     |  |        |                 +--ro oc-bgp-bmp:enabled?   boolean

Creating BGP BMP yang OC path definitions
@OpenConfigBot
Copy link
Copy Markdown

OpenConfigBot commented Jul 27, 2025

No major YANG version changes in commit 7c29ae9

Copy link
Copy Markdown
Member

@dplore dplore left a comment

Choose a reason for hiding this comment

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

Please add a .spec.yml file to ensure our CI tools and website will check and build this model. For example:
https://github.com/openconfig/public/blob/master/release/models/acl/.spec.yml

Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
@dplore dplore self-assigned this Jul 29, 2025
@dplore dplore moved this to Ready to discuss in OC Operator Review Jul 29, 2025
Copy link
Copy Markdown
Contributor

@earies earies left a comment

Choose a reason for hiding this comment

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

Provided quick first pass - some overall comments

Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang
Comment thread release/models/bgp/openconfig-bgp-bmp.yang
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
Comment thread release/models/bgp/openconfig-bgp-bmp.yang Outdated
@earies
Copy link
Copy Markdown
Contributor

earies commented Aug 4, 2025

Also want to bring to attention some prior art/IETF modeling as reference/alignment.

https://datatracker.ietf.org/doc/html/draft-ietf-grow-bmp-yang-05

@Ankur19
Copy link
Copy Markdown

Ankur19 commented Aug 6, 2025

Hi @vvlakshmanamurthy! Looking at the config, system/ or system/logging should be a better fit for the collector information.

@ElodinLaarz
Copy link
Copy Markdown
Contributor

Discussed at OC Operators Meet Oct 07:

(1) Seems like a lot of open comments; so, moving to waiting-for-author,
(2) Once the comments are addressed, can we include a tree overview in the initial comment (and maybe fill out the template, as well)

@ElodinLaarz ElodinLaarz moved this from Ready to discuss to Waiting for author in OC Operator Review Oct 7, 2025
Co-authored-by: Darren Loher <dloher@google.com>
@vvlakshmanamurthy vvlakshmanamurthy requested a review from a team as a code owner March 16, 2026 20:43
vvlakshmanamurthy and others added 6 commits March 16, 2026 15:44
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Co-authored-by: Darren Loher <dloher@google.com>
Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

updating a few comments. few more comments to resolve.

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

update comments

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

updated comments

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

corrections

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

corrected trailing white spaces

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

updated

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

commit

edited and corrected
Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

corrected

updated few corrections.
Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

updated few more corrections.

@dplore
Copy link
Copy Markdown
Member

dplore commented May 7, 2026

Fixed imports, removed duplicate nodes, fixed augments, created new tree view in PR description.

@dplore dplore moved this from Waiting for author to Ready to discuss in OC Operator Review May 7, 2026
@dplore
Copy link
Copy Markdown
Member

dplore commented May 7, 2026

Will review at May 12, 2026 OC Operators meeting

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

Updated copy

@dplore
Copy link
Copy Markdown
Member

dplore commented May 8, 2026

Moved stations to only appear at the top level for bgp:

ie: /network-instances/network-instance/protocols/protocol/bgp/bmp/stations

Copy link
Copy Markdown
Author

@vvlakshmanamurthy vvlakshmanamurthy left a comment

Choose a reason for hiding this comment

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

updates

Copy link
Copy Markdown
Member

@dplore dplore left a comment

Choose a reason for hiding this comment

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

@vvlakshmanamurthy few comments to respond to please. Thanks!

Comment on lines +366 to +370
leaf station-port {
type oc-inet:port-number;
description
"Thi is optional config at global/system level, the same can be defined at station level as well";
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is redundant, but seems intentional? What do you do if the station has a port defined and then a different port is also defined at the global/peer/neighbor level? Which port do you use? Do we really need this flexibility and do vendors already support something like this?

Comment on lines +371 to +378
leaf station-network-instance {
type leafref {
path "/oc-netinst:network-instances/oc-netinst:network-instance/oc-netinst:name";
}
description
"Thi is optional config at global/system level, the same can be defined at station level as well";
}
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is redundant, but seems intentional? What do you do if the station has a network-instance defined and then a different network-instance is also defined at the global/peer/neighbor level? Which network-instance do you use? Do we really need this flexibility and do vendors already support something like this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

How are the stations that are defined, linked to a global/peer/neighbor definition? Is it implied that all stations get streamed to? Or do we need a list of station names to be used in each global/peer/neighbor definition?

@dplore
Copy link
Copy Markdown
Member

dplore commented May 12, 2026

Platform Implementations

Please add at least two references to implementations of BMP

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

Projects

Status: Ready to discuss

Development

Successfully merging this pull request may close these issues.

7 participants