文章博客详见视频 请戳: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的收敛时间)