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中记录的是当前交换机到根交换机最短的开销,如果到达指定交换机有多条路径,则选开销最小的;这关系到交换机转发时的选路;