由于以太网网桥采用了基于 MAC 地址实现在不同端口之间的数据转发机制,每一个端口对应的是一个以太网的网段,通过学习每个端口的 MAC
地址表的方式,网桥只转发不同端口间的通信。但由于网桥依赖运行网络中存在的MAC
地址和端口的地址对应表来进行数据的转发,若收到目的地址未知的数据包,只能利用广播的形式来寻址,其后果就是在一个环形网络中造成大量的流量即“广播风暴”,从而导致网络的瘫痪。 为了解决基于二层的“广播风暴”问题,IEEE(电机和电子工程师学会)制定了
802.1D 的生成树协议(Spanning Tree
Protocol),它在防止产生环路的基础上提供路径冗余。生成树协议(STP)是通过生成树算法(STA:Spanning Tree
Algorithm)计算出一条到根网桥的无环路路径来避免和消除网络中的环路,它是通过判断网络中存在环路的地方并阻断冗余链路来实现这个目的。通过这种方式,它确保到每个目的地都只有唯一路径,不会产生环路,从而达到管理冗余链路的目的。 为了实现对冗余链路的管理,找出存在的冗余链路,STA在网络中选举根网桥作为依据,跟踪该可用路径。若发现存在冗余路径,它将选择最佳路径来进行数据包转发,并阻断其它冗余链路。 Spanning
Tree的工作原理 Spanning Tree
的工作方式如同生成一棵的树,树的根就称为“根网桥”,每个设备会定义一个优先级,数值越小代表它成为根桥的可能性越大。参与STP的所有交换机都通过数据消息的交换来获取网络中其它交换机的信息,这些消息被称为桥接协议数据单元(BPDU)。BPDU主要内容包括:根信息
、路径开销、端口信息、记时器。 实现管理冗余链路,建立无环路生成树的首先选举一个根网桥。根网桥是所有交换机用来决定网络中是否存在环路的依据。通过网桥ID决定谁将成为根网桥,根网桥ID由两部分组成:优先级域(两字节)和MAC地址域(六字节)。以上两个部分决定了根网桥的选定结果。数值越低,就越有可能成为根网桥。如果交换机发现一个比它自己更低的根ID,就将根ID在BPDU中进行宣告。通过交换BPDU报文,交换机决定谁是根网桥。 当根网桥选举完后,每台交换机与根网桥建立关联。交换机首先判断路径开销。路径开销是根据链路速率和BPDU从根网桥到达本端口所经过的链路数量而计算出来的。如果一个端口有最低的路径开销,它将被置于转发模式。接收BPDU的所有其它端口将被置于阻断模式。
若各端口接收到BPDU的路径开销相同,交换机将根据网桥ID以决定哪个端口应该进行转发。有最低网桥ID的端口将被选为转发端口,所有其它端口将被阻断。 经过BPDU的交换,可实现根网桥交换机的选举,并计算出每台交换机到根交换机的最短距离,离根交换机最近的交换机被称为指定交换机,每台交换机的根端口被选举出来。这是一个提供从该交换机到根交换机最佳路径(通常是最低开销路径)的端口,不进行数据帧转发的端口被置于阻断状态。这些端口可继续发送和接收BPDU信息,但禁止发送或接收用户数据。 为了建立一个无环路网络,生成树使交换机的各个端口经历几种不同的状态:阻断、倾听、学习、转发、关闭倾听和学习状态都是生成树所实施的过渡状态,指挥交换机端口等待从其它交换机上获得BPDU报文。端口状态转换如下: 当生成树通过了STP状态时,采用一系列记时器来防止网络中桥接环路的发生。 快速生成树协议(Rapid
Spanning Tree Protocol,RSTP) 生成树协议IEEE
802.1d虽可在50秒内恢复连接,但已不能满足现代交换式网络和应用的需要,在
802.1w中定义的RSTP协议可解决802.1d的自恢复问题。快速生成树协议(RSTP)是从生成树算法的基础上发展而来的,通过配置消息来传递生成树信息,并通过优先级比较来进行计算。快速生成树能够完成生成树的所有功能,优异之处在于快速生成树减小了端口从阻塞到转发的延时,快速恢复网络的正常工作状态。它采用桥-桥握手机制,并不采用802.1d中根桥所指定的计时器。 快速生成树协议与生成树协议的区别不少:如端口状态迁移方式不同;配置消息的格式不同;拓朴改变消息的传播方式不同。 RSTP除了对根端口和802.1d中的指定端口进行了定义之外,还增加了两种新的作用:一是备份端口。指定端口向生成树提供的路径备份。二是替代端口。为当前根端口所提供的根桥提供了替代路径。RSTP中新定义的端口作用使替代端口可以进行快速转换,能转发根端口的故障。 为了防止环路,RSTP利用网桥之间的握手来确保通过网络分配的端口任务能够保持一致。由于这种握手机制不依赖于定时器,因此可以迅速地传送到网络各处,随着拓朴结构的改变而在很短的时间内恢复连接。802.1w仅工作在点到点的连接中,否则802.1w协议将回到802.1d模式。 新的根端口从阻塞到转发的实现:原有根端口已经知道自己不再是根端口了,进入阻塞状态。新的根端口连接的网段的指定端口处于转发状态,这个新的根端口就可以无延时地进入转发状态。 非边缘指定端口从阻塞到转发:此个端口连接着其他网桥。等待进入转发状态的指定端口向下游网桥发送一个握手请求报文,若下游的网桥响应了,则这个指定端口就可以无延时地进入转发状态。 边缘端口从阻塞到转发:边缘端口直接和终端设备相连,不再连接任何网桥的端口。网桥启动后这些端口即无延时地快速进入转发状态。 通过STP实现链路冗余管理 正确理解STP原理和配置,对于维持交换网络的正常运行有重要的影响。设计好生成树,可以使网络保持良好的性能。 通过人工设定的方法为网络指定网桥的优先级别,将其置于网络的中心位置,保证该网桥能被选举为根网桥,并配备备份根网桥是实现链路优化管理的手段之一。为更好地定制生成树,可通过调整交换机的端口ID、端口成本、网络直径等方法来实现。 快速生成树改进的只是生成树的收敛时间,没有解决在整个桥接网络只应用一个单生成树实例的不足。网络设计时最好使网络直径不超过7。 在交换上Spanning-tree的设置: Switch(config)#spanning-tree 上面的命令全局启用spanning-tree功能。 Switch
(config)#spanning-tree ethernet 2/1 path-cost 30 priority
9 上面的命令设置e2/1端口的路径消费为30,端口优先级为9。 Spanning-tree也可应用于特定的VLAN或者某一个端口上面: Switch
(config-vlan-10)#spanning-tree Switch
(config-if-2/1)#spanning-tree 查看Spanning-tree: Switch #Show span
detail Switch (config)#Show span
detail STD对实现网络冗余链路的优化管理,维持网络的稳定,快速修复交换网络故障有重要的影响。对交换网络的生成树设计,可通过人工设定参数的方法来优化管理。 STP/生成树(Spanning
Tree Protocol)
冗余带来网络环路 产生的3大问题: 1:Multiple Frame Copies/多帧复制 2:MAC
Database Instability /MAC地址数据库的不稳定 /端口漂移 3:Broadcast
Storms/广播风暴 解决方案:STP STP是链路管理协议 将特定的端口置于阻塞状态,来实现既没有环路,也可以冗余的网络. STP核心: Provides
a loop-free redundant network topoloty,by placing certain ports in the blocking
state.
STP信息是通过BPDU来传输的 桥接协议数据单元BPDU(Bridge Protocol Data
Unit) 作用: 在交换网络中由根桥RB(Root Bridge)发送,用于STP的计算和收敛;发送周期为2秒;
两种类型: 配置DPDU 是所有端口上的根网桥以周期性间隔而发出的 TCN(Topology Change
Notification) BPDU 当交换机检测到拓扑变更时所产生的(TC发送时间持续35秒,即delay time+BPDU老化时间)。
BPDU完成的任务: 选举根桥 确定冗余路径的位置 阻塞特定端口防止环路 通告网络的拓扑变更 监控生成树的状态
协议ID(0) 表示协议 802.1d 版本号(0) STP的版本,802.1D的版本是0 BPDU类型
BPDU类型(配置BPDU=0,TCN BPDU=80) 信息寿命
从根桥发出BPDU之后的秒数,每经过一个网桥都递减1,本质上是到达网桥的跳计数标记域 包括 拓扑变化(TC)位,置位了就指明该BPDU是一个拓扑变化通告
或
拓扑变化确认(TCA)位 交换机对BPDU的处理: 如果交换机从一个接口接收到优先级高的BPDU,会把该BPDU保存下来并且该接口不再往外发送BPDU; 在收敛时只有根桥产生BPDU,其余交换机只能从RP接收BPDU后才从DP发送出去;这样非根桥可能从DP或者NDP接受到BPDU; 如果交换机从DP接收到优先级低的BDPU会丢弃,并给源MAC发送自己较新的BPDU;如果从NDP收到优先级低的BPDU会只丢弃了事。 端口的不同状态: 堵塞(Block,默认20s):只监听流入的BPDU 监听(Listen,默认15s):监听和发送BPDU(根桥、根端口、指定端口等的选举在该阶段完成,如果接口没有成为DP则重新回到Block): 学习(Learning,默认15s):监听和发送BPDU,并且会在该接口上学习流入帧的MAC地址 转发:监听和发送BPDU,会在该接口上学习流入帧的MAC地址,接收和转发数据帧 禁用:
不参与STP,并且不能转发任何数据. STP定时器: Hello time(2s)
用于确定根交换机多长时间向其他的交换机广播一次配置BPDU. Forward delay(15s)
监控每个端口在学习和监听状态上停留的时间 Max Age(20s)
控制端口保存配置BPDU信息的最大时间 作用:让网络有足够的时间来获得有关拓扑的正确信息,并确定是否存在冗余链路.STP的默认最大寿命计时器为7,表示最大的网络直径可达7台设备. 所以BPDU的Forward
delay为20秒 bpdu广播2s一次,允许有3个包丢失即6s,当假设最大为7跳的时候,则一共要用20s,所以BPDU的有效时间为20s 命令: (config)#spanning-tree
vlan 2 hello-time 2 //范围1-10s spanning-tree vlan 2 forwad-time 4
//范围4-30s spanning-tree vlan 2 max-age
6 STP执行的4步判决顺序 确定根交换机 lowest root BID 计算到根交换机的最小路径开销
lowest path cost to root bridge 确定最小的发送者BID lowest sender BID
确定最小的端口ID lowest port ID
|