网桥 使用珀尔曼博士发明的这种方法能够达到2层 路由 的理想境界: 冗余 和无 环路 运行。你可以把 生成树 协议设想为一个各 网桥 设备记在心里的用于进行优化和容错发送数据的过程的树型结构. 生成树协议(Spanning Tree)定义在 IEEE 802.1D 中,是一种链路管理协议,它为网络提供 路径 冗余 同时防止产生 环路 。为使 以太网 更好地工作,两个 工作站 之间只能有一条活动 路径网络环路 的发生有多种原因,最常见的一种是有意生成的 冗余  - 万一一个链路或 交换机 失败,会有另一个链路或交换机替代。


编辑本段生成树协议拓扑结构的思路

   生成树

协议拓扑结构的思路是: 不论 网桥

( 交换机

)之间采用怎样物理联接,网桥(交换机)能够自动发现一个没有 环路

的拓扑结构的网路,这个逻辑拓扑结构的网路必须是树型的。 生成树

协议还能够确定有足够的连接通向整个网络的每一个部分。所有 网络节点

要么进入转发状态,要么进入 阻塞状态

,这样就建立了整个局域网的 生成树

。当首次连接 网桥

或者网络结构发生变化时,网桥都将进行 生成树

拓扑的重新计算。为稳定的 生成树

拓扑结构选择一个根桥, 从一点传输数据到另一点, 出现两条以上条 路径

时只能选择一条距离根桥最短的活动路径。  生成树

协议这样的控制机制可以协调多个 网桥

( 交换机

)共同工作, 使计算机网络可以避免因为一个接点的失败导致整个网络联接功能的丢失, 而且 冗余

设计的 网络环路

不会出现 广播风暴



编辑本段生成树的实现

一、802.1D生成树协议概述:


  1,几个关键的概念:(1) 网桥

标识(bridge ID):


  ①非扩展的: 网桥

优先级(2bytes)+ MAC地址

拓扑生成工具java 生成的拓扑_生成树


拓扑生成工具java 生成的拓扑_链路_02


②扩展的:网桥优先级(4bits) + 系统标识(VLAN ID;12bits) + MAC地址


  (2) 网桥协议数据单元

(BPDU):


  ①配置(CFG)BPDU: 初始时每个 网桥

都会发送,假设自己就是根网桥


  收敛后,只从根 网桥

发出,其他网桥在根端口接收后向下中继。


  ②拓扑改变提示( TCN

)BGDU:当拓扑发生变化时,其他 网桥

可以从根端口发出该BPDU,到达根网桥。


  根 网桥

在配置BPDU中设定 TCN

位,提示其他网桥快速清理 MAC地址表



  (3)时间值:


  ①HELLO间隔:2秒,CFG BPDU发送间隔


  ②MAX AGE: 20秒,CFG BPDU的保留时间


  ③FWD_DELAY: 15秒,监听(listening)和学习(learning)的时间


  (4) 路径

代价:与链路速率相关,用于计算 网桥

间的距离


  (5)端口状态:


  ①关闭(disable):端口处于管理关闭状态


  ②阻塞(blocking): 不能转发用户数据


  ③监听(listening): 接口开始启动


  ④学习(learning) : 学习MAC地址, 构建MAC表进程项


  ⑤转发(forwarding): 可以转发用户数据


  (6)选择标准:


  ①最低的 网桥

标识号


  ②最低的路径代价到根 网桥



  ③最低的发送者的 网桥

标识号


  ④最低的端口标识号


  2,选择操作顺序:


  (1)选择一个根 网桥

:每一个网络选择一个


  (2)选择一个根端口:每一个非根 网桥

选择一个


  (3)选择一个指派端口:每一个网段选择一个


  (4)非指派端口被放置在 阻塞状态


二、在园区网中实现生成树协议:


  1,实现优化的 生成树

拓扑


  (1)每VLAN 生成树

协议(PVST):每一个VLAN有一个 生成树

的计算进程


  (2)根 网桥

的选择:楼内分布层 交换机

应该成为根网桥,即避免访问层 交换机

成为根网桥


  (3)生成树的 负载平衡

:配置不同的分布层 交换机

成为不同VLAN的根 网桥



  2,配置根 网桥

:两种方式


  (1)定义优先级:


(config)#spanning-tree vlan <vlan-id> priority <priority>


  (2)定义交换机为根 网桥



(config)#spanning-tree vlan <vlan-id> root [primary|secondary]

三、加速生成树协议的收敛过程:


  1,端口快速(postfast):


  (1)端口立即从 阻塞状态

进入转发状态,不经过监听和学习状态


  (2)应该只将这一特性配置在连接 终端

主机的端口上,即不应配置在 交换机

间的端口上。


  (3)配置命令:两种方式


  ①接口配置模式:


  (config-if)#spanning-tree  portfast



  ②全局模式:对所有非骨干链路端口生效


  (config)#spanning-tree  portfast

 default


  2, 快速生成树

