diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md
index 5ee894f7aae1..79782409bb10 100644
--- a/src/sonic-yang-models/doc/Configuration.md
+++ b/src/sonic-yang-models/doc/Configuration.md
@@ -7,9 +7,12 @@ Table of Contents
* [Introduction](#introduction)
* [Configuration](#configuration)
* [Config Load and Save](#config-load-and-save)
+
* [Incremental Configuration](#incremental-configuration)
* [Redis and Json Schema](#redis-and-json-schema)
+
* [ACL and Mirroring](#acl-and-mirroring)
+ * [BGP BBR](#bgp-bbr)
* [BGP Device Global](#bgp-device-global)
* [BGP Sessions](#bgp-sessions)
* [BUFFER_PG](#buffer_pg)
@@ -366,6 +369,18 @@ and migration plan
}
}
```
+### BGP BBR
+
+The **BGP_BBR** table contains device-level BBR state.
+```
+{
+ "BGP_BBR": {
+ "all": {
+ "status": "enabled"/"disabled"
+ }
+ }
+}
+```
### BGP Device Global
The **BGP_DEVICE_GLOBAL** table contains device-level BGP global state.
diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py
index aacdd74204d7..ec1fbec42e56 100644
--- a/src/sonic-yang-models/setup.py
+++ b/src/sonic-yang-models/setup.py
@@ -79,6 +79,7 @@ def run(self):
data_files=[
('yang-models', ['./yang-models/sonic-acl.yang',
'./yang-models/sonic-auto_techsupport.yang',
+ './yang-models/sonic-bgp-bbr.yang',
'./yang-models/sonic-bgp-common.yang',
'./yang-models/sonic-bgp-device-global.yang',
'./yang-models/sonic-bgp-global.yang',
diff --git a/src/sonic-yang-models/tests/files/sample_config_db.json b/src/sonic-yang-models/tests/files/sample_config_db.json
index b0e3f5f589a7..567999143a0f 100644
--- a/src/sonic-yang-models/tests/files/sample_config_db.json
+++ b/src/sonic-yang-models/tests/files/sample_config_db.json
@@ -1597,6 +1597,11 @@
"local_ip": "12.12.0.2"
}
},
+ "BGP_BBR": {
+ "all": {
+ "status": "enabled"
+ }
+ },
"BGP_GLOBALS": {
"default": {
"router_id": "5.5.5.5",
diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/bgp_bbr.json b/src/sonic-yang-models/tests/yang_model_tests/tests/bgp_bbr.json
new file mode 100644
index 000000000000..50d1c40b119a
--- /dev/null
+++ b/src/sonic-yang-models/tests/yang_model_tests/tests/bgp_bbr.json
@@ -0,0 +1,9 @@
+{
+ "BGP_BBR_TABLE": {
+ "desc": "BGP BBR Table"
+ },
+ "BGP_BBR_INVALID_STATUS": {
+ "desc": "Configure status key with invalid value",
+ "eStrKey": "InvalidValue"
+ }
+}
\ No newline at end of file
diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/bgp_bbr.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/bgp_bbr.json
new file mode 100644
index 000000000000..f5379a4091f9
--- /dev/null
+++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/bgp_bbr.json
@@ -0,0 +1,22 @@
+{
+ "BGP_BBR_TABLE": {
+ "sonic-bgp-bbr:sonic-bgp-bbr": {
+ "sonic-bgp-bbr:BGP_BBR": {
+ "all":
+ {
+ "status": "enabled"
+ }
+ }
+ }
+ },
+ "BGP_BBR_INVALID_STATUS": {
+ "sonic-bgp-bbr:sonic-bgp-bbr": {
+ "sonic-bgp-bbr:BGP_BBR": {
+ "all":
+ {
+ "status": "true"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/sonic-yang-models/yang-models/sonic-bgp-bbr.yang b/src/sonic-yang-models/yang-models/sonic-bgp-bbr.yang
new file mode 100644
index 000000000000..58cc8823d391
--- /dev/null
+++ b/src/sonic-yang-models/yang-models/sonic-bgp-bbr.yang
@@ -0,0 +1,41 @@
+module sonic-bgp-bbr {
+ namespace "http://github.com/sonic-net/sonic-bgp-bbr";
+ prefix bgpbbr;
+ yang-version 1.1;
+
+ import sonic-types {
+ prefix stypes;
+ }
+
+ organization
+ "SONiC";
+
+ contact
+ "SONiC";
+
+ description
+ "SONIC BGP BBR";
+
+ revision 2023-12-25 {
+ description
+ "Initial revision.";
+ }
+
+ container sonic-bgp-bbr {
+ container BGP_BBR {
+
+ description "BGP_BBR table part of config_db.json";
+
+ container all {
+ leaf status {
+ type stypes:admin_mode;
+ default enabled;
+ description "bgp bbr status";
+ }
+ }
+ /* end of container all */
+ }
+ /* end of container BGP_BBR */
+ }
+ /* end of container sonic-bgp-bbr */
+}
\ No newline at end of file