From 064ae6ef71283c67dd7fc30c37ca21f81ca0bd4f Mon Sep 17 00:00:00 2001 From: Hamna Rauf Date: Mon, 20 Mar 2023 18:09:54 +0500 Subject: [PATCH 01/14] Add MSTP HLD --- doc/stp/MSTP_HLD.md | 497 ++++++++++++++++++++++++ doc/stp/images/MSTI_config_message.PNG | Bin 0 -> 8176 bytes doc/stp/images/MSTP_BPDU.png | Bin 0 -> 27051 bytes doc/stp/images/MSTP_architecture.png | Bin 0 -> 146563 bytes doc/stp/images/MSTP_global_disable.png | Bin 0 -> 29752 bytes doc/stp/images/MSTP_global_enable.png | Bin 0 -> 38806 bytes doc/stp/images/MSTP_instance_create.png | Bin 0 -> 19344 bytes doc/stp/images/MSTP_instance_del.png | Bin 0 -> 18399 bytes doc/stp/images/MSTP_region_config.png | Bin 0 -> 20422 bytes doc/stp/images/MSTP_vlan_add.png | Bin 0 -> 23636 bytes doc/stp/images/MSTP_vlan_del.png | Bin 0 -> 24516 bytes 11 files changed, 497 insertions(+) create mode 100644 doc/stp/MSTP_HLD.md create mode 100644 doc/stp/images/MSTI_config_message.PNG create mode 100644 doc/stp/images/MSTP_BPDU.png create mode 100644 doc/stp/images/MSTP_architecture.png create mode 100644 doc/stp/images/MSTP_global_disable.png create mode 100644 doc/stp/images/MSTP_global_enable.png create mode 100644 doc/stp/images/MSTP_instance_create.png create mode 100644 doc/stp/images/MSTP_instance_del.png create mode 100644 doc/stp/images/MSTP_region_config.png create mode 100644 doc/stp/images/MSTP_vlan_add.png create mode 100644 doc/stp/images/MSTP_vlan_del.png diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md new file mode 100644 index 00000000000..2f774e1b2b6 --- /dev/null +++ b/doc/stp/MSTP_HLD.md @@ -0,0 +1,497 @@ + +# IEEE 802.1s Multiple Spanning Tree Protocol + +**High Level Design** + +## Revision History + +|Revision No.|Description|Author|Contributors|Date| +| :- | :- | :- | :- | :- | +|1.0|MSTP Design|[Hamna Rauf](https://github.com/hamnarauf)|[Muhammad Danish](https://github.com/mdanish-kh), [Hafiz Mati ur Rehman](https://github.com/Mati86) & [Arsalan Ahmad](https://github.com/ahmadarsalan/)|March 20, 2023| + +# Table of Contents + +* [**Scope**](#scope) +* [**Abbreviations**](#abbreviations) +* [**Overview**](#overview) +* [**Requirements**](#requirements) +* [**Design**](#design) + - [Architecture](#architecture) + - [CoPP Configurations](#copp-configurations) + - [STP Container](#stp-container) + - [SWSS Container](#swss-container) +* [**Database Changes**](#database-changes) + - [CONFIG DB](#config-db) + - [APP DB](#app-db) +* [**YANG Model**](#yang-model) +* [**SAI**](#sai) +* [**Configuration Commands**](#configuration-commands) + - [Global Level](#global-level) + - [Region Level](#region-level) + - [Instance, Interface Level](#instance-interface-level) + - [Show Commands](#show-commands) + - [Clear Commands](#clear-commands) + - [Debug Commands](#debug-commands) + - [Disabled Commands](#disabled-commands) +* [**Rest API Support**](#rest-api-support) +* [**Sequence Diagrams**](#sequence-diagrams) + - [MSTP global enable](#mstp-global-enable) + - [MSTP global disable](#mstp-global-disable) + - [MSTP region name/version change](#mstp-region-nameversion-change) + - [Instance creation](#instance-creation) + - [Instance deletion](#instance-deletion) + - [Add VLAN to instance](#add-vlan-to-instance) + - [Del VLAN from instance](#del-vlan-from-instance) +* [**Warm Boot**](#warm-boot) +* [**Testing Requirements**](#testing-requirements) + - [Unit test cases](#unit-test-cases) +* [**References**](#references) + + +# Scope +This document describes the High Level Design of Multiple Spanning Tree Protocol. + +# Background +This HLD is based on the design provided by PVST HLD. + +PVST HLD: https://github.com/sonic-net/SONiC/pull/386 + +# Abbreviations + +|**Term**|**Meaning**| +| :- | :- | +|MSTP|Multiple Spanning Tree Protocol| +|PVST|Per VLAN Spanning Tree| +|STP|Spanning Tree Protocol| +|VLAN|Virtual Local Area Network| +|MSTI|Multiple Spanning Tree Instance| +|CIST|Common Internal Spanning Tree| +|CST|Common Spanning Tree| +|IST|Internal Spanning Tree| +|BPDU|Bridge Protocol Data Unit| +|RSTP|Rapid Spanning Tree Protocol| +|VID|VLAN identifier| +|MSTID|Multiple Spanning Tree Identifier| +|CoPP|Control Plane Policing| + +# Overview +Spanning Tree Protocol (STP) prevents bridge looping on LANs that include redundant links. Per VLAN Spanning Tree (PVST) is a modification of STP that allows for running multiple instances of spanning tree on per VLAN basis. Multiple Spanning Tree Protocol (MSTP) allows multiple VLANs to share a single instance of spanning tree, reducing the number of instances needed. These instances are called Multiple Spanning Tree Instances (MSTIs) that reside inside a region. + +MSTP connects all Bridges and LANs with a single Common and Internal Spanning Tree (CIST). The connectivity calculated for the CIST provides the Common Spanning Tree (CST) and Internal Spanning Tree (IST). CST provides interconnection among regions, and IST provides interconnection inside each region corresponding to MSTI 0. MSTP ensures that frames with a given VID are assigned to one and only one MSTI and the assignment is consistent amongst all the Bridges within the region. + +MSTP calculates spanning trees on the basis of Multiple Spanning Tree Bridge Protocol Data Units (MST BPDUs). + +
+MSTP BPDU Format
+MSTP BPDU +

+
+MSTI Configuration Messages
+MSTP Config Message +
+ +# Requirements +- Means of assigning VIDs to MSTIDs within each MST Region. +- Assignment of region name and revision number to represent the assignment of VIDs to MSTIDs +- Option of configuring a different root bridge for each MSTI. +- Configuration parameters of Spanning Tree such as forward delay, hello timer, hop count, max age, etc. that will help accomplish above requirements. +- Destination Mac Address for MSTP will be 01:80:C2:00:00:00 +- Interoperability with STP, RSTP and PVST via Protocol Migration. + +# Design +## Architecture +![MSTP Architecture](images/MSTP_architecture.png) + +### STP Container + +STPMgr: Subscribes to CONFIG_DB and STATE_DB tables, parsing configurations and passes to STPd. + +STPd: Responsible for all MST protocol related calculations. BPDUs are sent and received in STPd and states are updated accordingly. + +STPSync: A process running as a part of STPD. Responsible for updating all the MSTP states in APP DB. + +The BPDU rx/tx, handling of changes related to port or LAG using netlink events and STP port state sync to Linux Kernel will function the same as PVST. + +### SWSS Container + +STPOrch: Responsible for updating the ASIC DB. This includes following tasks: +1. Creating/deleting instances via SAI STP API. +1. Assigning VLAN to instance via SAI STP API and SAI VLAN API. +1. Creation of STP Port and assigning port state with respect to each instance via SAI STP API. +1. Flushing FDB entries via SAI FDB API. + +### CoPP Configurations +CoPP will be extended as follows for trapping BPDUs: +``` +"stp": { + "trap_ids" : "stp,pvrst,mstp", + "trap_group": "queue1_group1" +} +``` + +# Database Changes +Following tables will be added or updated in the database: + +## CONFIG DB +### STP_GLOBAL_TABLE +``` +mode = "pvst" / "mstp" ; a new option for mstp +max_hops = 1*3DIGIT ; max hops (1 to 255, DEF: 20) +``` +Other fields of this table i.e mode, rootguard_timeout, forward_delay, hello_time, max_age, priority will also be used to hold the configurations received from CLI. + +### MSTP_REGION_TABLE +``` +;Stores the MSTP Regional operational details +key = MSTP|REGION ; MSTP REGION key +region_name = 1*32CHAR ; region name (DEF: mac-address of switch) +revision = 1*5DIGIT ; region revision number(0 to 65535, DEF: 0) +``` + +### MSTP_INSTANCE_TABLE +``` +;Stores the MSTP instance operational details +key = MSTP_INSTANCE|"Instance"instanceid ; instance id with MSTP_INSTANCE as a prefix +priority = 1*5DIGIT ; bridge priority (0 to 61440, DEF:32768) +root = "primary" / "secondary" / "default" ; (DEF: "default") +``` + +### MSTP_VLAN_TABLE +``` +;Stores the STP instance operational details +key = MSTP_VLAN|"Vlan"vlanid ; vlan id with MSTP_VLAN as a prefix +instance_id = 1*2DIGIT ; instance id vlan is mapped to (0-63, DEF:0) +``` + +### MSTP_INSTANCE_PORT_TABLE +``` +;Stores STP interface details per Instance +key = MSTP_INSTANCE_PORT|"Instance"instanceid|ifname ; instanceid|ifname with prefix MSTP_INSTANCE_PORT, ifname can be physical or portchannel name +priority = 1*3DIGIT ; port priority (0 to 240, DEF:128) +path_cost = 1*9DIGIT ; port path cost (1 to 200000000) +``` + +## APP DB +### MSTP_REGION_TABLE +``` +;Stores the MSTP regional operational details +key = MSTP:REGION ; MSTP REGION key +regionname = 1*32CHAR ; region name (DEF: mac-address of switch) +revision = 1*5DIGIT ; region revision (0 to 65535, DEF: 0) +bridge_id = 16HEX ; bridge id +cist_root_bridge_id = 16HEX ; CIST root’s bridge id +regional_root_bridge_id = 16HEX ; Regional root’s bridge id +external_path_cost = 1*9DIGIT ; path cost to CIST bridge +internal_path_cost = 1*9DIGIT ; path cost to regional root bridge +root_port = ifName ; Root port name +root_max_age = 1*2DIGIT ; Max age as per CIST root bridge +root_hello_time = 1*2DIGIT ; hello time as per CIST root bridge +root_forward_delay = 1*2DIGIT ; forward delay as per CIST root bridge +root_max_hops = 1*3DIGIT ; max hops as per CIST root bridge +max_age = 1*2DIGIT ; maximum age time in secs (6 to 40, DEF: 20) +hello_time = 1*2DIGIT ; hello time in secs (1 to 10, DEF: 2) +forward_delay = 1*2DIGIT ; forward delay in secs (4 to 30, DEF: 15) +max_hops = 1*3DIGIT ; max hops (1 to 255; DEF:20) +last_topology_change = 1*10DIGIT ; time in secs since last topology change occured +topology_change_count = 1*10DIGIT ; Number of times topology change occured +instances_configured = 1*2DIGIT ; total number of instances configured (DEF: 1) +``` + +### MSTP_INSTANCE_TABLE +``` +;Stores the STP instance operational details +key = MSTP_INSTANCE:"Instance"instanceid ; instance id with MSTP_INSTANCE as a prefix +vlanids = vlan_id-or-range[,vlan_id-or-range] ; list of VLAN IDs +oper_status = "active" / "inactive" ; instance is active in mstp +bridge_id = 16HEXDIG ; bridge id +msti_root_bridge_id = 16HEXDIG ; MSTI regional root’s bridge id +msti_root_path_cost = 1*9DIGIT ; port path cost to MSTI root +msti_root_port = ifName ; Root port name +last_topology_change = 1*10DIGIT ; time in sec since last topology change occured +topology_change_count = 1*10DIGIT ; Number of times topology change occured +``` + +### MSTP_INSTANCE_PORT_TABLE +``` +;Stores STP interface details per Instance +key = MSTP_INSTANCE_PORT:"Instance"instanceid:ifname ; instanceid|ifname with prefix MSTP_INSTANCE_PORT +port_num = 1*3DIGIT ; port number of bridge port +path_cost = 1*9DIGIT ; port path cost (1 to 200000000) +priority = 1*3DIGIT ; port priority (0 to 240, DEF:128) +port_state = "state" ; STP state-disabled, block, listen, learn, forward +desig_root = 16HEXDIG ; designated root +desig_cost = 1*9DIGIT ; designated cost +desig_bridge = 16HEXDIG ; designated bridge +desig_port = 1*3DIGIT ; designated port +fwd_transitions = 1*5DIGIT ; number of forward transitions +bpdu_sent = 1*10DIGIT ; bpdu transmitted +bpdu_received = 1*10DIGIT ; bpdu received +tcn_sent = 1*10DIGIT ; tcn transmitted +tcn_received = 1*10DIGIT ; tcn received +root_guard_timer = 1*3DIGIT ; root guard current timer value +``` + +Following already present APP_DB tables are also used for implementation of MSTP: +### STP_PORT_STATE_TABLE +The table holds the state of a port i.e forwarding, learning, blocking with respect to each instance. +### STP_VLAN_INSTANCE_TABLE +The table holds the VLAN to instance mapping. +### STP_FASTAGEING_FLUSH_TABLE +The table informs when the FDB flushing is required. This is done in case of topology change where the mac entries in FDB become inconsistent and there is a need to flush these entries. + +# YANG Model +Yang will be extended to support MSTP. +# SAI +Following table shows the SAI Attributes that will be used: + +|**Component**|**SAI Attribute**| +| :- | :- | +|STP Instance|SAI_STP_ATTR_VLAN_LIST +||SAI_STP_ATTR_BRIDGE_ID| +||SAI_STP_ATTR_PORT_LIST| +|STP Port|SAI_STP_PORT_ATTR_STP | +||SAI_STP_PORT_ATTR_BRIDGE_PORT| +||SAI_STP_PORT_ATTR_STATE| +|STP Port States|SAI_STP_PORT_STATE_LEARNING| +||SAI_STP_PORT_STATE_FORWARDING| +||SAI_STP_PORT_STATE_BLOCKING| +|VLAN STP Instance|SAI_VLAN_ATTR_STP_INSTANCE| +|Switch STP Attributes|SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID| +||SAI_SWITCH_ATTR_MAX_STP_INSTANCE| + +Control trap packets required for MSTP **will be** defined in saihostif.h as SAI_HOSTIF_TRAP_TYPE_MSTP. + +[SAI/saihostif.h](https://github.com/opencomputeproject/SAI/blob/master/inc/saihostif.h) + + +# Configuration Commands +Following new configuration commands will be provided for configuration of MSTP: +## Global Level +- **config spanning_tree {enable|disable} {mstp|pvst}** + - Enables or disables mstp at global level on all ports of the switch. + - Only one mode of STP can be enabled at a time. +- **config spanning_tree max_hops \** + - Specify the number of maximum hops before the BPDU is discarded inside a region. + - max-hops-value: Default: 20, range: 1-255 + +## Region Level +Below commands allow configuring on region basis: + +- **config spanning_tree region name \** + - Edit the name of region + - region-name: Case sensitive, characters should be less than or equal to 32, default: mac-address of bridge +- **config spanning-tree region revision \** + - Revision number is used to track changes in the configuration and to synchronize the configuration across the switches in the same region. + - revision-number: Default: 0, range: 0-65535 + +## Instance Level + +Below commands allow configuration of an instance: + +- **config spanning_tree instance (add|del) \** + - Creation or deletion of an instance. + - instance-id: Default: 0, range: 1-63 + - Instance can not be deleted if VLAN(s) are associated with it. +- **config spanning_tree instance priority \ \** + - Configure priority of bridge for an instance. + - instance-id: id of the instance for which bridge priority is to be defined. If the provided instance id is not created yet, an error message is displayed. + - priority-value: Default: 32768, range: 0-61440 (should be multiple of 4096) +- **config spanning_tree instance root \ (primary | secondary | default)** + - Configure the bridge as a primary or secondary bridge for an instance. + - If there is a need of reverting back then the "default" option is used. + - instance-id: id of the instance for which root is to be configured. If the provided instance id is not created yet, an error message is displayed. +- **config spanning_tree instance vlan (add|del) \ \** + - VLAN to instance mapping. + - instance-id: id of the instance to which VLAN is to be mapped. If the provided instance id is not created yet, an error message is displayed. + - vlan-id: Range: 1-4094. If the provided VLAN is not created yet, an error message is displayed. + - Instance is only active when there is at least one VLAN member port configured for one of the mapped VLANs. + +## Instance, Interface Level +Following commands are used for spanning-tree configurations on per instance, per interface basis: + +- **config spanning_tree instance interface priority \ \ \** + - Configure priority of an interface for an instance. + - priority-value: Default: 128, range: 0-240 +- **config spanning_tree instance interface cost \ \ \** + - Configure path cost of an interface for an instance. + - cost-value: Range: 1-200000000 + +## Show Commands +- show spanning_tree region brief +- show spanning_tree instance \ +- show spanning_tree instance interface \ \ +``` +Spanning-tree Mode: MSTP + +MSTP Region Parameters: +Region Name : regionA +Revision : 0 +CIST Bridge Identifier : 32768002438eefbc3 +CIST Root Identifier : 32768002438eefbc3 +CIST External Path Cost : 0 +CIST Regional Root Identifier : 32768002438eefbc3 +CIST Internal Path Cost : 0 +Instances configured : 1 +Last Topology Change : 0s +Number of Topology Changes : 0 +Bridge Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 +CIST Root Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 + +MSTP instance 0 - VLANs 10, 20, 30 +------------------------------------------------------------------------------------------------- + +Bridge MSTI Root Bridge RootPath Root Port LastTopology Topology +Identifier Identifier Cost Identifier Change Change +hex hex sec cnt +32768002438eefbc3 32768002438eefbc3 0 128.13 0 0 + +MSTP Port Parameters: + +Port Prio Path Port Uplink State Designated Designated Designated +Num rity Cost Fast Fast Cost Root Bridge +Ethernet13 128 4 Y N FORWARDING 0 32768002438eefbc3 32768002438eefbc3 +``` + +- show spanning_tree statistics region +- show spanning_tree statistics instance \ +``` +MSTP instance 0 - VLANs 10, 20, 30 +-------------------------------------------------------------------- +PortNum BPDU Tx BPDU Rx TCN Tx TCN Rx +Ethernet13 10 4 3 4 +PortChannel15 20 6 4 1 +``` + +## Clear Commands +- sonic-clear spanning_tree statistics region +- sonic-clear spanning_tree statistics instance \ +- sonic-clear spanning_tree statistics instance interface \ \ + +## Debug Commands +Following debug commands will be supported for enabling additional logging which can be viewed in /var/log/stpd.log, orchagent related logs can be viewed in /var/log/syslog. + +- debug spanning_tree region +- debug spanning_tree instance \ + +Following debug commands will be supported for displaying internal data structures + +- debug spanning_tree dump region +- debug spanning_tree dump instance \ +- debug spanning_tree dump instance interface \ \ + +## Disabled Commands +Following commands are used to configure parameters at VLAN level and these commands are disabled if spanning-tree mode is MSTP: + +- config spanning_tree vlan (enable|disable) \ +- config spanning_tree vlan forward_delay \ \ +- config spanning_tree vlan hello \ \ +- config spanning_tree vlan max_age \ \ +- config spanning_tree vlan priority \ \ +- config spanning_tree vlan interface cost \ \ \ +- config spanning_tree vlan interface priority \ \ \ + +Also, Instance level commands will be disabled if spanning-tree mode is PVST. + +# Rest API Support +Rest API is out of scope for this HLD. + +# Sequence Diagrams +## MSTP global enable +![MSTP Global Enable](images/MSTP_global_enable.png) + +## MSTP global disable +![MSTP Global Disable](images/MSTP_global_disable.png) + +## MSTP region name/version change +![MSTP Region Config](images/MSTP_region_config.png) + +## Instance creation +![MSTP Instance Create](images/MSTP_instance_create.png) + +## Instance deletion +![MSTP Instance Del](images/MSTP_instance_del.png) + +## Add VLAN to instance +![MSTP VLAN Add](images/MSTP_vlan_add.png) + +## Del VLAN from instance +![MSTP VLAN Del](images/MSTP_vlan_del.png) + +Update port-state, topology change and instance-interface events remain the same as depicted in sequence diagrams of PVST. + +# Warm Boot +Warm boot will not be supported. The IEEE 802.1s standard of MSTP does not define a way to support it as this might cause loops in the network. + +If a user tries to perform a warm boot while MSTP is enabled, an error message will be displayed. User will first need to disable MSTP so the topology converges and reevaluates the paths. + + +# Testing Requirements +## Unit test cases +### CLI test cases +1. Verify CLI to enable MSTP globally. +1. Verify CLI to disable MSTP globally. +1. Verify CLI to set bridge max-hops. +1. Verify CLI to set MSTP region name. +1. Verify CLI to set MSTP region revision. +1. Verify CLI to create an instance. +1. Verify CLI to delete an instance +1. Verify CLI to set bridge priority in an instance. +1. Verify CLI to set bridge as a primary root for an instance. +1. Verify CLI to set bridge as a secondary root for an instance. +1. Verify CLI to map VLAN to an instance +1. Verify CLI to delete VLAN from an instance. +1. Verify CLI to set interface priority on a per instance basis. +1. Verify CLI to set interface cost on a per instance basis. +1. Verify CLI to display all information related to the region. +1. Verify CLI to display information related to a specific instance. +1. Verify CLI to display information about a specific interface in a specific instance. +1. Verify CLI to display region statistics. +1. Verify CLI to display statistics on a per instance basis. +1. Verify CLI to clear region statistics. +1. Verify CLI to clear statistics on a per instance basis. +1. Verify CLI to clear statistics on a per interface per instance basis. +1. Verify the commands that are disabled for MSTP mode. + +### Functional Test Cases +1. Verify CONFIG DB is populated with configured MSTP parameters. +1. Verify multiple VLANs can be mapped to a single instance. +1. Verify instance STP ports are created for its VLAN members. +1. Verify correct format of MSTP BPDU. +1. Verify MSTP traps are created. +1. Verify correct operation of CIST and MSTIs. +1. Verify two bridges are in the same region only if they have the same region name, revision and instance to VLAN mapping. +1. Verify the loop free topology inside and between regions. +1. Verify the operational values of forward delay, max age, hello timer and max hops are of the CIST root. +1. Verify FDB flush as a result of topology change. +1. Verify instance is active only when there is at least one VLAN member of any of the VLANs that are mapped to it. +1. Verify altering bridge priority can alter the selection of CIST root, regional root and MSTI root. +1. Verify altering port priority can alter the selection of designated port. +1. Verify making the bridge as root for an MSTI by altering the root property of an instance to primary. +1. Verify max-hops by changing value. +1. Verify MSTP interoperability with STP, RSTP and PVST. +1. Verify MSTP operational data is synced to APP DB and ASIC DB correctly. +1. Verify MSTP over LAG. +1. Verify MSTP over static breakout ports. + +### Logging and Debugging Test Cases +1. Verify debugging logs for a region. +1. Verify debugging logs for an instance. +1. Verify debugging of internal data structure of region. +1. Verify debugging of internal data structure of an instance. +1. Verify debugging of internal data structure of a specific interface in an instance. + +### SAI +1. Verify creation of STP instance. +1. Verify adding VLAN to an instance. +1. Verify deleting VLAN from an instance. +1. Verify adding a port to an instance. +1. Verify deleting port from an instance. +1. Verify port state for different instances. + +### L3 +1. Verify normal flow of L3 traffic with the MSTP topology. + +# References +1. [PVST HLD](https://github.com/sonic-net/SONiC/blob/master/doc/stp/SONiC_PVST_HLD.md) +1. [IEEE 802.1Q-2018](https://standards.ieee.org/ieee/802.1Q/6844/) +1. [IEEE 802.1s-2002](https://standards.ieee.org/ieee/802.1s/1042/) diff --git a/doc/stp/images/MSTI_config_message.PNG b/doc/stp/images/MSTI_config_message.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ea029c7949604d74f5bc070f2857deae10604d14 GIT binary patch literal 8176 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 literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_BPDU.png b/doc/stp/images/MSTP_BPDU.png new file mode 100644 index 0000000000000000000000000000000000000000..1fea7a4d859b03bbcccc4b686fe1cf41d8f131e5 GIT binary patch literal 27051 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 literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_architecture.png b/doc/stp/images/MSTP_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f276db90c860222dfaa8d79d9220b8f5a94a756b GIT binary patch literal 146563 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 z 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

