一、快速生成树的概念 快速生成树协议:其由生成树发展而成,这种协议在网络结构发生变化时,能更快的收敛网络。它比生成树多了两种端口类型:预备端口类型(alternate port)和备份端口类型。 生成树协议主要应用于环路网络中,它通过一定的算法实现路径冗余,同时将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。 STP的基本原理是,通过在交换机之间传递一种特殊的协议报文BPDU来确定网络的拓扑结构。 生成树协议最主要的应用是为了避免局域网中的网络环回,解决以太网网络的“广播风暴”问题。 二、生成树的部分参数含义 1-PortFast特性是思科在PVST中提出的快速收敛特性。 (1)针对连接终端的端口,由于这些端口不会形成环路,配置了PortFast特性后,此端口直接从Blocking进入Forwarding状态(跳过Listening和Learning状态),收敛时间为0秒。 (2)若未配置PortFast特性,则这些连接终端的端口收敛时间为30秒(即2个转发延迟) 2-PortFast配置方法 方式1:全局启用PortFast SW(config)#spanning-tree portfast default //针对本交换机的所有端口都启用PortFast特性 存在的问题:中继端口也会启用PortFast功能,如何改变中继端口的PortFast功能 SW(config)#int f0/1 //进入指定接口 SW(config-if)#spanning-tree portfast disable //关闭指定端口的portfast特性 方式2:接口下启用PortFast SW(config)#int f0/1 //进入指定接口 SW(config-if)#switchport mode access //配置端口的工作模式为接入模式 SW(config-if)#spanning-tree portfast //在该接口上启动端口快速收敛功能,启用portfast 3-在trunk链路上启动PortFast的方法 SW(config)#int f0/1 //进入指定接口 SW(config-if)#switchport mode trunk //配置端口的工作模式为链路模式 SW(config-if)#spanning-tree portfast trunk //在该接口上启动端口快速收敛功能,启用portfast 注意1:若希望一个Trunk端口具备portfast特性,必须在接口下启用并明确带上trunk参数。 注意2:当此trunk端口连接到路由器时,可以启用portfast特性;但是交换机互连的trunk端口,若启用portfast特性可能造成交换环路。 4-启动BPDU保护 SW(config)#int f0/1 //进入指定接口 SW(config-if)#switchport mode access //配置端口的工作模式为接入模式 Switch(config-if)#spanning-tree bpduguard //在该接口上启动BPDU保护功能 生成树连接主机那端理论上是不需要发送BPDU建立关系的,因为主机不是交换机,不可能发出BPDU,交换机一旦收到BPDU会对比Root,从而可以抢占Root,bpduguard就是用来防止主机发送BPDU的,因为主机可以模拟发包,同理就是用来防止交换机某些不希望得到BPDU的接口做的措施. 5-启动根保护 Root Guard(根保护)传统的802.1D,STP没有给网络管理员提供确保交换式第2层网络拓扑安全。当新接入的交换机优先级更低,将抢占原有的根网桥。 根保护的目的是确保启用了根保护的端口成为指定端口。通常一个根桥的所有端口均为指定端口。除非连接到两个或多根网桥的端口。如果网桥在启用根保护的端口上收到一个较好的STP BPDU。这个端口进入STP的根不一致状态,不会有流量通过该端口。例如:如下图所示,原本交换环路中只存在M1、M2、M3时,正确的根桥应该是M3,因为在优先级相同的情况下,M3的MAC地址最低。 当有新的交换机加入到该网络中时,且该交换机的优先级也是32769,而且该交换机的MAC地址是0001.9791.3A4D;其MAC地址小于原有根桥M3DE 地址,所有新加入的M4交换机变成了该网络的根桥,如下图所示: 出现这种情况时,由于生成树的重计算,会直接导致原有的交换环路不稳定。解决的办法是在该网络的某个交换机的接口上启用根保护。 M1(config)#int f0/4 M1(config-if)#spanning-tree guard root 在M1上查看spanning-tree的情况,发现在M1的F0/4上启用根保护后,该接口始终处于LSN(学习状态),如下图所示: 出现这种现象的原因是M4的优先级始终高于M3的优先级,只有在M3发现M4不是其的威胁时,M1的F0/4接口才从LSN状态变为FWD状态,其解决办法是,提高M3的优先级或通过命令确定M3为主要的根桥。其方法如下: (1)方法一:M3(config)#spanning-tree vlan 1 priority 0 //修改该交换机的优先级 (2)方法二:M3(config)#spanning-tree vlan 1 root primary //指定该交换机为主要根 6-生成树端口连接类型 spanning-tree link-type 设定生成树端口连接类型,no的形式为恢复默认值。 语法 spanning-tree link-type {auto|point-to-point|shared} (1)auto:自动根据双工方式决定连接类型,全双工端口为point-to-point,而半双工端口为shared。 (2)point-to-point:指定端口类型为point-to-point。 (3)shared:指定端口类型为shared。 三、快速生成树+参数应用实例 (1)配置拓扑图 (2)配置要求 1-根据网络拓扑图的要求,完成网络的基本配置,包括设备名、用户名、控制口密码、特权密码和远程登录密码; 2-将M_SW_3设置为VTP的服务器,负责整个网络的VLAN划分和管理,并根据拓扑图的要求,划分VLAN; 3-根据拓扑图的标记将接口分配到指定的VLAN中,并关闭所有未使用的接口; 4-根据拓扑图的情况在所有接入层的交换机上配置端口安全,预警状态为shutdown; 5-根据拓扑图的情况,在所有交换机上开启快速生成树协议; 6-根据拓扑图的情况,在所有的终端接口上,开启快速接口功能; 7-根据拓扑图的情况,在所有的终端接口上,开启BPDU保护功能; 8-检测网络中的根桥、指定端口、阻塞端口和根端口的情况; 9-接入新的交换机,并观察网络中根桥、指定端口、阻塞端口和根端口的变化情况,若根桥没有变化,则改变新接入设备的优先级,使其成为最优根桥,观察网络设备的变化情况。 10-在相应的接口上启用根保护功能,观看网络中根桥、指定端口、阻塞端口和根端口的变化情况; 11-根据要求,完成下面的配置 (1)M_SW_1作为vlan10、30、50的主根; (2)M_SW_2作为vlan20、40、60的主根; (3)M_SW_1作为vlan20、40、60的副根; (4)M_SW_2作为VLAN10、30、50的副根; 12-在M_SW_1上设置DHCP,使其成为10、30、50的服务器; 13-在M_SW_2上设置DHCP,使其成为20、40、60的服务器; (3)配置步骤 1-根据网络拓扑图的要求,完成网络的基本配置,包括设备名、用户名、控制口密码、特权密码和远程登录密码; Switch>enable //进入特权模式 Switch#configure terminal //进入全局配置模式 Switch(config)#hostname M_SW_3 //设置主机名 M_SW_3(config)#username m_sw_3 secret cisco //设置用户名和密码 M_SW_3(config)#enable secret cisco //设置进入特权模式的密码 M_SW_3(config)#line console 0 //进入控制口 M_SW_3(config-line)#exec-timeout 10 //设置休眠时间 M_SW_3(config-line)#logging synchronous //设置光标跟踪 M_SW_3(config-line)#login local //设置采用本地用户名和密码的方式进行登录 M_SW_3(config-line)#line vty 0 4 //设置远程登录的模式 M_SW_3(config-line)#exec-timeout 10 //设置休眠时间 M_SW_3(config-line)#logging synchronous //设置光标跟踪 M_SW_3(config-line)#login local //设置采用本地用户名和密码的方式进行登录 M_SW_3(config)#banner motd # //设置banner,以#开始以#结束 Enter TEXT message. End with the character '#'. This is M_SW_3 # M_SW_3(config)#int f0/1 //进入接口 M_SW_3(config-if)#description F0/9 interface to M_SW_1 //描述该接口连接到M_SW_1的F0/9接口上; M_SW_3(config-if)#int f0/2 //进入接口 M_SW_3(config-if)#description F0/9 interface to M_SW_2 /描述该接口连接到M_SW_2的F0/9接口上; Switch(config)#service password-encryption //启用系统加密命令 M_SW_3(config-if)#end //退到特权模式 M_SW_3#copy running-config startup-config //保存当前的配置 Destination filename [startup-config]? Building configuration... [OK] 2-将M_SW_3设置为VTP的服务器,负责整个网络的VLAN划分和管理,并根据拓扑图的要求,划分VLAN; M_SW_3(config)#vtp mode server //设置VTP的模式为服务器模式 M_SW_3(config)#vtp domain rstp.com //设置VTP的域名 M_SW_3(config)#vtp version 2 //设置VTP的版本 M_SW_3(config)#vtp password cisco //设置VTP的密码 /*创建VLNA信息*/ M_SW_3(config)#vlan 10 //创建VLAN信息 M_SW_3(config-vlan)#vlan 20 M_SW_3(config-vlan)#vlan 30 M_SW_3(config-vlan)#vlan 40 M_SW_3(config-vlan)#vlan 50 M_SW_3(config-vlan)#vlan 60 3-将其他交换作为VTP的客户端,接收服务器端传达过来的VLAN信息; M_SW_1(config)#vtp mode client //设置VTP的模式为客户端模式 M_SW_1(config)#vtp domain rstp.com //设置VTP的域名 M_SW_1(config)#vtp password cisco //设置VTP的密码 4-设置设备间的链路模式为trunk模式 M_SW_3(config)#int range f0/1-2 //进入F0/1-2组接口 M_SW_3(config-if-range)#switchport trunk encapsulation dot1q //封装接口模式M_SW_3(config-if-range)#switchport mode trunk //设置接口的工作模式 M_SW_1(config)#int range f0/1-10 //进入组接口 M_SW_1(config-if-range)#switchport trunk encapsulation dot1q //封装接口模式 M_SW_1(config-if-range)#switchport mode trunk //设置接口的工作模式 M_SW_2(config)#int range f0/1-10 //进入组接口 M_SW_2(config-if-range)#switchport trunk encapsulation dot1q //封装接口模式 M_SW_2(config-if-range)#switchport mode trunk //设置接口的工作模式 M_SW_4(config)#int f0/10 //进入组接口 M_SW_4(config-if)#switchport trunk encapsulation dot1q //封装接口模式 M_SW_4(config-if)#switchport mode trunk //设置接口的工作模式 SW_1(config)#int range f0/1-2 //进入组接口 SW_1(config-if-range)#switchport mode trunk //设置接口的工作模式 5-在接入层设备上测试VLAN的划分情况是否正确 6-将接口分配到指定的VLAN中 SW_1(config)#Int f0/3 //进入接口 SW_1(config-if)#Switchport mode access //设置接口的工作模式 SW_1(config-if)#Switchport access vlan 10 //将接口分配到指定的VLAN中 SW_1(config-if)#Int f0/4 //进入接口 SW_1(config-if)#Switchport mode access //设置接口的工作模式 SW_1(config-if)#Switchport access vlan 20 //将接口分配到指定的VLAN中 7-检查VLAN划分后接口的分配情况 8-根据拓扑图的情况在所有接入层的交换机上配置端口安全,预警状态为shutdown; SW_1(config-if)#Int f0/3 //进入接口 SW_1(config-if)#switchport port-security maximum 1 //设置端口允许接入的最大数量 SW_1(config-if)#switchport port-security violation shutdown //设置预警处理方法 SW_1(config-if)#switchport port-security //启用端口安全 SW_1(config-if)#Int f0/4 //进入接口 SW_1(config-if)#switchport port-security maximum 1 //设置端口允许接入的最大数量 SW_1(config-if)#switchport port-security violation shutdown //设置预警处理方法 SW_1(config-if)#switchport port-security //启用端口安全 9-根据拓扑图的情况,在所有交换机上开启快速生成树协议; M_SW_3(config)#spanning-tree mode rapid-pvst //启用快速生成树 10-根据拓扑图的情况,在所有的终端接口上,开启快速接口功能; SW_1(config-if)#int f0/3 //进入接口 SW_1(config-if)#spanning-tree portfast //启动快速端口 SW_1(config-if)#int f0/4 //进入接口 SW_1(config-if)#spanning-tree portfast //启动快速端口 11-根据拓扑图的情况,在所有的终端接口上,开启BPDU保护功能; SW_1(config)#int f0/3 //进入接口 SW_1(config-if)#spanning-tree bpduguard enable //开启BPDU SW_1(config-if)#int f0/4 //进入接口 SW_1(config-if)#spanning-tree bpduguard enable //开启BPDU 12-检测网络中的根桥、指定端口、阻塞端口和根端口的情况; 问题:在整个网络中,所有VLAN的根都是二层交换机的SW_5;根据拓扑图的分布情况和网络中存在的设备情况,SW_5为根不符合要求,需要进行调整; 13-接入新的交换机,并观察网络中根桥、指定端口、阻塞端口和根端口的变化情况,若根桥没有变化,则改变新接入设备的优先级,使其成为最优根桥,观察网络设备的变化情况。 假设:新接入的M_SW_4交换机优先级为28672,高于SW_5优先级,则出现根被夺走现象; M_SW_4(config)#spanning-tree vlan 1,10,20,30,40,50,60 priority 28672 //修改该交换机的优先级,使其成为高优先级的设备,与原根竞争根的选举。 14-在相应的接口上启用根保护功能,观看网络中根桥、指定端口、阻塞端口和根端口的变化情况;并将恢复原有的根; M_SW_1(config-if)#int f0/10 //进入接口 M_SW_1(config-if)#spanning-tree guard root //启用根保护功能 SW_5(config)#spanning-tree vlan 1,10,20,30,40,50,60 priority 8192 //提升原根的优先级,使其他新接入的设备无法与其争用根。 15-根据要求,完成下面的配置 (1)M_SW_1作为vlan10、30、50的主根; (2)M_SW_2作为vlan20、40、60的主根; (3)M_SW_1作为vlan20、40、60的副根; (4)M_SW_2作为VLAN10、30、50的副根; M_SW_1(config)#spanning-tree vlan 10,30,50 root primary //设置m_sw_1作为vlan10、vlan30、vlan50的主根 M_SW_1(config)#spanning-tree vlan 20,40,60 root se //设置m_sw_1作为vlan10、vlan30、vlan50的副根 M_SW_2(config)#spanning-tree vlan 20,40,60 root primary //设置M_SW_2做作为vlan20、vlan40、vlan60的主根 M_SW_2(config)#spanning-tree vlan 10,30,50 root se //设置M_SW_2做作为vlan20、vlan40、vlan60的副根 16-在M_SW_1上设置DHCP,使其成为10、30、50的服务器; M_SW_1(config)#ip dhcp pool vlan10 //设置地址池,名称为vlan10 M_SW_1(dhcp-config)#default-router 192.168.10.254 //设置vlan10的默认网关地址 M_SW_1(dhcp-config)#network 192.168.10.0 255.255.255.0 //设置vlan10的网段 M_SW_1(dhcp-config)#exit //退出接口模式 M_SW_1(config)#ip dhcp excluded-address 192.168.10.254 //设置vlan10的排除地址 M_SW_1(config)#ip dhcp pool vlan30 //设置地址池,名称为vlan30 M_SW_1(dhcp-config)#default-router 192.168.30.254 //设置vlan30的默认网关地址 M_SW_1(dhcp-config)#network 192.168.30.0 255.255.255.0 //设置vlan30的网段 M_SW_1(dhcp-config)#exit //退出接口模式 M_SW_1(config)#ip dhcp excluded-address 192.168.30.254 //设置vlan30的排除地址 M_SW_1(config)#ip dhcp pool vlan50 //设置地址池,名称为vlan50 M_SW_1(dhcp-config)#default-router 192.168.50.254 //设置vlan50的默认网关地址 M_SW_1(dhcp-config)#network 192.168.50.0 255.255.255.0 //设置vlan50的网段 M_SW_1(dhcp-config)#exit //退出接口模式 M_SW_1(config)#ip dhcp excluded-address 192.168.50.254 //设置vlan50的排除地址 17-在M_SW_2上设置DHCP,使其成为20、40、60的服务器; M_SW_2(config)#ip dhcp pool vlan20 //设置地址池,名称为vlan20 M_SW_2(dhcp-config)#default-router 192.168.20.254 //设置vlan20的默认网关地址 M_SW_2(dhcp-config)#network 192.168.20.0 255.255.255.0 //设置vlan20的网段 M_SW_2(dhcp-config)#exit //退出接口模式 M_SW_2(config)#ip dhcp excluded-address 192.168.20.254 //设置vlan20的排除地址 M_SW_2(config)#ip dhcp pool vlan40 //设置地址池,名称为vlan40 M_SW_2(dhcp-config)#default-router 192.168.40.254 //设置vlan40的默认网关地址 M_SW_2(dhcp-config)#network 192.168.40.0 255.255.255.0 //设置vlan40的网段 M_SW_2(dhcp-config)#exit //退出接口模式 M_SW_2(config)#ip dhcp excluded-address 192.168.40.254 //设置vlan40的排除地址 M_SW_2(config)#ip dhcp pool vlan60 //设置地址池,名称为vlan50 M_SW_2(dhcp-config)#default-router 192.168.60.254 //设置vlan50的默认网关地址 M_SW_2(dhcp-config)#network 192.168.60.0 255.255.255.0 //设置vlan50的网段 M_SW_2(dhcp-config)#exit //退出接口模式 M_SW_2(config)#ip dhcp excluded-address 192.168.60.254 //设置vlan50的排除地址 18-配置网关地址 M_SW_1(config)#Int vlan 10 //进入vlan 的接口 M_SW_1(config-if)#Ip add 192.168.10.254 255.255.255.0 //设置接口的IP地址 M_SW_1(config-if)#Int vlan 30 //进入vlan 的接口 M_SW_1(config-if)#Ip add 192.168.30.254 255.255.255.0 //设置接口的IP地址 M_SW_1(config-if)#Int vlan 50 //进入vlan 的接口 M_SW_1(config-if)#Ip add 192.168.50.254 255.255.255.0 //设置接口的IP地址 M_SW_2(config)#Int vlan 20 //进入vlan 的接口 M_SW_2(config-if)#Ip add 192.168.20.254 255.255.255.0 //设置接口的IP地址 M_SW_2(config-if)#Int vlan 40 //进入vlan 的接口 M_SW_2(config-if)#Ip add 192.168.40.254 255.255.255.0 //设置接口的IP地址 M_SW_2(config-if)#Int vlan 60 //进入vlan 的接口 M_SW_2(config-if)#Ip add 192.168.60.254 255.255.255.0 //设置接口的IP地址 19-检查DHCP的配置情况 |
|
来自: Teacher_Lin > 《生成树协议》