diff --git a/src/sonic-yang-models/doc/Configuration.md b/src/sonic-yang-models/doc/Configuration.md index 29e1272044a5..3590adea6b98 100644 --- a/src/sonic-yang-models/doc/Configuration.md +++ b/src/sonic-yang-models/doc/Configuration.md @@ -47,6 +47,7 @@ Table of Contents * [Management VRF](#management-vrf) * [MAP_PFC_PRIORITY_TO_QUEUE](#map_pfc_priority_to_queue) * [MUX_CABLE](#mux_cable) + * [MUX_LINKMGR](#mux_linkmgr) * [NEIGH](#neigh) * [NTP Global Configuration](#ntp-global-configuration) * [NTP and SYSLOG servers](#ntp-and-syslog-servers) @@ -1403,6 +1404,25 @@ The **MUX_CABLE** table is used for dualtor interface configuration. The `cable_ } ``` +### MUX_LINKMGR +The **MUX_LINKMGR** table is used for dualtor device configuration. +``` +{ + "MUX_LINKMGR": { + "LINK_PROBER": { + "interval_v4": "100", + "interval_v6": "1000", + "positive_signal_count": "1", + "negative_signal_count": "3", + "suspend_timer": "500", + "use_well_known_mac": "enabled", + "src_mac": "ToRMac", + "interval_pck_loss_count_update": "3" + } + } +} +``` + ### NEIGH The **NEIGH** table is used to keep track of resolved and static neighbors. diff --git a/src/sonic-yang-models/setup.py b/src/sonic-yang-models/setup.py index eab62ddcab6c..d6aeb3e0d88e 100644 --- a/src/sonic-yang-models/setup.py +++ b/src/sonic-yang-models/setup.py @@ -133,6 +133,7 @@ def run(self): './yang-models/sonic-mirror-session.yang', './yang-models/sonic-mpls-tc-map.yang', './yang-models/sonic-mux-cable.yang', + './yang-models/sonic-mux-linkmgr.yang', './yang-models/sonic-neigh.yang', './yang-models/sonic-ntp.yang', './yang-models/sonic-nat.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 9d4c291cb081..37a8e024e4d4 100644 --- a/src/sonic-yang-models/tests/files/sample_config_db.json +++ b/src/sonic-yang-models/tests/files/sample_config_db.json @@ -2120,6 +2120,19 @@ } }, + "MUX_LINKMGR": { + "LINK_PROBER": { + "interval_v4": "100", + "interval_v6": "1000", + "positive_signal_count": "1", + "negative_signal_count": "3", + "suspend_timer": "500", + "use_well_known_mac": "enabled", + "src_mac": "ToRMac", + "interval_pck_loss_count_update": "3" + } + }, + "NEIGH": { "Vlan100|100.1.1.3": { "family": "IPv4" diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests/mux-linkmgr.json b/src/sonic-yang-models/tests/yang_model_tests/tests/mux-linkmgr.json new file mode 100644 index 000000000000..3f399eec76cc --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests/mux-linkmgr.json @@ -0,0 +1,8 @@ +{ + "MUX_LINKMGR_LINK_PROBER_INTERVAL_CHANGE": { + "desc": "Consume ICMP heartbeat interval and timeout config changes. " + }, + "MUX_LINKMGR_LINK_PROBER_CHANGE_MAC_ADDR": { + "desc": "Use well-known mac and vlan mac as dst/src in linkmgrd link prober. " + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/tests/yang_model_tests/tests_config/mux-linkmgr.json b/src/sonic-yang-models/tests/yang_model_tests/tests_config/mux-linkmgr.json new file mode 100644 index 000000000000..2210c169365c --- /dev/null +++ b/src/sonic-yang-models/tests/yang_model_tests/tests_config/mux-linkmgr.json @@ -0,0 +1,26 @@ +{ + "MUX_LINKMGR_LINK_PROBER_INTERVAL_CHANGE": { + "sonic-mux-linkmgr:sonic-mux-linkmgr": { + "sonic-mux-linkmgr:MUX_LINKMGR": { + "sonic-mux-linkmgr:LINK_PROBER": + { + "interval_v4": "1000", + "interval_v6": "10000", + "positive_signal_count": 3, + "negative_signal_count": 9 + } + } + } + }, + "MUX_LINKMGR_LINK_PROBER_CHANGE_MAC_ADDR": { + "sonic-mux-linkmgr:sonic-mux-linkmgr": { + "sonic-mux-linkmgr:MUX_LINKMGR": { + "sonic-mux-linkmgr:LINK_PROBER": + { + "use_well_known_mac": "enabled", + "src_mac": "VlanMac" + } + } + } + } +} \ No newline at end of file diff --git a/src/sonic-yang-models/yang-models/sonic-mux-linkmgr.yang b/src/sonic-yang-models/yang-models/sonic-mux-linkmgr.yang new file mode 100644 index 000000000000..93e605ea8e51 --- /dev/null +++ b/src/sonic-yang-models/yang-models/sonic-mux-linkmgr.yang @@ -0,0 +1,88 @@ +module sonic-mux-linkmgr { + namespace "http://github.com/sonic-net/sonic-mux-linkmgr"; + prefix mux_linkmgr; + yang-version 1.1; + + organization + "SONiC"; + + contact + "SONiC"; + + description + "SONiC DualToR Linkmgrd configuration data"; + + revision 2023-06-07 { + description + "Initial revision"; + } + + container sonic-mux-linkmgr { + + container MUX_LINKMGR { + + container LINK_PROBER { + + leaf interval_v4 { + type uint32; + default 100; + units milliseconds; + + description "IPv4 ICMP heartbeat interval. "; + } + + leaf interval_v6 { + type uint32; + default 1000; + units milliseconds; + + description "IPv6 ICMP heartbeat interval. "; + } + + leaf positive_signal_count { + type uint32; + default 1; + + description "Linkmgrd positive signal count. "; + } + + leaf negative_signal_count { + type uint32; + default 3; + + description "Linkmgrd negative signal count. "; + } + + leaf suspend_timer { + type uint32; + + description "ICMP heartbeat suspending timer, currently not in use. "; + } + + leaf use_well_known_mac { + type enumeration { + enum enabled; + enum disabled; + } + + description "ICMP heartbeat use well known mac as dst mac or not. "; + } + + leaf src_mac { + type enumeration { + enum ToRMac; + enum VlanMac; + } + + description "ICMP heartbeat use what mac as src mac. "; + } + + leaf interval_pck_loss_count_update { + type uint32; + + description "The frequency of streaming ICMP heartbeat loss data to telemetry. "; + } + } + } + } +} \ No newline at end of file