累计通过IE学员人数:自2011年起累计1700人 当年422人 当月22人
咨询热线:0571-86959638咨询QQ:839898248,VX:swiers2011
rx online

第2层交换和生成树协议(STP)

路由协议可以防止在网络层发生网络环路。然而,如果在交换机间有冗余的物理链路,路由协议将不能防止在数据链路层发生的环路。正是由于这个原因,才开发了生成树协议STP(Spanning Tree Protocol),它可以防止在第2层交换式的互联网络中发生环路。

1、交换式服务

跟网桥使用软件来创建和管理过滤表不一样,交换机使用专用集成电路(ASIC:专用集成电路Application Specific Integrated Circuit)来创建并维护其过滤表。但把第2层交换机视为多端口网桥仍然是可以的,因为它们的用途是一样的,用来分隔冲突域。交换机和网桥转发数据的速度比路由器快一些,因为它们不花时间查看网络层报头信息。相反,在决定是转发帧或是丢弃它之前,它们查看帧的硬件地址,它们没有对数据包做任何修改,只读取封装了数据包的帧,与路由相比,这就使得交换过程非常快,而且不容易出错。

第2层交换提供的性能如下:

基于硬件的桥接(ASIC);

线速(Wire speed);

低延迟;

低成本。

2、第2层交换的局限性

交换机和网桥分隔冲突域,但网络仍然是一个大的广播域。要用网桥设计出一个好的网络,就必须考虑到下面两个最重要的方面:

必须绝对正确地分隔出冲突域;

创建一个功能强大的桥接网络的正确方法是,确信其用户在本地网段上花费了80%的时间。

随着网络的增长,广播、组播及生成树的慢收敛会让你觉得恼火。这就是为什么第2层交换机和网桥在互联网络中不能完全取代路由器的重要原因。

3、桥接与LAN交换的比较

网桥是基于软件的,而交换机是基于硬件的;

交换机可以看成是多端口的网桥;

每个网桥只有一个生成树实例,而交换机可以有许多生成树实例;

交换机的端口数量比大多数网桥都多;

网桥和交换机都转发第2层广播;

通过检查所接收的每个数据帧的源地址,网桥和交换机就学到了MAC地址;

网桥和交换机都是基于第2层地址做出转发的决定。

4、第2层的3种交换功能

地址学习(Address Learning):

转发/过滤决定(Forward/filter decisions):

避免环路(Loop avoidance):

5、端口安全

怎样才能阻止非授权用户的主机接入到交换机的端口上呢?

Switch#config terminal

Switch(config)#interface fastethernet0/1

Switch(config-if)#switchport port-security mac-address sticky  //开启端口MAC地址自动粘连

Switch(config-if)#switchport port-security maximum 2  //端口允许的最大MAC地址数为2

Switch(config-if)#switchport port-security violation shutdown  //违规则关闭端口

6、避免环路

交换机间存在冗余链路是一件好事,因为如某一条链路出了故障的话,它们就可以用来防止整个网络失效。但它处理不当会带来一些严重的问题:

广播风暴:

同一帧的多个复制品:

MAC地址表不稳定:

7、生成树协议(STP)

STP(Spanning Tree Protocol)最早是由数字设备公司DEC(Digital Equipment Corporation)开发的,这个公司后来被收购并改名Compaq公司。IEEE后来开发了它自己的STP版本,称为802.1D。坏消息是,默认时,Cisco交换机运行STP的IEEE802.1D版本,它与DEC版本不兼容。好消息是,Cisco在其新出品的交换机上使用了另一个工业标准,称为802.1W。

生成树术语

根桥(Root bridge):是桥ID最低的网桥。它将成为网络中的焦点,所有其它的决定都是根据根桥的判断来做出选择的。

桥协议数据单元(BPDU/Bridge Protocol Data Unit):所有的交换机相互之间都交换信息,并利用这些信息来选出根交换机,也根据这些信息来进行网络的后续配置。默认时,每2秒发送一次BPDU。

桥ID(Bridge ID):STP利用桥ID来跟踪网络中的所有交换机。桥ID是由桥优先级(在所有的Cisco交换机上,默认的优先级为32768)和MAC地址的组合来决定的。在网络中,桥ID最小的网桥就成为根桥。

