STP协议.docx

上传人:b****5 文档编号:4640799 上传时间:2022-12-07 格式:DOCX 页数:26 大小:236.80KB
下载 相关 举报
STP协议.docx_第1页
第1页 / 共26页
STP协议.docx_第2页
第2页 / 共26页
STP协议.docx_第3页
第3页 / 共26页
STP协议.docx_第4页
第4页 / 共26页
STP协议.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

STP协议.docx

《STP协议.docx》由会员分享,可在线阅读,更多相关《STP协议.docx(26页珍藏版)》请在冰豆网上搜索。

STP协议.docx

STP协议

第3章STP协议

本章介绍:

本课程主要介绍STP(SpanningTreeProtocol)。

在以太网中为了避免单点故障进行链路冗余备份,链路的冗余备份又会导致路径环路,从而产生网络风暴。

STP协议可应用于环路网络,通过一定的算法阻断某些冗余路径,将环路网络修剪成无环路的树型网络,从而避免报文在环路网络中的增生和无限循环。

课程目标:

完成本课程的学习后,您应该能够:

⏹掌握路径环路产生的原因

⏹掌握STP协议的基本原理

⏹掌握RSTP协议的基本原理

⏹掌握MSTP协议的基本原理

3.1透明网桥概述:

3.1.1透明网桥的应用:

图3-1 透明网桥的应用

如图3-1所示,在通常的透明网桥应用当中,具有以下的特点:

拓展LAN能力:

通过透明网桥的应用,可以使原先只在小范围LAN上操作的站点能够在更大范围的LAN环境中工作。

透明网桥能够自主学习站点的地址信息,从而有效控制网络中的数据包数量。

当网桥的某个端口上收到含有某个源MAC地址的数据帧时,它就把该MAC地址和接收该数据帧的端口号保存在MAC地址表中。

MAC地址表能够指明该MAC地址与透明网桥的哪个端口相连。

当网桥收到一个数据帧时,会查找这张地址表,找到目的MAC所对应的端口。

然后分下列三种情况进行处理:

⏹如果目的端口是接收端口,则抛弃这个帧;如果不是接收端口,则从那个端口转发该帧。

⏹如果收到的数据帧不能从该表中找到对应目的地址的端口,则要从除收到该数据之外所有其他端口广播出去。

⏹另外如果网桥收到的是广播帧,也要把该帧从除接收端口以外的所有其他端口转发出去。

但问题是“透明”网桥毕竟不是路由器,它不会对报文做任何修改的,报文中不会记录到底经过了几个网桥,如果网络中存在环路,报文有可能在环路中不断循环和增生,造成网络的拥塞,因而导致了网络中“路径回环”问题的产生。

3.1.2路径回环的产生

图3-2路径回环

如图3-2所示,假定SourceAddressTable(SAT)表为空,且A发送一个帧给B。

Bridge1收到一个从A发至B的包,则把这个包广播出去,Bridge2同样不知道B的地址,收到之后也广播出去,Bridge1又收到这个包,从此循环往复直到B发送出来一个包为止。

引入STP可以实现以下两个功能:

网络环路的检测和预防、网络拓扑的自动重构。

3.1.3生成树协议的引入:

尽管透明网桥存在这个隐患,但是它的应用还是相当有诱惑力的,因为透明网桥在无回路的网络中发挥的作用是无可指摘的。

那么是不是就认为我们不能组建有回路的网络呢?

这显然是不合适的,因为回路的存在可以在拓扑结构的某条链路断开之后,仍然保证网络的连通性。

为此,我们找到了一种很好的算法,它通过阻断冗余链路将一个有回路的桥接网络修剪成一个无回路的树型拓扑结构,这样既解决了回路问题,又能在某条活动(active)的链路断开时,通过激活被阻断的冗余链路重新修剪拓扑结构以恢复网络的连通。

网络环路的检测和预防:

STP将检测到网络中存在的环路,并自动选择开销值最低的路径作为可使用的主链路,而将其他链路阻断,作为备份链路。

网络拓扑的自动重构:

在建立主备链路的网络中,当主用链路出现故障时,STP将自动启动备用,保证整个网络的可用。

3.2生成树(STP)

生成树算法的基本原理也很简单,网桥之间彼此传递一种特殊的配置消息,802.1D协议将这种配置消息称为“配置桥协议数据单元”或者“配置BPDU”。

配置消息中包含了足够的信息来保证网桥完成生成树的计算。

