详解生成树协议STP RSTP
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
详解生成树协议STP/RSTP
生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。
生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。
“生成树协议”是一个广义的概念,并不是特指IEEE 802.1D中定义的STP协议,而是包括STP以及各种在STP基础上经过改进了的生成树协议。
STP/RSTP
在网络发展初期,透明网桥的运用。
它比只会放大和广播信号的集线器聪明得多。
它的学习能力是把发向它的数据帧的源MAC地址和端口号记录下来,下次碰到这个目的MAC 地址的报文就只从记录中的端口号发送出去,除非目的MAC地址没有记录在案或者目的MAC地址本身就是多播地址才会向所有端口发送。
通过透明网桥,不同的局域网之间可以实现互通,网络可操作的范围得以扩大,而且由于透明网桥具备MAC地址学习功能而不会像Hub那样造成网络报文冲撞泛滥。
透明网桥也有它的缺陷,它的缺陷就在于它的透明传输。
透明网桥并不能像路由器那样知道报文可以经过多少次转发,一旦网络存在环路就会造成报文在环路内不断循环和增生,出现广播风暴。
为了解决这一问题,后来提出了生成树协议。
STP协议中定义了根桥(RootBridge)、根端口(RootPort)、指定端口(DesignatedPort)、路径开销(PathCost)等概念,目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。
用于构造这棵树的算法称为生成树算法SPA (Spanning TreeAlgorithm)。
要实现这些功能,网桥之间必须要进行一些信息的交流,这些信息交流单元就称为配置消息BPDU(BridgeProtocol Data Unit)。
STP BPDU是一种二层报文,目的MAC是多播地址01-80-C2-00-00-00,所有支持STP协议的网桥都会接收并处理收到的BPDU报文。
该报文的数据区里携带了用于生成树计算的所有有用信息。
生成树协议的工作过程:
首先进行根桥的选举。
选举的依据是网桥优先级和网桥MAC地址组合成的桥ID(Bridge ID),桥ID最小的网桥将成为网络中的根桥。
在网桥优先级都一样(默认优先级是32768)的情况下,MAC地址最小的网桥成为根桥。
接下来,确定根端口,根据与根桥连接路径开销最少的端口为根端口,路径开销等于…1000‟除于…传输介质的速率‟假设中SW1和跟桥之间的链路是千兆GE链路,跟桥和SW3之间的链路是百兆FE链路,SW3从端口1到根桥的路径开销的默认值是19,而从端口2经过SW1到根桥的路径开销是4+4=8,所以端口2成为根端口,进入转发状态。
根桥和根端口都确定之后然后是裁剪冗余的环路。
这个工作是通过阻塞非根桥上相应端口来实现的。
生成树经过一段时间(默认值是30秒左右)稳定之后,所有端口要么进入转发状态,要么进入阻塞状态。
STPBPDU仍然会定时从各个网桥的指定端口发出,以维护链路的状态。
如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。
当然生成树协议还有很多内容,其他各种改进型的生成树协议都是以此为基础的,基本思想和概念都大同小异。
STP协议给透明网桥带来了新生。
但是它还是有缺点的,STP协议的缺陷主要表现在收敛速度上。
当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为
Forward Delay,协议默认值是15秒。
在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。
为了解决临时环路的问题,生成树使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的时间长度都是Forward Delay,这样就可以保证在拓扑变化的时候不会产生临时环路。
但是,这个看似良好的解决方案实际上带来的却是至少两倍Forward Delay的收敛时间!
为了解决STP协议的这个缺陷,在世纪之初IEEE推出了802.1w标准,作为对802.1D 标准的补充。
在IEEE 802.1w标准里定义了快速生成树协议RSTP(Rapid Spanning Tree Protocol)。
RSTP协议在STP协议基础上做了三点重要改进,使得收敛速度快得多(最快1秒以内)。
第一点改进:为根端口和指定端口设置了快速切换用的替换端口(Alternate Port)和备份端口(Backup Port)两种角色,当根端口/指定端口失效的情况下,替换端口/备份端口就会无时延地进入转发状态。
第二点改进:在只连接了两个交换端口的点对点链路中,指定端口只需与下游网桥进行一次握手就可以无时延地进入转发状态。
如果是连接了三个以上网桥的共享链路,下游网桥是不会响应上游指定端口发出的握手请求的,只能等待两倍Forward Delay时间进入转发状态。
第三点改进:直接与终端相连而不是把其他网桥相连的端口定义为边缘端口(Edge Port)。
边缘端口可以直接进入转发状态,不需要任何延时。
由于网桥无法知道端口是否是直接与终端相连,所以需要人工配置。
可见,RSTP协议相对于STP协议的确改进了很多。
为了支持这些改进,BPDU的格式做了一些修改,但RSTP协议仍然向下兼容STP协议,可以混合组网。
虽然如此,RSTP和STP一样同属于单生成树SST(SingleSpanning Tree),有它自身的诸多缺陷,主要表现在三个方面。
第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。
第二点缺陷:在网络结构对称的情况下,单生成树也没什么大碍。
但是,在网络结构不对称的时候,单生成树就会影响网络的连通性。
第三点缺陷:当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显。
这些缺陷都是单生成树SST无法克服的,于是支持VLAN的多生成树协议出现了。
一、STP概述
STP(生成树协议)是一个二层管理协议。
在一个扩展的局域网中参与STP的所有交换机之间通过交换桥协议数据单元BPDU(Bridge Protocol Data Unit)来实现;为稳定的生成树拓扑结构选择一个根桥;为每个交换网段选择一台指定交换机;将冗余路径上的交换机置为Blocking,来消除网络中的环路。
IEEE 802.1d是最早关于STP的标准,它提供了网络的动态冗余切换机制。
STP使您能在网络设计中部署备份线路,并且保证:
在主线路正常工作时,备份线路是关闭的。
当主线路出现故障时自动使能备份线路,切换数据流。
RSTP(Rapid Spanning Tree Protocol)是STP的扩展,其主要特点是增加了端口状态快速切换的机制,能够实现网络拓扑的快速转换。
1.1 设置STP模式
使用命令config spanning-tree mode可以设置STP模式为802.1d STP或者802.1w RSTP。
1.2 配置STP
交换机中默认存在一个default STP域。
多域STP是扩展的802.1d,它允许在同一台交换设备上同时存在多个STP域,各个STP域都按照802.1d运行,各域之间互不影响。
它提供了一种能够更为灵活和稳定网络环境,基本实现在VLAN中计算生成树。
1.2.1 创建或删除STP
利用命令create stpd和delete stpd可以创建或删除STP。
缺省的default STP域不能手工创建和删除。
1.2.2 使能或关闭STP
交换机中STP缺省状态是关闭的。
利用命令config stpd可以使能或关闭STP。
1.2.3 使能或关闭指定STP的端口
交换机中所有端口默认都是参与STP计算的。
使用命令config stpd port可以使能或关闭指定的STP端口。
1.2.4 配置STP的参数
运行某个指定STP的STP协议后,可以根据具体的网络结构调整该STP的一些参数。
交换机中可以调整以下的STP协议参数:
Bridge Priority
Hello Time
Forward Delay
Max Age
另外每个端口上可以调整以下参数:
Path Cost
Port Priority
表1-1 配置STP参数的常用命令
1.2.5 显示STP状态
利用命令show stpd可以查看STP的状态,包括:
BridgeID
Root BridgeID
STP的各种配置的参数
利用命令show stpd port可以显示端口的STP状态,包括:
端口状态
Designated port
端口的各种配置参数
一VLAN与生成树
在缺省的CISCOSTP模式中,每个VLAN定义一个STP.
IEEE802.1Q标准是在整个交换VLAN网络中使用一个STP,但并不排除在每个VLAN中实现STP.
1VLAN与生成树的关系
>IEEE通用生成树(CST)
>CISCOPERVLAN生成树(PVST)
>带CST的CISCOPERVLAN生成树(PVST+)
CST是IEEE解决运行虚拟局域网VLAN生成树的方法.CST定义,整个第2层交换网络所有实现了的VLAN,仅使用一个生成树实例.这个生成树实例运行在整个交换局域网上.
PVST是解决在虚拟局域网上处理生成树的CISCO特有解决方案.PVST为每个虚拟局域网运行单独的生成树实例.一般情况下PVST要求在交换机之间的中继链路上运行CISCO的ISL.
PVST+是CISCO解决在虚拟局域网上处理生成树问题的另一个方案.PVST+允许CST信息传给PVST,以便与其他厂商在VLAN上运行生成树的实现方法进行操作.
2按VLAN生成树(PVST)
为每个VLAN建立一个独立的生成树实例(PVST).
生成树算法计算整个交换型网络的最佳无环路径.
PVST的优点:
>生成树拓扑结构的总体规模减少.
>改进了生成树的扩展性,并减少了收敛时间.
>提供更快的收敛恢复能力和更高的可靠性.
PVST的缺点:
>为了维护针对每个VLAN而生成的生树,交换机的利用率会更高
>为了支持各个VLAN的BPDU,需要占用更多的TRUNK链路带宽
生成树仅可运行在64个VLAN上.
3公共生成树(CST)
CST是IEEE在虚拟局域网上处理生成树的特有方法,这是一种VLAN解决方案,称为单一或者公共生成树.生成树协议运行在VLAN1即缺省的VLAN上.所有的交换机都举出同一个根网桥,并建立与该根网桥的关系.
公共生成树不能针对每个VLAN来优化根网桥的位置.
公共生成树优点:
>最小数量的BPDU通信,带宽占用少.
>交换机负载保持最小.
公共生成树的缺点如下:
>只用一个根网桥,这不能为所有的VLAN做到网桥的优化放置,导致对某些设备来说可能存在次优化路径.
>为包括交换架构中的所有端口,生成树的拓扑结构较大,这就会导致较长的收敛时间和更频繁的重新配置.
4增强型的按VLAN生成树(PVST+)
PVST+有以下特征:
>它是CISCO发展的,可以与802.1Q公共生成树(CST)互操作.
>通过ISL中继,PVST+与现存的CISCO交换机PVST协议向后兼容,同时,PVST+也通过802.1Q中继与CST连接互操作.
>如果PVST区域和CST区域之间要互操作,一定要通过PVST+区域.
二生成树配置
生成树配置涉及下面一些任务:
>选举和维护一个根网桥.
>通过配置一些生成树的参数来优化生成树.(如端口优先级端口成本)
>通过配置上行链路来减少生成树的收敛时间.
2950交换机上生成树的缺省配置:
>STP启用:缺省情况下VLAN1启用
>STP模式:PVST+
>交换机优先级:32768
>STP端口优先级:128
>STP路径成本:1000M:4100M:1910M:100
>STPVLAN端口成本:(同上)
>STP计时器:HELLO时间:2秒转发延迟:15秒最大老化时间:20秒
1启用生成树:
switch(config)#spanning-tree vlan vlan-list
步骤:
switch#c onfig t
switch(config)# spanning-tree vlan 10
switch(config)#end
switch#show spanning-tree summary/detail
summary摘要detail详细
Bridge Identifier has priority 8912,address 0006.eb06.1741 (本地交换机网桥ID)desigated root has priority 8912,address 0006.eb06.1741 (根网桥ID)
designated port is 7,path cost 0 (路径成本)
times: hold1, topology change 35, notification 2
hello 2, max age 20, forward delay 15 (根计时器)
2人为建立根网桥
在生成树网络中,最重要的事情就是决定根网桥的位置.
可以让交换机自己根据一定的原则来选择根网桥以及备份或从(secondary)根网桥,也可使用命令人为指定根网桥.
PS:不要将接入层的交换机配置为根网桥.STP根网桥通常是汇聚层或者核心层的交换机.
通过命令直接建立根网桥:
spanning-tree vlan vlan-id root primary (网桥优先级被置为24576)
步骤:
switch#c onfig terminal
switch(config)#spanning-tree vlan vlan-id root primary dianmeter net-diameter hello-time sec
为VLAN配置根网桥、网络半径以及HELLO间隔
ROOT关键字:指定这台交换机为根网桥
diameter netdianmeter:该关键字指定在末端口主机任意两点之间的网段的最大数量.net-diameter的值是2-7.这个直径应该从根网桥开始计算,根网桥是1
switch(config)#end
switch#show spanning-tree vlan vlan-id detail
让交换机返回缺省的配置,可以使用如下命令:
no spanstree vlan vlan-id root
2>修改网桥的优先级别:
多数情况下做如下配置:
spanning -tree vlan vlan-id root primary (主ROOT网桥优先级被置为24576)
spanning-tree vlan vlan-id root secondary(备份ROOT网桥优先级被置为28672)
修改网桥优先级:
spanning-tree vlan vlan-id priority bridge-priority
3确定到根网桥的路径
生成树协议依次用BPDU中这些不同域来确定根网桥的最佳路径:
>根路径成本(ROOTPATHCOST)
>发送网桥ID(BRIDGEID)
>发送端口ID(PORTID)
从端口发出BPDU时,它会被施加一个端口成本,所有端口成本的总和就是根路径成本.生成树首先查看根路径成本,以确定哪些端口应该转发,哪些端口应该阻塞.报告最低路径成本的端口被选为转发端口.
如果对多个端口来说,其中根路径成本相同,那么,生成树将查看网桥ID.报告有最低网桥ID的BPDU端口被允许进行转发,而其他所有端口被阻断.
如果路径成本和发送网桥ID都相同(如在平行链路中),生成树将查看发送端口ID.端
口ID值小的优先级高,将作为转发端口.
4修改端口成本
如果想要改变某台交换机和根网桥之间的数据通路,就要仔细计算当前的路径成本,然后,改变所希望路径的端口成本.
我们可以更改交换机端口的成本,端口成本更低的端口更容易被选为转发帧的端口.spanning-tree vlan vlan-id cost cost
no spanning-tree vlan vlan-id cost(恢复默认成本)
配置步骤:
>1config terminal 进入配置状态
>2interface interface-id 进入端口配置界面
>3spanning-tree vlan vlan-id cost cost值为某个VLAN配置端口成本
>4end
>5show spanning-tree interface interface-id detail查看配置
>6write
5修改端口优先级
在根路径成本和发送网桥ID都相同的情况下,有最低优先级的端口将为vlan转发数据帧.对应基于CLI的命令的交换机,可能的端口优先级别范围为0~63,缺省为32.基于IOS的交换机端口的优先级别范围是0~255,缺省为128.
spanning-tree vlan vlan-id port-priority priority值
no spanning-tree vlan vlan-id port-priority
1>config terminal (进入配置模式)
2>interface interface-id (进入端口配置模式)
3> spanning-tree vlan vlan-id port-priority 值
4> end
5>show spanning-tree interface interface-id detail
6>write
6修改生成树计时器
使用缺省的STP计时器配置,从一条链路失效到另一条接替,需要花费50秒.这可能使网络存取被耽误,从而引起超时,不能阻止桥接回路的产生,还会对某些协议的应用产生不良影响,会引起连接、会话或数据的丢失。
还有一种情况就是使用热备份路由选择协议(HSRP),将两台路由器连接到一台交换机上。
某些情况下,缺省的STP的计时器值对于HSRP而言过长,会引起“活动”路由器的选择的错误。
1修改HELLO时间
spanning-tree vlan vlan-id hello-time seconds
可以修改每一个VLAN的Hello间隔(HELLOTIME),它的取值范围是1~10秒
2修改转发延迟计时器
转发延迟计时器(forward delay timer)确定一个端口在转换到学习状态之前处于侦听状态的时间,以及在学习状态转换到转发状态之前处于学习状态的时间。
spanning-tree vlan vlan-id forward-time seconds
PS:转发时间过长,会导致生成树的收敛过慢
转发时间过短,可能会在拓扑改变的时候,引入暂时的路径回环。
3修改最大老化时间
最大老化时间(MAX—AGETIMER)规定了从一个具有指定端口的邻接交换机上所收到的BPDU报文的生存时间。
如果非指定端口在最大老化时间内没有收到BPDU报文,该端口将进入listening状态,并接收交换机产生配置BPDU报文。
修改命令:
spanning-tree vlan vlan-id max-age seconds
no spanning-tree vlan vlan-id max-age (恢复默认值)
7速端口的配置
通过速端口,可以大大减少处于侦听和学习状态的时间,速端口几乎立刻进入转发状态。
速端口将工作站或者服务器连接到网络的时间减至最短。
PS:确定一个端口下面接的是终端的时候,方可启用速端口设置
switch(config-if)#spanning-tree portfast
switch(config-if)#no spanning-tree portfast(关闭速端口)
查看端口的速端口状态:
show spanning-tree interface interface-id detail&nb。