网络基础回顾[1] - 交换机数据处理流程

1,080 阅读9分钟
  • 先了解PC对接收数据的工作流:

  • 交换机接收数据的工作流:

    • MAC地址的学习

      • 一般情况下,MAC地址表是设备根据接收的数据帧中的源MAC地址自动学习而建立,MAC地址表包含MAC地址、VLAN、Port、Type等信息

      • 二层设备在收到数据帧时,才会触发MAC地址表项的学习和刷新

      • 当一台目的主机加入多个VLAN时,在MAC地址转发表项中就会存在相同的MAC地址拥有多个不同VLAN ID的情况

      • MAC地址表项的老化过程

        • 缺省老化时间 = 300s;aging-time = 0表示动态MAC地址表项不老化

          [SW1]**display mac-address aging-time** # 使用该命令查看当前mac地址表项老化时间
          
            Aging time: **300 seconds**
          
    • 交换机收到数据包的流程

VLAN

Some Basics

  • 通常情况下,主机并不需要知道自己属于哪个VLAN,主机硬件通常也不能识别带有VLAN标记的帧,因此主机发送和接收的帧都是untagged帧;
  • 交换设备接收到报文后,根据配置规则(如接口信息)判断出报文所属的VLAN后,再进行处理;
  • 如果报文需要通过另一台交换机转发,则该报文必须通过干道链路透传到对端交换设备上。为了保证其它交换设备能够正确处理报文中的VLAN信息,在干道链路上传输的报文必须都打上了VLAN标记;

链路类型 (Link Type)

  • Access
    • 接收
      • 不带tag的报文:接收该报文,并打上缺省的VLAN ID
      • 带tag的报文:当VLAN ID与缺省VLAN ID相同时,接收该报文;当VLAN ID与缺省VLAN ID不同时,丢弃该报文。
    • 发送:先剥离帧的PVID Tag,然后再发送
  • Trunk
    • 接收
      • 不带tag的报文
        • 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文;
        • 打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文;
      • 带tag的报文
        • 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文;
        • 当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文;
    • 发送
      • 当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文;
      • 当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文;
  • Hybrid
    • 接收

      • 不带tag的报文
        • 打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文;
        • 打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文;
      • 带tag的报文
        • 当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文;
        • 当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文;

      接收报文时的操作主要由PVID和处理动作决定,通过port hybrid pvid vlan *vlan_id* 配置PVID,然后根据untagged列表和tagged列表来合计允许通过的VLAN ID

    • 发送:当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag

      port hybrid untagged vlan & port hybrid tagged vlan是配置发送帧时的动作

