标签:switch stp
【版权声明:原创翻译文章,翻译水平有限,错误在所难免,翻译作者对文章中存在的错误或遗漏所造成后果不承担任何责任,请谨慎转载。转载请保留本声明及出处:blog.csdn.net/shallnet
,下载该书英文版】
在此之前,本章都认为所有BPDU为同一种BPDU,事实上,BPDU有两种类型:
配置BPDU是由根网桥发出,通过活动路径向下转发,最后再回到根网桥。拓扑改变通知BPDU向上(朝根网桥方向)转发,以向根网桥报告活动拓扑发生改变。在后面的部分中将详细讨论两种BPDU。
配置BPDU
到目前为止讨论的所有BPDU(和在正常的网络上绝大多数BPDU)都是配置BPDU。图6-15为BPDU的协议格式。
Figure 6-15. Configuration BPDU Decode
注:
为了简单,这章到目前为止简单的使用术语BPDU而忽略了有两种BPDU的事实。之前所有的这些BPDU都是配置BPDU。第二种BPDU,即拓扑改变通知BPDU,将在下一节讨论。
图6-15是使用来自Network Associates(其前身为Network General)的NetXRay软件捕获并解码的数据包。虽然新的版本已经在销售了,但图6-15使用的版本对生成树协议更加易读的易解码。图片上部分可以观察到以太网802.3头部,源地址为发送BPDU的端口MAC地址,Catalyst交换机上面每个端口发送的BPDU源MAC地址都使用一个唯一的MAC地址。注意这个MAC地址和创建BID的MAC地址的区别,Catalyst交换机每个端口上的源MAC地址都是不一样的,BID是全局的,是一个box-wide值(在某个vlan内部来说),是由supervisor
card和backplane上的MAC地址构成的。源地址用于构建携带BPDU信息的数据帧,而BID的MAC地址是包含在真正配置BPDU中的。
如果目的地址使用众所周知的STP多播地址01-80-c2-00-00-00。Length域的长度包含802.2LLC(逻辑链路控制)头部、BPDU及其后面的填充字节,注意图片下方CRC也是802.3组包的一部分。
802.3头部下方是802.2LLC头部,这三个字节头部包含三个域,这三个域确定其载荷类型(在这里是BPDU)。IEEE保留DSAP(destination service access point)和SSAP(source service access point)值0x42来标示STP。这个值使用唯一的位序(0x42等于二进制数01000010),避免了和使用传统网桥环境混淆。下一个字节为控制字节,每个你可以认出非SNA协议(包括STP)总是使用值0x03来确定Unnumbered
Information(UI)帧。
后面三分之二的输出包含事实上的BPDU,配置BPDU由以下的12个域(图6-15将BID域分成了子域)组成:
- Protocol ID——始终为0。以后对该协议的修正完善可能使Protocol ID增加。
- Version——始终为0。以后对该协议的修正完善可能使Version增加。
- Type——确定该帧为何种BPDU(配置BPDU或TCN BPDU)。下一节“Topology Change Notification BPDUs”有更多详细信息。
- Flags——用于处理拓扑的变化,拓扑改变通知的内容在下一节。
- Root BID (图6-15中的Root ID)——包含根网桥的桥ID,在收敛之后,在网桥网络中所有的配置BPDU的该域应当是同样的值(对于单个VLAN来说)。NetXRay将BID拆分为两个子域:网桥优先级和网桥MAC地址。详细信息请查看“第一步:选择一个根网桥”这一部分内容。
- Root Path Cost——到根网桥的累计路径开销。详见前面“路径开销”章节部分。
- Sender BID(图6-15中Bridge ID)——网桥用于创建BPDU使用的BID,这个域对某一个交换机(某个VLAN)发送的BPDU来说都是一样的,但交换机之间是不同的。详见“第三步:选择指定端口”章节内容。
- Port ID——对每个端口来说包含一个唯一值。Port 1/1包含值0x8001,Port 1/2包含0x8002(但是这些数字是基于插槽数量来按组分块并且并非是连续的)。详见第七章“负载均衡”一节。
- Message Age——记录根网桥产生该数据包后的时间。如果网桥和根网桥失去连接(因此没有接收到BPDU),在BPDU中该值将增长,以表明该数据已经过期了。在第256次后将从头开始计数<译者注原文:Encoded
in 256ths of a second>。
- Max Age——BPDU的最大保存时间,也影响拓扑改变通知处理期间网桥地址表的老化时间(稍后讨论)。详见“三个STP timer“一节。该值在第256次后将从头开始计数。
- Hello Time——配置BPDU发送周期。根网桥在每个活动端口上每隔Hello
Time秒发送配置BPDU。这将会使得另外的根网桥通过网络传播BPDU。详见“三个STP timer“一节。该值在第256次后将从头开始计数。
- Forward Delay——处于监听和监听状态的的时间消耗,在拓扑改变通知处理期间也会影响timer(稍后讨论)。详见“三个STP
timer“一节。该值在第256次后将从头开始计数。
表6-6总结了配置BPDU域。
Table 6-6. Configuration BPDU Fields
Field
|
Octets
|
Use
|
Protocol ID
|
2
|
Always 0
|
Version
|
1
|
Always 0
|
Type
|
1
|
Type of current BPDU
0 = Configuration BPDU
|
Flags
|
1
|
LSB = Topology Change (TC) flag
MSB = Topology Change Acknowledgment (TCA) flag
|
Root BID
|
8
|
Bridge ID of current Root Bridge
|
Root Path Cost
|
4
|
Cumulative cost to Root Bridge
|
Sender BID
|
8
|
Bridge ID of current bridge
|
Port ID
|
2
|
Unique ID for port that sent this BPDU
|
Message Age
|
2
|
Time since Root Bridge-created BPDU used to derive
current BPDU
|
Max Age
|
2
|
Period to save BPDU information
|
Hello Time
|
2
|
Period between BPDUs
|
Forward Delay
|
2
|
Time spent in Listening and Learning states
|
拓扑改变通知BPDU
虽然在一个正常状况的网络中多数BPDU为BPDU,但所有桥接网络中至少仍然存在第二章BPDU,拓扑改变通知(TCN)BPDU。TCN BPDU正如其名,在处理拓扑改变中扮演着重要角色。图6-16展示了一个解码的TCN BPDU。
Figure 6-16. Topology Change Notification BPDU Decode
图6-15 中TCN BPDU比配置BPDU要简单得多,仅仅包含三个域。TCN BPDU前三个域和配置BPDU前三个域除
Type域中一位不同外其余全部一样。毕竟,至少有一位去告诉”这是一个TCN BPDU,而不是配置BPDU“,因此,
Type域可以包括如下二值之一:
- 0x00(二进制:0000 0000)配置BPDU
- 0x80(二进制:1000 0000)拓扑改变通知(TCN)BPDU
就是这样简单,TCN 不携带任何额外的信息。
翻译经典之《Cisco Lan Switching》第六章(九):Two Types of BPDUs
标签:switch stp
原文地址:http://blog.csdn.net/shallnet/article/details/43707807