diff --git a/doc/stp/SONiC_PVST_HLD.md b/doc/stp/SONiC_PVST_HLD.md new file mode 100644 index 0000000000..aaef99aaf1 --- /dev/null +++ b/doc/stp/SONiC_PVST_HLD.md @@ -0,0 +1,746 @@ +# Feature Name +PVST +# High Level Design Document +#### Rev 1.0 + +# Table of Contents + * [List of Tables](#list-of-tables) + * [Revision](#revision) + * [About This Manual](#about-this-manual) + * [Scope](#scope) + * [Definition/Abbreviation](#definitionabbreviation) + * [Requirements Overview](#requirement-overview) + * [Functional Requirements](#functional-requirements) + * [Configuration and Management Requirements](#configuration-and-management-requirements) + * [Scalability Requirements](#scalability-requirements) + * [Warm Boot Requirements](#warm-boot-requirements) + * [Functionality](#-functionality) + * [Functional Description](#functional-description) + * [Design](#design) + * [Overview](#overview) + * [DB Changes](#db-changes) + * [CONFIG DB](#config-db) + * [APP DB](#app-db) + * [STATE DB](#state-db) + * [Switch State Service Design](#switch-state-service-design) + * [Orchestration Agent](#orchestration-agent) + * [STP Container](#stp-container) + * [SAI](#sai) + * [CLI](#cli) + * [Configuration Commands](#configuration-commands) + * [Show Commands](#show-commands) + * [Debug Commands](#debug-commands) + * [Clear Commands](#clear-commands) + * [Flow Diagrams](#flow-diagrams) + * [Serviceability and Debug](#serviceability-and-debug) + * [Warm Boot Support](#warm-boot-support) + * [Scalability](#scalability) + * [Unit Test](#unit-test) + +# List of Tables +[Table 1: Abbreviations](#table-1-abbreviations) + +# Revision +| Rev | Date | Author | Change Description | +|:---:|:-----------:|:-------------------------:|-----------------------------------| +| 0.1 | 05/02/2019 | Sandeep, Praveen | Initial version | +| 0.2 | 05/02/2019 | Sandeep, Praveen | Incorporated Review comments | +| 0.3 | 06/25/2019 | Sandeep, Praveen | Incorporated Review comments | +| 1.0 | 10/15/2019 | Sandeep, Praveen | Minor changes post implementation | + + +# About this Manual +This document provides general information about the PVST (Per VLAN spanning tree) feature implementation in SONiC. +# Scope +This document describes the high level design of PVST feature. + +# Definition/Abbreviation +### Table 1: Abbreviations +| **Term** | **Meaning** | +|--------------------------|-------------------------------------| +| BPDU | Bridge protocol data unit | +| PVST | Per VLAN Spanning tree | +| STP | Spanning tree protocol | + + +# 1 Requirement Overview +## 1.1 Functional Requirements + + + 1. Support PVST+ per VLAN spanning tree + 2. Support Portfast functionality + 3. Support Uplink fast functionality + 4. Support BPDU guard functionality + 5. Support Root guard functionality + 6. Bridge-id should include the VLAN id of the pvst instance along with bridge MAC address to derive a unique value for each instance. + 7. Port channel path cost will be same as the member port cost, it will not be cumulative of member ports cost + 8. DA MAC in case of PVST should be cisco pvst mac - 01:00:0C:CC:CC:CD + 9. Support protocol operation on static breakout ports + 10. Support protocol operation on Port-channel interfaces + + +## 1.2 Configuration and Management Requirements +This feature will support CLI and REST based configurations. + 1. Support CLI configurations as mentioned in section 3.6.2 + 2. Support show commands as mentioned in section 3.6.3 + 3. Support debug commands as mentioned in section 3.6.4 + 4. Support Openconfig yang model - with extensions for supporting PVST + 5. Support REST APIs for config and operational data + +## 1.3 Scalability Requirements +16k port-vlan instances with max 255 STP instances. +The scaling limit might differ depending on the platform and the CPU used, which needs to be determined based on testing. + +## 1.4 Warm Boot Requirements + +Warm boot is not supported in this release. User is expected to do cold reboot when PVST is running so that topology will reconverge and traffic will be redirected via alternate paths. + +If PVST is enabled and user tries to perform warm reboot an error will be displayed indicating PVST doesnt support warm reboot. + + +# 2 Functionality + +## 2.1 Functional Description +The Spanning Tree Protocol (STP) prevents Layer 2 loops in a network and provides redundant links. If a primary link fails, the backup link is activated and network traffic is not affected. STP also ensures that the least cost path is taken when multiple paths exist between the devices. + +When the spanning tree algorithm is run, the network switches transform the real network topology into a spanning tree topology. In an STP topology any LAN in the network can be reached from any other LAN through a unique path. The network switches recalculate a new spanning tree topology whenever there is a change to the network topology. + +For each switch in the topology, a port with lowest path cost to the root bridge is elected as root port. + +For each LAN, the switches that attach to the LAN select a designated switch that is the closest to the root switch. The designated switch forwards all traffic to and from the LAN. The port on the designated switch that connects to the LAN is called the designated port. The switches decide which of their ports is part of the spanning tree. A port is included in the spanning tree if it is a root port or a designated port. + +PVST+ allows for running multiple instances of spanning tree on per VLAN basis. + +One of the advantage with PVST is it allows for load-balancing of the traffic. When a single instance of spanning tree is run and a link is put into blocking state for avoiding the loop, it will result in inefficient bandwidth usage. With per VLAN spanning tree multiple instances can be run such that for some of the instances traffic is blocked over the link and for other instances traffic is forwared allowing for load balancing of traffic. + +PVST+ support allows the device to interoperate with IEEE STP and also tunnel the PVST+ BPDUs transparently across IEEE STP region to potentially connect other PVST+ switches across the IEEE STP region. For interop with IEEE STP, PVST+ will send untagged IEEE BPDUs (MAC - 01:80:C2:00:00:00) with information corresponding to VLAN 1. The STP port must be a member of VLAN 1 for interoperating with IEEE STP. + +# 3 Design +## 3.1 Overview + +![STP](images/STP_Architecture.png "Figure 1: High level architecture") +__Figure 1: High level architecture__ + +High level overview: + +STP container will host STPMgr and STPd process. + +STPMgr will handle all the STP configurations and VLAN configurations via config DB and state DB respectively. + +STPd process will handle all the protocol functionality and has following interactions + + * Linux kernel for packet tx/rx and netlink events + * STPMgr interaction for configuration handling + * STPSync is part of STPd handling all the STP operational data updates to APP DB + +Alternate design consideration: +Linux kernel has support for spanning-tree but is not being considered for following reasons + * Supports only STP, no support for RSTP and MSTP + * Currently SONiC does not create a netdevice for each vlan, port combination as it relies on vlan aware bridge configuration. For supporting per VLAN spanning tree a netdevice needs to be created for each vlan, port combination, this will result in higher memory requirements due to additional netdevices and also a major change from SONiC perspective. + +## 3.2 DB Changes +This section describes the changes made to different DBs for supporting the PVST protocol. +### 3.2.1 CONFIG DB +Following config DB schemas are defined for supporting this feature. +### STP_GLOBAL_TABLE + ;Stores STP Global configuration + ;Status: work in progress + key = STP|GLOBAL ; Global STP table key + mode = "pvst" ; spanning-tree mode pvst + rootguard_timeout = 3*DIGIT ; root-guard timeout value (5 to 600 sec, DEF:30 sec) + forward_delay = 2*DIGIT ; forward delay in secs (4 to 30 sec, DEF:15 sec) + hello_time = 2*DIGIT ; hello time in secs (1 to 10 sec, DEF:2sec) + max_age = 2*DIGIT ; maximum age time in secs (6 to 40 sec, DEF:20sec) + priority = 5*DIGIT ; bridge priority (0 to 61440, DEF:32768) + +### STP_VLAN_TABLE + ;Stores STP configuration per VLAN + ;Status: work in progress + key = STP_VLAN|"Vlan"vlanid ; VLAN with prefix "STP_VLAN" + forward_delay = 2*DIGIT ; forward delay in secs (4 to 30 sec, DEF:15 sec) + hello_time = 2*DIGIT ; hello time in secs (1 to 10 sec, DEF:2sec) + max_age = 2*DIGIT ; maximum age time in secs (6 to 40 sec, DEF:20sec) + priority = 5*DIGIT ; bridge priority (0 to 61440, DEF:32768) + enabled = "true"/"false" ; spanning-tree is enabled or not + +### STP_VLAN_INTF_TABLE + ;Stores STP interface details per VLAN + ;Status: work in progress + key = STP_VLAN_INTF|"Vlan"vlanid|ifname ; VLAN+Intf with prefix "STP_VLAN_INTF" ifname can be physical or port-channel name + path_cost = 9*DIGIT ; port path cost (1 to 200000000) + priority = 3*DIGIT ; port priority (0 to 240, DEF:128) + +### STP_INTF_TABLE + ;Stores STP interface details + ;Status: work in progress + key = STP_INTF|ifname ; ifname with prefix STP_INTF, ifname can be physical or port-channel name + enabled = BIT ; is the STP on port enabled (1) or disabled (0) + root_guard = BIT ; is the root guard on port enabled (1) or disabled (0) + bpdu_guard = BIT ; is the bpdu guard on port enabled (1) or disabled (0) + bpdu_guard_do_disable = BIT ; port to be disabled when it receives a BPDU; enabled (1) or disabled (0) + path_cost = 9*DIGIT ; port path cost (2 to 200000000) + priority = 3*DIGIT ; port priority (0 to 240, DEF:128) + portfast = BIT ; Portfast is enabled or not + uplink_fast = BIT ; Uplink fast is enabled or not + +### 3.2.2 APP DB + +### STP_VLAN_TABLE + ;Stores the STP per VLAN operational details + ;Status: work in progress + key = STP_VLAN:"Vlan"vlanid + bridge_id = 16HEXDIG ; bridge id + max_age = 2*DIGIT ; maximum 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) + hold_time = 1*DIGIT ; hold time in secs (1 sec) + last_topology_change = 1*10DIGIT ; time in secs since last topology change occured + topology_change_count = 1*10DIGIT ; Number of times topology change occured + root_bridge_id = 16HEXDIG ; root bridge id + root_path_cost = 1*9DIGIT ; port path cost + desig_bridge_id = 16HEXDIG ; designated bridge id + root_port = ifName ; Root port name + root_max_age = 1*2DIGIT ; Max age as per root bridge + root_hello_time = 1*2DIGIT ; hello time as per root bridge + root_forward_delay = 1*2DIGIT ; forward delay as per root bridge + stp_instance = 1*4DIGIT ; STP instance for this VLAN + +### STP_VLAN_INTF_TABLE + ;Stores STP VLAN interface details + ;Status: work in progress + key = STP_VLAN_INTF:"Vlan"vlanid:ifname ; VLAN+Intf with prefix "STP_VLAN_INTF" + port_num = 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" ; STP state - disabled, block, listen, learn, forward + desig_cost = 1*9DIGIT ; designated cost + desig_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 + tcn_sent = 1*10DIGIT ; tcn transmitted + tcn_received = 1*10DIGIT ; tcn received + root_guard_timer = 1*3DIGIT ; root guard current timer value + +### STP_INTF_TABLE + ;Stores STP interface details + ;Status: work in progress + key = STP_INTF:ifname ; ifname with prefix STP_INTF, ifname can be physical or port-channel name + bpdu_guard_shutdown = "yes" / "no" ; port disabled due to bpdu-guard + port_fast = "yes" / "no" ; port fast is enabled or not + + +### STP_PORT_STATE_TABLE + ;Stores STP port state per instance + ;Status: work in progress + key = STP_PORT_STATE:ifname:instance ; ifname and the STP instance + state = 1DIGIT ; 0-disabled, 1-block, 2-listen, 3-learn, 4-forward + + +### STP_VLAN_INSTANCE_TABLE + ;Defines VLANs and the STP instance mapping + ;Status: work in progress + key = STP_VLAN_INSTANCE_TABLE:"Vlan"vlanid ; DIGIT 1-4095 with prefix "Vlan" + stp_instance = 1*4DIGIT ; STP instance associated with this VLAN + + +### STP_FASTAGEING_FLUSH_TABLE + ;Defines vlans for which fastageing is enabled + ;Status: work in progress + key = STP_FASTAGEING_FLUSH_TABLE:"Vlan"vlanid ; vlan id for which flush needs to be done + state = "true" ; true perform flush + +### 3.2.3 STATE DB + +### STP_TABLE + ;Defines the global STP state table + ;Status: work in progress + key = STP_TABLE:GLOBAL ; key + max_stp_inst = 1*3DIGIT ; Max STP instances supported by HW + + +## 3.3 Switch State Service Design +### 3.3.1 Orchestration Agent + +All STP operations for programming the HW will be handled as part of OrchAgent. OrchAgent will listen to below updates from APP DB for updating the ASIC DB via SAI REDIS APIs. + + * Port state udpate - STP_PORT_STATE_TABLE + + * VLAN to instance mapping - STP_VLAN_INSTANCE_TABLE + +Orchagent will also listen to updates related to Fast ageing on APP DB. When fast ageing is set for the VLAN due to topology change, Orchagent will perform FDB/MAC flush for the VLAN. + + * FDB/MAC flush - STP_FASTAGEING_FLUSH_TABLE + + + +## 3.4 STP Container + +STP container will have STPMgr and STPd processes. + +STPMgr process will register with the config DB for receiving all the STP configurations and with state DB for VLAN configurations. STPMgr will notify this configuration information to STPd for protocol operation. STPMgr will also handle the STP instance allocation. + +STPd process will handle following interactions. STPd will use libevent for processing the incoming events and timers. +1) Packet processing + + * Socket of PF_PACKET type will be created for packet tx/rx + + * Filters will be attached to the socket to receive the STP BPDUs based on DA MAC + + * PACKET_AUXDATA socket option will be set to get the VLAN id of the packet received from the cmsg headers + +2) Configuration - All STP CLI and VLAN configurations will be received from STPMgr via unix domain socket +3) Timers handling - Timer events are generated every 100ms for handling STP protocol timers +4) Port events - Netlink socket interface for processing create/delete of port, lag interface, lag member add/delete, link state changes and port speed +5) Operational updates - STPsync is part of STPd and handles all the updates to APP DB. All DB interactions are detailed in the Section 4. +6) STP Port state sync to linux kernel - Currently the vlan aware bridge doesnt support programming the STP state into linux bridge. As a workaround, when STP state is not forwarding, corresponding VLAN membership on that port will be removed to filter the packets on blocking port. + +### Interface DB: + +In SONiC, ethernet interface is represented in the format Ethernet where id represents the physical port number and port-channel is represented by PortChannel where id is a 4 digit numerical value. + +STPd implementation makes use of its own internal port id for its protocol operation. These port ids are used for bit representation in port masks and also for indexing the array which holds the pointers to STP port level information. So to continue using these mechanisms it is required to convert the SONiC representation of interface to local STP port ids. So when STPd interacts with other components in the system local port id will be converted to SONiC interface name, similarly all messages received from other components with SONiC interface name will be converted to local STP port id before processing. For this purpose an interface DB (AVL tree) will be maintained to map the SONiC interface names to local STP port ids. + + + +### Local STP Port id allocation: + +For allocating local port ids STPd needs to know the max number of physical ports and Port-channel interfaces supported on the device. Currently there is no mechanism to obtain these values in a direct way (like reading from DBs) so below logic will be used to arrive at max ports - + +Max STP Ports = Max physical ports + Max Port-Channel interfaces + +where, + +Max physical ports will be determined from the higher interface id populated say for example if higher port is Ethernet252 (or 254) - max ports will be 256 to ensure breakout ports are accomodated. + +Max Port-Channel interfaces will be same as max physical ports to accomodate the worst case scenario of each Port-channel having only one port. + + +Post bootup, Portsyncd reads the port_config.ini file which contains the port specific configuration information, and updates the APP DB with this information. Orchagent listens to these APP DB updates and takes care of creating all the interfaces in linux kernel and the hardware. Kernel sends netlink updates for the interfaces being created which Portsyncd listens to, once Portsyncd confirms all the interfaces have been configured it will generate PortInitDone notification. STPd will receive this message via STPMgr and then gets all the interface information via netlink for allocating the local STP port ids. + +Note: The port id for Port-channel interface will be allocated only when the first member port is added, this ensures Port-channel interfaces with no member ports dont burn the port ids. + +Example of port id allocation - +``` +SONiC interface STP Port id +Ethernet0 0 +Ethernet4 4 +Ethernet8 8 +Ethernet252 252 +PortChannel10 256 +PortChannel5 257 +PortChannel20 258 +``` + +Note: As Port-channel port ids are dynamically allocated it might result in same port channel getting different value post reboot. To ensure a predictable convergence where port-channel port id is used as tie breaker, user needs to configure appropriate port priority value. + +### 3.4.1 BPDU trap mechanism +SONiC uses copp configuration file 00-copp.config.json for configuring the trap group, ids, cpu priority queue and a policer. This functionality has been extended for supporting STP and PVST BPDU trap to CPU. + +## 3.5 SAI +STP SAI interface APIs are already defined and is available at below location - + +https://github.com/opencomputeproject/SAI/blob/master/inc/saistp.h + +Control packet traps required for STP (SAI_HOSTIF_TRAP_TYPE_STP) and PVST (SAI_HOSTIF_TRAP_TYPE_PVRST) are defined in below SAI spec - + +https://github.com/opencomputeproject/SAI/blob/master/inc/saihostif.h + +## 3.6 CLI +### 3.6.1 Data Models +Openconfig STP yang model will be extended to support PVST. + +### 3.6.2 Configuration Commands + +### 3.6.2.1 Global level + +### 3.6.2.1.1 Enabling or Disabling of PVST feature - Global spanning-tree mode +This command allows enabling the spanning tree mode for the device. + +**config spanning_tree {enable|disable} {pvst}** + +Note: +1) When global pvst mode is enabled, by default spanning tree will be enabled on the first 255 VLANs, for rest of the VLAN spanning tree will be disabled. +2) When multiple spanning-tree modes are supported, only one mode can be enabled at any given point of time. + +### 3.6.2.1.2 Per VLAN spanning-tree +This command allows enabling or disabling spanning-tree on a VLAN. + +**config spanning_tree vlan {enable|disable} ** + + ### 3.6.2.1.3 Root-guard timeout + +This command allows configuring a root guard timeout value. Once superior BPDUs stop coming on the port, device will wait for a period until root guard timeout before moving the port to forwarding state(default = 30 secs), range 5-600. + +**config spanning_tree root_guard_timeout ** + + ### 3.6.2.1.4 Forward-delay + +This command allows configuring the forward delay time in seconds (default = 15), range 4-30. + +**config spanning_tree forward_delay ** + + ### 3.6.2.1.5 Hello interval +This command allow configuring the hello interval in secs for transmission of bpdus (default = 2), range 1-10. + +**config spanning_tree hello ** + + ### 3.6.2.1.6 Max-age +This command allows configuring the maximum time to listen for root bridge in seconds (default = 20), range 6-40. + +**config spanning_tree max_age ** + + ### 3.6.2.1.7 Bridge priority +This command allows configuring the bridge priority in increments of 4096 (default = 32768), range 0-61440. + +**config spanning_tree priority ** + + ### 3.6.2.2 VLAN level +Below commands are similar to the global level commands but allow configuring on per VLAN basis. + +**config spanning_tree vlan forward_delay ** + +**config spanning_tree vlan hello ** + +**config spanning_tree vlan max_age ** + +**config spanning_tree vlan priority ** + + ### 3.6.2.3 VLAN, interface level +Below configurations allow STP parameters to be configured on per VLAN, interface basis. + + ### 3.6.2.3.1 Port Cost +This command allows to configure the port level cost value for a VLAN, range 1 - 200000000 + +**config spanning_tree vlan interface cost ** + + ### 3.6.2.3.2 Port priority +This command allows to configure the port level priority value for a VLAN, range 0 - 240 (default 128) + +**config spanning_tree vlan interface priority ** + + ### 3.6.2.4 Interface level + + ### 3.6.2.4.1 STP enable/disable on interface + +This command allows enabling or disabling of STP on an interface, by default STP will be enabled on the interface if global STP mode is configured. + +**config spanning_tree interface {enable|disable} ** + + ### 3.6.2.4.2 Root Guard: +The Root Guard feature provides a way to enforce the root bridge placement in the network and allows STP to interoperate with user network bridges while still +maintaining the bridged network topology that the administrator requires. When BPDUs are received on a root guard enabled port, the STP state will be moved to "Root inconsistent" state to indicate this condition. Once the port stops receiving superior BPDUs, Root Guard will automatically set the port back to a FORWARDING state after the timeout period has expired. + +This command allow enabling or disabling of root guard on an interface. + +**config spanning_tree interface root_guard {enable|disable} ** + +Following syslogs will be generated when entering and exiting root guard condition respectively - + +STP: Root Guard interface Ethernet4, VLAN 100 inconsistent (Received superior BPDU) + +STP: Root Guard interface Ethernet4, VLAN 100 consistent (Timeout) + + ### 3.6.2.4.3 BPDU Guard +BPDU Guard feature disables the connected device ability to initiate or participate in STP on edge ports. When STP BPDUs are received on the port where BPDU guard is enabled the port will be shutdown. User can re-enable the port administratively after ensuring the BPDUs have stopped coming on the port. + +Below command allows enabling or disabling of bpdu guard on an interface. + +**config spanning_tree interface bpdu_guard {enable|disable} ** + + +By default, BPDU guard will only generate a syslog indicating the condition, for taking an action like disabling the port below command can be used with shutdown option + +**config spanning_tree interface bpdu_guard {enable|disable} [--shutdown | -s]** + +Following syslog will be generated when BPDU guard condition is entered - + +STP: Tagged BPDU(100) received, interface Ethernet4 disabled due to BPDU guard trigger + +STPd will update the config DB for shutting down the interface, user can enable the interface back once it has stopped receiving the BPDUs. + + ### 3.6.2.4.4 Port fast +Portfast command is enabled by default on all ports, portfast allows edge ports to move to forwarding state quickly when the connected device is not participating in spanning-tree. + +Below command allows enabling or disabling of portfast on an interface. + +**config spanning_tree interface portfast {enable|disable} ** + + ### 3.6.2.4.4 Uplink fast + Uplink fast feature enhances STP performance for switches with redundant uplinks. Using the default value for the standard STP forward delay, convergence following a transition from an active link to a redundant link can take 30 seconds (15 seconds for listening and an additional 15 seconds for learning). + +When uplink fast is configured on the redundant uplinks, it reduces the convergence time to just one second by moving to forwarding state (bypassing listening and learning modes) in just once second when the active link goes down. + +**config spanning_tree interface uplink_fast {enable|disable} ** + + ### 3.6.2.4.5 Port level priority +This command allows to configure the port level priority value, range 0 - 240 (default 128) + +**config spanning_tree interface priority ** + + ### 3.6.2.4.6 Port level path cost +This command allows to configure the port level cost value, range 1 - 200000000 + +**configure spanning_tree interface cost ** + + + +### 3.6.3 Show Commands +- show spanning_tree +- show spanning_tree vlan +- show spanning_tree vlan interface + +``` +Spanning-tree Mode: PVST +VLAN 100 - STP instance 3 +-------------------------------------------------------------------- +STP Bridge Parameters: + +Bridge Bridge Bridge Bridge Hold LastTopology Topology +Identifier MaxAge Hello FwdDly Time Change Change +hex sec sec sec sec sec cnt +8000002438eefbc3 20 2 15 1 0 0 + +RootBridge RootPath DesignatedBridge Root Max Hel Fwd +Identifier Cost Identifier Port Age lo Dly +hex hex sec sec sec +8000002438eefbc3 0 8000002438eefbc3 Root 20 2 15 + +STP 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 8000002438eefbc3 8000002438eefbc3 +``` + +- show spanning_tree bpdu_guard +This command displays the interfaces which are BPDU guard enabled and also the state if the interface is disabled due to BPDU guard. +``` +show spanning_tree bpdu_guard +PortNum Shutdown Port shut + Configured due to BPDU guard +------------------------------------------------- +Ethernet1 Yes Yes +Ethernet2 Yes No +Port-Channel2 No NA +``` + +-show spanning_tree root_guard +This command displays the interfaces where root guard is active and the pending time for root guard timer expiry +``` +Root guard timeout: 120 secs + +Port VLAN Current State +------------------------------------------------- +Ethernet1 1 Inconsistent state (102 seconds left on timer) +Ethernet8 100 Consistent state +``` + +- show spanning_tree statistics +- show spanning_tree statistics vlan +This command displays the spanning-tree bpdu statistics. Statistics will be synced to APP DB every 10 seconds. +``` +VLAN 100 - STP instance 3 +-------------------------------------------------------------------- +PortNum BPDU Tx BPDU Rx TCN Tx TCN Rx +Ethernet13 10 4 3 4 +PortChannel15 20 6 4 1 +``` + + +### 3.6.4 Debug Commands +Following debug commands will be supported for enabling additional logging which can be viewed in /var/log/stpd.log, orchangent related logs can be viewed in /var/log/syslog. +- debug spanning_tree - This command must be enabled for logs to be written to log file, after enabling any of the below commands. +- debug spanning_tree bpdu [tx|rx] +- debug spanning_tree event +- debug spanning_tree interface +- debug spanning_tree verbose +- debug spanning_tree vlan + +To disable the debugging controls enabled '-d' or '--disable' option can be used, an example of disabling bpdu debugging is shown below - +- debug spanning_tree bpdu -d + +Follow commands can be used to reset and display the debugging controls enabled respectively +- debug spanning_tree reset +- debug spanning_tree show + +Following debug commands will be supported for displaying internal data structures +- debug spanning_tree dump global +- debug spanning_tree dump vlan +- debug spanning_tree dump interface + +### 3.6.5 Clear Commands +Following clear commands will be supported +- sonic-clear spanning_tree statistics +- sonic-clear spanning_tree statistics vlan +- sonic-clear spanning_tree statistics vlan-interface +- sonic-clear spanning_tree statistics interface + +### 3.6.6 REST API Support +REST APIs is not supported in this release + +# 4 Flow Diagrams + +## 4.1 Global spanning-tree mode + +![STP](images/Global_PVST_enable.png "Figure 2: Global PVST mode enable") + +__Figure 2: Global PVST mode enable__ + +![STP](images/Global_PVST_disable.png "Figure 3: Global PVST mode disable") + +__Figure 3: Global PVST mode disable__ + +## 4.2 Per VLAN spanning-tree +![STP](images/STP_VLAN_enable.png "Figure 4: STP VLAN enable") + +__Figure 4: STP VLAN enable__ + +![STP](images/STP_disable_VLAN.png "Figure 5: STP VLAN disable") + +__Figure 5: STP VLAN disable__ + +## 4.3 STP enable/disable on interface +![STP](images/STP_enable_interface.png "Figure 6: STP enable on an interface") + +__Figure 6: STP enable on an interface__ + +![STP](images/STP_disable_on_interface.png "Figure 7: STP disable on an interface") + +__Figure 7: STP disable on an interface__ + +## 4.4 STP port state update +![STP](images/STP_Port_state.png "Figure 8: STP port state update") + +__Figure 8: STP port state update__ + +## 4.5 STP Topology change +![STP](images/Topology_change_update.png "Figure 9: STP Topology change") + +__Figure 9: STP Topology change__ + +## 4.6 STP Port id allocation +![STP](images/STP_Port_id_allocation.png "Figure 10: STP Port id allocation") + +__Figure 10: STP Port id allocation__ + +# 5 Serviceability and Debug +Debug command and statistics commands as mentioned in Section 3.6.3 and 3.6.4 will be supported. Debug command output will be captured as part of techsupport. + +# 6 Warm Boot Support +Warm boot is not supported + +# 7 Scalability +16k port-vlan instances with max 255 STP instances. +The scaling limit might differ depending on the platform and the CPU used, which needs to be determined based on testing. + +# 8 Unit Test + +CLI: +1) Verify CLI to enable spanning-tree globally +2) Verify CLI to enable spanning-tree per VLAN +3) Verify CLI to enable spanning-tree on interface +4) Verify CLI to set Bridge priority +5) Verify CLI to set Bridge forward-delay +6) Verify CLI to set Bridge hello-time +7) Verify CLI to set Bridge max-age +8) Verify CLI to set Bridge Port path cost +9) Verify CLI to set Bridge Port priority +10) Verify CLI to set Bridge root guard +11) Verify CLI to set Bridge root guard timeout +12) Verify CLI to set Bridge bpdu guard +13) Verify CLI to set Bridge bpdu guard with do-disable action +14) Verify CLI to set portfast +15) Verify CLI to set uplink fast +16) Verify CLI to clear uplink fast +17) Verify CLI to clear portfast +18) Verify CLI to clear Bridge bpdu guard with do-disable action +19) Verify CLI to clear Bridge bpdu guard +20) Verify CLI to clear Bridge root guard timeout +21) Verify CLI to clear Bridge root guard +22) Verify CLI to clear Bridge Port priority +23) Verify CLI to clear Bridge Port path cost +24) Verify CLI to clear Bridge max-age +25) Verify CLI to clear Bridge hello-time +26) Verify CLI to clear Bridge forward-delay +27) Verify CLI to clear Bridge priority +28) Verify CLI to disabling spanning-tree on interface +29) Verify CLI to disabling spanning-tree per VLAN +30) Verify CLI to disabling spanning-tree globally +31) Verify CLI to display spanning-tree running config +32) Verify CLI to display spanning-tree state information +33) Verify CLI to display spanning-tree statistics +34) Verify CLI to display bpdu-guard port information +35) Verify CLI for clear spanning tree statistics + +Functionality +1) Verify Config DB is populated with configured STP values +2) Verify PVST instances running on multiple VLANs +3) Verify VLAN to STP instance mapping is populated correctly in APP DB, ASIC DB, Hardware +4) Verify spanning-tree port state updates for the VLANs are populated correctly in APP DB, ASIC DB, Hardware +5) Verify during topology change fast ageing updates in APP DB and also MAC flush is performed +6) Verify BPDU format of the packets are correct +7) Verify traffic with stp convergence and loops are prevented where there are redundant paths in topology +8) Verify load balancing functionality with multiple spanning tree instances +9) Verify adding port to VLAN after spanning-tree is enabled on the VLAN and verify port state updates +10) Verify deleting port from VLAN running PVST and verify re-convergence is fine +11) Verify BUM traffic forwarding with spanning-tree running +12) Verify forward-delay by changing intervals +13) Verify hello-time timers +14) Verify max-age by changing intervals +15) Verify altering bridge priority will alter Root Bridge selection +16) Verify altering port priority will alter Designated port selection +17) Verify altering port cost results in path with lowest root path cost is seleced as root port +18) Verify port states on same physical interface for multiple STP instances configured +19) Verify Topology change functionality and spanning-tree reconvergence by disabling/enabling links +20) Verify spanning-tree behavior after adding few more VLANs +21) Verify spanning-tree behavior after removing some of the VLANs +22) Verify rebooting one of the nodes in the topology and verify re-convergence and traffic takes alternate path +23) Verify port cost values chosen are correct as per the interface speed +24) Verify Root guard functionality +25) Verify BPDU guard functionality, verify BPDU guard with do-disable functionality +26) Verify Portfast functionality +27) Verify Uplink fast functionality +28) Verify PVST and STP traps are created after switch reboot +29) Verify PVST behavior when spanning-tree disabled on VLAN, verify APP DB, ASIC DB, hardware are populated correctly +30) Verify global spanning-tree disable, verify APP DB, ASIC DB, hardware are populated correctly +31) Verify spanning tree config save and reload, verify topology converges is same as before reboot +32) Verify PVST convergence over untagged ports +33) Verify PVST interop with IEEE STP +35) Verify bridge id encoding includes the VLAN id of the respective PVST instance +36) Verify PVST operational data is sync to APP DB +37) Verify PVST over static breakout ports + +Scaling +1) Verify running 255 PVST instances +2) Verify 16k vlan,port scaling + +Logging and debugging +1) Verify debug messages are logged in /var/log/syslog +2) Verify changing log level +3) Verify Pkt Tx/Rx Debug +4) Verify STP debug commands +5) Verify debug commands output is captured in techsupport + +REST +1) Verify all REST commands + +PVST over LAG +1) Verify PVST behavior over LAG +2) Verify adding port to LAG will not flap the protocol +3) Verify deleting a port from LAG will not flap the protocol +4) Verify BPDU is sent only from one of the LAG member port +5) Verify adding LAG to VLAN running PVST +6) Verify deleting LAG from VLAN running PVST + +SAI +1) Verify creating STP instance and ports in SAI +2) Verify adding VLAN to STP instance in SAI +3) Verify updating PortState in SAI +4) Verify deleting VLAN from STP instance in SAI +5) Verify deleting STP instance and ports in SAI + +L3 +1) Verify L3 traffic with PVST in topology diff --git a/doc/stp/images/Global_PVST_disable.png b/doc/stp/images/Global_PVST_disable.png new file mode 100644 index 0000000000..c0a0aee3b1 Binary files /dev/null and b/doc/stp/images/Global_PVST_disable.png differ diff --git a/doc/stp/images/Global_PVST_disable.xml b/doc/stp/images/Global_PVST_disable.xml new file mode 100644 index 0000000000..a65260b9bc --- /dev/null +++ b/doc/stp/images/Global_PVST_disable.xml @@ -0,0 +1,2 @@ + +7Vxbc9o4FP41zOw+JOMLNvDIpclmphemZNPuo7AFeCosaosQ+utXsiVfJAMyjVOXkofEPtbNR5/O+c6RnI49Xr/cR2Cz+oB9iDqW4b907EnHskzT6dM/TLJPJT3bSQXLKPB5oVwwC35ALjS4dBv4MC4VJBgjEmzKQg+HIfRISQaiCO/KxRYYlXvdgCVUBDMPIFX6JfDJKpX2HSOX/wOD5Ur0bBr8yRqIwlwQr4CPdwWR/a5jjyOMSXq1fhlDxJQn9JLWuzvwNBtYBEOiU2Fge4b7/eX5yw9IHu4e7PDD1+CGt/IM0Ja/8Oxx+uH+Mx8y2Qs90NFv2OV2jd4HC4iCkN6NNjAK1pDAiD5BXDzNZaPdKiBwtgEeq7qjCKGyFVkjemfSSzppBNAqUXaPENjEwTzp1aCSCHrbKA6e4WcYp9hgUrwlrKdxNudJUbwNfejzpjJtG0m768Dj1wjMIRoB79syqTDGCLPuQ5y8UEwi/A0KYceyjeQneyIwwLpYBAgVSt4lP0xO3+oOrAPEIP8EIx+EgIs5vk2L31d1BFCwDKnMo/OaKFGdaDFrMCLwpSDiE38PMZ2AaE+L8KddsZz4Khzw210O6Qy4qwKcnT4XAr6MllnTOdLoBQdbDeBZCvAUyBWAssFBSJIhOKOOM5GQhyOywkscAlTEXo4H49LxcHRp64PEKWHEtKpAomLE6jaFEbvKOE2upqnNUKyNOsdpm2nqKrD7FHmr4fKvmGz+vqLvotDXt9uGPufqGBt2jN26IJEdo6vpGI2mMOIqGBl/+nj3cH81Tm0GY23jZLaOtfeuxqlh4+TWBYlsnAxN4+Q2hZH+FSO/kk4PyniwbE08WE3hYaDg4R7hOUjShEEMmNewjDX22Z+O5SI6oNE8oldLdjV9mj2q0mOIYroKPICGXLtzTAhe0wcw9IcsI8hkCHvfEhF9w68cL8nNf1rg0Zx46C/hjA8SojnevcsFo0RAH4jxHpt/1tDR2Y8gAoQ63FKtqqnkVads2RU8jSuhxpTQEONt5EFeq5hklBqyZPjJDREQLSFRGkqQlb3P+WAT3RXQFmISLPZXDDWNIduQpt5yzsNQ1znRUNMYUnOTTWPoz0JKT+Is9kDP2lCtgX2hGOcOh/uRUkuinxwvaYvVtfu9E6NsGoZq+lOBG4PLRp81ZNtkYC5aMDqVMyzMea+swYrI160gE25jka+pJudE6CuvzclIY72KANnb09DU14l+5yn5fD/PBNmy/ZQGuFyuTsvxaT5N8U5ovbGoz9TISR1AYr1Xro9PKfjRJLvdXmOqUlMzx3zEOdGPrpKdA0o+iqu3DRVNjXxCwVtyd+iDeJVljArKzInYrVOkYtmzyUuRpU32/K6mQlOzr4GBk260oHenQu9C9pPetrxEFOjrsrJ+uZ0bedevaW+okVZoD1S4gUt1+/tAhS5IifOcixZpW0V2TU2DRc056DqsV6NOPbNl1EkkeApKGU6nVDBpJS0aHJiI9tCiDCuvRYsOvfLvT4uEZn49LaqRUf1ltMjSiPxa4+uyU5mnaJF4iZb4usugRZYaD7cXKsLAnaRFLYPKpdAi6/w4/tVo0WDQNlqkRuzD2cO4rbzIOiusf1tepBHV1+FFB1/5AnhR85vlukruHVBym3iRRljXGmcnFHqaF/Vb5ewugxeJlf17QIXr6jQvahdULoUX2Wogb97S+383PiDsWMqGmtYEO8mtvKlksbJD36e/n94PP8Zs0WP6y4cLtXAQ0lZCr6IZmzUzgQgmXZIV+z17nFZtYrlgzWhGOI83hSbji9+fPrp6mt61vjGlAw52t6eF9rrb1jfZGT6pI719a+vEKJteTFXJixSXDBD0yQJwI+d+37KPH0cCMpkg28KFAFEEposQJH0fOg9WvSRESfomaedZ8VMLhZIgUnYCETvLDPJDzioZA1uC+XlnVkEc70NwQSrWG8FspDGNHIJw+chuJjfdY8cyapwJdQclDFg2dxxF6mZXOAa7Kepmq3mKGbUzVLIUhwG1bF12YvDCLd0bncTpSuf+bGNwq3dqq65R60onSfKe9KyafK61YqRNGzY1UTAbPjDXP3244rFsgIzbni0cQXYw/VU4pylzzq6Yl1cGrGn2jcqO9PBqWk519VNwzVsSBfFiEcNmIH1+pubVEoJm9p1xa75ysdWszGwfer6im+vnVS36VOI4wmumtd4Wbxp5resnMz+Hg742Dtr60aet7t788Z82HF3zjScEpK0sWwQ59T94ON5O06elDqS/qHdhtKOYiuKZMBlvPDGWpr0WONqByKdB7YFU2We4xs+wkC1bRBSAhz/+MvJo/o/k1D8JU1dOW/UGjRBmVzrwJvrR48vZ/wU7NMqzFwG9zf/JVlo8/1dl9rv/AQ== \ No newline at end of file diff --git a/doc/stp/images/Global_PVST_enable.png b/doc/stp/images/Global_PVST_enable.png new file mode 100644 index 0000000000..1e46076404 Binary files /dev/null and b/doc/stp/images/Global_PVST_enable.png differ diff --git a/doc/stp/images/Global_PVST_enable.xml b/doc/stp/images/Global_PVST_enable.xml new file mode 100644 index 0000000000..ededac154d --- /dev/null +++ b/doc/stp/images/Global_PVST_enable.xml @@ -0,0 +1,2 @@ + +7ZrbctowEIafhst0fMAGLgskaTtNSwvTw6VsC1sT2XJkEaBP35UtnyE4yThNW7jB+nX06pN2l2RgzsLdNUdxcMM8TAeG5u0G5nxgGLo5GcOXVPaZMrLNTPA58VSjUliSX1iJmlI3xMNJraFgjAoS10WXRRF2RU1DnLNtvdma0fqsMfJxS1i6iLbV78QTQaaOLa3U32HiB/nMuqZqQpQ3VkISII9tK5J5OTBnnDGRPYW7GabSeLldsn5XR2qLhXEciS4d1mNz+MV5Z9zdxbezDztuL1azCyMb5R7RjXrh5Wpxc/1VLVnsczvA6mP5uAnpR7LGlERQmsaYkxALzKGGKnlRatNtQARexsiVXbdACGiBCCmUdHiETRMIuvCiTCmKE+Kks2qgcOxueELu8VecZGxIlW2EnGlW7HnalG0iD3tqqMLaWjpuSFz1TJGD6RS5t37aYcYok9NHLH2hRHB2i3NxYJha+ilqcgbkFGtCaaXlVfqROrzVFQoJlch/w9xDEVKy4ls3VPnQRIgSPwLNhX1Njai2CHOBd0f3Xi+IgqOIGWwA30MT1WGYHyd1CiequC2RLsANKjhbYyUidYz8YuiSNHhQsD0CPLMFXgu5CigxI5FIl2BNB9a8QR7jImA+ixCtslfyoP2HPBw/7cchsWqM6MYhSNqMGMO+GBkeupzm56vpL0Px4avJsl7b1TRqYTf7/Onq/fUZvH8KPP3V+cTx2Se+vE8cPconah19ot0XI5MzI3/SWU3qPMB03Xgw+uIhn60CxDVlDpIdkxhFEYn8C8ExlikpZOcDuRKbwrqmDocnXz4tvi1XbfUhsKQVCWTJb5WRHSYEC6ECR95bmXZLjTL3NpXgRX8obNLCz04Mddx/7EHCrhaJqcO2l6UwTQWoyNdbvJbs9VgIOKZIgN+t9Tu0o6rrQp6+isOxG/DoDSgStuEuVr2qmXxjIKNJYXMggbiPRWugFLDifZ7BnN5iLmKCrPdnhvpmyNQaW29YT2NoaJ0YqG+GOvwAIHc0Pnprq1/8kJM31zpvQn6ORvUI0G5f5vaBy9zWervM2xlvnno0D9Z82uGw5QmKu4fUwOuSfTiZ8//oFEJxsj5nCYbSnx5wZTvf3pQTVu8t6tatlyDxUabI+WwEnx2DjeGoN1PZp031zOjzGVxZJ7l62VBdb/+Q0LJWxdUpj+WhJCgy9ooxSw/4xqr6wKJuvqu6x/lelTq4qgePReYHTkLxoN2tQ2m00p7pEOtHpIV+V3c4ro9z0fxNs29v2CH1f8WoKF+eGfvVogIHsr7L5lNpMetxQ9M19QyL2Q6dlgAHKH6e+S1Xi0PhgY1C6e8jJ5FfKh28iO8T0V/k/n/F58NGjmdqkzfdInSwG9pXminneXymRvBazlTilo155OKcnFzpkzmGYvl37ax5+d8B5uVv \ No newline at end of file diff --git a/doc/stp/images/STP_Architecture.png b/doc/stp/images/STP_Architecture.png new file mode 100644 index 0000000000..a3b0919eca Binary files /dev/null and b/doc/stp/images/STP_Architecture.png differ diff --git a/doc/stp/images/STP_Architecture.xml b/doc/stp/images/STP_Architecture.xml new file mode 100644 index 0000000000..a28ee60da6 --- /dev/null +++ b/doc/stp/images/STP_Architecture.xml @@ -0,0 +1,2 @@ + +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 \ No newline at end of file diff --git a/doc/stp/images/STP_Port_id_allocation.png b/doc/stp/images/STP_Port_id_allocation.png new file mode 100644 index 0000000000..0ab1f5e46c Binary files /dev/null and b/doc/stp/images/STP_Port_id_allocation.png differ diff --git a/doc/stp/images/STP_Port_id_allocation.xml b/doc/stp/images/STP_Port_id_allocation.xml new file mode 100644 index 0000000000..61a22f875d --- /dev/null +++ b/doc/stp/images/STP_Port_id_allocation.xml @@ -0,0 +1,2 @@ + +7Zpbc9o4FMc/DY/p+A555JJkO0unTGDa3aeObAvQIFteWQTop1/Jlo2MHDBJnZAWHhL7r5t9zs86R7I79jDaPlCQLL+QEOKOZYTbjj3qWJZpuj3+Tyi7XOnabi4sKAplpb0wRT+hFA2prlEI00pFRghmKKmKAYljGLCKBiglm2q1OcHVUROwgJowDQDW1e8oZMvivgxjX/AXRIulHLrnyoIIFJWlkC5BSDaKZN917CElhOVH0XYIsTBeYZe83f0zpeWFURizJg2248dvP4yfn/+e+f8Nbrps5gXzGzvv5QngtbzhCaFsuouDUF412xWm4DeQiMN1hMdoDjGK+dkggRRFkEHKS7CUJ3ttsFkiBqcJCETTDYeEa0sWYX5m8kPuNwZ4E1qeYwySFPnZqAZXKAzWNEVP8BGmOR5CJWsmRhqWbs+qknUcwlB2VRrcyPqNUCCPMfAhHoBgtcgaDAkmYviYZDeUMkpWsBA7lm1kv7KkwEAMMUcYKzXvs5/Q+V3dgwhhQf03SEMQAylLxE1LntcNBDBaxFwLuGszI+q+lu5/gpTBrSJJ3z9Awh1Ad7yKLLUsL28iH8SexHKjUF1AvVSAdouKQD5Ji7LrPWz8QPJ2BnuOxt50Nvny8HgF77cCzzUuDTxXA09DTgElIShm2SW4g447OiCPz5ZLsiAxwCp7ex6M352Ho492Y0gct8LIbR0jOiL8SltCpHdF5D1jVdes4FDmUCd4MFubMorR1ETp6+Psx6w/GPNe+h3Lw/wiBj7lRwtxJPKozzFiI+EprfQYTcJOiGegfWlZnzBGIl4A47AvUlqhYRKsMonf3T+Slezk30bgNHQ6DHkyLC8SYp9s7vbCIBN4QXG9x3wvOjrqeQoxYDzWVlrVuVE2nYhHTiGmd0BMMaEUXaRkTQMoW6lZ8kFHjnmiIwboAjKto4yq8n5eAZqekceEofnuylDbDDnWges942UMue6JjtpmSM+s32Y2ehde9vh+sioAf3Ju3UIYbVW+Rzv1TInKmfhuALreATe925cB2DXs4x21DGCRLR1LnwQiSfNcodzhAX7Rg1HvBNnK7lWXHa6eQng1KYRntJVCWPrM3p9MuDDSn79ixRvs+FozbLKc9fN0cuyXQvkYfs1XrFLXTX7chaeTthMWbS0ns/Rprill593y2exZ1dWMaTdLX51ua6Zqf8nb1MjNl4anFn9Wa9byTltLiX4yvIUgXZZbQIoxlfjkqvHJPBGbzjRoPqU3YOBkFFPs7tbty0jttcGu8oho6DcNdb1qPzfO26ZaVvcjoVJcW2bbj4PKjdmtetl+KS3FRHywFflGsDj6JkLTgPXL0iLPqzeBOtk6da5sLYzb+l7bdDYJNctc3wJc0Jbecb7PjO1vi9tt66nQH7S1e/yJ/rDb/46pQdLHmASAQa6KA9FFwt3P/8XryOfmER8XiL8g654t4b4GiEPRDCzEuNyWcz4dpR3LA5GYjmI/TTLjntyW4dZk1fmrSkmx0aLgICXNlYfbOhEKw2yHpW7CrALdPDo96++ueRDQnRqP23Uub83jF7Bl0XsmPXnHV/T6nsUYxestl1aQxuJbn2uU/mCzc0n6JUdpp8HezjVKv44DuzEH9VHa9JqFafPw9cevo+S81XeAQZoKx6pzy7Pz+YUsfnvdalCwzQNrNn4pYHrHO2p79auv8x4ga5IwzUnHGoqWCIh0C4pJffVHpUtWlYHazKBu7/0F6RI/3X+Tmvt+/2Wvffc/ \ No newline at end of file diff --git a/doc/stp/images/STP_Port_state.png b/doc/stp/images/STP_Port_state.png new file mode 100644 index 0000000000..497504ce4b Binary files /dev/null and b/doc/stp/images/STP_Port_state.png differ diff --git a/doc/stp/images/STP_Port_state.xml b/doc/stp/images/STP_Port_state.xml new file mode 100644 index 0000000000..16ff9a41de --- /dev/null +++ b/doc/stp/images/STP_Port_state.xml @@ -0,0 +1,2 @@ + +7Ztbc6M2FMc/jWfah+wAMuA8+pLsprOddeu22z7KIGNNBGJAjuN++kogrgKDM2Zjp/ZMxuigG+f8hKS/4hGY+6+fIxhuf6UuIiNDc19HYDEyDF03J/xLWA6pxQZmavAi7MpMhWGF/0XSqEnrDrsormRklBKGw6rRoUGAHFaxwSii+2q2DSXVVkPoIcWwciBRrd+xy7apdWLYhf0Lwt42a1m37tM7PswyyyeJt9Cl+5IJPIzAPKKUpVf+6xwR4bzML2m5x5a7ecciFLA+BX55AYtA+x77vwVfxp6zcHZ2eCdreYFkJx949cdyITvMDpkXeN9DcbnzyVe8QQQHPDULUYR9xFDE7xBpXha22X6LGVqF0BFF95wPbtsyn/CUzi95yBjkRaI8TQgMY7xOWtW4JULOLorxC/odxSkZwkp3TLQ0zyOeZKW7wEWurCr3tZbU62NHXhO4RmQGnWcvKTCnhIrmA5o8UMwi+owy48gAWvLJ72QEiCY2mJBSzsfkI+z8qR6hj4kA/i8UuTCA0izp1g2ZbmoIEuwF3ObwqCZOVMOcxQxFDL2WTDLsnxHlAYgOPEt215YIyjF4L4fgvgBa12SWbQlmcyKNUA4iL6+64IxfSNROwM5QsPsWOdup91PMwp9v9H0o+sbmpdEHFPoU5EqghBQHLOmCORuZixp5NGJb6tEAkjJ7BQ/aR+fh6Pg+AZIKI7qlNUCiMpLnOzsj4xsj7/jOMPQqDwZoemk08DDYO8NUePgzdCFD3HbH//iqSTwzj/TI4A1YhHdoto74lccSl1jQFxNQsI7DJDhJ0XndjgN+J+AzVkMN7fQJv2K+ZJ3KSKwpY9TnN1DgTsUaWNgIdZ47ceqJAnL5Gll2BZE13T8Uhlli4DeyXh0jQlR0lIcIEcj4FFwp1RRcWXQpBmKJI6PGkTmuVhHTXeQgWapAhHsNHkrZ5Phubwdoje0UxKU1NpcGZkcvGYw8xJReJiDnzno725bCdkAZ3hxuFJ6HQmDV4jsxB6EQ1Nb5WTv9KBzfd/RyYArt2xv2Ctk2tSo1wBh/GoZuU9daWurHtwU6ezow4ZP+hLfC3IE9DkQDBIovH/lrviAzNAbFpvYG/CBLCmDcDwR8fVFRtPS2ZUVDTwcG/r51YcGj4OGY7xf4BkjolnU2HYJR4pwbtOV9kfbJBgBUopq9Fc+8RgH2j1mjZO30XKOMm0t3AV1UlGWkm02MBoE+C8gx6UBAF7bSoOyT8+MNuM5q0EbHOLFqc6Wlbp+thu2zpQ21fdbVg4bp6onXpS3UIZ3pvc6B4MDtI+auUy3l6zo35CP7W6rXSrvq8+Mx7FYsOlw6mCChqxp6X8xOe+ST4atNkDrop+WN7cFcNbzg29fJRouTj3LV5K38WPH83uohfZYmVDljujDe5gcgJWdyf0SHv3lC42sPmfynfG8h3KDlqYNMnejQ9L3fg4HOmbbkd7PB7+Z5ptvqEFHQb5lslWom1XruxrV6Bl7f6aoqesGoZOfwiW+vB5U73a4vzd5IS20/UZ+ahoZFlRlXh8BxW6f/23HvNR7d2DXK3v+4V1eVxXNP//+js7zjY/t6D3x1VZ27nYKcUzizaiEHZr9p7FSFwar9v0nWTj+Fwa5PtvVeDj1LqprZavrEDdPl043EH6WG2bWFNRjoxM6+1xrb6cfqxGoufUlqWLZNfU81DAC94qd3V8OMBjVsubxUMSwP4eWKYRlU5xLDWh/5+sUw42LEsDxoFyyGGdckhmV96xTDjMtSOD6GGGZckxiW/yilSwy7MFQuXwzjyeI3PWn24pdR4OE/ \ No newline at end of file diff --git a/doc/stp/images/STP_VLAN_enable.png b/doc/stp/images/STP_VLAN_enable.png new file mode 100644 index 0000000000..dfa2a2cdd2 Binary files /dev/null and b/doc/stp/images/STP_VLAN_enable.png differ diff --git a/doc/stp/images/STP_VLAN_enable.xml b/doc/stp/images/STP_VLAN_enable.xml new file mode 100644 index 0000000000..006003ddc2 --- /dev/null +++ b/doc/stp/images/STP_VLAN_enable.xml @@ -0,0 +1,2 @@ + +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 \ No newline at end of file diff --git a/doc/stp/images/STP_disable_VLAN.png b/doc/stp/images/STP_disable_VLAN.png new file mode 100644 index 0000000000..6e62d7c842 Binary files /dev/null and b/doc/stp/images/STP_disable_VLAN.png differ diff --git a/doc/stp/images/STP_disable_VLAN.xml b/doc/stp/images/STP_disable_VLAN.xml new file mode 100644 index 0000000000..775c3e9244 --- /dev/null +++ b/doc/stp/images/STP_disable_VLAN.xml @@ -0,0 +1,2 @@ + +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 \ No newline at end of file diff --git a/doc/stp/images/STP_disable_on_interface.png b/doc/stp/images/STP_disable_on_interface.png new file mode 100644 index 0000000000..5b0464da00 Binary files /dev/null and b/doc/stp/images/STP_disable_on_interface.png differ diff --git a/doc/stp/images/STP_disable_on_interface.xml b/doc/stp/images/STP_disable_on_interface.xml new file mode 100644 index 0000000000..5e3396ffa9 --- /dev/null +++ b/doc/stp/images/STP_disable_on_interface.xml @@ -0,0 +1,2 @@ + +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 \ No newline at end of file diff --git a/doc/stp/images/STP_enable_interface.png b/doc/stp/images/STP_enable_interface.png new file mode 100644 index 0000000000..fce47c61f3 Binary files /dev/null and b/doc/stp/images/STP_enable_interface.png differ diff --git a/doc/stp/images/STP_enable_interface.xml b/doc/stp/images/STP_enable_interface.xml new file mode 100644 index 0000000000..9760d69e28 --- /dev/null +++ b/doc/stp/images/STP_enable_interface.xml @@ -0,0 +1,2 @@ + +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 \ No newline at end of file diff --git a/doc/stp/images/Topology_change_update.png b/doc/stp/images/Topology_change_update.png new file mode 100644 index 0000000000..9212c50f54 Binary files /dev/null and b/doc/stp/images/Topology_change_update.png differ diff --git a/doc/stp/images/Topology_change_update.xml b/doc/stp/images/Topology_change_update.xml new file mode 100644 index 0000000000..f0235c9391 --- /dev/null +++ b/doc/stp/images/Topology_change_update.xml @@ -0,0 +1,2 @@ + +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 \ No newline at end of file