Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1296041
  • 博文数量: 254
  • 博客积分: 1586
  • 博客等级: 上尉
  • 技术积分: 2295
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-15 16:38
个人简介

linux学习中

文章分类

全部博文(254)

文章存档

2016年(6)

2015年(2)

2014年(74)

2013年(93)

2012年(12)

2011年(2)

2010年(51)

2009年(14)

分类: LINUX

2010-08-20 13:39:59


 

一、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地址比正常情况下更快地从地址表更新掉。


阅读(1811) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-24 09:17:35

Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com