27-交换机,STP

1.STP(Spanning Tree Protocol生成树协议)的技术背景:
0
 
1)关于环路:
    例如,下面三个交换机互相连接,可能会导致环路(数据包从lsw1-lsw2-lsw3-lsw1-lsw2-...,一直发停不下来)
    路由器有避免环路的机制,例如ttl,最大转发16次后丢包;
    但交换机没有这种机制;
    STP技术就是用来避免交换机环路的;
 
 
2)二层网络设计的需求和问题:
  • 为了提高可靠性,交换机之间会通过多条链路相连,从而避免单点故障。
  • 但也会带来一些致命的环路问题。
如图:
    可靠性差的网络拓扑结构;
    当一条链路故障,或交换机故障时,会导致单点故障,也就是其下面的网络全部瘫痪;
 
为了提高可靠性、避免单点故障的产生,通常在设计拓扑图时,会添加一个冗余的交换机;
当其中一条链路挂掉后,另外一条还能继续使用,网络不会瘫痪;
但这样设计可能会导致环路的产生,如下图红色和蓝色的路线,数据包可能会在三个交换机之间一直传递下去;
0
 
 
3)环路问题的后果:
网络体验差、延迟高、丢包
极大占用链路带宽资源和设备资源,造成大量的垃圾流量
网络广播风暴
MAC地址表项不稳定
重复的帧拷贝
 
1】广播风暴
如下图,主机A给主机B发送消息;
首先A不知道B的mac地址,于是发送一个arp包;
如果三个交换机都关闭了stp(命令:stp disable)
将导致arp包不停在三个交换机之间循环发送;
导致的结果是:极大消耗设备的资源,导致网络体验变差;
0
关掉stp后抓包,可以看到一直发送的arp包;
0
 
2】mac地址表震荡
交换机总的mac地址表是从接收到的数据帧里面源mac地址来的;
如下图:
    主机A的mac地址为xxxx-AA;
    A给交换机B发送一条数据帧;
    SWB收到后,从数据帧二层以太网头中找到源mac地址,并记录在mac地址表中;
    由于是从g0/0/3口收到的数据,mac地址表中会记录下:mac地址xxxx-AA    接口g0/0/3;
    如果关闭了stp导致环路后,数据帧会转发到SWC;
    SWC会转发给SWB,SWB收到后也会从以太网头中找到源mac,并且在mac地址表记录:mac地址xxx-AA 接口g0/0/2;
    由于一条mac地址只能对应一个接口,原来记录的主机A的mac地址表记录被删掉;
    当主机A再次给SWB发送消息时,SWB中mac地址表会再次被修改,变成:mac地址xxxx-AA    接口g0/0/3;
0
 
用命令查看交换机的mac地址表:dis mac-address
    可以看到,由于环路,导致mac地址表中 5489-98f6-4f43对应的接口一直变来变去; 
 
 
2.STP的作用:
 
功能
备注
消除环路
通过阻断冗余链路来消除网络中可能存在的环路
链路备份
当正常工作的链路出现问题,激活备份链路,及时恢复网络连通性
 
如图,stp通过阻断SWC的左接口来达到阻止环路的作用;
    也就是说,从swb-swa-swc的消息不会再发回个swb了,因为stp机制导致swc-swb的由于接口被阻断这条线路也断了;
    stp在保证阻止环路的同时并不会破坏链路的可靠性,当活动链路出现问题时,会激活备份链路;
    比如正常情况下,数据走的是swb-swa-swc;
    如果swa挂了,swc的左接口将不再阻塞,从swb发出来的消息会直接转发给swc;
0
 
 
3.STP的作用机制
STP通过构建一颗树来消除交换网络中的环路;
0
根桥是一台交换机;(一个树形结构有一个根节点)
根端口是非根桥交换机的一个端口;
非根桥交换机会从它的众多端口中选举出一个根端口,从根桥过来的流量就走根端口;
非根桥交换机的剩余端口将被阻塞,从而防止环路的产生;
 
1)BPDU:Bridge Protocol Data Unit 桥协议数据单元(桥就是交换机)
STP协议的数据包称为BPDU;
叫桥是因为当时的交换技术叫网桥,stp是哪个年代的产物于是也名字中有桥;
开启了stp的交换机会周期性的发送STP数据包;
使用组播地址:01-80-C2-00-00-00
 
