翻译经典之《Cisco Lan Switching》第六章(九):Two Types of BPDUs

【版权声明:原创翻译文章,翻译水平有限,错误在所难免,翻译作者对文章中存在的错误或遗漏所造成后果不承担任何责任,请谨慎转载。转载请保留本声明及出处:blog.csdn.net/shallnet ,下载该书英文版

在此之前,本章都认为所有BPDU为同一种BPDU,事实上,BPDU有两种类型:
  • 配置BPDU
  • 拓扑改变通知(TCN)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 不携带任何额外的信息。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。