STP (spanning tree) 原理详解

1. 冗余网桥连接。

用网桥(或交换机,后代称二层设备)连接两个(这里简化,只讨论 两个。多个等同)网段,可分割碰撞,提高媒介使用率。同时,我们 希望用两个或更多的网桥连接两个网段,以做到当某个网桥发生故障 时,网络连接不致中断,那就用下图的方法:

/


主机A属于Segment1,主机B属于Segment2, 两个Segment之间用两个 网桥sw a和sw b连接。

2. 冗余网桥带来的问题。

如果sw a和swb都工作,那就会出现这样的问题了。 假设所有设备的ARP表都是空的。

1) A向B发数据,发出一个ARP请求。

2) swa的Port1收到了这个ARP请求,一看ARP列表,是空的, 于是记录下A在Segment1,并将该数据包转发到Segment2上。

3) 假设sw b稍慢些收到了A的ARP请求,一看ARP列表,也是 空的,于是记录下A在Segment1,并将该数据包转发到Segment2上。

4) 被sw a转发到Segment2上的数据包被sw b的Port2看到了, 由于数据包上的源MAC是A的,又是在Segment2上被发现的,所以 对照旧的ARP列表(上面写的A在Segment1上),sw b认为, A已经被转移到了Segment2上,于是更新ARP表,标记A在Segment2 上,并将该数据包转发到Port1,也就是Segment1上。

5) 稍晚一些,在第3步被sw b转发到Segment2上的数据包被sw A 的Port2收到了,它也做了如第4步SW B所做的判断, 于是,SW A也将A的MAC记录到Segment2上,并将数据包向Port1 的Segment1上转发。

6) 好,数据包到了Segment1,又做相同运动,回到Segment2, 于是两个网桥什么也不做,就只转发这个包,并不断地更新自己的 ARP表,网络瘫痪。


3. 解决方法。


冗余网桥要做到冗余备份,看样子简单的乘二是不行的了。刚才广播风暴的形成,主要原因是网桥的ARP更新机制,但这是网桥的根本,
是不能改的,所以,我们希望两个网桥中,只有一个是工作的(Active),而备份的网桥不参与数据包转发(Forwarding),就可以避免循环了。这就有了Spanning Tree的引入


4. Spanning Tree是数学概念,指任意两点有且只有一条路径连接。就好象树,从根,到干,到枝,到叶,任意两片树叶见只有一条路。
那么在Spanning Tree Protocol中,首先引入了根(Root)这个概念,和树根一样,它是整个网络拓扑(二层拓扑)的起点。

5. Spanning Tree的构想。
如果把图一中的Bridge2能自动定成热备份,不参与数据包转发,但有监视Bridge1的工作状况,当Bridge1故障时,能自动代替它的工作,那就能起到我们最初的目的了
Spanning Tree的工作原理

7. 网络拓扑如下:


/

用B1, B2连接Seg1和Seg3, 用B3, B4连接Seg1和Seg2,用B5, B6连接Seg3和Seg4. 每个B的左边端口叫Port1, 右边的叫Port2。


8. 设计
通常,管理员把最强壮的网桥设计为根,并放置在网络中央,就如B1。次强壮的做为根的备份,与根平行,就如B2。需要备份的Segment连接,就用两个或更多网桥连接,那么其中一个将成为Designated Bridge,也就是工作网桥,而其他的就不转发数据包

9. 根的选举。
Spanning Tree根的选举,是网络最开始工作是进行的。通常,管理员将设计的根网桥的Priority升高,使它 很自然地成为根。网桥开始选举根时,每个网桥都开始广播BPDU(Bridge Protocol Data Unit),上面有网桥自己的MAC地址和Priority。当网桥收到别的网桥的BPDU,其优先级高于自己的时,就不再发送自己的信息,而是向对面(其他端口)转发该信息。这样,在一定时间后,整个网络就知道谁是跟了。(图中就是B1)。

10. Designated Bridge的选举。 选出根后,根开始发新的BPDU,上面包含着每个端口的Cost。根的每个端口的Cost都是0,其他网桥的端口Cost都要高与 0。每个网桥收到根发出的BPDU后,就知道根在自己的哪个 方向了。比如,B3知道根在自己的右边,于是,面向根的端口叫Root Port,BPDU不会向Root Port转发的,只向其他方向转发。假如B3的Port1 (左边端口)的Cost是20,而B4的Port1 Cost是30,那B3向Segment2转发的BPDU的cost就是自己右边Root Port收到的Cost (0)加上自己左边端口 的Cost(20),同时,B4向Segment2转发的Cost是0+30=30。不比不知道,一比吓一跳,B4的Por1收到B3的Cost信息后, 就将Port1处在Block状态,不再转发数据包。同样,B6的 Cost也比B5高,那么B5将成为Designated Bridge,而B6 处于休息状态。B2就更别说了,Port1和Port2都是Root Port, 所以它把两端口都Block了,
并且也知道自己是备份根。 好,一段时间后,网络上就选举出了连接各网段的Designated Bridge......Spanning Tree生成了。


11. 故障监测与数的更新。

以B6为例,Port2虽然Block了,但一直监测网络状态。根定期 发送BPDU,各Designated Bridge都向非Root Port连接的Segment 转发,以表示自己的工作状态正常。假设B5发生故障,在规定 时间内(好象是两秒),B6的Port2没有收到B5发出的BPDU,它就 认为B5发生故障,并通过Root Port发送数据包(这是{wy}从Root Port发送的网桥信息包。)各网桥收到信息包后,都会从Root Port转发(假如B6与Root间还存在其他网桥的话),直到发送到 Root。Root收到该信息后,立即发送BPDU,让所以网桥都停止工作,(因为此时网络拓扑出错),然后再发Cost,让网桥从新计算各 端口的Cost,生成新树。BPDU传到Segment3,B5已坏,不能转发 Cost,B6向Segment4转发Cost=30,没人有意见,于是,B6千年的 媳妇熬成了婆,她是终于翻身做了主人了呀,不容易。网络恢复 正常。同样,如果B2到时间没有听见Root发话,就知道他老人家 休息了,会发BPDU,一声号令,群雄揭竿而起,逐鹿中原,从新 推举Root,重复第9步。


12. 网桥端口的5种状态:
1) Disabled。被管理员禁用。
2) Block。休息,不参与数据包转发。
3) Listening。监听。
4) Learning。学习ARP信息,准备向工作状态转变。
5) Forwarding。正常工作,转发数据包。
13. 整个Spanning Tree的定型时间大越为12秒

13.STP的端口角色有4种:
1).禁用端口
2).可替代端口
3).指定端口
4).根端口
/


/文章来自:
/引用通告: |
/Tags:
/相关日志:

昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭
郑重声明:资讯 【STP (spanning tree) 原理详解】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——