生成树协议(STP)

基础的网络结构,如图1.1所示。

图1.1

这种网络结构的缺点,没有冗余,如果SW2或者SW3的GE0/0/1的端口线路断掉,那么两端的PC就不能互通,我们可以在SW2和SW3中间再连一条线路,如图1.2所示。

图1.2  设置冗余

但是这样做会导致3个问题

1.广播风暴

(1)PC1和PC2通讯,在网络通信的最初,PC1的ARP条目中没有PC2的MAC地址,根据ARP原理,PC1首先会发送一个ARP广播请求(请求PC2的MAC地址)给SW1。

(2)当SW1收到ARP广播请求时,根据交换机的转发原理,SW1会将广播帧从除接收端口外的所有的端口转发出去,即该广播会从GE0/0/1和GE0/0/2分别转发给SW2和SW3。

(3)SW2 收到广播帧后,同样根据交换机的转发原理,将广播帧从 GE0/0/2 和连接 PC2 的端口转发出去。同样,SW3 收到广播帧后,将其从GE0/0/2 端口转发出去。

同理,SW2从GE0/0/2端口收到从 SW3发送的广播帧后,将其从GE0/0/1和连接PC2的端口转发出去;同样,SW3收到从SW2发送的广播帧后,将其从GE0/0/1端口转发出去。其中的原理和过程(3)类似。

最后,SW1分别从SW2、SW3收到广播帧,再将从SW2收到的广播帧转发给SW3,而将从SW3收到的广播帧转发给SW2。

SW1、SW2与SW3会将广播帧相互转发,这时网络就形成了一个环路,而交换机之间并不知道这将导致广播帧在这个环路中永远循环下去。在实际网络环境中,情况要复杂得多,当广播帧经过交换机时,交换机就以指数的形式生成广播帧(交换机从除收到该广播帧外的所有端口转发广播帧)。这种广播帧会越来越多,最终形成广播风暴,如图1.3所示,导致网络瘫痪。

图1.3  形成广播风暴

这种广播风暴只有在物理环路消失时才可以停止

2.多帧复制

多帧复制也被称为重复帧传送,是指单播的数据帧被多次复制传送到接收端。很多协议都只需每次传输一个副本,而多帧复制会造成接收端收到数据帧的多个副本,不仅浪费了接收端的主机资源而且会导致上层协议在处理这些帧时无法选择,严重时还可能导致不可恢复的错误。

3.MAC地址表紊乱

如图1.4所示,PC1发出的数据帧到达SW1,假设3台交换机刚刚启动,MAC地址表为空,SW将从 GE0/0/1和GE0/0/2泛洪从PC1收到的数据帧,分别标记为数据帧①和数据帧②,数据帧②到达SW3之后,SW3通过自动学习,将学习到的MAC地址AA-AA-AA-AA-AA-AA对应到端口GE0/0/1。而数据帧①到达SW2之后,经过SW2的泛洪到达SW3,SW3又从端口GE0/0/2学习到MAC地址AA-AA-AA-AA-AA-AA,从而使SW3不停地修改自己的MAC地址表。同理,SW2也将通过GE0/0/和 GE0/0/2学习到相同的MAC地址,从而导致MAC地址表紊乱,最终导致MAC地址表被破坏,交换机无法正常转发数据。

图1.4  MAC地址表紊乱

STP简介

STP(Spanning Tree Protocol,生成树协议)就是把一个环形的网络结构改变成一个树形的网络结构,将物理上存在环路的网络,通过一种算法在逻辑上阻塞一些端口,将其修剪成一个逻辑上无环
的树形结构。在设置了SW1和SW2的通信端口阻塞后,在实际通信过程中,SW1和SW3的通信将通过SW2进行。

STP的主要作用:

消除环路:通过阻断冗余链路来消除网络中可能存在的环路。

链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。

如图1.5所示,3台交换机之间在物理链路上存在环路结构。启用STP后,STP会将某一个端口从逻辑上阻塞,这样该端口所在链路就不能再传输数据了,也就是从逻辑上打破了环路结构。一旦正常通信的链路发生故障,逻辑阻塞的端口就自动被重新激活,使数据能从该链路继续正常传输,如图 1.6所示。

图1.5

图1.6

一个根网桥

STP完成收敛的过程,就是把环形结构修剪为树形结构的过程,而树形的网络结构要先找到树根于是 STP引入了根网桥(Root Bridge)概念。

在一个启用了STP的网络中,根网桥有且只能有一个。它的作用是在STP完成收敛后,负责产生并定时向网络中发送配置BPDU,以维护STP网络中的拓扑信息和各项配置参数。而非根网桥会根据配置BPDU对自已保存的生成树信息进行更新,并对配置BPDU进行转发。

根网桥是一个STP网络的遇辑中心,但不一定是物理中心。(实际中最好都放一起)

3个选举步骤

1.选举根网桥

STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。

交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。

在如图1.7所示的拓扑中,设置SW3的优先级为4096,SW1与SW2的优先级保持默认值32768因此,SW3被选为根网桥。

图1.7  选举根网桥

2.选举根端口

非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。

交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口发送数据时的开销值,即出端口的开销。STP认为从一个端口接收数据是没有开销的。端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有出端口的端口开销总和,即根路径开销RPC(Root Path Cost)。非根桥根据根路径开销来确定到达根桥的最短路径,并生成无环树状网络。根桥的根路径开销是0。

运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID(port ID)可以用来确定端口角色。

每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠累计根路径开销来判定的,即累计根路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中累计根路径开销字段的值,加上该端口本身的路径开销即为累计根路径开销。如果有两个或两个以上的端口计算得到的累计根路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。

在如图1.8所示的拓扑结构中,已经选出了根网桥SW3,那么下一步就需要在SW1和SW2上各选择一个根端口。在本例中,所有的线路都是全双工100Mbits的,那么按照华为的计算标准,在SW1和SW2上直接与SW3相连的端口的根路径成本都是199,而SW1与SW2之间连接的端口,其根路径成本应该是199+199=398。因此,在SW1与SW2上,直接连接SW3的端口被选为根端口。

图1.8  选举根端口

3.选举指定端口

在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。 指定端口的选举也是首先比较累计根路径开销,累计根路径开销最小的端口就是指定端口。如果累计根路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计根路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。

网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

在如图1.9所示的拓扑结构中,作为根网桥的SW3上的端口都是指定端口,因此在SW1与SW2连接的网段上需要在两个端口之间选出一个指定端口。

图1.9  选举指定端口

先比较两个端口的根路径成本,这两个端口的根路径成本的值都是398(199+199),那么就只能比较BD了。BD由网桥优先级和网桥MAC地址组成,现在SW1与SW2的网桥优先级相同,SW1的MAC地址小于SW2的MAC地址,因此SW1的BID更小,SW1上的端口被选为指定端口。

总结:STP中定义了三种端口角色:指定端口,根端口和预备端口。

指定端口是交换机向所连网段转发配置BPDU的端口,每个网段有且只能有一个指定端口。一般情况下,根桥的每个端口总是指定端口。

根端口是非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口。

如果一个端口既不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值