生成树协议STP

规则:

  • 每个网络只有一个根桥
  • 每个非根桥只能有一个根端口
  • 根桥的每一个端口都是指定端口
  • 根端口和指定端口都是forwarding,其他端口为blocking

stp的选举过程:

  • 选举根桥
  • 选择根端口
  • 选择指定端口
  • 选择非指定端口(备选端口),设为阻塞状态

根桥的选举:

在网络中交换机之间会发送BPDU,通过BPDU来选择根桥。在BPDU报文中会包含这样的信息:
| 字节 | 内容 | 含义 | |--------|--------| |2|Protocol ID(协议ID)|该值总为0| |1|Version(版本号)|STP的版本(为IEEE 802.1d时值为0)| |1|Message type(报文类型)|BPDU类型(配置BPDU=0,TCN BPDU=80)| |1|Flags(标记域:LSB(最低有效位)=TCN标志|MSB(最高有效位)=TCA标志| |8|Root ID(根网桥ID)|

Root ID由2字节优先级和6字节MAC组成。其中两字节的优先级默认是32768,取值范围:0-65535,当然可以手动修改,收到各方ip的时候首先比较优先级,值小便是根桥,相同就比较mac地址。这个mac地址不是端口mac,而是交换机背板的mac地址,用于表示这台交换机的,值小者便是根桥。

选择根端口Rootport:
最快能到达根桥的端口。比较每个端口到达根桥的Cost值,具有最小Cost的端口成为RP端口,而Cost表示的是本端口收到一个对端网桥的BPDU以后,累加本端口的Cost之后的总路径开销,主要以链路上的带宽来获得与累加该值

若是cost值相等,则比较BID,若是不同设备其BID是不相同的(mac地址的存在)

但是若是环路发生在两台设备的情况下就会发生BID相等的情况,就会比较端口的ID了。

然后选择指定端口:
根桥的每一个端口都是指定端口,指定端口用来发数据用的。

那么其他设备的除了根端口的其余端口呢,怎么选定指定端口?
选择方式和RootPort相同:

  • 到跟网桥的路径开销Cost值
  • BID的值
  • PortID

选择非指定端口,也就是备选端口,设为阻塞状态。除了RP、DP,其余的都将为阻塞状态,无法接收和转发数据帧。

扫描二维码关注公众号,回复: 8968195 查看本文章

这就是解决环路的整个过程,而为了应变网络拓扑的变化,网络情况的变化,每个角色并不是一尘不变,这样才能够适应所有的网络环境,提高可靠性,健壮性。

  • 而STP感应网络变化,通过计时器和bpdu来实现,计时器有三个: Hello Time:这是根桥发送 BPDU 数据
    的时间间隔,也是网络初始化的时候每个网桥发送各自的 BPDU 的时间间隔。这个时间默认为 2 秒
  • Forwarding Time:指一个端口 Listening 时间,默认为 15s,为了保证 BPDU
    在全网中的转发,所以做如此设定,这个值是可以配置的,由于 Forwarding Time 的限制,一般建议网络的直径应小于 7
  • Max Age:存储 BPDU 最长的时间,超过这个时间端口没有接收到新的
    BPDU,会丢弃以前的报文,同时会采取相应的措施。这个时间默认为 20s.

STP的5中状态:

  • 阻塞(Blocking):端口不能参与其他帧的转发与接收,只接受 BPDU,但不发送,同时不学习 MAC 地址。
  • 侦听(Listening):端口自阻塞状态后的第一个过渡状态。不能参与其他帧的转发与接收,只接受与发送 BPDU,同时不学习 MAC
    地址。
  • 学习(Learning):处于准备参与帧转发状态,不能参与其他帧的转发与接收,只接受与发送 BPDU,同时学习 MAC 地址。
  • 转发(Forwarding):端口可以正式转发帧了。
  • 禁止(Disabled):端口不参与STP,不收发任何的帧

当然这是最早期的STP,后来的RSTP以及MSTP都有一定的变化。

相关命令:

查看信息:

show spanning-tree

手动切换优先级:

spanning-tree vlan 1 root primary

将非根交换机配置为次要:

spanning-tree vlan 1 root secondary

切换版本:

spanning-tree mode mst/pvst/rapid-pvst

当确定某个端口作为连接终端主机的时候,我们可以将该端口配置为edgeport:

spanning-tree portfast
spanning-tree bpduguard enable #一旦该端口收到BPDU包的就会自动关闭shutdown端口,防止人恶意攻击或者形成新的环路。

MSTP的配置:

在 RSTP 中解决了收敛速度的问题,而 PVST 只是针对每一个 vlan 去生成一颗数,BPDU 会每隔两秒钟发一次,这样一旦 vlan 的数量上去了,链路上的 BPDU 的数量将无法想象,而且这么多的生成树维护起来也十分的困难,所以诞生出了 MSTP,MSTP 可以对网络中众多的 VLAN 进行分组,把 VLAN 分到组中来管理,一个组就是一个 Instance,每个组只会生成公用一颗数,这样便解决了 PVST 所带来的问题。

#首先得在全局模式中将 STP 模式改成 mstp
(config)#spanning-tree mode mst

#然后就是进入 MSTP 的配置模式
(config)#spanning-tree mst configuration

#配置创建实例并关联某个或多个 vlan
(config-mst)#instance 1 vlan 2

#配置当前的 mstp 修改的版本
(config-mst)#reversion 0

#查看当前的 instance 配置
(config-mst)#show pending

#配置该设备在实例中的优先级
(config)#spanning-tree mst 1 priority 8192

#配置该实例所在的区域名字
(config-mst)#name region1
发布了108 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37369726/article/details/102978794