交换网络知识点整理

1、交换机收到数据帧的行为

  交换机收到数据帧
    查看源MAC地址,跟MAC地址表(CAM)进行比较,查找有无源MAC地址表项
      有:查看MAC表项绑定接口与进接口是否相同
        相同:刷新计时器(300s),查找目的MAC
        不相同:重新绑定接口,刷新计时器,查找目的MAC地址
      无:直接学习MAC地址并绑定进接口,刷新计时器,查找目的MAC
    查找目的MAC地址
      有:查看目的MAC绑定接口与进接口是否相同(从这个接口出来又要从这个接口出去)
        相同:丢弃
        不相同:转发
      无:泛洪(将数据从除进接口外的其他所有接口发送)


2、当一台主机从交换机的一个端口移动到另外一个端口时,交换机的MAC地址表会发生什么变化

  当一台主机从交换机的一个端口移除时,交换机检测到物理链路Down,因此会从MAC地址表中清除对应主机的MAC表项。一旦主机连接到交换机另外一个端口,交换机会检测到新端口对应的物理链路UP。主机发送报文后,交换机就会学习到主机的MAC地址和新端口的映射关系,并且添加到MAC地址表中

3、STP

  工作过程

    1、选举一个根桥

      选举依据:BID

      STP中根桥的选举依据的是桥ID,STP中的每个交换机都会有一个桥ID(Bridge ID) 。桥ID由16位的桥优先级(Bridge Priority)和48位的 MAC地址构成。在STP网络中,桥优先级是可以配置的,取值范围是 0~65535,默认值为32768。优先级最高的设备(桥ID最小)会被选举为根桥。如果优先级相同,则会比较MAC地址,MAC地址越小则越优先。
交换机启动后就自劢开始进行生成树收敛计算。默认情况下,所有交换机启动时都认为自己是根桥,自己的所有端口都为指定端口,这样BPDU报文就可以通过所有端口转发。对端交换机收到BPDU报文后, 会比较BPDU中的根桥ID和自己的桥ID。如果收到的BPDU报文中的桥ID优先级低,接收交换机会继续通告自己的配置BPDU报文给邻居交换机。如果收到的BPDU报文中的桥ID优先级高,则交换机会修改自己的BPDU报文的根桥ID字段,宣告新的根桥。

    2、每个非根交换机选举一个根端口

      选举依据:根路径开销RFC(带宽越高,开销越小)、对端BID、对端PID、本端PID(端口优先级+端口号)

      交换机的每个端口都有一个端口开销(Port Cost)参数,此参数表示该端口发送数据时的开销值,即出端口的开销。STP认为从一个端口接收数据是没有开销的。端口的开销和端口的带宽有关,带宽越高,开销越小。从一个非根桥到达根桥的路径可能有多条,每一条路径都有一个总的开销值,此开销值是该路径上所有出端口的端口开销总和,即根路径开销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最小的作为根端口。

    3、每条链路/冲突域选举一个指定端口(DESI)

      选举依据:本端BID、本端PID

      在网段上抑制其他端口(无论是自己的还是其他设备的)发送BPDU报文的端口,就是该网段的指定端口。每个网段都应该有一个指定端口, 根桥的所有端口都是指定端口(除非根桥在物理上存在环路)。
