类别:CISCO / 日期:2019-10-09 / 浏览:770 / 评论:0

 STP的主要任务是防止第2层网络(网桥或交换机)出现网络环路。STP首先使用生成树算法(STP)创建一个拓扑数据库,然后找出并关闭冗余链路。

一、术语

根桥:指拥有最佳ID的网桥。由网络中所有交换机推选出来的最重要的点。一旦选举出来,所有其他的网桥都需要确定一个通往根桥的单一路径。通往根桥的最佳路径上的端口就被称为根端口。

BPDU所有交换机相互交换的、用于根交换机选举的信息。类似路由表数据,但BPDU是公用的。

桥ID:STP使用桥ID跟踪网络中所有交换机。桥ID由桥优先级(默认情况下所有思科交换机的优先级都是32768)和桥MAC地址共同决定。在网络中拥有最小桥ID的网桥将成为根桥。

非根桥:除了根桥外的所有网桥。

端口开销:当两台交换机间存在多条链路时,端口开销用于确定最佳路径。一条链路的开销取决于链路的带宽。

根端口:指与根桥直接相连的链路所在的端口,或者是通往根桥路径开销最低的端口。如果上行的多台交换机开销均相同,那么就使用带有较低通告的桥ID的那个桥。当多条链路连接到同一台设备时,就使用上行交换机上连接到最低端口号的端口。总结:直接相连》开销最低》带宽》较低通告的桥ID》最低端口。

指定端口:是专门指定的,通过其根端口到达根桥开销最低的端口。指定端口会被标记为转发端口。根桥的所有激活端口都叫指定端口。

非指定端口:是指开销比指定端口高的端口,也是剩下的端口。非指定端口将被设置为阻塞状态,不能进行转发。

转发端口:指能够进行数据转发的端口,可以是根端口也可以是指定端口。

阻塞端口:不能进行数据转发的端口。阻塞是为了防止环路。然而,阻塞端口会始终监听BPDU帧并丢弃其它帧。所以并不代表完全关闭,在等待机会。

二、生成树操作

STP的任务是找出网络中所有的链路,关闭任何冗余链路,从而阻止网络环路的出现。确定根桥后,每个网桥就必须找出属于它自己的一个并且也是唯一一个分派的根端口。任意两台交换机之间的链路必须要有一个而且只能有一个指定端口,该端口位于能够提供到根桥最大带宽的链路上。所以,网络的速度才是根本,其它的所谓最短路径、桥ID、是否直接相连等都是次要的。

在任何给定的网络中,只允许有一个根桥。

1、选举根桥

桥ID用于STP域中根桥的选举。这个ID长8B(IP地址:4B,MAC地址:6B),包含设备的优先级和MAC地址。默认优先级为32768。如果两个交换机或网桥碰巧拥有相同的优先级数值时,那么MAC地址就成为决定哪个设备具有最低(最佳)ID的依据。例:两台交换机A和B,它们的优先级都是32768,A的MAC是0000.0C12.1111,B的MAC是0000.0C12.2222。这样,交换机A将成为根桥。记住,在进行根桥选举时,取值越小的越好。总之,先判断优先级,取最小的;相同时再判断MAC,也取最小的。如果手工修改优先级,降低数值,从而自动成为根桥。例:

 

由上图可知:

(1)SW13是根桥,因为它的桥ID最小(从MAC来判断)

(2)SW12的F0/1端口被设置成阻塞。因为两条链路都是100Mb/s,STP通常会关闭端口号较高的那一条链路。这就是通常将低端口连设备的原因。注意:根桥的端口不能被阻塞,因为根桥的所有端口默认是指定端口。

修改默认优先级是选择根桥的最佳方式。挑选距离网络中心(机房)最近的交换机作为根桥,这样的配置可以保证STP的快速会聚,这一点很重要。

查看优先级命令:show spanning-tree

更改优先级命令:spanning-tree vlan X priority XXXX

例:

sw12(config)#spanning-tree vlan 1 priority 4444

注意,交换机内每个VLAN都有一个桥ID,如果交换机的优先级是10000,那VLAN 1的优先级是10001,VLAN 2的是10002,以此类推。当优先级设为0时,该交换机始终为根桥,但最好不要这样设。

2、生成树的端口状态

