stp协议
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用STP ( Spanning Tree Protocol) 协议能使网络内部避免因形成环路而产生的广播风暴,
使网络能根据环境变化而作出自适应的调整, 以避免连接失败等故障, 从而增强网络的健
壮性. 在快速以太网交换机的软件功能模块中, STP协议模块是一个不可或缺的重要组成部分. STP算法是在桥接器(依据IEEE Std 802. 1D, 泛指工作在MAC 层的网络设备, 如交换机等) 连接的网络设备间配置一个动态拓扑结构. 数据包将只能通过桥接器设定的端口, 其他端口将被阻塞掉. 在任何时候, 桥接器都能使这些处于传输状态的端口在局域网内部保持最有效的连接. STP算法的内容是在局域网内部配置一个动态拓扑图, 即生成一个单一的生成树的拓扑结构, 该结构使局域网内部不同的子网间至多只保持一条通信链路, 从而避免数据环路的产生. 同时, STP算法还要定时监测拓扑结构, 如果原有的通信链路因意外中断, 该算法将自动重新配置生成树的拓扑结构, 将阻塞的链路中的一条激活, 维持子网间通信的畅通. 整个STP算法的内容包括: 配置动态拓扑结构、发布拓扑信息、重新配置拓扑结构、改变端口状态、发布拓扑改变的通知等.
2. 2STP算法及功能的实现
STP功能实现的具体步骤如下: A. 建立并维护一个网络动态拓扑结构. STP根据LAN 内各个网络设备的连接状况建立一个网络动态拓扑结构. 该结构建立后, 数据包只通过指定桥接器的指定端口进行传输, 其他的端口将被自动阻塞掉. 被阻塞的端口将不接收和转发一般的数据包, 但仍然可以接受和转发BPDU包, 属于拓扑结构之内. 建立一个稳定的拓扑结构将由个桥接器的标识符、每个桥接器各个端口所对应通路的路径值、每个桥接
器各个端口的标识符等因素决定. 在每一个桥接器启动后, 便向与其相连的网段发BPDU 包. 并通过相连网段接收其他桥接器所发的BPDU包. 在BPDU包中包含了本桥接器的信息和与其他桥接器交互得来的信息. B. 发布拓扑信息并配置STP. 各个桥接器将通过互发BPDU包交换拓扑信息来实现上述算法. 发送和接收BPDU包遵从以下机制. a. 启动时, 各个桥接器认自己是根桥接器, 并定时向与其相连的所有LAN 发拓扑信息; b. 桥接器收到BPDU包后, 将其与自己的配置信息比较, 然后保存并发布它认为配置等级高的拓扑信息. 通过以上拓扑信息的交互, STP可以迅速了解并确定整个拓扑结构. 在所有的桥接器都接受了根桥接器的标识符并建立了其他相关参数之后, STP将配置每一个桥接器, 使不同网段间的数据流只通过与网段对应的指定端口和相应桥接器的根端口, 所有其他端口都将被阻塞掉. C. STP的重新配置. 一旦整个网络的拓扑结构稳定下来, 所有的桥接器将监听由根桥接器定时发来的监听BPDU(Hello BPDU) 包. 如果一个桥接器在一段时间内没有收到Hello BPDU包该桥接器将认为根桥接器不存在或它与根桥接器的连接已中断. 这时它就会发送一个SNMP 的trap 包通知网络管理员, 并发出一个通知拓扑改变的BPDU包通知其他桥接器该变化信息. 然后各桥接器就会从其缓存内查询原拓扑结构的状态信息. 如果发现取不到或状态信息已更改, 则所有桥接器将按照上述配置过程重新配置STP的状态信息.
生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。
生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。
“生成树协议”是一个广义的概念,并不是特指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),有它自身的诸多缺陷,主要表现在三个方面。
第一点缺陷:由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大。
第二点缺陷:在网络结构对称的情况下,单生成树也没什么大碍。
但是,在网络结构不对称的时候,单生成树就会影响网络的连通性。
网管网bitsCN_com
第三点缺陷:当链路被阻塞后将不承载任何流量,造成了带宽的极大浪费,这在环行城域网的情况下比较明显。
这些缺陷都是单生成树SST无法克服的,于是支持VLAN的多生成树协议出现了。
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
* 端口的各种配置参数
在缺省的CISCO STP模式中,每个VLAN定义一个STP.
IEEE802.1Q标准是在整个交换VLAN网络中使用一个STP,但并不排除在每个VLAN中实现STP.
1VLAN与生成树的关系
>IEEE通用生成树(CST)
>CISCO PER VLAN生成树(PVST)
>带CST的CISCO PER VLAN生成树(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
>STP VLAN端口成本:(同上)
>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中这些不同域来确定根网桥的最佳路径:
>根路径成本(ROOT PATH COST)
>发送网桥ID(BRIDGE ID)
>发送端口ID(PORT ID)
从端口发出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间隔(HELLO TIME),它的取值范围是1~10秒
2修改转发延迟计时器
转发延迟计时器(forward delay timer)确定一个端口在转换到学习状态之前处于侦听状态的时间,以及在学习状态转换到转发状态之前处于学习状态的时间。
spanning-tree vlan vlan-id forward-time seconds
PS:转发时间过长,会导致生成树的收敛过慢
转发时间过短,可能会在拓扑改变的时候,引入暂时的路径回环。
3修改最大老化时间
最大老化时间(MAX—AGE TIMER)规定了从一个具有指定端口的邻接交换机上所收到的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 (最后一行)
8上行速链路的配置
当检测到转发链路发生失效时,上行链路可使交换机上一个阻断的端口几乎立刻马上开始进行转发。
1>上行速链路在企业网中的应用
交换机可以分为3级:
>核心层交换机
>汇聚层交换机
>接入层交换机
汇聚层和接入层的交换机上各自都至少有一条冗作链路被STP阻塞,以避免环路。
使用STP上行速链路,可以在链路或者交换机失效或者STP重新配置时,加速新的根端口的选择过程。
被阻塞端口会立即转换到转发状态。
上行速链路还可以通过减少参数最大更新速率(max-update-rate,IOS)来限制突发的组播通信。
这些参数的缺省值是150包/秒。
在网络边缘的接入层上,上行速链路是一项最有用的功能,但它不适合用在骨干设备上。
上行速链路能在直连链路失效时实现快速收敛,并能通过上行链路组(uplink group),在多个冗余链路之间实现负载平衡。
上行链路组是一组接口(属于各个VLAN)
上行链路组由一个根端口(处于转发状态)和一组阻塞状态的端口组成。
上行链路的配置:
要在配置了网桥优先级的VLAN上启动上行速链路,必须首先将VLAN上的交换机优先级恢复到缺省值。
使用:
no spanning-tree vlan vlan-id priority
要配置上行速链路,需要使用命令:
spanning-tree uplinkfast [ max-uplink-rate pkts-per-second]
pkts-per-second的取值范围是每秒0到32000个数据包。
缺省值是150,通常这个值就足够了。
要检查上行速链路的配置,可以使用如下命令:
show spanning-tree summary no spanning-tree uplinkfast(关闭)。