由于设备所有的接口都默认加入VLAN1,因此当网络中存在VLAN1的未知单播、组播或者广播报文时,可能会引起广播风暴。对于不需要加入VLAN1的接口及时退出VLAN1,避免环路。

  • Example - 1

    [注]SW1 | SW2的Ethernet0/0/2和Ethernet0/0/3都配置access接口,Ethernet0/0/1配置trunk接口

    • 使用PC1访问PC3,Ethernet0/0/2接收到主机发送的untagged报文,打上Ethernet0/0/2的PVID=2,那么Ethernet0/0/2完成接收操作;

    • 在SW1内部,查询MAC地址表是否存在目的地址为PC4的MAC地址表项

      • 如果是第一次进行访问或MAC地址表项老化,这时MAC地址表不存在PC4的MAC地址表项,则SW1会将数据发送到所有属于VLAN2的接口

        • 对管理员来说,使用display vlan查看,我们可以知道哪些接口属于VLAN2

          [SW1]display vlan
          The total number of vlans is : 3
          --------------------------------------------------------------------------------
          U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
          MP: Vlan-mapping;               ST: Vlan-stacking;
          #: ProtocolTransparent-vlan;    *: Management-vlan;
          --------------------------------------------------------------------------------
          VID  Type    Ports                                                          
          --------------------------------------------------------------------------------
          2    common  UT:Eth0/0/2(U)  
            
          						 TG:Eth0/0/1(U)                                                    
          --------------------------------------------------------------------------------
          
      • 如果表项已存在**[如下]**,则SW1会查看MAC地址表的VLAN 列和Port列,依据接口Ethernet0/0/1下的配置规则进行操作,接口属于VLAN2,则将数据从Ethernet0/0/1发出

        因为Ethernet0/0/1为trunk接口且PVID=1,所以发出数据时会打上tag,即VID=2

        [SW1]display mac-address
        MAC address table of slot 0:
        -------------------------------------------------------------------------------
        MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                       VSI/SI                                              MAC-Tunnel  
        -------------------------------------------------------------------------------
        5489-981d-139a 2           -      -      Eth0/0/1        dynamic   0/-         
        5489-9831-5a7e 2           -      -      Eth0/0/2        dynamic   0/-         
        -------------------------------------------------------------------------------
        Total matching items on slot 0 displayed = 2
        
    • SW2收到tagged数据,发送tag=2在允许通过的列表中,接收数据

    • 在SW2内部,查询MAC地址表是否存在目的地址为PC4的MAC地址表项

      • 如果表项不存在,则会把数据泛洪到除接收端口外属于VLAN2的端口

        <SW2>display vlan 
        The total number of vlans is : 3
        --------------------------------------------------------------------------------
        U: Up;         D: Down;         TG: Tagged;         UT: Untagged;
        MP: Vlan-mapping;               ST: Vlan-stacking;
        #: ProtocolTransparent-vlan;    *: Management-vlan;
        --------------------------------------------------------------------------------
        
        VID  Type    Ports                                                          
        --------------------------------------------------------------------------------
        2    common  UT:Eth0/0/2(U)                                                     
        
                     TG:Eth0/0/1(U)  
        --------------------------------------------------------------------------------                                                   
        
      • 如果表项存在,则SW2就会把报文从Ethernet0/0/1

        因为Ethernet0/0/1是access接口,则access接口发出报文时会剥离tag转发

        <SW2>display mac-address
        MAC address table of slot 0:
        -------------------------------------------------------------------------------
        MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                       VSI/SI                                              MAC-Tunnel  
        -------------------------------------------------------------------------------
        5489-981d-139a 2           -      -      Eth0/0/2        dynamic   0/-         
        5489-9831-5a7e 2           -      -      Eth0/0/1        dynamic   0/-         
        -------------------------------------------------------------------------------
        Total matching items on slot 0 displayed = 2
        
    • PC4接收到从SW2发来的untagged数据

  • Example - 2 [Hybrid使用场景]

    • Hybrid接口使用场景

      • 使用灵活QinQ时;

      • 使用其它方式划分VLAN时(除基于接口)

        • 基于子网划分VLAN
        • 基于MAC地址划分VLAN
      • 实现不同VLAN并且相同网段进行互访时

    • Lab - 实现不同VLAN并且相同网段进行互访

      • PC或服务器与SW之间的链路都是传输的untagged数据

        • PC发送给SW1的数据是untagged,这时SW1是接收数据,hybrid口接收untagged数据先打上tag = PVID,要是PVID在允许列表中就发到交换机内部,则首先PVID必须在untagged列表或tagged列表中
        • 由于服务器回访的数据到达SW1后,是带tagged数据,这时要发往PC,就必须进行剥离tag的操作,那么就需要将服务器所在VLAN添加到untagged列表中。
        • 综上所述,PC所在VLAN和服务器所在VLAN都需要加入untagged列表中
        **[SW1]**
        #
        interface Ethernet0/0/2
         port hybrid pvid vlan 10
         port hybrid untagged vlan 10 100
        #
        interface Ethernet0/0/3
         port hybrid pvid vlan 20
         port hybrid untagged vlan 20 100
        #
        **[SW2]**
        #
        interface Ethernet0/0/2
         port hybrid pvid vlan 100
         port hybrid untagged vlan 10 20 100
        #
        
        # 将vlan 10或vlan 20配置到tagged list也是可以通信的
        # 即
        # interface Ethernet0/0/2 | 3
        #  port hybrid pvid vlan 10 | 20
        #  port hybrid untagged vlan 100
        #  port hybrid tagged vlan 10 | 20
        
      • 交换机之间的链路正常使用trunk,使用tagged数据进行转发

        **[SW1]**
        #
        interface Ethernet0/0/1
         port link-type trunk
         undo port trunk allow-pass vlan 1
         port trunk allow-pass vlan 10 20 100
        #
        **[SW2]**
        #
        interface Ethernet0/0/1
         port link-type trunk
         undo port trunk allow-pass vlan 1
         port trunk allow-pass vlan 10 20 100
        #
        
        # 同理,将vlan 100配置到tagged list也是可以通信的
        # 即
        # interface Ethernet0/0/2
        #  port hybrid pvid vlan 100
        #  port hybrid untagged vlan 10 20
        #  port hybrid tagged vlan 100
        

三层交换机

  • 大多数三层交换机采用ASIC硬件芯片来完成转发,ASIC芯片内部集成了IP三层转发的功能
  • 路由器的三层转发主要依靠CPU进行,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路由能力等仍然是三层交换机的薄弱环节

不同网络的主机之间互访时的行为

同网段PC互访

源主机在发起通信之前,将自己的IP与目的主机的IP进行比较,如果两者位于同一网段(用网络掩码计算后具有相同的网络号),那么源主机直接向目的主机发送ARP请求,在收到目的主机的ARP应答后获得对方的物理层(MAC)地址,然后用对方MAC作为报文的目的MAC进行报文发送。位于同一VLAN(网段)中的主机互访时属于这种情况,这时用于互连的交换机作二层交换转发

不同网段PC互访

当PC1要访问与它处于不同网段的PC2时,PC1会向10.1.1.1/24来递交报文,即发送ARP请求来获取网关IP地址对应的MAC,网关返回ARP应答,告诉PC1自己的MAC地址,然后PC1将网关的MAC地址作为下一次访问20.1.1.2/24时的目的MAC地址。但是报文中,源IP和目的IP是不会改变,源IP地址仍然是PC1的IP地址,目的地址仍是PC2的IP地址。

  • 在PC1上查看ARP缓存

    PC>arp -a
    
    Internet Address    Physical Address    Type
    10.1.1.1            **4C-1F-CC-9D-7A-24**   dynamic
    
  • 在LSW1上查看Vlanif10的MAC地址

    <Gateway>display interface Vlanif 10
    Vlanif10 current state : UP
    Line protocol current state : UP
    Last line protocol up time : 2021-03-07 13:30:51 UTC-08:00
    Description:
    Route Port,The Maximum Transmit Unit is 1500
    Internet Address is 10.1.1.1/24
    IP Sending Frames' Format is PKTFMT_ETHNT_2, Hardware address is **4c1f-cc9d-7a24**
    Current system time: 2021-03-07 13:37:47-08:00
        Input bandwidth utilization  : --
        Output bandwidth utilization : --
    

PC1上访问20.1.1.2/24后,ARP缓存表指缓存了10.1.1.1的表项,即网关表项,包括网关LSW1的Vlanif10接口的MAC地址。所以这时LSW1作为三层交换机,作三层交换转发。

Resources