1、网络工程实践教程-实验指南第 10 章 STP10.1 STP 理论指导在网络发展初期,透明网桥的运用。它比只会放大和广播信号的集线器聪明得多。它的学习能力是把发向它的数据帧的源 MAC 地址和端口号记录下来,下次碰到这个目的MAC 地址的报文就只从记录中的端口号发送出去,除非目的 MAC 地址没有记录在案或者目的 MAC 地址本身就是多播地址才会向所有端口发送。通过透明网桥,不同的局域网之间可以实现互通,网络可操作的范围得以扩大,而且由于透明网桥具备 MAC 地址学习功能而不会像 Hub 那样造成网络报文冲撞泛滥。透明网桥也有它的缺陷,它的缺陷就在于它的透明传输。透明网桥并不能像路由器那样知
2、道报文可以经过多少次转发,一旦网络存在环路就会造成报文在环路内不断循环和增生,出现广播风暴。为了解决这一问题,后来提出了生成树协议。10.1.1 STPSTP(Spanning Tree Protocol)是生成树协议的英文缩写。该协议可应用于环路网络,通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。STP 的基本思想就是生成“一棵树” ,树的根是一个称为根桥的交换机,根据设置不同,不同的交换机会被选为根桥,但任意时刻只能有一个根桥。由根桥开始,逐级形成一棵树,根桥定时发送配置报文,非根桥接收配置报文并转发,如果某台交换机能够从两个以
3、上的端口接收到配置报文,则说明从该交换机到根有不止一条路径,便构成了循环回路,此时交换机根据端口的配置选出一个端口并把其他的端口阻塞,消除循环。当某个端口长时间不能接收到配置报文的时候,交换机认为端口的配置超时,网络拓扑可能已经改变,此时重新计算网络拓扑,重新生成一棵树。STP 协议中定义了根桥(RootBridge) 、根端口(RootPort) 、指定端口(DesignatedPort) 、路径开销( PathCost)等概念,目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。用于构造这棵树的算法称2 网络工程实践教程-实验指南为生成树算法 SPA(S
4、panning TreeAlgorithm) 。要实现这些功能,网桥之间必须要进行一些信息的交流,这些信息交流单元就称为配置消息 BPDU(BridgeProtocol Data Unit) 。STP BPDU 是一种二层报文,目的 MAC 是多播地址 01-80-C2-00-00-00,所有支持 STP 协议的网桥都会接收并处理收到的 BPDU 报文。该报文的数据区里携带了用于生成树计算的所有有用信息。BPDU 有两种类型:配置 BPDU 和 TCN BPDU配置 BPDU:这种 BPDU 是所有端口上的根网桥以周期性间隔发出的,就是普通的BPDU配置 BPDU 只有根桥才发,别人只是转发。
5、TCN BPDU 拓扑变更通告:这种 BPDU 是检测到拓扑变更的时发送。BPDU 帧格式字节 字段 描述2 协议 ID 该值总为 11 版本 01 消息类型 BPDU 类型。配置BPDU=0 TCN BPDU=801 标志8 根 ID 根网桥的桥 ID4 路径开销 到达根桥的 STP 开销8 网桥 ID BPDU 发送网桥 ID2 端口 ID BPDU 发送网桥端口 ID2 最大寿命 从根网桥发出 BPDU 的秒数,每经过一个交换机都减一,所以它本质上是到达根桥的跳数2 最大寿命 网桥将根桥看做不可用之前保留根桥 ID 的最大时间2 HELLO 时间 根桥连续发送的 BPDU之间的时间间隔2
6、 转发延迟 网桥在监听和学习状态所停留的时间间隔3 网络工程实践教程-实验指南首先进行根桥的选举。选举的依据是网桥优先级和网桥 MAC 地址组合成的桥ID(Bridge ID) ,桥 ID 最小的网桥将成为网络中的根桥。在网桥优先级都一样(默认优先级是 32768)的情况下,MAC 地址最小的网桥成为根桥。根桥是拥有最小优先级的交换机。选根网桥的目的是。以自己为根算出一条网络中没有环路的路径。CISCO 的交换机默认的优先级是 32768.算成二进制是 1000 0000 0000 0000 。算成十六进制是 0*8000 它的优先级取值范围是 0-65535 的中值。因为 MAC 地址是唯一
7、的。所以网桥 ID 也总是唯一的。网桥优先级 MAC 地址在交换网络里使用网桥 ID 唯一的标识网桥或交换机,网桥 ID优先级值(2byte)MAC 地址( 6byte) 。思科的交换机使用分配给背板或监控模块的 MAC 地址池中的某个MAC 地址,使用 show module mod-no 可以显示所分配的 MAC 地址。接下来,确定根端口,根据与根桥连接路径开销最少的端口为根端口,路径开销等于1000除于传输介质的速率假设 SW1 和根桥之间的链路是千兆链路,跟桥和 SW3之间的链路是百兆链路,SW3 从端口 1 到根桥的路径开销的默认值是 19,而从端口 2 经过 SW1 到根桥的路径开
8、销是 4+4=8,所以端口 2 成为根端口,进入转发状态.根桥和根端口都确定之后然后是裁剪冗余的环路。这个工作是通过阻塞非根桥上相应端口来实现的。生成树经过一段时间(默认值是 30 秒左右)稳定之后,所有端口要么进入转发状态,要么进入阻塞状态。STPBPDU 仍然会定时从各个网桥的指定端口发出,以维护链路的状态。如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。当然生成树协议还有很多内容,其他各种改进型的生成树协议都是以此为基础的,基本思想和概念都大同小异。STP 协议给透明网桥带来了新生。但是它还是有缺点的,STP协议的缺陷主要表现在收敛速度上。当拓扑发生变化,新的配置消息要经
9、过一定的时延才能传播到整个网络,这个时延称为 Forward Delay,协议默认值是 15 秒。在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为了解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习 MAC 地址但不参与转发的中间状态,两次状态切换的时间长度都是 Forward Delay,这样就可以保证在拓扑变化的时候不会产生临时环路。但是,这个看似良好的解决方案实际上带来的却是至少两倍 Forward Delay 的收敛时间。10.1.2 RSTP为了解决 STP 协议的
10、这个缺陷,在世纪之初 IEEE 推出了 802.1w 标准,作为对802.1D 标准的补充。在 IEEE 802.1w 标准里定义了快速生成树协议 RSTP(Rapid 4 网络工程实践教程-实验指南Spanning Tree Protocol) 。RSTP 协议在 STP 协议基础上做了三点重要改进,使得收敛速度快得多(最快 1 秒以内) 。 第一点改进:为根端口和指定端口设置了快速切换用的替换端口(Alternate Port)和备份端口(Backup Port)两种角色,当根端口/ 指定端口失效的情况下,替换端口/备份端口就会无时延地进入转发状态。 第二点改进:在只连接了两个交换端口的点
11、对点链路中,指定端口只需与下游网桥进行一次握手就可以无时延地进入转发状态。如果是连接了三个以上网桥的共享链路,下游网桥是不会响应上游指定端口发出的握手请求的,只能等待两倍Forward Delay 时间进入转发状态。 第三点改进:直接与终端相连而不是把其他网桥相连的端口定义为边缘端口(Edge Port) 。边缘端口可以直接进入转发状态,不需要任何延时。由于网桥无法知道端口是否是直接与终端相连,所以需要人工配置。可见,RSTP 协议相对于 STP 协议的确改进了很多。为了支持这些改进,BPDU 的格式做了一些修改,但 RSTP 协议仍然向下兼容 STP 协议,可以混合组网。虽然如此,RSTP
12、和 STP 一样同属于单生成树 SST(SingleSpanning Tree) ,有它自身的诸多缺陷,主要表现在三个方面。 第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。 第二点缺陷:在网络结构对称的情况下,单生成树也没什么大碍。但是,在网络结构不对称的时候,单生成树就会影响网络的连通性。 第三点缺陷:当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显。这些缺陷都是单生成树 SST 无法克服的,于是支持 VLAN 的多生成树协议出现了。10.2 实验 1: STP 和 PVST1、实验目的掌握
13、交换机 STP 的配置方法,理解 STP 协议的原理及其在冗余链路中的工作过程。2、虚拟场景公司有两台交换机由双链路连接,配置 STP 以使这两台交换机正常工作而不产生广播风暴。5 网络工程实践教程-实验指南3、实验拓扑s w i t c h A s w i t c h AF a 0 / 1 F a 0 / 1F a 0 / 2 F a 0 / 2F a 0 / 3F a 0 / 3P C 1I P : 1 9 2 . 1 6 8 . 1 0 0 . 1 / 2 4P C 2I P : 1 9 2 . 1 6 8 . 1 0 0 . 2 / 2 4图 10-1 实验 1,2 拓扑图4、实验步骤
14、步骤 1:按照网络连接图完成设备连接,为防止实验过程中由于冗余链路可能导致的广播风暴的影响,可以在完成设备 STP 配置之后连接交换机的冗余链路;步骤 2:在每台交换机上启动生成树协议,例如在 SwitchA 上进行配置:SwitchA# configure terminalSwitchA(config)# spanning-tree /开启生成树协议SwitchA(config)# spanning-tree mode stp /设置生成树为 STP(802.1D)SwitchA(config)# end完成 SwitchA 的配置后,在 SwitchB 上也做相同设置;步骤 3:配置 Sw
15、itchA 为根交换机:当使用默认配置时,SwitchA 和 SwitchB 的交换机优先级为 32768,两者中 MAC 地址小的将成为根交换机。我们可以通过更改交换机优先级来指定其中的一台为根交换机。SwitchA (config)# spanning-tree priority 4096 /设置 SwitchA 的优先级为 4096完成配置后可以使用 show spanning-tree 和 show spanning-tree interface 验证.SwitchA# show spanning-tree /显示交换机的生成树模式及相关状态stpVersion: STP /STP 的
16、版本为 STPSysStpStatus: Enabled /STP 系统状态为启动(打开)6 网络工程实践教程-实验指南BaseNumPort: 24 /基本端口数为 24Maxage: 20 /BPDU 生存的最长时间HelloTime: 2 /BPDU 报文的时间间隔ForwardDelay: 15 /端口状态改变的时间间隔BridgeMaxAge: 20 BridgeHelloTime: 2 BridgeForwardDelay: 15 MaxHops: 20 /最大中继跳数TxHoldCount: 3 PathCostMethod: Long /路径开销方式BPDUGuaed: Dis
17、abled /BPDU 保护未启动BPDUFilter: Disabled /BPDU 过滤未启动BridgeAddr : 00d0.f8c0.2224 /桥 MAC 地址Priority: 4096 /优先级为 4096TimeSinceTopologyChange: 0d:0h:3m:9s /拓扑改变的时间TopologyChanges: 19DesignateRoot: 100000D0F8C02224 /指定根RootCost: 0 /根开销RootPort: 0 /根端口SwitchB# show spanning-tree interface fastEthernet 0/1 /显
18、示 Fa0/1 接口 STP 状态PortAdiminPortfast: Disabled PortOperPortfast: Disabled PortAdiminLinkType: auto PortOperLinkType: point-to-pointPortBPDUGuaed: Disabled:PortBPDUFilter: DisabledPortState: forwarding /Fa0/1 接口状态为转发PortPriority: 128 /端口优先级为 128PortDesignateRoot: 100000D0F8C02224 /端口指定根PortDesignatedC
19、ost: 0PortDesignatedBridge : 100000D0F8C02224PortDesignatedPort: 8001 /指定端口为 8001PortForwardingTransitions: 2 PortAdiminPathCost: 0 7 网络工程实践教程-实验指南PortOperPathCost: 200000 PortRole: rootPort /端口角色为根端口步骤 4:配置 PC1 和 PC2 的 IP 地址,验证网络拓扑发生变化时,ping 的丢失包的情况:用 ping 命令从 PC1 连续探测 PC2,命令如下:C:ping 192.168.100.2
20、 t / 连续探测 PC2,显示结果如下:Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64可以正常 ping 通。5、实验调试及注意事项断开交换机的
21、 F0/1 与 F0/1 连接,观察 ping 的执行情况,可以发现会丢失若干个包,显示 Request timed out,一段时间后,系统自动恢复连通。10.3 实验 2: RSTP1、实验目的理解快速生成树协议 RSTP 的原理,掌握其配置方法。2、虚拟场景现要将上面实验中两台交换机的协议由 STP 改为 RSTP,观察交换机及 PC 的变化有何异同。3、实验拓扑如图 10-14、实验步骤步骤 1:基本要求同上一次实验步骤 2:在每台交换机上启动快速生成树协议,例如在 SwitchA 上进行配置:SwitchA# configure terminal8 网络工程实践教程-实验指南Swit
22、chA(config)# spanning-tree /开启生成树协议SwitchA(config)# spanning-tree mode rstp /设置生成树为 RSTP(802.1W)SwitchA(config)# end完成 SwitchA 的配置后,在 SwitchB 上也做相同设置;完成配置后可以使用 show spanning-tree 和 show spanning-tree interface 验证.步骤 3:配置 PC1 和 PC2 的 IP 地址,验证网络拓扑发生变化时,ping 的丢失包的情况:用 ping 命令从 PC1 连续探测 PC2,命令如下:C:ping
23、192.168.100.2 t / 连续探测 PC2,显示结果如下:Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64Reply from 192.168.100.2 bytes=32 times10ms TTL=64步骤 4:断开交换机的 F0/1 与 F0/1 连接,观察 ping 的执行情况,可以发现会丢失若干个包,显示 Request timed out,一段时间后,系统自动恢复连通 .5、实验调试及注意事项这次可以看出丢包的时间明显缩短,收敛速度较 STP 来看快了很多,这也正是 RSTP的优势所在。注意事项:(1)CISCO 交换机缺省是开启 spanning-tree 的(2)可以修改交换机的优先级,也可以修改端口的优先级,以及配置路径花费等,希望大家在完成基本实验的前提下,多做扩展练习。(3)考虑快速生成树协议中计算根的算法有什么缺陷,如何修改?