硬件交换架构中的 TCAM 关系

网络工程 记忆 亚瑟士 中央处理器
2021-07-15 18:33:07

我熟悉(高级)三元内容可寻址内存的工作方式,但我仍然对 TCAM 与 ASIC 的关系以及这些组件何时可能与 CPU 结合以获得更高的交换性能感到困惑...... (特别是当供应商经常推销这种使用时商/定制芯片,或用于新产品和功能的定制 ASIC,那么它看起来令人困惑)

例如,我熟悉 Cisco IOS,它能够为诸如 qos、acl 和路由查找等功能的 TCAM 性能分区更多空间。我也明白像 NAT 这样的功能仍然依赖 CPU 处理,但是我特别努力;

  1. TCAM 是同一硬件架构的一部分,即ASIC 本身的内部还是外部?
  2. TCAM 是否可扩展(例如,制造商是否可以继续将 TCAM 添加到平台以获得更高的性能和自定义功能),或者是否存在基于功耗等因素的限制?
  3. TCAM 周期和 ASIC 是否完全与 CPU 并行工作以实现 NAT 等功能,还是我应该只将它们视为独立的东西?
2个回答

TCAM是一种存储器,需要 10-12 个晶体管来存储单个位。相比之下,静态 RAM ( SRAM ) 只需要 6 个晶体管来存储一位,而动态 RAM ( DRAM ) 则需要一个晶体管和一个电容器。所有这些不同类型的存储器都可以在 ASIC 内部或外部。将所有存储器放在一个芯片上的一个原因是它们可以以比芯片外部时更高的时钟速率运行。为什么选择一种类型的内存而不是另一种?这与内存的特性有关,SRAM可以每个时钟访问,DRAM需要周期性刷新,所以不能每个时钟访问,TCAM给你三元能力

只要您在芯片上有空间来实例化它们,或者在封装上有引脚以连接到外部,TCAM就具有可扩展性。TCAM的问题是它们占用SRAM 的2倍空间和DRAM 的12 倍空间TCAM用于您可以使用其他内存类型通过算法(哈希、*尝试)执行的相同操作并不总是有意义的这归结为算法的利用效率和选择的芯片空间之间的权衡。TCAM的功率利用率与大小成线性比例增长。大多数大型TCAM(大于 200 万个条目)现在使用算法技术来实现节能。

NAT/PAT 是一项复杂的功能,通常需要 CPU 或网络处理器 (NPU) 来处理修正。NAT 的一般数据包流是第一个数据包到达 CPU/NPU,并在流表或 ACL 表中安装一个流条目,其中包含有关如何转换流中后续数据包的信息。有多种不同形式的 NAT/PAT,优化芯片中每一种的方法也一样多。最简单的 NAT 是重写 IP,如果您破坏了负载中嵌入的地址,请不要担心,无需修复。

BRKARC-3466 的另一个版本在墨尔本的 CiscoLive 2013 上展示,它涵盖了查找背后的一些高级思想,而 2013 年的奥兰多则没有。关于这方面的一本很好的参考书是George Varghese所著的Network Algorithmics: An Interlateral Approach to Designing Fast Networked Devices

ASIC 可以被认为是一种芯片。它通常是为了在硬件中做一些本来可以通过软件完成的事情而构建的。因此,思科可以为它想要的任何东西构建 ASIC。根据交换机的型号,有 1 个或多个 ASIC。TCAM 是一种内存设计,因为它通常出现在底盘系统上,它作为许多ASIC 之一来实现。TCAM 用于特定的查找功能,如路由 (CEF) 或 ACLS,因此如果 ASIC 不需要进行这种查找,它可以与 TCAM 分开工作。另一方面,处理 QoS 标记的 ASIC 与 TCAM 密切配合。下面关于 cisco live 的演示讨论了一些设计权衡,是了解交换机设计内容的好地方

BRKARC-3466 - 探索开关制造背后的工程(2013 奥兰多),它包含 ASIC 列表和许多通用开关设计信息