STP基础(各种交换网络生成树协议)

STP基础(各种交换网络生成树协议)

冗余

设备冗余
线路冗余
网关冗余
电源冗余(USP)

线路冗余的问题

路由器线路冗余通过各种协议可以避免出环(由算法计算所得的路由表可避免出环),交换机间线路冗余易出环(MAC地址表由记录产生易出环)。
由于二层交换机天生缺乏的防环机制,在交换机线路冗余时,会产生很多问题。
①易产生广播风暴,广播包在线路中转发出环,且越来越多不会消失。
②易产生MAC地址表翻滚,在一个交换机上同一个MAC地址表只能映射唯一的接口,但同一个接口可映射多个MAC地址。且当接口所映射的MAC地址改变时,会更新成新的记录,因此出环可能导致MAC地址表不停的更新。
③同一数据帧反复拷贝,占用缓存。
以上问题都可能导致设备过载,重启保护甚至损坏设备。

STP

Spanning Tree Protocol,生成树协议,在一个二层交换网络内,生成一棵树形结构(树一定无环),逻辑地阻塞部分接口,实现从根到所有的节点仅存在唯一的路径,当最佳路径故障时,自动打开部分阻塞接口,来实现线路备份的作用。通俗易懂的解释原理就是,先逻辑上阻塞某些接口,需要时再打开。

STP七个标准

802.1D(最原始,已被淘汰,后续协议在它的基础上作改进)

BPDU——所有的交换机间使用BPDU(网桥协议数据单元,属于跨层封装到二层的数据帧)进行沟通。

(1)配置BPDU:仅根网桥才能发送, 在网桥网络初始状态时,所有网桥都把自己作为根网桥,都发BPDU,使得网络中的所有网桥都会收到其他设备的BPDU,然后基于数据中的参数比对来选出真正的根网桥,最后,只由根网桥来发送BPDU,其它非根网桥不再发送BPDU,只接收和转发根发送的BPDU。保活周期为2s,Dead time为20s。

(2)TCN:拓扑变更信息,本质也是BPDU,当本地网桥链路故障后,STP重新收敛,为了快速刷新全网所有网桥的MAC地址表,将向本地所有的STP接口发送TCN(八位的标记位中TCN位由0置1),在邻居网桥收到TCN后,邻居回复TCA(标记位中ACK位由0置1),再继续转发收到的TCN,之后TCN将逐级转发直至根网桥处,最后由根回复TC消息(标记位中TC位置1)到所有非根网桥,使得所有网桥临时将MAC地址表的老化时间由5min修改为15s。

选举过程

设备的两个角色和接口的三个角色
①根网桥(ROOT):在一棵生成树的所有交换机中被选举为根网桥的网桥,一棵生成树有且仅有一个。
②非根网桥:未被选举为根的网桥。
③根接口(Root Port):在每台非根网桥有且仅有一个,离根网桥最近的接口,会接收来自根网桥的BPDU。
④指定接口(Designated Port):在每条存在STP的物理链路上有且仅有一个,会转发BPDU。
⑤非指定接口:被逻辑上阻塞的接口。
注: 根网桥上的接口全为指定接口,每条STP链路上都存在一个指定端口,指定接口的对端为根接口或非指定端口。

选举顺序
先选出根网桥,再在每个网桥上选出根接口,根接口的对端是指定接口,再在没有根接口的链路上找出指定接口,其对应的就是非指定接口。

选举规则
①根网桥选举:
比较所有网桥设备所发BPDU中的BID(网桥ID=网桥优先级+MAC地址)。
网桥优先级范围为0-65535,默认32768,越小越好。
透明交换机(不能进行配置的交换机)无MAC,二层交换机有一个MAC,三层及以上交换机有多个MAC。
先比较网桥优先级,数值越小越好,若网桥优先级相同,则表较MAC地址,数值越小越好。

②根接口选取:
比较从根网桥发出BPDU后,通过该接口进入时的最小cost值,不同带宽,cost值不同。
若入向cost值相同,比较两网桥对端两网桥的BID(根据根网桥选举规则),以此规则选出本端网桥的根接口,即使当前根网桥出故障,根网桥变更后,根接口也不需要换。
若对端BID相同(两接口对端为同一设备),则比较两接口对端两接口的PID(端口ID=接口优先级+接口编号)。接口优先级范围为0-255,默认为128。均为越小越优。
若对端PID相同(两接口对端为同一接口,利用集线器或透明交换机过渡),则比较两本端接口PID,同样越小越优。至此一定比较出了结果。

③指定接口选取:
首先所有根接口的对端为指定接口,剩下的链路中比较两端接口的从根网桥转出BPDU时cost值。
若出向cost值相同,则比较两网桥的BID,小优。
若BID相同(同一网桥的两个接口互接),比较本地两接口PID,小优。
若PID相同(某网桥的某一个接口通过集线器或透明交换机自连),直接阻塞该端口,即作为非指定端口。

接口cost值参考标准

(1)802.1D标准cost值:

10M 100
100M 19
1000M 4
10000M 2
>100000M 1

(2)802.1T标准cost值:
100M 200000
1000M 20000
千兆两万,以此类推。

华为设备默认使用802.1T标准,可以修改,命令stp pathcost-standard ?

选举举例

在这里插入图片描述
注: 在配置STP时,至少应该将根网桥干涉到汇聚层处,不能使根网桥在接入层。

STP接口的状态

