路由器上的处理器是否必须处理每一个数据包?

路由器上的处理器是否必须处理每一个数据包?

或者路由器是否使用某种快捷方式让处理器可以执行其他任务,例如 Web 界面、dhcp 等?

答案1

不,路由器通常有一个“快速路径”,它使用专用的路由硬件来处理常见/普通的数据包,以保持 CPU 空闲来处理其他事情。以前,这只出现在企业级设备中,但现代消费者家庭网关路由器通常基于包含专用硬件的 SOC,用于 NAT 网关工作。但是,在任何设计中,您可能都有某些配置或自定义规则,导致某些类型的数据包由 CPU 处理,因为硬件 NAT 引擎不支持自定义规则。

如果您查看 Linux 路由器固件发行版的文档,以了解它们对某种型号的消费路由器的支持程度,您经常会看到提及它们是否支持该特定产品 SOC 中可用的硬件 NAT 加速器。

答案2

纯内部数据包(例如,您的家用台式机和家用 NAS 之间,每个数据包都连接到家用路由器上的不同端口)可以在硬件中进行切换。

如果这是现代商用级路由器,部分路由功能可以在硬件/固件中实现。您家里可能没有这样的路由器,但它们可能在专用硅片(而非 CPU)中实现部分路由功能。

除了这些情况之外,CPU 可能还参与从网络硬件(例如无线电)获取数据包、评估它应该去哪里(路由它)以及执行任何所需的额外工作(例如 NAT)。

但是,一般来说这并不是什么难事,大多数家用路由器使用的操作系统都针对此任务进行了很好的优化。通常,CPU 使用率施加的数据包速率限制超出了您的上行带宽。

相关内容