STP生成树协议的之间的交互通过stp BPDU(根协议数据单元,Bridge Protocol Data Unit)进行。
- 配置 BPDU(Configuration BPDU),是STP进行计算的关键。
- 拓扑改变 BPDU(Topology Change Notification BPDU),网络拓扑发生变更时触发。
当交换机开启STP协议之后,交换机所有端口将需要经历5种端口状。
进行端口状态划分与切换的原因:
- STP需要经历一个计算的过程,而不同端口状态下需要经历的时长也不同,为的就是能让STP有一个计算的过程。
- 如果设备接入直接使用,将会因为STP没有来的及计算拓扑变更而造成短暂的环路。
STP有哪些端口角色:
- 已禁用(disable)
没有启用STP协议时所处的状态处于禁用状态的交换机端口不会参与生成 树,并且也不会转发帧。
当交换机端口被管理禁用时, 这个端口也会设置为禁用状态。
- 阻塞(bloking)
此状态下只接收BPDU,不发送BPDU,不学习MAC,不转发用户数据。
接收BPDU的原因是为了进行端口选举。
经过20秒的监听,如果没有被选为根端口或指定端口,将一直处于该状态下。
- 侦听(listening)
阻塞状态下的20秒监听发现自己比对端更优先,将成为侦听状态,向外发送BPDU。
此状态下接收、转发BPDU,不学习MAC,不转发用户数据。
经过15秒的监听,如果没有接收到更优的BPDU将成为根端口/指定端口,并进入学习状态。
- 学习(learning)
接收、转发BPDU,学习MAC,不转发用户数据。
此状态下能够接收到用户的数据,不转发数据但记录端口传来的数据帧源MAC地址。
经过15秒的监听,如果没有接收到更优的BPDU将成为根端口/指定端口,并进入学习状态。
- 转发(forwarding)
接收、转发BPDU,学习MAC,转发用户数据
STP工作过程:1、选举根桥(Root Bridge)
当设备刚启用STP或启用的STP的设备刚开机时,设备默认自己是根桥,所有端口都不会阻塞,并主动向外发送BPDU。
BPDU中描述了自己的设备优先级、MAC地址,设备优先级越小越优先,MAC地址越小越优先。
如果15秒转发延迟之后没有收到比自己更优的BPDU信息,自己将稳坐根桥。
2、选举根端口(RP,Root Port)
设备成为根桥后将会定时向外发送BPDU,STP模式中只有根桥发送BPDU。
定时器
Hello 计时器 发送BPDU 的间隔。这个值默认为2秒,可修改为 1 到 10 秒之间的值,该值过小将增大网络的负载。
转发延迟计时器 转发延迟是在侦听和学习状态中消耗的时间,通常是Hello的4倍。这个值默认为 15 秒,不过可以修改为4到 30 秒之间的值。
最大老化时间计时器(在没有收到Hello报文时开始计时) 这个值默认为 20 秒,不过可以修改为 6 到 40 秒之间的值
非根桥设备通过接收根桥发来的BPDU计算出到达根桥的根路径开销。
端口链路的带宽将影响路径的开销,默认华为设备的参考带宽值为:
修改开销标准:stp pathcost-standard <改变STP-Cost开销标准>
直接修改开销:stp cost 10
根路径越小越优先,更具有优先级的端口将成为根端口。
3、选举指定端口(DP,Designated port)
根桥所有端口都是指定端口非根桥所有端口,默认也是指定端口,但会因为端口的选举而出现根端口、阻塞端口等。
4、选举阻塞端口
两台非根桥互连接口都是指定端口,将会选举出一个阻塞端口。
华为设备中叫(AP,Alternate Port)其它设备中通常叫(BP,Backup Port)DP与RP一样,可以向外发送BPDU。
当DP收到BPDU之后,将进行一个对比,优先的将继续成为DP,次优的将成为AP。
(1)比较设备优先级 MAC地址(MAC地址和优先级越小,越是能成为指定端口)
(2)比较端口优先级 端口序号(端口序号越小,优先级越大,越是能成为指定端口) 端口优先级默认128,端口优先级的表示(前4bit是接口优先级、低12bit是接口编号)128.22[默认优先级128,接口号e0/0/22]
个别端口如eth-trunk接口会默认分配一个接口编号。
一阵捣鼓下来,简单说下一些小细节:
- DP收到对端传来的BPDU,发现自己是最优的没有成为RP,而是成为DP。与根桥所有端口都是指定端口前后呼应。
- DP收到对端传来的BPDU,发现自己是次优的将成为RP,与根端口选举前后呼应,因为最优的BPDU都是从根端口中传来的。