如图:BPDU的字段,stp就是靠这些字段来完成选举的;
0
1】PID:STP的类型
有三种类型:STP、RSTP、MSTP
 
2】PVI:版本
华为交换机有三种模式:STP、RSTP、MSTP
默认开启stp,默认模式为mstp
 
3】BPDU Type:BPDU 的数据包类型
有两种类型:配置类型configuration、拓扑变更通告TCN(Topology Change Notification)
  • 配置BPDU:configuration
    • 选举根交换机以及确定每个交换机的角色和状态。(用来选举根桥)
    • 在初始过程中,每个桥都主动发送配置BPDU。
    • 在网络拓扑稳定后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU。(根桥选出来后)
    • 发送周期为Hello Time。(默认值为2,2秒发一次)
    • 老化时间为Max Age。
  • 拓扑变更通告BPDU:TCN BPDU
            下游交换机感知到拓扑变化时向上游发送的拓扑变化通知。
 
配置BPDU的数据包结构:
0
拓扑变更BPDU的数据包结构 :
0
4】Flags:标记
占一个字节8位,每一位表示不同的意思;
 
如果模式是STP,则只是用了最高为和最低位,用于确认TCN
 
如果模式是MSTP,则8位都使用;
 
 
4.BPDU中选举桥角色和端口状态的4个字段
0
 
参数
描述
Root ldentifier
发送此配置BPDU的交换机所认为的根交换机的标识
 
Root Path Cost
从接收此根桥的配置BPDU的交换机到达根交换机的最短路径总开销
 
Bridge identifier
标识自己的BID
 
Port Identifier
发送此配置BPDU的交换机端口的端口标识
 
 
 1)桥id:Bridge identifier
告诉其它交换机我是谁;
查看桥id的命令:dis stp
 
桥id的结构为:数字.mac
0
优先级比较时:从高位比较再到低位(先比优先级,一样则比mac地址);值越小越优先。
 
2)端口id:Port Identifier
查看命令:dis stp
可以看到交换机lsw1的g0/0/1端口的id=128.25
 
端口id的结构:优先级.编号
0
比较优先级时:从高位比较再到低位(先比优先级,一样则比较端口编号);值越小越优先
端口编号与实际接口无关,是一个流水号
 
3)根路径开销:Root Path Cost
表示我到根桥有多远;
查看命令:dis stp
 
根路劲开销Root Path Cost是路径开销path cost累加起来的结果
0
 
链路的开销标准:
    华为的交换机有三种开销标准:dot1d-1988(d标准)、dot1t(默认,t标准)、legacy(华为私有);
 
如下表:
    按照t标准,1000Mbps口的cost=20000
    如果两条1000Mbps链路聚合,则cost = 10000(链路聚合后带宽增加,开销减少)
    三条1000Mbps链路聚合,cost = 6666
    100Mbps口的cost=200000
0
(华为设备所支持的链路开销标准,使用链路聚合的开销=开销标准/链路数量)
 
计算根路径开销的示例:(这里使用d标准)
    (从根桥发出的开销为0,在根据自己所有收到的接口到根桥的开销相加,取最小的开销值,就是根路径开销)
0
如上图:
    sw1是根桥(根交换机),sw1发送的BPDU中,字段Root Path Cost = 0;(我到我自己是0)
    BPDU数据到被sw2接收,sw2的左接口是100Mbps链路,按b标准查表得path cost=19;根路径开销Root Path Cost = 0 + 19 = 19;
    sw2将BPDU的一些字段做修改,然后从另一个接口转发出去;转发出去的BPDU中根路径开销Root Path Cost = 19;
    sw3的左接口是10Mbps带宽,按b标准  path cost=100;所以sw3的根路径开销 Root Path Cost = 19 + 100 =119;      
 
Root Path Cost中记录的是当前交换机到根交换机最短的开销,如果到达指定交换机有多条路径,则选开销最小的;这关系到交换机转发时的选路;
 
 
 
posted @ 2021-05-14 01:23  L丶银甲闪闪  阅读(247)  评论(0编辑  收藏  举报