【STP】
作用:防止广播风暴,阻塞环路,备份线路
原理:通过生成树算法确定阻塞端口
一、STP概述
(1)、交换网络环路的产生
a)在网络通信的最初,PC1的ARP条目中没有PC2的MAC地址,根据ARP原理,PC1首先会发送一个ARP广播请求(请求PC2的MAC地址)给交换机SW1
b)当SW1收到ARP的广播请求时,根据交换机转发原理,SW1将会将广播帧从除接收端口之外的所有端口转发出去(即该广播会从F0/1和F0/2分别转发给SW2和SW3)
c)SW2收到该广播帧后,同样根据交换机转发原理,将广播帧从F0/2和连接PC2的端口转发,同样,SW3收到广播帧后,将其从F0/2端口转发
d)SW2从F0/2端口收到从SW3发送的广播帧后,将其从F0/2和连接PC2的端口再次转发;同样,SW3收到SW2发送的广播帧后,将其从F0/1端口转发
e)SW1分别从SW2、SW3收到广播帧,然后将从SW2收到的广播帧转发给SW3,而将从SW3收到的广播帧转发给SW2
《总结》:
SW1、SW2和SW3会将广播帧相互转发,这时就形成了一个环路,而交换机之间并不
知道,这将导致广播帧在这个环路中永远循环下去。如“图2”所示,然而在实际
网络中,情况要复杂得多,当广播帧经过交换机时,交换机就经指数的形式生成广
播帧(都在转发广播帧),这种广播帧会越来越多,最终形成广播风暴,导致网络瘫痪。
《解决》
STP协议就是用来解决这个问题的。STP协议并不是断掉物理环路,而是在逻辑上
断开环路,防止广播风暴的产生。
(2)、STP简介
定义:STP(Spanning Tree Procotol,生成树协议)就是把一个环形的结构改变成
一个树形的结构
原理:将物理上存在环路的网络,通过一种算法,在逻辑上阻塞一些端口,来生成一个
逻辑上的树形结构
二、STP工作原理
(1)、生成树算法及验证
1、生成树算法(Spanning Tree Algorithm,STA)
【三个步骤】
a)选择根网桥(Root Bridge):选择准基点
b)选择根端口(Root Ports):在每个非根网桥上选择
c)选择指定端口(Designated Ports):在每条链路上选择
《名词解释》:
“网桥”是交换机的前身,由于STP是在网桥基础上开发的,因此现在交换机的网络中仍然沿用网桥这一术语
a)【选择根网桥】
Ø选择根据是网桥ID,网桥ID是一个八个字节的字段
Ø前两个字节的十进制数称为网桥优先级,后六个字节是网桥的MAC地址
Ø比较方法:优先级小的被选择为根网桥;在优先级相同的情况下,MAC地址小的为根网桥
b)【选择根端口】
Ø选择根端口的依据按照顺序依次如下:
到根网桥最低的根路径成本
直连的网桥ID最小:对端网桥ID最小
端口ID最小:对端端口ID最小
Ø根端口存在于非根网桥上,需要在每个非根网桥上选择一个根端口
Ø根路径成本是两个网桥间的路径上所有线路的成本之和,也就是某个网桥到达根网桥的中间所有线路的成本之和
Ø路径成本用来代表一条线路带宽的大小,一条线路的带宽越大,它传输数据的成本就越低
链路带宽(Gb/s) |
路径成本 |
10 |
100 |
16 |
62 |
45 |
39 |
100 |
19 |
155 |
14 |
622 |
6 |
1000 |
4 |
10000 |
2 |
表:带宽与路径成本的关系
Ø端口ID是一个二字节的STP参数,由一个字节的端口优先级和一个字节的端口编号组成
Ø端口编号是catalyst用于列举各个端口的数字标识符。在基于IOS的交换机上,可以支持256个端口,端口编号不是端口号,但是,端口号低的端口,端口编号值也较低
c)【指定端口】
ØSTP进行最后的计算,在每一个网段上选择一个指定端口
Ø选择指定端口的顺序如下:
根路径成本
所在的交换机的网桥ID的值较小:看自己
端口ID的值较小:看对端端口ID值较小
2、生成树算法验证
Switch# show spanning-tree
(2)、桥协议数据单元(BPDU)
Ø交换机之间通过BPDU(桥协议数据单元,Bridge Protocol Data Unit)来交换网桥ID,根路径成本等信息
ØBPDU帧利用一个STP组播地址(0c-80-c2-00-00-00)作为它的一个目的地址,使之能到达相邻的,并处于STP侦听状态的交换机
Ø每隔两秒,便向所有的交换机端口发送一次BPDU报文,以便交换机能交换当前最新的拓扑信息,并讯速识别和检测其中的环路
1、BPDU的两种类型
Ø配置BPDU,用于生成树计算
Ø拓扑变更通告(Topology Change Notification,TCN)BPDU,用于通告网络拓扑的变化
2、BPDU报文字段
根网桥ID:由一个二字节优先级和一个六字节网桥MAC地址组成。这个信息组合表
明已经被选定为根网桥的设备标识
根路径成本:说明这个BPDU从根网桥伟输了多远,成本是多少。这个字段的值决定哪些端口将进行转发,哪些端口被阴断
发送网桥ID:这是发送该BPDU的网桥信息,由网桥的优先级和网桥MAC地址组成
端口ID:由一个字节的端口优先级和一个字节的端口编号组成
计时器:计时器用于说明生成树用多长时间完成它的每项功能。这些功能包括“报
文老化时间、最大老化时间、访问时间和转发延迟”
3、STP利用BPDU选择根网桥的过程
Ø根网桥的选择是一个持续、反复进行的过程,它每隔两秒触发一次
Ø时刻会检查BPDU的根网桥ID是否发生了变化,网络中是否有网桥ID更低的交换机加入进来
(3)、STP的收敛
1、生成树端口的状态
状态 |
用途 |
转发(Forwarding) |
收发BPDU,学习MAC地址,转发数据 |
学习(Learning) |
收发BPDU,学习MAC地址 |
侦听(Listening) |
收发BPDU |
阻塞(Blocking) |
只收BPDU |
禁用(Disabled) |
强制关闭 |
表:交换机端口的五种STP状态
2、生成树计时器
【STP利用三种计时方法来确保一个网络正常收敛】
Hello时间:网桥发送配置BDPU报文之间的时间间隔,IEEE 80.21d标准规定的
默认访问时间为两秒
转发延时:一个交换机端口在(侦听)和(学习)状态所花费的时间间隔,默认
值为各15s
最大老化时间:交换机在丢弃BDPU报文之前储它的最大时间,默认值是20s
【端口过渡如下】
三、STP的应用
(1)、STP的与VLAN的关系
【生成树与VLAN之间的关系有以下几种】
IEEE的CST(Common Spanning Tree,通用生成树)
Cisco的PVST(Per VLAN Spanning Tree,每VLAN生成树)
Cisco的PVST+(Per VLAN Spanning Tree Plus,增强的每VLAN生成树)
IEEE的MST(Multiple Spanning Tree,多生成树)
【PVST的缺点】
Ø为了维护针对每个VLAN而生成的生成树,交换机利用率(如CPU负载)会更高
Ø为了支持各个VLAN的BPDU,需要占用更多的Trunk线路带宽
ØPVST与IEEE的CST不兼容,使得运行PVST的Cisco交换机不能与其他厂商的交换机进行互操作
(2)、配置PVST+的意义
1、利用PVST+实现网络的负载均衡
2、配置速端口(Post Fast)
Ø在端口启用速端口功能后,当端口从down到up状态时,该端口不经过侦听学习状态,节省30秒的转发延迟
Ø然而,该端口仍然运行生成树协议,如果检测到了环路,也能够从转发关态转换到阻塞状态,速端口只能配置在连接终端的接口上,否则就有可能导致短时间的生成树环路
(3)、PVST+配置命令
【启用生成树】
Switch(config)# spanning-tree vlan vlan-list
【指定根网桥】
Switch(config)# spanning-tree vlan vlan-list priority bridge-priority
如:switch(config)#spanning-tree vlan 5,10 priority 4096
Switch(config)#spanning-tree vlan vlan-list root {primary| secondary}
Primary默认优先级:24576
Secondary默认优先级:28672
【修改端口成本】
Switch(config-if)# spanning-tree vlan vlan-list cost cost
如 switch(config-if)# spanning-tree vlan 2 cost 10
【修改端口优先级】
Switch(config-if)# spanning-tree vlan vlan-list port-priority priority
如 switch(config-if)# spanning-tree vlan 2 port-priority 96
【配置速端口】
Switch(config-if)# spanning-tree portfast
配置速 端口使接入终端的接口快速进入转发状态,不参与生成树选择
【配置上行速链路】
Switch(config)# spanning-tree uplinkfast
配置上行速链路可以使阻塞端口快速进入转发状态
【查看生成树的配置】
Switch# show spanning-tree
【查看某个VLAN的生成树说细信息】
Switch# show spanning-tree vlan vlan-id detail