三层交换机之搜索引擎

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

1)Hash Search Engine

2)Binary Search Engine

3)TCAM 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。

TCAM Search Engine

TCAM(Ternary content addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL、路由等表项。

一般的CAM存储器中每个bit位的状态只有两个,0和1。TCAM中每个bit位有三种状态,0、1和don't card状态,所以称为“三态”,它是通过掩码来实现的,当掩码位置0时,表示don't card状态。正是TCAM的don't care状态特征,使其既可以进行精确匹配查找,又可以进行模糊匹配查找;而CAM没有don't care状态,所以只能进行精确匹配查找。TCAM表内所有条目都可以并行访问,比如有100条ACL,TCAM可以一次对这100条ACL进行对比操作,而不用一条接一条对比。

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

参考文献:《TCAM在高速路由查找中的应用及其FPGA实现》

posted on 2020-09-28 17:40  者旨於陽  阅读(1117)  评论(0编辑  收藏  举报

导航