由于您在问题中使用了 Cisco 术语,因此我假设您只是在谈论 Cisco 设备。此外,我假设您只对 L2+L3 设备(如 Cisco Catalyst 系列交换机)感兴趣,而不对纯 L3 设备(如 ISR 和 ASR 路由器)感兴趣。
正如 Zac67 所指出的,有些型号的 Cisco 交换机仅具有纯第 2 层功能和零第 3 层功能。但是,Catalyst 系列中的所有交换机都具有某些第 3 层功能,尽管该软件可能会根据许可证等故意禁用某些第 3 层功能,我将回答这些 L2+L3 设备。
与其区分基于“这是第 2 层交换机包含的内容”和“这是第 3 层交换机包含的内容”的行为,更有用的讨论将基于第 2 层交换(桥接)如何完成以及第 3 层如何完成实现交换(路由)。我将使用“转发”一词来表示桥接和路由。
在高层次上,有两种方法:软件转发和硬件转发。顾名思义,在硬件转发中,ASIC 转发数据包。在软件转发中,数据包到达 CPU,在那里软件代码将检查数据包的各个字段并确定必须将数据包发送到哪些接口。硬件转发要快得多,但软件转发更灵活,因为它只是基于一些程序员编写的代码。
需要注意的是,硬件和软件转发是共存的。在理想的情况下,所有的数据包都会在硬件中转发,但也有一些情况下,数据包不能在硬件中转发,而必须在软件中转发。这方面的例子很多。例如,没有支持 Appletalk 路由的 Cisco ASIC,但仍有支持 Appletalk 的 IOS 版本。如果交换机收到 Appletalk 数据包,并且 Appletalk 已配置,则该数据包将发送到软件,Appletalk 路由代码会将数据包路由到正确的接口。另一个示例是具有一个或多个报头选项字段的 IPv4 数据包。另一个例子是当路由太多以至于硬件表(即ASIC TCAM)无法容纳更多路由时。
Cisco IOS 使用多种技术在软件中对数据包进行 L3 路由:(1) 进程交换 (2) 快速交换和 (3) CEF 交换。这些都是不同的软件技术,在每秒可以路由的最大数据包数量方面具有不同的性能。快速切换 #2 有点过时了。CEF 交换使用称为 FIB 的软件数据结构来确定数据包必须发送到的输出接口。
软件中的 L2 桥接没有特定的命名技术。它只是被称为“软件中的 L2 桥接”。
现在来到硬件转发。ASIC 由供应商根据细分市场的要求进行设计,其中一项要求是性能,另一项要求是成本。因此,进入 ASIC 的组件基本上是可以放入同时满足性能标准的最便宜的组件。我想说的是,没有硬性规定说 L2 桥接必须始终使用 CAM。是的,对于 L3 路由,因为要求匹配可变长度的 CIDR 掩码,所以 TCAM 是当今可用技术中最有效的组件。但是,对于 L2 MAC 地址查找(这是一个完整的 48 位查找),
Cisco 交换机中的第 3 层路由查找 TCAM 是 FIB 的硬件表示。换句话说,在上述软件 L3 路由技术#3 中使用的相同 FIB 数据结构在硬件 TCAM 中编程,以实现 IPv4 和 IPv6 数据包的硬件路由。
请注意,出于 L3 路由之外的其他原因,在 ASIC 中也使用了 TCAM。一个例子是实施安全 ACL,并识别数据包以进行 QoS 处理。Cisco 4500 和 3850 交换机具有用于 L3 路由以及安全/QoS 的 TCAM。
关于“商业硅”的最后说明。近年来,主要设备供应商(Cisco、Juniper、Arista...)中有一个流派,认为可以放入ASIC的“秘方”只有这么多,即没有太大的竞争优势设计自己的定制 ASIC 来进行 L2/L3 转发。现在的竞争是软件创新,出于这个原因,思考过程是“为什么不从博通这样的供应商那里采购 ASIC,并将创新努力集中在软件上?” 话虽如此,至少思科在几十年来投资了数十亿美元来构建内部 ASIC,并且不愿意将其全部扔掉。