2.10.1 以太网 传统STP生成树(STP BPDU、STP端口状态、STP工作过程)
STP生成树协议的之间的交互通过STP BPDU(根协议数据单元,Bridge Protocol Data Unit)进行。
传统STP生成树
- 2.10.1 以太网 传统STP生成树(STP BPDU、STP端口状态、STP工作过程)
- STP BPDU主要分为:
- STP BPDU报文格式:
- STP端口状态:
- 已禁用(disable)
- 阻塞(bloking)
- 侦听(listening)
- 学习(learning)
- 转发(forwarding)
- STP工作过程:
- 选举根桥(Root Bridge)
- 选举根端口(RP,Root Port)
- 选举指定端口(DP,Designated port)
- 选举阻塞端口
STP BPDU主要分为:
-
配置 BPDU(Configuration BPDU),是STP进行拓扑计算的关键。
-
拓扑改变 BPDU(Topology Change Notification BPDU),网络拓扑发生变更时触发。
STP BPDU报文格式:
STP端口状态:
当交换机开启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工作过程:
-
选举根桥(Root Bridge)
- 当设备刚启用STP或启用的STP的设备刚开机时,设备默认自己是根桥,所有端口都不会阻塞,并主动向外发送BPDU。
- BPDU中描述了自己的
设备优先级
、MAC地址
,设备优先级越小越优先,MAC地址越小越优先。 - 如果15秒转发延迟之后没有收到比自己更优的BPDU信息,自己将稳做根桥。
-
选举根端口(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
-
根路径越小越优先,更具有优先级的端口将成为根端口。
-
-
选举指定端口(DP,Designated port)
- 根桥所有端口都是指定端口
- 非根桥所有端口,默认也是指定端口,但会因为端口的选举而出现根端口、阻塞端口等。
-
选举阻塞端口
- 两台非根桥互连接口都是指定端口,将会选举出一个阻塞端口。
- 华为设备中叫(AP,Alternate Port)其它设备中通常叫(BP,Backup Port)
- DP与RP一样,可以向外发送BPDU。
- 当DP收到BPDU之后,将进行一个对比,优先的将继续成为DP。
- 次优的将成为RP,但因为一个设备只能有一个RP,所以只能成为RP的备用端口(AP/BP)
- (1)比较设备优先级+MAC地址(MAC地址和优先级越小,越是能成为指定端口)
- (2)比较端口优先级+端口序号(端口序号越小,优先级越大,越是能成为指定端口)
- 端口优先级默认128,
- 端口优先级的表示(前4bit是接口优先级、低12bit是接口编号)
- 128.22[默认优先级128,接口号e0/0/22]
- 个别端口如eth-trunk接口会默认分配一个接口编号
- 为什么端口优先级的步长是16?
- 已知PID占位4个字节(16bit)
- xxxx 0000,0000 0000
- 前4bit为优先级,后12bit为端口编号
- 当第4个x置1,以每8位为一组数,也就是0001 0000 = 16
- 当第3个x置1,也就是0010 0000=32.0
- 优先级低的将成为阻塞端口。
- 两台非根桥互连接口都是指定端口,将会选举出一个阻塞端口。
一阵捣鼓下来,简单说下一些小细节:
- DP收到对端传来的BPDU,发现自己是最优的没有成为RP,而是成为DP。与根桥所有端口都是指定端口前后呼应。
- DP收到对端传来的BPDU,发现自己是次优的将成为RP,与根端口选举前后呼应,因为最优的BPDU都是从根端口中传来的。