交换机会根据BPDU消息来完成如下的工作:

⏹在桥接网络的所有参与生成树计算的网桥中,选出一个作为树根(RootBridge);

⏹计算出其他网桥到这个根网桥的最短路径;

⏹为每一个LAN选出一个指定网桥,该网桥必须是离根网桥最近的。

指定网桥负责将这个LAN上的包转发给根桥;

⏹为每个网桥选择一个根端口,该端口给出的路径是本网桥到根网桥的最短路径;

⏹选择包含在生成树上的端口,由根端口和LAN连接其指定网桥的那些端口(指定端口)组成。

3.2.1BPDU介绍

配置消息也被称作桥协议数据单元(BPDU),它主要包括以下内容:

即桥接网络中的根桥ID,从指定网桥到根网桥的最小路径开销,指定网桥ID和指定端口ID四项内容。

网桥之间通过传递这些内容就足以能够完成生成树的计算。

为了叙述方便,我们可以用矢量形式(RootID,RootPathCost,DesignatedBridgeID,DesignatedPortID)来描述某个网桥所发出的BPDU内容。

最初,所有的网桥都发送以自己为根桥的配置消息,比如网桥B发送的配置消息为(B,0,B,PortID);网桥将接收到的配置消息和自己的配置消息进行优先级比较,保留优先级较高的配置消息,并据此完成生成树的计算。

桥接网络中,每个网桥都有一个用来标识自己的唯一的48位地址,生成树协议中,使用网桥优先级和该48位地址的组合作为网桥的ID在配置消息的数据部分中来表示这个网桥。

对每个网桥来说,这个网桥的所有端口可以使用端口优先级和端口索引值作为ID来表示,生成树协议使用这个ID在配置消息中唯一的表示网桥中的某个特定端口。

3.2.1.1BPDU报文格式

图3-3BPDU报文格式

协议及状态信息:

⏹ProtocolID:

取值0,标识stp协议,占用2个bytes

⏹VersionID:

标准指定为0,占用1个byte

⏹BPDUType:

填充0值,占用1个byte

⏹BPDUFlags:

占用1个byte,只用前2个bits,TC(topologychange)位指示拓扑结构改变,TCA(topologychangeacknowledgment)位表示收到对端交换机拓扑改变指示位而做出确认

根网桥信息:

⏹RootPriority:

占用2个bytes,标识根网桥的优先级,取值为0-65535,默认值一般为32768

⏹RootID:

占用6个bytes,作为根网桥的标识,一般采用根网桥的MAC地址作为标识

⏹RootPathCost:

路径费用,占用4个bytes,表示从该网桥到根网桥的路径费用总和

本网桥信息:

⏹BridgePriority:

占用2个bytes,表示本网桥的优先级,取值为0-65535,默认值一般为32768

⏹BridgeID:

占用6个bytes,表示本网桥的标识,一般采用MAC地址作为网桥标识

端口信息:

⏹PortID:

包括两个部分,端口优先级及端口标识,各占用1个byte;端口优先级取值为0-255,默认值为128

记时器:

⏹MessageAge:

占用2个bytes,表示根网桥发送有效BPDU报文的时间

⏹MaxAge:

占用2个bytes,表示删除根网桥配置信息等待的最大时间

⏹HelloTime:

占用2个bytes,表示BPDU报文的发送周期

⏹ForwordDelay:

占用2个bytes,表示在过滤数据库中,指示网络拓扑改变的BPDU动态条目的老化时间;同时也表示交换机端口从监听状态到学习状态/从学习状态到转发状态所经历的时延。

3.2.1.2BPDU报文格式-报文头

图3-4BPDU报文头

如图3-4所示:

这是一个从交换机发出的BPDU报文。

BPDU报文采用802.2的封装;

目的MAC采用组播地址0180:

c200:

0000,原MAC地址一般是发送BPDU报文的交换机的CPU地址。

3.2.1.3BPDU报文格式-报文体

图3-5 BPDU报文体

从上图可看出,发出该报文的网桥即为根网桥:

RootBridgeID=SendinngBridgeID

网桥采用默认优先级:

priority=0x8000

端口采用默认优先级:

0x80

该报文从端口3发出:

portid=03

根网桥的时间参数均采用默认值:

MaxAge=20s

Hellotime=2s

ForwardDelay=15s

3.2.2.STA算法

生成树算法(STA)是由DEC公司开发的,后来成了IEEE802.1d的基础。