指定端口的选举也是首先比较累计根路径开销,累计根路径开销最小的端口就是指定端口。如果累计根路径开销相同,则比较端口所在交换机的桥ID,所在桥ID最小的端口被选举为指定端口。如果通过累计根路径开销和所在桥ID选举出来,则比较端口ID,端口ID最小的被选举为指定端口。

    4、阻塞非根、非指定端口(ALTE)

      网络收敛后,只有指定端口和根端口可以转发数据。其他端口为预备端口,被阻塞,不能转发数据,只能够从所连网段的指定交换机接收到BPDU报文,并以此来监视链路的状态。

  端口状态

    disabled:禁用状态,不处理不转发BPDU报文,不转发用户流量
    blocking:阻塞状态,接收并处理BPDU,不转发BPDU,不转发用户流量
    listening:侦听状态,转发BPDU,不转发用户流量
    learning:学习状态,可根据收到的用户流量构建MAC地址表,但不转发用户流量
    forwarding:转发状态,既转发BPDU也转发用户流量

    端口不再是根端口或指定端口会跳到阻塞状态
    端口禁用或链路失效会跳到禁用状态
    端口被选为根端口或指定端口的时候从阻塞状态变成侦听状态,经历20s
    端口初始化会从禁用状态变为阻塞状态
    侦听到学习15s,学习到转发15s

  STP中BPDU报文字段:
    PID:协议标识
    PVI:协议版本标识(STP默认为0)2为RSTP
    BPDU Type:BPDU类型:配置BPDU、TCN BPDU(拓扑变更通告)

      配置BPDU包含了桥ID、路径开销和端口ID等参数。STP协议通过在交换机指间传递配置BPDU来选举根交换机,以及确定每个交换机端口的角色和状态。在初始化过程中,每个桥都主动发送配置BPDU 。在网络拓扑稳定以后,只有根桥主动发送配置BPDU,其他交换机在收到上游传来的配置BPDU后,才会发送自己的配置BPDU

      TCN BPDU是指下游交换机感知到拓扑发生变化时向上游发送的拓扑变化通知


    Flags:标识:TCA(拓扑变更确认)、TC(拓扑变更)
    Root ID:根桥ID
    RPC:根路径开销
    BID:桥ID 由桥优先级和MAC地址组成
    PID:端口ID 由端口优先级+端口标识
    message age:信息生存时间,如果配置BPDU是根桥发出的,则Message Age为0 。否则,Message Age是从根桥发送到当前桥接收到BPDU的总时间,包括传输延时等。实际实现中,配置BPDU报文每经过一个交换机,Message Age增加1
    max age:最大超时时间,默认20s,是指BPDU报文的老化时间,可在根桥上通过命令人为改动这个值。Max Age通过配置BPDU报文的传递,可以保证Max Age在整网中一致。非根桥设备收到配置BPDU报文后,会将报文中的 Message Age和Max Age进行比较:如果Message Age小于等于 Max Age,则该非根桥设备会继续转发配置BPDU报文。如果 Message Age大于Max Age,则该配置BPDU报文将被老化掉。该非根桥设备将直接丢弃该配置BPDU,并认为是网络直径过大,导致了根桥连接失败
    hello time:默认2s发送一次BPDU,是指运行STP协议的设备发送配置BPDU的时间间隔,用于检测链路是否存在故障。交换机每隔Hello Time时间会向周围的交换机发送配置BPDU报文,以确认链路是否存在故障。当网络拓扑稳定后,该值只有在根桥上修改才有效。
    fwd delay:转发延时,默认为15s

  STP拓扑变化过程

    根桥故障:非根桥会在BPDU老化后开始根桥的重新选举

      在稳定的STP拓扑里,非根桥会定期收到来自根桥的BPDU报文。如果根桥发生了故障,停止发送BPDU报文,下游交换机就无法收到来自根桥的BPDU报文。如果下游交换机一直收不到BPDU报文,Max Age定时器就会超时(Max Age的默认值为20秒),从而导致已经收到的BPDU报文失效,此时,非根交换机会互相发送配置BPDU报文,重新选举新的根桥。根桥故障会导致50秒左右的恢复时间,恢复时间约等于 Max Age加上两倍的Forward Delay收敛时间

    直连链路(直连根桥)故障:将预备端口转换为根端口,新的根端口在30s后恢复到转发状态

      此例中,SWA和SWB使用了两条链路互连,其中一条是主用链路,另外一条是备份链路。生成树正常收敛之后,如果SWB检测到根端口的链路发生物理故障,则其Alternate端口会迁移到Listening、 Learning、 Forwarding状态,经过2倍的Forward Delay后恢复到转发状态

交换网络知识点整理

    非直连链路故障:恢复到转发状态要50s(max age+两倍forward delay时间)

      本例中,SWB不SWA之间的链路发生了某种故障(非物理层故障), SWB因此一直收不到来自SWA的BPDU报文。此时,SWB会认为根桥SWA不再有效,于是开始发送BPDU报文给SWC,通知SWC自己作为新的根桥。SWC也会继续从原根桥接收BPDU报文,因此会忽略SWB 发送的BPDU报文。由于SWC的Alternate端口再也不能收到包含原根桥 ID的BPDU报文。其Max Age定时器超时后,SWC会切换Alternate端口为指定端口并且转发来自其根端口的BPDU报文给SWB。SWB放弃宣称自己是根桥并开始收敛端口为根端口。非直连链路故障后,由于需要等待Max Age加上两倍的Forward Delay时间,端口需要大约50秒才能恢复到转发状态

交换网络知识点整理

    拓扑变更导致mac地址表错误:要经过mac地址表项的默认老化时间300s,这期间无法正确转发

      在交换网络中,交换机依赖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转发该数据帧

交换网络知识点整理

      拓扑变化过程中,根桥通过TCN BPDU报文获知生成树拓扑里发生了故障。根桥生成TC用来通知其他交换机加速老化现有的         MAC地址表项。
      拓扑变更以及MAC地址表项更新的具体过程如下:
      1. SWC感知到网络拓扑发生变化后,会不间断地向SWB发送TCN
      BPDU报文。
      2. SWB收到SWC发来的TCN BPDU报文后,会把配置BPDU报文中的 Flags的TCA位设置1,然后发送给SWC,告知SWC停止发       送TCN BPDU报文。
      3. SWB向根桥转发TCN BPDU报文。
      4. SWA把配置BPDU报文中的Flags的TC位设置为1后发送,通知下游设备把MAC地址表项的老化时间由默认的300秒修改为           Forwarding Delay的时间(默认为15秒)。
      5. 最多等待15秒之后,SWB中的错误映射关系会被自动清除。此后, SWB就能通过G0/0/2端口把从主机A到主机B的帧正确地         进行转发

4、根桥产生故障后,其他交换机会被选举为根桥。那么原来的根桥恢复正常之后,网络又会发生什么变化

  如果生成树网络里面根桥发生了故障,则其它交换机中优先级最高的交换机会被选举为新的根桥。如果原来根桥再次**,则网络又会根据BID来重新选举新的根桥

5、端口开销和根路径开销的区别是什么?

  根路径开销是到根桥的路径的总开销,而端口开销指的是交换机端口的开销