引言
Linux Router其实是很老生常谈的东西了,通常被划分到“软路由”的范畴,软路由与“硬路由”对应,后者一般指通过专用ASIC完成网络数据包转发,软路由是采用系统自带网络栈或其他软件形式构建的数据平面转发,软路由性能高低也就可以一眼看出了,处理器性能和网络栈是关键因素。
正文
软路由
在作者观点内的软路由包括RouterOS设备(仅限制为用CPU直接处理数据包的ROS设备),Linux + FRR/Bird等路由控制软件,ikuai等一众国产路由系统、软件。
软路由的特性也在引言提及,即没有专用的硬件处理数据包,一切数据包处理均在CPU上实现。
简单形容硬路由
硬件路由器的核心部分自然是专用ASIC芯片,硬路由的指标主要取决于ASIC性能,常见ASIC提供商有Broadcom, Intel, Marvell, Realtek, Nvidia等。市场上常见的傻瓜交换机和可管理交换机的交换芯片均为上述厂家产品。
交换机
部分家用交换机交换芯片:
交换机品牌 | 交换机型号 | 交换芯片型号 | 交换芯片品牌 |
---|---|---|---|
Netgear | GS305P | RTL8367N | Realtek |
Xiaomi | SW-106T-A | RTL8372 | Realtek |
TP-Link | TL-SH1005 | RTL8221B | Realtek |
MokerLink | 2G08110GS | RTL8373-CG And RTL8224-CG | Realtek |
如果想要更细致地了解表格中的交换机细节可以通过搜索引擎轻而易举地查询到拆解图片以及ASIC的datasheet。
同理,我在这里列举一下部分商用级、数据中心级交换机的型号和对应芯片:
交换机品牌 | 交换机型号 | 交换芯片型号 | 交换芯片品牌 |
---|---|---|---|
Mikrotik | CRS326-24G-2S+RM | 98DX3236 | Marvell |
Mikrotik | CRS510-8XS-2XQ-IN | 98DX4310 | Marvell |
Juniper Networks | EX4550-32F | CX8248/CX8234 | Marvell |
Cisco | N3K-C3264Q | Tomahawk | Broadcom |
Huawei | CE6850-48S4Q-EI | Trident+ | Broadcom |
Arista | DCS-7148S | Intel FM4224 | Intel |
Nvidia | SN2100 | Spectrum | Nvidia |
Realtek的芯片几乎不会出现在这个级别的设备上
控制平面与数据平面
让我们看一张交换机的内部图片(图片来源)
通过图片不难看到交换机内部的PCB主要含有一块带有大散热片的芯片和黑色散热片的小芯片。
这两块芯片分别承担了不同的职责,如果我们仅关注本文讨论内容的话,“大芯片”负责转发数据,为专用ASIC,大散热片就是负责给ASIC散热的。“小芯片”负责控制数据转发,通常为X86计算机或ARM/PowerPC/MIPS计算机。
到这里交换机的构成就可以粗暴的视为一个正常的电脑连着一个交换芯片,计算机负责控制交换芯片如何转发数据,如静态路由,动态路由,NAT等,交换芯片负责按照计算机下发的控制指令完成数据处理。
到这里,就可以得出构建高性能Linux路由器的必要组成部分了,控制面与数据面。