google / google/testrun

Consider adding test for detection of Spanning Tree Protocol and variants

Open
#932 2 comments 0 reactions 0 assignees View on GitHub
test
Dominant language
Python
Stars
56
Forks
20
Avg merge
15h 54m
Merged PRs (30d)
12

Description

**What is the problem your feature is trying to solve?**
Advanced (IoT) devices that can lend themselves to a ring Ethernet topology (should) additionally implement Spanning Tree Protocol. Whether the devices are actually _used_ in a ring topology is entirely down to the system design, but irrespectively, a device capable of such a topology should (or may) send BPDUs to detect the presence of a loop in order to implement a suitable tree topology.

Access layer switchports may be configured with BPDU guard to prevent unintended STP topology changes being triggered by unexpected devices. Receipt of a BPDU on a switchport configured with BPDU guard will cause the port to go error disabled/down and require some level of intervention from the active network team to resolve the downtime. Alternative methods such as BPDU filter can be used if it's not possible to disable STP in the end device, but this comes with its own caveats.

**Describe the solution you think would solve the problem**
Testrun should monitor the DUT to see whether it sends BPDUs, and report accordingly. This should be captured within the first 30 seconds of the DUT being powered on, which is when an access layer switchport configured without portfast would be in the listening and learning states.

**Additional context**
As far as I'm aware a Wireshark filter of `stp` will work for STP, RSTP, MSTP, PVST, etc.

I'm not sure whether there's appetite to cater for Industrial IoT devices, but some of these may even implement the far faster topology convergence protocols such as MRP, PRP, HSR. A Wireshark filter of `prp` I believe will hit most.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.