二层数据帧转发过程

时间:2024-05-21 12:54:09

数据链路层使用数据帧来转发数据。借用百度百科的图片。
二层数据帧转发过程

  1. 第一步: 交换机收到了数据帧,先会存入交换机的缓存并检查数据帧是否完整,CRC的校验是否正确。
    如果是BPDU(桥协议数据单元),则交给CPU处理;如果缓存存满则丢弃数据帧
    丢弃数据帧有以下4种情况:
    • 缓存存满
    • CRC校验错误
    • 过小,小于64字节
    • 过长,大于1518字节
  2. 第二步: 根据vlan进入规则,判断是否丢弃
    1. 如果数据帧有TAG头,但是该端口不接受此VLAN,丢弃
    2. 如果有有TAG头,该端口接收次VLAN,进入下一个流程
    3. 如果没有TAG头,打上该端口的缺省PVID,进入下一个流程
      二层数据帧转发过程
  3. 第三步: 根据In过滤表对数据帧的MAC地址进行过滤
    1. MAC过滤,如果在交换机上设置了过滤的MAC地址,进入数据帧的源MAC地址若为需要过滤的MAC地址,则交换机不转发该数据帧
    2. MAC绑定,将MAC地址绑定在交换机端口,如果这个接口收到的数据帧源MAC不是绑定MAC,则丢弃
  4. 第四步: 学习MAC地址
    交换机中有一张名为MAC地址表的表,当交换机收到一个数据帧后,他会首先记录这个数据帧的源端口和源MAC地址的映射。
    如果这个MAC地址表已经存在这个映射项,则更新这个映像的老化时间,如果没有,则保存这个映射项。
    然后判断这个数据帧属于广播还是单播,如果是广播帧则向所有端口(除了接收该数据帧的端口)转发数据帧;如果是单播帧则查找MAC地址表,根据MAC地址表中存在对应映射项进行数据转发,如果没有,交换机就会广播这个数据帧,有对应接收者回消息时,它便会记住对应的MAC地址与端口的映射,以便下次的转发。
    最初的学习也就是因此的来(所以往往第一个数据帧的延迟会比较大)
  5. 第五步: 数据帧进入主交换引擎,根据VLAN Table表把数据帧发送到属于相应VLAN的端口(VLAN Table表,记录VID和它的端口成员)
  6. 第六步:交换机在该VLAN内的所有端口查找目的MAC地址,查找到了就发送到相应的端口,查不到就发送到所有端口;
    如果配置了组播的话,就要看看有没有IGMP Snooping,如果开启了这个功能就会把组播数据发送到对应端口,如果没有就发送到所有端口;
    补充:
    • IGMP(Internet Group Management Protocol,互联网组管理协议):是TCP/IP协议族中负责IP组播成员管理的协议,用来在IP主机和与其直接相连的组播路由器之间建立、维护组播组成成员关系。
    • IGMP侦听运行在数据链路层,是二层以太网交换机上的组播约束机制,用于管理和控制组播组。
  7. 第七步:到达对应端口之后,交换机对数据帧进行出规则管处理,带不带Tag出去
    • access端口:将VLAN的信息剥离,发出去
    • trunk端口:比较PVID和将要发送的VLAN信息,如果两者相等则剥离VLAN信息在发送;如果不想等则直接发送。
    • Hybrid端口:
      • 判断该VLAN在本端口的属性(看该端口对那些VLAN是Untag,那些VLAN是Tag)
      • 如果是Untag则剥离Vlan信息在发送,如果是Tag则直接发送
        补充:
        PVID(port-base vlan ID):端口的虚拟局域网ID号,关系到端口收发数据帧时候的VLAN TAG标记。
  8. 第八步:交换机根据配置进行QoS处理
    包括队列重组、Tos重设、端口限速等功能
    QoS对数据包处理:
    1. 分类:
      1. 按数据包中原有的分类(DSCP/IP优先级/Cos值)
      2. 按接口的手工分类(DSCP/IP优先级/Cos值)
    2. 流量控制:流量控制可能丢弃数据包或将低优先级
    3. 标记:修改入站帧的DSCP/IP优先级/Cos值,可在接口上配置标记
    4. 决定加入哪个传输队列(拥塞管理包含多种排队机制FIFO排队,WRR排队,严格优先级)
  9. 第九步:重新计算该数据帧的CRC
  10. 第十步:数据帧从交换机发出

如有错误请指正,感谢指正,我会及时修改。