交换网络-生成树STP(IEEE 802.1D)

生成树存在的原因

链路聚合是线路的冗余,而在做设备的冗余时,会出现二层环路(造成广播风暴及MAC地址表反复重写),而STP的作用就是防止成环;

本质上,stp的目的就是将整个二层网络的拓扑修剪成一个树状图(有根<设备>,根端口<到根近的端口>,指定端口<to终端or非跟设备>),凡是阻止成树的链路均Block掉(Alternate Port<竞选Designate Port失败的端口>);

生成树中的术语

根桥<root bridge>:整个二层网络所形成的生成树的根节点,所有设备中最优的<选举规则,桥ID最小>;

指定桥<designate bridge>:即非根桥,一个二层网络范围内选举失败的设备;

根端口<root port>:指定桥上到根桥最近的那个端口<选举规则,到根的cost最小-->端口ID最小>;

指定端口<designate prot>:转发数据和BPDU的端口,so根桥上所有端口都是designate port;

备份端口<alternate port>:接收BPDU,不转发任何数据,即Block接口;

桥ID:8字节,前两个字节为priority,后六字节为设备MAC地址,priority共占用2个字节,其中后12bit为vlan id(0-4095),前4bit为桥优先级(所以桥优先级为4096的倍数);

路径Cost:指某端口到根桥的cost,STP中每条链路都具有开销值,默认的开销值取决于链路的带宽,带宽越大,开销越小;

BPDU<Bridge Protocol Data unit>:用于交互生成树信息,分为配置BPDU<计算和维护生成树拓扑>及TCN BPDU<拓扑改变时,同步改变信息>;

接口状态

禁用(Disable):不能收发BPDU,也不能收发数据帧,二层端口激活的最初状态,会自动进入下一状态;

阻塞(Blocking):接口被STP阻塞,收BPDU,但不发送BPDU和数据帧,如果在Max age<默认20s>内如果没有收到任何BPDU报文,会进入listening状态;

侦听(Listening):STP初步认定该接口为根接口或指定接口,STP在此状态进行选举,可以收BPDU,计算后发出自己的BPDU,不能收发数据帧,也不能进行MAC地址学习,会停15s<转发延迟计时器>;

学习(Learning):侦听业务数据帧,不转发数据帧,目的是学习MAC地址,会停留15s;

转发(Forwarding):正常收发BPDU及数据帧,根端口及指定端口进入该状态;

BPDU详解

如下图为BPDU报文:

详解如下:

 

生成树计算的过程

确定根桥

每个交换机启用STP服务,都认为自己是根桥,以此生成配置BPDU扩散至激活的端口,并通过激活端口向外发送;

交换机接收到BPDU报文,会和自己的桥ID对比,如果收到的比本地的,则更新配置BPDU,并停止发送本地BPDU,直至全部交换机认为某一设备为根桥,选举结束;

确定根端口

交换机接口同时收到根桥发来的配置BPDU报文,依次比较Root Path Cost,比较Bridge ID<发送该BPDU的指定桥>,比较Port ID,小的优,为根端口;

确定指定端口

本质为确定两个非根桥间的端口谁到根优谁即为指定端口,另外一个为备份接口

比较体1:本设备上的经由根端口收到的,经过计算的,生成的本地配置BPDU

比较体2:由非根接口收到的,即来自于另外一个非根桥路径上的指定桥的BPDU;

依次比较Root Path Cost,比较Bridge ID,比较Port ID,本地优,为指定端口,否则为备份端口;

相关的耗时:

 

 

拓扑结构发生改变时

根桥故障

当根桥发生故障时,BPDU内的message age达到 max age(20s),其他设备发现根桥发生异常;

然后会从新收敛,需要30s左右的时间;

所以总耗时在30s-50s;

当非根桥故障时

逐级发送TCN BPDU至Root

 

Root收到后,会将BPDU的TC及TCA设置为1

其他交换机收到类似的报文后,会将CAM表(MAC表)内表项时间设置为15s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

end

posted @ 2019-12-30 16:39  FcBlogs  阅读(449)  评论(0)    收藏  举报