TCAM与HASH的区别,大家可以参考下面两个链接的内容:
https://www.cnblogs.com/davidshisogood/p/15117752.html
https://blog.youkuaiyun.com/xtydtc/article/details/107056512
1、有了TCAM,就可支持各种LOOKUP KEY的任何组合查找,任意地MASK掉任何不关心的字段。只有TCAM可以做这样的事情,HASH不行。(个人理解:相当于TCAM支持模糊匹配,HASH不支持)(功能上的区别)
2、性能上:TCAM查找速度更快;
3、使用TCAM则可以避免哈希冲突问题,或者在出现哈希冲突的时候,改用TCAM;
TCAM与HASH表的差异
TCAM之所以一个bit能表示三个值,原因是它的一条entry其实在物理上由两条entry组成,一条存放data,另外一条存放相应的mask。由此可以实现0/1/X的表示。有了TCAM,就可支持各种LOOKUP KEY的任何组合查找,任意地MASK掉任何不关心的字段。只有TCAM可以做这样的事情,HASH不行。
(个人理解:相当于TCAM支持模糊匹配,HASH不支持)(功能上的区别)
https://www.cnblogs.com/davidshisogood/p/15117752.html
由于HASH函数的多对一本质特性,HASH冲突总是存在.对于MAC芯片硬件而言,产生哈希冲突的帧会被丢掉从而学不到对应的MAC地址.使用TCAM则可以避免哈希冲突问题,或者在出现哈希冲突的时候,改用TCAM。
TCAM不依赖传统的前缀匹配查找算法,TCAM可以并行查找所有表项,意味着一次遍历即可找到最长的前缀匹配地址。
在查找某一地时候,需要对所有CAM存储器都通上电,初始的时候,所有的地址存储单位都输出“匹配”-True的状态,只要该路上有一个字节不匹配,则该路的输出将变为“不匹配”-False的状态,即同一时刻对所有的存储硬件进行匹配,最后只有一路维持电路上通的状态,实现了硬件上的一次性快速查找。
优点:硬件级快速路由查找
缺点:1,需要用2个bit来表示原先的每个bit的三个状态,需要更大的存储空间;2,由于每次查找,所有地址所在的存储器都要通电,故要消耗更多的电力;总体而言是牺牲存储空间和电力消耗来换取快速硬件路由.
https://blog.youkuaiyun.com/xtydtc/article/details/107056512
哈希表查找法是软件查找中计较快的一种方法,它是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。虽然哈希表查找法相对来说比较快,但还是满足不了高速实时通信系统(如40G/100G POS)的极速查找需求。(性能上的区别)
基于硬件的TCAM查找法正是在这种背景下提出的,用此方法进行查找时,整个表项空间的所有数据在同一时刻被查询,查找速度不受表项空间数据大小影响,每个时钟周期完成一次查找
TCAM应用方式: