以太网交换机中生成树协议的实现

1/23/2008来源:网络协议人气:3306


   摘要:生成树算法和协议是自动生成网络拓扑结构的基础。本文阐述了生成树算法和协议的内容,并给出了在以太网交换机中的具体实现过程。我们通过实践证实,该方尖对于解析最优网络拓扑结构效果良好。
  
    要害词:以太网交换机 网桥 拓扑结构 生成树 BPDU
  
    以太网交换机在第二层即MAC层必须具有路由功能。目前普遍使用的MAC层路由方式是IEEE802.1组织发布的标准:基于生成树算法的路由。在局域网内的交换机执行了生成树算法以后,会组成一个生成树动态拓扑结构,该拓扑结构使局域网内任意两个工作站之间不存在回路,以防止由此产生的局域网广播风暴,同时,生成树算法还负责监测物理拓扑结构的变化,并能在拓扑结构发生变化之后建立新的生成树。例如当一个交换机坏了或某一条数据通咱断了后,能提供一定的容错能力而重新配置生成树的拓扑结构。交换机根据生成树动态拓扑结构的状态信息来维护和更新MAC路由表,最终实现MAC层的路由。
  
    一、以太网交换机在MAC层体系结构
  
    以太网交换机在MAC层的功能主要是实现LAN的互连。根据IEEE802.1D协议的规定,在MAC层工作的体系结构必须包含以下内容:(1)一个用于连接交换机端口的MAC转发实体;(2)至少两个端口;(3)高层协议实体,其中包括交换机协议实体。如图1所示。
   
    MAC转发实体主要实现交换机不同端口间的内部通信。该实体存储各个端口的工作状态并维护一个过滤数据库。数据库中存放了一张MAC地址表,用以实现MAC层的路由。当数据帧从一个端口的底层服务进程传上来时,MAC实体首先判定目的端口的工作状态,假如目的端口没有被阻塞,MAC转发实体将依据MAC地址表的对应关系将该帧从目的端口转发出去。同时MAC转发实体还可以进行过滤、记录MAC地址等操作。
  
    交换机端口的功能是从与其相连的LAN上接收或传送数据。端口的状态由生成树算法规定,包括转发、学习、监听、阻塞和禁止状态。
  
    高层协议实体位于LLC层,主要用于计算和配置LAN的拓扑结构。下面介绍的生成树协议算法就是运行在该协议实体内,用来实现MAC层的路由。在运行生成树算法时,高层协议实体可以直接调用MAC转发实体提供的服务,并能读取或更改MAC实体数据库中维护的信息,如从MAC实体中读取或更改某端口的状态信息等。
  
    在运行生成树算法时,交换机的高层协议实体将使用一个统一的组地址01-80-C2-00-00-00作为目的MAC地址,该数据被称为BPDU(桥协议数据单元)。BPDU中携带了实现生成树算法的有关信息。在实现生成树算法时,从端口接收上来BPDU,由LLC层的服务进程将其传给交换机协议实体。在执行了生成树算法以后,交换机的协议实体将根据算法的结果更新端口的状态信息并更新过滤数据库,以决定交换机端口的工作状态(阻塞或转发等),从而建立生成树拓扑结构。
  
    二、生成树协议
  
    1、生成树协议介绍
  
    生成树协议基于以下几点:(1)有一个唯一的组地址(01-80-C2-00-00-00)标识一个特定LAN上的所有的交换机。这个组地址能被所有的交换机识别;(2)每个交换机有一个唯一的标识(Brideg Identifier);(3)每个交换机的端口有一个唯一的端口标识(Port Identifier)。对生成树的配置进行治理还需要:对每个交换机调协一个相对的优先级;对每个交换机的每个端口调协一个相对的优先级;对每个端口调协一个路径花费。
  
    具有最高优先级的交换机被称为根(root)交换机。每个交换机端口都有一个根路径花费,根路径花费是该交换机到根交换机所经过的各个跳段的路径花费的总和。一个交换机中根路径花费的值为最低的端口称为根端口,若有多个端口具有相同的根路径花费,则具有最高优先级的端口为根端口。
  
    在每个LAN中都有一个交换机被称为选取(designated)交换机,它属于该LAN中根路径花费最少的交换机。把LAN和选取交换机连接起来的端口就是LAN的选取端口(designated port)。假如选取交换机中有两个以上的端口连在这个LAN上,则具有最高优先级的端口被选为选取端口。拓扑结构如图2所示。
   
    由于交换机A具有最高优先级(桥标识最低),被选为根交换机,所以交换机A是LAN A和LAN B的选取交换机;假设交换机B的根路径花费为6,交换机C的根路径花费为4,那么交换机C被选为LAN C的选取交换机,亦即LAN C与交换机A之间的消息通过交换机C转发,而不是通过交换机B。LAN C与交换机B之间的链路是一条冗余链路。
  
    2、BPDU编码
  
    交换机之间定期发送BPDU包,交换生成树配置信息,以便能够对网络的拓扑、花费或优先级的变化做出及时的响应。BPDU分为两种类型,包含配置信息的BPDU包称为配置BPDU(Configuration BPDU),当检测到网络拓扑结构变化时则要发送拓扑变化通知BPDU(Topology cHANGE nOTIFICATION BPDU)。配置BPDU编码如图3所示。
   
  拓扑变化通知BPDU编码如图4所示。

  
    对于配置BPDU,超过35个字节以外的字节将被忽略掉;对于拓扑变化通知BPDU,超过4个字节以外的字节将被忽略掉。
  
    3、形成一个生成树所必需决定的要素
  
    (1)决定根交换机
  
    a、最开始所有的交换机都认为自己是根交换机;
  
    b、交换机向与之相连的LAN广播发送配置BPDU,其root_id与bridge_id的值相同;
  
    c、当交换机收到另一个交换机发来的配置BPDU后,若发现收到的配置BPDU中root_id字段的值大于该交换机中root_id参数的值,则丢弃该帧,否则更新该交换机的root_id、根路径花费root_path_cost等参数的值,该交换机将以新值继续广播发送配置BPDU。
  
    (2)决定根端口
  
    一个交换机中根路径花费的值为最低的端口称为根端口。
  
    若有多个端口具有相同的最低根路径花费,则具有最高优先级的端口为根端口。若有两个或多个端口具有相同的最低根路径花费和最高优先级,则端口号最小的端口为默认的根端口。
  
    (3)认定LAN的选取交换机
  
    a、开始时,所有的交换机都认为自己是LAN的选取交换机。
  
    b、当交换机接收到具有更低根路径花费的(同一个LAN中)其他交换机发来的BPDU,该交换机就不再宣称自己是选取交换机。假如在一个LAN中,有两个或多个交换机具有同样的根路径花费,具有最高优先级的交换机被先为选取交换机。在一个LAN中,只有选取交换机可以接收和转发帧,其他交换机的所有端口都被置为阻塞状态。
  
    c、假如选取交换机在某个时刻收一了LAN上其他交换机因竞争选取交换机而发来的配置BPDU,该选取交换机将发送一个回应的配置BPDU,以重新确定选取交换机。
  
    (4)决定选取端口
  
    LAN的选取交换机中与该LAN相连的端口为选取端口。若选取交换机有两个或多个端口与该LAN相连,那么具有最低标识的端口为选取端口。
  
    除了根端口和选取端口外,其他端口都将置为阻塞状态。这样,在决定了根交换机、交换机的根端口、以及每个LAN的选取交换机和选取端口后,一个生成树的拓扑结构也就决定了。
  
    4、拓扑变化
  
    拓扑信息在网络上的传播有一个时间限制,这个时间信息包含在每个配置BPDU中,即为消息时限。每个交换机存储来自LAN选取端口的协议信息,并监视这些信息存储的时间。在正常稳定状态下,根交换机定期发送配置消息以保证拓扑信息不超时。假如根交换机失效了,其他交换机中的协议信息就会超时,新的拓扑结构很快在网络中传播。
  
    当某个交换机检测到拓扑变化,它将向根交换机方向的选取交换机发送拓扑变化通知BPDU,以拓扑变化通知定时器的时间间隔中定期发送拓扑变化通知BPDU,直到收到了选取交换机发来的确认拓扑变化信息(这个确认信号在配置BPDU中,即拓扑变化标志位置位),同时选取交换机重复以上过程,继续向根交换机方向的交换机发送拓扑变化通知BPDU。这样,拓扑变化的通知最终传到根交换机。根交换机收到了这样一个通知,或其自身改变了拓扑结构,它将发送一段时间的配置BPDU,在配置BPDU中拓扑变化标志位被置位。所有的交换机将会收到一个或多个配置消息,并使用转发延迟参数的值来老化过滤数据库中的地址。所有的交换机将重新决定根交换机、交换机的根端口、以及每个LAN的选取交换机和选取端口,这样生成树的拓扑结构也就重新决定了。
  
    三、结果及结论
  
    笔者按照上述原理和方法实现的生成树算法运行正常,能够解析出最优的网络拓扑结构。当治理员使某一个端口无效或某一条链路断开后,该算法能及时响应网络的拓扑变化而重新配置生成树的拓扑结构。