生成树协议的发展过程(1)


生成树协议是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。

由于生成树协议本身比较小,所以并不像路由协议那样广为人知。但是它却掌管着端口的转发大权—“小树枝抖一抖,上层协议就得另谋生路”。真实情况也确实如此,特别是在和别的协议一起运行的时候,生成树就有可能断了其他协议的报文通路,造成种种奇怪的现象。

生成树协议和其他协议一样,是随着网络的不断发展而不断更新换代的。本文标题中的“生成树协议”是一个广义的概念,并不是特指IEEE 802.1D中定义的STP协议,而是包括STP以及各种在STP基础上经过改进了的生成树协议。

在生成树协议发展过程中,老的缺陷不断被克服,新的特性不断被开发出来。按照大功能点的改进情况,我们可以粗略地把生成树协议的发展过程划分成三代,下面一一道来。

STP/RSTP

在网络发展初期,透明网桥是一个不得不提的重要角色。它比只会放大和广播信号的集线器聪明得多。它会悄悄把发向它的数据帧的源MAC地址和 端口号记录下来,下次碰到这个目的MAC地址的报文就只从记录中的端口号发送出去,除非目的MAC地址没有记录在案或者目的MAC地址本身就是多播地址才 会向所有端口发送。通过透明网桥,不同的局域网之间可以实现互通,网络可操作的范围得以扩大,而且由于透明网桥具备MAC地址学习功能而不会像Hub那样 造成网络报文冲撞泛滥。

但是,金无足赤,透明网桥也有它的缺陷,它的缺陷就在于它的透明传输。透明网桥并不能像路由器那样知 道报文可以经过多少次转发,一旦网络存 在环路就会造成报文在环路内不断循环和增生,甚至造成恐怖的“广播风暴”。之所以用“恐怖”二字是因为在这种情况下,网络将变得不可用,而且在大型网络中 故障不好定位,所以广播风暴是二层网络中灾难性的故障。

在这种大环境下,扮演着救世主角色的STP(Spanning TreeProtocol)协议来到人间,其中以IEEE的802.1D版本最为流行。

图1 生成树工作过程示意图

STP协议的基本思想十分简单。大家知道,自然界中生长的树是不会出现环路的,如果网络也能够像一棵树一样生长就不会出现环路。于 是,STP协议中定义了根桥(RootBridge)、根端口(RootPort)、指定端口(DesignatedPort)、路径开销 (PathCost)等概念,目的就在于通过构造一棵自然树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。用于构造这棵树的算法称为生成 树算法SPA(Spanning TreeAlgorithm)。

要实现这些功能,网桥之间必须要进行一些信息的交流,这些 信息交流单元就称为配置消息BPDU(BridgeProtocol Data Unit)。STP BPDU是一种二层报文,目的MAC是多播地址01-80-C2-00-00-00,所有支持STP协议的网桥都会接收并处理收到的BPDU报文。该报文 的数据区里携带了用于生成树计算的所有有用信息。

要了解生成树协议的工作过程也不难,首先进行根桥的选举。选举的依据是网桥 优先级和网桥MAC地址组合成的桥ID(Bridge ID),桥ID最小的网桥将成为网络中的根桥。在图1所示的网络中,各网桥都以默认配置启动,在网桥优先级都一样(默认优先级是32768)的情况 下,MAC地址最小的网桥成为根桥,例如图1中的SW1,它的所有端口的角色都成为指定端口,进入转发状态。

接下来,其他网桥 将各自选择一条 “最粗壮”的树枝作为到根桥的路径,相应端口的角色就成为根端口。假设图1中SW2和SW2、SW3之间的链路是千兆GE链路,SW1和SW3之间的链路 是百兆FE链路,SW3从端口1到根桥的路径开销的默认值是19,而从端口2经过SW2到根桥的路径开销是4+4=8,所以端口2成为根端口,进入转发状 态。同理,SW2的端口2成为根端口,端口1成为指定端口,进入转发状态。

根桥和根端口都确定之后一棵树就生成了,如图中实线所示。下面的任务是裁剪冗余的环路。这个工作是通过阻塞非根桥上相应端口来实现的,例如SW3的端口1的角色成为禁用端口,进入阻塞状态(图中用“×”表示)。


相关内容

    暂无相关文章