IEEE 802.1d介绍——Spanning Tree的工作方式
2005-04-26      
打印自: 安恒公司
地址: HTTP://superagent.anheng.com.cn/news/article.php?articleid=595
IEEE 802.1d介绍——二层数据网络的自愈

为什么需要802.1d

二层数据网的自愈需求由来已久,早期的以太网 Bridge 采用了基于 MAC 地址在不同端口之间的转发,而每一个端口对应的是一个以太网的网段,也就是一个以太网的广播域,通过学习每个端口的 MAC 地址表的方式,以太网 Bridge 只转发不同端口间的通信。但是由于Bridge 依赖的是运行网络中存在的MAC 地址和端口的对应表,所以一旦收到目的地址未知的数据包,它将利用广播的形式来寻址,这种方法使得它天生不能隔离广播包和组播包的通信,其后果就是在一个环形网络中造成数据流量以指数形式的增长,从而导致网络的瘫痪,这种现象也称为“广播风暴”。

可以说“广播风暴”的现象只存在于两点之间存在冗余链路的网络之中,而冗余链路的存在正是网络设计中大量存在的,这种设计的目的是当某一条链路失效时,另一条冗余的链路能够马上接管所有的工作。为了解决“广播风暴”这一在二层数据网络中存在弊端,IEEE(电机和电子工程师学会)制定了 802.1d 的生成树协议(Spanning Tree),这种协议的本质就是消除网络拓扑中任意两点之间可能存在的重复路径,利用这种算法将两点之间存在的多条路经划分为“通信路径”和“备份链路”,数据的转发在“通信路径”上进行,而“备份链路”只用于链路的侦听,一旦发现“通信路径”失效时,将自动地将通信切换到“备份链路”上。

现代的二层以太网交换机和三层以太网交换机采用了硬件电路的设计,保证了每个端口的独享带宽,用户可以将它的每一个端口看作是一个独立的 Bridge 端口,其二层的工作原理同 Bridge 类似。为了实现在用户接入层、汇聚层甚至城域网络范围内的高可靠性,网络中关键的拓扑设计往往采用冗余链路的设计,虽然也有其他的技术可以实现高效的网络收敛,但是大多数网络设计者还是采用了 802.1d 的方法,原因是 Spanning Tree是一项简单而成熟的网络自愈技术。

Spanning Tree的工作方式

Spanning Tree 的工作方式可以从它的字面上理解为“生成树”,它的所有的工作都是为了生成一颗倒装的树形,这棵树的根就称为“bridge root”,每个设备会定义一个优先级,称为“bridge priority”,它的数值越小代表它成为树根的可能性越大,而每个叶结点通往树根的路径称为“root path”,衡量这一路径的权值称为“path cost”,通常它代表了链路的带宽,一个千兆端口的权值会小于一个百兆端口的权值。所有参与生成树算法的网络设备都交换它们的报文信息(BPDU),通过这些信息它们知道哪个路径更为快捷、哪个设备成为树根的可能性最高,然后它首先选出整个网络的树根,其次计算每个叶结点到树根的路径,选择代价最小的成为通信的路径,而另外的路径成为备份的路径。在每个节点的生成树算法完毕以前,所有的设备端口都只发送和接收报文信息,端口的状态处于初始化的阶段(listening & learning),一旦完成初始化,那么成为通信的路径的端口转变为“Forwarding”的状态,用于数据的收发,而备份链路的端口成为“Blocking”的状态(或对端成为“Blocking”的状态),只侦听 BPDU 的数据。一旦通信的路径失效,根据 BPDU 的报文,备份链路的端口将重新一轮计算的过程而成为“Forwarding”的状态。

Spanning Tree的弊端和增强技术

Spanning Tree 的算法广泛运用于二层以太网的收敛和自愈,但是由于它的出现是在局域网的初期所开发的技术,所以它也存在着一些弊端, 主要有以下几个不足。

1、二层数据网的收敛时间过长