但是,IEEE802.1d算法与DEC的算法并不是兼容的。

这里将使用IEEE802.1d算法作为标准的桥接协议。

STA的目的是创造一个“非循环”的环境。

就像现实生活中的树,所有树干的底部都有树根,树干朝上分成大树枝,大树枝再分成小树枝等等。

所以,树枝从来都不会蔓延到其他树枝,即形成一个“非循环”的环境。

几个重要概念

⏹根网桥:

为了创造一个“非循环”的环境,需要定义一个参考点,这就是根网桥。

⏹根端口:

离根网桥最近的端口为根端口。

⏹指定网桥:

在每一个网段中,离根网桥最近的网桥为指定网桥。

⏹指定端口:

与指定网桥连接的端口为指定端口。

以上概念的内涵将在后面的胶片中阐述。

STA算法功能如下:

1、STA将具有最小标示值的网桥作为根网桥,即标示值越小,优先级越高。

2、STA将在其他所有网桥上确定根端口。

网桥的根端口是指用最小合计路径代价到达根的网桥端口。

该值也叫根路径代价。

3、STA将确定指定网桥及其指定端口。

指定网桥是指在每一个LAN上能够提供最小根路径代价的网桥。

在某些情况下,两个或多个网桥具有相同的根路径代价。

STA选择具有最高优先级标示符(值最小)的网桥作为指定网桥;如果标示符也相同,那么STA选择具有最高优先级的网桥;最后,如果网桥优先级相同,那么STA将使用端口标示符作为决定的标准。

3.2.2.1选举根网桥

图3-6 选举根网桥

选举根网桥的依据:

1.先比较BridgePriority

2.再比较BridgeMAC

交换机开始选举根时,每个交换机都开始广播BPDU消息,包含有交换机自己的MAC地址和Priority。

当交换机收到别的交换机的BPDU,其优先级高于自己的时,就不再发送自己的信息,而是向其他端口转发该信息,建议其他交换机选择正确的根桥。

这样,在一定时间后,整个网络就都知道谁是根了。

比较所有参与者的桥ID,最小者为根桥。

BridgeID组成=BridgePriority(2bytes)+bridgeMAC(6Bytes)

如图3-6所示:

根桥上参与STP计算的端口将被设定为Forwarding状态。

Switch_A、Switch_B、Switch_C中,Switch_B的ID最小,所以被选为根网桥。

3.2.2.2选定根端口,与根桥建立关联

图3-7

如果一个交换机能在多个端口上收到同一个BPDU,就说明存在到根桥的冗余路径。

这时就要从这些端口中选择一个作为根端口,被选为根端口的端口将被设定为Forwarding状态。

选择的依据是分别比较:

a.到达根桥的路径开销。

b.端口所连对端网桥ID。

c.端口所连对端端口ID。

d.自己的端口ID。

其中端口ID为端口优先级(portPriority)+端口号(portnumber)

3.2.2.3选定指定桥和指定端口

选举指定桥和指定端口的依据:

⏹到达根桥的路径开销

⏹所连网桥ID

⏹LAN所连端口ID

为网络中每个LAN选定指定桥和指定端口:

如果一个LAN可以通过多个交换机到达根桥,他将选择其中的一个作为其指定桥,LAN与指定桥相连的端口就是该LAN的指定端口。

LAN的指定端口也将被设定为Forwarding状态。

选择的依据是分别比较:

a.到达根桥的路径开销。

b.所连网桥ID.

c.LAN所连端口ID.

这样网络中参与STP计算的交换机其他端口将被设定成Blocking状态。

经过STP计算可以将以前网络拓扑中的一种图状连接变成一个树状连接,确保网络中从任何一点到另一点只有一条处于活动的主链路。

3.2.2.4故障监测与树的更新

根定期发送BPDU,各DesignatedBridge都向非RootPort连接的LAN转发,以表示自己的工作状态正常。

假设在规定时间内没有转发出BPDU,则认为发生故障,开始新一轮的选举。

STP目的是通过协商一条到根网桥的无环路路径来避免和消除网络中的环路。

通过这种机制,它确保到每个目的地只有一条路径,如果某条链路失效了,根网桥知道存在冗余链路,他会启动先前关掉的这条冗余链路。

3.2.2.5STP的端口状态

状态

用途

转发(Forwarding)

发送/接受用户数据

学习(Learning)

构建STP树

监听(Listening)

确定活动(Active)拓扑

阻塞(Blocking)

