网络通信 频道

交换技术应用连载:802.1D生成树

  【IT168 专稿】交换技术是网络技术的重点,我们网络频道已经为读者进行了多次报道。因为其重要,故我们再次进行系统的整理,以供初学者参阅。

  交换技术应用连载:交换技术的重要性
  交换技术应用连载:构建MAC地址表
  交换技术应用连载:广播风暴问题解决
  交换技术应用连载:802.1W生成树
  交换技术应用连载:虚拟局域网技术

  802.1D生成树
  在避免桥接环路的同时又要保持冗余路径,为此人们开发了生成树协议(Spanning Tree Protocol--STP)。顾名思义,就是要把环型拓扑生成树型拓扑,因为树型拓扑是无环的。生成树协议前后发布了两个标准,一个是IEEE802.1D,就是通常所说的生成树协议;一个是IEEE802.1W,称为快速生成树协议(Rapid Spanning Tree Protocol--RSTP)。本小节讨论802.1D,下一小节讨论802.1w。

  1. 端口状态
  交换机的端口处于不同的状态有着不同的功能,这些状态与生成树协议的运行及交换机的工作原理有着重要的关系,现总结如下(图11-10):

  
  图 11-10 端口状态及转换方向
    阻塞状态(Blocking)--只侦听BPDU帧,不转发数据帧。
    侦听状态(Listening)--只侦听数据帧,不转发数据帧。
    学习状态(Learning)--学习地址信息,不转发数据帧。
    转发状态(Forwarding)--学习地址信息,并转发帧。
    无效状态(Disabled)--不进行转发,不侦听BPDU帧。
    
  除了处于无效状态,通常情况下一个端口的状态可以按照如下顺序进行单向转换:阻塞状态'侦听状态'学习状态'转发状态。

  端口也可以被配置成启动后立即进入转发状态,而不必按照阻塞、学习和转发的顺序进行转换。这种快速转换到转发状态的方式对于直接连接主机的端口是非常有用的。转发状态和阻塞状态可以处于稳定状态,而侦听状态和学习状态是过度状态,最终会转变为转发状态或阻塞状态。

  2. BPDU

  生成树协议的目的是在保证提供冗余链路的前提下避免产生环路。要实现这个目的,网络中的交换机必须能够相互了解它们之间的连接情况,为了让其他的交换机知道它的存在,每台交换机向网络中发送一种称为BPDU(Bridge Protocol Data  Unit )的数据帧。如果某台交换机能够从两条或多条链路上收到同一台交换机的BPDU,则说明它们之间存在着冗余路径,就会产生环路。当存在环路时交换机使用生成树算法最终选择一条链路传递数据,而通过把某些相关的端口置于阻塞(blocking)状态,虚拟地把其他的冗余链路断开达到避免环路的目的。一旦当前正在使用的链路出现故障,就会把某个阻塞的端口打开接替原来的链路工作,这样既提供了冗余链路又避免了环路。

