1.二层环路问题
交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中断等问题。
二层环路的典型问题:
广播风暴:
根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
本例中,SW3收到了一个广播帧将其进行泛洪,SW1和SW2也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SW3,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。
MAC地址表漂移:
交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。
本例中,SW3收到一个广播帧泛洪,SW1从GE0/0/1接口接收到广播帧后学习且泛洪,形成MAC地址5489-98EE-788A与GE0/0/1的映射;SW2收到广播帧后学习且泛洪,SW1再次从GE0/0/2收到源MAC地址为5489-98EE-788A的广播帧并进行学习,5489-98EE-788A会不断地在GE0/0/1与GE0/0/2接口之间来回切换,这被称为MAC地址漂移现象。
2.生成树协议
STP:
通过构造一棵树来消除交换网络中的环路
运行STP算法,在网络中部署生成树后,交换机之间会进行生成树协议报文的交互并进行无环拓扑计算,最终将网络中的某个(或某些)接口进行阻塞(Block),从而打破环路。
STP是一个用于局域网中消除环路的协议,运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路
华为交换机是默认开启这些功能的
动态响应
交换机上运行的生成树协议会持续监控网络的拓扑结构,当网络拓扑结构发生变化时,生成树能感知到这些变化,并且自动做出调整。
因此,生成树既能解决二层环路问题,也能为网络的冗余性提供一种方案。
如图,交换机上运行STP协议,会通过报文监控网络的拓扑结构,正常情况下是将SW3上的一个接口进行阻塞(Block),从而打破环路,当监控到SW1与SW3之间出现链路故障,则恢复阻塞端口进入转发状态。
3.二层和三层环路
三层:
常见原因:路由环路
动态路由协议有一定的防环能力,IP报文头部中的TTL字段可用于防止报文被无止尽地转发
二层:
常见原因:网络中部署了二层冗余环境,或人为的误接线缆导致
需借助特定的协议或机制来实现二层防环,二层帧头并没有任何信息可用于防止数据帧被无止尽地转发
4.STP的基本概念
桥ID | bridge ID,BID 1.IEEE 802.1D标准中规定BID由16位桥优先级(Bridge priority)与桥MAC地址构成 2.每一台运行STP的交换机都拥有一个唯一的BID,BID桥优先级占据高16bit,其余的低48bit是桥MAC地址 3.在STP网络中,BID最小的设备会被选为根桥,在STP网络中,桥优先级可以配置的,取值范围是0~65535,默认值为32768,可以更改但是修改值必须是1024的倍数。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小越优先 在下面图中,需要在该网络中选举根桥,首先比较三台交换机的桥优先级,桥优先级都为4096,再比较三台交换机的MAC地址,谁小谁优先 |
根桥 | root bridge 1.STP的主要作用之一是再整个交换机中计算一颗无环的“树”(STP树) 2.根桥是一个STP交换网络中的“树根” 3.STP开始工作后,会在交换网络中选举一个根桥,根桥是生成树进行拓扑计算的“参考点”,是STP计算得出得无环拓扑得“树根” 4.在STP网络中,桥ID最小得设备会被选举为根桥 5.对于STP网络,根桥在全网中只有一个,它是整个网络的逻辑中心,但不一定是物理中心。根桥会根据网络拓扑得变化而动态变化 6.网络收敛后,根桥会按照一定得时间间隔产生并向外发送配置BPDU,其他设备仅对该报文进行处理,传达拓扑变化记录,从而保证拓扑得稳定 |
Cost | 1.每一个激活了STP的接口都维护着一个Cost值,接口的cost主要用于计算根路径开销,也就是到达根的开销 2.接口的缺省Cost除了与速率,工作模式有管,还与交换机使用的STP Cost计算方式有关 3.接口带宽越大,则Cost值越小 4.用户也可以根据需要通过命令调整接口的cost 5.华为交换机支持多种STP的路径开销计算标准,提供多厂商场景下最大程度的兼容性。缺省情况下,华为交换机使用IEEE802.1t标准来计算路径开销 |
RPC | root path cost,根路径开销 1.在STP的拓扑计算过程中,一个非常重要的环节就是“丈量”交换机某个接口到根桥的“成本” 2.一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的cost累加 从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接受BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径凯西奥被称为RPC,并生成无环树形网络。根桥的根路径开销是0 在本例中,SW3从GE0/0/1接口到达根桥的RPC等于接口1的cost加上接口2的cost |
接口ID | port ID,PID 1.运行STP的交换机适用接口ID来表示每个接口,接口ID主要用于在特定场景下选举特定接口 2.接口ID由两部分构成的,高4 bit是接口优先级,低12 bit是接口编号 3.激活STP的接口会维护一个缺省的接口优先级,在华为交换机上,该值为128.用户可以根据实际需要,通过命令修改该优先级 运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0~240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID可以用来确认端口角色 |
BPUD | bridge protocol data unit,网桥协议数据单元 1.BPDU是STP能够正常工作的根本,BPDU是STP的协议报文,为了计算生成树,交换机之间需要交换相关的信息和参数,这些信息和参数被封装在BPDU中 2.STP交换机之间会交互BPDU报文,这些BPDU报文携带着一些重要信息 3.BPDU分类: 1.配置BPDU(configuration BPDU) 配置BPDU包含了桥ID,路径开销和端口ID等参数。STP协议通过在交换机之间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU。 在网络拓扑稳定以后,只有根桥主动发送配置的BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU 2.TCN BPDU(topology change notification BPDU) TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知 4.配置BPDU是STP进行拓扑计算的关键;TCN BPDU只在网络拓扑发送变化时才被触发 5.BPDU的报文格式
字节 | 字段 | 描述 | 2 | PID | 协议ID,对于STP而已,该字段的值总为0 | 1 | PVI | 协议版本ID,对于STP而言,该字段的值总为0 | 1 | BPDU Type | 指示本BPDU的类似,若值为0x00,则表示报文为配置BPDU;若值为0x80;则为TCN BPDU | 1 | Flags | 标志,STP只使用了该字段的最高及最低两个比特位,最低位是TC(Topology Change,拓扑变更)标志,最高位是TCA(Topology Change Acknowledgment,拓扑变更确认)标志 | 8 | Root ID | 根网桥的桥ID | 4 | RPC | 根路径开销,到达根桥的STP Cost | 8 | Bridge ID | BPDU发送桥的ID | 2 | Port ID | BPDU发送网桥的接口ID(优先级+接口号) | 2 | Message Age | 消息寿命,从根网桥发出BPDU之后的描述,每经过一个网桥都减1,所以他本质上是到达根桥的跳数 | 2 | Max Age | 最大寿命,当一段时间未收到任何BPDU,生存期到达最大寿命时,网桥认为该接口连接的链路发送故障。默认20s | 2 | Hello Time | 根网桥连续发送BPDU之间的时间间隔,默认2s | 2 | Forward Delay | 转发延迟,在侦听和学习状态所停留的时间间隔,默认15s |
6.比较BPDU的原则 在配置BPDU中,有四个字段非常关键,STP会按照如下顺序选择最优的配置BPDU: 1.最小的根桥ID 2.最小的RPC 3.最小的网桥ID 4.最小的接口ID 第一条原则主要用于在网络中选举根桥,后面的原则主要用于选举根接口及指定接口 7.STP对应的操作 1.选举一个根桥 2.每个非根交换机选举一个根端口 3.每个网段选举一个指定端口 4.阻塞非根,非指定接口 STP定义的三种端口角色: 指定端口,根端口和预备端口 1.指定端口: 交换机向所连网段转发配置BPDU的端口,每个网段有且只有一个指定端口。一般情况下,根桥的每个端口总是指定端口 2.根端口: 非根交换机去往根桥路径最优的端口。在一个运行STP协议的交换机上最多只有一个根端口,但根桥上没有根端口 3.如果一个端口即不是指定端口也不是根端口,则此端口为预备端口。预备端口将被阻塞 配置BPDU的转发过程 交换机在刚启动·时都认为自己是根桥,互相发送配置BPDU进行STP运算 |
5.STP计算过程
1.在交换网络中选举一个根桥 | 1.STP在交换网络中开始工作后,每个交换机都会向网络中发送配置BPDU。配置BPDU中包含交换机自己的桥ID 2.网络中拥有最小桥ID的交换机成为根桥 3.在一个连续的STP交换完了过中只会存在一个根桥 4.根桥的角色是可抢占的 5.为了确保交换网络的稳定,需要提前规划STP组网,并将规划为根桥的交换机的桥优先级设置为最小值0 如图: 根桥的选举先比较优先级,交换机SW1,2,3的优先级相同,则比较MAC地址,也优选最小的,所以SW1的BID最小,因为SW1为根桥,SW2和SW3为非根桥 这里演示一下,使用display stp查看谁是根桥 使用display int valn 1,查看mac地址,看到我这里LSW2被分为了根桥 |
2.在每台非根桥上选举一个根接口 | 1.每一台非根桥交换机都会在自己的接口中选举出一个接口 2.非根桥交换机上有且只会有一个根接口 3.当非根桥交换机有多个接口接入网络中时,根接口是其收到最优配置BPDU的接口 4.可以形象地理解为,根接口是每台非根桥上“朝向”根桥的接口 根端口: 1.一个非根桥设备上会有多个端口与网络相连,为了保证从某台非根桥设备到根桥设备的工作路径是最优且唯一的,就必须从非根桥设备的端口中确定出一个被称为“根端口”的端口,由根端口来作为该非根桥设备与根桥设备之间进行报文交互的端口 2.在选举出根桥后,根桥仍然持续发送BPDU,而非根桥将持续不断的收到根桥发送的BPDU。因此,在所有非根桥上选举一个距离根桥“最近”的端口(根端口),在网络收敛后,根端口将不断的收到来自根桥的BPDU 这就说根端口保证了交换机与根桥之间工作路径的唯一性和最优性 选举过程: 1.交换机由多个端口接入网络,各个端口都会收到BPDU报文,报文中会携带“RootD,RPC,BID,PID”等关键字段,端口会针对这些字段进行PK 2.首先比较根路径开销(RPC),STP协议把根路径开销作为确定根端口的重要依据。RPC值越小,越优选,因此交换机会选RPC最小的端口作为根端口 3.当RPC相同时,比较上行交换机的BID,即比较交换机各个端口收到的BPDU的BID,值越小,越优选,因此交换机会选上行设备BID最小的端口作为根端口 4.当上行交换机BID相同时,比较上行交换机的PID,即比较交换机各个端口收到的BPDU的PID,值越小,越优先,因此交换机就会选上行设备PID最小的作为根端口 5.当上行交换机的PID相同时,则比较本地交换机的PID,即比较本端交换机各个端口各自的PID,值越小,越优先,因此交换机会选端口PID最小的端口作为根端口 看下面的图,这里根树到两个直连交换机的接口,肯定是根端口了 看下我的实验环境 我们查看一下 display stp brief 看到LSW1的1号口是根端口 |
3.在每条链路上选举一个指定接口 | 1.根端口选举出来后,非根桥会使用其在该接口上接受的最优BPDU进行计算,然后将计算得出的配置BPDU与除了根接口之外的其他所有接口所收到的配置BPDU进行比较(自己发的BPUD,比对端发来的BPDU更优,则为指定端口): 如果前者更优,则该接口为指定接口(根接口更优,这个接口,发的BPDU,比收到的BPDU更优,就是指定端口) 如果后者更优,则该接口为非指定接口(非根接口更优) 一般情况下,根桥的所有接口都是指定接口 指定接口: 1.网络中每个链路与根桥之间的工作路径必须时唯一的且最优的。当一个链路有两条及以上的路径通过根桥时(该链路连接了不同的交换机,或者该链路连接了同一台交换机的不同端口),与该链路相连的交换机据必须确定出一个唯一的指定端口 2.因此,每个链路选举一个指定端口,用于向这个链路发送BPDU 3.一般情况,根桥上不存在任何根端口,只存在指定端口 选举过程: 1.首先比较根路径开销(RPC),值越小,越优选,因此交换机会选RPC最小的端口作为指定端口 2.若RPC相等,则比较链路两端的BID,值越小,越优选,因此交换机会选BID最小的交换机的端口作为指定端口 3.若BID相等,则比骄傲链路两端端口的PID,值越小,越优选,因此交换机会选PID最小的交换机的端口作为指定端口 看下图,SW1上面的两个接口都是指定接口,主要是因为,这两个接口BPUD肯定比收到的BPDU更优,因为它就是根树的端口,RPC啥肯定比直连两个交换机的接口要打 而SW3的接口又一个非指定接口,主要还是因为RPC相同的情况下,因为BID等因素更高的原因 看下我的实验环境 LSW2都是指定接口 LSW1的2号口是指定接口 |
4.非指定接口被阻塞 | 1.一台交换机上,既不是根接口,又不是指定接口的接口被称为非指定接口 2.STP操作的最后异步是阻塞网络中的非指定接口。着一步完成后,网络中的二层环路就此消除 非指定端口(预备端口): 在确定了根端口和指定端口之后,交换上所有剩余的非根端口和非指定端口统称为预备端口 阻塞非指定端口: 1.STP会对这些非指定端口进行逻辑阻塞,即这些端口不能转发又终端计算机产生并发送的帧(用户数据帧) 2.一旦非指定端口被螺丝阻塞后,STP树(无环路工作拓扑)就生成了 看下我的实验环境 这里lsw3的2口是非指定接口 LSW3的二号口为非指定端口,主要还是自己的BID要大一点 总结一下我的实验STP大概样子就是这样 |
6.STP的缺点
1.STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断
2.STP没有细致区分接口状态和接口角色
3.网络协议的优劣往往取决于协议是否对各种情况加以细致区分
1.从用户角度来讲,Listening,learning和blocking状态并没有区别,都同样不转发用户流量
2.从使用和配置角度来讲,接口之间最本质的区别并不在于接口状态,而是在于接口扮演的角色
3.根接口和指定接口可以都处于listenng状态,也可以都处于forwarding状态
4.STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢
5.STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传播整个STP网络。这也是导致拓扑收敛慢的主要原因
在以太网交换网中部署生成树协议后,如果网络出现环路,生成树协议通过拓扑计算,可实现:
1.消除环路:
通过阻塞冗余链路消除网络中可能存在的网络通信环路
2.链路备份:
当前活动的路径发生故障时,激活冗余备份链路,恢复网络连通性