设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 10678|回复: 106
收起左侧

【小凡实验室】STP生成树协议——算法和过程

  [复制链接]
发表于 2013-12-5 11:34:19 | 显示全部楼层 |阅读模式
【小凡实验室】STP生成树协议——算法和过程

一、STP算法
  IEEE802.1D标准定义了STP的生成树算法。该算法依赖于BID、路径开销和端口ID参数来做出决定。
  1、BID(网桥ID):
  BID是生成树算法的第一个参数,BID决定了桥接网络的中心,称为根网桥或根交换机。
  BID参数是一个8字节域。前2个字节(10进制)称为"网桥优先级",后6个字节(16进制)是交换机的一个MAC地址。
  网桥优先级用来衡量一个网桥的优先度,范围是0-65535,默认是32768.
  思科交换机中的PVST+(每VLAN生成树)生成树协议使每个VLAN都有一个STP实例。
  比较两个BID的大小的原则:一是网桥优先级小的BID优先,二是如果网桥优先级相同,BID中的后六个字节的MAC小的则BID优先。
  2、路径开销:
  路径开销是生成树算法的第二个参数,决定到根网桥(根交换机)的路径。
  通俗说,路径开销是用来衡量网桥之间的距离的远近的,其值是两个网桥之间某条路径上所有链路开销的总和。
  路径开销与跳数无关。
  路径开销决定到根网桥或根交换机的最佳路径,最小的路径开销是到根交换机的最佳路径。
  路径开销的值的规律:带宽越大,STP开销越小。
  3、端口ID:端口ID是生成树算法的第三个参数,也决定到根交换机的路径。它由2个字节组成,包括"端口优先级"和"端口号",各占8位。
  端口优先级值从0-255,默认128;端口号包括256个。
  端口ID大小的判定与BID大小的判定相同。
  二、STP的过程
  1、STP判决和BPDU交换:
  当创建一个逻辑无环的拓扑时,STP总是通过发送BPDU的第二层帧来传递生成树协议,并执行相同的4步判决顺序:
  步骤1,确定根交换机;
  步骤2,计算到根交换机的最小路径开销;
  步骤3,确定最小的发送者BID;
  步骤4,确定最小的端口ID.
  网桥为每个端口存储一个其收到的最佳BPDU,当有其他的BPDU到达交换机的端口时,交换机会使用四步判决过程来判断此BPDU是否比该端口原来存储的BPDU更好,如果新收到的BPDU(或者本地生成的BPDU)更好,则替换原有值。
  当一个网桥第一次被激活时,其上所有端口每隔一个HELLO时间(默认2秒)发送一次BPDU;如果一个端口发现从其他网桥收到的BPDU比自己发送的好,则本地端口就停止发送BPDU;如果在MAX AGE(最大生存时间,默认20秒)内没有从邻居网桥收到更好的BPDU,本地端口则重新开始发送BPDU,即最大生存时间是最佳BPDU的超时时间。
  2、STP收敛的三个步骤:
  生成树算法收敛于一个无环拓扑的初始过程包含三个选举步骤:
  步骤1    选举一个根交换机。
  步骤2    选举根端口。
  步骤3    选举指定端口。
  在网络第一次"初始"时,所有网桥都洪泛混合的BPDU信息,网桥通过执行STP四步判决过程,形成整个网络或VLAN惟一的生成树。在网络稳定后,BPDU从根网桥流出,沿着无环支路到达网络中的每一个网段。网络发生变化时,生成树协议按照收敛三个步骤做出处理。
  (1)选举根交换机:
  根交换机是一个具有最小BID的网桥,它是惟一的,是通过交换BPDU选举得出来的。
  BPDU的格式:BPDU是网桥之间用来交换生成树信息的特殊帧,它在网桥之间传播,包括交换机和所有配置来进行桥接的路由器,BPDU不携带终端用户流量。
  BPDU包括根BID、根路径开销、发送者BID和端口ID信息。
  也就是说,交换机通过传递BPDU来发现谁是最小的BID,从而将具有最小BID的网桥做为根交换机。最初时,交换机总将自己认为是根网桥,当它发现有比自己小的BID时,就将收到的具有最小BID的交换机作为根网桥。

  (2)选举根端口:
  在根交换机选举完后,就开始选举根端口了。所谓根端口,就是按照路径开销最靠近根交换机的端口,也就是说具有最小根路径开销的端口。每一个非根交换机都必须选举一个根端口。
  (3)选举指定端口:
  通过以上两个步骤后,生成树算法还没有消除任何环路,因为还没有选举指定端口。所谓指定端口,就是连接在某个网段上的一个桥接端口,它通过该网段既向根交换机发送流量也从根交换机接收流量。桥接网络中的每个网段都必须有一个指定端口。
  指定端口也是根据最小根路径开销来决定,因此根交换机上的每个活动端口都是指定端口,因为它的每个端口都具有最小根路径开销(实际是它的根路径开销是0)。
  注意:指定端口只在中继端口(TRUNK口)起作用。接入端口在指定端口选举中不起任何作用。接入端口是用来连接到主机或者三层端口的。
  3、STP状态
  在网桥已经确定了根端口、指定端口和非指定端口后,STP就准备开始创建一个无环拓扑了。
  为创建一个无环的拓扑,STP配置根端口和指定端口转发流量,非指定端口阻塞流量。
  实际上,STP决定端口转发和阻塞看似只有这两个状态,实际上是有五种状态的。
  (1)、Disabled(为了管理目的或者因为发生故障将端口关闭);
  (2)、Blocking(在初始启用端口之后的状态。端口不能接收或者传输数据,不能把MAC地址加入地址表,只能接收BPDU(bridge protocol data unit)。如果检测到有一个桥接环,或者端口失去了它的根端口或者指定端口的状态,那么就会返回到Blocking状态);
  (3)、Listening(如果一个端口可以成为一个根端口或者指定端口,那么它就转入监听状态。此时端口不能接收或者传输数据,也不能把MAC地址加入地址表,但可以接收和发送BPDU);
  (4)、Learning(在Forward Delay计时时间到(默认15秒)后,端口进入学习状态,此时端口不能传输数据,但可以发送和接收BPDU,也可以学习MAC地址,并加入地址表);
  (5)、Forwarding(在下一次转发延时计时时间到后,端口进入转发状态,此时端口能够发送和接收数据、学习MAC地址、发送和接收BPDU)。
  在这些状态过程中,会引发网络拓扑结构发生改变。此时,发生变化的交换机会在它的根端口上每隔hello time时间就发送TCN BPDU,直到上级的指定网桥邻居确认了该TCN(拓扑结构变化通知)为止。当根网桥收到后,会发送设置了TC(topology change,拓扑改变)位的BPDU,通知整个生成树拓扑结构发生了变化。这会让所有的下级交换机把它们的Address Table Aging(地址表老化)计时器从默认值(300秒)降为Fordwarding Delay(默认为15秒),从而让不活动的MAC地址比正常情况下更快地从地址表更新掉


电 话:010-52402129
客服:2209293110
客服QQ1:105878346
客服QQ2:2209293110
QQ群:167067529
发表于 2013-12-5 12:42:03 | 显示全部楼层
沙发 2013-12-5 12:42:03 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-12-5 12:42:30 | 显示全部楼层
{:soso_e113:}
板凳 2013-12-5 12:42:30 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-12-5 12:57:24 | 显示全部楼层
地板 2013-12-5 12:57:24 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-1-16 15:01:57 | 显示全部楼层
hhhhhhhhhhhhhhhhhhhhhh
10# 2014-1-16 15:01:57 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-1-19 16:06:47 | 显示全部楼层
顶顶顶顶顶顶顶顶顶
12# 2014-1-19 16:06:47 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-1-19 16:07:29 | 显示全部楼层
顶顶顶顶顶顶顶
13# 2014-1-19 16:07:29 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-12-26 16:14 , Processed in 0.071402 second(s), 12 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表