目录
STP生成树协议
二层环路出现的原因:
二层环路引发的危害:
stp生成树防环的基本思路:
802.1D生成树协议:
配置BPDU的报文结构:
配置BPDU中某些字段的解析:
TCN BPDU报文格式:
stp中的角色选举:
生成树中接口的几种状态:
802.1D生成树的收敛时间
802.1D生成树的配置:
基本配置:
根网桥的备份问题:
STP生成树的缺点
802.1w生成树协议
在802.1w中基于802.1D上进行了改进。
(1)更改了部分的端口角色:
(2)更改了接口的状态类型。
(3)更改了配置BPDU的内容。
(4)更改了对配置BPDU的处理
(5)快速收敛机制
(6)对拓扑变更机制进行修改。
802.1S生成树协议
802.1S生成树的配置:
STP生成树协议
路由器的转发依靠路由表,交换机的转发依靠mac地址表。
当路由器出现环路的时候有ttl值来进行防环。
二层环路出现的原因:
在实际中因为要实现备份,通常要将几台设备相互连接防止当一条线路出现问题时不会影响整个网络。但就在这个过程中往往就会出现几台交换机连成环的情况,此时就会造成环路。
二层环路引发的危害:
1.广播风暴:当交换机出现环路的时候就会一直进行下去,消耗链路资源。并且交换机存在泛洪机制,会出现两条环路(顺时针环路与逆时针环路)。危害极大,可能会使设备宕机。
2.mac地址表的翻转:
因为环路的存在会导致mac地址表的翻转,消耗设备的资源。假设pc1连接交换机的1口,因为存在环路该帧会从交换机的2口重新回到交换机。此时交换机会根据该帧原mac地址学习生成一条mac地址条目:pc1mac地址----2口 ,但之前存在pc1mac----1口。所以会覆盖原先的mac条目。因为存在两个循环所以就会导致mac地址表的翻转。
ps--------在实际中可以通过日志信息查看mac地址表的变化判断是否出环。
3.多帧复制
在环路的过程中会导致各种设备重复接收到该帧。
stp生成树防环的基本思路:
既然造成环路的原因时因为设备相互连接成环,那么我们可以将该环破掉就行了。所以stp生成树协议是在逻辑上将该环的某条线路切断(不是物理真实的切断,阻塞端口),此时就不会环路了。
stp生成树协议就是将该网络中的所有交换机生成一个树形结构,树形结构就不会出现环路。
在生成树之前首先要选取一台设备当树根。 实现从根交换机到所有节点的路径为最短且最优的没有一个环路的树形结构。当个别链路出现故障时,可以开启其他的阻塞端口形成备份链路。
802.1D生成树协议:
由此发明了一个协议:802.1D---STP----生成树(最原始的生成树协议,现在所有的生成树协议都是在该基础上进行改进的)
路由器之间会发送数据包进行沟通,同样在运行生成树时交换机之间也会也会进行沟通,交换机之间会发送:BPDU进行沟通。
BPDU分为两种:配置BPDU,TCN BPDU(该数据包是当交换机的top结构发生变化时才发送)。
配置BPDU的报文结构:
配置BPDU中某些字段的解析:
协议版本id:几种不同生成树协议的版本id
802.1D----0
802.1W-----2
802.1S-----3
FLAG---1字节--8位:在802.1D中只启用两位,最高位(TCA位)和最低位(TC位)。
------------该报文中最重要的4个参数:-------------
(1)根桥ID:在802.1D中,一个交换网络只生成一颗树,只有一个根,根网桥ID就是根的网桥的ID。
(2)根路径开销:RPC---表明的是发送配置BPDU的接口到根网桥的开销值。
(3)网桥ID:每一台交换机的标识。
共8个字节----前2个字节内容:优先级
优先级-----范围0-65535,初始默认值为32768
在前两个字节中前4位是优先级,后12位是扩展系统ID(802.1S),在前4位优先级中每一位值为4096。
所以在修改优先级时必须按照4096的倍数来进行修改。
后6个字节内容:mac地址----如果一台交换机只有一个mac地址那么就直接使用该mac地址作为网桥ID中的mac地址,但是如果一台设备存在多个mac地址则将选择数值最小的mac地址作为网桥ID中的mac地址。
(4)接口ID:---区分一台交换机的不同接口。
2个字节---前4位---代表优先级
每一位代表16,优先级的范围为0-240,修改优先级只能以16为单位进行修改。
后12位----厂商定义的接口表识。
消息寿命:每经过一次交换机的转发,数值加1,该数值存在最大值----20
配置BPDU的用法:
刚开始并不知道谁是根网桥,认为自己就是根网桥,所有的交换机都会互相发送配置BPDU。当比较后确定谁是根网桥时,此时只有根交换机会发送配置BPDU。根交换机会周期性的发送配置BPDU。其他的交换机只转发根交换机发送的配置BPDU。不过在发送的过程中配置BPDU中的个别内容会变化。
配置BPDU-----
只有根网桥可以发送,在交换网络初始状态,所有的交换机都认为自己时根网桥,之后相互发送配置BPDU,通过里面的参数进行角色选举。当选出根网桥后,所有的非根网桥将不再发送配置BPDU,仅仅接收并发送根网桥发送的配置BPDU,周期2s,max age20s。
TCN BPDU报文格式:
TCN BPDU----
本地链路发生故障时,stp重新收敛,为了加快刷新整个网络交换设备的mac地址表,将向stp接口发送TCN BPDU,邻居设备收到后将先回复TCA标记位置为1的配置BPDU进行确认,之后,将该 TCN BPDU逐级上报到根网桥处。根网桥收到后,再逐级下发TC位为1的配置BPDU。当交换设备收到TC位置为1的配置BPDU后,会临时将MAC地址表300s的老化时间修改为15s。加速mac地址表的老化,使交换设备重新学习正确的mac地址。
如下图所示:
stp中的角色选举:
1.根网桥(RB):
在一个交换网络中只生成一颗树,仅仅选择一个网桥。选举的方法是:比较配置BPDU中的BID。
BID----前2字节:优先级-----范围0-65535,初始默认值为32768
在前两个字节中前4位是优先级,后12位是扩展系统ID(802.1S),在前4位优先级中每一位值为4096。----所以在修改优先级时必须按照4096的倍数来进行修改。
后6字节:mac地址
在比较时先比较BID中优先级,优先级越小越好,如果优先级相同则比较mac地址,mac地址越小越好。
2.根端口(RP) :
每一台非根网桥上面都要选举一个离根网桥最近的接口作为根端口。其作用是用来接收根网桥发送的配置BPDU。
选举方法:
(1):比较接口接收到根网桥发出的BPDU的开销值。
(2):当开销值相同时比较对端设备的BID,选择BID更小的设备所对应的端口为根端口。
(3):当BID相同时比较对端的PID,选择PID更小的接口对应的端口为根端口。
(4):当对端的PID也相同时,比较本端的PID,选择PID小的接口为根端口。
PID----- 2个字节---前4位---优先级
每一位代表16,优先级的范围为0-240,修改优先级只能以16为单位进行修改。
后12位----厂商定义的接口表识。
3.指定端口(DP):每一条链路有且仅有一个端口,用来转发来自根网桥的BPDU。
根网桥的所有端口都是指定端口。
选举规则:
(1):比较接口发出时的PRC,选择小的作为指定接口
(2):如果开销值相同,则比较所在设备的BID,选择BID小的设备的接口为指定端口。
(3):如果所在设备的BID也相同,则比较端口的PID,选择小的作为指定端口。
(4):如果本端的PID也相同,则该接口直接阻塞。
4.非指定端口(NDP):所有没有角色的端口都是非指定端口,非指定端口需要被阻塞。
在交换网络中根交换机的选择是非常重要的,通常根交换机在网络的汇聚层或者核心层。根网桥的选择会影响整个网络的性能。
生成树中接口的几种状态:
1,禁用状态(Disable)---该接口被关闭,或者该接口被禁用生成树
2,阻塞状态(Blocking)---运行生成树后的所有接口的第一个状态,在该状态下只能侦听别人发送的BPDU。因为配置BPDU的最大寿命为20s,所有的接口在20s内都不发送任何数据,当接口超过20s的时间没有接收到数据时,就可以认为该网络存在问题,需要重新收敛,进入下一个状态。
3,侦听状态(listening)---该状态就是角色选举的状态,在该状态下接口会收发BPDU,但不会收发业务流量,也不会学习mac地址。----停留一个转发延迟的时间15s,进入下一个状态,也是为了保证所有角色的选举完成,避免出现临时环路。
当角色选举完成后,只有根端口和指定端口会进入下一个状态,非指定端口会退回阻塞状态。
4,学习状态(Learning)----会在该状态停留一个转发延迟时间15s, 在该状态下接口可以收发BPDU,接收但不能转发业务流量同时还会根据业务流量学习mac地址。
这样做的目的是为了减少未知单播的泛洪。
5,转发状态()----可以收发和侦听BPDU,可以收发业务数据帧,可以学习mac地址。
802.1D生成树的收敛时间
首次收敛时间----50s
结构突变:
---------根桥故障--50s
---------直连链路故障---30s
---------非直连链路故障---50s
802.1D生成树的配置:
基本配置:
1,选择生成树模式:
[sw1]stp mode ?mstp Multiple Spanning Tree Protocol (MSTP) mode ---- ------------------华为设备默认使用MSTPrstp Rapid Spanning Tree Protocol (RSTP) mode
stp Spanning Tree Protocol (STP) mode2,开启生成树
[sw1]stp enable --- 华为设备默认开启[sw1]display stp --- 查看生成树的信息
3,修改BID中的优先级,干涉选举-------在通常情况下我们只需要干涉根的选举就可以了。在实际环境中根的位置通常在汇聚层或者核心层。
[sw5]stp priority 28672
[sw1]display stp brief -- 查看生成树接口信息
DESI--------表示该端口是指定端口。
修改端口的优先级:
修改端口的cost值:
根网桥的备份问题:
通常在汇聚层中设置一台交换机为根,另一台交换机为备份
[sw1]stp root primary -------将一台设备设置为主根---相当于将BID中的优先级修改为0
[sw2]stp root secondary ----将一台设备设置成为备份根---相当于将BID中的优先级修改为4096
STP生成树的缺点
1.收敛是基于计时器来完成的,速度比较慢。(一般来说收敛时间为50s或者30s)
2.链路利用率低。(被阻塞的链路无法被利用,导致链路的利用率低)
802.1w生成树协议
802.1w-------RSTP--------快速生成树协议--------在802.1w中依旧时一个交换网络一颗树,并且向下兼容STP生成树协议。
在802.1w中基于802.1D上进行了改进。
(1)更改了部分的端口角色:
802.1D中端口角色: 根端口-------指定端口------非指定端口
802.1w中端口角色:根端口,指定端口,替代(ALternate)端口,备份端口
-
替代(ALternate)端口:该端口是根端口的备份,该端口因为学习到其他网桥发送的配置BPDU而被阻塞。但他提供了指定网桥到达根网桥的一条新的路线。所以当根端口发生故障时则会选择最优的替代端口为根端口,在经历阻塞状态(20s)后直接跳过侦听和学习状态直接进入转发状态。
-
备份端口:其实就是指定端口的备份-----------是由于学习到自己网桥发送的配置BPDU而被阻塞的端口,如果指定端口故障,则将第一时间成为新的指定端口,并且直接进入到转发状态,加速收敛。
备份端口出现的情况非常少,只有在特殊的情况下才会出现,如下1端口为指定端口,2端口被阻塞(即为备份端口)。当1端口发生故障时,2端口会被迅速变成指定端口。
总而言之第一个改进点就是将阻塞端口(非指定端口)划分为替代端口和备份端口。
(2)更改了接口的状态类型。
802.1D中的状态: 禁止,阻塞,侦听,学习,转发
802.1W中的状态:
)1:丢弃(Discarding)-----该状态不转发业务流量,也不学习mac地址。-------该状态就时以前禁用,阻塞,侦听状态
)2:学习(Learing)--------不转发业务流量,可以学习mac地址
)3:转发(Forwaring)-------最终状态,可以转发业务流量,也可以学习mac地址。
(3)更改了配置BPDU的内容。
在802.1D中的配置BPDU中,Flag字段只启用了最高为和最低为,而在802.1W中则全部启用。
0x02------代表RST BPDU---RSTP中的配置BPDU
Bit5(Forwaring),Bit4(Learning):这两位是状态位,表示该接口处于什么状态,处于什么状态就置该标记位为1。
Bit2和Bit3表示发送该RST BPDU的端口是什么角色。
-------00:未知
-------01:阻塞端口/备份端口
-------10:根端口
--------11:指定端口
由Bit2和Bit3位可知:在802.1W中根端口和阻塞端口都有可能主动发送配置BPDU,而在802.1D中只有指定端口会发送配置BPDU。
Bit1(Proposal) 和 Bit6(Agreement) 是形成加速收敛的核心机制该机制为:P/A机制。
P/A机制:当有了P/A机制后,角色的选举发生在两两之间,指定端口和根端口的链路上,指定端口确认角色后将发送P位置1的RST BPDU,之后,根端口会进入到同步的状态下,即会将所有其他接口状态置位丢弃,然后自身进入转发状态,并同时发送A位置为1的RST BPDU,收到后,指定端口也将进入到转发状态。
(4)更改了对配置BPDU的处理
802.1D-----收敛结束后,只有根网桥会周期性的发送配置BPDU,其他设备仅仅进行转发。
802.1W-----收敛结束后,所有的设备将主动发送根网桥的配置BPDU
802.1D------配置BPDU超时时需要等待MAX age----20s
802.1W------一个接口在一个超时时间(在802.1W中一个超时时间为3倍的周期时间,6s)内没有收到BPDU,则将重新选举。
(5)快速收敛机制
1.根端口和指定端口的快速切换------------利用替代端口和备份端口
2.P/A机制
3.设置边缘接口--------将连接电脑的接口设置为边缘接口,则这个接口将直接进入到转发状态。该设置需要人为设置,它不会自动开启。
当接口设置为边缘接口后仍会收发BPDU,但我们可以手动关闭,减少链路资源的浪费。
[Huawei-GigabitEthernet0/0/3]stp bpdu-filter enable --- 开启后,将不再发送配置BPDU,该条命令可以用于边缘接口,但不能用于普通接口,否则会造成生成树的重新收敛。
[Huawei]stp bpdu-protection --- 生成树的一个保护机制,开启后,如果边缘接口接收到BPDU,则将还原成为普通接口。(目的就是为了防止你误操作)
(6)对拓扑变更机制进行修改。
802.1S生成树协议
在华为设备中默认使用该协议。
802.1S------MSTP-----多生成树协议--------向下兼容RSTP,STP。该协议同时改进了链路利用率低的问题。
在MSTP中引入了一个实例的概念-----------instance----可以理解为一个或者多个VLAN的集合。
instance id-----------12位二进制(0-4094)
特殊实例:instance 0---------该实例是默认存在的,一开始所有的VLAN都属于instance 0
在MSTP中还引用了域(region)的概念。如果一个交换网络比较大,则可以划分出多个不同的MSTP域分别运行MSTP协议。如果交换网络规模不大,则可以仅仅在一个MSTP域中。
要保证以下参数相同,交换机才属于同一个域: (1):相同的域名----------region name
(2):相同的修订等级----revision level
(3):相同的实例(instance)和VLAN的映射关系
802.1S生成树的配置:
1.创建VLAN
[sw1]vlan batch 2 to 102.交换机之间配置trunk通道,放通VLAN流量。
[sw1-GigabitEthernet0/0/2]p t a v 2 to 103.选择生成树协议---华为设备默认的模式就是MSTP,可以不做更改。
[sw2]stp mode ?mstp Multiple Spanning Tree Protocol (MSTP) moderstp Rapid Spanning Tree Protocol (RSTP) modestp Spanning Tree Protocol (STP) mode
[sw2]stp mode mstp------开启mstp生成树协议4.配置MSTP域
[sw2]display stp region-configuration Oper configurationFormat selector :0 Region name :4c1fccb86056 Revision level :0Instance VLANs Mapped0 1 to 4094Region name -------域名
Revision level----修订等级
Instance-----实例,存在默认实例0,切默认情况下所有的VLAN都属于实例0[sw2]stp region-configuration
[sw2-mst-region]region-name aa------设置sw2所在的域为aa
[sw2-mst-region]revision-level 1 -----修改修等等级为1[sw2-mst-region]instance 1 vlan 1 to 5
[sw2-mst-region]instance 2 vlan 6 to 10---设置实例,并将VLAN划到实例中去。[sw2-mst-region]active region-configuration ---当域配置完成后必须要敲这条命令使配置生效,否则当退出后又要重新配置。当配置完后我们再次查看:
[sw2]display stp region-configuration Oper configurationFormat selector :0 Region name :aa Revision level :1Instance VLANs Mapped0 11 to 40941 1 to 52 6 to 105.干涉选举
当我们的基本配置做完后就可以来干涉不同实例中根的选择。根使一棵树流量汇聚的地方,通常将根放置在汇聚层。[sw2]stp instance 1 root primary ---该条命令可以指定该交换机为某个实例的根。[sw2]stp instance 1 root secondary -----该条命令可以指定该交换机为某个实例的备份根。当该实例的根发生故障后可以迅速切换为该实例的根。