zoukankan      html  css  js  c++  java
  • 三层交换机之搜索引擎

    BCM交换芯片实际上是查表转发(table lookups),有多个表项,如L2_ENTRY, L2_USER_ENTRY, L2MC, IPMC,VLAN等,为了实现线速转发,查表的速度一定要快,BCM芯片中三种类型的搜索引擎(Search Engines):

    1)Hash Search Engine

    2)Binary Search Engine

    3)CAM Search Engine

    交换芯片报文转发流程中不同阶段,使用不同的搜索引擎。

    Hash Search Engine

    哈希查找是一种使用哈希算法基于数据内容计算存储位置进行查找的方法。

    BCM芯片中以下表项使用Hash查找:

    1) L2 MAC table (for lookup and learning)

    2) L3 Host table (for IPv4 and IPv6 lookups)

    3) MAC VLAN

    4) IPMC

    5) ECMP table (for reverse path forwarding(RPF) checks)

    6) VLAN_XLATE (for Ingress/Egress VLAN translation)

    全局HASH_CONTROL寄存器用来配置hashing key。例如L2/L3 Table,可以配置Hash算法为使用高/低16位或者32位的CRC值作为Hash Key。比如L2 Table有32K个表项,分为4K个buckets,每个bucket有8个表项。查找L2 Table时,通过查找的MAC计算的CRC快速定位到bucket,然后比较bucket内的8个表项;写L2 Table时,总是写bucket中的第一个可用表项,直到写满。但是有一种情况,如果bucket内只剩余1个表项资源,而有两个待学习的MAC地址表项映射到这个bucket,那么第二个MAC地址就会学习失败。

    BCM芯片也支持Dual-hashing算法,从而提高hash表的利用率。这种场景下,L2/L3 Table分为两组buckets,每个bucket有4个表项。L2_ENTRY Table通过L2_AUX_HASH_CONTROL寄存器配置,L3 Table通过L3_AUX_HASH_CONTROL寄存器配置。使能Dual-hasning算法时,两组buckets可以配置不同的Hash算法,如第一组使用CRC32_UPPER,第二组使用CRC32_LOWER。

    Binary Search Engine

    基于index索引号进行搜索,如VLAN和PORT Tables。

    CAM Search Engine

    CAM类似于BSE,但是它是一种三态搜索策略,即0、1、不关心。当掩码没有置位时,表示不关心该字段;当掩码置位时,键值生效。

    使用TCAM策略查找的表项包括IFP、EFP、VFP和L3_DEFIP。

  • 相关阅读:
    WHMCS系统API调用
    Zend Guard Loader/Zend Loader是干什么的
    代理IP收集
    Jenkins 2.x版本的节点配置选项更新
    Visual Studio 2015 未响应/已停止工作的问题解决
    Visual Studio多版本进行切换的研究
    商城产品如何应对多个客户不同的需求修改并发布对应客户的文件
    Visual Studio插件
    微软注册dll在dotnet开发时起到缓存的作用
    Visual Studio 2015出现Cannot find one or more components. Please reinstall the application.的问题解决
  • 原文地址:https://www.cnblogs.com/justin-y-lin/p/13745736.html
Copyright © 2011-2022 走看看