只接收BPDU报文

禁用(Disable)

强制关闭

为了建立一个无环网络,生成树强迫各个端口经历几种不同的状态:

首先,端口进入监听状态,对BPDU进行监听。

它将读取这些BPDU,然后确定它的根端口和与端口相连的网桥。

如果确定某个端口需要设置成阻塞状态,那么该端口将进入阻塞状态,同时监听状态结束。

如果确定某个端口应该进入发送状态,那么这个端口将进入称

为“学习”的中间状态,之所以这么称呼,是因为端口先对源MAC地址进行检测,然后再将条目导入网桥表中。

“学习”状态结束后,发送状态立即开始。

3.2.3港湾系列交换机STP配置

3.2.3.1配置命令

STP和RSTP协议配置命令列表

命令

解释

configspanning-tree

进入STP配置模式。

STP配置节点分为RSTP节点和MSTP节点。

CST模式在RSTP节点下进行配置,命令提示符分别为:

“config-cst”;MST模式在MSTP节点下配置,命令提示符为:

”config-mst”。

spanning-tree[enable|disable]

打开或者关闭指定域上的STP功能

spanning-tree[priority]<0-61440>

配置交换机在指定域上的STP优先级,桥优先级。

必须为4096的整数倍,缺省值:

32768缺省为32768,优先级数值越低,越有可能成为网络中的根桥,优先级值为0代表了最高的优先级。

spanning-tree[maximum-age]<6-40>

配置交换机在指定域上的BPDU报文老化的最长时间间隔,单位为秒,缺省为20,收到超过这个时间的BPDU报文,就直接丢弃,

maximum-age的时间必须大于等于2*(hello-time+1),小于等于2*(forward-delay–1)

spanning-tree[hello-time]<1-10>

配置当本交换机被选为根桥时发送BPDU的时间间隔,单位为秒,缺省为2,

hello-time必须小于等于forward-delay–2

spanning-tree[forward-delay]<4-30>

设置当本交换机被选为根桥时端口状态切换的时间间隔,单位为秒,缺省为15,

forward-delay的时间必须大于等于hello-time+2

nospanning-tree[forward-delay|hello-time|maximum-age|priority]

恢复以上参数的缺省配置

spanning-treeport[path-cost][auto|<1-200000000>]

设置当本交换机的指定端口在指定域上的端口路径开销,单位为秒,HammerOS根据端口的当前速度设置不同的缺省值:

10Mbps端口缺省值为2000000

100Mbps端口缺省值为200000

1000Mbps端口缺省值为20000

spanning-treetrunk[path-cost][auto|<1-200000000>]

设置当本交换机的指定端口在指定域上的端口路径开销,单位为秒,HammerOS根据端口的当前速度设置不同的缺省值:

10Mbps端口缺省值为2000000

100Mbps端口缺省值为200000

1000Mbps端口缺省值为20000

spanning-treeport[priority]<0-240>

配置参与指定域内STP计算的端口的优先级,缺省为128,优先级数值越低,端口越容易成为根端口,优先级值为0代表了最高的优先级

spanning-treetrunk[priority]<0-240>

配置参与指定域内STP计算的端口的优先级,缺省为128,优先级数值越低,端口越容易成为根端口,优先级值为0代表了最高的优先级

spanning-treeport[none-stp][yes|no]

配置交换机的指定端口是否参与指定域的STP协议计算,缺省为参与计算

spanning-treetrunk[none-stp][yes|no]

配置交换机的指定端口是否参与指定域的STP协议计算,缺省为参与计算

spanning-treeport[p2p][yes|no|auto]

配置指定端口是否作为point_to_point端口,此设置只在运行RSTP协议时生效。

point_to_point端口是指和另一个进行协议计算的设备的端口直接相连的端口,计算确定point_to_point端口的状态比缺省配置的端口速度更快

spanning-treetrunk[p2p][yes|no|auto]

配置指定端口是否作为point_to_point端口,此设置只在运行RSTP协议时生效。

point_to_point端口是指和另一个进行协议计算的设备的端口直接相连的端口,计算确定point_to_point端口的状态比缺省配置的端口速度更快

spanning-treeport[edge][yes|no]

配置指定端口是否作为edge端口,此设置只在运行RSTP协议时生效,edge端口是指和通讯终端相连而不是和交换机相连的端口,edge端口的状态一直为Forwarding

spanning-treetrunk[edge][yes|no]