根据 802.1d的算法,每个叶结点的初始化时间约为 30 秒钟,整个拓扑的收敛将会在 45 秒左右,即使是一个以太网端口由于插入计算机也需要这个过程。而我们知道一旦在关键网络如主机核心机房的连接,用户期望的值往往要短的多。

 

2、网络拓扑容易引起全局波动

由于 802.1d 的理论没有域的概念,网络中用户增加或减少设备、设备配置的改变往往会引起全局不必要的波动,用户如果改变其设备参数甚至能引起bridge root 的改变,出现通信网络的中断。这造成用户在大规模的数据网络中不敢轻易使用 802.1d 的算法。

 

3、缺乏对现有多 VLAN 环境的支持

802.1d 没有阐明在一个存在多个 VLAN 情况下如何处理 Spanning Tree 的算法,造成一个以太网交换机只支持单个 STP运算,从而使得双光纤链路的资源只能利用到一半。

针对这些802.1d 所带来的弊端,网络设备制造商开发了许多增强的技术,以使以太网用于现代高速的宽带网络,这些技术主要有:

  1. 修改 Spanning Tree 的算法,大大提高其收敛时间。
  2. 提出 Spanning Tree 划分域的概念,将核心网络与用户接入网络的 STP 域分开,保护核心网络的稳定性。
  3. 针对以太网交换机开发的多 STP 协议,就是在每个 VLAN 上运行独立的 STP 算法,互不干扰。

需要指出的是以上几种技术现在尚未存在开放的标准,不同厂商的互连需要依情况不同而定。当然二层数据网络的自愈技术不光是 802.1d 一种,针对 STP 的不足,尤其是收敛时间过长这一点,许多知名的网络厂商甚至开发出不需要 STP 的子秒级收敛技术,这种收敛有些是依赖于特殊的光纤端口上,也有一些是建立在光纤以太网技术上的。 

 

 

STP:生成树协议 -IEEE 802.1D   (STP:Spanning Tree Protocol - IEEE 802.1D)

生成树协议 Spanning Tree 定义在 IEEE 802.1D 中,是一种桥到桥的链路管理协议,它在防止产生自循环的基础上提供路径冗余。为使以太网更好地工作,两个工作站之间只能有一条活动路径。网络环路的发生有多种原因,最常见的一种是故意生成的冗余,万一一个链路或交换机失败,会有另一个链路或交换机替代。

STP 是一种桥到桥的通信技术,提供发现网络物理环路的服务。该协议规定了网桥创建无环回loop - free 逻辑拓朴结构的算法。换句话说,STP 提供了一个生成整个第二层网络的无环回树结构。

生成树协议操作对终端站透明,也就是说,终端站并不知道它们自己是否连接在某单个局域网或多交换局域网中。当两个网桥相互连接在相同的由两台计算机组成的网络中时,生成树协议支持两网桥之间相互交换信息,这样只需要其中一个网桥处理两台计算机之间发送的信息。

桥接设备之间通过使用网桥协议数据单元(Bridge Protocol Data Unit,BPDU)交换各自状态信息。生成树协议通过发送 BPDU 信息为交换网络配置根交换和根端口,并为每个交换网路区段(switched segment)配置根端口和指定端口。

网桥中的生成树算法可以用来决定如何使用生成树协议,该算法的优点在于能够避免网桥环路,并确保在多路径情形下网桥能够选择一条最有效的路径。如果最佳路径选择失败,可以使用该算法重新计算网络路径并找出下一条最佳路径。

利用生成树算法可以决定网络路径(哪台计算机主机在哪个区段),并通过 BPDU 信息交换以上数据。该过程主要分为以下两个步骤:

  1. 通过评估网桥接收的配置信息以及选择最佳选项,再利用生成树算法来决定网桥发送的最佳信息。
  2. 一旦选定某发送信息,网桥将该信息与来自无根(non-root)连接的可能配置信息相比较。如果步骤1中选择的最佳选项并不优于可能配置信息,便删除该端口。 

 


责任编辑: admin