一,STP STP定义:生成树协议(Spanning Treee Protocol) 作用:逻辑上断开环路,阻止广播风暴产生,当线路故障,阻塞接口被激活,恢复通信,起备份线路的作用 STP的工作过程: 1、确定交换机的角色 根交换机:整个交换网络中,有且只有一个; 非根交换机:剩余的其他交换机,都称之为非根交换机 注意: 每一个非根交换机都会计算出一条去往根交换机的最短的、无环、2层数据转发路径,并且最终该路径是“转发”状态; 选举原则: 比较每个交换机的 BID (bridge ID):优先级+MAC地址 优先级:默认值为 32768 ; 2个字节; MAC地址:使用的是交换机的主板MAC;6个字节; 比较原则 - 首先比较优先级,越小越好; 其次比较MAC地址,越小越好; 2、确定端口的角色 根端口:在每一个非根交换机上,有且只有一个。 距离根交换机最近的端口; 指定端口:在每一个"网段/segment"中,有且只有一个;距离根交换机最近的端口; 非指定端口:其他所有端口,都叫做“非指定端口” 3、确定端口的状态 #down -关闭(指的是当前端口没有启动STP) #listening -侦听,此时侦听的是网络中的所有的BPDU 目的是为了确定交换机和端口的角色; 端口在该状态停留15s #learning -学习,该阶段主要是学习端口上收到的数据帧 的源MAC地址,从而形成 MAC地址表; 端口在该状态停留15s; #forwarding -转发(最终状态),该状态实现数据包的发送和接收 #blocking -阻塞(最终状态),该状态不能发送和接收数据包;只能接收 BPDU。

二,BPDU BPDU:桥协议数据单元(Bridge Protocol Data Unit) 使用的是(组播)发送BPDU BPDU类型: 1、配置BPDU 用于创建和维护 STP 无环转发路径树 2、TCN BPDU (拓扑变更通告) 只有当 STP 无环转发路径树(拓扑)变化的时候,才会产生并发送 并且是:感知到该变化的交换机,产生 TCN BPDU ,只发送给根交换机,然后再由根交换机转发给其他的所有非根交换机; BPDU包含的字段:

交换机端口的5种STP状态:

STP计时器: #hell 交换机周期性发送 BPDU 的时间间隔,默认是 2s ; #forward-delay : 转发延迟,默认时间为15s ; #max-age:最大老化时间,默认时间为 20s ;

STP参数修改(思科): 1、修改交换机的 STP 优先级 (确保网络中有主根交换机和辅根交换机) # spanning-tree vlan x priority {value} , value 是4096的倍数 2、修改交换机的 STP 模式 (必须确保网络的所有交换机的STP模式相同) # spanning-tree mode {pvst | rapid-pvst | mstp } 3、修改交换机的 端口 cost # interface fas0/22 (该链路指的是 trunk 链路) # spanning-tree vlan 3 cost {value} 4、针对某个 VLAN ,关闭 STP 功能 # no spanning-tree vlan x 验证命令: #show spanning-tree vlan x ->可以查看交换机上关于 VLAN x 的 STP 信息

show spanning-tree ->可以查看交换机上关于所有VLAN的 STP 信息

show spanning-tree summary ->可以查看交换机运行的 STP 的模式;

show version -> 可以查看交换机的 base mac ;

STP参数修改(华为):注意:交换机上的 STP 功能,默认都是开启的;可以人工关闭; 1 修改交换机的 STP 优先级: # [SW] stp priority {value} -> 必须得是4096的倍数 2修改交换机的 STP 模式 # [SW] stp mode {stp | rstp | mstp } 3修改交换机的端口的 STP cost : # [SW]interface fas0/13 # [sw-fas0/13]stp cost {value} 4在交换机上关闭/开启 STP : # [sw]stp disable -> 关闭 STP ; #[sw]stp enable -> 开启 STP ,默认是开启的; 验证命令: #display stp
#display stp brief 二,MSTP MSTP:多实例生成树 是基于STP协议的增强性技术 (1)将二层交换设备上的端口绑定到不同的进程中,并以进程为单位进行STP协议计算 (2)不在同一进程的端口不参与计算,从而实现各个进程内的生成树计算独立、互补影响 (3)MSTP网络中包含一个或多个MST域(包含一个或多个MSTI) # MSTI(instance)即实例,是运行生成树协议的交换设备 可以关联多个VLAN 配置 MST region #[SW]stp region-configuration #[sw-mstp-region]region-name {string} //配置 region 的名字; #[sw-mstp-region]instance {id} vlan x y z m n //配置关联的VLAN #[sw-mstp-region]active region-configuration # [sw-mstp-region]display this 配置 MSTI #[sw1]stp instance {id} priority {value} <-将 SW1设置为 实例id 的根;

验证命令: #display stp instance {id} #display stp brief 注意: 默认情况下,所有的 VLAN 都是属于 instance 0 ; (系统的默认instance) 一个MSTP网络中,可以同时包含多个 region ; 每个MST Region 中,可以包含多个 instance (MSTI) 属于相同 region 的交换机上,以下参数必须相同: #region-name #实例与vlan的映射关系必须相同 属于同一个 region 中的多个交换机之间,可以基于 instance 进行流量的负载均衡和备份; STP 收敛速度比较慢 :30-50s RSTP收敛速度要比 STP 快,因为做了以下改进: 1、发现问题比较快 2、反应/传输问题比较快 发现拓扑变更的交换机,会产生TCN BPDU,直接发送给与自己相连 的其他所有交换机; 3、解决问题比较快

端口角色细化: #根端口(root port ) #指定端口 (designated port ) #替代端口(alternative port ):是根端口的备胎; #备份端口(bakcup port ):是指定端口的备胎 (边缘端口:一般都建议关闭 STP ;或者将连接非交换机的端口,设置非边缘端口) 端口状态精简化: #learning :学习 #forwarding :转发 #discarding :丢弃,相当于之前 STP 中的 down / blocking / listening