是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。
产生原因:
交换机之间存在冗余(备份)路径,以及交换机的泛洪机制,导致交换机之间产生 二层交换环路。
造成影响:
1.广播风暴
2.MAC地址表不稳定
3.数据帧的重复拷贝
造成影响名词解释:什么是广播风暴、什么是MAC地址表不稳定和数据帧的重复拷贝
解决方案:逻辑性阻塞某个接口.
所以就产生了STP协议。
生成树协议工作过程:
STP通过协商阻断一些交换机端口,以确保网络中所有目的地之间只有一条逻辑路径,构建一棵没有环路的转发树。当一个端口阻止流量进入或离开时,该端口便视为处于阻塞状态。不过 STP 用来防止环路的网桥协议数据单元 (BPDU) 帧仍可继续通行。
在STP中发送的比较信息为BPDU
BPDU分为两种:
配置BPDU:config-BPDU
周期2s;用来进行生成树计算和维护生成树拓扑的报文;
拓扑变更BPDU:TCN-BPDU.
TC BPDU----①TCN BPDU ②TC BPDU ③TCA BPDU
TCN BPDU:拓扑变更告知包,只能从RP发出,不一定所有的交换机都有该数据包
TC BPDU:拓扑变更包,当根桥收到TCN BPDU后,会从DP指定端口发出TC BPDU包,所有的设备都会收到该数据包,收到TC BPDU数据包的设备会将MAC地址的老化时间从300s设置为15s。
TCA BPDU:拓扑变更确认包,当收到TCN BPDU的交换机会向发送者发送TCA BPDU报文,作为回复。
正常情况下,交换机只会从它的RP根端口每2s接收到configuration BPDU包,但不会主动发送configuration BPDU给root bridge 根桥的。
发生拓扑变化时,
①当交换机检测到拓扑发生变化了,它就会发送TCN BPDU包给root bridge,切记:TCN是通过root port向root bridge方向发出的。
②当交换机从它的指定端口DP接收到TCN类的BPDU,它必须为其做转发,也是从它的RP发出,同时,它必须做出回复,从它的DP向发送者发送TCA BPDU作为回复
。
注:这里是正常的configuration BPDU包.它的TCA位被置1,表明是要给TCN以回复的,但它跟TCN不是一类型的包.
③当TCN到达root bridge后,root bridge也要做出回应,会发出一种正常的BPDU包,包内的TC字段会被置1,TC即topology change,
表示发现拓扑变化.这个包会被所有交换机转发,同样的TC位会置1,直至传遍全网,所有交换机都得知拓扑变化为止.
④收到TC BPDU包的交换机将把MAC地址的老化时间从300s—>15s
介绍BPDU中的重要字段的含义
网络设计通常采用冗余方法提高网络的健壮性、稳定性。常见的冗余方式有:链路冗余和设备冗余
1.链路状态收敛的定义
从链路出现故障到网络拓扑恢复稳定的过程
2.分类
直接链路收敛和间接链路收敛
直接链路收敛-----30s
间接链路收敛-----50s
当二层网络中拓扑发生改变,将处于阻塞状态下的端口过渡到转发状态,可能用30秒或50秒的时间.其故障原因满足下面条件,从阻塞状态过渡到转发状态需要30秒,
那就是交换机X的直连链路down并且阻塞接口同时也位于交换机X之上,此时30秒可以收敛[直连检测机制]。
其它情况均为50秒。
STP的缺点
STP为了避免临时环路的产生,每个端口在确认为根端口或者指定端口后,仍然需要等待30s的时间才能进入转发状态;此外对于拓扑稳定的网络,经常需要重新进行STP计算,某些端口可能会长期处于阻塞状态而导致网络长时间的中断;
STP定义了TCNBPDU,可以使得网络拓扑变化时在50s之内实现收敛,TCNBPDU产生的条件是网桥由根端口转变为Forwarding状态,且网桥至少包含一个指定端口;
当网络中存在大量用户主机时,由于频繁地上下线导致交换机频繁发送TCNBPDU,导致网桥MAC地址老化时间长期保持为15s,MAC地址频繁刷新会导致网络产生大量未知单播造成的广播报文从而影响网络的带宽。
一、STP(Spanning Tree Protocol)
PVST、PVST+、RSTP、MSTP
IEEE 802.1d STP
IEEE 802.1q VLAN
IEEE 802.1p Qos
IEEE 802.1x dot1x
IEEE 802.1w RSTP
IEEE 802.1s MSTP
1.作用:防止二层交换环路
1)为什么交换网络会形成环路?(原因:为了提高网络的可靠性,增加冗余设备,从而导致交换网络环路)
2)如何防止二层交换环路?
Spanning Tree Protocol
2.Spanning Tree Protocol(生成树协议)
1)STP如何选举
a)选举Root Bridge
每个交换机(网桥)都拥有一个BridgeID(=BridgePriority+Bridge MAC Address)
0~65535,缺省32768
b)在每个非根桥上选举根端口
i)到达根桥的路径费用最小
10M 100
100M 19
1000M 4
10G 2
ii)Sender Bridge ID最小
iii)Sender PortID最小(PortID=Port Priority+Port Number)
0~255,缺省123
iv)自身的PortID最小(PortID=Port Priority+Port Number)
c)为每个网段(二层网段)选择一个Designated Port(指定端口)
i)到达根桥的路径费用最小
10M 100
100M 19
1000M 4
10G 2
ii)Sender Bridge ID最小
iii)Sender PortID最小(PortID=Port Priority+Port Number)
0~255,缺省123
iv)自身的PortID最小(PortID=Port Priority+Port Number)
2)BPDU报文(Bridge Protocol Data Unit)桥协议数据单元
在STP中,BPDU报文由Root Bridge产生,其他交换机中转该BPDU报文
3)假设网络中的交换机设备刚启动,每个交换机都认为自己是Root Bridge,发送BPDU报文
经过一段时间的交互,最终选择Root Bridge/同时可以确定每个交换机上的不同端口
的角色(Root Port/Designated Port),被选择为RP或DP的端口必须经过2个Forward Delay
时间后,才能进入Forward状态。
问题1:刚启动的时候,所有交换机的端口处于block状态。
被选择成RP或DP的端口先进入Listen,再经过Learning状态,最后进入Forward状态
其他端口(没有被选举为RP或DP)继续停留在block状态。
问题2:为什么RP/DP需要经过2个Forward Delay才进入Forward状态?
为了防止STP收敛过程中的临时环路,当然引入Forward Delay后,在STP收敛过程中,将导致网络的临时中断。
问题3: Forward Delay为什么等于15秒
BPDU报文每隔2秒发送一次,通常网络的直径为7
4)STP端口的角色:RP/DP/其他的统称为NDP,RP/DP最终进入Forwarding状态,NDP(非指定端口)为Blocking状态
STP端口的状态:
Blocking (稳定状态):不会学习MAC地址,不能转发数据帧
Listening (过渡状态):不会学习MAC地址,不能转发数据帧
Learning (过渡状态):学习MAC地址,不能转发数据帧
Forwarding (稳定状态):学习MAC地址,转发数据帧
什么情况下,STP成为收敛?
--所有端口均为Forwardig或Blocking状态
5)STP中的BPDU报文的类型
a)Configuration BPDU(配置BPDU):只能由Root Bridge,其他交换机中转这种BPDU
b)TCN BPDU(拓扑改变通知BPDU):由发行拓扑改变的交换机产生
6)拓扑改变的机制
在交换网络中,若一个交换机发行拓扑改变,它将产生TCN BPDU,沿着去往root bridge方向发送, (从自己的RP端口发出,必须得到上游交换机的确认TCA,如果没有收到TCA,再次发送TCN BPDU)直到该TCN BPDU报文达到root bridge.
root bridge收到该TCN BPDU后,在后续一段时间内(Max-AGE+Forward_Delay)发送的configuration BPD 中的TC标志位=1,所有交换机收到这种带TC比特的Configuration BPDU时,将本交换机的MAC地址表中的现有
表项的老化时间设置为Forward_delay 15秒.
7)PVSTP(Per VLAN)
a)优点
在每个VLAN中计算一个STP实例,可以实现不同VLAN的流量分担,提高链路的利用率。
b)BridgeID
不同VLAN都需要计算一个STP实例,如何设置BridgeID?
实现方式:
i.一个交换机上存在一个MAC地址池,不同VLAN计算STP中,从其中选取一个MAC地址,
从而保证不同STP实例的BridgeID唯一。
ii.使用扩展系统id。
将原先16bit的优先级划分为2部分,前4bit依旧用作priority,后12bit将VLAN ID映射进去。
VLAN 1的BridgeID(假设交换机的priority为缺省值32768)
32769.MAC
VLAN 2的BridgeID(假设交换机的priority为缺省值32768)
32770.MAC
由于后12bit被用作VLAN ID的映射,因此配置PVST的交换机优先级,步长必须为4096
交换机的优先级:0/4096/8192
c)PVST+配置
Switch(config)#spanning-tree vlan VLAN_ID priority 优先级
spanning-tree portfast(interface command) trunk
spanning-tree portfast default (global command)
interface range fa0/1,f0/5-10
define interface-range ald fa0/1,fa0/5-10
interface range macro ald
IEEE 802.1d STP
IEEE 802.1q VLAN
IEEE 802.1w RSTP
IEEE 802.1s MSTP
PVRST+
1.选举的原则:和STP完全一样
2.RSTP和STP的区别
1)端口角色
STP:RP/DP/NDP
RSTP:RP/DP/NDP(AP:Alternate Port,BP:Backup Port)
其中AP(替换端口),用来替换Root Port
BP(备份端口),用了备份Designated Port
AP:若一个端口是由于接收到其他交换机的BPDU报文而进入blocking,则该端口为AP;
BP:若一个端口是由于接收到本交换机的BPDU报文而进入blocking,则该端口为BP;
2)端口状态
STP: Blocking/Listening/Learning/Forwarding
RSTP:Discarding/Learning/Forwaring
3)RSTP改进收敛速度的方法
a)引入hello机制(类似于邻居机制)
若连续3次未收到hello报文,则认为邻居故障,将从该邻居得到的BPDU消息老化.
b)一个交换机c(一个端口为RP,其余端口为AP,处于阻塞状态),若交换机C的RP故障,则AP成为的RP,该端口可以直接转发
(4096)A---------B(8192)
\ /
\ /
\ /(阻塞)AP
C(32768)接入层
c)Proposal-Agreement机制(提议/同意机制)
注1:Proposal-Agreement必须在Point-to-Point链路上进行。
注2:若交换机的端口工作在全双工,则缺省认为是Point-to-Point链路。
若交换机的端口工作在半双工,则缺省认为是Shared链路。
从根桥开始,由DP端口向下游交换机的端口发出Proposal消息,
下游交换机的端口必须满足一些条件才可以回复Agerement消息。
需要满足什么条件?
下游交换机除了接收Proposal消息以外的所以其他端口必须满足sync(同步)条件,才可以回复Agreement消息。
注:一个端口怎样才能满足sync条件?
1)该端口是edge-port(边缘端口,这种端口通常是连接终端设备,它的收敛时间为0)
2)该端口是阻塞的
show cdp neighbors
spanning-tree mode rapid-pvst
spanning-tree link-type point-to-point
d)拓扑改变机制
STP:由发现拓扑改变的交换机产生TCN BPDU,沿着去往Root Bridge的方向,最终发送到Root Bridge.
原因:STP中,只有Root Bridge才能产生Configuration BPDU报文
RSTP:由发现拓扑改变的交换机直接泛洪这个消息到网络中。
原因:每个交换机可以自动产生/发送BPDU报文。
RSTP中,什么才算拓扑改变?
非边缘端口进入转发状态。
STP中,什么菜算拓扑改变?
端口进入blocking或forwarding状态
1.作用
在网络中运行多个生成树的实例,从而实现流量的分担
将多个VLAN映射到一个生成树实例
基于RSTP开发的,在网络中运行多个生成树实例,从而实现流量的分担。
2.MSTP的配置
同一个区域(Region)中的交换机进行MSTP的交互
如何确定Region?由以下3个参数确定(Name/Revision number/VLAN关联表)
spanning-tree mode mst
spanning-tree mst configuration 进入配置模式
name 7979
revision 1
instance 1 vlan 11-20
instance 2 vlan 21-30
show spanning-tree mst configuration
show spanning-tree mst 1
spanning-tree mst 1 priority 4096
spanning-tree mst 2 priority 8192
show int trunk
show cdp neighbors
归纳:
STP/PVST/PVST+/RSTP/PVRST/MSTP
思科交换机设备PVST(只能支持ISL封装的trunk)/PVST+(支持ISL/802.1Q封装的trunk)/PVRST/MSTP
华为交换机设备STP/RSTP/MSTP