文章博客详见视频 请戳:https://edu.51cto.com/center/course/lesson/index?id=486147
冗余备份的思想
链路冗余:双上行链路,当一条链路出现问题,数据转发会走另外一条链路
设备冗余:当设备出现故障后,数据流量会走另外一台设备进行转发
不足点:当我们关闭stp协议后 冗余备份组网存在环路问题
二层环路所引发的问题
MAC地址表的震荡问题
二层网络出现广播风暴
主机容易收到我们重复的数据帧
会导致我自己电脑CPU直接100%
环路的出现
电脑CPU直接100%
单链路解决二层环路
单链路其实可以解决我们环路的问题
不足点:单链路容易使网络更加脆弱 容易出现链路和设备的单点故障
时势造英雄---STP技术的诞生
问题1:冗余和备份的组网会导致环路的产生
问题2:非冗余和备份的组网会导致单点故障的产生
时势造英雄
研究出一款协议出来,既能够破除环路也能够拒绝单点故障的现象
STP协议的诞生,STP(生成树协议)
回顾一下网络世界里面关于树的一些常见结构
Linux系统
DNS协议
OSPF协议/IS-IS协议等等
STP技术的作用
消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。
STP技术当中所用到的BPDU报文
STP的正常工作依赖于BPDU报文的泛洪(Bridge Protocol Data Unit,网桥协议数据单元)
STP技术当中的命令
指定生成树协议类型(STP/RSTP/MSTP)
[SW] stp mode {stp | rstp | mstp } 默认是MSTP
配置交换机STP优先级
[SW] stp priority XXX 默认是32768
指定交换机成为根桥
[SW] stp root primary ###此时这台设备的优先级为0
指定交换机称为次根桥
[SW] stp root secondary ###此时这台设备的优先级为4096
启动生成树
[SW] stp enable
根桥故障
非根桥会在BPDU老化之后开始根桥的重新选举
BPDU报文格式
BPDU的重要参数
BRIDGE ID
桥ID(Bridge ID)是交换机的STP标示符,一共8个字节,由2个字节的优先级和6个字节的MAC地址构成
桥优先级缺省为32768,可以手工修改
MAC地址为交换机的背板MAC
网络中Bridge ID最小的交换机将成为根桥
2的10次方等于1024 2的12次方等于4096 2的15次方等于32768
配置优先级的时候 优先级只能配置为4096的倍数(只能配置成0、4096、8192、12288等等)
如果现网优先级都是一样的话 会比较设备的mac地址(越小越优先)(不建议)
[SW1]stp root primary 这条命令就相当等于 [SW1]stp priority 0
作用就是把该设备设置为根桥(ROOT)
[SW2]stp root secondary 这条命令就相当于 [SW2]stp priority 4096
作用就是把该设备设置为备根桥(ROOT)
路径开销
路径开销与端口的带宽成反比
华为设备支持的路由开销计算标准:802.1d-1998、802.1t及legacy,其中legacy是华为私有标准 华为交换机默认选择802.1t的标准
根桥发送出来的BPDU中,Cost=0,STP认为从一个发送数据是没有开销的
端口ID
端口ID(2字节)=端口优先级(1字节)+端口编号(1字节)
缺省优先级128,范围0~255,越小越优
[SW1-GigabitEthernet0/0/1]stp port priority 128 注意:这边就是接口优先级是16的倍数
STP选举的过程
第一步:每个交换网络选举一个根桥(Root Bridge)
根据每台设备的优先级和mac地址进行比较,都是越小越好
第二步:每个非根桥上选举一个根端口(Root Port)
RP端口是到达ROOT最优路径的一个端口
第三步:每个网段选举一个指定端口(Designated Port)
DP端口是用来发送BPDU报文的
第四步:阻塞非指定端口(Non Designated Port)
在STP里面对应的就是AP端口
第一步:根桥的选举
每个交换网络选举一个根交换机(Root Bridge)网络中Bridge ID最小的交换机被选举为根桥 也就是设备的优先级 越小越优先 在一个交换网络里面只有一个ROOT设备 另外的设备是非ROOT设备
只有root交换机才能发送BPDU,非根交换机会进行转发
1、每一台交换机启动STP后,都认为自己是根桥。
2、所有的端口都为DP(指定端口)
3、相互发送BPDU后,会比较优先级和mac地址
4、优先级越小越好、mac地址越小越好
第二步:根端口的选举
RP端口在我们非根交换机上选举
非根交换机上有且只有一个RP端口
RP端口是到达root交换机的最优路径
选举规则:
1、该端口到达root交换机的开销(入口开销之和)推荐这种方式选举RP端口
2、发送设备的BID
3、对端设备的PID
4、自身的PID
第二步:根端口的选举
1、该端口到达root交换机的开销(入口开销之和)
2、发送设备的BID
3、对端设备的PID
4、自身的PID
问题:怎么样让SW11的G0/0/4变成RP端口呢?
第二步:根端口的选举
1、该端口到达root交换机的开销(入口开销之和)
2、发送设备的BID
3、对端设备的PID(注意是对端设备的PID)
4、自身的PID
想让SW6的G0/0/4口成为RP端口?怎么办?
第二步:根端口的选举
1、该端口到达root交换机的开销(入口开销之和)
2、发送设备的BID
3、对端设备的PID
4、比较当前设备的PID
问题1:此时在SW8中,哪一个接口是RP端口呢?
问题2:怎么样让SW8的G0/0/2成为RP端口呢?
第三步:指定端口的选举
每个网段选举一个指定端口(Designated Port)
ROOT交换机的端口几乎都为DP端口
DP端口的作用是用来发送BPDU
选举规则
1、该端口到达root交换机的开销(入口开销之和)(一般不建议修改这一条)
2、发送设备的BID(一般建议修改这一条)
3、对端设备的PID
4、自身的PID
第四步:AP端口
网络收敛后
1、只有指定端口和根端口可以转发数据。
2、其他端口为预备端口,被阻塞,不能转发数据(不能发送BPDU,但是可以接收BPDU),只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。
注意点:AP端口是一个逻辑的阻塞端口 这个端口可以接收BPDU报文 但是不能发送BPDU报文 更加不能转发用户流量
总结:
STP的状态迁移过程
1、端口初始化或使能
2、端口被选为根端口或指定端口
3、端口不再是根端口或指定端口
4、forward delay计时器超时
5、端口禁用或链路失效
disable状态---block状态---listening(侦听)状态---learning(学习)状态---forwarding(转发)状态
Forwarding:转发状态。端口既可转发用户流量也可转发BPDU报文.
Learning:学习状态。端口可根据收到的用户流量构建MAC地址表,但不转发用户流量。增加Learning状态是为了防止临时环路。
Listening:侦听状态。端口可以转发BPDU报文,但不能转发用户流量。
Blocking:阻塞状态。比如说AP端口
Disabled:禁用状态。表示还没有启动stp的状态
记住:
1、RP、DP端口最终的状态是Forwarding状态
2、AP端口的最终状态是Blocking状态
3、listening到learning需要15s,learning到forwarding需要15s,一共需要30S才能变成forwarding
STP当中的计时器
hello计算器:默认值就是2s 用来发送BPDU的时间间隔
max age时间:默认值就是20s 设备在20s之内没有收到BPDU的话 会重新进行选举
FwDly(转发延迟):默认值就是15s 就是用来解决临时环路
STP的拓扑变化
ROOT设备故障
非ROOT设备的重新收敛需要50s的时间(20s+30s)
非直连链路故障
SWB检测到直连链路物理故障后,会将预备端口转换为根端口
SWB的预备端口会在30 秒后恢复到转发状态
直连链路故障
非直连链路故障后,SWC的预备端口恢复到转发状态大约需要50秒
拓扑改变导致MAC地址表错误
MAC地址表项的默认老化时间是300秒。在这段时间内,SWB无法将数据从G0/0/2端口转发给主机B
STP的不足点
网络的收敛比较慢(30s~50s的收敛时间)
来源:51CTO
作者:Oldboy1key
链接:https://blog.51cto.com/13817711/2456826