非根桥(Nonroot bridge):除了根桥外,其他所有的网桥都是非根桥。它们相互之间都交换BPDU,并在所有交换机上更新STP拓朴数据库,以防止环路并对链路失效采取补救措施。

端口开销(Port cost):当两台交换机之间有多条链路且都不是根端口时,就根据端口开销来决定最佳路径,链路的开销取决于链路带宽。

根端口(Root port):根端口是指直接连到根桥的链路所在的端口,或者到根桥的路径最短的端口。选择依次比较:开销最低的端口,如开销相同,就使用桥ID小一些的那个,如多条链路来自同一台设备,就使用端口号最低的那条链路。

指定端口(Designated port):有最低开销的端口就是指定端口,指定端口被标记为转发端口。

非指定端口(Nondesignated port):非指定端口是指开销比指定端口高的端口,非指定端口将被置为阻塞状态,它不是转发端口。

转发端口(Forwarding port):指能够转发帧的端口。

阻塞端口(Blocked port):阻塞端口是指不能转发帧的端口,这样做是为了防止产生环路。然而,被阻塞的端口将始终监听帧。

生成树的操作

STP的任务是找到网络中的所有链路,并关闭任何冗余的链路,这样就可以防止网络环路的产生。STP首先选举一个根桥,由根桥来负责决定网络拓朴。一旦根桥选定,其它的每台交换机就必须找到其唯一的根端口。在两台交换机之间的每一条链路必须有唯一的指定端口,在那条链路上的端口提供到根桥最大的带宽(并不是路短路径)。显然,根交换机上的每个端口都是指定端口,因为根桥离自己总是最近的。在执行STP算法之后,任何既不是端口也不是指定端口的端口,这意味着它们是非根端口、非指定端口,它们将会被置为阻塞状态,从而打破交换环路。

选举根桥

桥ID用来选举根桥,并决定根端口。桥ID为8个字节长,其中包括了设备的优先级和MAC地址。

a、首先看优先级,优先级小的胜出;

b、看MAC地址,MAC地址最小的设备胜出。

改变默认优先级是选举根桥的最佳方式。这一点很重要,因为我们希望网络中的核心交换机成为根桥,这样STP就会快速收敛:

Switch B(config)#do show spanning-tree

VLAN0001

Spanning tree enabled protocol ieee

Root ID   Priority  32769

Address  0005.74ae.aa40

Cost     19

Port      1(FastEthernet0/1)

Hello Time  2 sec Max Age 20 sec   Forward Delay 15 sec

Bridge ID  Priority  32769 (priority 32768 sys-id-ext 1)

Address  0012.7f52.0280

Hello Time  2 sce Max Age 20 sec  Forward Delay 15 sec

Aging Time  300

[output cut]

从以上显示得出,交换机B运行的是IEEE802.1d协议,第一项输出(RootID)是交换式网络中根桥的信息,但这不是交换机B的信息。交换机B到根桥的端口(根端口)是端口1。桥ID实际上是有关交换机B和VLAN1的生成树信息。交换机B的默认优先级是32768,这是每台交换机的默认优先级。它被列为32769,由于VLAN ID实际被加进来了,因此在这种情况下,对于VLAN 1,它显示32769,对于VLAN 2显示32770,以此类推。

在Catalyst交换机上改动桥的优先级的方法:

Switch B(config)#spanning-tree vlan 1 priority 4096  //改变桥优先级为4096;范围<0~61440>

生成树端口状态

阻塞(Blocking):端口将不能转发帧,它只监听BPDU。当交换机加电时,默认情况下所有的端口都处于阻塞状态。

侦听(Listining):端口都侦听BPDU,以确信在传送数据帧之前,在网络上没有环路产生。处在侦听状态的端口,在没有形成MAC地址表时,就准备转发数据帧。

学习(Learning):交换机端口侦听BPDU,并学习交换式网络中的所有路径。处在学习状态的端口形成了MAC地址表,但不能转发数据帧。转发延迟意味着将端口从侦听状态转换到学习状态所花费的时间,默认时设置为15秒,可以用命令show spanning-tree显示出来。

