生成树协议交换机工作原理•根据MAC地址表转发数据帧,如果地址未知,则广播aabbA查MAC地址表,目的地址在表中不存在A广播这个数据帧广播风暴的产生•当网络中存在物理环路,会产生广播风暴AaabbBCA查MAC地址表,目标地址在表中不存在,A广播这个帧B与C查MAC地址表,未知目标地址,B与C广播该帧形成双向广播环,广播永远不会停止,产生广播风暴广播风暴最终会导致网络资源耗尽,交换机死机!STP协议介绍•STP-SpanningTreeProtocol(生成树协议)•逻辑上断开环路,防止广播风暴的产生•当线路出现故障,断开的接口被激活,恢复通信,起备份线路的作用BSTP的算法•STP将一个环形网络生成无环拓朴的步骤:–选择根网桥(RootBridge)–选择根端口(RootPorts)–选择指定端口(DesignatedPorts)网桥是交换机的前身,由于STP是在网桥基础上开发的,因此现在在交换机的网络中仍然沿用网桥这一术语第一步:选择根网桥选择根网桥的依据•网桥ID(BID)–网桥ID是唯一的,交换机之间选择BID值最小的交换机作为网络中的根网桥网桥优先级网桥的MAC地址2字节6字节取值范围:0~65535缺省值:32768选择根网桥的目的是为了给将生成的树形结构确定一个树根STP选择根网桥举例•根据网桥ID选择根网桥优先级:4096MAC地址:000d.2800.b100优先级:32768MAC地址:000d.2800.b101优先级:32768MAC地址:000d.2800.b102RootBridge下一步:选择根端口以本拓朴为例,介绍STP的计算过程选择根端口的依据•在非根网桥上选择一个到根网桥最近的端口作为根端口•选择根端口的依据是:–根路径成本最低–直连(上游)的网桥ID最小–端口(上游)ID最小根路径成本•根路径成本(开销)-是网桥到根网桥的路径上所有链路的成本之和,默认10M/100M自适应的路径开销为200000RootBridge路径成本:19路径成本:100BAPort1C的Port1根路径成本=19+100=119端口ID•端口ID的组成端口优先级端口编号8位8位取值范围:0~255缺省值:128100MSTP选择根端口举例•在非根桥上,选择一个根端口(RP)优先级:4096MAC地址:000d.2800.b100优先级:32768MAC地址:000d.2800.b101优先级:32768MAC地址:000d.2800.b102RootBridge下一步:选择指定端口100M100MRootPortRootPort在B和C上,到达A最近的端口是B和C的根端口选择指定端口的依据•在每个网段上,选择1个指定端口–根桥上的端口全是指定端口–非根桥上的指定端口:•根路径成本最低•端口所在的网桥的ID值较小•端口ID值较小STP选择指定端口举例•在每个网段选择1个指定端口(DP)100M优先级:4096MAC地址:000d.2800.b100优先级:32768MAC地址:000d.2800.b101优先级:32768MAC地址:000d.2800.b102RootBridge100M100MRootPort这个端口既不是根端口,也不是指定端口,STP将这个端口阻塞(Block)在这个网段上,B的网桥ID较小,所以B上的端口为指定端口DPDPDP根网桥上的端口都是指定端口STP计算结果•经过STP计算,最终的逻辑结构为无环拓朴100M优先级:32768MAC地址:000d.2800.b101优先级:32768MAC地址:000d.2800.b102100M优先级:4096MAC地址:000d.2800.b100备份线路STP举例BID:32768000d.2800.b100BID:32768000d.2805.c100BID:32768000d.2810.d100BID:32768000d.2811.e100100M100M100M100M100MRootBridgeRPRPRPDPDPDPBlock经过STP计算后的逻辑拓朴BID:32768000d.2800.b100BID:32768000d.2805.c100BID:32768000d.2810.d100BID:32768000d.2811.e100100M100M100MRootBridgeBPDU(桥协议数据单元)•交换机之间使用BPDU来交换STP信息•BPDU–BridgeProtocolDataUnit-桥协议数据单元•使用组播发送BPDU,组播地址为:01-80-c2-00-00-00•BPDU分为2种类型:–配置BPDU-用于生成树计算–拓朴变更通告(TCN)BPDU-用于通告网络拓朴的变化有没有想过,交换机怎么知道其他交换机的网桥ID?怎么知道哪个端口的根路径成本最小?BPDU包含的关键字段字段字节作用协议ID2版本号1报文类型1标识是配置BPDU还是TCNBPDU标记域1根网桥ID8用于通告根网桥的ID根路径成本4说明这个BPDU从根传输了多远发送网桥ID8发送这个BPDU网桥的ID端口ID2发送报文的端口的ID报文老化时间2计时器值,用于说明生成树用多长时间完称它的每项功能最大老化时间2访问时间2转发延迟2100MSTP使用BPDU选择根网桥2-1100M网桥ID:32768.000d.2800.b101网桥ID:32768.000d.2800.b102网桥ID:4096.000d.2800.b100字段值根网桥ID32768.000d.2800.b101根路径成本0发送网桥ID32768.000d.2800.b101端口IDxxxx•交换机启动时,假定自己是根网桥,在向外发送的BPDU中,根网桥ID字段填写自己的网桥ID100M100M100MSTP使用BPDU选择根网桥2-2100M字段值根网桥ID4096.000d.2800.b100根路径成本0发送网桥ID4096.000d.2800.b100端口IDxxxx•当接收到其他交换机发出的BPDU后,比较网桥ID,选择较小的添加到根网桥ID中100M字段值根网桥ID4096.000d.2800.b100根路径成本0发送网桥ID32768.000d.2800.b101端口IDxxxx100M网桥ID:32768.000d.2800.b101网桥ID:32768.000d.2800.b102网桥ID:4096.000d.2800.b100当全网所有的交换机接收到全部的BPDU并作比较后,就可以选择出唯一的一个根网桥STP使用BPDU计算根路径成本2-1100M100M100M字段值根网桥ID4096.000d.2800.b100根路径成本0发送网桥ID4096.000d.2800.b100端口IDxxxx•根网桥发送根路径成本为0的BPDU100MRootBridge网桥ID:32768.000d.2800.b101网桥ID:32768.000d.2800.b102网桥ID:4096.000d.2800.b100RootBridgeSTP使用BPDU计算根路径成本2-2•其他交换机接收到根网桥的BPDU后,在根路径成本上添加接收接口的路径成本,然后转发100M100M100M字段值根网桥ID4096.000d.2800.b100根路径成本19发送网桥ID32768.000d.2800.b101端口IDxxxx100M交换机保存接口的根路径成本到内存中网桥ID:32768.000d.2800.b101网桥ID:32768.000d.2800.b102网桥ID:4096.000d.2800.b100生成树端口的状态状态用途转发(Forwarding)发送和接收用户数据学习(Learning)构建网桥表侦听(Listening)构建“活动”拓朴阻塞(Blocking)只接收BPDU禁用(Disable)强制关闭•交换机端口的5种STP状态生成树计时器20秒20秒15秒35秒15秒50秒阻断倾听转发学习最大寿命转发延迟转发延迟•交换机开机需要等待30秒时间开始转发数据•当某个正在使用的链路断掉,阻塞的端口需要50秒时间开始转发数据STP状态机监听阻塞转发学习1)端口启用或初始化2)端口禁用或故障3)端口被选为根端口或指定端口4)端口被选为非指定端口5)转发定时器超时(1,6)(2)(2)(2)(2)(1)(2)(4)(4)(5)(4)(5)(3)6)PortFast(6)禁用在STP选举过程中,端口是不能转发用户数据的。端口一开始处于阻塞状态,这个状态只能接收BPDU;STP状态机监听阻塞转发学习1)端口启用或初始化2)端口禁用或故障3)端口被选为根端口或指定端口4)端口被选为非指定端口5)转发定时器超时(1,6)(2)(2)(2)(2)(1)(2)(4)(4)(5)(4)(5)(3)6)PortFast(6)禁用阻塞阻塞在STP选举过程中,端口是不能转发用户数据的。端口一开始处于阻塞状态,这个状态只能接收BPDU;一个接口20秒没收到BPDU,也就是到了最大时间,端口会进入侦听状态,这时接口可以接收BPDU,并开始发送BPDU;STP状态机监听阻塞转发学习1)端口启用或初始化2)端口禁用或故障3)端口被选为根端口或指定端口4)端口被选为非指定端口5)转发定时器超时(1,6)(2)(2)(2)(2)(1)(2)(4)(4)(5)(4)(5)(3)6)PortFast(6)禁用监听在STP选举过程中,端口是不能转发用户数据的。端口一开始处于阻塞状态,这个状态只能接收BPDU;一个接口20秒没收到BPDU,也就是到了最大时间,端口会进入侦听状态,这时接口可以接收BPDU,并开始发送BPDU;发送15秒的BPDU,接口将会为转发用户数据做准备,也开始学习MAC地址,这个状态叫学习状态;STP状态机监听阻塞转发学习1)端口启用或初始化2)端口禁用或故障3)端口被选为根端口或指定端口4)端口被选为非指定端口5)转发定时器超时(1,6)(2)(2)(2)(2)(1)(2)(4)(4)(5)(4)(5)(3)6)PortFast(6)禁用监听学习在STP选举过程中,端口是不能转发用户数据的。端口一开始处于阻塞状态,这个状态只能接收BPDU;一个接口20秒没收到BPDU,也就是到了最大时间,端口会进入侦听状态,这时接口可以接收BPDU,并开始发送BPDU;发送15秒的BPDU,接口将会为转发用户数据做准备,也开始学习MAC地址,这个状态叫学习状态;再经过15秒的学习后,端口进入转发状态,转发状态是一个正常的接口。STP状态机监听阻塞转发学习1)端口启用或初始化2)端口禁用或故障3)端口被选为根端口或指定端口4)端口被选为非指定端口5)转发定时器超时(1,6)(2)(2)(2)(2)(1)(2)(4)(4)(5)(4)(5)(3)6)PortFast(6)禁用监听学习转发spanning-tree设置开启STP:switchA(Config)#spanning-treeMSTPisstartingnow,pleasewait...........MSTPisenabledsuccessfully.spanning-tree设置查看配置SW1#shspanning-tree--MSTPBridgeConfigInfo--Standard:IEEE802.1sBridgeMAC:00:03:0f:01:0e:30BridgeTimes:MaxAge20,HelloTime2,ForwardDelay15ForceVersion:3###########################Instance0###########################SelfBridgeId:32768-00:03:0f:01:0e:30RootId:16384.00:03:0f:01:0f:52Ext.RootPathCost:200000RegionRootId:thisswitchI