STP选举流程,看不会来打我。

一、基本概念

1、桥ID

Bridge ID,也称BID。是由桥的优先级与桥的Mac地址组成。用来标识一台STP设备。

选举根桥时需要用到桥ID来选举,选举规则如下:

        (1)首先会比较桥的优先级,优先级越小越优,默认为32768。

        (2)若桥的优先级相同时,则会比较桥的Mac地址,也是越小越优。

2、Port ID

通过PID来标识每个接口,接口ID主要用于在特定场景下选举指定的接口。

格式为,假设G0/0/1接口,PID为128.1

        由两部分组成:

        (1)接口的优先级,默认取值为128

        (2)接口的编号

需要注意的是,若是Eth-trunk接口,则会随机分配一个接口编号,无法进行更改。

3、RPC

根路径开销,意思是一台设备从某个接口到达根桥的RPC等于从根桥到该设备沿途所有入方向接口的Cost值的累加。

4、BPDU

BPDU是TCP的协议报文,分为两种类型:

        (1)配置BPDU,是STP进行拓扑计算的关键。

        (2)TCN BPDU,只有在网络拓扑发生变更的时候才会触发。

5、配置BPDU的比较原则:

        1、最小的根桥ID

        2、最小的RPC

        3、最小的网桥ID

        4、发送端最小的接口ID

        5、接收端最小的接口ID

6、端口角色:

        (1)根端口

        (2)指定端口

        (3)阻塞端口

7、STP的选举规则:

        (1)选举根桥:

        A)根桥在一个广播域中,有但是只有一个,其他交换机就是非根桥。

        B)需要注意的是,根桥具有抢夺性。

        (2)选举根端口:

        A)根端口需要在非根交换机上进行选举。

        B)每台非根桥交换机上都会有根端口,但是只有一个根端口。

        C)根端口是非根桥交换机接收到根桥最好的BPDU的端口。

        (3)选举指定端口:

        A)需要在每个网段选举指定端口,每个冲突域有且只有一个指定端口。

        B)指定端口是在网段中,负责发送最好的BPDU的端口。

        注意:根桥上的端口都为指定端口,根桥上没有根端口。

        (4)选举阻塞端口:

        既不是根端口,又不是指定端口的端口就会成为阻塞端口。

8、 端口状态:

        (1)Disabled:禁用,端口为down,不能接收发送BPDU和业务数据帧

        (2)Blocking:阻塞,只会侦听BPDU,但不能收发业务数据帧,不会学习mac地址。

收BPDU是因为,即使是阻塞了,也需要动态感知整个网络的拓扑,以便未来放行该端口。

并且假如,收发业务数据帧就意味着它能学习mac地址了,这样一来,就不是阻塞端口了。

        (3)Listning:侦听,可以收发BPDU,不能收发业务数据帧,不会学习mac地址。

此时只是初步认定为根端口或者指定端口,还处于STP计算

        (4)Learning:学习,可以收业务数据帧,但不能转发,进行mac地址学习。

        (5)Forwording:可以收业务数据帧,也能发送业务数据帧。

端口从阻塞状态到转发状态,需要两个BPDU转发延迟,经历侦听状态BPDU转发1延迟5s,学习状态BPDU转发延迟15s,一共20s

二、选举流程

1、选举根桥交换机(Root)

一开始,所有的交换机都会认为自己是根桥,然后向自己所有的端口发送BPDU报文,对端交换机收到之后就会进行比较。

        我们通过选举根桥的原则进行比较,原则为:

        a)先比较BID里面的桥优先级,越小越优。

        b)若桥优先级相同,则比较桥的Mac地址,越小越优。

从图中可以得知,SW1的桥优先级比另外几台交换机都要高。

于是SW1成为根桥交换机,SW2、SW3、SW4成为非根桥交换机。

2、选举根端口(RP)

        上面我们说了,根端口是在非根交换机上选举的,每台非根交换机只有一个根端口。

        于是,在非根交换机上通过配置BPDU的比较原则进行选举。

        因为在根桥上,会每2秒发送一次BPDU,所以在非根交换机上都会有两个接口收到BPDU

        以SW2为例,此时SW2会从G0/0/1收到一个BPDU,从G0/0/2收到一个BPDU,如下图:

        SW2收到之后,首先会比较RID,RID都为4096,所以会比较下一项,RPC。

        发现RPC从G0/0/2接收到的更大,上面我们说过,RPC越小的越优,于是SW2的G0/0/1接口成为根端口。

        有人就会问了,为什么RPC一个是0,一个是40000?

        首先,每条链路的开销默认都为20000(这里说的是模拟器,实际的接口情况还需要根据现场情况进行判断。)

        RPC指的是根路径开销,就是从根桥到达该设备的沿途所有设备的入方向接口的Cost值的累加。

        SW2的G0/0/1接收到的是SW1出方向的BPDU报文,所以RPC为0

        而G0/0/2接口为40000,是因为SW4收到根桥发送的BPDU,发送出去的时候会将RPC改为自己到根桥的Cost值,也就是“RPC:20000”,将BID改为自己的网桥ID,也将PID改成发送端口的编号。如图:

        SW3接收到之后,也是一样的过程来处理这个BPDU报文。

        SW4选举根端口的过程同理,G0/0/1接口成为根端口。

3、选举指定端口

        指定端口是在每个网段中进行选举,每个冲突域中只有一个指定端口。

        需要注意的是,指定端口是在网络中发送最好BPDU的端口。

        以SW2为例,G0/0/1接口已经被选举成为根端口,所以不需要再进行比较。

        我们要记住,一个冲突域只能有一个指定端口,而交换机用来隔离冲突域,也就是说两个交换机之间就是一个冲突域。有人就会说了,那是不是SW2的G0/0/2就直接是指定端口了,下题!不不不,要记住,除了根端口、指定端口之外还有一个阻塞端口,还是要进行选举才能知道是不是指定端口的!

        通过对SW2和SW3发送的BPDU来进行对比,RID相同,比较RPC,发现SW3的RPC比SW2的大,于是SW2的G0/0/2接口就成为了指定端口。

        相同的步骤选举出SW4的根端口为G0/0/3,指定端口为G0/0/1,如图:

        剩下SW3没有选举完成了,那该如何选举呢?我说过,一个网段里面只能有一个指定端口,SW3上,对端的两个接口都为指定端口,那么就在SW3上选举RP端口,RP端口是接收到BPDU最好的端口。

        通过对比,得知从SW2收到的BPDU的接口是最好的,于是SW3上的G0/0/1接口成为RP端口,只剩最后一个端口了,就会成为AP端口。

        STP到此就选举完成了,各个端口的角色如上图所示。各位告辞!哈哈,开玩笑,有些粗略的浏览这篇文章的可能已经走了,有些仔细钻研的人就会发现,我PID写了两个,一个是接收端PID,一个是发送端PID。

这个是何意呢?其实这个是特定的场景下才会有的。

如上图,根桥发送的BPDU,经过HUB的泛洪,SW上的所有接口都会收到该BPDU,这个时候收到的配置BPDU为:

发现两个端口接收到的BPDU都是一样的,那完蛋了,怎么比较,老师也没教我啊,我晕了。

别急,其实PID是分为接收端和发送端的

        接收端代表的是本地接收的接口。(为上图SW的G0/0/1和G0/0/2口)

        发送端代表的是对端发送的接口。(为上图ROOT的G0/0/1口)

        通过对比最小接收端的PID

        于是可以知道SW上的G0/0/1口为RP端口,G0/0/2口为AP端口。

        ROOT上的G0/0/1口为DP端口。

  • 12
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值