802.1D生成树STP协议

STP用来解决什么问题

STP协议主要作用就是用来解决由于交换机间应为冗余链路而导致的环路,实现二层架构下线路的冗余。

STP如何解决环路问题

假设两台交换机间连接两根链路,STP则是通过阻塞其中一条非最优路径,从而让交换机正常工作

为什么会产生环路

假设两台交换机连接两根链路,而此时假设其中一台交换机向另外一个交换机发送了一条报文,另一台交换机收到报文后则会泛洪扩散该数据包,从自身除了接收接口以外的其他接口发送这时,这时由于接了多跟级联链路,交换机A从链路A发出的数据又从链路B给发了回来,这时发回来的数据包又会被交换机A从链路A发回给交换机B,此时的数据包就会来来回回永无止境的发送下去。这就是环路。环路严重的情况下还会造成广播风暴的风险。

什么是广播风暴

当环路产生后,由于永无止境的转发数据包,最终导致接口带宽被消耗殆尽

STP在交换环境下的作用

1.阻塞交换机间的非最优冗余链路,保证两个节点之间的端到端通信有且只有一条路径可走
2.实时监控交换机的状态以及交换机间链路状态

华为思科的STP标准

华为

通用生成树协议:CST
------一台交换机创建VLAN后,不管有多少个VLAN,生成树进程有且只有一个。这一个进程确定了交换机间唯一的一组转发路径。

思科

基于VLAN的生成树协议:PvST
-----可以针对每一个VLAN创建一个生成树进程。不同VLAN间的通信链路是可以不一样的。相互没有任何关联。可以通过这种方式线路数据层面的负载均衡

STP的三步选举

1.根桥选举 根桥有且只有一台,是整个STP域的中心,以中心出发去计算域内其他交换机的最优路劲
2.根端口选举 一台非根桥去往根桥的最优路径的接口,用于接收DP接口发送的BPDU
3.指定端口选举 一台交换机的链路两端有且只有一个DP,用于始发BPDU或转发BPDU
根桥选举

比较BID(bridge ID)

1.每台运行生成树的交换机都有一个BID(网桥标识符),并且在整个生成树域内BID必须是唯一的。
2.BID一共8个字段,前2byte是优先级,后6byte是MAC地址。前2byte的前4bit可以手动修改,默认值为32768,必须以4096的倍数修改,该数值越小越优,如果两台交换机的优先级一样,则比较MAC地址

根端口选举

每台非根桥的根端口有且只有一个

1.先比较非根桥收到根桥发送过来的BPDU中的RID(根桥标识符,小的为根桥),由于每台交换机收到的BPDU中的RID都是一样的,所以这一步无法比较出好坏。
2.比较去往根桥的直线距离,使用开销来描述直线距离:Cop(根路径代价),根桥始发的BPDU中的Cop的值默认为0,非根桥交换机收到BPDU后,会根据接收BPDU的接收接口的带宽去计算Cop值,然后累加到BPDU中,再由其他非根非边缘端口发走。
3.比较BID(转发者BID),每台交换机在转发BPDU之前都会吧自身BID写到转发者BID中去,通过转发者BID可以得知该BPDU是由谁转发的。通过RID可以得知BPDU的始发者是谁。
4.比较对端PID(port ID 端口ID)一台交换机运行生成树后自己产生的标识符,每个接口都有一个用来表示自身接口的标识符,就是port ID,一共两个字段,前1byte为优先级,后1byte为接口编号,小的为优
5.比较自身接收BPDU的接收接口的PID。

指定端口选举

一条链路根端口选举出来后,另一个接口一定是指定端口或者被阻塞端口

BPDU的发送规则

1.只能由根桥始发BPDU
2.非根桥设备只能接收BPDU与转发BPDU,不能始发BPDU
3.BPDU只能通过指定接口发走,再由下游交换机的根端口接收,再由下游交换机的指定端口发送给下游邻居的下游交换机

802.1D的三种接口角色

1.RP (根端口)
2.DP (指定接口)
3.NDP(阻塞接口)

BPDU发送周期

BPDU由根桥始发,并且每2秒向域内其他成员发送BPDU报文。可以通过修改Hello Time参数手动修改BPDU报文的发送时间。

