为了提升网络的可用性,须要进行冗余和备份。可是冗余路径会产生环路html
环路会致使如下问题网络
广播风暴
:因为交换机会对广播、多播、和未知目标MAC的单播包进行泛洪,在存在环路的状况下,很短的时间内就会产生风暴多帧拷贝
、MAC地址表不稳定
:当交换机刚刚启动时,MAC地址表是空的,因此,全部的单播帧都会进行泛洪操做。可是若是存在环路的话,交换机在特定状况下,会从不一样的接口收到相同的MAC地址,这样的话,MAC地址表将不稳定STP
(spanning tree protocal,IEEE802.1D)就是经过软件防止环路的产生,经过逻辑的禁用接口,使得环路在逻辑上不存在;当线路出现故障时,将禁用的接口启用,使得网络可以发挥物理冗余路径带来的高可用性数据结构
STP协议的原则以下:学习
假如上图的Switch X是根网桥,那么它的两个接口都是指定接口;Switch Y是非根网桥,因为100BASE的带宽更高,因此Switch Y上面的接口是根接口;上下两个segement中,s1和s2都已经有指定接口了,因此Switch Y下面的接口既不是根接口,也不是指定接口,那么将其阻断。spa
上述的过程是交换机经过STP协议和交换BPDU
(Bridge Protocol Data Unit)桥接协议数据单元,自动协商获得的。BPDU每2秒钟发送一次。code
BPDU的数据结构htm
Root ID(8Bytes)
:根网桥ID,每一个交换机经过桥ID进行标识,桥ID由桥优先级+MAC地址组成(64个字节)。桥优先级的默认值为32768,最大值为65535。桥ID最小的为根网桥blog
Cost of path(4Bytes)
:接口的Cost值,端口速率对应的开销值以下:接口
Bridge ID(8Bytes)
:本网桥(交换机)的桥IDit
Port ID(2Bytes)
:端口编号
Hellotime(2Bytes)
:BPDU间隔发送时间,默认为2秒
Max age
:详见下面
Forward delay
:详见下面
上述四个字段,在交换机交换BPDU的过程当中就可以协商出结果。
在STP协议故障转移过程当中,交换机接口状态有以下四个状态
当某个指定接口出现故障时,须要将原先的非指定接口转为指定接口。如何检测故障呢?
一种状况是,直接端口故障,交换机可以当即得知这样的故障,则将Blocking的非指定接口当即切换到Listening状态
另外一种状况是,线路故障,交换机没法直接检测到,此时经过BPDU检测。正常状况下两台交换机之间会每两秒钟收到对方的BPDU,若是在Max age
时间后,仍然没法收到BPDU的话,须要进行重选举,将原先Blocking的非指定接口,切换到Listening状态。
Listening状态持续Forward Delay
时间,这段时间后,选举完成。以后进入Learning状态,交换机在该端口上进行学习MAC地址,可是不转发数据,以防止对未知单播帧的广播,这个时间持续Forward Delay时间;最后进入正常的Forwarding状态
通常状况下根据超时时间的设置,最长有可能须要通过30-50秒,STP协议才能从新选举完成
总结:
下面是一个例子
若是终端设备直接链接在交换机上,也须要等待30秒的话,会出现问题,好比DHCP超时。因此,能够配置交换机的接口为PortFast模式,PortFast的接口不会介入STP选举的过程,不须要等待30秒的选举过程。可是不能用在Trunck接口上,由于若是用在Trunck接口上启用PortFast,交换机之间没法进行STP选举,极易产生环路。因此PortFast通常只用在直连终端的“接入接口”。
http://www.pchou.info/network/hardware/2013/12/19/52b293e0c4123.html