生成树协议--STP
生成树协议——STP
引入:
为了消除链路层的环路,即二层环路,并实现链路的冗余备份(就是当主链路出现故障,能有一条备用链路保证网络不受影响),STP生成树协议诞生了!!
一.基础
STP,Spanning Tree Protocol,生成树协议。
作用:→通过阻断冗余链路来消除桥接网络中可能存在的路径回环,即网络环路。
→当前链路发生故障时激活冗余备份链路,恢复网络连通性。
通过在桥(这里的桥是指连接两个物理段的设备,在生成树协议中一般为交换机)之间交换BPDU,来保证设备完成生成树的计算过程。
BPDU,Bridge Protocol Data Unit,桥协议数据单元,就是生成树设备之间交换报文的报文类型。BID,桥ID,即生成树网络中交换机的ID,由优先级和MAC地址构成,例:0.0000-0000-0001,开头的0表示桥优先级,默认为32768,可通过命令修改,范围在0-65535之间,且取值只能是0或4096的倍数。
(1)配置BPDU包含的信息
→根桥ID(RootID)(在生成树协议网络的众多交换机中会选举出一个老大作为根桥,这个老大叫Root,用来交换拓扑信息)
→根路径开销(Root Path Cost)(其他设备到根桥的的开销,路径开销:网桥间距离的度量值)
→指定桥ID(DBID,Designated Bridge ID)(每个物理段都会选举出一个指定桥,如上图①与②物理段因为SW1被选举为整个网络的根桥,所以不用选指定桥,③物理段则会选择一个指定桥,通过BID可知指定桥为SW2,因为其BID较小)
→指定端口ID(什么是指定端口后面会说)
(2)根桥的选举:
①.通过比较BID,先比较优先级,优先级值越小越优先,优先级大的被选为根桥。
②.如果优先级相同,则比较MAC地址,MAC地址小的优先。
(3)端口角色:
→DP——指定端口,根桥上所有端口为指定端口,连接指定桥的端口为指定端口。每个物理段,有只有一个DP,DP的对端必定是RP或者AP,RP和AP的对端必定是DP。
→RP——根端口,在非根桥上选举根路径开销最小的端口为根端口。每个非根桥必须选择一个端口作为根端口。
→AP——阻塞端口,既不是根端口也不是指定端口的其他端口被STP置为阻塞状态。也可以说是RP的备用端口,当RP所在链路故障时,AP转变为RP.
(4)路径开销COST
STP以IEEE802.1D为标准计算开销:
带宽 | STP开销 |
4Mbit/s | 250 |
10Mbit/s | 100 |
100Mbit/s | 19 |
1 Gbit/s | 4 |
10 Gbit/s | 2 |
(5)通过桥ID决定端口角色
→在根路径开销相同时,所连网段指定桥ID最小的端口为根端口RP。
→在根路径开销相同时,桥ID最小的桥被选为物理段上的指定桥,连接指定桥的端口为指定端口DP
(6)通过端口ID决定端口角色
→当两条链路开销相同时,端口ID小的一方为根端口。
(7)端口状态
端口角色 | 端口状态 | 端口行为 |
未启用STP功能的端口 | Disabled | 不收发BPDU,不收发数据,不学习MAC地址 |
非指定端口或根端口 | Blocking | 收但不发BPDU,不收发数据,不学习MAC地址 |
—— | Listening | 收发BPDU,不收发数据,不学习MAC地址 |
—— | Learning | 收发BPDU,不收发数据,学习MAC地址 |
指定端口或根端口 | Forwarding | 收发BPDU,收发数据 |
(8)端口迁移
→端口被选为指定端口或根端口后,状态变化
Blocking →Listening →(Forward Delay time=15s)→Learning →(Forward Delay time=15s)→Forwarding
Forward Delay time:状态转换需要的时间
二.深入
(1)STP中BPDU报文格式
→PID:协议ID
→PIV:版本
→BPDU Type:BPDU类型,有配置BPDU和TCN(用于清除MAC表)
→Flags:标志位,共8个bit,对应8个位,即Flags字段有8位,标准STP中只使用了第七位TCA与第0位TC,而RSTP,MSTP中8位都用到了。
→Root ID,RPC,Bridge ID,Port ID分别对应根桥ID,路径开销,本桥ID,端口ID。
→Message Age,当前消息年龄,每经过一台设备,这个值+1,这个值大于Max Age时,则该报文被老化。
→Max Age,最大老化时间,默认为20s
→Hello Time,默认为2s
→FWD Delay,传输时延。
(2)STP中的TCN BPDU
STP的TCN BPDU,主要用于清除设备的MAC地址表。
当网络拓扑发生变化,例如:
当SWA与SWC之间出现故障,因为MAC地址表项的老化时间默认为300s,所以00-05-06-07-08-BB G0/1这条错误的MAC表项会存在300s后才会转换成备用链路的G0/2接口,在这段时间之内,SWB是无法将数据从G0/2接口转发给SWC的。
300s恢复正常转发肯定是无法接受的,所以有了TCN BPDU,用来清除MAC以重新获取正确的MAC地址。
(灵魂画师)
→TCN,用于通知
→TCA,用于确认TCN,位于BPDU报文中Flags位的第7位
→TC, 清除MAC,位于BPDU报文中Flags位的第0位
(3)STP保护
→STP根保护
话不多说 看图
当网络中新加入一个交换机且优先级大于当前根桥,如果没有开启根保护,那么新来的SW会被选为根桥,这会导致PC间的互访不能用最优路径。即没有新加入SW时PC间的互访线路为:②→③,而新来的SW被选为根桥后的线路为:②→④→④→③。
当开启的根保护时,即在根桥上配置root-protection,当收到更高优先级的BPDU,即对于G0/3接口的BPDU不进行计算,并配置为状态Listening状态。
→STP BPDU保护
STP的BPDU保护是针对于边缘端口的,即如果确认边缘端口所连接的是一台PC,如果这台PC发送STP报文,会导致STP网络发生变化,如果PC是攻击者会导致STP网络瘫痪,所以要开启STP的BPDU保护,即一旦接收到PC发来的BPDU,则立刻将这个边缘端口shutdown,如果想要恢复,可以网管手工恢复或配置成一定时间内未收到BPDU自动恢复。
→STP环路保护
图来~
当AP接口(Blockig状态)一直收不到来自上游的BPDU使他继续阻塞,那么它会在20S(BPDU老化时间)后从AD转变为DP从而形成环路,所以可通过在AP接口上配置stp loop-protection开启环路保护。
(4)常用命令
[SW]stp global enable !全局开启STP特性
[SW]stp mode stp/rstp/mstp !设置STP模式(默认为MSTP)
[SW]stp pathcost-standard dot1d-1998/dot1t/legacy !配置路径开销标准,dot1d-1998已被淘汰,常用dot1t。
[SW]stp priority 0/4096的倍数 !设置当前设备的STP优先级(默认32768)
[SW]stp timer hello [100-1000ms] !配置STP Hello时间,单位为毫秒,默认为200ms,即2s
[SW]stp timer max-age [600-4000ms] !配置STP最大老化时间,默认为20s
[SW]stp root-protection !开启STP根保护
[SW]stp bpdu-protection !开启BPDU保护
[SW]stp loop-protection !开启环路保护
[SW-GigabitEthernet1/0/1]stp edged-port !配置端口为边缘端口
[SW-GigabitEthernet1/0/1]stp cost [1-200000] !STP接口开销
[SW]display stp !查看STP信息
[SW]display stp root !显示所有生成树根桥信息
[SW]display stp bpdu-statistics !显示端口BPDU统计信息
!!!!!
STP先讲到这,后面更新RSTP(快速生成树协议)与MSTP(多生成树协议)