STP生成树协议

环路

什么是环路?

比如说我们配置两台交换机,经过交换机a的时候查找ARP表正好查到了交换机b的mac,到了交换机b又查找ARP表,查到了交换机a......以此往复,帧就会在这两个交换机之间传来传去。也就是形成了环路。

产生原因

二层环路:主要存在于交换机之间

        1. 为了提高网路的冗余性,构建的物理环路

        2. 误解造成的

三层环路:主要存在于路由器间

        1. 路由配置错误

        2. 双点双向路由引入情景下没有手动配置防环措施

结果

1. 导致网络不同,无法通信

2. 导致广播风暴,网络瘫痪(交换机收到未知数据后会进行泛洪)

3. 导致MAC地址漂移,网络访问失败

4. 占用内存,性能下降

解决方法

二层环路:

        1. 链路聚合

        2. 生成树

        3. 堆叠

三层环路:

        1. 数据层面,TTL

        2. 设备层面,三层接口天然隔离广播域

        3. 路由层面,动态路由存在对应的防环措施

STP基础概念

作用

解除二层环路,同时提供链路备份能力,这也是STP两个功能。

版本

802.1D----STP生成树

802.1S----RSTP快速生成树

8020W----MSTP多实例生成树

BPDU报文【参考

STP采用的协议报文,全称为Bridge Protocol Data Unit,也称为配置消息。STP通过在设备间传递BPDU报文来确定网络的拓扑结构,并完成生成树的计算。该报文被封装在以太网数据帧中。

分类:

  • 配置BPDU:STP用来进行生成树计算和维护生成树拓扑的报文 --0x00
    • 普通配置BPDU
    • TC BPDU:根桥发送,代表网路发生变化,收到该报文后非根桥清空MAC表重新学习
  • RST BPDU:RSTP用来进行生成树计算和维护生成树拓扑的报文 --0x02 version 2
  • MST BPDU:MSTP用来进行生成树计算和维护生成树拓扑的报文 --0x02 version 3
  • TCN BPDU:非根桥感知到网络拓扑发生变化时,用来通知根桥的报文 --0x80

Hello Time:缺省为2秒,发送两个相邻BPDU的时间间隔

Forward Delay:缺省为15秒,控制Listening和Learning状态的持续时间

Max age:缺省为20秒,华为默认为18秒

主要内容:根ID(根交换机的桥ID,陌生的概念会在后面给出,先往下看),自己的桥ID,端口ID,到根的路径开销。

STP工作

角色划分

交换机角色:根桥、非根桥

接口角色:

        标准规则下:RP(根端口), DP(指定端口) ,NDP(非指定端口)

        华为规则下:RP(根端口), DP(指定端口), AP(代替端口,根端口的备份) ,BP(备份端口,指定接口的备份)

选举规则【参考

BID(桥id)

每一个交换机都存在一个BID,由桥优先级(16bit)和MAC地址(48bit)构成。其中桥优先级是可以配置的,取值范围是[0, 61440],默认值为32768,若修改须设置为4096整数倍。

PID(端口id)

运行STP的交换机使用PID来标识每一个端口,PID可以用来确认端口角色,由端口优先级(4bit)和端口编号(12bit)构成。其中端口优先级是可以配置的,取值范围是[0, 240],默认值为128,若修改须设置为16整数倍。

根桥选举规则

优先选择BID小的,先比较优先级,再比较MAC地址。

选举完成后,只有根交换机会定期发送BPDU(每2s一次),非根交换机只能转发BPDU。

端口选举规则

必须先选择根桥后才可以进行端口选举。

  • 选举DP:
    • 根交换机上的所有端口都是DP,除非端口连着的是hub,那可能出现一个是DP其他是AP的情况
    • 转发BPDU的是DP
    • 一段链路上只有一个DP
    • 优选花销小的(COST值)
    • 花销相同,优选BID小的
    • BID相同,优选发出PID小的
    • PID相同,优选接收PID小的
  • 选举RP:
    • 一般接收DP端口发出BPDU的是RP
    • 一个交换机只有一个RP
    • 优选花销小的
    • 花销相同,优选BID小的
    • BID相同,优选发出PID小的
    • PID相同,优选接收PID小的
  • 选举AP:
    • 作为RP备份
    • 一般出现于链路一段是DP,但是本交换机已经有RP的情况(因为一个交换机只有一个RP)
  • 选举BP:
    • 作为DP备份
    • 一般出现于和BP端口路径相同但是相连在同一个HUB的情况

接口状态

标准规则下:

  • disabled:不收发任何报文(接口处于shutdown)
  • blocking:不接收也不转发帧,接收单不发送BPDU,不学习MAC地址(20s)
  • listening:不接收也不转发帧,接收并且发送BPDU,不学习MAC地址(15s)
  • learning:不接收也不转发帧,接收并且发送BPDU,学习MAC地址(15s)
  • forwaring:接收并且转发帧,接收并且发送BPDU,学习MAC地址

华为规则下使用的是RSTP,只有三种端口状态:

  • discarding:不转发不学习(相当于disabled + blocking + listening)(18s)
  • learning:不转发但是学习 (15s)
  • forwarding:既转发又学习 

拓扑变更:

交换机判断拓扑发生变化有两种情况:

1. 指定桥(交换机)发现DP端口故障

2. AP端口变成forwarding状态,且指定桥至少有一个DP端口

满足以上任何其一都会从RP端口发送TCN-BPDU报文,通知根桥拓扑发生变化。

收敛机制

备份链路激活
  • 不存在备份接口:主链路故障重新恢复时间--18+15=33s / 20+15+15=50s
  • 存在备份接口:恢复时间--备份接口从blocking状态转变为listing状态再转变为learning状态 15+15=30s
MAC清空
  • 根桥感知故障,发送TC-BPDU,非根桥收到后:
    • 标准情况下,Max age(老化时间)调整为15s
    • 华为情况下,MAC表立刻清空
  • 拓扑变更:
    • 标准情况下,原端口进入disabled状态;备份端口进入forwarding状态
    • 华为情况下,备份端口进入forwarding

STP改进

STP不足

  1. 收敛慢
  2. 无法实现负载分担
  3. 拓扑变更判断机制容易导致网络振荡

RSTP改进

  • 判断拓扑改变:一个非边缘端口变成了forwarding状态。
  • 引入边缘端口:如果某一个指定端口位于整个网络的边缘,即不再与其他交换设备连接,而是直接与终端设备直连,这种端口就是边缘端口。【什么情况下需要配置STP边缘端口
  • 加快收敛
    • 端口角色的选举:一旦端口角色确定,直接进入forwarding状态
    • 备份链路:存在备份端口,设备在主端口故障,备份端口会直接进入forwarding状态
    • 拓扑变更:感知到拓扑发生变化的交换机直接发送TC-BPDU
    • 终端链路:设置边缘端口,边缘端口up之后立刻进入forwarding,不需要计时器过渡等待
  • 引进P/A

STP部署相关命令

  1. 修改桥优先级:stp priority [N] //如果要指定根桥,N直接等于0即可;修改值必须为4096倍数
  2. 修改端口优先级:进入要修改的端口后,stp port priority [N] //N必须为128倍数
  3. 指定边缘接口:
    1. stp edged-port default 
    2. 进入指定端口后,stp edged-port enable //边缘端口打开

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayu阿予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值