STP协议
1.交换机的工作原理
根据源MAC地址构建MAC地址表,根据MAC地址表的记录转发数据帧,如果MAC地址表中没有目标地址,交换机就向除接收到该数据帧的端口外的其他所有端口广播该数据帧。
如上图所示,当PC0发送一个目标地址为交换机未知的数据帧,交换机0会向1和2广播该数据帧,交换机2和3在自己的MAC地址表中也找不到该表项,同样会向外广播,这样,在这个网络中就形成了双向的广播环,而且该广播永远不会停止,除非切断物理链路。最终,由于这个环路,整个网络会因为广播风暴导致交换机宕机。交换机发生广播风暴的表现是所有端口的指示灯都闪烁,CPU的利用率不断升高,网络中主机不能正常通信。
但是环状的物理链路能够为网络提供备份线路,增强网络的可靠性,是必要的,因此就出现了STP协议,不断掉物理链路,而是在逻辑上断开环路,防止广播风暴的产生。
2.STP协议
STP为生成树协议,就是把一个环形的结构改变成一个树型的结构。STP协议就是用来将物理上存在环路的网络,通过一种算法,在逻辑上断开一些端口,来生成一个逻辑上的树型结构。
3.STP工作原理
生成树协议运行生成树算法,其过程可以归纳为以下三个步骤:
选择根网桥(root bridge)
选择根端口(root ports )
选择指定端口(designated ports)
(1)选择根网桥
选择根网桥实际上就是为网络选出一个树根,选择根网桥的依据是网桥ID,网桥ID由8个字节,前2个字节的十进制数为网桥优先级,后6个字节为网桥的MAC地址。
网桥优先级是用于衡量网桥在生成树算法中优先级的十进制数,取值范围为0---65535,默认为32768。
网桥ID中的MAC地址是交换机的MAC地址之一,当使用命令查看交换机的MAC地址表的时候,显示在最前面的MAC地址就是STP计算用的交换机的MAC地址。
按照生成树算法的定义,当比较某个STP参数的取值时,值小的优先级高,因此,选择根网桥的时候,比较的方法是看哪台交换机的网桥ID的值最小,优先级小的被选择为根网桥,在优先级相同的情况下,MAC地址小的为根网桥。
(2)选择根端口
根端口位于非根网桥上,每个非根网桥上选择一个根端口。
选择根端口的依据按顺序依次是:
到根网桥最低的根路径成本
直连的网桥ID最小
端口ID最小
根路径成本是两个网桥之间的路径上所有链路的成本之和,也就是某个网桥到达根网桥的中间所有链路的路径成本之和。
路径成本用来代表一条链路的带宽高低,一条链路的带宽越大,它传输数据的成本就越低。
端口ID是一个2字节的STP参数,由一个字节的端口优先级和一个字节的端口编号组成。
在STP选择根端口的时候,首先比较交换机端口的根路径成本,根路径成本低的为根端口。当根路径成本相同的时候,比较连接的交换机的网桥ID值,选择网桥ID值小的作为根端口,当网桥ID相同的时候,比较端口ID值,选择较小的作为根端口。
(3)选择指定端口
选择指定端口的顺序有3个:
根路径成本较低(与其他的交换机相比)
所在的交换机的网桥ID的值最小(可能性较低)
端口ID的值较小(可能性较低)
根网桥上的接口都是指定端口,因为根网桥上端口的根路径成本为0。
4.BPDU(桥协议数据单元)
交换机之间通过BPDU来交换网桥ID、根路径成本等信息。交换机从端口发送出一个BPDU帧,使用该端口本身的MAC地址作为源地址。交换机本身并不知道它周围是否还有其他的交换机存在。因此,BPDU帧利用了一个STP组播地址 01-80-C2-00-00-00作为它的一个目的地址,使之能到达相邻的并处于STP侦听状态的交换机。
每隔2S,BPDU报文便向所有的交换机端口发送一次,以便交换机(或网桥)能交换当前最新的拓扑信息,并迅速识别和检测其中的环路。
BPDU有两种类型:
一种是配置BPDU,用于生成树计算
一种是拓扑变更通告(TCN)BPDU,用于通告网络拓扑的变化。
5.生成树端口的状态
在STP运算过程中,交换机的每一个端口都必须依次经历好几种状态。
如果一个端口允许转发数据,它首先从disabled状态开始,经过几个被动状态,最后进入active状态。
Disabled(禁用):由网络管理员设定或因网络故障使系统的端口处于disabled状态,这个状态并不是端口正常的STP状态的一部分。
Blocking(阻塞):既不能接收或发送数据,也不能向它的地址表添加MAC地址。这个端口仅允许接收BPDU报文,选出指定端口后非指定端口也处于此状态。
Listening(侦听):一个交换机的一个端口可选为根端口或指定端口,它就将端口从blocking状态变为listening状态。在此状态,端口仍不能接收或发送数据帧。但可以接收发送BPDU报文,如果该端口失去根端口或指定端口的地位,那么就会回到blocking状态。
Learning(学习):该端口发送和接收BPDU报文,可以学习新的MAC地址,并将该地址加入到交换机的地址表中。
Forwarding(转发):既可以发送和接收数据帧,也可以收集MAC地址加入到它的地址表,还可以发送和接收BPDU报文。
从阻塞到侦听(20S)
从侦听到学习(15S)
从学习到转发(15S)
6.VLAN 与生成树
VLAN与生成树之间的关系有以下几种:
IEEE的通用生成树 CST
CISCO的每VLAN 生成树 PVST
CISCO的能兼容CST的PVST PVST+
CST不考虑VLAN,以交换机为单位运行STP。
PVST是CISCO私有的协议,PVST为每个虚拟局域网运行单独的生成树实例。
7.PVST配置的意义:
(1)配置网络中比较稳定的交换机为根网桥。
(2)利用PVST实现网络的负载分担。
(3)配置上行速链路,实现备份的上行链路快速恢复。
企业网络的结构主要包含3个层次:核心层、汇聚层和接入层,其中上行链路主要配置在汇聚层和接入层的交换机上。
配置上行速链路,当接入层或汇聚层的交换机主用的上行链路断开的时候,被阻塞的端口迅速转换到转发状态,不需要经过侦听和学习状态。
(4)配置速端口,使连接终端的端口快速进入到转发状态。
配置速端口不经过侦听和学习状态,直接进入转发状态,速端口只能配置在连接终端的接口上。
8.PVST配置命令
(1)启用生成树命令
交换机默认情况下启用生成树,一般情况下,尽量不要关闭生成树。
switch(config)#spanning-tree vlan vlan-list
(2)指定根网桥:如果配置为primary,交换机的优先级变为24576,配置为secondary,优先级变为28672
switch(config)#spanning-tree vlan vlan-list root primary | secondary
(3)修改网桥的优先级:配置一个交换机为根网桥,可以通过修改网桥优先级的命令来实现。
switch(config)#spanning-tree vlan vlan-list priority bridge-priority
(4)修改端口成本
switch(config)#spanning-tree vlan vlan-list cost cost
(5)修改端口优先级
switch(config)#spanning-tree vlan vlan-list port-priority priority
(6)配置上行速链路
switch(config)#spanning-tree uplinkfast
(7)配置速端口
switch(config-if)#spanning-tree portfast
(8)查看生成树的配置
switch#show spanning-tree
(9)查看某个VLAN的生成树详细信息
Switch#show spanning-tree vlan vlan-list
9.ethernetchannel (以太网通道)
以太网通道通过捆绑多条以太链路来提高链路带宽,并运行一种机制,将多个以太网通道捆绑成一条逻辑链路。以太网通道最多可以捆绑8条物理链路。
以太网通道必须遵循以下一些规则:
(1)参与捆绑的端口必须属于同一个VLAN,如果是在中继模式下,要求所以参加捆绑的端口都是在中继模式下。
(2)如果端口配置的模式是中继模式,那么,应该在链路两端将通道中的所有端口配置成相同的中继模式。
(3)所有参与捆绑的端口的物理参数设置必须相同,应该有同样的速度和全/半双工模式设置。
(4)三层端口不能配以太通道,没有这个命令。
10.实验
实验任务:在交换机上配置VLAN,启用STP,实现不同的VLAN选择不同的根网桥,实现负载分担。在接入交换机上配置上行速链路。配置接入交换机连接主机的端口为速端口。在两台核心交换机之间配置以太网通道。
实验拓扑:
Switch1 F0/15 <----> Switch2 F0/15
Switch1 F0/14 <----> Switch2 F0/14
Switch1 F0/13 <----> Switch3 F0/13
Switch2 F0/13 <----> Switch4 F0/13
Switch1 F0/12 <----> Switch4 F0/12
Switch2 F0/12 <----> Switch3 F0/12
VPCS V0/1 <----> Switch3 F0/1
VPCS V0/2 <----> Switch4 F0/1
实验步骤:
在交换机1上配置VTP域名为benet,VTP模式为SERVER,并且创建2、3、4三个VLAN,保存退出
配置交换机2的VTP 域名为benet,VTP模式为server
配置交换机3的VTP域名为benet,VTP模式为client
配置交换机4的VTP域名为benet,VTP模式为client
开启交换机1上的F0/12到F0/15端口为TRUNK,并封装为DOT1Q
开启交换机2上的F0/12到F0/15端口为TRUNK,并封装为DOT1Q
开启交换机3上的F0/12到F0/13端口为TRUNK,并封装为DOT1Q
开启交换机4上的F0/12到F0/13端口为TRUNK,并封装为DOT1Q
配置完成后,我们就会在交换机2、3和4上的VLAN信息内查看到创建的VLAN信息
配置交换机1为VLAN 1和VLAN 2的根网桥
查看验证
配置交换机2为VLAN 3和VLAN 4的根网桥
查看验证
在交换机3上配置速链路
在交换机4上配置速链路
将交换机3上连接客户端的端口配置为速端口
将交换机4上连接客户端的端口配置为速端口
在交换机1上配置交换机1和2之间的以太网通道
在交换机2上配置交换机1和2之间的以太网通道
查看以太网通道的配置
实验完成
转载于:https://blog.51cto.com/457833/199783