图11-11是BPDU帧的基本结构,本节只介绍几个主要参数。
  
  图 11-11 BPDU基本结构
    Bridge ID:发送该BPDU的交换机ID号;Bridge ID用来标志交换机身份,它由交换机的优先级和交换机的基本MAC地址(base MAC address)构成,共8字节。其中最高两个字节是优先级,后面6个字节是交换机的基本MAC地址。这样,可以借助MAC地址的唯一性来保证Bridge ID的唯一性。Cisco交换机的优先级出厂缺省设置为8000H(对应的十进制数为32768),这个数值可以由网络管理员修改,优先级越高(值越小)越有可能成为根桥。
    Root ID:作为根桥的交换机的ID号;
    Path cost:路径开销;
    Port ID:发送该BPDU的端口ID号。包含端口优先级和ID号两部分。
    Parameters:其它参数。

  3. 802.1D运行过程
  交换机端口有了阻塞这个特殊状态,使得网络中既可以提供冗余链路又能够避免环路。但问题是交换机选择哪些端口处于阻塞状态,哪些端口处于转发状态,这需要依靠生成树协议。下面以图11-12为例介绍生成树协议运行的过程。图中两台交换机X和Y连接上下两个网段并构成环路,在两台交换机上运行生成树协议后,它们最终把某个端口置于阻塞状态而拆断环路。

  
  图 11-12  说明生成树协议运行的图例

  运行过程主要分三个阶段:
  1. 在同一个网络内(广播域范围内)选举一台交换机为根桥(root bridge);
  2. 在每个非根桥交换机上选举一个根端口(root port);
  3. 在每个网段中选举一个指定端口(designated port)。

  阶段一:选举根桥
  启动生成树协议后(生成树协议缺省是启动的),交换机之间通过传递BPDU数据帧来互相识别对方并交换一些必要的信息。根桥的选举是通过比较Bridge ID的大小完成的。协议规定,Bridge ID值最小的交换机成为根桥,根桥只能有一个。先比较优先级,如果相同再比较MAC地址。因此,网络管理员可以通过控制Bridge ID的大小来指定哪台交换机做为根桥。本例中假设switchX被选为根桥。

  阶段二:选举根端口(Root Port)
  选出作为根桥的交换机后,其余的所有交换机都称为非根桥。选择根端口的原则是比较各端口到达根桥的路径开销值(Path Cost),代价最小的端口为根端口。

  BPDU数据帧中携带的路径开销值,表示BPDU从根桥到达接收它的端口所花费的路径代价。该值是BPDU所走路径中经由的所有入端口开销之和,端口开销与带宽有关,所经由的端口带宽越大,开销越小。当非根桥从多个不同的端口收到跟桥的BPDU时,读取该值就可以得出从它的哪一个端口到达根桥花费最小。

  本例中switch Y为非根桥,它有两个端口可以到达根桥,上面端口的速率为100Mbps,下面端口的速率为10Mbps。显然通过上面端口到达根桥所花费的代价比经由下面端口所花费的代价小,所以100Mbps端口被选举为根端口。

  当出现多条路径开销值相等的情况(比如链路带宽相等)时,接着比较转发根桥BPDU的交换机的ID号,与有较低ID号交换机相连的端口成为根端口;如果交换机ID号也相同,接着比较转发根桥BPDU的端口优先级(BPDU中携带该值),与有较高优先级的端口相连的端口被选为根端口。如果端口优先级也相同的话,接着比较转发根桥BPDU的端口ID(Port ID),与有较小端口ID值的端口相连的端口被选为根端口。Port ID如同端口编号一样是唯一的,能够保证选出一个唯一的根端口。

  例如,假设图11-12中两条链路都为100M,交换机switchY选择根端口的过程则会是这样的:首先比较路径花费,因为路径花费相等则比较转发BPDU的交换机ID,因为他的两个端口都是从switchX接收根桥的BPDU,所以交换机ID也相同。接着比较switchX的两个转发BPDU的端口的端口优先级(当然,该例中就是根桥自己转发的)。端口优先级出厂设置也是相同的,所以比较switchX的两个向switchY转发根桥BPDU的端口的port ID,最终,与switchX的有较小port ID端口相连的switchY的端口成为根端口。

  提示:端口带宽10Mbps,cost=100;端口带宽100Mbps,cost=19;端口带宽1Gbps,cost=4;端口带宽10Gbps,cost=2。

  阶段三:选举指定端口(Designated Port)

  这个阶段是在每个网段上选择唯一一个指定端口。选择的原则是比较网段中各端口到达根桥的路径开销,具有最小路径开销的端口为指定端口。如图11-12所示,交换机连接上下两个网段,在上面的网段中显然是根桥上的端口到根桥所花费的代价最小(代价为0);同理下面的网段中也是根桥上的端口到根桥所花费的代价最小(代价为0),因此根桥上的这两个端口被选为指定端口。

  在多个端口到达根桥的路径开销相同的情况下,比较原则和选举根端口时使用的比较原则相同。

  这三个阶段完成后,网络中有唯一的一个交换机作为根桥;每个非根桥有唯一的一个根端口;在每个网段上有唯一的一个指定端口。这时交换机上的端口分为3种类型,它们是根端口、指定端口和未被选举上的端口。根端口和指定端口进入转发状态,落选的端口进入阻塞状态。这样,环路被打破。

  处于阻塞状态的端口虽然不转发用户数据,但它们还是要处理BPDU数据包的。另外,缺省参数下根桥每两秒发送一次BPDU,因此Switch Y的根端口预期每两秒应该收到一个BPDU数据,交换机的根端口在一定的时间间隔(缺省20秒,即max age时间)内收不到BPDU数据,就会认为该链路已经失去与根桥的连接,则会请求重新计算生成树,以启动阻塞端口替代中断的链路。

  生成树协议再次运算后,原来阻塞状态的端口将转变为转发状态。一个端口从阻塞状态转变到转发状态需要经由下面几个过渡过程:

    从阻塞状态到倾听状态,需要20秒,该值也称为最长寿命(max age)时间。
    从倾听状态到学习状态,需要15秒。
    从学习状态到转发状态,需要15秒。
  从倾听状态到转发状态所需的这段时间称为转发延迟(forward delay),用来强迫端口等待以从其他交换机上获得所有BPDU。由于端口从阻塞状态转变为转发状态需要50秒的时间,所以用户通信在生成树重新计算时会中断。


 

0
相关文章