阻塞,侦听,学习,转发和禁用

大多数情况下,交换机的端口都处于阻塞和转发状态。

3、IEEE的开销

链路速度          开销

------------------------------------

10 Gbit/s         2

1  Gbit/s         4

100 Mbit/s        19

10 Mbit/s         100

4、如下图,哪个交换机会变成根桥,哪些端口又会变成根端口和指定端口呢?

先找出根桥。由于没特别说明,所以优先级看作是默认值,只好判断MAC,SW13的MAC最小,所以SW13是根桥。

由图可知,SW10和SW13交换机是使用百兆接口,SW11和SW12使用千兆接口。SW10到SW13有两条路径,开销值分别为19和19+4+19=42,两者取其最小,所以只取F0/1到SW13的F0/1这条19的路径。SW11到SW13的两条路径开销值为4+19=23和19+19=38,所以走SW11-SW12-SW13这条路径。同理,SW12到SW13的两条路径19和42选SW12-SW13这条19的路径。这样,用上的端口为SW13:F0/1、F0/2,SW12:G0/1、G0/2,SW11:G0/1,SW10:F0/1,这些端口都叫指定端口。剩下的只有SW10:F0/2和SW11:G0/2,叫非指定端口,产生阻塞不能通信。同时,SW10的桥ID比SW11的桥ID低(MAC地址判断),所以SW10的F0/2是转发端口,SW11的G0/2是阻塞端口,进入阻塞模式,防止环路出现。如下图:

 

5、命令

switch(config)# spanning-tree vlan 10    //启用生成树命令,在VLAN 10上启动,默认是VLAN 1

指定根网桥:Switch(config)#spanning-tree vlan vlan-list priority 网桥优先级

指定根网桥配置的优先级是4096的倍数

配置primary优先级是24576

配置secondary优先级是28672

网桥优先级默认为32768,取值范围为0到65535

Switch(config)#spanning-tree vlan 2 root { primary | secondary }

以上命令二选一

例:

SW12(config)#spanning-tree vlan 1 priority 16000    //将SW12手动设为根桥,因为16000小于默认值32768

修改某端口的成本:

switch(config)#int fastEthernet 0/1

Switch(config-if)#spanning-tree vlan 10 cost 100    //修改端口路径成本为100

修改某端口的优先级:

switch(config)#int fastEthernet 0/1

Switch(config-if)#spanning-tree vlan 10 port-priority 2345    //修改端口优先级为2345

switch#show spanning-tree    //查看stp 的配置

switch#show spanning-tree vlan 10 detail    //查看某个vlan的生成树详细信息

交换机上同时配置多个端口的命令是:interface range

switch(config)#int range fastEthernet 0/1 - 12    //多端口捆绑

switch(config-if-range)#spanning-tree portfast    //同时启用端口快速模式,不参与STP,通常接非交换机,如服务器等

int range命令可以与任何命令联合使用。

交换机上的IP地址是逻辑接口上的,一般是VLAN1上,交换机接口上不需要IP地址,也不需要路由选择协议。而且默认情况下,所有接口都是启用的。如果需要在局域网外部对交换机进行管理,则应该在交换机上设置默认网关,命令是:ip default-gateway。就像主机上完成默认网关一样。

switch(config)#ip default-gateway 192.168.10.1

三、网络聚合(EtherChannel)

如图,SW1的F0/1、F0/2、F0/3与SW2的F0/4、F0/5、F0/6相连,主要使用的命令有interface port-channel全局命令、channel-group命令等。

SW1

sw1(config)#int port-channel 1
sw1(config-if)#int range f0/1 - 3
sw1(config-if-range)#switchport mode trunk    //
配置成TRUNK模式

sw1(config-if-range)#switchport nonegotiate    //阻止交换机自动检测链路类型,以及自动建立中继。nonegotiate为非协商意思。

sw1(config-if-range)#channel-group 1 mode desirable    //设置静态中继链路。desirable为中继意思。

SW2:

sw2(config)#int port-channel 1
sw2(config-if)#int range f0/4 - 6
sw2(config-if-range)#switchport mode trunk 
sw2(config-if-range)#switchport nonegotiate 
sw2(config-if-range)#channel-group 1 mode desirable

验证命名:

sw2#show int port-channel 1

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章