不,路由器通常有一个“快速路径”,它使用专用路由硬件来处理常见/普通的数据包,以使 CPU 腾出时间来处理其他事情。曾几何时,这只是企业级设备,但现代消费者家庭网关路由器通常基于 SOC,其中包括用于 NAT 网关工作的专用硬件。但是,在任何设计中,您可能有某些配置或自定义规则导致某些类型的数据包由 CPU 处理,因为硬件 NAT 引擎不支持自定义规则。
如果您查看 Linux 路由器固件发行版的文档,了解它们对一种或另一种消费者路由器模型的支持程度,您会经常看到它们是否支持该特定产品中 SOC 中可用的硬件 NAT 加速器。
不,路由器通常有一个“快速路径”,它使用专用路由硬件来处理常见/普通的数据包,以使 CPU 腾出时间来处理其他事情。曾几何时,这只是企业级设备,但现代消费者家庭网关路由器通常基于 SOC,其中包括用于 NAT 网关工作的专用硬件。但是,在任何设计中,您可能有某些配置或自定义规则导致某些类型的数据包由 CPU 处理,因为硬件 NAT 引擎不支持自定义规则。
如果您查看 Linux 路由器固件发行版的文档,了解它们对一种或另一种消费者路由器模型的支持程度,您会经常看到它们是否支持该特定产品中 SOC 中可用的硬件 NAT 加速器。
纯粹的内部数据包(例如,在您的家庭桌面和家庭 NAS 之间,每个都连接到家庭路由器上的不同端口)很可能在硬件中进行交换。
如果这是一个现代商业级路由器,一些路由可以在硬件/固件中实现。你家里可能没有这些,但它们很可能在专用芯片(而不是 CPU)中有一些路由行为。
除了这些情况之外,CPU 可能还参与从网络硬件(例如无线电)获取数据包,评估它应该去哪里(路由它)并执行任何需要的额外工作(例如 NAT)。
但是,通常这不是火箭手术,大多数用于家庭路由器的操作系统都针对这项任务进行了很好的优化。通常,CPU 使用率施加的数据包速率限制超过了您的上行带宽。