1. 前言
(1)冗余功能:在第二层数据链路层的冗余功能是通过添加设备和电缆来实现备用网络路径,提升网络可用性。就是有多条网络路径可用于数据传输时,即使一条路径生效,也不会影响网络设备通信。就好比”条条大路通罗马“,一条路不能走,那就走另外一条路,怎么样都能到达目的地。
(2)产生问题:
【1】广播风暴:当卷入第 2 层环路的广播帧(该帧会让网络上所有设备都接收并响应)过多,导致所有可用带宽都被耗尽时,便形成了广播风暴。此时没有带宽可供正常流量使用,网络无法支持数据通信。环路网络中不可避免的会产生广播风暴。随着越来越多的设备向网络中发送广播,卷入环路的流量也越来越多,最终形成广播风暴,导致网络中断。
【2】重复的单播帧:广播帧并不是会受环路影响的唯一一种帧。发送到环路网络的单播帧也可能造成目的设备收到重复的帧。
【3】MAC地址震荡:环路的产生会使设备的MAC地址的表项无休止的,快速的变化,这就是翻摆现象,MAC地址表会消耗大量的资源来处理维护MAC地址表,这可能使交换机瘫痪。
2. STP的产生
(1)定义:为了得到环路带来的好处(提高网络连接的可靠性),同时又要避免因为环路而产生的灾难性问题(广播风暴,重复的单播帧,MAC地址震荡),IEEE 802.1D定义了STP(Spanning Tree Protocol)协议,为了解决网络环路问题。
(2)基本术语:
【1】桥(Bride):就是交换机。
【2】桥的MAC地址(Bridge MAC Address):桥的每个端口都有一个MAC地址,我们把端口编号最小的那个端口作为MAC地址,即有GE0/0/1到GE0/0/10,取GE0/0/1这个端口MAC地址作为桥的MAC地址。
【3】桥ID(Bridge Identifier,BID):由桥优先级+MAC地址组成。桥优先级的值可以人为设定,缺省值位0x8000(十进制:32768),先判断桥优先级(2字节)再判断MAC地址(6字节),均是越小越优先。
【4】端口ID(Port Identifier,PID):由端口优先级+端口编号组成,端口优先级可以人为设定,不同的设备商所采用的PID定义可能不同;均是越小越优先。判断端口编号,在端口优先级一致的前提下,端口编号越小越优先,就是GE0/0/1到GE0/0/10,GE0/0/1优先。
(3)STP的生成:
在一个具有物理环路(有环)的交换网络中,交换机通过运行STP协议,自动生成一个没有环路(无环)的工作拓扑,该无环的拓扑称为STP树,STP树包含唯一的根节点,任何一个节点到根节点的工作路径不但是唯一的,而且最优的。STP会根据网络拓扑的变化而变化。即有环的物理拓扑可以提高网络连接的可靠性,无环的工作拓扑则可以避免因环路产生的问题。
STP树的生成过程:1.选举根桥(RB),2.确定根端口(RP)和指定端口(DP),3.确定阻塞备用端口(AP)。
【1】选举根桥(比较BID):根桥使ST拍的根节点,是整个交换网络的逻辑中心,不一定是它的物理中心;运行STP协议的交换机(简称STP交换机)会相互交换STP协议帧,这些协议的载荷数据称为BPDU(网桥协议数据单元),BPDU包含与STP协议相关的所有信息。
STP交换机初始启动之后,都会认为自己是根桥,向网络广播发送BPDU宣告自己是根桥,当交换机收到其他交换机发送的BPDU会识别其中的BID,比较BPDU中指定的根桥BID和自己BID的大小,在这种过程会不断的交互BPDU,直到确定BID最小的交换机作为根桥。
根桥只判断BID,因为有桥MAC地址的缘故,所以BID具有唯一性。
【2】确定根端口(RP)和指定端口(DP)
根端口(RP):根桥确定之后,其他没有成为根桥的交换机都是为非根桥。一台非根桥设备可能有多个端口相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的。就必须从该非根桥设备的端口中确定出一个称为”根端口“的端口,非根桥设备有且只有一个根端口。
根端口的选举:1.RPC(根路径开销)比较,2.比较上行设备的BID,3.比较上行设备的PID。均是越小越优先。示例:
首先连接的线类型一致,则RPC相同,LSW2是根桥,对于LSW3会先比较上行设备的BID,则比较LSW1和LSW4的BID,若LSW1的BID小,则LSW3的Ethernet0/0/4 为根端口,分之同理;对于LSW5比较的对象是同一个交换机LSW3,则要比较上行设备的PID(即LSW3的Ethernet0/0/1和Ethernet0/0/2),若LSW3的Ethernet0/0/1 PID小,则LSW5的Ethernet0/0/1为根端口,反之同理。非根桥直连根桥的端口都是根端口。
指定端口(DP):根端口保证了交换机与根桥之间工作路径的唯一性和最优性,为了防止工作环路的存在,网络中每个网段与根桥之间的工作路径也必须是唯一且最优的。当一个网段有两条或者两条以上的路径通向根桥时,与该网段相连的交换机就必须确定出一个唯一的指定端口。
指定端口也是通过比较RPC,BID和PID等。流程与选举根端口相同。
【3】确定阻塞备用端口(AP):在确定了根端口和指定端口后,交换机所有剩余的非根端口和非指定端口统称为备用端口,STP会将这些备用端口进行逻辑阻塞(即这些备用端口不能转发计算机产生并发送的帧,这些帧称为用户数据帧),不过,备用端口可以转发BPDU(STP协议帧)。而根端口和指定端口可以发送和接收STP协议帧,也可以转发用户数据帧。
一旦备用端口被逻辑阻塞后,STP树(无环工作拓扑)的生成过程就完成了。
3. STP报文格式
STP交换机通过交互STP协议帧来创建和维护STP树,并在网络物理拓扑发送变化时重新建新的STP树。STP协议帧由STP交换机产生,发送,接收,处理。STP协议帧是一组组播帧,组播地址为01-80-c2-00-00-00。采用IEEE802.3封装格式,载荷数据被称为BPDU。BPDU有两种类型:Congfiguration BPDU和TCN(Topology Change Notification)BPDU。
(1)在STP树生成,维护的过程中STP帧主要是Congfiguration BPDU,重点的有:
【1】Hello Time:交换机发送Congfiguration BPDU的时间间隔,STP树生成后,修改时间间隔要在根桥修改才有效,缺省值:2s。
【2】Forward Delay:端口状态迁移的延迟数据。由于STP树的生成需要一定的时间,在此过程中交换机的端口状态的变化并不是同步的,如果选举出的根端口和指定端口立刻开启并转发数据帧的话,就会产生临时环路,所以STP引入了Forward Delay机制,选举出的根端口和指定端口需要经过2倍的Forward Delay延时后才能进入用户数据帧的转发,此时已无环路,缺省值:15s。(这带来了STP收敛时间慢的问题)。
【3】Max Age:Congfiguration BPDU的最大生命周期。Max Age的值由根桥指定。缺省值:20s。
(2)TCN BPDU:是由故障点的交换机根端口发送的
1.在网络拓扑发送变化,位于故障点的交换机可以通过端口状态直接感知这种变化,但是其他交换机无法直接感知这种变化,则故障点的交换机以Hello Time(2s)为周期通过根端口不断向上游交换机发送TCN BPDU。故障点的交换机直到上游交换机发来TCA标志置1的Congfiguration BPDU 才会停止发送TCN BPDU。
2.上游交换机收到TCN BPDU后,一方面通过指定端口回复TCA标志置1的Congfiguration BPDU,另一方面会以Hello Time周期通过根端口向上游交换机发送TCN BPDU。
3.直到根接收到TCN BPDU,会发送TC 标志置1 的Congfiguration BPDU。通告所有的交换机网络拓扑发送变化。
4.交换机收到了TC标志置1 的Congfiguration BPDU,意识到网络拓扑发送变化,说明自己的MAC地址表的表项内容可以已经不正确,这时交换机将自己的MAC地址表的老化时间(缺省300s)缩短为Forward Delay的时间长度(缺省为15s),以加速MAC地址表的老化时间。
4. STP端口状态
STP定义了三种端口角色:根端口,指定端口和备用端口;五种端口状态:禁用(去能)状态(Disabled),阻塞状态(Blocking),侦听状态(Listening),学习状态(Learning),转发状态(Forwarding)。
STP端口迁移:
STP端口迁移和STP端口迁移的列子会用另一篇文章做介绍,这里就先盖过,了解一下即可。
5. STP的改进
STP网络中,STP树的完全收敛需要依赖定时器的计时,端口状态从Blocking迁移到Forwarding至少需要2倍Forward Delay的时间长度(Forward Delay缺省值:15s,即至少需要30s),总的收敛时间太长,为了弥补STP收敛慢的缺陷,IEEE802.1w定义了RSTP(Rapid Spanning Tree Protocol)快速生成树协议,在现实中,STP已经可以说是淘汰了,取而代之的是RSTP。
RSTP的改进有两个:
1.端口状态
RSTP中端口状态只有3种:Discarding、Learning、Forwarding。
2.P/A机制
P/A的根本目的:为了加快某DP端口和RP端口互联链路上两端口快速进入转发状态不等30s的2倍Forwarding Delay。P/A机制这个问题会和STP端口迁移以及STP端口迁移的示例中讲解,这里先了解P/A机制是一个主动与对端端口进行协商,通告协商并进行相关动作后,立刻进入Forwarding在状态。
6. 简单STP的配置
关于STP生成树协议,STP内容其实有很多,我是想一篇文章尽可能将知识点归纳,希望我的文章对你学习有所帮助。十分感想读者的访问和阅读。