配置指定的trunk端口是否作为edge端口,此设置只在运行RSTP协议时生效,edge端口是指和通讯终端相连而不是和交换机相连的端口,edge端口的状态一直为Forwarding

nospanning-treeport[edge|non-stp|p2p|path-cost|priority]

恢复以上参数的缺省配置,缺省为参与计算

nospanning-treetrunk[path-cost|priority|non-stp|p2p|edge]

恢复以上参数的缺省配置,缺省为参与计算

spanning-treemode[cst|mst]

配置STP的运行模式,cst为普通生成树协议;mst为多生成树协议,交换机可以有多个SpanningTree,每个SpanningTree可以包含多个VLAN。

showspanning-tree

查看指定域的STP配置和状态信息

showspanning-treeport

查看指定域上指定端口的STP配置和状态信息

showspanning-treetrunk

查看指定域上指定Trunk的STP配置和状态信息

showdebugspanning-tree

显示STP调试信息,在MSTP节点,配置节点,RSTP节点下均可执行。

3.2.3.2配置案例

在下面的情况下需要管理员打开STP功能:

⏹可能存在环路的复杂网络

⏹设置了备份冗余链路的网络

在CST模式下,只需要配置domain0的STP。

在网络中,一般将骨干交换机的优先级数值设置较低,使其成为网络中的root交换机;同样,一般将主链路的端口优先级数值设置低于冗余备份链路的端口上的优先级数值,使系统能够关闭冗余链路而主链路保持通讯。

交换机上和用户主机直接相连的端口一般设置为edge端口,使这些端口的状态能够快速的设定。

假设在一个网络中VLANdefault(vid=1)中可能存在环路,则需要打开domain1的STP功能,并做如下的设置。

设置发送RSTP的BPDU报文,交换机的优先级为4096,做为根桥时发送BPDU报文时间间隔为6秒,做为根桥时端口状态切换时间间隔为16秒,BPDU报文老化的最长时间为30秒,配置命令如下:

Harbour(config-cst)#spanning-treeenable

Harbour(config-cst)#spanning-treehello-time6

Harbour(config-cst)#spanning-treeforward-delay16

Harbour(config-cst)#spanning-treemaximum-age30

Harbour(config-cst)#spanning-treepriority4096

default中的端口1/3和用户的主机而不是交换机相连,可以配置此端口为edge端口,端口1/4和另一运行协议的交换机相连,中间没有其它设备,可以配置此端口为p2p端口:

Harbour(config-cst)#spanning-treeport1/3edgeyes

Harbour(config-cst)#spanning-treeport1/4p2pyes

3.3快速生成树协议(RSTP)

3.3.1快速生成树协议(RSTP)产生的背景

在前面我们介绍了有关生成树协议的一些特性。

在实际的应用中,生成树协议也有很多美中不足的地方。

最主要的缺点是端口从阻塞状态到转发状态需要两倍的forwarddelay时延,导致网络的连通性至少要几十秒的时间之后才能恢复。

如果网络中的拓朴结构变化频繁,网络会频繁的失去连通性,这样用户就会无法忍受。

为了尽量避免网络失去连通性,我们的交换机应用了一种“快速生成树”算法。

3.3.2快速生成树协议(RSTP)改进的要点:

快速生成树能够完成生成树的所有功能,不同之处就在于:

快速生成树在不会造成临时环路的前提下,减小了端口从阻塞到转发的时延,尽可能快的恢复网络连通性,提供更好的用户服务。

快速生成树从三个方面实现“快速”功能:

1、一个新的根端口从阻塞到转发:

如果旧的根端口已经知道自己不再是根端口了,并进入阻塞状态,且此时新的根端口连接的网段的指定端口正处于转发状态,那么这个新的根端口就可以无延时的进入转发状态。

2、一个非边缘指定端口从阻塞到转发:

“非边缘”的意思是这个端口连接着其他的网桥,而不是只连接到终端设备。

等待进入转发状态的指定端口向下游发送一个握手请求报文,如果下游的网桥响应了一个赞同报文,则这个指定端口就可以无延时的进入转发状态。

握手请求报文是在该端口发送的下一个配置消息中,用一个握手标志位来标识;握手响应报文也是携带在端口发送的下一个配置消息中,用一个赞同标志位来标识。

不过这种快速状态迁移需要一个前提条件:

发起握手的端口与响应握手的端口之间是一条点对点链路!

如果这个条件不满足,握手将不会被响应。

那么这个指定端口只好等待两倍的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1