我试图了解 TCAM,但我偶然发现了这一点: Ternary CAMs,维基百科
对于地址的主机部分,地址使用“don't care”存储,因此在 CAM 中查找目标地址会立即检索正确的路由条目;屏蔽和比较都是由 CAM 硬件完成的。
这一段对我来说是模棱两可的。是否使用 TCAM 进行掩码,以便结果是与路由表中的网络地址进行比较的网络地址?
因为在路由时根本不必计算网络地址将是 TCAM 的一个很棒的特性。
我试图了解 TCAM,但我偶然发现了这一点: Ternary CAMs,维基百科
对于地址的主机部分,地址使用“don't care”存储,因此在 CAM 中查找目标地址会立即检索正确的路由条目;屏蔽和比较都是由 CAM 硬件完成的。
这一段对我来说是模棱两可的。是否使用 TCAM 进行掩码,以便结果是与路由表中的网络地址进行比较的网络地址?
因为在路由时根本不必计算网络地址将是 TCAM 的一个很棒的特性。
这一段对我来说是模棱两可的。是否使用 TCAM 进行掩码,以便结果是与路由表中的网络地址进行比较的网络地址?
不,不完全是。没有定期进行掩蔽操作。转发时没有软件查询CAM/TCAM。虽然通常的内存设计为通过“内存地址”(指针)进行查询,但 CAM/TCAM 是一种旨在通过内容查找的内存电路(硬件)。它在硬件中所做的就像散列表在软件中所做的一样:关联数组。
重点是:TCAM 可以使用网络前缀条目进行编程。例如,您可以通过将最后 8 位标记为“DON'T CARE”来将 /24 前缀插入到 TCAM 中。
对于普通的二进制 CAM,您不能插入 IP 前缀,只能插入完整的 IP 地址(或 MAC 地址)作为查找键。
“我想知道的是,TCAM 是否需要在其路由表中搜索匹配条目之前计算网络地址。”
不。TCAM 电路可以直接针对用 0 和 1 以及 X 构建的条目查找密钥(X = 不关心)。例如,您可以插入 entry=1.0.0.X 然后您可以查找 key=1.0.0.1。TCAM 电路将查找并返回匹配的 1.0.0.X 条目(加上其相关信息),而无需执行您似乎正在描绘的“正式”屏蔽。然而,TCAM 查找做了一种掩码来区分“关心位”和“不关心位”