背景
STP协议是解决二层交换机环路(Loop)问题(把图形结构变成树形结构)。树形结构中任意两个节点,有且只有一条路径,所以可以消除环路。如何快速生成一颗最优的树是问题关键。
环路可以提高网络连接的可靠性,但会带来问题。
MAC地址表漂移: MAC地址映射的端口号在不断地变换。
广播风暴: 数据帧在环路中不停的兜圈,数据帧被交换机泛洪,环路中的帧成指数型增长。
多帧复制:广播风暴区会有数据帧不断地向外面泄露,设备会不停的接收泛洪的数据帧(设备不停的接收数据帧的拷贝)。
STP协议术语
桥(Bridge): 早期的交换机只有两个转发端口,像桥,所以叫做桥。桥泛指交换机。
桥MAC地址(Bridge MAC Address): 桥有多个转发口,每个端口有一个MAC地址。把端口编号最小的端口MAC地址作为桥的MAC地址。
桥ID(Bridage Identifier BID): 桥优先级(2个字节,缺省值0x8000 32768,值小优先级高)+桥MAC地址(6个字节)
端口ID(Port Identifier, PID): 两个字节, 端口优先级(1字节或4位)+端口编号。
BPDU(Bridge Protocol Data Unit): BPDU是STP协议帧的载荷数据,但它不是网络层数据单元。
RPC: 根端口到达根桥的路径开销,与链路的带宽有关。
STP原理
工作流程: 选取根桥(Root Bridge)->选取根端口(Root Port,RP)-> 选取指定端口(Designated Port,AP)->阻塞备用端口(Alternate Port,AP)
1.确定根桥: 根据BID最小的桥确定是根桥 。
2.确定根端口: 1.比较到达根桥的路径开销RPC(root path cost), 2. 比较上行设备BID 3. 比较上行设备的PID。
3.确定指定端口: 1.比较RPC 2. 比较端口所在的交换机BID 3. 比较端口PID
4.确定备用端口: 交换机上剩余的其他端口。不能转发数据帧,不能转发STP协议帧,只能接收STP协议帧。
STP报文格式
STP协议帧采用IEEE 802.3封装格式,其载荷数据称为BPDU。 BPDU有两种类型:
configuration BPDU ( BPDU Type:0x00) 和 TNC BPDU(BPDU Type:0x80)

图1 configuration BPDU

图2 TNC BPDU (故障点交互机发出)

图3 拓扑改变configuration BPDU(根桥发出,通告全部交换机)

图4 拓扑改变确认configuration BPDU
时间参数字段
Hello Time : 缺省2s, 交换机发送configuration BPDU的周期。当STP树稳定时,全网使用根桥的hello time。在生成STP树的过程中,各个交换机都说自己是老大(根桥),会周期性发configuration BPDU; 在生成STP树后,只有根桥才会周期性发出configuration BPDU;
Forward Delay: 缺省15s;新选出来的根端口和指定端口需要经过2倍的forward delay后才能进入数据帧转发状态。
Message Age: configuration BPDU ,每“经过”一个桥,Message Age 增加1。根桥发出的configuration BPDU Message为0
Max Age : 缺省20s , Message Age 大于Max Age 的BPDU 会被交换机丢弃。只有Message Age小于或等于Max Age的BPDU才会触发交换机发送新的BPDU。
计算参数字段
Root Identifier , Root Path Cost , Bridge Identifier , Port Identifier
BPDU说明字段
Protocol Identifier , Protocol Version Identifier ,
BPDU Type: 0x00 configuration BPDU ; 0x80 TNC BPDU。
Flags: 网络拓扑变换标识,仅使用最低位(Topology Change 标记)和最高位(TC Acknowledgment 标记)。
TNC BPDU
TNC BPDU 只有三个字段:协议标识,版本号,BPDU类型0x80
感知到网络拓扑改变的交换机以Hello Time位周期通过其根端口向上游交换机发送TNC BPDU,直到上游交换机发送TCA标志为1的configuration BPDU。上游交换机重复此动作,把拓扑改变的消息向上传。直到根桥收到TCN BPDU。根桥收到了TCN BPDU 时,发送TC置1的configuration BPDU,通告交换机网络拓扑改变。当交换机知道网络拓扑改变,就会加速MAC地址表老化,地址表的老化时间(缺省300s)缩短为forward delay(缺省15s)时间。
当交换机根端口down了,它就是认为自己是老大。。。。。
STP端口状态
转发(forwarding) : 可以接收发送STP协议帧,可以学习MAC地址,可以转发数据帧
学习(learning): 可以学习MAC地址,不能转发数据帧, 可以接收发送STP协议帧。
侦听(listening): 可以接收发送STP协议帧,不能学习MAC地址
阻塞(Blocking): 只能接受STP协议帧
去能 (disables): 端口处于关闭状态
常用命令
stp modestp 配置stp工作模式
stp priority 0 设置桥的优先级 步长4096
stp root primary 设置根桥
stp root secondary 设置备份桥
stp pathcost-standarddotld-1998 设置路径开销标准
stp cost2000 设置端口路径开销