转发(Forwarding):在桥接的端口上,处在转发状态的端口发送并接收所有的数据帧。如果在学习状态结束时,端口仍然是指定端口或根端口,它就进入转发状态。

禁用(Disabled):从管理上讲,处于禁用状态的端口不能参与帧的转发或形成STP。处于禁用状态下的端口实质上是不工作的。

说明:只有在学习状态或转发状态下,交换机才能填写MAC地址表。大多数情况下,交换机端口都处在阻塞或转发状态。但如果网络的拓朴改变了(如:链路失效或添加了一台新的交换机),交换机端口就会处于侦听或学习状态。

收敛

当网桥或交换机上的所有端口都转变到转发或阻塞状态时,就产生了收敛。在收敛完成之前,交换机不能转发任何数据。收敛是重要的,它用来确保所有的设备都有同样的数据库,但它确实会花一些时间。从阻塞状态转变到转发状态通常要花50秒。

生成树快速端口(PortFast)

如果你有一台服务器或其它设备连接到交换机上,而且可以保证在禁用STP时不会产生交换环路,那么就可以在这些端口上使用快速端口。使用快速端口意味着,当STP正在收敛时,端口不会花费通常的50秒才进入转发状态。在端口配置模式下:

Switch(config-if)#spanning-tree portfast

生成树上行链路快速(UplinkFast)

上行链路快速是Cisco产品特有的特性,当链路失效时,它可用来改进STP收敛时间,Cisco推荐仅当交换机典型地在接入层有被阻塞的端口时,才启用UplinkFast。允许交换机在primary link失效前,找出到根桥的可选路径。这意味着如果主链路失效,备份链路(secondary link)将更快地启用,端口将不会等待通常的50秒STP收敛时间。

生成树主干快速(Backbone Fast)

在本地交换机上,UplinkFast用来确定并快速修复链路失效。与UplinkFast不一样的是,Cisco有另外一个专用的STP扩展特性,称为主干快速,当某条链路并没有直连到失效的交换机时,就可以使用BackboneFast加速收敛。

特别重申:UplinkFast只能配置在接入层交换机上或带冗余链路的交换机上,而且至少有一条链路处于阻塞状态,而BackboneFast可以在所有的Catalyst交换机上启用,以便能够检测到非直连的链路失效。启用BackboneFast可在50秒的默认STP收敛时间中,它能节省20秒时间。

快速生成树协议(RSTP)802.1W

Cisco创建PortFast、UplinkFast、BackboneFast来“修补”IEEE802.1d标准中的漏洞和缺陷。这些特性的不足之处仅在于,它们是Cisoc专用的且需要进行额外的配置。但新的802.1w标准(RSTP)将所有这些“问题”都放在一个封包中解决了。重要的是,必须确信网络中所有的交换机都在正确地运行802.1w。当它与老的网桥交互作用时,802.1w内在的快速收敛能力将失效。

EtherChannel

将多条冗余链路捆在一起创建出逻辑聚合,这样,多条链路就可以像一条链路那样起作用。Cisco版本称为端口聚合协议(Port Aggregation Protocol ,PagP);IEEE的802.3ad标准则称为链路聚合控制协议(Link Aggregation Control Protocol ,LACP)。

8、配置Catalyst交换机

交换机的配置与路由器的配置大同小异,值得注意的几个方面是:

我们为交换机分配IP地址,对于网络功能来说,这并不是必需的。为交换机设置IP地址的唯一原因是,我们能够对它进行管理。IP地址是在逻辑接口下配置的,称为管理域或VLAN。

Switch>enable

Switch#config terminal

Switch(config)#hostname S1

S1(config)#enable secret todd

S1(config)#line console 0

S1(config-line)#password console

S1(config-line)#login

S1(config-line)#exit

S1(config)#line vty 0 15

S1(config-line)#password telnet

S1(config-line)#login

S1(config-line)#exit

S1(config)#interface vlan 1  //进入逻辑接口Vlan1

S1(config-if)#ip address 192.168.10.17 255.255.255.240  //为逻辑接口设置IP便于管理

S1(config-if)#no shutdown

端口安全

S1(config)#interface range fastethernet0/3-4  //进入端口F0/3和F0/4

S1(config-if-range)#switchport port-security maximum 1  //充许端口最大接入数为1