|KxRU2$u-`ghHA~ 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 literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_global_disable.png b/doc/stp/images/MSTP_global_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..101f8cf234c36503e08064173481aef7699d665c GIT binary patch literal 29752 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

Hf`&&n{OnMM8B;K|d?4U0X65dQ6T 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 literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_instance_create.png b/doc/stp/images/MSTP_instance_create.png new file mode 100644 index 0000000000000000000000000000000000000000..c36554f5c12cac5a3eb05c92f0cbb68ac6dafeac GIT binary patch literal 19344 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 literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_instance_del.png b/doc/stp/images/MSTP_instance_del.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5855ee0169626d790cf9811ef9da6d3fa953b6 GIT binary patch literal 18399 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 literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_vlan_add.png b/doc/stp/images/MSTP_vlan_add.png new file mode 100644 index 0000000000000000000000000000000000000000..debc8b57581e206d09380e51c565895faeea223c GIT binary patch literal 23636 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 TII-jeP!EHrtDnm{r-UW|R=I?d literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_vlan_del.png b/doc/stp/images/MSTP_vlan_del.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7e67a2abb1fd47211f3898f7fe05eac1d3e7b5 GIT binary patch literal 24516 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 lCW8k1muEmDg8fiv@8C0Ewh_L4-yXDCcjS Date: Tue, 18 Apr 2023 11:25:27 +0500 Subject: [PATCH 02/14] Add YANG model --- doc/stp/MSTP_HLD.md | 255 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 252 insertions(+), 3 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index 2f774e1b2b6..89eacf8d509 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -158,7 +158,7 @@ root = "primary" / "secondary" / "default" ; (DEF: "default") ### MSTP_VLAN_TABLE ``` -;Stores the STP instance operational details +;Stores MSTP VLAN to instance mapping key = MSTP_VLAN|"Vlan"vlanid ; vlan id with MSTP_VLAN as a prefix instance_id = 1*2DIGIT ; instance id vlan is mapped to (0-63, DEF:0) ``` @@ -176,7 +176,7 @@ path_cost = 1*9DIGIT ; port path cost ( ``` ;Stores the MSTP regional operational details key = MSTP:REGION ; MSTP REGION key -regionname = 1*32CHAR ; region name (DEF: mac-address of switch) +region_name = 1*32CHAR ; region name (DEF: mac-address of switch) revision = 1*5DIGIT ; region revision (0 to 65535, DEF: 0) bridge_id = 16HEX ; bridge id cist_root_bridge_id = 16HEX ; CIST root’s bridge id @@ -240,7 +240,256 @@ The table holds the VLAN to instance mapping. The table informs when the FDB flushing is required. This is done in case of topology change where the mac entries in FDB become inconsistent and there is a need to flush these entries. # YANG Model -Yang will be extended to support MSTP. + +YANG Model will be extended as follows for MSTP: +``` +module sonic-stp { + + yang-version 1.1; + + namespace "http://github.com/sonic-net/sonic-stp"; + prefix "stp"; + + import sonic-port { + prefix port; + revision-date 2019-07-01; + } + + import sonic-portchannel { + prefix lag; + revision-date 2021-06-13; + } + + import sonic-vlan { + prefix vlan; + revision-date 2021-04-22; + } + + import sonic-device_metadata { + prefix device_metadata; + revision-date 2021-02-27; + } + + description "STP yang Module for SONiC OS"; + + revision 2023-04-18 { + description "First Revision"; + } + + container sonic-stp { + + container STP_GLOBAL { + description "Global STP table"; + + leaf mode { + type enumeration { + enum "pvst"; + enum "mstp"; + } + description "STP mode"; + } + + leaf forward_delay { + type uint8 { + range "4..30" { + error-message "forward_delay value out of range"; + } + } + default 15; + description "Forward delay in sec"; + } + + leaf hello_time { + type uint8 { + range "1..10" { + error-message "hello_time value out of range"; + } + } + default 2; + description "Hello time in sec"; + } + + leaf max_age { + type uint8 { + range "6..40" { + error-message "max_age value out of range"; + } + } + default 20; + description "Max age"; + } + + leaf rootguard_timeout { + type uint16 { + range "5..600" { + error-message "rootguard_timeout value out of range"; + } + } + default 30; + description "Root guard timeout in sec"; + } + + leaf priority { + must ". mod 4096 = 0" { + error-message "bridge priority must be a multiple of 4096"; + } + + type uint16 { + range "0..61440" { + error-message "priority value out of range"; + } + } + default 32768; + description "Bridge priority"; + } + + leaf max_hops { + type uint8 { + range "1..255" { + error-message "max-hops value out of range"; + } + } + default 20; + description "Max hops"; + } + } + + container MSTP_REGION { + description "MSTP Regional operational details"; + + leaf region_name { + type string { + length "1..32"; + } + default "device_metadata:sonic-device_metadata/device_metadata:DEVICE_METADATA/device_metadata:localhost/device_metadata:mac"; + description "Region name"; + } + + leaf revision { + type uint16 { + range "0..65535" { + error-message "revision value out of range"; + } + } + default 0; + description "Region revision"; + } + } + + container MSTP_INSTANCE { + description "MSTP instance operational details"; + + list MSTP_INSTANCE_LIST { + key "name"; + + leaf name { + type string { + pattern 'Instance([0-9]|[1-5][0-9]|[6][0-3])'; + } + } + + leaf priority { + must ". mod 4096 = 0" { + error-message "bridge priority must be a multiple of 4096"; + } + + type uint16 { + range "0..61440" { + error-message "priority value out of range"; + } + } + default 32768; + description "Bridge priority"; + } + + leaf root { + type enumeration { + enum "primary"; + enum "secondary"; + enum "default"; + } + default "default"; + description "Root priority"; + } + } + } + + container MSTP_VLAN { + description "MSTP VLAN to instance mapping"; + + list MSTP_VLAN_LIST { + key "vlan"; + + leaf vlan { + must "(current() = /vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name)" { + error-message "Must condition not satisfied, Try adding Vlan: {}, Example: 'Vlan2': {}"; + } + + type leafref { + path "/vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name"; + } + } + + leaf instance_id { + must "(concat('Instance', current()) = ../../../MSTP_INSTANCE/MSTP_INSTANCE_LIST[name=concat('Instance', current())]/name)" { + error-message "Must condition not satisfied, Try adding Instance: {}, Example: 'Instance2': {}"; + } + + type uint8 { + range "0..63"; + } + default 0; + } + } + } + + container MSTP_INSTANCE_PORT { + description "STP port details per Instance"; + + list MSTP_INSTANCE_PORT_LIST { + key "instance port"; + + leaf instance { + must "(current() = ../../../MSTP_INSTANCE/MSTP_INSTANCE_LIST[name=current()]/name)" { + error-message "Must condition not satisfied, Try adding Instance: {}, Example: 'Instance2': {}"; + } + + type leafref { + path "/stp:sonic-stp/stp:MSTP_INSTANCE/stp:MSTP_INSTANCE_LIST/stp:name"; + } + } + + leaf port { + type union { + type leafref { + path "/port:sonic-port/port:PORT/port:PORT_LIST/port:name"; + } + type leafref { + path "/lag:sonic-portchannel/lag:PORTCHANNEL/lag:PORTCHANNEL_LIST/lag:name"; + } + } + } + + leaf priority { + type uint8 { + range "0..240" { + error-message "priority value out of range"; + } + } + default 128; + description "Port priority"; + } + + leaf path_cost { + type uint32; + description "Port path cost"; + } + } + } + } +} +``` + # SAI Following table shows the SAI Attributes that will be used: From 6370e96e6acff337545ac8765cb233bebab79148 Mon Sep 17 00:00:00 2001 From: Hamna Rauf Date: Wed, 24 May 2023 21:12:13 +0500 Subject: [PATCH 03/14] Update revision history for YANG --- doc/stp/MSTP_HLD.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index 89eacf8d509..5186b1be9d1 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -5,9 +5,10 @@ ## Revision History -|Revision No.|Description|Author|Contributors|Date| -| :- | :- | :- | :- | :- | -|1.0|MSTP Design|[Hamna Rauf](https://github.com/hamnarauf)|[Muhammad Danish](https://github.com/mdanish-kh), [Hafiz Mati ur Rehman](https://github.com/Mati86) & [Arsalan Ahmad](https://github.com/ahmadarsalan/)|March 20, 2023| +|Revision No.|Description|Author|Date| +| :- | :- | :- | :- | +|0.1|MSTP Design|[Hamna Rauf](https://github.com/hamnarauf), [Muhammad Danish](https://github.com/mdanish-kh), [Rida Hanif](github.com/ridahanif96), [Hafiz Mati ur Rehman](https://github.com/Mati86) & [Arsalan Ahmad](https://github.com/ahmadarsalan/)|March 20, 2023| +|0.2|MSTP YANG Model|[Hamna Rauf](https://github.com/hamnarauf) & [Muhammad Danish](https://github.com/mdanish-kh)|May 23, 2023| # Table of Contents From e9c22c3acefe807c6c83b71bab64360272fe2ecd Mon Sep 17 00:00:00 2001 From: Hamna Rauf Date: Fri, 23 Jun 2023 10:51:30 +0500 Subject: [PATCH 04/14] Update HLD --- doc/stp/MSTP_HLD.md | 533 +++++++++++++++++++++++--------------------- 1 file changed, 275 insertions(+), 258 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index 5186b1be9d1..ed2fda8c0f5 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -7,35 +7,25 @@ |Revision No.|Description|Author|Date| | :- | :- | :- | :- | -|0.1|MSTP Design|[Hamna Rauf](https://github.com/hamnarauf), [Muhammad Danish](https://github.com/mdanish-kh), [Rida Hanif](github.com/ridahanif96), [Hafiz Mati ur Rehman](https://github.com/Mati86) & [Arsalan Ahmad](https://github.com/ahmadarsalan/)|March 20, 2023| -|0.2|MSTP YANG Model|[Hamna Rauf](https://github.com/hamnarauf) & [Muhammad Danish](https://github.com/mdanish-kh)|May 23, 2023| +|0.1|Intial Design|[Hamna Rauf](https://github.com/hamnarauf), [Muhammad Danish](https://github.com/mdanish-kh), [Rida Hanif](github.com/ridahanif96), [Hafiz Mati ur Rehman](https://github.com/Mati86) & [Arsalan Ahmad](https://github.com/ahmadarsalan/)|March 20, 2023| # Table of Contents -* [**Scope**](#scope) -* [**Abbreviations**](#abbreviations) -* [**Overview**](#overview) -* [**Requirements**](#requirements) -* [**Design**](#design) - - [Architecture](#architecture) - - [CoPP Configurations](#copp-configurations) +* [Scope](#scope) +* [Background](#background) +* [Abbreviations](#abbreviations) +* [Overview](#overview) +* [Introduction](#introduction) +* [Requirements](#requirements) +* [Architecture Design](#architecture-design) - [STP Container](#stp-container) - [SWSS Container](#swss-container) -* [**Database Changes**](#database-changes) + - [CoPP Configurations](#copp-configurations) +* [Database Changes](#database-changes) - [CONFIG DB](#config-db) - [APP DB](#app-db) -* [**YANG Model**](#yang-model) -* [**SAI**](#sai) -* [**Configuration Commands**](#configuration-commands) - - [Global Level](#global-level) - - [Region Level](#region-level) - - [Instance, Interface Level](#instance-interface-level) - - [Show Commands](#show-commands) - - [Clear Commands](#clear-commands) - - [Debug Commands](#debug-commands) - - [Disabled Commands](#disabled-commands) -* [**Rest API Support**](#rest-api-support) -* [**Sequence Diagrams**](#sequence-diagrams) +* [SAI](#sai) +* [Sequence Diagrams](#sequence-diagrams) - [MSTP global enable](#mstp-global-enable) - [MSTP global disable](#mstp-global-disable) - [MSTP region name/version change](#mstp-region-nameversion-change) @@ -43,11 +33,20 @@ - [Instance deletion](#instance-deletion) - [Add VLAN to instance](#add-vlan-to-instance) - [Del VLAN from instance](#del-vlan-from-instance) -* [**Warm Boot**](#warm-boot) -* [**Testing Requirements**](#testing-requirements) +* [Configuration Commands](#configuration-commands) + - [Global Level](#global-level) + - [Region Level](#region-level) + - [Instance, Interface Level](#instance-interface-level) + - [Show Commands](#show-commands) + - [Clear Commands](#clear-commands) + - [Debug Commands](#debug-commands) + - [Disabled Commands](#disabled-commands) +* [YANG Model](#yang-model) +* [Rest API Support](#rest-api-support) +* [Warm Boot](#warm-boot) +* [Testing Requirements](#testing-requirements) - [Unit test cases](#unit-test-cases) -* [**References**](#references) - +* [References](#references) # Scope This document describes the High Level Design of Multiple Spanning Tree Protocol. @@ -76,9 +75,18 @@ PVST HLD: https://github.com/sonic-net/SONiC/pull/386 |CoPP|Control Plane Policing| # Overview -Spanning Tree Protocol (STP) prevents bridge looping on LANs that include redundant links. Per VLAN Spanning Tree (PVST) is a modification of STP that allows for running multiple instances of spanning tree on per VLAN basis. Multiple Spanning Tree Protocol (MSTP) allows multiple VLANs to share a single instance of spanning tree, reducing the number of instances needed. These instances are called Multiple Spanning Tree Instances (MSTIs) that reside inside a region. +Multiple Spanning Tree Protocol (MSTP) enhances the Spanning Tree Protocol (STP) by enabling the creation of multiple spanning tree instances within a network. It provides a mechanism to map VLANs to specific spanning tree instances which offers network segmentation and improved control over traffic flow. + +# Introduction +Spanning Tree Protocol (STP) prevents bridge looping on LANs that include redundant links. Per VLAN Spanning Tree (PVST) is a modification of STP that allows for running separate instances of spanning tree for each VLAN. -MSTP connects all Bridges and LANs with a single Common and Internal Spanning Tree (CIST). The connectivity calculated for the CIST provides the Common Spanning Tree (CST) and Internal Spanning Tree (IST). CST provides interconnection among regions, and IST provides interconnection inside each region corresponding to MSTI 0. MSTP ensures that frames with a given VID are assigned to one and only one MSTI and the assignment is consistent amongst all the Bridges within the region. +Multiple Spanning Tree Protocol (MSTP) allows frames assigned to different VLANs to follow separate paths. These paths are based on independent Multiple Spanning Tree Instances (MSTI), within Multiple Spanning Tree (MST) Region. These Regions and the other Bridges and LANs are connected into a single Common Spanning Tree (CST). + +MSTP connects all Bridges and LANs with a single Common and Internal Spanning Tree (CIST). The connectivity calculated for the CIST provides the CST for interconnecting these Regions, and an Internal Spanning Tree (IST) within each Region. MSTP ensures that frames with a given VID are assigned to one and only one of the MSTIs or the IST within the Region, that the assignment is consistent amongst all the Bridges within the region. + +By providing VLAN-to-instance mapping, MSTP ensures that a limited number of instances are created, allowing for network segregation. In contrast, PVST lacks control over VLAN-to-instance mapping, leading to numerous instances and inefficient memory utilization. + +STP only supports a single instance, resulting in under utilized network bandwidth due to complete link blocking. Therefore, MSTP offers better control over instances, efficient resource usage, and improved network performance compared to PVST and STP. MSTP calculates spanning trees on the basis of Multiple Spanning Tree Bridge Protocol Data Units (MST BPDUs). @@ -92,37 +100,46 @@ MSTI Configuration Messages
# Requirements -- Means of assigning VIDs to MSTIDs within each MST Region. -- Assignment of region name and revision number to represent the assignment of VIDs to MSTIDs -- Option of configuring a different root bridge for each MSTI. -- Configuration parameters of Spanning Tree such as forward delay, hello timer, hop count, max age, etc. that will help accomplish above requirements. -- Destination Mac Address for MSTP will be 01:80:C2:00:00:00 -- Interoperability with STP, RSTP and PVST via Protocol Migration. - -# Design -## Architecture +1. Support the assignment of multiple VLAN(s) to multiple spanning tree identifiers (MSTI) within each region. +1. Support the option to assign a region name and revision number to MSTP regions in order to achieve unique identification of VLAN to instance mapping across switches. +1. Support path selection and forwarding behaviour in MSTI to optimize network performance within each instance by configuring a distinct root bridge. +1. Support the configuration of spanning tree parameters such as forward delay, hello timer, hop count, max age. +1. The Destination Mac Address will be 01:80:C2:00:00:00 for MSTP BPDUs. +1. Support compatibility with networks employing different spanning tree protocols, such as STP, RSTP via Protocol Migration. + +# Architecture Design +Following diagram explains the architectural design and linkages for MSTP. MSTP uses multiple existing SONiC containers, configuration details of each is mentioned below as well. + ![MSTP Architecture](images/MSTP_architecture.png) -### STP Container +## STP Container +STP Container is responsible for actions taken for BPDU rx and BPDU tx. Following are the details for implementation: -STPMgr: Subscribes to CONFIG_DB and STATE_DB tables, parsing configurations and passes to STPd. +### STPMgr +Subscribes to CONFIG_DB and STATE_DB tables, parsing configurations and passes to STPd. -STPd: Responsible for all MST protocol related calculations. BPDUs are sent and received in STPd and states are updated accordingly. +### STPd +Responsible for all MST protocol related calculations. BPDUs are sent and received in STPd and states are updated accordingly. -STPSync: A process running as a part of STPD. Responsible for updating all the MSTP states in APP DB. +### STPSync +A process running as a part of STPD. Responsible for updating all the MSTP states in APP DB. The BPDU rx/tx, handling of changes related to port or LAG using netlink events and STP port state sync to Linux Kernel will function the same as PVST. -### SWSS Container +## SWSS Container + +SWSS Container is responsible for passing on configurations to SAI as follows: + +### STPOrch +Updates SAI via following APIs: -STPOrch: Responsible for updating the ASIC DB. This includes following tasks: 1. Creating/deleting instances via SAI STP API. -1. Assigning VLAN to instance via SAI STP API and SAI VLAN API. -1. Creation of STP Port and assigning port state with respect to each instance via SAI STP API. -1. Flushing FDB entries via SAI FDB API. +2. Assigning VLAN to instance via SAI STP API and SAI VLAN API. +3. Creation of STP Port and assigning port state with respect to each instance via SAI STP API. +4. Flushing FDB entries via SAI FDB API. -### CoPP Configurations -CoPP will be extended as follows for trapping BPDUs: +## CoPP Configurations +MSTP facilitates the exchange of control packets, known as Bridge Protocol Data Units (BPDUs), among switches to establish and maintain loop-free paths in a network. In order to trap these BPDUs, Control Plane Policing (CoPP) will be extended as follows: ``` "stp": { "trap_ids" : "stp,pvrst,mstp", @@ -131,17 +148,25 @@ CoPP will be extended as follows for trapping BPDUs: ``` # Database Changes -Following tables will be added or updated in the database: +MSTP design introduces some new tables for configuration along with slight modification in existing STP tables. Following are details of each individual table: ## CONFIG DB -### STP_GLOBAL_TABLE + +### Existing Table +Following existing table of CONFIG_DB will be modified for MSTP implementation: + +#### STP_GLOBAL_TABLE +A new value of `mstp` for `mode` column and a new column for holding `max-hops` ``` -mode = "pvst" / "mstp" ; a new option for mstp -max_hops = 1*3DIGIT ; max hops (1 to 255, DEF: 20) +mode = "pvst" / "mstp" / "none" ; a new option for mstp (DEF: "none") +max_hops = 1*3DIGIT ; max hops (1 to 255, DEF: 20) ``` -Other fields of this table i.e mode, rootguard_timeout, forward_delay, hello_time, max_age, priority will also be used to hold the configurations received from CLI. +Other fields of this table i.e rootguard_timeout, forward_delay, hello_time, max_age, priority will also be used to hold the configurations received from CLI. -### MSTP_REGION_TABLE +### New Tables +Following new tables will be added to CONFIG_DB: + +#### MSTP_REGION_TABLE ``` ;Stores the MSTP Regional operational details key = MSTP|REGION ; MSTP REGION key @@ -149,22 +174,21 @@ region_name = 1*32CHAR ; region name (DEF: mac-address of switch) revision = 1*5DIGIT ; region revision number(0 to 65535, DEF: 0) ``` -### MSTP_INSTANCE_TABLE +#### MSTP_INSTANCE_TABLE ``` ;Stores the MSTP instance operational details key = MSTP_INSTANCE|"Instance"instanceid ; instance id with MSTP_INSTANCE as a prefix priority = 1*5DIGIT ; bridge priority (0 to 61440, DEF:32768) -root = "primary" / "secondary" / "default" ; (DEF: "default") ``` -### MSTP_VLAN_TABLE +#### MSTP_VLAN_TABLE ``` ;Stores MSTP VLAN to instance mapping key = MSTP_VLAN|"Vlan"vlanid ; vlan id with MSTP_VLAN as a prefix instance_id = 1*2DIGIT ; instance id vlan is mapped to (0-63, DEF:0) ``` -### MSTP_INSTANCE_PORT_TABLE +#### MSTP_INSTANCE_PORT_TABLE ``` ;Stores STP interface details per Instance key = MSTP_INSTANCE_PORT|"Instance"instanceid|ifname ; instanceid|ifname with prefix MSTP_INSTANCE_PORT, ifname can be physical or portchannel name @@ -173,11 +197,15 @@ path_cost = 1*9DIGIT ; port path cost ( ``` ## APP DB -### MSTP_REGION_TABLE + +### New Tables +Following new tables are introduced as part of MSTP Feature: + +#### MSTP_REGION_TABLE ``` ;Stores the MSTP regional operational details key = MSTP:REGION ; MSTP REGION key -region_name = 1*32CHAR ; region name (DEF: mac-address of switch) +region_name = 1*32CHAR ; region name (DEF: mac-address of switch) revision = 1*5DIGIT ; region revision (0 to 65535, DEF: 0) bridge_id = 16HEX ; bridge id cist_root_bridge_id = 16HEX ; CIST root’s bridge id @@ -198,7 +226,7 @@ topology_change_count = 1*10DIGIT ; Number of times topology change instances_configured = 1*2DIGIT ; total number of instances configured (DEF: 1) ``` -### MSTP_INSTANCE_TABLE +#### MSTP_INSTANCE_TABLE ``` ;Stores the STP instance operational details key = MSTP_INSTANCE:"Instance"instanceid ; instance id with MSTP_INSTANCE as a prefix @@ -212,7 +240,7 @@ last_topology_change = 1*10DIGIT ; time in sec topology_change_count = 1*10DIGIT ; Number of times topology change occured ``` -### MSTP_INSTANCE_PORT_TABLE +#### MSTP_INSTANCE_PORT_TABLE ``` ;Stores STP interface details per Instance key = MSTP_INSTANCE_PORT:"Instance"instanceid:ifname ; instanceid|ifname with prefix MSTP_INSTANCE_PORT @@ -232,18 +260,194 @@ tcn_received = 1*10DIGIT ; tcn re root_guard_timer = 1*3DIGIT ; root guard current timer value ``` +### Existing Tables Following already present APP_DB tables are also used for implementation of MSTP: -### STP_PORT_STATE_TABLE + +#### STP_PORT_STATE_TABLE The table holds the state of a port i.e forwarding, learning, blocking with respect to each instance. -### STP_VLAN_INSTANCE_TABLE +#### STP_VLAN_INSTANCE_TABLE The table holds the VLAN to instance mapping. -### STP_FASTAGEING_FLUSH_TABLE +#### STP_FASTAGEING_FLUSH_TABLE The table informs when the FDB flushing is required. This is done in case of topology change where the mac entries in FDB become inconsistent and there is a need to flush these entries. +# SAI + +## Existing SAI Attributes +Following table shows the existing SAI Attributes that will be used: + +|**Component**|**SAI Attribute**| +| :- | :- | +|STP Instance|SAI_STP_ATTR_VLAN_LIST +||SAI_STP_ATTR_BRIDGE_ID| +||SAI_STP_ATTR_PORT_LIST| +|STP Port|SAI_STP_PORT_ATTR_STP | +||SAI_STP_PORT_ATTR_BRIDGE_PORT| +||SAI_STP_PORT_ATTR_STATE| +|STP Port States|SAI_STP_PORT_STATE_LEARNING| +||SAI_STP_PORT_STATE_FORWARDING| +||SAI_STP_PORT_STATE_BLOCKING| +|VLAN STP Instance|SAI_VLAN_ATTR_STP_INSTANCE| +|Switch STP Attributes|SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID| +||SAI_SWITCH_ATTR_MAX_STP_INSTANCE| + +## New SAI Attributes +MSTP design requires one new attribute `SAI_HOSTIF_TRAP_TYPE_MSTP` for control trap packets which will be defined in saihostif.h. + +[SAI/saihostif.h](https://github.com/opencomputeproject/SAI/blob/master/inc/saihostif.h) + +# Sequence Diagrams +## MSTP global enable +![MSTP Global Enable](images/MSTP_global_enable.png) + +## MSTP global disable +![MSTP Global Disable](images/MSTP_global_disable.png) + +## MSTP region name/version change +![MSTP Region Config](images/MSTP_region_config.png) + +## Instance creation +![MSTP Instance Create](images/MSTP_instance_create.png) + +## Instance deletion +![MSTP Instance Del](images/MSTP_instance_del.png) + +## Add VLAN to instance +![MSTP VLAN Add](images/MSTP_vlan_add.png) + +## Del VLAN from instance +![MSTP VLAN Del](images/MSTP_vlan_del.png) + +Update port-state, topology change and instance-interface events remain the same as depicted in sequence diagrams of PVST. + +# Configuration Commands +Following configuration commands will be provided for configuration of MSTP: +## Global Level +- **config spanning_tree {enable|disable} {mstp|pvst}** + - Enables or disables mstp at global level on all ports of the switch. + - Only one mode of STP can be enabled at a time. +- **config spanning_tree max_hops \** + - Specify the number of maximum hops before the BPDU is discarded inside a region. + - max-hops-value: Default: 20, range: 1-255 + +## Region Level +Below commands allow configuring on region basis: + +- **config spanning_tree region name \** + - Edit the name of region + - region-name: Case sensitive, characters should be less than or equal to 32, default: mac-address of bridge +- **config spanning-tree region revision \** + - Revision number is used to track changes in the configuration and to synchronize the configuration across the switches in the same region. + - revision-number: Default: 0, range: 0-65535 + +## Instance Level + +Below commands allow configuration of an instance: + +- **config spanning_tree instance (add|del) \** + - Creation or deletion of an instance. + - instance-id: Default: 0, range: 1-63 + - Instance can not be deleted if VLAN(s) are associated with it. +- **config spanning_tree instance priority \ \** + - Configure priority of bridge for an instance. + - instance-id: id of the instance for which bridge priority is to be defined. If the provided instance id is not created yet, an error message is displayed. + - priority-value: Default: 32768, range: 0-61440 (should be multiple of 4096) +- **config spanning_tree instance vlan (add|del) \ \** + - VLAN to instance mapping. + - instance-id: id of the instance to which VLAN is to be mapped. If the provided instance id is not created yet, an error message is displayed. + - vlan-id: Range: 1-4094. If the provided VLAN is not created yet, an error message is displayed. + - Instance is only active when there is at least one VLAN member port configured for one of the mapped VLANs. + +## Instance, Interface Level +Following commands are used for spanning-tree configurations on per instance, per interface basis: + +- **config spanning_tree instance interface priority \ \ \** + - Configure priority of an interface for an instance. + - priority-value: Default: 128, range: 0-240 +- **config spanning_tree instance interface cost \ \ \** + - Configure path cost of an interface for an instance. + - cost-value: Range: 1-200000000 + +## Show Commands +- show spanning_tree region brief +- show spanning_tree instance \ +- show spanning_tree instance interface \ \ +``` +Spanning-tree Mode: MSTP + +MSTP Region Parameters: +Region Name : regionA +Revision : 0 +CIST Bridge Identifier : 32768002438eefbc3 +CIST Root Identifier : 32768002438eefbc3 +CIST External Path Cost : 0 +CIST Regional Root Identifier : 32768002438eefbc3 +CIST Internal Path Cost : 0 +Instances configured : 1 +Last Topology Change : 0s +Number of Topology Changes : 0 +Bridge Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 +CIST Root Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 + +MSTP instance 0 - VLANs 10, 20, 30 +------------------------------------------------------------------------------------------------- + +Bridge MSTI Root Bridge RootPath Root Port LastTopology Topology +Identifier Identifier Cost Identifier Change Change +hex hex sec cnt +32768002438eefbc3 32768002438eefbc3 0 128.13 0 0 + +MSTP Port Parameters: + +Port Prio Path Port Uplink State Designated Designated Designated +Num rity Cost Fast Fast Cost Root Bridge +Ethernet13 128 4 Y N FORWARDING 0 32768002438eefbc3 32768002438eefbc3 +``` + +- show spanning_tree statistics region +- show spanning_tree statistics instance \ +``` +MSTP instance 0 - VLANs 10, 20, 30 +-------------------------------------------------------------------- +PortNum BPDU Tx BPDU Rx TCN Tx TCN Rx +Ethernet13 10 4 3 4 +PortChannel15 20 6 4 1 +``` + +## Clear Commands +- sonic-clear spanning_tree statistics region +- sonic-clear spanning_tree statistics instance \ +- sonic-clear spanning_tree statistics instance interface \ \ + +## Debug Commands +Following debug commands will be supported for enabling additional logging which can be viewed in /var/log/stpd.log, orchagent related logs can be viewed in /var/log/syslog. + +- debug spanning_tree region +- debug spanning_tree instance \ + +Following debug commands will be supported for displaying internal data structures + +- debug spanning_tree dump region +- debug spanning_tree dump instance \ +- debug spanning_tree dump instance interface \ \ + +## Disabled Commands +Following commands are used to configure parameters at VLAN level and these commands are disabled if spanning-tree mode is MSTP: + +- config spanning_tree vlan (enable|disable) \ +- config spanning_tree vlan forward_delay \ \ +- config spanning_tree vlan hello \ \ +- config spanning_tree vlan max_age \ \ +- config spanning_tree vlan priority \ \ +- config spanning_tree vlan interface cost \ \ \ +- config spanning_tree vlan interface priority \ \ \ + +Also, Instance level commands will be disabled if spanning-tree mode is PVST. + + # YANG Model YANG Model will be extended as follows for MSTP: -``` +```yang module sonic-stp { yang-version 1.1; @@ -286,7 +490,9 @@ module sonic-stp { type enumeration { enum "pvst"; enum "mstp"; + enum "none"; } + default "none"; description "STP mode"; } @@ -402,16 +608,6 @@ module sonic-stp { default 32768; description "Bridge priority"; } - - leaf root { - type enumeration { - enum "primary"; - enum "secondary"; - enum "default"; - } - default "default"; - description "Root priority"; - } } } @@ -491,189 +687,13 @@ module sonic-stp { } ``` -# SAI -Following table shows the SAI Attributes that will be used: - -|**Component**|**SAI Attribute**| -| :- | :- | -|STP Instance|SAI_STP_ATTR_VLAN_LIST -||SAI_STP_ATTR_BRIDGE_ID| -||SAI_STP_ATTR_PORT_LIST| -|STP Port|SAI_STP_PORT_ATTR_STP | -||SAI_STP_PORT_ATTR_BRIDGE_PORT| -||SAI_STP_PORT_ATTR_STATE| -|STP Port States|SAI_STP_PORT_STATE_LEARNING| -||SAI_STP_PORT_STATE_FORWARDING| -||SAI_STP_PORT_STATE_BLOCKING| -|VLAN STP Instance|SAI_VLAN_ATTR_STP_INSTANCE| -|Switch STP Attributes|SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID| -||SAI_SWITCH_ATTR_MAX_STP_INSTANCE| - -Control trap packets required for MSTP **will be** defined in saihostif.h as SAI_HOSTIF_TRAP_TYPE_MSTP. - -[SAI/saihostif.h](https://github.com/opencomputeproject/SAI/blob/master/inc/saihostif.h) - - -# Configuration Commands -Following new configuration commands will be provided for configuration of MSTP: -## Global Level -- **config spanning_tree {enable|disable} {mstp|pvst}** - - Enables or disables mstp at global level on all ports of the switch. - - Only one mode of STP can be enabled at a time. -- **config spanning_tree max_hops \** - - Specify the number of maximum hops before the BPDU is discarded inside a region. - - max-hops-value: Default: 20, range: 1-255 - -## Region Level -Below commands allow configuring on region basis: - -- **config spanning_tree region name \** - - Edit the name of region - - region-name: Case sensitive, characters should be less than or equal to 32, default: mac-address of bridge -- **config spanning-tree region revision \** - - Revision number is used to track changes in the configuration and to synchronize the configuration across the switches in the same region. - - revision-number: Default: 0, range: 0-65535 - -## Instance Level - -Below commands allow configuration of an instance: - -- **config spanning_tree instance (add|del) \** - - Creation or deletion of an instance. - - instance-id: Default: 0, range: 1-63 - - Instance can not be deleted if VLAN(s) are associated with it. -- **config spanning_tree instance priority \ \** - - Configure priority of bridge for an instance. - - instance-id: id of the instance for which bridge priority is to be defined. If the provided instance id is not created yet, an error message is displayed. - - priority-value: Default: 32768, range: 0-61440 (should be multiple of 4096) -- **config spanning_tree instance root \ (primary | secondary | default)** - - Configure the bridge as a primary or secondary bridge for an instance. - - If there is a need of reverting back then the "default" option is used. - - instance-id: id of the instance for which root is to be configured. If the provided instance id is not created yet, an error message is displayed. -- **config spanning_tree instance vlan (add|del) \ \** - - VLAN to instance mapping. - - instance-id: id of the instance to which VLAN is to be mapped. If the provided instance id is not created yet, an error message is displayed. - - vlan-id: Range: 1-4094. If the provided VLAN is not created yet, an error message is displayed. - - Instance is only active when there is at least one VLAN member port configured for one of the mapped VLANs. - -## Instance, Interface Level -Following commands are used for spanning-tree configurations on per instance, per interface basis: - -- **config spanning_tree instance interface priority \ \ \** - - Configure priority of an interface for an instance. - - priority-value: Default: 128, range: 0-240 -- **config spanning_tree instance interface cost \ \ \** - - Configure path cost of an interface for an instance. - - cost-value: Range: 1-200000000 - -## Show Commands -- show spanning_tree region brief -- show spanning_tree instance \ -- show spanning_tree instance interface \ \ -``` -Spanning-tree Mode: MSTP - -MSTP Region Parameters: -Region Name : regionA -Revision : 0 -CIST Bridge Identifier : 32768002438eefbc3 -CIST Root Identifier : 32768002438eefbc3 -CIST External Path Cost : 0 -CIST Regional Root Identifier : 32768002438eefbc3 -CIST Internal Path Cost : 0 -Instances configured : 1 -Last Topology Change : 0s -Number of Topology Changes : 0 -Bridge Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 -CIST Root Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 - -MSTP instance 0 - VLANs 10, 20, 30 -------------------------------------------------------------------------------------------------- - -Bridge MSTI Root Bridge RootPath Root Port LastTopology Topology -Identifier Identifier Cost Identifier Change Change -hex hex sec cnt -32768002438eefbc3 32768002438eefbc3 0 128.13 0 0 - -MSTP Port Parameters: - -Port Prio Path Port Uplink State Designated Designated Designated -Num rity Cost Fast Fast Cost Root Bridge -Ethernet13 128 4 Y N FORWARDING 0 32768002438eefbc3 32768002438eefbc3 -``` - -- show spanning_tree statistics region -- show spanning_tree statistics instance \ -``` -MSTP instance 0 - VLANs 10, 20, 30 --------------------------------------------------------------------- -PortNum BPDU Tx BPDU Rx TCN Tx TCN Rx -Ethernet13 10 4 3 4 -PortChannel15 20 6 4 1 -``` - -## Clear Commands -- sonic-clear spanning_tree statistics region -- sonic-clear spanning_tree statistics instance \ -- sonic-clear spanning_tree statistics instance interface \ \ - -## Debug Commands -Following debug commands will be supported for enabling additional logging which can be viewed in /var/log/stpd.log, orchagent related logs can be viewed in /var/log/syslog. - -- debug spanning_tree region -- debug spanning_tree instance \ - -Following debug commands will be supported for displaying internal data structures - -- debug spanning_tree dump region -- debug spanning_tree dump instance \ -- debug spanning_tree dump instance interface \ \ - -## Disabled Commands -Following commands are used to configure parameters at VLAN level and these commands are disabled if spanning-tree mode is MSTP: - -- config spanning_tree vlan (enable|disable) \ -- config spanning_tree vlan forward_delay \ \ -- config spanning_tree vlan hello \ \ -- config spanning_tree vlan max_age \ \ -- config spanning_tree vlan priority \ \ -- config spanning_tree vlan interface cost \ \ \ -- config spanning_tree vlan interface priority \ \ \ - -Also, Instance level commands will be disabled if spanning-tree mode is PVST. - # Rest API Support Rest API is out of scope for this HLD. -# Sequence Diagrams -## MSTP global enable -![MSTP Global Enable](images/MSTP_global_enable.png) - -## MSTP global disable -![MSTP Global Disable](images/MSTP_global_disable.png) - -## MSTP region name/version change -![MSTP Region Config](images/MSTP_region_config.png) - -## Instance creation -![MSTP Instance Create](images/MSTP_instance_create.png) - -## Instance deletion -![MSTP Instance Del](images/MSTP_instance_del.png) - -## Add VLAN to instance -![MSTP VLAN Add](images/MSTP_vlan_add.png) - -## Del VLAN from instance -![MSTP VLAN Del](images/MSTP_vlan_del.png) - -Update port-state, topology change and instance-interface events remain the same as depicted in sequence diagrams of PVST. - # Warm Boot -Warm boot will not be supported. The IEEE 802.1s standard of MSTP does not define a way to support it as this might cause loops in the network. - -If a user tries to perform a warm boot while MSTP is enabled, an error message will be displayed. User will first need to disable MSTP so the topology converges and reevaluates the paths. +Warm boot will not be supported. The IEEE 802.1s standard of MSTP does not define any potential way to support it as this might cause loops in the network. +User is expected to do a cold reboot when MSTP is running. If a user tries to perform a warm boot while MSTP is enabled, an error message will be displayed. User will first need to disable MSTP so the topology converges and reevaluates the paths. # Testing Requirements ## Unit test cases @@ -686,8 +706,6 @@ If a user tries to perform a warm boot while MSTP is enabled, an error message w 1. Verify CLI to create an instance. 1. Verify CLI to delete an instance 1. Verify CLI to set bridge priority in an instance. -1. Verify CLI to set bridge as a primary root for an instance. -1. Verify CLI to set bridge as a secondary root for an instance. 1. Verify CLI to map VLAN to an instance 1. Verify CLI to delete VLAN from an instance. 1. Verify CLI to set interface priority on a per instance basis. @@ -716,7 +734,6 @@ If a user tries to perform a warm boot while MSTP is enabled, an error message w 1. Verify instance is active only when there is at least one VLAN member of any of the VLANs that are mapped to it. 1. Verify altering bridge priority can alter the selection of CIST root, regional root and MSTI root. 1. Verify altering port priority can alter the selection of designated port. -1. Verify making the bridge as root for an MSTI by altering the root property of an instance to primary. 1. Verify max-hops by changing value. 1. Verify MSTP interoperability with STP, RSTP and PVST. 1. Verify MSTP operational data is synced to APP DB and ASIC DB correctly. @@ -744,4 +761,4 @@ If a user tries to perform a warm boot while MSTP is enabled, an error message w # References 1. [PVST HLD](https://github.com/sonic-net/SONiC/blob/master/doc/stp/SONiC_PVST_HLD.md) 1. [IEEE 802.1Q-2018](https://standards.ieee.org/ieee/802.1Q/6844/) -1. [IEEE 802.1s-2002](https://standards.ieee.org/ieee/802.1s/1042/) +1. [IEEE 802.1s-2002](https://standards.ieee.org/ieee/802.1s/1042/) \ No newline at end of file From 865134a160addf950767d39da4ab90c22af57e38 Mon Sep 17 00:00:00 2001 From: Hamna Rauf Date: Mon, 3 Jul 2023 11:56:36 +0500 Subject: [PATCH 05/14] Add copyright --- doc/stp/MSTP_HLD.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index ed2fda8c0f5..8c33a6849ce 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -5,6 +5,8 @@ ## Revision History +[© xFlow Research Inc](https://xflowresearch.com/) + |Revision No.|Description|Author|Date| | :- | :- | :- | :- | |0.1|Intial Design|[Hamna Rauf](https://github.com/hamnarauf), [Muhammad Danish](https://github.com/mdanish-kh), [Rida Hanif](github.com/ridahanif96), [Hafiz Mati ur Rehman](https://github.com/Mati86) & [Arsalan Ahmad](https://github.com/ahmadarsalan/)|March 20, 2023| From 07c9f56d3e8207fcaf0f8770dd9e7c3edad2fdc6 Mon Sep 17 00:00:00 2001 From: Hamna Rauf Date: Mon, 10 Jul 2023 09:26:09 +0500 Subject: [PATCH 06/14] Update HLD --- doc/stp/MSTP_HLD.md | 109 +++++++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 37 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index 8c33a6849ce..e7f06f942fd 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -82,9 +82,9 @@ Multiple Spanning Tree Protocol (MSTP) enhances the Spanning Tree Protocol (STP) # Introduction Spanning Tree Protocol (STP) prevents bridge looping on LANs that include redundant links. Per VLAN Spanning Tree (PVST) is a modification of STP that allows for running separate instances of spanning tree for each VLAN. -Multiple Spanning Tree Protocol (MSTP) allows frames assigned to different VLANs to follow separate paths. These paths are based on independent Multiple Spanning Tree Instances (MSTI), within Multiple Spanning Tree (MST) Region. These Regions and the other Bridges and LANs are connected into a single Common Spanning Tree (CST). +Multiple Spanning Tree Protocol (MSTP) allows the mapping of multiple VLANs to a single instance hence allows frames assigned to different VLANs to follow separate paths. These paths are based on independent Multiple Spanning Tree Instances (MSTI) that run inside MST Region. VLANs that are not explicitly assigned to any specific MSTI are automatically managed by the default Internal Spanning Tree (IST) associated with instance 0. MSTP ensures that frames with a given VID are assigned to only one of the MSTIs or the IST within the Region and the assignment is consistent amongst all the Bridges within the region. -MSTP connects all Bridges and LANs with a single Common and Internal Spanning Tree (CIST). The connectivity calculated for the CIST provides the CST for interconnecting these Regions, and an Internal Spanning Tree (IST) within each Region. MSTP ensures that frames with a given VID are assigned to one and only one of the MSTIs or the IST within the Region, that the assignment is consistent amongst all the Bridges within the region. +To facilitate the interconnection among MST regions, a Common Spanning Tree (CST) is established, allowing communication between switches in different MST regions. MSTP connects all Bridges and LANs with a single Common and Internal Spanning Tree (CIST). CIST refers to the combination of the Common Spanning Tree (CST) and the Internal Spanning Tree (IST) and it is the overall spanning tree instance that spans the entire MSTP domain. By providing VLAN-to-instance mapping, MSTP ensures that a limited number of instances are created, allowing for network segregation. In contrast, PVST lacks control over VLAN-to-instance mapping, leading to numerous instances and inefficient memory utilization. @@ -93,21 +93,24 @@ STP only supports a single instance, resulting in under utilized network bandwid MSTP calculates spanning trees on the basis of Multiple Spanning Tree Bridge Protocol Data Units (MST BPDUs).


-MSTI Configuration Messages
MSTP Config Message +

MSTI Configuration Messages

+*Refer to [RFC IEEE 802.1s-2002](https://standards.ieee.org/ieee/802.1s/1042/) for MSTP BPDU details.* + # Requirements -1. Support the assignment of multiple VLAN(s) to multiple spanning tree identifiers (MSTI) within each region. +1. Support the creation of Multiple Spanning Tree Instances (MSTIs). +1. Support the assignment of one or more VLANs to a specific MSTI within a region. 1. Support the option to assign a region name and revision number to MSTP regions in order to achieve unique identification of VLAN to instance mapping across switches. 1. Support path selection and forwarding behaviour in MSTI to optimize network performance within each instance by configuring a distinct root bridge. -1. Support the configuration of spanning tree parameters such as forward delay, hello timer, hop count, max age. +1. Support the configuration of spanning tree parameters such as forward delay, hello timer, hop count and max age. 1. The Destination Mac Address will be 01:80:C2:00:00:00 for MSTP BPDUs. -1. Support compatibility with networks employing different spanning tree protocols, such as STP, RSTP via Protocol Migration. +1. Support compatibility with networks employing different spanning tree protocols, such as STP, RSTP and PVST via Protocol Migration. # Architecture Design Following diagram explains the architectural design and linkages for MSTP. MSTP uses multiple existing SONiC containers, configuration details of each is mentioned below as well. @@ -126,7 +129,9 @@ Responsible for all MST protocol related calculations. BPDUs are sent and receiv ### STPSync A process running as a part of STPD. Responsible for updating all the MSTP states in APP DB. -The BPDU rx/tx, handling of changes related to port or LAG using netlink events and STP port state sync to Linux Kernel will function the same as PVST. +The BPDU rx/tx, BPDU processing, handling of timers, handling of changes related to port or LAG using netlink events and STP port state sync to Linux Kernel will function the same as PVST. + +*Refer to [PVST's STP Container Details](https://github.com/sandeep-kulambi/SONiC/blob/631ab18211e7e396b138ace561b7a04e7f7b49a1/doc/stp/SONiC_PVST_HLD.md#34-stp-container)* ## SWSS Container @@ -160,8 +165,8 @@ Following existing table of CONFIG_DB will be modified for MSTP implementation: #### STP_GLOBAL_TABLE A new value of `mstp` for `mode` column and a new column for holding `max-hops` ``` -mode = "pvst" / "mstp" / "none" ; a new option for mstp (DEF: "none") -max_hops = 1*3DIGIT ; max hops (1 to 255, DEF: 20) +mode = "pvst" / "mstp" / "disable" ; a new option for mstp (DEF: "disable") +max_hops = 1*3DIGIT ; max hops (1 to 255, DEF: 20) ``` Other fields of this table i.e rootguard_timeout, forward_delay, hello_time, max_age, priority will also be used to hold the configurations received from CLI. @@ -211,11 +216,9 @@ region_name = 1*32CHAR ; region name (DEF: mac-address of sw revision = 1*5DIGIT ; region revision (0 to 65535, DEF: 0) bridge_id = 16HEX ; bridge id cist_root_bridge_id = 16HEX ; CIST root’s bridge id -regional_root_bridge_id = 16HEX ; Regional root’s bridge id -external_path_cost = 1*9DIGIT ; path cost to CIST bridge -internal_path_cost = 1*9DIGIT ; path cost to regional root bridge -root_port = ifName ; Root port name -root_max_age = 1*2DIGIT ; Max age as per CIST root bridge +external_path_cost = 1*9DIGIT ; path cost to CIST root bridge +root_port = ifName ; root port name +root_max_age = 1*2DIGIT ; max age as per CIST root bridge root_hello_time = 1*2DIGIT ; hello time as per CIST root bridge root_forward_delay = 1*2DIGIT ; forward delay as per CIST root bridge root_max_hops = 1*3DIGIT ; max hops as per CIST root bridge @@ -224,7 +227,7 @@ hello_time = 1*2DIGIT ; hello time in secs (1 to 10, DEF forward_delay = 1*2DIGIT ; forward delay in secs (4 to 30, DEF: 15) max_hops = 1*3DIGIT ; max hops (1 to 255; DEF:20) last_topology_change = 1*10DIGIT ; time in secs since last topology change occured -topology_change_count = 1*10DIGIT ; Number of times topology change occured +topology_change_count = 1*10DIGIT ; number of times topology change occured instances_configured = 1*2DIGIT ; total number of instances configured (DEF: 1) ``` @@ -235,11 +238,11 @@ key = MSTP_INSTANCE:"Instance"instanceid ; instance id vlanids = vlan_id-or-range[,vlan_id-or-range] ; list of VLAN IDs oper_status = "active" / "inactive" ; instance is active in mstp bridge_id = 16HEXDIG ; bridge id -msti_root_bridge_id = 16HEXDIG ; MSTI regional root’s bridge id -msti_root_path_cost = 1*9DIGIT ; port path cost to MSTI root -msti_root_port = ifName ; Root port name +regional_root_bridge_id = 16HEXDIG ; regional root’s bridge id +internal_root_path_cost = 1*9DIGIT ; port path cost to regional root +root_port = ifName ; root port name last_topology_change = 1*10DIGIT ; time in sec since last topology change occured -topology_change_count = 1*10DIGIT ; Number of times topology change occured +topology_change_count = 1*10DIGIT ; number of times topology change occured ``` #### MSTP_INSTANCE_PORT_TABLE @@ -249,7 +252,8 @@ key = MSTP_INSTANCE_PORT:"Instance"instanceid:ifname ; instan port_num = 1*3DIGIT ; port number of bridge port path_cost = 1*9DIGIT ; port path cost (1 to 200000000) priority = 1*3DIGIT ; port priority (0 to 240, DEF:128) -port_state = "state" ; STP state-disabled, block, listen, learn, forward +port_state = "state" ; STP state - disabled, block, listen, learn, forward +port_role = "role" ; STP port role - root, designated, blocking, alternate, master desig_root = 16HEXDIG ; designated root desig_cost = 1*9DIGIT ; designated cost desig_bridge = 16HEXDIG ; designated bridge @@ -319,7 +323,7 @@ MSTP design requires one new attribute `SAI_HOSTIF_TRAP_TYPE_MSTP` for control t ## Del VLAN from instance ![MSTP VLAN Del](images/MSTP_vlan_del.png) -Update port-state, topology change and instance-interface events remain the same as depicted in sequence diagrams of PVST. +Update port-state, topology change and instance-interface events remain the same as depicted in [Sequence Diagrams of PVST](https://github.com/sandeep-kulambi/SONiC/blob/631ab18211e7e396b138ace561b7a04e7f7b49a1/doc/stp/SONiC_PVST_HLD.md#4-flow-diagrams). # Configuration Commands Following configuration commands will be provided for configuration of MSTP: @@ -370,9 +374,9 @@ Following commands are used for spanning-tree configurations on per instance, pe - cost-value: Range: 1-200000000 ## Show Commands -- show spanning_tree region brief -- show spanning_tree instance \ -- show spanning_tree instance interface \ \ +- show spanning_tree + + The output of this command will be as follows for `mstp`: ``` Spanning-tree Mode: MSTP @@ -382,8 +386,6 @@ Revision : 0 CIST Bridge Identifier : 32768002438eefbc3 CIST Root Identifier : 32768002438eefbc3 CIST External Path Cost : 0 -CIST Regional Root Identifier : 32768002438eefbc3 -CIST Internal Path Cost : 0 Instances configured : 1 Last Topology Change : 0s Number of Topology Changes : 0 @@ -393,19 +395,53 @@ CIST Root Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 MSTP instance 0 - VLANs 10, 20, 30 ------------------------------------------------------------------------------------------------- -Bridge MSTI Root Bridge RootPath Root Port LastTopology Topology +Bridge Regional Bridge RootPath RootPort LastTopology Topology Identifier Identifier Cost Identifier Change Change hex hex sec cnt 32768002438eefbc3 32768002438eefbc3 0 128.13 0 0 MSTP Port Parameters: -Port Prio Path Port Uplink State Designated Designated Designated -Num rity Cost Fast Fast Cost Root Bridge -Ethernet13 128 4 Y N FORWARDING 0 32768002438eefbc3 32768002438eefbc3 +Port Prio Path Port Uplink State Role Designated Designated Designated +Num rity Cost Fast Fast Cost Root Bridge +Ethernet13 128 4 Y N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 +``` +- show spanning_tree region + +``` +Region Name : regionA +Revision : 0 +CIST Bridge Identifier : 32768002438eefbc3 +CIST Root Identifier : 32768002438eefbc3 +CIST External Path Cost : 0 +Instances configured : 1 +Last Topology Change : 0s +Number of Topology Changes : 0 +Bridge Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 +CIST Root Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 +``` + +- show spanning_tree instance \ + +``` +MSTP instance 0 - VLANs 10, 20, 30 +------------------------------------------------------------------------------------------------- + +Bridge Regional Bridge RootPath RootPort LastTopology Topology +Identifier Identifier Cost Identifier Change Change +hex hex sec cnt +32768002438eefbc3 32768002438eefbc3 0 128.13 0 0 +``` + +- show spanning_tree instance interface \ \ + +``` +Port Prio Path Port Uplink State Role Designated Designated Designated +Num rity Cost Fast Fast Cost Root Bridge +Ethernet13 128 4 Y N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 ``` -- show spanning_tree statistics region +### Statistics Commands - show spanning_tree statistics instance \ ``` MSTP instance 0 - VLANs 10, 20, 30 @@ -416,7 +452,6 @@ PortChannel15 20 6 4 1 ``` ## Clear Commands -- sonic-clear spanning_tree statistics region - sonic-clear spanning_tree statistics instance \ - sonic-clear spanning_tree statistics instance interface \ \ @@ -433,7 +468,7 @@ Following debug commands will be supported for displaying internal data structur - debug spanning_tree dump instance interface \ \ ## Disabled Commands -Following commands are used to configure parameters at VLAN level and these commands are disabled if spanning-tree mode is MSTP: +Following commands are used to configure parameters at VLAN level and these commands are disabled if spanning-tree mode is `mstp`: - config spanning_tree vlan (enable|disable) \ - config spanning_tree vlan forward_delay \ \ @@ -443,7 +478,7 @@ Following commands are used to configure parameters at VLAN level and these comm - config spanning_tree vlan interface cost \ \ \ - config spanning_tree vlan interface priority \ \ \ -Also, Instance level commands will be disabled if spanning-tree mode is PVST. +Also, Region level and Instance level commands will be disabled if spanning-tree mode is `pvst`. # YANG Model @@ -492,9 +527,9 @@ module sonic-stp { type enumeration { enum "pvst"; enum "mstp"; - enum "none"; + enum "disable"; } - default "none"; + default "disable"; description "STP mode"; } From 3f584ba8272daaa2853f20aa946769eeeb71d976 Mon Sep 17 00:00:00 2001 From: Hamna Rauf Date: Mon, 17 Jul 2023 15:18:33 +0500 Subject: [PATCH 07/14] Address review comments --- doc/stp/MSTP_HLD.md | 100 ++++++++++++++---------- doc/stp/images/MSTP_global_disable.png | Bin 29752 -> 29844 bytes doc/stp/images/MSTP_global_enable.png | Bin 38806 -> 38052 bytes doc/stp/images/MSTP_vlan_del.png | Bin 24516 -> 24412 bytes doc/stp/images/MSTP_vlan_member_add.png | Bin 0 -> 19984 bytes doc/stp/images/MSTP_vlan_member_del.png | Bin 0 -> 16422 bytes 6 files changed, 60 insertions(+), 40 deletions(-) create mode 100644 doc/stp/images/MSTP_vlan_member_add.png create mode 100644 doc/stp/images/MSTP_vlan_member_del.png diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index e7f06f942fd..b41ddc891b8 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -110,7 +110,12 @@ MSTP calculates spanning trees on the basis of Multiple Spanning Tree Bridge Pro 1. Support path selection and forwarding behaviour in MSTI to optimize network performance within each instance by configuring a distinct root bridge. 1. Support the configuration of spanning tree parameters such as forward delay, hello timer, hop count and max age. 1. The Destination Mac Address will be 01:80:C2:00:00:00 for MSTP BPDUs. -1. Support compatibility with networks employing different spanning tree protocols, such as STP, RSTP and PVST via Protocol Migration. +1. Support compatibility with networks employing different spanning tree protocols, such as STP, RSTP and PVST via Protocol Migration. +1. Support edge port functionality +1. Support BPDU guard functionality +1. Support root guard functionality +1. Support protocol operation on static breakout ports +1. Support protocol operation on Port-channel interfaces # Architecture Design Following diagram explains the architectural design and linkages for MSTP. MSTP uses multiple existing SONiC containers, configuration details of each is mentioned below as well. @@ -145,6 +150,8 @@ Updates SAI via following APIs: 3. Creation of STP Port and assigning port state with respect to each instance via SAI STP API. 4. Flushing FDB entries via SAI FDB API. +There are no changes in PortOrch. + ## CoPP Configurations MSTP facilitates the exchange of control packets, known as Bridge Protocol Data Units (BPDUs), among switches to establish and maintain loop-free paths in a network. In order to trap these BPDUs, Control Plane Policing (CoPP) will be extended as follows: ``` @@ -165,7 +172,7 @@ Following existing table of CONFIG_DB will be modified for MSTP implementation: #### STP_GLOBAL_TABLE A new value of `mstp` for `mode` column and a new column for holding `max-hops` ``` -mode = "pvst" / "mstp" / "disable" ; a new option for mstp (DEF: "disable") +mode = "pvst" / "mstp" ; a new option for mstp max_hops = 1*3DIGIT ; max hops (1 to 255, DEF: 20) ``` Other fields of this table i.e rootguard_timeout, forward_delay, hello_time, max_age, priority will also be used to hold the configurations received from CLI. @@ -186,13 +193,7 @@ revision = 1*5DIGIT ; region revision number(0 to 65535, DEF: 0) ;Stores the MSTP instance operational details key = MSTP_INSTANCE|"Instance"instanceid ; instance id with MSTP_INSTANCE as a prefix priority = 1*5DIGIT ; bridge priority (0 to 61440, DEF:32768) -``` - -#### MSTP_VLAN_TABLE -``` -;Stores MSTP VLAN to instance mapping -key = MSTP_VLAN|"Vlan"vlanid ; vlan id with MSTP_VLAN as a prefix -instance_id = 1*2DIGIT ; instance id vlan is mapped to (0-63, DEF:0) +vlanids = vlan_id-or-range[,vlan_id-or-range] ; list of VLAN IDs mapped to instance ``` #### MSTP_INSTANCE_PORT_TABLE @@ -301,8 +302,30 @@ MSTP design requires one new attribute `SAI_HOSTIF_TRAP_TYPE_MSTP` for control t [SAI/saihostif.h](https://github.com/opencomputeproject/SAI/blob/master/inc/saihostif.h) +# Additional Features + +## BPDU Guard +BPDU guard feature will also be supported by MSTP. The details are mentioned in PVST HLD. + +## Root Guard +Root guard feature will also be supported by MSTP. The details are mentioned in PVST HLD. + +## Edge Port +Edge ports immediately transition to the forwarding state upon activation and do not participate in STP topology calculations. In PVST, this functionality is achieved through the "Portfast" feature, while in MSTP standard, the term "Edge Port" is used. To ensure user clarity, separate command will be provided for configuring Edge Ports. + +Portfast command will be disabled when the spanning-tree mode is set to `mstp` and Edge Port command will not function under `pvst` spanning-tree mode. + +Please note that the Edge Port functionality is equivalent to Portfast, with the only difference being the terminology and command usage based on the spanning-tree mode. The configuration for Edge ports will be stored in the portfast attribute in the database and the backend functionality remains the same as portfast. + +## Uplink Fast +MSTP standard does not support uplink fast so uplink fast functionality will be disable for MSTP. + + # Sequence Diagrams ## MSTP global enable + +Only the VLANs that are currently present will be mapped to IST instance. A VLAN cannot be mapped to an instance if it has not been created yet. + ![MSTP Global Enable](images/MSTP_global_enable.png) ## MSTP global disable @@ -323,6 +346,12 @@ MSTP design requires one new attribute `SAI_HOSTIF_TRAP_TYPE_MSTP` for control t ## Del VLAN from instance ![MSTP VLAN Del](images/MSTP_vlan_del.png) +## Add VLAN member +![MSTP VLAN Member Add](images/MSTP_vlan_member_add.png) + +## Del VLAN member +![MSTP VLAN Member Del](images/MSTP_vlan_member_del.png) + Update port-state, topology change and instance-interface events remain the same as depicted in [Sequence Diagrams of PVST](https://github.com/sandeep-kulambi/SONiC/blob/631ab18211e7e396b138ace561b7a04e7f7b49a1/doc/stp/SONiC_PVST_HLD.md#4-flow-diagrams). # Configuration Commands @@ -373,6 +402,14 @@ Following commands are used for spanning-tree configurations on per instance, pe - Configure path cost of an interface for an instance. - cost-value: Range: 1-200000000 +## Interface Level +Following new command will be added: + +- **config spanning_tree interface edgeport {enable|disable} \** + - Configure an interface as an edge port. + +Interface level CLI configurations of root guard, BPDU guard will also be supported for spanning-tree mode `mstp`. + ## Show Commands - show spanning_tree @@ -402,9 +439,9 @@ hex hex sec cnt MSTP Port Parameters: -Port Prio Path Port Uplink State Role Designated Designated Designated -Num rity Cost Fast Fast Cost Root Bridge -Ethernet13 128 4 Y N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 +Port Prio Path Edge State Role Designated Designated Designated +Num rity Cost Port Cost Root Bridge +Ethernet13 128 4 N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 ``` - show spanning_tree region @@ -436,9 +473,9 @@ hex hex sec cnt - show spanning_tree instance interface \ \ ``` -Port Prio Path Port Uplink State Role Designated Designated Designated -Num rity Cost Fast Fast Cost Root Bridge -Ethernet13 128 4 Y N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 +Port Prio Path Edge State Role Designated Designated Designated +Num rity Cost Port Cost Root Bridge +Ethernet13 128 4 N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 ``` ### Statistics Commands @@ -478,7 +515,11 @@ Following commands are used to configure parameters at VLAN level and these comm - config spanning_tree vlan interface cost \ \ \ - config spanning_tree vlan interface priority \ \ \ -Also, Region level and Instance level commands will be disabled if spanning-tree mode is `pvst`. +Following command is used to configure portfast feature. This command is disbaled if spanning-tree mode is `mstp` because an equivalent command of edge port is provided: + +- config spanning_tree interface portfast {enable|disable} + +Also, Region level, Instance level & Edge port configuation commands will be disabled if spanning-tree mode is `pvst`. # YANG Model @@ -527,9 +568,7 @@ module sonic-stp { type enumeration { enum "pvst"; enum "mstp"; - enum "disable"; } - default "disable"; description "STP mode"; } @@ -645,35 +684,16 @@ module sonic-stp { default 32768; description "Bridge priority"; } - } - } - - container MSTP_VLAN { - description "MSTP VLAN to instance mapping"; - - list MSTP_VLAN_LIST { - key "vlan"; - leaf vlan { - must "(current() = /vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name)" { + leaf-list vlanids { + must "(current() = /vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name)" { error-message "Must condition not satisfied, Try adding Vlan: {}, Example: 'Vlan2': {}"; } type leafref { path "/vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name"; } - } - - leaf instance_id { - must "(concat('Instance', current()) = ../../../MSTP_INSTANCE/MSTP_INSTANCE_LIST[name=concat('Instance', current())]/name)" { - error-message "Must condition not satisfied, Try adding Instance: {}, Example: 'Instance2': {}"; - } - - type uint8 { - range "0..63"; - } - default 0; - } + } } } diff --git a/doc/stp/images/MSTP_global_disable.png b/doc/stp/images/MSTP_global_disable.png index 101f8cf234c36503e08064173481aef7699d665c..a1e2c4ac9f4d854e9232df927a6f1e8126c35249 100644 GIT binary patch literal 29844 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 literal 29752 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 Mw9?~JNh81i0q91cQKH5$M33Hy9#J!*_uiuS z623{!d(IK>`^Ww6y7yb(y?hCH0*&r%PGB|fB?xLWe;K<1WRZ&pxKv7Uo zvoO(+p9q$+(IJ04FqKtRL_zUjLP2>Gh=Ov4{OHXp3X02P6qNPnC@4aSC@7?_Qfk2> z$b}>-3hL5VS67o$Gc|Qh?VVq@ws($>j=v2KonKtYgY|?YKu)hAaw>ZI#@2a-rFM=U z+6LCPjvn6r5Ho8Jc~!m0n8ef%@T}~niHVEp>8pWnJ6&H_-vlN$x6D-6HHAmRhewX9 zYlh5iJR;sDCMK5_efpa60lvJl>g@+l>?OU=2c2Vq!gj7|Jgy{o2#F@nh4~!_OxG^3us8JUS5w z($mq0fHgfleIYtV)>3kMI)>KI&Fl(_%My~(z1{@dI(P*5&&0mFdKY!!<1?hL;~}f0 z_uMowD&jaSbjQiLDJ(M4!V2#0{?+QG$I;PIRaI4gfB(|bQgRwx9&G*O$rCLtt%-?= zq@<**%E~JE?dtjYxty||oqegh52UrVb!%%YH3M#8=PU|Tlu^`t zpORr_?GP3P4Gw=NEGh5i9iX9SDyyWGTkt74JNuz-t zB$Snv`S?R5Wx+ZIeg@AWuAY8c1}|*w-CsF*4fRggJ9?Frl%%DlwY0R<)zuY!swgNZ zaCUYstEh2vb2BitcJ=hHu5Gfm_ZR>wvm!Nd%S2uVh!S#}S{C^qtXHx+PADj3$-n;H zl5+__8XpRVvz($d#tItlZCXtDhc9ACb3>5>N~pVyZ#F>EH@>>ie5snU(2lp2FLAN6 zA&O#W@jm`J&5%jnq#cvlW5Q13-f2QAiyCO0+@r0TGU}KVYpfjGYtG-LL%{rgN{*@Q zXRz9ex-ny2GQ$9l`p~J*_93GL+lp|I8g1VChrB^Ld`xsyzo!rW@BAU*TYr2xH5Y)F zY@XaILpw>gpYO0u&xqA<>@c|W+Ve3VgV1X)!l`^WLKZVN;_0I5WBTE!X=*XEpQAa+ z9MxGDVx~V&sJWXc;tvUr*B>10D(j}#s+EZkmadm`>_ngZm^$6mZ<u9W>dK^0oTB7bIykLJZ zX)svrd$r<|v4&VU8K@o1nWNk}Ro2-0eE#KZtd75qH_j^JB$u|~eDA6~-7=}7Z3^2l z$kT|$G>;|-~vOnuiC8jsm3qSV*o?92;fNrZ=+WMn#I2j zrSCC6svLA31){2GDJAPnls^Lf&1xd09|Oqc4KSCfoQ^>#bjSuo{>vDSqCRJ0;6=6N z$l%d1Q__mNmG=vd<)b8~23VbD+y8C7b9A!23lUSycPb;_sBG?s~(&xFccE+{_Mf~HBXi8sIbvU4JK z;qB~vAkeh2zhWH-TuJiS1QX0rzQ&pCORoAEfPseyl|1?QBX0fp($%#2b50bY{Gh

S6G7^>bP0l+XkK%TjO& literal 24516 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 ITb)n;1KgvfOaK4? literal 0 HcmV?d00001 diff --git a/doc/stp/images/MSTP_vlan_member_del.png b/doc/stp/images/MSTP_vlan_member_del.png new file mode 100644 index 0000000000000000000000000000000000000000..0593eb5c1043841f119a358d17cfda4f9c17314b GIT binary patch literal 16422 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 Kd40n?=zjt3tNvyH literal 0 HcmV?d00001 From b789c19a6b965b1633200ab710468f049c510a6f Mon Sep 17 00:00:00 2001 From: Hamna Rauf Date: Mon, 17 Jul 2023 15:32:59 +0500 Subject: [PATCH 08/14] Update table of contents --- doc/stp/MSTP_HLD.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index b41ddc891b8..260da175a27 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -27,6 +27,7 @@ - [CONFIG DB](#config-db) - [APP DB](#app-db) * [SAI](#sai) +* [Additional Features](#additional-features) * [Sequence Diagrams](#sequence-diagrams) - [MSTP global enable](#mstp-global-enable) - [MSTP global disable](#mstp-global-disable) From c79939226251a24ad5d467072e706cb34e1b0d91 Mon Sep 17 00:00:00 2001 From: Rida Hanif <61490193+ridahanif96@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:08:00 +0500 Subject: [PATCH 09/14] Updated SAI attribute details --- doc/stp/MSTP_HLD.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index 260da175a27..fd7bda9d39c 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -299,9 +299,7 @@ Following table shows the existing SAI Attributes that will be used: ||SAI_SWITCH_ATTR_MAX_STP_INSTANCE| ## New SAI Attributes -MSTP design requires one new attribute `SAI_HOSTIF_TRAP_TYPE_MSTP` for control trap packets which will be defined in saihostif.h. - -[SAI/saihostif.h](https://github.com/opencomputeproject/SAI/blob/master/inc/saihostif.h) +MSTP design will not require any new SAI Attributes for Control Packet trap. We will use the existing traps as DMAC and LLC fields are identical for STP and MSTP # Additional Features @@ -819,4 +817,4 @@ User is expected to do a cold reboot when MSTP is running. If a user tries to pe # References 1. [PVST HLD](https://github.com/sonic-net/SONiC/blob/master/doc/stp/SONiC_PVST_HLD.md) 1. [IEEE 802.1Q-2018](https://standards.ieee.org/ieee/802.1Q/6844/) -1. [IEEE 802.1s-2002](https://standards.ieee.org/ieee/802.1s/1042/) \ No newline at end of file +1. [IEEE 802.1s-2002](https://standards.ieee.org/ieee/802.1s/1042/) From cb56cb6875db2709269c1742ac8efa94940da379 Mon Sep 17 00:00:00 2001 From: Rida Hanif <61490193+ridahanif96@users.noreply.github.com> Date: Wed, 27 Mar 2024 13:50:05 +0500 Subject: [PATCH 10/14] Update MSTP_HLD.md --- doc/stp/MSTP_HLD.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index fd7bda9d39c..bba53b05cb0 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -323,7 +323,7 @@ MSTP standard does not support uplink fast so uplink fast functionality will be # Sequence Diagrams ## MSTP global enable -Only the VLANs that are currently present will be mapped to IST instance. A VLAN cannot be mapped to an instance if it has not been created yet. +Pre-Configuring VLAN-to-instance will be mapped to IST instance before actually creating VLAN to avoid convergence churn. ![MSTP Global Enable](images/MSTP_global_enable.png) From 22d5811dfca48d2e809402b0b7f2754460e0561f Mon Sep 17 00:00:00 2001 From: Rida Hanif Date: Thu, 25 Apr 2024 16:47:21 +0500 Subject: [PATCH 11/14] Removed COPP Changes --- doc/stp/MSTP_HLD.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index bba53b05cb0..0df397a284f 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -153,14 +153,7 @@ Updates SAI via following APIs: There are no changes in PortOrch. -## CoPP Configurations -MSTP facilitates the exchange of control packets, known as Bridge Protocol Data Units (BPDUs), among switches to establish and maintain loop-free paths in a network. In order to trap these BPDUs, Control Plane Policing (CoPP) will be extended as follows: -``` -"stp": { - "trap_ids" : "stp,pvrst,mstp", - "trap_group": "queue1_group1" -} -``` + # Database Changes MSTP design introduces some new tables for configuration along with slight modification in existing STP tables. Following are details of each individual table: From 387f5b275e1af5c01f3a11799232291fb93ae740 Mon Sep 17 00:00:00 2001 From: Divya Kumaran Chandralekha <66686927+divyachandralekha@users.noreply.github.com> Date: Mon, 6 May 2024 12:19:42 +0530 Subject: [PATCH 12/14] Update MSTP_HLD.md Update CONFIG/APP DB and yang model --- doc/stp/MSTP_HLD.md | 434 ++++++++++++++++++++++++++++++-------------- 1 file changed, 293 insertions(+), 141 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index 0df397a284f..00c6d84001d 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -167,35 +167,53 @@ Following existing table of CONFIG_DB will be modified for MSTP implementation: A new value of `mstp` for `mode` column and a new column for holding `max-hops` ``` mode = "pvst" / "mstp" ; a new option for mstp -max_hops = 1*3DIGIT ; max hops (1 to 255, DEF: 20) ``` -Other fields of this table i.e rootguard_timeout, forward_delay, hello_time, max_age, priority will also be used to hold the configurations received from CLI. +Other fields of this table are not applicable for "mstp" mode. ### New Tables Following new tables will be added to CONFIG_DB: -#### MSTP_REGION_TABLE +#### MSTP_MST ``` -;Stores the MSTP Regional operational details -key = MSTP|REGION ; MSTP REGION key -region_name = 1*32CHAR ; region name (DEF: mac-address of switch) -revision = 1*5DIGIT ; region revision number(0 to 65535, DEF: 0) +;Stores MSTP Global configuration +key = STP_MST|GLOBAL ; Global MSTP table key +name = 1*32CHAR ; MSTP region name(DEF:mac address of switch) +revision = 5*DIGIT ; MSTP revision number (0 to 65535, DEF:0) +max_hop = 2*DIGIT ; maximum hops (1 to 40, DEF:20) +max_age = 2*DIGIT ; max age time in secs(6 to 40 sec, DEF:20sec) +hello_time = 2*DIGIT ; hello time in secs(1 to 10 sec, DEF:2sec) +forward_delay = 2*DIGIT ; forward delay in secs(4 to 30 sec, DEF:15 sec) ``` -#### MSTP_INSTANCE_TABLE +#### STP_MST_INST ``` -;Stores the MSTP instance operational details -key = MSTP_INSTANCE|"Instance"instanceid ; instance id with MSTP_INSTANCE as a prefix -priority = 1*5DIGIT ; bridge priority (0 to 61440, DEF:32768) -vlanids = vlan_id-or-range[,vlan_id-or-range] ; list of VLAN IDs mapped to instance +;Stores STP configuration per MSTI +key = STP_MST|"MST_INSTANCE"id ; MST with prefix "STP_MST" +bridge_priority = 5*DIGIT ; bridge priority (0 to 61440, DEF:32768) +vlan_list = "Vlans" ; List of VLANs assigned to the MST instance ``` -#### MSTP_INSTANCE_PORT_TABLE +#### STP_MST_PORT ``` -;Stores STP interface details per Instance -key = MSTP_INSTANCE_PORT|"Instance"instanceid|ifname ; instanceid|ifname with prefix MSTP_INSTANCE_PORT, ifname can be physical or portchannel name -priority = 1*3DIGIT ; port priority (0 to 240, DEF:128) -path_cost = 1*9DIGIT ; port path cost (1 to 200000000) +;Stores STP interface details per MSTI +key = STP_MST_PORT|"MST_INSTANCE"id|ifname; MSTI+Intf with prefix "STP_MST_PORT" +path_cost = 9*DIGIT ; port path cost (1 to 200000000) +priority = 3*DIGIT ; port priority (0 to 240, DEF:128) +``` + +#### STP_PORT +``` +;Stores STP interface details +key = STP_PORT|ifname ; ifname with prefix STP_PORT +edge_port = BIT ; enabled or disabled +link_type = "type" ; type can be of auto, point-to-point or shared +enabled = BIT ; enabled or disabled +bpdu_guard = BIT ; enabled or disabled +bpdu_guard_do_disable = BIT ; enabled or disabled +enabled = BIT ; enabled or disabled +root_guard = BIT ; enabled or disabled +path_cost = 9*DIGIT ; port path cost (1 to 200000000) +priority = 3*DIGIT ; port priority (0 to 240, DEF:128) ``` ## APP DB @@ -203,62 +221,58 @@ path_cost = 1*9DIGIT ; port path cost ( ### New Tables Following new tables are introduced as part of MSTP Feature: -#### MSTP_REGION_TABLE +#### STP_MST_INST_TABLE +``` +;Stores the STP per MSTI operational details +key = _STP_MST_INST_TABLE:"MST"id +vlan_list = vlan_id-or-range[,vlan_id-or-range]; List of VLANs assigned to the MST instance +bridge_address = 16HEXDIG ; bridge id +regional_root_address = 16HEXDIG ; regional root bridge id +root_address = 16HEXDIG ; root bridge id +root_path_cost = 1*9DIGIT ; root path cost +regional_root_cost = 1*9DIGIT ; regional root path cost +root_max_age = 1*2DIGIT ; Max age of root bridge(6 to 40 sec, DEF:20sec) +root_hello_time = 1*2DIGIT ; Hello time of root bridge(1 to 10 sec, DEF:2sec) +root_forward_delay = 1*2DIGIT ; forward delay of root bridge(4 to 30 sec, DEF:15 sec) +remaining_hops = 1*2DIGIT ; Ramining Max-hops +root_port = ifName ; Root port name +``` + +#### STP_MST_PORT_TABLE ``` -;Stores the MSTP regional operational details -key = MSTP:REGION ; MSTP REGION key -region_name = 1*32CHAR ; region name (DEF: mac-address of switch) -revision = 1*5DIGIT ; region revision (0 to 65535, DEF: 0) -bridge_id = 16HEX ; bridge id -cist_root_bridge_id = 16HEX ; CIST root’s bridge id -external_path_cost = 1*9DIGIT ; path cost to CIST root bridge -root_port = ifName ; root port name -root_max_age = 1*2DIGIT ; max age as per CIST root bridge -root_hello_time = 1*2DIGIT ; hello time as per CIST root bridge -root_forward_delay = 1*2DIGIT ; forward delay as per CIST root bridge -root_max_hops = 1*3DIGIT ; max hops as per CIST root bridge -max_age = 1*2DIGIT ; maximum age time in secs (6 to 40, DEF: 20) -hello_time = 1*2DIGIT ; hello time in secs (1 to 10, DEF: 2) -forward_delay = 1*2DIGIT ; forward delay in secs (4 to 30, DEF: 15) -max_hops = 1*3DIGIT ; max hops (1 to 255; DEF:20) -last_topology_change = 1*10DIGIT ; time in secs since last topology change occured -topology_change_count = 1*10DIGIT ; number of times topology change occured -instances_configured = 1*2DIGIT ; total number of instances configured (DEF: 1) +;Stores STP MST instance interface details +key = _STP_MST_PORT_TABLE:"MST"id:ifname ; MSTI+Intf with prefix "STP_MST_PORT_TABLE" +port_number = 1*3DIGIT ; port number of bridge port +path_cost = 1*9DIGIT ; port path cost (1 to 200000000) +priority = 3*DIGIT ; port priority (0 to 240, DEF:128) +port_state = "state" ; DISABLED/DISCARDING/LISTENING/LEARNING/FORWARDING +role = "role" ; DESIGNATED/ROOT/ALTERNATE/MASTER +desig_cost = 1*9DIGIT ; designated cost +external_cost = 1*9DIGIT ; designated cost +desig_root = 16HEXDIG ; designated root +desig_reg_root = 16HEXDIG ; designated root +desig_bridge = 16HEXDIG ; designated bridge +desig_port = 1*3DIGIT ; designated port +fwd_transitions = 1*5DIGIT ; number of forward transitions +bpdu_sent = 1*10DIGIT ; bpdu transmitted +bpdu_received = 1*10DIGIT ; bpdu received ``` -#### MSTP_INSTANCE_TABLE +#### STP_PORT_TABLE ``` -;Stores the STP instance operational details -key = MSTP_INSTANCE:"Instance"instanceid ; instance id with MSTP_INSTANCE as a prefix -vlanids = vlan_id-or-range[,vlan_id-or-range] ; list of VLAN IDs -oper_status = "active" / "inactive" ; instance is active in mstp -bridge_id = 16HEXDIG ; bridge id -regional_root_bridge_id = 16HEXDIG ; regional root’s bridge id -internal_root_path_cost = 1*9DIGIT ; port path cost to regional root -root_port = ifName ; root port name -last_topology_change = 1*10DIGIT ; time in sec since last topology change occured -topology_change_count = 1*10DIGIT ; number of times topology change occured +;Stores STP interface details +key = _STP_PORT_TABLE:ifname; ifname with prefix STP_INTF +edge_port = BIT ; edge port enabled or disabled +link_type = "type" ; point-to-point or shared link type +mst_boundary = BIT ; enabled or disabled +mst_boundary_proto = BIT ; enabled or disabled ``` -#### MSTP_INSTANCE_PORT_TABLE +#### STP_INST_PORT_FLUSH_TABLE ``` -;Stores STP interface details per Instance -key = MSTP_INSTANCE_PORT:"Instance"instanceid:ifname ; instanceid|ifname with prefix MSTP_INSTANCE_PORT -port_num = 1*3DIGIT ; port number of bridge port -path_cost = 1*9DIGIT ; port path cost (1 to 200000000) -priority = 1*3DIGIT ; port priority (0 to 240, DEF:128) -port_state = "state" ; STP state - disabled, block, listen, learn, forward -port_role = "role" ; STP port role - root, designated, blocking, alternate, master -desig_root = 16HEXDIG ; designated root -desig_cost = 1*9DIGIT ; designated cost -desig_bridge = 16HEXDIG ; designated bridge -desig_port = 1*3DIGIT ; designated port -fwd_transitions = 1*5DIGIT ; number of forward transitions -bpdu_sent = 1*10DIGIT ; bpdu transmitted -bpdu_received = 1*10DIGIT ; bpdu received -tcn_sent = 1*10DIGIT ; tcn transmitted -tcn_received = 1*10DIGIT ; tcn received -root_guard_timer = 1*3DIGIT ; root guard current timer value +;Defines instance and port for which FDB flush needs to be performed +key = _STP_INST_PORT_FLUSH_TABLE:instance:ifName ; FDB flush instance id and port name +state = "true" ``` ### Existing Tables @@ -551,6 +565,32 @@ module sonic-stp { description "First Revision"; } + grouping interfaceAttr { + leaf path_cost { + type uint64 { + range "1..200000000" { + error-message "Invalid Port Path Cost value."; + } + } + default 200; + description + "The port's contribution, when it is the Root Port, + to the Root Path Cost for the Bridge"; + } + + leaf priority { + type uint8 { + range "0..240" { + error-message "Invalid Port Priority value."; + } + } + default 128; + description + "The manageable component of the Port Identifier, + also known as the Port Priority"; + } + } + container sonic-stp { container STP_GLOBAL { @@ -565,6 +605,10 @@ module sonic-stp { } leaf forward_delay { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode!='mst'" { + error-message "Configuration not allowed in MST mode"; + error-app-tag stp-invalid; + } type uint8 { range "4..30" { error-message "forward_delay value out of range"; @@ -575,6 +619,10 @@ module sonic-stp { } leaf hello_time { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode!='mst'" { + error-message "Configuration not allowed in MST mode"; + error-app-tag stp-invalid; + } type uint8 { range "1..10" { error-message "hello_time value out of range"; @@ -585,6 +633,10 @@ module sonic-stp { } leaf max_age { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode!='mst'" { + error-message "Configuration not allowed in MST mode"; + error-app-tag stp-invalid; + } type uint8 { range "6..40" { error-message "max_age value out of range"; @@ -595,6 +647,10 @@ module sonic-stp { } leaf rootguard_timeout { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode!='mst'" { + error-message "Configuration not allowed in MST mode"; + error-app-tag stp-invalid; + } type uint16 { range "5..600" { error-message "rootguard_timeout value out of range"; @@ -605,6 +661,10 @@ module sonic-stp { } leaf priority { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode!='mst'" { + error-message "Configuration not allowed in MST mode"; + error-app-tag stp-invalid; + } must ". mod 4096 = 0" { error-message "bridge priority must be a multiple of 4096"; } @@ -617,119 +677,211 @@ module sonic-stp { default 32768; description "Bridge priority"; } + } - leaf max_hops { - type uint8 { - range "1..255" { - error-message "max-hops value out of range"; + container STP_MST { + max-elements 1; + key "keyleaf"; + sonic-ext:dependent-on "STP_LIST"; + + leaf keyleaf { + type enumeration { + enum GLOBAL; } + description + "Key node identifier. It's value is always GLOBAL"; } - default 20; - description "Max hops"; - } - } - - container MSTP_REGION { - description "MSTP Regional operational details"; - leaf region_name { - type string { - length "1..32"; + leaf name { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode='mst'" { + error-message "Configuration allowed in MST mode"; + error-app-tag stp-invalid; + } + type string { + length "1..32"; + } + description + "MST Region name"; } - default "device_metadata:sonic-device_metadata/device_metadata:DEVICE_METADATA/device_metadata:localhost/device_metadata:mac"; - description "Region name"; - } - leaf revision { - type uint16 { + leaf revision { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode='mst'" { + error-message "Configuration allowed in MST mode"; + error-app-tag stp-invalid; + } + type uint16 { range "0..65535" { error-message "revision value out of range"; } } - default 0; - description "Region revision"; - } - } + description + "MST Revision number"; + } - container MSTP_INSTANCE { - description "MSTP instance operational details"; + leaf max_hops { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode='mst'" { + error-message "Configuration allowed in MST mode"; + error-app-tag stp-invalid; + } + type uint8 { + range "1..255" { + error-message "max-hops value out of range"; + } + } + default 20; + description + "MST Max hops"; + } - list MSTP_INSTANCE_LIST { - key "name"; + leaf hello_time { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode='mst'" { + error-message "Configuration allowed in MST mode"; + error-app-tag stp-invalid; + } + type uint8 { + range "1..10" { + error-message "hello_time value out of range"; + } + } + default 2; + description + "MST hello time"; + } - leaf name { - type string { - pattern 'Instance([0-9]|[1-5][0-9]|[6][0-3])'; + leaf max_age { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode='mst'" { + error-message "Configuration allowed in MST mode"; + error-app-tag stp-invalid; } + type uint8 { + range "6..40" { + error-message "max_age value out of range"; + } + } + default 20; + description + "MST max age"; } - leaf priority { - must ". mod 4096 = 0" { - error-message "bridge priority must be a multiple of 4096"; + leaf forward_delay { + must "../../../STP/STP_LIST[keyleaf='GLOBAL']/mode='mst'" { + error-message "Configuration allowed in MST mode"; + error-app-tag stp-invalid; + } + type uint8 { + range "4..30" { + error-message "forward_delay value out of range"; + } } + default 15; + description + "MST forward delay"; + } + } + container STP_MST_INST { + list STP_MST_INST_LIST { + key "instance"; + + leaf instance { + type uint16; + description + "Instance identifier"; + } + + leaf-list vlan { + type string; + description + "Vlan list"; + } + leaf bridge_priority { type uint16 { range "0..61440" { - error-message "priority value out of range"; + error-message "Invalid Bridge Priority value."; } } default 32768; - description "Bridge priority"; + description + "The manageable component of the Bridge Identifier"; } + } + } - leaf-list vlanids { - must "(current() = /vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name)" { - error-message "Must condition not satisfied, Try adding Vlan: {}, Example: 'Vlan2': {}"; + container STP_MST_PORT { + list STP_MST_PORT_LIST { + key "inst_id ifname"; + + leaf inst_id { + type leafref { + path "../../../STP_MST_INST/STP_MST_INST_LIST/instance"; } + description + "Reference to MST Instance"; + } + leaf ifname { type leafref { - path "/vlan:sonic-vlan/vlan:VLAN/vlan:VLAN_LIST/vlan:name"; + path "../../../STP_PORT/STP_PORT_LIST/ifname"; } - } + description + "Reference to Ethernet interface or PortChannel"; + } + uses interfaceAttr; } } - container MSTP_INSTANCE_PORT { - description "STP port details per Instance"; + list _STP_MST_INST_TABLE_LIST { + sonic-ext:db-name "APPL_DB"; + key "inst_id"; - list MSTP_INSTANCE_PORT_LIST { - key "instance port"; + leaf inst_id { + type leafref { + path "../../../STP_MST_INST/STP_MST_INST_LIST/instance"; + } + description + "Reference to MST Instance"; + } - leaf instance { - must "(current() = ../../../MSTP_INSTANCE/MSTP_INSTANCE_LIST[name=current()]/name)" { - error-message "Must condition not satisfied, Try adding Instance: {}, Example: 'Instance2': {}"; - } + leaf-list vlan { + type string; + description + "Vlan list"; + } - type leafref { - path "/stp:sonic-stp/stp:MSTP_INSTANCE/stp:MSTP_INSTANCE_LIST/stp:name"; - } - } + leaf bridge_priority { + type uint16; + description + "The manageable component of the Bridge Identifier"; + } - leaf port { - type union { - type leafref { - path "/port:sonic-port/port:PORT/port:PORT_LIST/port:name"; - } - type leafref { - path "/lag:sonic-portchannel/lag:PORTCHANNEL/lag:PORTCHANNEL_LIST/lag:name"; - } - } - } + leaf root_priority { + type string; + description + "The manageable component of the Port Identifier"; + } - leaf priority { - type uint8 { - range "0..240" { - error-message "priority value out of range"; - } - } - default 128; - description "Port priority"; - } + leaf root_address { + type string; + description + ""; + } - leaf path_cost { - type uint32; - description "Port path cost"; - } + leaf root_cost { + type string; + description + ""; + } + + leaf root_port { + type string; + description + ""; + } + + leaf bridge_address { + type string; + description + ""; } } } From 8ebdc149735a376369debe09f8389a6e0958010c Mon Sep 17 00:00:00 2001 From: Rida Hanif Date: Fri, 10 May 2024 15:37:53 +0500 Subject: [PATCH 13/14] Updated CLI Command --- doc/stp/MSTP_HLD.md | 229 +++++++++++++++++++++++++++++++------------- 1 file changed, 162 insertions(+), 67 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index 00c6d84001d..dae77fc8dcc 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -10,6 +10,7 @@ |Revision No.|Description|Author|Date| | :- | :- | :- | :- | |0.1|Intial Design|[Hamna Rauf](https://github.com/hamnarauf), [Muhammad Danish](https://github.com/mdanish-kh), [Rida Hanif](github.com/ridahanif96), [Hafiz Mati ur Rehman](https://github.com/Mati86) & [Arsalan Ahmad](https://github.com/ahmadarsalan/)|March 20, 2023| +|0.2|Modified Design| [Divya Kumaran Chandralekha](https://github.com/divyachandralekha) , [Rida Hanif](github.com/ridahanif96)|May 10, 2024| # Table of Contents @@ -72,10 +73,8 @@ PVST HLD: https://github.com/sonic-net/SONiC/pull/386 |CST|Common Spanning Tree| |IST|Internal Spanning Tree| |BPDU|Bridge Protocol Data Unit| -|RSTP|Rapid Spanning Tree Protocol| |VID|VLAN identifier| |MSTID|Multiple Spanning Tree Identifier| -|CoPP|Control Plane Policing| # Overview Multiple Spanning Tree Protocol (MSTP) enhances the Spanning Tree Protocol (STP) by enabling the creation of multiple spanning tree instances within a network. It provides a mechanism to map VLANs to specific spanning tree instances which offers network segmentation and improved control over traffic flow. @@ -363,20 +362,32 @@ Update port-state, topology change and instance-interface events remain the same # Configuration Commands Following configuration commands will be provided for configuration of MSTP: ## Global Level -- **config spanning_tree {enable|disable} {mstp|pvst}** +- **config spanning_tree {enable|disable} {mst}** - Enables or disables mstp at global level on all ports of the switch. - Only one mode of STP can be enabled at a time. -- **config spanning_tree max_hops \** +- **config spanning_tree mst max_hops \** - Specify the number of maximum hops before the BPDU is discarded inside a region. - max-hops-value: Default: 20, range: 1-255 +- **config spanning_tree mst hello \** + - Specify configuring hello interval in sec for transmission of BPDUs. + Default: 2, range 1-10 +- **config spanning_tree mst max_age \** + - Specify configuring maximum time to listen for root bridge in seconds. + Default: 2, range 6-40 +- **config spanning_tree mst port_priority \** + - Specify configuring the port level priority for root bridge in seconds. + Default: 128, range 0-240 +- **config spanning_tree mst cost \** + - Specify configuring the port level priority for root bridge in seconds. + Default: 0, range 1-200000000 ## Region Level Below commands allow configuring on region basis: -- **config spanning_tree region name \** +- **config spanning_tree mst region name \** - Edit the name of region - region-name: Case sensitive, characters should be less than or equal to 32, default: mac-address of bridge -- **config spanning-tree region revision \** +- **config spanning-tree mst revision \** - Revision number is used to track changes in the configuration and to synchronize the configuration across the switches in the same region. - revision-number: Default: 0, range: 0-65535 @@ -384,15 +395,11 @@ Below commands allow configuring on region basis: Below commands allow configuration of an instance: -- **config spanning_tree instance (add|del) \** - - Creation or deletion of an instance. - - instance-id: Default: 0, range: 1-63 - - Instance can not be deleted if VLAN(s) are associated with it. -- **config spanning_tree instance priority \ \** +- **config spanning_tree mst instance \ priority \** - Configure priority of bridge for an instance. - instance-id: id of the instance for which bridge priority is to be defined. If the provided instance id is not created yet, an error message is displayed. - priority-value: Default: 32768, range: 0-61440 (should be multiple of 4096) -- **config spanning_tree instance vlan (add|del) \ \** +- **config spanning_tree mst instance \ vlan (add|del) \** - VLAN to instance mapping. - instance-id: id of the instance to which VLAN is to be mapped. If the provided instance id is not created yet, an error message is displayed. - vlan-id: Range: 1-4094. If the provided VLAN is not created yet, an error message is displayed. @@ -401,29 +408,63 @@ Below commands allow configuration of an instance: ## Instance, Interface Level Following commands are used for spanning-tree configurations on per instance, per interface basis: -- **config spanning_tree instance interface priority \ \ \** +- **config spanning_tree mst instance \ interface \ priority \** - Configure priority of an interface for an instance. - priority-value: Default: 128, range: 0-240 -- **config spanning_tree instance interface cost \ \ \** +- **config spanning_tree mst instance \ interface cost \** - Configure path cost of an interface for an instance. - cost-value: Range: 1-200000000 ## Interface Level Following new command will be added: -- **config spanning_tree interface edgeport {enable|disable} \** +- **config spanning_tree mst interface\ {enable|disable}** + - Configure an interface for MSTP. +- **config spanning_tree mst interface edgeport {enable|disable} \** - Configure an interface as an edge port. + +- **config spanning_tree interface \ root_guard {enable|disable}** + - Configure an interface as a root_guard. + +- **config spanning_tree mst interface \ bpdu_guard {enable|disable}** + - Configure an interface as a bpdu_guard. + +- **config spanning_tree mst interface \ guard {root|bpdu}** + - Configure an interface as a bpdu_guard. Interface level CLI configurations of root guard, BPDU guard will also be supported for spanning-tree mode `mstp`. ## Show Commands -- show spanning_tree +- show spanning_tree mst The output of this command will be as follows for `mstp`: ``` Spanning-tree Mode: MSTP +####### MST0 Vlans mapped : 1, 4-8, 202-4094 +Bridge Address 8000.80a2.3526.0c5e +Root Address 8000.80a2.3526.0c5e + Port Root Path cost 0 +Regional Root Address 8000.80a2.3526.0c5e + Internal cost 0 Rem hops 20 +Operational Hello Time 2, Forward Delay 15, Max Age 20, Txholdcount 6 +Configured Hello Time 2, Forward Delay 15, Max Age 20, Max Hops 20 + +Interface Role State Cost Prio.Nbr Type +--------------- -------- ---------- ------- --------- ----------- +Ethernet20 DESIGNATED FORWARDING 2000 128.25 P2P +Ethernet46 DESIGNATED FORWARDING 800 128.86 P2P +PortChannel1001 DESIGNATED FORWARDING 1000 128.45 P2P + +####### MST1 Vlans mapped : 2, 300, 400 +Bridge Address 8000.80a2.3526.0c5e +Root Address 8000.80a2.3526.0c5e + Port Root Path cost 0 Rem Hops 20 + +Interface Role State Cost Prio.Nbr Type +--------------- -------- ---------- ------- --------- ----------- +Ethernet46 DESIGNATED FORWARDING 800 128.86 P2P +PortChannel1001 DESIGNATED FORWARDING 1000 128.45 P2P -MSTP Region Parameters: Region Name : regionA Revision : 0 CIST Bridge Identifier : 32768002438eefbc3 @@ -434,49 +475,104 @@ Last Topology Change : 0s Number of Topology Changes : 0 Bridge Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 CIST Root Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 +``` -MSTP instance 0 - VLANs 10, 20, 30 -------------------------------------------------------------------------------------------------- +- show spanning_tree mst detail -Bridge Regional Bridge RootPath RootPort LastTopology Topology -Identifier Identifier Cost Identifier Change Change -hex hex sec cnt -32768002438eefbc3 32768002438eefbc3 0 128.13 0 0 +``` -MSTP Port Parameters: +####### MST0 Vlans mapped : 1, 4-8, 202-4094 +Bridge Address 8000.80a2.3526.0c5e + Root Address 8000.80a2.3526.0c5e + Port Root Path cost 0 Rem Hops 20 + +Ethernet20 is DESIGNATED FORWARDING +Port info port id 86 priority 128 cost 800 +Designated Address 8000.80a2.3526.0c5e cost 0 +Designated bridge Address 8000.80a2.3526.0c5e port id 86 +Timers: forward transitions 0 +Bpdu send 80, received 0 + +Ethernet46 is DESIGNATED FORWARDING +Port info port id 25 priority 128 cost 1000 +Designated Address 8000.80a2.3526.0c5e cost 0 +Designated bridge Address 8000.80a2.3526.0c5e port id 45 +Timers: forward transitions 0 +Bpdu send 80, received 0 + +PortChannel1001 is DESIGNATED FORWARDING +Port info port id 25 priority 128 cost 2000 +Designated Address 8000.80a2.3526.0c5e cost 0 +Designated bridge Address 8000.80a2.3526.0c5e port id 45 +Timers: forward transitions 0 +Bpdu send 80, received 0 + +####### MST1 Vlans mapped : 2, 300, 400 +Bridge Address 8000.80a2.3526.0c5e + Root Address 8000.80a2.3526.0c5e + Port Root Path cost 0 Rem Hops 20 + +Ethernet46 is DESIGNATED FORWARDING +Port info port id 85 priority 128 cost 2000 +Designated Address 8000.80a2.3526.0c5e cost 0 +Designated bridge Address 8000.80a2.3526.0c5e port id 45 +Timers: forward transitions 0 +Bpdu send 80, received 0 + + +PortChannel1001 is DESIGNATED FORWARDING +Port info port id 25 priority 128 cost 2000 +Designated Address 8000.80a2.3526.0c5e cost 0 +Designated bridge Address 8000.80a2.3526.0c5e port id 45 +Timers: forward transitions 0 +Bpdu send 80, received 0 -Port Prio Path Edge State Role Designated Designated Designated -Num rity Cost Port Cost Root Bridge -Ethernet13 128 4 N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 ``` -- show spanning_tree region + +- show spanning_tree mst instance ``` -Region Name : regionA -Revision : 0 -CIST Bridge Identifier : 32768002438eefbc3 -CIST Root Identifier : 32768002438eefbc3 -CIST External Path Cost : 0 -Instances configured : 1 -Last Topology Change : 0s -Number of Topology Changes : 0 -Bridge Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 -CIST Root Timers : MaxAge 20s Hello 2s FwdDly 15s MaxHops 20 +show spanning_tree mst instance 0 +####### MST0 Vlans mapped : 1, 4-8, 202-4094 +Bridge Address 8000.80a2.3526.0c5e +Root Address 8000.80a2.3526.0c5e + Port Root Path cost 0 +Regional Root Address 8000.80a2.3526.0c5e + Internal cost 0 Rem hops 20 +Operational Hello Time 2, Forward Delay 15, Max Age 20, Txholdcount 6 +Configured Hello Time 2, Forward Delay 15, Max Age 20, Max Hops 20 + +Interface Role State Cost Prio.Nbr Type +--------------- -------- ---------- ------- --------- ----------- +Ethernet20 DESIGNATED FORWARDING 2000 128.25 P2P +Ethernet46 DESIGNATED FORWARDING 800 128.86 P2P +PortChannel1001 DESIGNATED FORWARDING 1000 128.45 P2P ``` -- show spanning_tree instance \ +- show spanning_tree mst interface ``` -MSTP instance 0 - VLANs 10, 20, 30 -------------------------------------------------------------------------------------------------- +show spanning_tree mst interface Ethernet46 +Link Type: P2P Bpdu filter: False +Boundary : internal Bpdu guard: False + +Instance Role State Cost Prio.Nbr Vlans +--------------- -------- ---------- ------- --------- ----------- +0 DESIGNATED FORWARDING 800 128.86 1, 4-8, 202-4094 +1 DESIGNATED FORWARDING 1000 128.45 2, 300, 400 +``` + -Bridge Regional Bridge RootPath RootPort LastTopology Topology -Identifier Identifier Cost Identifier Change Change -hex hex sec cnt -32768002438eefbc3 32768002438eefbc3 0 128.13 0 0 +- show spanning_tree mst bpdu_guard + +``` +PortNum Shutdown Configured Port Shut due to BPDU Guard +--------- -------------------- ----------------------------- +Ethernet45 Yes Yes +PortChannel1001 No NA ``` -- show spanning_tree instance interface \ \ +- show spanning_tree mst instance \ interface \ ``` Port Prio Path Edge State Role Designated Designated Designated @@ -484,8 +580,9 @@ Num rity Cost Port Cost Root Brid Ethernet13 128 4 N FORWARDING Root 0 32768002438eefbc3 32768002438eefbc3 ``` + ### Statistics Commands -- show spanning_tree statistics instance \ +- show spanning_tree mst statistics instance \ ``` MSTP instance 0 - VLANs 10, 20, 30 -------------------------------------------------------------------- @@ -495,37 +592,35 @@ PortChannel15 20 6 4 1 ``` ## Clear Commands -- sonic-clear spanning_tree statistics instance \ -- sonic-clear spanning_tree statistics instance interface \ \ + +- sonic-clear spanning_tree mst statistics +- sonic-clear spanning_tree mst statistics instance \ + ## Debug Commands Following debug commands will be supported for enabling additional logging which can be viewed in /var/log/stpd.log, orchagent related logs can be viewed in /var/log/syslog. -- debug spanning_tree region -- debug spanning_tree instance \ +- debug spanning_tree mst instance \ +- debug spanning_tree mst bpdu [tx|rx] +- debug spanning_tree mst event +- debug spanning_tree mst verbose +- debug spanning_tree mst interface \\ Following debug commands will be supported for displaying internal data structures -- debug spanning_tree dump region -- debug spanning_tree dump instance \ -- debug spanning_tree dump instance interface \ \ +- debug spanning_tree mst dump instance \ + ## Disabled Commands Following commands are used to configure parameters at VLAN level and these commands are disabled if spanning-tree mode is `mstp`: -- config spanning_tree vlan (enable|disable) \ -- config spanning_tree vlan forward_delay \ \ -- config spanning_tree vlan hello \ \ -- config spanning_tree vlan max_age \ \ -- config spanning_tree vlan priority \ \ -- config spanning_tree vlan interface cost \ \ \ -- config spanning_tree vlan interface priority \ \ \ - -Following command is used to configure portfast feature. This command is disbaled if spanning-tree mode is `mstp` because an equivalent command of edge port is provided: - -- config spanning_tree interface portfast {enable|disable} - -Also, Region level, Instance level & Edge port configuation commands will be disabled if spanning-tree mode is `pvst`. +- config spanning_tree mst vlan (enable|disable) \ +- config spanning_tree mst vlan forward_delay \ \ +- config spanning_tree mst vlan hello \ \ +- config spanning_tree mst vlan max_age \ \ +- config spanning_tree mst vlan priority \ \ +- config spanning_tree mst vlan interface cost \ \ \ +- config spanning_tree mst vlan interface priority \ \ \ # YANG Model From 6c3db77a68eb16a586207c88e83ecb78c86dda68 Mon Sep 17 00:00:00 2001 From: Rida Hanif Date: Tue, 21 May 2024 15:02:48 +0500 Subject: [PATCH 14/14] Updated Show Commands --- doc/stp/MSTP_HLD.md | 49 +++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/doc/stp/MSTP_HLD.md b/doc/stp/MSTP_HLD.md index dae77fc8dcc..276645e0435 100644 --- a/doc/stp/MSTP_HLD.md +++ b/doc/stp/MSTP_HLD.md @@ -23,7 +23,6 @@ * [Architecture Design](#architecture-design) - [STP Container](#stp-container) - [SWSS Container](#swss-container) - - [CoPP Configurations](#copp-configurations) * [Database Changes](#database-changes) - [CONFIG DB](#config-db) - [APP DB](#app-db) @@ -152,8 +151,6 @@ Updates SAI via following APIs: There are no changes in PortOrch. - - # Database Changes MSTP design introduces some new tables for configuration along with slight modification in existing STP tables. Following are details of each individual table: @@ -362,12 +359,12 @@ Update port-state, topology change and instance-interface events remain the same # Configuration Commands Following configuration commands will be provided for configuration of MSTP: ## Global Level -- **config spanning_tree {enable|disable} {mst}** +- **config spanning_tree {mst} {enable|disable}** - Enables or disables mstp at global level on all ports of the switch. - Only one mode of STP can be enabled at a time. - **config spanning_tree mst max_hops \** - Specify the number of maximum hops before the BPDU is discarded inside a region. - - max-hops-value: Default: 20, range: 1-255 + - max-hops-value: Default: 20, range: 1-40 - **config spanning_tree mst hello \** - Specify configuring hello interval in sec for transmission of BPDUs. Default: 2, range 1-10 @@ -418,24 +415,24 @@ Following commands are used for spanning-tree configurations on per instance, pe ## Interface Level Following new command will be added: -- **config spanning_tree mst interface\ {enable|disable}** +- **config spanning_tree interface\ {enable|disable}** - Configure an interface for MSTP. -- **config spanning_tree mst interface edgeport {enable|disable} \** +- **config spanning_tree interface edgeport {enable|disable} \** - Configure an interface as an edge port. - **config spanning_tree interface \ root_guard {enable|disable}** - Configure an interface as a root_guard. -- **config spanning_tree mst interface \ bpdu_guard {enable|disable}** +- **config spanning_tree interface \ bpdu_guard {enable|disable}** - Configure an interface as a bpdu_guard. -- **config spanning_tree mst interface \ guard {root|bpdu}** - - Configure an interface as a bpdu_guard. +- **config spanning_tree interface \ guard {root|bpdu}** + - Configure an interface as a root or bpdu guard. Interface level CLI configurations of root guard, BPDU guard will also be supported for spanning-tree mode `mstp`. ## Show Commands -- show spanning_tree mst +- show spanning_tree The output of this command will be as follows for `mstp`: ``` @@ -487,21 +484,21 @@ Bridge Address 8000.80a2.3526.0c5e Port Root Path cost 0 Rem Hops 20 Ethernet20 is DESIGNATED FORWARDING -Port info port id 86 priority 128 cost 800 +Port info port id 86 priority 128 cost 2000 Designated Address 8000.80a2.3526.0c5e cost 0 -Designated bridge Address 8000.80a2.3526.0c5e port id 86 +Designated bridge Address 8000.80a2.3526.0c5e port id 25 Timers: forward transitions 0 Bpdu send 80, received 0 Ethernet46 is DESIGNATED FORWARDING -Port info port id 25 priority 128 cost 1000 +Port info port id 25 priority 128 cost 800 Designated Address 8000.80a2.3526.0c5e cost 0 -Designated bridge Address 8000.80a2.3526.0c5e port id 45 +Designated bridge Address 8000.80a2.3526.0c5e port id 86 Timers: forward transitions 0 Bpdu send 80, received 0 PortChannel1001 is DESIGNATED FORWARDING -Port info port id 25 priority 128 cost 2000 +Port info port id 25 priority 128 cost 1000 Designated Address 8000.80a2.3526.0c5e cost 0 Designated bridge Address 8000.80a2.3526.0c5e port id 45 Timers: forward transitions 0 @@ -513,15 +510,15 @@ Bridge Address 8000.80a2.3526.0c5e Port Root Path cost 0 Rem Hops 20 Ethernet46 is DESIGNATED FORWARDING -Port info port id 85 priority 128 cost 2000 +Port info port id 85 priority 128 cost 800 Designated Address 8000.80a2.3526.0c5e cost 0 -Designated bridge Address 8000.80a2.3526.0c5e port id 45 +Designated bridge Address 8000.80a2.3526.0c5e port id 86 Timers: forward transitions 0 Bpdu send 80, received 0 PortChannel1001 is DESIGNATED FORWARDING -Port info port id 25 priority 128 cost 2000 +Port info port id 25 priority 128 cost 1000 Designated Address 8000.80a2.3526.0c5e cost 0 Designated bridge Address 8000.80a2.3526.0c5e port id 45 Timers: forward transitions 0 @@ -614,13 +611,13 @@ Following debug commands will be supported for displaying internal data structur ## Disabled Commands Following commands are used to configure parameters at VLAN level and these commands are disabled if spanning-tree mode is `mstp`: -- config spanning_tree mst vlan (enable|disable) \ -- config spanning_tree mst vlan forward_delay \ \ -- config spanning_tree mst vlan hello \ \ -- config spanning_tree mst vlan max_age \ \ -- config spanning_tree mst vlan priority \ \ -- config spanning_tree mst vlan interface cost \ \ \ -- config spanning_tree mst vlan interface priority \ \ \ +- config spanning_tree mst vlan \ (enable|disable) +- config spanning_tree mst vlan \ forward_delay \ +- config spanning_tree mst vlan \ hello \ +- config spanning_tree mst vlan \ max_age \ +- config spanning_tree mst vlan \priority \ +- config spanning_tree mst vlan \ interface \ cost \ +- config spanning_tree mst vlan \ interface \ priority \ # YANG Model

Hf`&&n{OnMM8B;K|d?4U0X65dQ6T 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 diff --git a/doc/stp/images/MSTP_vlan_del.png b/doc/stp/images/MSTP_vlan_del.png index 6b7e67a2abb1fd47211f3898f7fe05eac1d3e7b5..0959fcde9151f5c074f94dbcdaa3571be751b0bf 100644 GIT binary patch literal 24412 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