目录
一.引言
在一个公司网络里面,冗余环境是必备要求。他能解决当一条链路崩坏不可用的时候,会有备份链路作为新的可用链路来传递信息,当然,冗余环境需要一定的技术支持,否则会照成环路,广播风暴等问题。这一技术在三层交换机或则路由器上有网关冗余协议来提供支持,那么只在以太网环境中用什么技术怎么解决了???STP协议就此诞生,本篇文章会先大体带大家理解一下,之后介绍STP里面各个专有名词和技术点,最后具体去讨论如何实现冗余环境,并思考拓扑变更的不同情况的时间算法。
二.简单理解
如图所示,一个报文从下面的交换机Sw2发入,要从SW5发出,但由于Sw4也知道目的网段怎么走,所以说Sw5也会发给Sw4,从而形成环路。
解决方法:在以太网环境中选取一个老大,这个老大能把知道的汇总信息并把信息发给大家,各个小弟知道后会择优选举出最好的路去发送信息,最坏的路则先关闭掉,当比他好的路断掉后,才会协商把这条路给打开。
三.STP(端口)角色和选举
1.桥ID
介绍:每台交换机的身份证,由桥优先级和背板MAC地址组成
注意:优先级默认为32768,可以更改为4096的倍数,查看背板MAC地址(show version)
2.端口ID
介绍:每台交换机上端口的身份证,由端口优先级和端口MAC地址组成
3.根桥
介绍
为了防止协商报文在环境中泛滥,会选举一个交换网络的核心——根桥,一个交换网络只有一个根桥,用于汇总和发送协商报文。
选举
交换机刚开机,认为自己都是根桥,都会发送并接受协商报文,之后会选举桥ID最小的作为根桥,判断桥ID最小:先比较优先级,越小越优先,如果相同再比较MAC地址,越小越优先
拓扑理解(仅仅是理解,具体分析见后面)
4.根端口
介绍
用作接受协商报文的端口,注意,每台交换机上只有一个根端口
选举
先比较根路径开销最小的(当前交换机上离根桥最近的开销),再比较发送方(根桥)桥ID最小的,最后再比较发送方(根桥)端口ID最小的。
拓扑理解(仅仅是理解,具体分析见后面)
5.指定端口
介绍
用作发送协商报文的端口,注意,每条链路上只有一个指定端口,以太网环境中的根桥上端口都为指定端口。
选举
先比较根路径开销最小的(当前交换机上里根桥最近的开销),再比较发送方(根桥)桥ID最小的,最后再比较发送方(根桥)端口ID最小的。
拓扑理解(仅仅是理解,具体分析见后面)
6.阻塞端口
介绍
接受但不发送协商报文的端口,不收发数据。
选举
根端口,指定端口评选完后剩下的即为阻塞端口。
拓扑理解(仅仅是理解,具体分析见后面)
四.端口状态
设备接受协商报文(BPDU)的时候并不会立马转变端口状态,而是经过一系列变化进行转换
五.BPDU
上述的协商报文,在STP里面就是BPDU
1.分类
配置 BPDU
介绍:每2S发送一次,老化时间20S,环境稳定后,之后根桥会发送配置BPDU
内容:1.自己的桥ID 2.RPC根路径开销 3.根桥ID 4.端口ID
TCN BPDU
介绍:拓扑变更通知BPDU,通知网络环境发生变化
具体实现:
2. 报文大致内容
3.抓包分析
4. 具体解析(初学不用掌握!!!大致看看)
字段内容 | 说明 |
Protocol IDentifier(协议ID) | 协议ID=0 |
Protocol Version IDentifier(协议版本ID) | 协议版本标识符: STP——0; RSTP——2; MSTP——3; |
BPDU Type(BPDU类型) | STP BPDU类型有两种: 0x00——STP的配置BPDU 0x80——STP的拓扑改变通告BPDU RSTP/MSTP BPDU类型: 0x02——RST BPDU或者MST BPDU |
Flag(标志位) | Flag由8比特组成,其中STP使用2比特:第1比特位(左边,高位)——TCA(拓扑改变确认)最后1比特位(右边,低位)——TC(拓扑改变 |
Root IDentifier(根ID) | 根ID是通告根桥的ID,由8字节组成,前2字节由根桥优先级(优先级默认为32768)+扩展系统ID组成,后6字节标识根桥的背叛MAC地址 |
Root Path Cost(根路径开销) | 指BPDU报文的发送者到达根桥的距离,如果是根桥发送的BPDU报文,该值为0(根桥到自己的距离为0) |
Bridge IDentifier(网桥ID) | BPDU报文发送者的网桥ID,由8字节组成,前2字节由发送者的网桥优先级(优先级默认为32768)+扩展系统ID组成,后6字节标识发送者的背叛MAC地址 |
Port IDentifier(端口ID) | BPDU报文发送者的端口ID,由2字节组成,前1字节标识端口优先级,后一字节标识端口ID |
Message Age(消息老化时间) | 默认值为20秒,等于Max Age,BPDU报文每经过一台交换机转发,该值会加1,用于限制BPDU报文可以传递的范围。该判断过程如下:交换机收到BPDU报文后会将Message Age和Max Age进行对比,如果Message Age大于Max Age,丢弃BPDU报文不转发;如果Message Age小于或等于Max Age,转发BPDU报文,并将Message Age加1 |
Max Age(最大老化时间) | BPDU报文的最大老化时间,默认值为20秒。如果超过20秒没有收到BPDU报文,则认为网络出现故障重新执行STP计算,收敛网络 |
Hello Time(Hello时间) | BPDU报文发送间隔时间,默认值为2秒 |
Forward Delay(转发延时) | Listening(侦听)和Learning(学习)两种状态的持续时间 |
六.具体理解
我们以这张拓扑来分析STP如何实现
1.先选根桥,比较桥ID,桥ID优先看优先级,再看背板MAC地址,越小越优先,由图可见SWA为根桥
2.根桥上的所有端口默认为指定端口
3.再选根端口,一个交换上只有一个根端口,SWB,SWC上必定是P1作为ROOT指定端口的根端口,SWD上比较端口到根桥的开销,越小越好,SWD 的P1为根端口
4.再选指定端口,由比较端口到最近ROOT开销来看,SWB的 P2,P3,SWC的P3为指定端口
5.最后,剩下的为阻塞端口
七.拓扑变更
拓扑改变这里是指交换机接口上的链路有无变换,如果拓扑改变,及接口上的链路有发生变化,会等20s后接口老化并更新BPDU并以发送,但接口会立马发重新进行listen---learing---full的30s。
如果拓扑没有改变,接口上的链路没有发生变化,收到更新后的BPDU后会查看对比BPDU表是否更新,如果更新并取其优,重新进行listen---learing---full的30s。
现讨论阻塞端口所在路由器
情况一:根桥崩溃
LSW1和LSW2接口上链路没有发生变化,等20sBPDU老化之后发现LSW3崩溃,更新后重新进行listen---learing---full的30s,共计50s。
情况二:直连接口链路发生变化
接口上的链路发生变化,交换机上端口马上进入 listen---learing---full的30s,共计30s。
情况三:非直连接口发生变化
LSW3上接口的链路发生改变,LSW3上的端口发生改变30s后到达full状态(这里是讨论LSW3不要搞混了)除此外LSW320s后BPDU更新并发送到LSW1,LSW1发现BPDU更新后马上进入 listen---learing---full的30s,共计50s。
情况四:非直连接口发生变化(特殊1)
如图,LSW1接口上的链路没有发生改变,不会立马进入端口转换,LSW3上的接口发生改变,20sBPDU表老化后跟新发往LSW1,LSW1接受到后马上进入 listen---learing---full的30s,共计50s。
八.尾言
STP作为交换里面最基础的协议,也是极其重要的一个协议。他也为后续RSTP,MSTP打下铺垫,望大伙好好掌握它
本人网络小白,文章如出现问题或逻辑上混乱,望大佬指点,大家读后还有问题的话留在评论区,我会及时为大家解决滴。