130.每日一练
一、题目
[单选]在存在冗余的二层网络中,可以使用下列哪种协议避免出现环路?
A. ARP
B. STP
C. UDP
D. VRRP
二、答案
B
三、解析
通过在二层网络中冗余设备与线路,可以避免因为单台设备或单条线路故障而造成的用户网络服务中断。但这样的冗余方式可能会导致物理和逻辑上的二层环路。二层环路会带来以下三个问题:
- 广播风暴
当交换机接收到广播时,会将广播数据帧从除了接收端口以外的其他所有端口发送出去。当交换机之间形成物理上的链路环路时,广播帧会在所有交换机上反复发送与接收,导致所有的可用带宽都被耗尽,最终形成广播风暴,如下图所示。广播风暴一旦形成,交换机将无法正常的通讯,所有接口的传输指示灯将异常频繁闪烁,用户网络服务将异常缓慢甚至中断,如图 4‑11所示。
图 4‑11 广播风暴
- MAC地址表不稳定
数据包的TTL属性能够使得当路由环路时,数据包逐渐达到最大值,路由器可以对达到最大值的数据包进行丢弃处理,从而避免浪费链路带宽。而以太网数据帧没有TTL的设计,因此当二层环路存在时,未知的数据帧可能会在交换机之间乱窜。
交换机接收到未知的数据帧时,会将该数据帧从除了接收端口以外的所有端口发送出去。当二层环路存在时,可能会导致交换机连续从不同的端口学习到相同的MAC地址,从而导致MAC地址表不断刷新,如图 4‑12所示。
图 4‑12 MAC地址表不稳定
- 帧的多重传输
当未知的数据帧在交换机之间乱窜时,除了会造成MAC地址表不稳定以外,同时由于交换机会从多个接口接收到相同的数据帧副本,很多协议无法处理重复帧,可能会造成不可恢复的错误。
二层冗余网络的存在是必要的,为了避免冗余网络产生的这些问题,必须在交换机上启用生成树协议。生成树(Spanning Tree Protocol,STP)能够有效解决冗余链路带来的环路问题,大大提高网络的健壮性、稳定性、可靠性和容错性。
4.1.1 生成树协议简介
为了解决二层冗余带来的问题,IEEE委员会设计了多个版本的生成树协议来不断升级迭代优化二层网络的环路问题。
当前,生成树协议主要有以下三个版本:
标准生成树协议(STP):采用IEEE802.1D标准。通过算法来实现在二层冗余网络中,选择冗余端口使其处于阻塞状态。从而网络中只存在有一条生效的链路,避免冗余网络造成的广播风暴等问题。当这条链路发生故障时,生成树协议会重新计算最佳路径,将阻塞端口打开,从而恢复网络的数据传输。工作在标准生成树协议下的交换机,所有VLAN的流量都将走同一路径。
快速生成树协议(RSTP):采用IEEE802.1W标准。快速生成树协议是对标准生成树协议的改进。在标准生成树网络中,任何二层网络的变化,包括链路、交换机失效等都会引起生成树的重新计算,而这一过程往往长达几十秒的时间。在这几十秒内,整个网络将无法通讯,造成严重的通讯故障。快速生成树协议进行了许多改进,例如对端口状态的改进等,使得二层网的收敛时间大大减少,一般只需要几秒钟的时间。在当今的网络中,快速生成树已经完全取代了标准生成树,获得了大量的使用。
多实例生成树(MSTP):采用IEEE802.1S标准。在普通生成树与快速生成树中,所有VLAN的流量将走同一条链路,而阻塞链路不传输任何流量,造成了带宽的浪费。多实例生成树继承了快速生成树的优点,并引入了一种称为“实例”和“区域”的概念。多实例生成树通过在区域中设置实例,不同的实例绑定不同的VLAN,不同实例设置不同的生成树优先级,从而实现流量在多条链路上负载均衡同时又不会造成冗余而引起的广播风暴等问题。可以说MSTP是对生成树协议的极大改进。华为交换机默认采用此种方式。
4.1.2 生成树协议工作原理
- STP中的术语
在学习生成树工作原理之前,我们要先了解关于桥、桥MAC、桥ID和接口ID这四个术语。
桥:早期的交换机由于性能方面的限制,一般只有两个接口,被称为网桥或者简称为桥。这个术语一直沿用至今,泛指采用任意多个接口的以太网交换机。桥与交换机这两个术语完全是同一个概念只是说法不同而已。
桥MAC:一个桥具有多个接口,每个接口都有一个MAC地址。桥MAC为接口编号最小的接口的MAC地址。是组成桥ID的一个部分。
桥ID:桥ID由桥优先级与桥MAC地址所组成。一共8个字节,前两个字节为桥的优先级,默认为32768,必须为4096的倍数。后6个字节为桥MAC地址。两台交换机之间的桥ID比较,先比较优先级。优先级数字小的越优先。优先级一样的情况下,再比较桥MAC地址。MAC地址数小的越优先。
接口ID:接口ID由2字节所组成。第一个字节代表该接口的优先级,后一个字节代表接口编号。
根路径开销:在生成树中同样使用线路开销来衡量从一个节点到另一个节点的远近程度。根路径开销是指从当前设备到达根桥的完整路径的开销之和。开销的计算与链路的带宽相关联。常见的开销如下表所示:
表格 4‑1 根路径开销表
序号 | 链路带宽 | 开销 |
1 | 10M | 100 |
2 | 100M | 19 |
3 | 1000M | 4 |
4 | 10000M | 2 |
例如交换机A到达根桥交换机C,经过了2条千兆链路和1条万兆链路,那么总的开销就是4+4+2=10。
网桥协议数据单元:在生成树计算的整个过程中,网桥之间的信息通讯尤为重要,例如网络中要选举出根桥,每台交换机都必须同步各自的桥ID。网桥协议数据单元(Bridge Protocol Data Unit,BPDU)就专为网桥之间的信息沟通而设计。无论交换机端口是否阻塞,都必须接收BPDU。交换机之间通过周期发送的网桥协议数据单元(BPDU)来发现网络中的环路,并通过阻塞有关接口来断开环路的。STP当中有两种类型:配置BPDU和拓扑变更BPDU。
- STP工作原理
当生成树开始工作时,它将执行以下步骤从而关闭冗余链路来防止网络环路的产生:
①选举根桥,作为整个网络的根
②确定根端口,确保非根桥与根桥之间为最短路径的最优端口
③确定指定端口,确保每条链路与根桥之间为最短路径的最优端口
④阻塞备用端口,形成一个无环的网络
1.选举根桥
根桥的选举通过交换机之间交互BPDU来协商完成。在交换机上电后,都会自认为自己是根桥,发送和接收BPDU。通过比较接收到的BPDU,如果发现自己的桥ID更大,将不再发送BPDU。最终通过协商,将选出一台桥ID最小的交换机作为根桥。
如图 4‑13所示,三台交换机都使用了默认的桥优先级值32768。在优先级一致的情况下,交换机SW1的桥ID最小,所以最终交换机SW1被选举为根桥。根桥上的所有端口都是指定接口,都会进入到转发状态。
图 4‑13选举根桥
2.确定根端口
当根桥确定后,其他非根桥都要确定根端口。根端口即该非根桥上与根桥最近距离的端口。这个最近距离不看具体经过几条链路,而是看经过的所有链路的开销是否最小。非根桥上只能有一个端口成为根端口,同一个网段上和根端口相连的另一个接口将成为指定端口。根端口按照以下规则进行选举:
①到达根桥的路径开销(Root Path Cost ,RPC)最小的端口。路径开销指的是从该端口前往根桥所经过的所有路径的开销之和。假如这个开销之和最小,那么该端口即为根端口。
如图 4‑14所示,SW1已被选举为根桥,且知道每条链路速率,可通过比较非根桥各端口到达根桥的路径开销来确定指定端口。SW2的F0/2端口的RPC为19,F0/3 端口的RPC为38,RPC较小的那个端口为自己的根端口,因此,交换机SW2把F0/2 端口确定为自己的根端口,同样的道理,SW3将F0/2端口确定为自己的根端口。
图 4‑14 确定根端口
②假如存在几个端口到达根桥的路径开销相同时,比较其上行设备的桥ID,桥ID较小的端口为根端口。
③假如上行设备的桥ID也相同时,比较自己的端口ID,端口ID较小的为根端口。
3.确定指定端口
根桥交换机的所有端口都为指定端口。和根端口直接相连的接口为指定端口。每一物理网段只有一个指定端口。每台交换机可以有多个指定端口,但只能有一个根端口。
如图 4‑15所示,SW1为根桥,SW2的BID小于SW3的BID,且每条链路的开销相同。我们可以根据前面讲的确定根端口的方法和指定端口的特点,验证三台交换机各自端口的角色。这里需要特别指出的是,根桥上不存在任何根端口,只存在指定端口。
图 4‑15 STP生成树的指定端口
4.阻塞备用端口
确定完根端口和指定端口后,其他所有的非根端口和非指定端口都是备用端口。备用端口进入阻塞状态后,不能转发用户发送的数据帧,但是可以接收和处理生成树的协议帧。
如图 4‑16所示,交换机SW3上的f0/3被确定为阻塞备用端口,STP树的生成过程便宣告完成。这时阻塞端口不能转发用户数据帧,但可以接收并处理STP的协议帧,当链路出现故障时,STP协议将会重新计算出网络的最优链路,将处于阻塞状态的端口重新打开,确保网络连接稳定。
图 4‑16 阻塞备用端口
4.1.3 生成树协议端口状态
生成树除了三种端口角色:根端口、指定端口、备用端口以外,还将端口分为了5种工作状态,如表格 4‑2所示。这5种工作状态主要用于防止生成树收敛过程中可能造成的临时环路。
表格 4‑2 生成树端口状态
端口状态 | 接收生成树协议帧 | 转发生成树协议帧 | MAC地址学习 | 转发用户数据帧 |
阻塞(Blocking) | √ | × | × | × |
侦听(Listening) | √ | √ | × | × |
学习(Learning) | √ | √ | √ | × |
转发(Forwarding) | √ | √ | √ | √ |
禁用(Disabled) | × | × | × | × |