①Down状态:正常通电,通讯后切换到下一状态;
②Listening状态:15s,所有交换机收发BPDU,选举所有角色,非指定端口进入阻塞状态,根端口与指定端口进入下一个状态;
③Learning状态:15s,所有交换机接收记录经过的数据帧源MAC地址,生成MAC表。
④Forwarding状态:根端口和指定端口最终进入转发状态,正常收发BPDU。

802.1D算法的收敛时间

①初次收敛:30s
②结构变化后收敛的两种情况
(1)存在直连检测:30s,某一台交换机在结构突变后,仅存在一个阻塞接口可以接收来自邻居网桥的BPDU,那么该接口将进入正常的30s收敛阶段。
(2)非直连检测:20(Hold time)+30(收敛时间)= 50s。某一台交换机在结构突变后,与交换网络脱离,仅存在对端堵塞端口能够接收自己发出的次优BPDU,此时只能等待邻居20s的保护时间,和再次30s重新收敛。

802.1D的缺点

①收敛速度较慢;
②链路利用率低(Cisco提出,后来出现Cisco私有的PVST协议)。

PVST

基于VLAN的生成树协议,一个VLAN一棵树,将不同树的根网桥定义到汇聚层的不同设备后,可以实现多个VLAN的阻塞链路不是同一链路,从而实现了所有接口均工作,只是为不同VLAN进行服务,提高了链路的利用率。

实例(Cisco设备):

【SW0】

【SW1】

【SW2】

如下图,降低SW2在VLAN 2生成树中的网桥优先级数值(即作为VLAN 2的根网桥)。
在这里插入图片描述
在该拓扑中,三条链路为添加了vlan 2的switchport mode trunk链路。SW0在VLAN 1中作根,SW1在减小了网桥优先级(Cisco设备中网桥优先级为4096(VLAN ID个数)的倍数+VLAN ID的)后,SW1在VLAN 2中作根,由此所有的接口全部变绿,SW2的两接口在两棵生成树中扮演不同角色,达到每条链路都平均利用。

PVST的缺点

①收敛较慢,因为单棵树内依然使用802.1D算法;
②不支持公有802.1D的Trunk干道,仅支持Cisco私有的Trunk干道(ISL);
③生成树较多,计算等消耗资源(Cisco设备存在独立芯片来处理多生成树)。

PVST+

PVST的升级版,兼容了802.1Q的Trunk链路封装,初次收敛时间仍然为30s,但设计了部分加速方法(端口加速,上行链路加速以及骨干加速),一般为Cisco交换机默认的STP。
①端口加速(Portfast)
在这里插入图片描述
用于连接PC的端口可不进行收敛,直接进入转发状态。
②上行链路加速(Uplinkfast)
针对存在直连检测条件的环境,开启上行链路加速度的设备,在遇到直连检测情况时,阻塞端口将直接成为根端口,无需进行30s收敛。需要注意,该命令只能在接入层设备上配置,因此在一台交换机上开启上行链路加速后,该设备的网桥优先级和接口优先级均变大,让此设备不能成为根网桥,接口也大概率成为阻塞端口。
③骨干加速
用于在收到次优BPDU时,省去20s的hold time等待,直接进入30s收敛。

快速生成树(RSTP与802.1W)

RSTP 802.1W
Cisco私有 公有
PVST+升级版 802.1D升级版
一个VLAN一棵生成树 一个交换网络一棵生成树

快速的原理:

①取消了计时器,在每个接口状态工作完成后立即进入下一一个接口状态(主要原因)。
②分段式同步,无需再等根交换机下发TC,直接设备之间逐级收敛(依赖标记位请求和同意标记位,第1位和第6位)。
③BPDU的Hello time为2s,Dead time由20s变为6s。
④将端口加速(边缘接口,华为设备配置命令:stp edged-port enable)、上行链路加速以及骨干加速集成。

实例(华为设备):

可以手动配置SW1为主根,该命令会使网桥优先级自动降低两个4096。

手动配置SW2为次根(主根设备故障后,率先充当主根),该命令会使网桥优先级自动降低一个4096。

在SW3连接主机的接口上配置边缘接口加速。

MSTP(802.1S)

多生成树协议,在快速生成树上再升级,基于分组的STP,将多个VLAN放在同一个组内,一个组一棵生成树,每个组之间依然基于优先级+组号的逻辑来区分BPDU。

实例:

【SW1】【SW2】【SW3】相同配置部分:

port-group group-member e0/0/1 to e0/0/2
port link-type trunk
port trunk allow-pass vlan all //设置Trunk接口且允许所有vlan
q
vlan batch 2 to 10 //创建VLAN2到10
stp mode mstp //设置STP模式为MSTP
stp region-configuration //进入MSTP组的配置
region-name a //设置MSTP组名为a
instance 1 vlan 1 to 5 //将vlan 1到5放进小组1
instance 2 vlan 6 to 10 //将valn 6到10放进小组2
active region-configuration //启动当前组配置

【SW1】
stp instance 1 root primary //SW1在小组1作主根
stp instance 2 root secondary //SW1在小组2作备份根(次根)
在这里插入图片描述
【SW2】
stp instance 2 root primary //SW2在小组2作主根
stp instance 1 root secondary //SW2在小组1作次根
在这里插入图片描述
【SW3】
在这里插入图片描述
至此,实现MSTP分组生成树,相互备份,且链路利用率足,收敛速度快。

猜你喜欢

转载自blog.csdn.net/FLY_7_/article/details/113005486