BPDU(桥接协议数据单元)。各个交换机之间进行信息交流的时候就是靠这个数据包的。
在STP中,有两种类型的BPDU----配置BPDU和TCN BPDU
配置BPDU:包含的是整个生成树的相关配置参数:比如根交换机ID,发送BPDU的
的交换机的ID,端口ID,端口开销,路径开销,hello时钟,maxage时钟,forward
delay 时钟等等。并且这种类型的BPDU,只有根交换机可以产生,别的交换机只有
接受和转发的份。
另外一个就是TCN BPDU:它是在网络拓扑接口发生变化的时候,由监测到网络拓
扑改变的那个交换机生成并发布的。并且,这种类型的包产生后,想方设法的得传
输到根交换机。当往上传输的时候,如果上面的那个交换机不给下面的这个交换机
一个TCN BPDU ACK,那么这个交换机就一直会往上面连接的那个交换机发送这个
TCN BPDU。等这个数据包到达了根交换机以后,根交换机就会产生一个配BPDU。
然后再分发下去。这样下面的交换机就接收并接受这个信息。
值得注意的是:在所有的交换机刚刚启动的时候,每个交换机都是把自己看做根交
换机,所以就往其他到交换机分发配置BPDU,别的机器接收到后,肯定会和自己的
已经知道的信息进行比较,然后确定到底选择那个为根交换机,如果真的是这个交
换机胜利了,那么网络拓扑接口就产生变化了!
详细介绍下BPDU中的各个参数的意义:
协议ID: 总是为0;
版本:STP的版本(802.1D版本是0);
消息类型:BPDU类型(配置BPDU=0 ;TCN BPDU=80 )
标志:LSB(least significant bit ,最低有效位)=TC标志;MSB(most significant bit,最高有效
位)=TCA标志。
根ID:根网桥的网桥ID;
路径开销:到达根网桥的STP开销;
网桥ID:发送该BPDU的交换机的 ID;
端口ID:发送该BPDU的端口的ID;
消息寿命:从根网桥发出BPDU之后的秒数,每经过一个网桥都递减1,所以他本质
上是到根网桥的跳数
Hello时间:根网桥连续发送的BPDU之间的时间间隔;(默认的2S,可以配置为1----
10之间的某个数值---消息寿命)
最大寿命:网桥在将根网桥看做不可用之前保留根网桥ID的最大时间;(默认情况
下是20,可以配置为6---40之间的某个数值)
转发延迟:网桥在监听和学习状态所停留的时间间隔;(默认情况下15S,可以配置
为4---30S之间的某个数值)
最大寿命时间:在网络拓扑发生变化的时候,下面的非根交换机得接受来自根交换
机的BPDU啊。等接受了这些更改后的信息后,并不能立马把刚认识的这个根交换机
拿来使用。而是在这样的一段时间后,才开始使用。可以说,这个最大寿命时间可
以看做是生成树的收敛时间。 因为经过这些时间所有的以前的非根交换机的都开始
使用现在刚刚认识的这个。
转发延迟时间:就是说端口经过监听和学习状态所需要的总共的时间。当拓扑结构
改变后,交换机会根据收到的配置BPDU把交换机的MAC表的生存时间设定为“转
发时间”。因为这样的话,等新的生成树重新收敛后,这些接口就可以立马转入到
转发状态,这个时候MAC是空的了并且可以立马学习新的MAC表了。显然这样有利
于网络的迅速运行。 并且,一般情况下都是最大寿命时间大于转发延迟时间的,这
样的话,也就是说生成树还没完全收敛呢,交换机的MAC表早就是空的了,可以立
马进入工作状态。 想想看,如果我们人为的把最大寿命时间更改成比转发延迟时间
小的话,那么肯定会影响到生成树的收敛速度。
Hello时间:这个时间很简单,就是根网桥发送BPDU的时间间隔!这个默认的值是2
秒。试想,如果我们也改动这个值的话,肯定也会影响到整个生成树的收敛。比如
说,我们把这个时间改到尽量的最大---10秒!!!也就是说,这个时候啊,根交换
机发送新的网络拓扑信息的时间没那么频繁了。如果在一个BPDU刚发出去,这个网
络拓扑就变化了,那么要是按照这个值来发送配置BPDU的话,肯定会比以前2秒的
时候慢了啊。在一定程度上影响到了整个网络的性能。(不知道在STP中是不是存在
触发式的更新。如果是那样的话,那么我们想通过改大这个时间来影响收敛时间就
行不通了。)当然了,我们把这个值改大呢,还有一个好处:网络中就会少些无谓
的流量,减少占用的带宽。但是我们在上面也分析了,如果STP的根交换机不支持触
发式更新的话,也有一定的负面影响!有利必有弊啊!
消息寿命:看到了这个参数了吧,如果这个东西也是可以我们认为修改的,好家
伙,那就热闹了,想让你的BPDU早早的失效真的是很简单啊!!呵呵、、很可惜,
我看了下,没找到配置这个参数的命令。