生成树协议的主要作用是:
- 消除链路环路
- 链路的冗余备份
想象一下有三个交换机A、B、C 。 - 比如说正常直线连接这三个交换机的时候是:A->B->C ,这种情况下:B访问A,ok是直连 直接通过,当时C访问A的话就需要经过交换机B,这也不是最要命的,想象一下这种情况下如果B交换机或者是B相关链路发故障,那么C就直接和A断开连接,要是大一点的网络会导致很严重的网络瘫痪问题。
- 换一种想法 A->B,B->C,C->A 这种情况下三个交换机出现了一个环路,当B发送故障的话,其他的数据还可以跑到另一个链路继续转发,想法是这样,但是如果单单物理上这样连接的话,那就犯了二层交换网络中的大忌,因为当二层网络出现环路的时候,会发送广播风暴和MAC地址漂移。防止这种情况发送所以产生了生成树协议用于防环。
为什么这边要特定的说明是二层交换网络,因为在三层网络动态路由协议报文中有TTL值,当TTL值为0时,路由器会将此报文丢弃,所以防了数据在三层交换网络中无休止的转发。
广播风暴:当交换机收到一个广播帧或者是一个单播帧后,会将广播帧除接受端口以外的所有端口泛洪出去,如果是交换网络中存在环路,则此报文会无限制的转发,直到网络中出现太多此类报文,网络瘫痪。
MAC地址漂移:和上面一样如果网络中出现换路,A交换机发送了一个单播帧,A交换机将其广播出去,B交换机的1端口收到此帧,并在MAC表中记录A交换机和A交换机下的主机MAC地址,当时在B交换机接受到此广播帧后,同时C交换机也接收到了A发送的广播帧,并记录相应的MAC消息,同时也广播出去,此时B交换机也收到了C交换机发送的A交换机报文,此时B交换机的2端口收到报文,并查看MAC地址表中以有相同的主机MAC消息,它会认为主机位置改变,并更新之前的MAC消息,此时B中的主机MAC消息被修改,当B收到C的报文时,A也收到C的主机报文,主机A再次广播,主机B再次收到A,MAC表再次更新,如此反复,这就是MAC地址漂移。
STP
在网络中通过STP协议 在整个网路中计算出一颗无环的“树”。STP一般用于接入层和汇聚层。
STP基础概念
桥ID
- IEEE 802.1D标准规定BID由16位的优先级(Bridge Priority)与桥MAC地址组成
- 每一台参与STP的交换机都拥有唯一的BID
- BID的优先级占高16bit,其余48bit为MAC地址
- 在STP网络中BID最小的设备为根网桥
当然在STP的网络中总的BID占64bit,其中优先级占16为它的取值也就是0-65535(1111 1111 1111 1111),其默认值为32768(1000 0000 0000 0000),管理员可以手动设置优先级但是必须是4096的倍数。
在选举的过程中优先级小的会成为根网桥,如果优先级都相同会根据交换机的MAC地址比较MAC地址小的为根网桥,毕竟MAC地址是唯一的。
根桥
• 树形的网络结构必须有树根,于是STP引入了根桥(Root Bridge)概念。
• 对于一个STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑的变化而动态变化。
• 网络收敛后,根桥会按照一定的时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑的稳定
COST
交换机的每一个端口都有一个端口开销值参数,此参数表示在此端口在STP中的开销值,默认情况下端口的开销和端口的宽带越高,开销越小
华为从交换机支持多种STP的技术协议标准缺省情况下交换机使用的是IEEE 802.1t标准技术路径开销
RPC
从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是
该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。
非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开
销被称为RPC,并生成无环树状网络。根桥的根路径开销是0。
Port ID
运行STP交换机的每一个端口都由一个端口的ID,端口的ID“由优先级和端口号组成,端口优先级的范围为0-240,步长为16,即取值为16的整数倍,缺省情况下,端口的优先级是128,端口ID可以确定端口的角色。
BPDU
生成树的所有相关协议都封装到BPDU中,BPDU由两种类型一种是配置BPDU,另一种是TCN BPDU
- 配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。在络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。
- TCN BPDU是指下游交换机感知拓扑结构发送变化时,给上游交换机发送的拓扑变化通知。
在最开始所有的交换机都会发送BPDU,因为所有的交换机都认为自己为根网桥,等网络确定后BPDU只有根网桥才可以发送,其他非根网桥只有修改和转发的权力。
•STP操作:
- 选举一个根桥。
- 每个非根交换机选举一个根端口。
- 每个网段选举一个指定端口。
- 阻塞非根、非指定端口。
• STP中定义了三种端口角色:指定端口,根端口和预备端口。
▫ 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定
端口。一般情况下,根桥的每个端口总是指定端口。
▫ 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多
只有一个根端口,但根桥上没有根端口。
▫ 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻
塞。
其实最难理解的时指定端口和根端口,其实区别在与 根端口是在非根交换机上选择距离根交换机最近的端口,而指定端口是在所有交换机上选择距离根交换机最近的端口,当然自己离自己最近,所以根端口上参与STP的肯定都是指定端口,而根端口的选择条件是非根交换机选择,所以根交换机上肯定没有根端口。
STP计算过程
根网桥的选举过程
首先在网络刚开始的时候,所有交换机都认为自己就是根交换机,所以都会发送BPDU。如下图:
首先从上面的BID中可以看到,所有交换机的BID中优先级是一样的,所以会比较MAC地址,地址小的入选,最终结果会是sw1入选,其中的过程是:三个交换机同时发送配置BPDU,
- sw1收到sw2和sw3的BPDU时,发现它们的BID都比我大,我自己所记录的根交换机角色不变,仍然是我自己。
- 当交换机sw2收到sw1和sw3的BPDU也进行比较,假设先收到的是sw1的发现sw1的BID比它小,所以更改自己内部记录的根网桥角色为sw1,收到sw3的时候发现比现在记录的sw1的BID大,所以并不变。
- 当交换机sw3收到sw1和sw2的时候,假如首先收到的是sw2的BPDU,比较一番后将自己内部的网桥角色设置为sw2,然后又收到了sw1的BPDU后发现,sw1的BID比现在内部记录的sw2的还要小,所以将其修改为sw1。到目前此网路中的根网桥竞选完毕。
根端口的选举过程
什么是根端口?
▫ 一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备
的工作路径是最优且唯一的,就必须从该非根桥设备的端口中确定出一个被称为“根
端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口。
▫ 在选举出根桥后,根桥仍然持续发送BPDU,而非根桥将持续不断的收到根桥发送的
BPDU。因此,在所有非根桥上选举一个距离根桥“最近”的端口(根端口),在网
络收敛后,根端口将不断的收到来自根桥的BPDU。 ▫ 即:根端口保证了交换机与根桥之间工作路径的唯一性和最优性。
注意:一个非根桥设备上,最多只能有一个根端口。
选举过程:
- 交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootID、
RPC、BID、PID”等关键字段,端口会针对这些字段进行PK。 - 首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。
RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。 - 当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU中的BID,
值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。 - 当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的
BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端
口。 - 当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口
各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。
PRC》上行交换机BID》上行交换机的PID》交换机本身的PID
指定端口的选举
因此,每个链路(Link)选举一个指定端口,用于向这个链路发送BPDU。
• 注意:一般情况下,根桥上不存在任何根端口,只存在指定端口。
指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则
比较BID和PID。
- 首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作
为指定端口。 - 若RPC相等,则比较链路两端交换机的BID,值越小,越优选,因此交换机会选BID
最小的交换机的端口作为指定端口。 - 若BID相等,则比较链路两端端口的PID,值越小,越优选,因此交换机会选PID最小
的交换机的端口作为指定端口。
预备端口
选举范围为网段。
• 什么是非指定端口(预备端口)?
• 在确定了根端口和指定端口之后,交换机上所有剩余的非根端口和非指定端口统称为预备
端口。
• 阻塞非指定端口
▫ STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发由终端计算机产生并发
送的帧(用户数据帧)。
▫ 一旦非指定端口被逻辑阻塞后,STP树(无环路工作拓扑)就生成了。
• 注意:
▫ 非指定端口可以接收并处理BPDU。 ▫ 根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧
PRC》两端的BID》两端的port ID
STP的接口状态
状态名称 | 状态描述 |
---|---|
- 禁用(disable) | 不接收不发送BPDU 不学习mac地址 不转发 |
- 阻塞(Blacking) | 不发送但接收BPDU 不学习 不转发 |
- 侦听(Listening) | 接收并发送 但不学习 不转发 |
- 学习(Learning) | 接收转发并学习 当不转发 |
- 转发(Forwarding) | 接收发送 学习 转发 |
其中需要从禁用状态到转发状态必须经过阻塞-》侦听-》学习-》转发。其中侦听和学习都需要15秒的时间。这个和BPDU报文中的Forward Delay 有关系 。当然这个值也是可以自己手动修改。其中Max Age就是最大寿命,当在这个时间段后还没有收到任何BPDU的时候,则认为对端交换机或链路出现问题,则通知所有查询计算。默认20秒
Hello Time 的意思就是根网桥连续发送BPDU的时间间隔,默认2秒。
拓扑变化-根网桥故障
根桥故障:
- 在稳定的STP网路,非根桥会定期收到来自根桥的BPDU的报文
- 如果根桥发送故障,停止发送BPDU,下游交换机将无法收到根网桥的BPDU报文
- 如果下游交换机一直收不到BPDU报文,在Max age计时器就会超时,从导致已经收到的BPDU报文失效,此时非根网桥互相发送配置BPDU,重新选举新的根桥。
端口状态: - SW3的预备端口,20S后从阻塞状态到侦听状态到转发状态,进行流量转发。
收敛时间: - 根桥故障会导致50左右的恢复时间,对于Max age 加上2倍的forward delay收敛时间。
拓扑变换-直连链路故障
- 直连链路故障
- 当两台交换机用两条链路互联时,其中一条是主用链路,另一条为备用链路。
- 当网络稳定时,交换机SWB检测到根端口的链路发送故障,则其备用端口会进入用户流量转发状态。
- 端口状态:
- 备用端口会从阻塞状态,迁移到侦听-学习-转发状态。
- 收敛时间
- 直连链路故障,备用端口会经过30S恢复转发状态。
拓扑变换-非直连链路故障
• 非直连故障
▫ 在稳定的STP网络,非根桥会定期收到来自根桥的BPDU报文。
▫ 若SW1与SW2之间的链路发生了某种故障(非物理故障),因此SW2一直收不到来自
根桥SW1的BPDU报文,Max Age计时器(缺省: 20 s)就会超时,从而导致已经收到
的BPDU报文失效。
▫ 此时,非根桥SW2会认为根桥失效,并且认为自己是根桥,从而发送自己的配置
BPDU给SW3,通知SW3自己是新的根桥。
▫ 在此期间,SW3的预备端口一直收不到包含根桥ID的BPDU,Max Age计时器超时后,
端口进入到Listening状态,开始向SW2“转发”从上游发来的包含根桥ID的BPDU。 ▫ 因此,Max Age定时器超时后,SW2和SW3几乎同时收到对方发来的BPDU,再进行
STP重新计算,SW2发现SW3发来的BPDU更优,就放弃宣称自己是根桥并重新确定
端口角色。
• 端口状态:
▫ SW3预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,
最终进入到Forwarding状态,进行用户流量的转发。
• 收敛时间:
▫ 非直连故障会导致50s左右的恢复时间,等于Max Age加上2倍的Forward Delay收敛
时间
拓扑变化总结
- 当根路由发生故障 需要50s才可网络恢复
- 当直连链路发生故障需要30s
- 当非直连链路发生故障需要50s、
拓扑改变导致MAC地址表错误
• 拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用
来通知其他交换机加速老化现有的MAC地址表项。
• 拓扑变更以及MAC地址表项更新的具体过程如下:
▫ SW3感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。
▫ SW2收到SW3发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置
1,然后发送给SW3,告知SW3停止发送TCN BPDU报文。 TCA (配置BPDU)
▫ SW2向根桥转发TCN BPDU报文。
▫ SW1把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表
项的老化时间由默认的300 s修改为Forward Delay的时间(默认为15 s)。
▫ 最多等待15 s之后,SW2中的错误MAC地址表项会被自动清除。此后,SW2就能重新
开始MAC表项的学习及转发操作。
STP的基础配置命令
1.配置生成树工作模式
stp mode {stp|rstp|mstp} 默认情况时MSTP 默认优先级为32767
2.配置根网桥
stp root primary (最重要) 优先级为0 设置后不能修改优先级
3.备份网桥
stp root secondary (中等的)second 第二 优先级为4096 设置后不可修改优先级
4.配置交换机的STP优先级
stp priority priority (优先级)
5.配置接口路径开销
stp pathcost-standard{dot1d-1998|dot1t|legacy} //配置接口开销技术方法,默认情况IEEE802.1t(dot1t)标准方法。统一网络开销计算方法相同。
6.配置接口优先级
[huawei-intf]stp priority priority 缺省情况是128 步长16
7.启动STP/RSTP/MSTP
stp enable 启动
MSTP
虽然说STP解决了出现环路和链路备份的问题但是它也有很大的缺点就是收敛慢,这就出现了MSTP。
IEEE于2001年发布的802.1w标准定义了快速生成树协议RSTP(Rapid Spanning-Tree
Protocol),RSTP在STP基础上进行了改进,实现了网络拓扑快速收敛。
• RSTP(快速生成树)是从STP演化而来的,基本思想一样;当交换网络拓扑结构发生变化
时, RSTP可以通过Proposal/Agreement机制更快地恢复网络的连通性。
• 根据STP的不足,RSTP删除了3种端口状态,新增加了2种端口角色,并且把端口属性充分
的按照状态和角色解耦;此外,RSTP还增加了相应的一些增强特性和保护措施,实现网络
的稳定和快速收敛。
• RSTP是可以与STP实现后向兼容的,但在实际中,并不推荐这样的做法,原因是RSTP会失
去其快速收敛的优势,而STP慢速收敛的缺点会暴露出来。
• RSTP对STP的其他改进: ▫ 配置BPDU的处理发生变化:
▪ 拓扑稳定后,配置BPDU报文的发送方式进行了优化;
▪ 使用更短的BPDU超时计时;
▪ 对处理次等BPDU的方式进行了优化;
▫ 配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了接口角色。
▫ RSTP拓扑变化处理:相比于STP进行了优化,加速针对拓扑变更的反应速度。
端口角色:
- 根接口
- 指定接口
- 预备端口
- 备份接口
端口状态: - 阻塞
- 学习
- 转发
• 从配置BPDU报文发送角度来看:
▫ 预备(Alternate)接口就是由于学习到其它网桥发送的配置BPDU报文而阻塞的接口。
▫ 备份(Backup)接口就是由于学习到自己发送的配置BPDU报文而阻塞的接口。
• 从用户流量角度来看:
▫ Alternate接口提供了从指定桥到根的另一条可切换路径,作为根接口的备份接口。
▫ Backup接口作为指定接口的备份,提供了另一条从根桥到相应网段的备份通路。
边缘端口
如果指定端口位于整个域的边缘,不再与任何交换设备连接,这种端口叫做边缘端口。
• 在STP中用户终端接入交换设备端口状态由Disabled状态转到Forwarding状态需要经过15s,
那么用户在这段时间无法上网,如果网络频繁变化,用户上网状态非常不稳定,时断时续。
• 边缘端口一般与用户终端设备直接连接,不与任何交换设备连接。边缘端口正常情况下接
收不到配置BPDU报文,不参与RSTP运算,可以由Disabled状态直接转到Forwarding状态,
且不经历时延,就像在端口上将STP禁用了一样。但是,一旦边缘端口收到配置BPDU报文,
就丧失了边缘端口属性,成为普通STP端口,并重新进行生成树计算,从而引起网络震荡。
对于STP和RSTP的缺陷
虽然RSTP在STP的基础上进行了改进,实现了网络拓扑的快速收敛。但是仍然有共同的缺陷:由于局域网中所有的VLAN共享一棵树,因此无法在VLAN间实现数据流量的负载均衡,链路被堵塞后将不承担任何流量,还有可能造成部分VLAN的报文无法转发。当然堵塞的链路也造成了浪费。
企业网中部署VBST:
▫ 可消除网络中可能存在的通信环路。
▫ 可实现链路的复用和流量的负载分担,进而有效地提高链路带宽的利用率。
▫ 配置和维护简单,进而可降低配置和维护成本。
• 但是如果网络中VLAN的数量较多,为每个VLAN执行独立的生成树计算将耗费交换机大量
的资源
多生成树MSTP
为了弥补STP和RSTP的缺陷,IEEE与年发布的802.1s标准中定义了MSTP
堆叠
• 堆叠iStack(Intelligent Stack),是指将多台支持堆叠特性的交换机设备组合在一起,从
逻辑上组合成一台整体交换设备。
• 堆叠系统建立之前,每台交换机都是单独的实体,有自己独立的IP地址和MAC地址,对外
体现为多台交换机,用户需要独立的管理所有的交换机;堆叠建立后堆叠成员对外体现为
一个统一的逻辑实体,用户使用一个IP地址对堆叠中的所有交换机进行管理和维护,如图所
示。通过交换机堆叠,可以实现网络大数据量转发和网络高可靠性,同时简化网络管理。
Smart Link
• 如图所示Switch3采用双上行方式分别连接到FW1和FW2,这样Switch3到达上行的链路就
可以有两条。在Switch3上配置Smart Link,正常情况下,可实现Port2所在链路作为Port1
所在链路的备份。若Port1所在的链路发生故障,Smart Link会自动将数据流量切换到Port2
所在链路,保证业务不中断。
总结
STP 802.1D BID 802.1D
RSTP 802.1w
MSTP 802.1s
BID 0-65535 默认值32768
PID 默认优先级 128 0-240 16步长