STP 生成树原理
【STP的介绍】
STP
的全称是
spanning-tree protocol
。
STP
协议是一个二层的链路管理协议,它在提供链路冗余的同时防止网络产生环路。
STP
协议
(Spanning tree protocol)
的本质就是实现在交换网络中链路的备份和负载的分担
.STP
是生成树协议
,
主要功能是从拓扑中清除第
2
层环路。
【BPUD与生成树原理分析】
一。
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“。 浩哥这话真是经典。