how spanning tree protocol works