协议(RSTP): 802.1w



  (1)端口状态:


  ①丢弃(discarding):不能转发用户数据


  ②学习(learning):学习MAC地址, 构建MAC表进程项


  ③转发(forwarding): 可以转发用户数据


  (2)端口类型:


  ①根(root)端口:与802.1D相同


  ②指派(designated)端口: 与802.1D相同


  ③预备(alternative)端口: 端口被阻塞,作为根端口的备份


  ④备份(backup)端口:(learning) : 端口被阻塞,作为指派端口的备份


  (3) 网桥协议数据单元



  ①数据字段:增加了4个字段描述位,说明端口的状态和类型


  ②CFG BPDU:直接在两两 交换机

间交换,如果丢失3个BPDU,意味着链路拓扑发生改变。


  ③ TCN

 BPDU:直接在 交换机

泛洪



  (4) 快速收敛

机制:


  ①边缘(edge)端口: 连接 终端

主机的端口,自动实现端口快速特性


  ②点到点链路:即全双工链路,自动实现快速端口状态改变,不再有max-age和fwd-delay的延迟


  (5)配置命令:

(config)#spanning-tree mode rapid-pvst


  (6)校验命令:


#show spanning-tree vlan <vlan-id> 
 

 
  #debug spanning-tree


四、增强生成树协议的操作性能:


  1, 多进程

生成树

协议(MSTP):


  (1)定义:映射多个vlan 生成树

计算进程到一个MST的进程;减少PVST的计算负担;实现与CST域的互操作


  (2)配置命令:


  ①进入MST配置模式:


  

(config)#spanning-tree mst configuration



  ②定义MST域名:


(config-mst)#name <name>


  ③定义MST的配置版本号:


(config-mst)#revision <num>


  ④映射多个VLAN到一个MST进程:

(config-mst)#instance <inst-num> vlan <vlan-range>


  ⑤定义根 网桥



 

(config-mst)#spanning-tree mst <inst-num> root [primary|secondary]



  (3)校验命令:


#show spanning-tree mst configuration 
 

 
  #show spanning-tree mst <inst-num>


  2, 以太通道

(etherchannel):


  (1)定义:


  ①绑定多条相同的 以太网

链路作为一个逻辑的通道。


  ② 生成树

协议将其看作为一个端口的链路


  ③实现多链路上的 负载平衡

冗余



  (2)配置二层的 以太通道



  ①指定要绑定的端口范围:

(config)#interface range <type slot/port - port>


  ②定义通道管理协议:


(config-if-range)#channel-protocol [pagp|lacp]


  ③定义端口到通道:


  

(config-if-range)#channel-group <group-num> mode on

  ④定义 负载平衡

模式:


(config)#port-channel load-banlance <mode>


  (3)校验命令:

#show interfaces <num> etherchannel 
 

 
  #show etherchannel <group-num> port-channel 
 

 
  #show etherchannel <group-num> summary

五、保护优化的生成树拓扑结构:


  1,防止“端口快速”的错误:


  错误:把 交换机

连接到了配置了“端口快速”的端口上,可能引起 环路

问题


  (1)BPDU守卫(GUARD):


  ①定义:当配置了“端口快速”的端口接收到BPDU时,关闭该端口。


  ②配置命令:


(config)#spanning-tree  
portfast 
  
bpdu 
guard


  ③校验命令:


 

#show spanning-tree summary totals

  (2)BPDU过滤(filtering):


  ①定义:当配置了“端口快速”的端口接收到BPDU时,该端口失去“端口快速”特性。


  ②配置命令:


(config)#spanning-tree  
portfast 
  
bpdu 
filter default



  ③校验命令:


#show spanning-tree summary totals


  2,保护现有优化的根 网桥

:“根守卫”(root guard)


  (1)定义:当端口收到一个具有更好的参数的 网桥协议数据单元

(superior  bpdu

)时,


  将该端口放置在一个“根不一致(root-inconsistent)”状态,不转发这一BPDU。


  (2)配置命令:


(config-if)#spanning-tree guard root


  (3)校验命令:

#show spanning-tree inconsistentports


  3,阻止可能的 生成树

环路



  (1)单向链路检测(UDLD):


  ①定义: 通过发送检测消息发现物理链路出现单向中断时,关闭该链路端口。


  ②配置命令:


  (config)#udld enable →在所有的光纤端口上启用


  或(config-fi)#udld enable →在某一个光纤或非光线端口上启用


  ③校验命令:


 

#show udld interface <num>



  (2) 环路

守卫(loop guard):


  ①定义: 当某一方向端口在MAX-AGE时间后没有收到BPDU时,


  将该端口放置在一个“ 环路

非一致(loop-inconsistent)”状态,


  阻止该端口发送用户数据。


  ②配置命令:

(config-if)#spanning-tree guard loop


  ③校验命令:

#show spantree guard <int-num>