S1(config-if-range)#switchport port-security mac-address sticky

//接入设备的MAC地址自动关联,这样就不必手工输入每台设备的所有MAC地址了。

S1(config-if-range)#switchport port-security violation shutdown  //违规则关闭端口

S1(config-if-range)#spanning-tree portfast

//启用生成树快速端口

S1(config-if-range)#spanning-tree bpduguard enable

//为配置了portfast的端口开启BPDU护卫,可防止错误地在出现环路的端口上使用portfast。它会将该端口自动置为错误的禁用状态。该命令只在接入层交换机上使用。

S1(config-if-range)#spanning-tree bpdufilter enable

//为配置了portfast的端口开启BPDU过滤,与bpduguard不同的是,它将使端口保持打开,但不运行Portfast。

S1(config-if-range)#exit

S1(config)#spanning-tree uplinkfast

//启用生成树上行链路快速,它是一个全局命令,在每个端口上都可以启用。用于接入层交换机。用来在本地交换机上检测链路失效并修复。

S1(config)#spanning-tree backbonefast

//启用生成树主干快速,与uplinkfast不一样的是,它可在网络中所有交换机上配置,用来在远端交换机上检测链路失效并且修复。

9、配置EtherChannel

如:S1的F0/1、F0/2分别与Core交换机的F0/7、F0/8相连

对于S1:

S1(config)#interface port-channel 1  //创建逻辑聚合端口通道1

S1(config-if)#interface range f0/1-2  //捆绑接口F0/1、F0/2

S1(config-if-range)#switchport mode trunk  //定义为trunk(干线/中继)端口

S1(config-if-range)#switchport nonegotiate  //关闭端口自动协商,以阻止交换机试图自动检测链路类型,以及自动设置中继。

S1(config-if-range)#channel-group 1 mode desirable  //desirable选项:交换机主动要求形成一个EthernetChannel 并发送pagp分组。

对于Core:

Core(config)#interface port-channel 1

Core(config-if)#interface range f0/7-8

Core(config-if-range)#switchport trunk encapsulation dot1q  //中继线路封装802.1q协议

Core(config-if-range)#switchport mode trunk

Core(config-if-range)#switchport nonegotiate

Core(config-if-range)#channel-group 1 mode desirable

10、验证Cisco Catalyst交换机的配置

交换机上并不需要IP地址,在交换机上设置IP地址、掩码、和默认网关的唯一理由是出于管理的需要,它们都配置在vlan下:

S1#show running-config  //显示配置文件了解设备的大致情况

S1#show interface vlan 1  //显示vlan1下的IP地址、掩码等

S1#show mac address-table  //显示转发过滤表,也称内容可寻址内存(content addressable memory,CAM)表。

11、分配静态MAC地址

S1#config t

S1(config)#mac-address-table static aaaa.bbbb.cccc vlan 1 int fa0/5

//将MAC地址aaaa.bbbb.cccc静态地分配给vlan 1中的快速以太网端口fa0/5

12、生成树相关信息

S1#show spanning-tree  //显示生成树协议运行情况

S1#show spanning-tree vlan 2  //显示vlan 2的STP运行情况。每个vlan都运行它自己的STP。

13、确定根桥

a、首先看优先级,优先级小的胜出;

b、看MAC地址,MAC地址最小的设备胜出。

14、设置根桥

方法1:改变优先级

S1#config t

S1(config)#spanning-tree vlan 1 priority 16384

//优先级取值范围是0~61440,如果为0,表示那台交换机始终是根桥,如果为61440,就表示那台交换机永远不会成为根桥。

方法2:直接设置为根桥

S1(config)#spanning-tree vlan 1 root primary

//这个命令并不会覆盖低优先级的交换机,仅当所有的交换机都设置了相同或更高的优先级时,这个命令才起作用。

 

      目前CCIE RS 笔试和LAB 稳定,持续过人中,了解之前的PASS情况和咨询考试情况
      
      请加QQ:804990984 , 839898248

技术交流请加群:859273036,备注思唯官网
扫描二维码也可以加群哦:

 


Copyright © 2011-2023 思唯网络课堂 Swiers All Rights Reserved. | 浙ICP备17056685号