假设所有设备同时启动,初始化时,每个设备需要先确认自己设备的BPDU,其中包括“根桥、根路径开销”,初始时每个设备认为自己是根桥,根路径开销为0,每个端口会以这个信息为准,开启了STP功能的端口会向外发送配置BPDU;

 

端口收到配置BPDU后,会和自己本端口上的配置BPDU进行比较,比较内容为“根桥ID、根路径开销、发送者ID、发送端口ID”,依次比较以上内容,如收到的配置BPDU较好,则提取其中的“根桥ID、根路径开销”在自己的端口更新这此内容,最终比较所有端口的最优配置BPDU,然后把这个所有端口中最优的配置BPDU向所有端口更新;

 

指定端口比较原则:

本物理网段上发送最优配置BPDU的桥为指定桥,发送此配置BPDU的端口为本物理网段的指定端口;
依次比较:根路径开销、发送者
ID

-------------------------------------------------------------------------------------------------------------------------------

STP工作过程分析<欢迎指正>_STP

 

S1此时将收到来自于S2S3的两份配置BPDUS1通过和自己的端口进行比较,由于S1的根桥ID最优,所以S1认为自己为根桥,自己的1口和2口为指定端口;

 

S2此时收到了2份配置BPDU,分别来自于S1S3,各端口把收到的配置BPDU和自身的比较,最终1口收到的配置BPDU比本身的更好,所以进行把配置BPDU进行更新,更新内容包括“根桥ID:0.MAC-1、根路径开销:19”,其它端口收到的配置BPDU都没有端口本身好,所以未进行更新,然后再通过比较所以端口的最优配置BPDU,最终确定本设备上最优的配置BPDU,从而确定“根桥”为S1,根端口为本端1口(因为只有1口收到的BPDU中根桥IDS1,所以此时S2认为1口的根路径开销最小),然后把这个最优的配置BPDU更新到每个端口,由于端口角色还未确定,2口马上向外发送更新后的配置BPDU;由于3口连接的一台主机,不能收到配置BPDU,所以3口为指定端口;

 

S3此时收到了2份配置BPDU,过程和上面一样,最终是1口的收到配置BPDU最好,确定出“根桥”,1口为根端口,然后把这个配置BPDU更新到每个端口,由于端口角色还未确定,2口马上向外发送更新后的配置BPDU

 

--------------------------------------------------------------------------------------------------------------------------------

 

S2收到了来自S3的配置BPDU后,通过比较,由于根桥ID相同,但是S2的根路径开销为19,而通过S3去往根桥的根路径开销为19+13,所以S22口本身的配置BPDU更好,2口不进行配置更新,由于S2-S3的物理网段上,S2S3的根路径开销都为19,所以通过比较桥ID来选择物理网段的指定桥,最终S2S2-S3物理网段的指定桥,S22口为指定端口;

 

S3收到了S2的配置BPDU后,通过比较,最终端口不更新配置BPDU,但是由于S3的桥ID小于S2的根ID,所以S3S2-S3物理网段的阻塞端口;

--------------------------------------------------------------------------------------------------------------------------------

S23口接上一台主机时:

S23口接上主机后,端口UP,然后进行初始化,端口进入listening状态,开始向外发送BPDU,由于下面接的是主机,S2一直未收到BPDU,所以S2认为3口为指定端口,经过2倍的forward delay时间后,进入forwarding状态,此时S2S1发送TCN BPDU,当S1收到TCN BPDU后,向S1回复TCA+TC配置BPDU,向其它的端口发送TC位被置位的配置BPDU,其它设备收到后,把自己的MAC地址表项删除;

--------------------------------------------------------------------------------------------------------------------------------

S12down掉后:

S12down掉后,S31口也down掉,进入disabled状态,由于S3的根端口消失,此时S3需要重新选择根端口,由于每个端口会保留邻居发来的配置BPDU(不管是不是最优的都会保留,但是不使用),通过比较,发现S2之前发来的BPDU比本设备自己更好,所以更新参数,根桥变为S12口被选为根端口,并且进入listening状态,经过两倍的forward delay时间后,进入forwarding状态,同时通过根端口向外发送TCN BPDU

S2收到S3TCN BPDU之后,回复S3一个TCA位被置位的配置BPDU,同时复制这个TCN BPDU从根端口发出,当S1收到TCN BPDU之后,将从所有的指定端口发送TC位被置位的配置BPDU,通知下游设备删除MAC地址表;