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。

  • 相关阅读:
    OpenStack(queens)最小化搭建记录——控制与计算共两个节点
    CentOS7 minimal(最小化安装)后增加的软件安装
    redis
    layui 单击事件,选中 checkbox f
    DLL 引用查询工具
    自定义JS Map 函数
    修改MSSQL字段类型
    苹果ATS特性服务器配置指南 HTTPS 安卓可以用 IOS 报错。
    基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
    不能将多个项传入“Microsoft.Build.Framework.ITaskItem”类型的参数
  • 原文地址:https://www.cnblogs.com/justin-y-lin/p/13745736.html
Copyright © 2011-2022 走看看