接着前面第六章,通过VLAN技术, 可以将物理的局域网划分成多个广播域, 实现同一VLAN内的网络设备可以直接进行二层通信, 不同VLAN内的设备不可以直接进行二层通信。
在以太网交换网络会使用冗余链路, 但是使用冗余链路会在交换网络上产生环路。为解决交换网络中的环路问题, 提出了生成树协议STP( Spanning Tree Protocol) 。需要注意,生成树协议只对二层交换网起作用,在三层以太网中,由于传递TTL值减一的特性,是不会一直出现环路问题。所以生成树协议解决的主要层面还是在二层以太网中。
学习目标:▫ 描述园区交换网络中的二层环路产生原因及引发的问题。▫ 描述STP的基本概念与工作原理。▫ 区分STP与RSTP,并能够描述RSTP对STP的改进。▫ 完成STP的基础配置。▫ 了解除了生成树之外的其他消除交换网络二层环路的方法。
1. 生成树技术概述
2. STP的基本概念及工作原理
3. STP的基础配置
4. RSTP对STP的改进
5. 生成树技术进阶
常见环路主要分为二层环路和三层环路。
▫ 二层环路主要因为网络中部署了二层冗余环境,或人为的误接线缆导致,可以通过借助特定的协议或机制实现二层防环;
▫ 三层环路主要因为路由环路,可以通过动态路由协议防环和IP报文头部中的TTL字段用于防止报文被无止尽地转发。
在STP网络中,桥优先级是可以配置的,取值范围是0~ 65535,默认值为32768,可以修改但是修改值必须为4096的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址, MAC地址越小则越优先。
在命令配置里面,如果手动选为根桥,它的优先级为0,且此优先级不能修改。如果选为备份根桥,它的优先级为4096,且此优先级不能修改。而其它情况,缺省下是32768。而且如果是在接口模式下,设置优先级的命令:stp priority priority。此时,默认是128。
根桥,略,就是根据桥ID选出来的。
Cost:交换机的每个端口都有一个端口开销( Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。缺省情况下,华为交换机使用IEEE 802.1t标准来计算路径开销。
RPC(最短路径开销),路径开销,该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口)。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC,并生成无环树状网络。根桥的根路径开销是0。
运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。 端口ID可以用来确定端口角色。
配置BPDU包含了桥ID、路径开销和端口ID等参数。
STP操作:
1. 选举一个根桥。
2. 每个非根交换机选举一个根端口。
3. 每个网段选举一个指定端口。
4. 阻塞非根、非指定端口。
• STP中定义了三种端口角色:指定端口,根端口和预备端口(阻塞端口)。
▫ 指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。
▫ 根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。
▫ 如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。
交换机在刚启动时都认为自己是根桥,互相发送配置BPDU进行STP运算
STP的计算过程:
首先,选举根桥。需要注意:为了确保交换网络的稳定, 建议提前规划STP组网, 并将规划为根桥的交换机的桥优先级设置为最小值0。根桥的角色可抢占。
然后,在每台非根桥(交换机)上选举一个根接口(根端口)。用处:在网络收敛后,根端口将不断的收到来自根桥的BPDU。它保证了交换机与根桥之间工作路径的唯一性和最优性。
需要注意:它的选举原则,不一定是要端口朝向根桥的才是根端口!!
选举根端口的原则:最先比较路径开销,再比较接收过来的BPDU的BID和PID,若相同就比较自己的接口ID(PID)。
1. 交换机有多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“ RootID、 RPC、 BID、 PID”等关键字段,端口会针对这些字段进行PK。
2. 首先比较根路径开销( RPC), STP协议把根路径开销作为确定根端口的重要依据。 RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口。
3. 当RPC相同时,比较上行交换机的BID, 即比较交换机各个端口收到的BPDU中的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口。
4. 当上行交换机BID相同时,比较上行交换机的PID, 即比较交换机各个端口收到的BPDU中的PID,值越小,越优先,因此交换机会选上行设备PID最小的端口作为根端口。
5. 当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口。
按我的理解是: BID就是交换机的MAC地址,PID就是交换机对应接口的接口号。
最后,在每条链路上选举一个指定接口。
选举过程:指定端口也是通过比较RPC来确定的,选择RPC最小的作为指定端口,如果RPC相同,则比较BID和PID。需要注意,指定接口再链路上举行。一条链路只存在一个指定接口。
最最后,非指定接口被阻塞。注意:
▫ 非指定端口可以接收并处理BPDU。但不能发送BPDU,也不能转发数据帧。
▫ 根端口和指定端口既可以接收和发送BPDU,也可以转发用户数据帧。
上图搞错了,禁用状态是端口没开启。上面那个应该是从阻塞状态到侦听状态是20s。
需要注意,如果是物理链路故障(一般指接口状态关闭down):端口状态变化过程:
▫ 备用端口会从Blocking状态,迁移到Listening-Learning-Forwarding状态。
▫ 收敛时间:直连链路故障,备用端口会经过30s后恢复转发状态。
它不用像根桥一样重新选举根桥。所以只经过两个Forward Delays时间就能进入转发状态。
如果是非物理链路故障(就是接口状态是up,但是其它原因导致的):
预备端口20s后会从Blocking状态进入到Listening状态,再进入Learning状态,最终进入到Forwarding状态,进行用户流量的转发。需要50s的时间才能恢复转发状态。
因为是非接口问题,所以非根桥会一直等待根桥发送BPDU,就会等待最大MAX Age(20s)。
再来看STP生成树中,链路发生变化的问题:
大概意思就是,sw1到sw3的链路发生问题,重新选举了根桥和路径,但此时sw1的MAC地址表,由于绑定的接口还是GE0/0/3。所以他还是会从g0/0/3出去。而这种情况就需要等待MAC地址表老化300s后自动更新了,才会改变。这种情况,怎么缩短这个时间。
解决:拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。过程,省略,只需要知道,这个过程最多15s。
STP基本配置命令:省。