天天看点

【原理总结】STP生成树机制

STP 生成树原理

STP的全称是spanning-tree protocol。STP协议是一个二层的链路管理协议,它在提供链路冗余的同时防止网络产生环路。STP协议(Spanning tree protocol)的本质就是实现在交换网络中链路的备份和负载的分担.STP是生成树协议,主要功能是从拓扑中清除第2层环路。

一。BPDU里有什么?

二。每个字段做什么用?

协议ID和版本号:目前都是0,表示的是这是个STP协议。

BPDU类型:表示的是配置BPDU还是TCN的BPDU。

标志域:第一位和最后一位有用到,用来表示这是一个拓扑变更帧,还是拓扑变更确认帧。

根网桥ID:

路径成本:4个字节,计算到根桥的路径成本。

桥ID:8个字节。由2个字节优先级和6个字节MAC地址构成。2个字节里前4bits表示优先级,后12bits表示扩展位(vlan数)。默认优先级是32768,最大是65535。

端口ID:由优先级加端口出厂编号构成,优先级可以修改,但是一般不推荐修改。

消息老化时间:

消息寿命:消息最多存活时间。

hello时间:默认是两秒,可以修改。

转发延迟:默认是15秒,可以修改。

实例图分析:

实验环境:在宿舍用wireshark抓的包。

先看1的部分:看到目的MAC地址是01:80:c2:00:00:00,这是个组播地址。

再看2的STP部分:

协议标识和版本都是0.

类型:是配置BPDU。

根标识:这里优先级是0。(不是很清楚,或许是被改过了)

路径开销是:220020 (这个是累加的)

桥ID:优先级32768。

端口标识:0x800e

消息老化时间:3

hello 时间是2s。

转发延迟是15s。

三。BPDU里的字段怎么用? (生成树的原理)

浩哥说:“我们只看BPDU”。

现在就看看怎么用BPDU来解释STP原理。

首先看几个术语:

根桥:具有最小桥ID的交换机。

根路径开销:一台交换机的根路径开销是根端口的路径开销与数据包经过的所有交换机的根路径开销之和。根桥的根路径开销是零。 

根端口:每台交换机都有一个根端口,这个端口到根桥的路径开销最低。一旦多个端口具有相同的到根桥的路径开销时,那么具有最低的端口ID的才会成为根端口。

指定端口:为每个交换LAN网段选定的转发端口。

现在正式开始:

用一个拓扑图来说明:(这是NA时聪哥引以为豪的拓扑)

假设:他们的优先级默认都一样,都是32768.

带宽都一样,是100M的。

1.根桥的选举:

在交换机开机后,每个接口都会发送出BPDU信息,将自己的桥ID填入根网桥ID字段,然后进行协商。发现别人的桥ID比自己大,就把根网桥换成别人的,如此迭代到根网桥选出为止。这里协商后根网桥为:sw1。因为他的mac地址最小。(二层取小,三层取大原则)。

总结:一个VLAN里只有一个根网桥。

2.根端口的选举:

       根网桥选举后,只有根网桥会发送BPDU信息,其它交换机不会发送,但是会转发BPDU信息。首先从接受到的BPDU中查看cost of path字段,将自己到链路的开销加上里面的BPDU的值,形成新的cost of path值传出去。例如:sw2和sw3,sw2从1口看到BPDU中cost of

path的值是0,因为是根桥发来的,由于自己知道自己的接口是100M的,所以将19加上0等于19,填入那个字段。同理sw3的1口也一样。这时候sw2和sw3分别各从1口收到的BPDU的开销值都是19.现在来分析sw2上2口的链路开销值。2口的cost of path的值为19加上sw3的19,即是38.同理分析sw2和sw3的其它接口,所以sw2和sw3选择1口作为根端口。

如果开销值一样,就比较发送BPDU的桥ID。例如:sw4的端口1和2,由于到根网桥的链路开销一样,所以现在比较发送BPDU的桥ID,从1口接受到发送的桥ID比较小,所以1是根端口。

如果开销值和发送BPDU的桥ID都一样,那就比较发送BPDU端口ID字段。例如sw5中1和2端口,由于BPDU是sw4发送过来的,所以看sw4的端口号,3比4小,所以和3相连的sw5端口2是根端口(注意这里不是端口1,因为要看发送BPDU的端口号)。

       总结:一个交换机只有一个根端口。

3.指定端口的选举。

1)根桥上的端口都是指定端口。(根桥要向外发BPDU和数据,所以一定端口一定都是指定端口)

2)根端口对应的都是指定端口。

3)其他的选择跟选根端口的原则基本一样。但是第二步,开销值一样时,选择桥ID的时候不一样。

这里的桥ID是本交换机的桥ID。其实指的也是发送BPDU的桥ID。

例如:sw2和sw3的2端口,因为选择的指定端口是用来转发BPDU的,所以比较后,sw2的桥ID比较低,成为指定端口。

总结:一个网段上,只有一个指定端口。

4.非指定端口。

除了上述说的,剩下的端口就是非指定端口,也就是要被阻塞掉的端口。

STP防止环路的机制是将某些端口阻塞掉,。选根端口,就是选路径,选指定端口就是决定要在网段上要将两个口的哪个口给阻塞掉,从而达到目的。

关于STP的目的是防环路还是为了冗余的理解:

STP是为了更好地冗余。两个方面来理解:

1)环路产生的原因的是冗余。

2)后面发展RSTP,MSTP都不仅仅是为了防环路,如果是的话,802.1D就可以了。引用第一段的话,STP协议的本质就是实现在交换网络中链路的备份和负载的分担,也就是为了更好的冗余。

友情提示:

1.根据发送的BPDU来判断,只有根网桥才能发送BPDU。

2.理解根端口和指定端口的区别,根端口是用来接受BPDU信息,而指定端口是用来转发BPDU等信息的,一个是接受方,一个是发送方,所以当链路开销一样时,在选择指定端口和根端口时候是相反的。

最后啰唆一下,“我们只看BPDU“。 浩哥这话真是经典。

二〇〇九年八月六日

wzhj132

本文转自wzhj132 51CTO博客,原文链接:http://blog.51cto.com/wzhj132/188703

继续阅读