精华内容
下载资源
问答
  • 生成树协议

    2021-03-15 14:21:47
    生成树协议 文章目录生成树协议生成树协议STP出现背景广播风暴MAC地址表震荡STP的基本概念一般概念重要概念配置BPDUSTP的作用STP报文格式生成树算法拓扑改变导致MAC地址表错误拓扑改变导致MAC地址表变化RSTP的基本...

    STP原理与生成树协议

    生成树协议

    是一种工作在OSI网络模型中的第二层(数据链路层)的通信协议,基本应用是防止交换机冗余链路产生的环路.用于确保以太网中无环路的逻辑拓扑结构.从而避免了广播风暴,大量占用交换机的资源。

    STP出现背景

    广播风暴

    环路会引起广播风暴。
    网络中的主机会收到重复数据帧。

    根据交换机的转发原则,如果交换机从一个端口上接收到的是一个广播帧,或者是一个目的MAC地址未知的单播帧,则会将这个帧向除源端口之外的所有其他端口转发。如果交换网络中有环路,则这个帧会被无限转发,此时便会形成广播风暴,网络中也会充斥着重复的数据帧。
    主机A向外发送了一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB接收到此帧后,将其转发到SWA和SWC,SWA和SWC也会将此帧转发到除了接收此帧的其他所有端口,结果此帧又会被再次转发给SWB,这种循环会一直持续,于是便产生了广播风暴。交换机性能会因此急速下降,并会导致业务中断。

    MAC地址表震荡

    MAC地址表震荡

    交换机是根据所接收到的数据帧的源地址和接收端口生成MAC地址表项的。
    主机A向外发送一个单播帧,假设此单播帧的目的MAC地址在网络中所有交换机的MAC地址表中都暂时不存在。SWB收到此数据帧之后,在MAC地址表中生成一个MAC地址表项,00-01-02-03-04-AA,对应端口为G0/0/3,并将其从G0/0/1和G0/0/2端口转发。此例仅以SWB从G0/0/1端口转发此帧为例进行说明。
    SWA接收到此帧后,由于MAC地址表中没有对应此帧目的MAC地址的表项,所以SWA会将此帧从G0/0/2转发出去。
    SWC接收到此帧后,由于MAC地址表中也没有对应此帧目的MAC地址的表项,所以SWC会将此帧从G0/0/2端口发送回SWB,也会发给主机B。
    SWB从G0/0/2接口接收到此数据帧之后,会在MAC地址表中删除原有的相关表项,生成一个新的表项,00-01-02-03-04-AA,对应端口为G0/0/2。此过程会不断重复,从而导致MAC地址表震荡。

    STP的基本概念

    一般概念

    遵循标准
    STP遵循IEEE std 802.1D标准
    基本思想
    STP根据拓扑结构构建无环网络
    实现方法

    STP通过阻塞适当的端口来避免环路
    STP可以消除网络中的环路。其基本理论依据是根据网络拓扑构建(生成)无回路的连通图(就是树),从而保证数据传输路径的唯一性,避免出现环路导致报文流量的增加和循环。STP是工作在OSI第二层(Data Link Layer)的协议。

    STP协议通过在交换机之间传递特殊的消息并进行分布式的计算,来决定在一个有环路的网络中,某台交换机的某个端口应该被阻塞,用这种方法来避免掉环路

    重要概念

    根桥RB(Root Bridge)
    根桥就是网桥ID最小的桥,由优先级和MAC地址组成。
    根端口RP(Root Port)
    所谓根端口就是去往根桥路径开销最小的端口,根端口负责向根桥方向转发数据,这个端口的选择标准是依据根路径开销判定。在一台设备上所有使能STP的端口中,根路径开销最小者,就是根端口。很显然,在一个运行STP协议的设备上根端口有且只有一个,根桥上没有根端口。
    指定端口(DP)和指定桥
    每一个网段选择到根桥最近的网桥作为指定桥,该网桥到这个网段的端口为指定端口。
    指定桥通过指定端口负责向本网段转发流量和发送配置消息。
    替代端口AP(Alternate Port)
    既不是根端口,又不是指定端口

    配置BPDU

    配置BPDU
    传递根桥ID,累计根路径开销,发送设备BID,发送端口PID等参数
    由根桥周期(hello time)发送
    发送目的为组播MAC地址01-80-C2-00-00-00
    老化时间为Max Age

    配置BPDU在以下3种情况下会产生
    只要端口使能STP,则配置BPDU就会按照Hello Time定时器规定的时间间隔从指定端口发出。
    当根端口收到配置BPDU时,根端口所在的设备会向自己的每一个指定端口复制一份配置BPDU。
    当指定端口收到比自己差的配置BPDU时,会立刻向下游设备发送自己的BPDU。

    STP的作用

    消除环路:通过阻断冗余链路来消除网络中可能存在的环路。
    链路备份:当活动路径发生故障时,激活备份链路,及时恢复网络连通性。

    STP报文格式

    在这里插入图片描述

    字段内容 含义
    Protocol Identifier 协议ID=“0”
    Protocol Version Identifier 协议版本标识符,STP为0,RSTP为2,MSTP为3。
    BPDU Type BPDU类型,MSTP为0x02。 0x00:STP的Configuration BPDU 0x80:STP的TCN BPDU(Topology Change Notification BPDU) 0x02:RST BPDU(Rapid Spanning-Tree BPDU)或者MST BPDU(Multiple Spanning-Tree BPDU)
    Flags 标识位,对于“标记域”(Flags),第一个bit(左边、高位bit)表示“TCA(拓扑改变响应)”,最后一个bit(右边、低位bit)表示“TC(拓扑改变)”。
    Root Identifier 根桥BID,网桥ID都是8个字节——前两个字节是网桥优先级,后6个字节是网桥MAC地址。
    Root Path Cost 根路径开销,本端口累计到根桥的开销。
    Bridge Identifier 发送者BID,本交换机的BID。
    Port Identifier 发送端口PID,发送该BPDU的端口ID。
    Message Age 该BPDU的消息年龄。
    Max Age 消息老化年龄。
    Hello Time 发送两个相邻BPDU间的时间间隔。
    Forward Delay Delay 控制Listening和Learning状态的持续时间。

    根路径开销(Root Path Cost)
    从发送该BPDU的网桥到根桥的最小路径开销,即到根桥的最短路径上所有链路开销的和。
    桥ID(Bridge Identifier)
    发送BPDU的桥ID,对于LAN来说,就是指定桥ID(DesignatedBridgeID)。
    发送端口ID(Port Identifier)
    发送BPDU的端口ID,端口ID由端口优先级和端口号组成。对于LAN来说,就是指定端口ID(DesignatedPortID)
    Hello Time
    运行STP协议的设备发送配置消息BPDU的时间间隔,用于检测链路是否存在故障。
    当网络拓扑稳定之后,该计时器只有在根桥上进行修改才有效。
    当拓扑发生变化时,变更消息不受Hello time影响。
    缺省为2秒。
    Max Age
    运行STP协议的网络中非根桥设备收到配置BPDU报文后,报文中的Message Age和Max Age会进行比较:
    如果Message Age小于等于Max Age,则该非根桥设备继续转发配置BPDU报文。
    如果Message Age大于Max Age,则该配置BPDU报文将被老化。该非根桥设备直接丢弃该配置BPDU,可认为网络直径过大,导致根桥连接失败。
    实际实现中,配置BPDU报文经过一个桥,Message Age增加1。
    缺省为20。
    Forward Delay
    配置BPDU传播到全网的最大延迟,默认为15秒。

    生成树算法

    选择根网桥(Root Bridge)
    初始状态所有交换机所有端口处于listening状态
    网络中桥ID最小的网桥被选为根桥
    STP拓扑计算
    网络中所有的设备使能STP协议后,每一台设备都认为自己是根桥。此时,每台设备仅仅收发配置BPDU,而不转发用户流量,所有的端口都处于Listening状态。所有设备通过交换配置BPDU后,进行选举工作,选出根桥、根端口和指定端口。
    网络初始化时,网络中所有的STP设备都认为自己是“根桥”,根桥ID为自身的设备ID。通过交换配置消息,设备之间比较根桥ID,网络中根桥ID最小的设备被选为根桥。
    交换机优先级是可以配置的,取值范围是0~65535,默认值为32768。
    STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID由16位的桥优先级(Bridge Priority)和48位的MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是0~65535,默认值为32768。优先级最高的设备(数值越小越优先)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
    交换机启动后就自动开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后,会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。

    选择根端口(Root Ports)
    非根交换机在选举根端口时分别依据该端口的根路径开销、对端BID(Bridge ID)、对端PID(Port ID)和本端PID。

    交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口在STP中的开销值。默认情况下端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有接收BPDU端口的端口开销总和(即BPDU的入方向端口),称为路径开销。非根桥通过对比多条路径的路径开销,选出到达根桥的最短路径,这条最短路径的路径开销被称为RPC(Root Path Cost,根路径开销),并生成无环树状网络。根桥的根路径开销是0。
    一般情况下,企业网络中会存在多厂商的交换设备,华为X7系列交换机支持多种STP的路径开销计算标准,提供最大程度的兼容性。缺省情况下,华为X7系列交换机使用IEEE 802.1t标准来计算路径开销。
    运行STP交换机的每个端口都有一个端口ID,端口ID由端口优先级和端口号构成。端口优先级取值范围是0到240,步长为16,即取值必须为16的整数倍。缺省情况下,端口优先级是128。端口ID(Port ID)可以用来确定端口角色。
    每个非根桥都要选举一个根端口。根端口是距离根桥最近的端口,这个最近的衡量标准是靠路径开销来判定的,即路径开销最小的端口就是根端口。端口收到一个BPDU报文后,抽取该BPDU报文中根路径开销字段的值,加上该端口本身的端口开销即为本端口路径开销。如果有两个或两个以上的端口计算得到的累计路径开销相同,那么选择收到发送者BID最小的那个端口作为根端口。
    如果两个或两个以上的端口连接到同一台交换机上,则选择发送者PID最小的那个端口作为根端口。如果两个或两个以上的端口通过Hub连接到同一台交换机的同一个接口上,则选择本交换机的这些端口中的PID最小的作为根端口。

    选择指定端口(Designated Ports)
    非根交换机在选举指定端口时分别依据根路径开销、BID、PID。
    未被选举为根端口或指定端口的端口为预备端口,将会被阻塞。

    在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口,根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。
    指定端口的选举也是首先比较累计路径开销,累计路径开销最小的端口就是指定端口。如果累计路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计路径开销和所在桥ID选举不出来,则比较端口ID,端口ID最小的被选举为指定端口。
    网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

    拓扑改变导致MAC地址表错误

    MAC地址表项的默认老化时间是300秒。在这段时间内,SWB无法将数据从G0/0/2端口转发给主机B。

    在交换网络中,交换机依赖MAC地址表转发数据帧。缺省情况下,MAC地址表项的老化时间是300秒。如果生成树拓扑发生变化,交换机转发数据的路径也会随着发生改变,此时MAC地址表中未及时老化掉的表项会导致数据转发错误,因此在拓扑发生变化后需要及时更新MAC地址表项。
    SWB中的MAC地址表项定义了通过端口GigabitEthernet 0/0/3可以到达主机A,通过端口GigabitEthernet 0/0/1可以到达主机B。由于SWC的根端口产生故障,导致生成树拓扑重新收敛,在生成树拓扑完成收敛之后,从主机A到主机B的帧仍然不能到达目的地。这是因为MAC地址表项老化时间是300秒,主机A发往主机B的帧到达SWB后,SWB会继续通过端口GigabitEthernet 0/0/1转发该数据帧。

    拓扑改变导致MAC地址表变化

    拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的MAC地址表项。
    拓扑变更以及MAC地址表项更新的具体过程如下:
    SWC感知到网络拓扑发生变化后,会不间断地向SWB发送TCN BPDU报文。
    SWB收到SWC发来的TCN BPDU报文后,会把配置BPDU报文中的Flags的TCA位设置1,然后发送给SWC,告知SWC停止发送TCN BPDU报文。
    SWB向根桥转发TCN BPDU报文。
    SWA把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300秒修改为Forward Delay的时间(默认为15秒)。
    最多等待15秒之后,SWB中的错误MAC地址表项会被自动清除。此后,SWB就能重新开始MAC表项的学习及转发操作。

    RSTP的基本概念

    RSTP与STP的区别

    RSTP与STP的不同
    增加端口角色
    减少端口状态
    充分利用BPDU中的Flag字段
    对BPDU的处理方式发生了改变
    提高收敛速度
    增加了保护功能

    端口角色

    根端口

    指定端口

    Alternate端口

    Backup端口
    在这里插入图片描述
    RSTP的端口角色共有4种:根端口、指定端口、Alternate端口和Backup端口。
    根端口和指定端口与STP协议中的定义相同,Alternate端口和Backup端口的描述如下:
    从配置BPDU报文发送角度来看:
    Alternate端口就是由于学习到其它网桥发送的更优配置BPDU报文而阻塞的端口。
    Backup端口就是由于学习到自己发送的更优配置BPDU报文而阻塞的端口。
    从用户流量角度来看:
    Alternate端口提供了从指定桥到根的另一条可切换路径,作为根端口的备份端口。
    Backup端口作为指定端口的备份,提供了另一条从根桥到相应网段的备份通路。
    给一个RSTP域内所有端口分配角色的过程就是整个拓扑收敛的过程。

    端口状态

    RSTP端口状态**
    Forwarding
    Learning
    Discarding
    在这里插入图片描述

    RSTP的状态规范把原来的5种状态缩减为3种。根据端口是否转发用户流量和学习MAC地址来划分:
    如果不转发用户流量也不学习MAC地址,那么端口状态就是Discarding状态。
    如果不转发用户流量但是学习MAC地址,那么端口状态就是Learning状态。
    如果既转发用户流量又学习MAC地址,那么端口状态就是Forwarding状态。
    RSTP计算过程:
    端口在Discarding状态下完成端口角色的确定:
    当端口角色确定为根端口和指定端口后,经过forwarding delay后,端口进入Learning状态,处于Learning状态的端口其处理方式和STP相同,此期间端口开始学习MAC地址并在Forwarding delay后进入Forwarding状态,开始转发数据。实际上,RSTP会通过其他方式加快这个过程。
    当端口角色确定为Alternate端口后,端口会维持在Discarding状态。

    BPDU中的Flag

    RSTP对STP的BPDU改动
    充分利用STP中BPDU的Flag,明确端口角色
    Type字段为2
    Flag字段使用了之前的保留位,更改后的配置BPDU更名为RST BPDU
    在这里插入图片描述
    配置BPDU格式的改变,充分利用了STP协议报文中的Flag字段,明确了端口角色。在配置BPDU报文的格式上,除了保证和STP格式基本一致之外,RSTP作了一些小变化:
    Type字段,配置BPDU类型不再是0而是2,所以运行STP的设备收到RSTP的配置BPDU时会丢弃。
    Flags字段,使用了原来保留的中间6位,这样改变的配置BPDU叫做RST BPDU。
    RSTP中BPDU的Flag字段解释:
    第0位为TC标志位,和STP相同。
    第1位为Proposal标志位,该位置位表示该BPDU为快速收敛机制中的Proposal报文。
    第2位和第3位为端口角色标志位,00表示端口角色为未知;01表示端口角色为根端口;10表示端口角色为Alternate或Backup端口;11表示端口为指定端口。
    第4位为Learning标志位,该位置位表示端口处于Learning状态。
    第5位为Forwarding标志位,该位置位表示端口处于Forwarding状态。
    第6位为Agreement标志位,该位置位表示该BPDU位快速收敛机制中的Agreement报文。
    第7位为TCA标志位,和STP相同。

    MSTP(多生成树协议)

    在网络中使用STP时,交换机在选举端口时可能会把其他vlan的端口误关,这里就要使用MSTP了。
    MSTP概念:为每个vlan或多个vlan为一组构造一个生成树,实现网络的负载均衡。

    在这里插入图片描述
    其他配置已配好的情况下,只写STP部分的(G0/0/2和E0/0/1配trunk,G0/0/1配access)
    [SW1]stp enable
    启用STP (默认启用的)
    [SW1]stp mode mstp
    将模式改成MSTP模式,此模式兼容STP/RSTP
    [SW1]stp region-configuration
    进入MSTP视图
    [SW1-mst-region]region-name shili
    配置MSTP域名,缺省为交换机设备主控板上管理网口的MAC地址
    [SW1-mst-region]revision-level 1
    配置MSTP修订级别,缺省为1,各个设备的修订级别要一致
    [SW1-mst-region]instance 1 vlan 10
    配置实例,并将vlan10加入实例1(一个vlan只能加入一个实例,但实例里可以有许多vlan)
    [SW1-mst-region]instance 2 vlan 20
    [SW1-mst-region]active region-configuration
    激活MSTP域的配置(这里必须要激活,而且一旦激活无法更改)
    [SW1-mst-region]q
    在这里插入图片描述
    [SW1]stp instance 1 root primary
    配置此交换机为实例1的主根桥
    [SW1]stp instance 2 root secondary
    配置此交换机为实例2的备用根桥
    在这里插入图片描述

    sw2的情况和sw1一致,除了最后设置主备根桥的时候注意下(G0/0/2和E0/0/1配trunk,G0/0/1配access)
    [SW2]stp instance 1 root secondary
    配置此交换机为实例1的备用根桥
    [SW2]stp instance 2 root primary
    配置此交换机为实例2的主根桥

    SW3需要配置和以上不同,除设置主备根桥的MSTP命令(连主机的e0/0/1和e0/0/2配access,连交换机的trunk)

    [SW1]dis stp brief
    查看STP接口及状态
    在这里插入图片描述
    [SW1]stp priority 0
    设置优先级 数值为4096的倍数

    [SW1]dis stp
    显示端口是什么端口(根网桥等)

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,376
精华内容 1,350
关键字:

生成树协议