BPDU报文内容

1 protocol Identifier 协议标识符 固定值:0x0000
2 Protocol Version Identifier 协议版本 固定值:0x00
3 BPDU Type BPDU类型 802.1D的类型有两种,1.配置BPDU,2.TCN-BPDU
4 Flags FA位 802.1D中Flags位只有两个,1.拓扑变更位,2.拓扑变更确认位
5 Root Identifier router ID 如果是根桥,Route ID就是Briage ID,该值在交换过程中不会发生改变
6 route path cost 根路径代价 根桥始发该字段为0,每经过一台交换机的根端口后,根端口累加自身Cop
7 Bridge Identifier 转发者ID 始发BPDU的该字段与Route ID一致,每到一台交换机后,修改为交换机自身bridge ID。用于告诉下游设备该BPDU是有本设备转发的。
8 port Identifier 接口ID 发送BPDU的接口的接口ID,一共两个字节,一个字节为优先级,一个字节为接口编号
9 Message Age 转发计数器 每转发一次BPDU,该值+1
10 Max Age 判断拓扑变更 如果20秒内没有收到根桥发送的BPDU,则认为拓扑发生了改变。则会丢弃该根桥信息,从而认为从来没有从该接口收到过BPDU,会认为该接口是一个DP,相当于重新收敛
11 Hello Time 描述根桥发送BPDU的时间 默认两秒一次
12 Forward delay 接口状态时间计时器 接口在listening,learning状态下所能停留的时间

STP的默认启用法则

1.每台交换机刚启用STP后,都认为自己就是根桥
2.运行STP的接口在还没有收到其他设备发送过来的BPDU时,接口角色默认是DP

802.1D STP的5种接口状态

1.Disabled 接口还未启用SIP时的状态
2.Blocking NDP接口角色的工作状态,数据层面上无法让流量通过改接口发出与接收,只能从控制层面单方向的由DP到NDP发送BPDU报文,并且NDP接口收到BPDU后也不会向其他接口发送
3.listening 默认情况下的接口状态,过度状态,不能收发任何数据,但能收发BPDU,该接口状态下无法学习COM表项,过程持续15S,如果15S后还认为自己是DP或者是RP,则进入到下一个状态。
4.learning 该状态下与listening状态最大的区别则是可以学习COM表项。15S后进入下一个状态
5.forwarding DP与RP的最终状态,该状态下可以收发数据,也可以学习COM表项

STP在交换机的全局参数:

参数 描述
Designated root 当前交换机所认可的根桥的Bridge ID
Root Path Cost 当认为其他交换机为根桥时,该字段描述自身去往根桥的端到端路径的开销
Root Port 用于描述跟端口,谁是根端口
Bridge Identifier 描述自身Bridge ID

STP在接口下的参数:

参数 描述
Path Cost 接口本身度量值 ,只对根端口有效
Designated Root 接口记录根桥的Bridge ID
Designated Cost 指定端口到根桥的端到端路劲开销
Designated Bridge 指定交换机所属接口的Bridge ID
Designated Port 指定端口的Port ID

STP拓扑变更的两个方式

1.直接变更

交换机间链路Down后,交换机通过其他链路还是能收到根桥发送的BPDU

2.间接变更

交换机间链路Down后,虽然还有别的链路能到达根桥,但是无法通过其他链路收到根桥发送的BPDU

802.1D拓扑发生改变后如何进行重收敛

当一个生成树域内的某台交换机发现拓扑发生改变后,会立即生成一条TCN-BPDU
TCN-BPDU发送的方向与正常BPDU的发送方向正好相反,有根端口发送,指定端口接收。直到发送给根桥
当上游设备收到自己发送的TCN-BPDU后,会回一条TCA置位的BPDU(拓扑改变确认),告诉下游设备自己已经成功收到了TCN-BPDU了。
当根桥收到了该TCN-BPDU后,会给下游邻居发送一条FA字段内TC置位的BPDU。告诉STP域内的成员拓扑发生改变了。需要在15秒内更新动态学习到COM表项。STP域内的其他成员收到这条BPDU后,会把原本300S更新COM表变成15S更新。

章节提问

在这里插入图片描述

你可能感兴趣的:(网络,stp,网络)