揭秘:一台路由器能不能跑满速都和什么有关系?

2023-08-21 13:48:36

这是一个读者的留言:

源自这张照片:

在弱电箱里面有一台白色的小路由,网友就开始问了是不是RB750GR3,怎么能让这台小路由跑到千兆网速。本来iN的回复就是“本身这就是一台5个端口的千兆路由器呀”,但仔细想想还是单独拿出来说说吧。

网友提出来的问题实际上超有意思,会有一点涉及到路由器本身的小秘密了。在网络设备标定参数的时候一般的来说厂商会有避重就轻的行为,不过这种行为也算是无可厚非,大家都会标记最高的参数。想当年联想在刚刚推出奔腾II的电脑台式机的时候,铺天盖地的宣传自己的电脑是国内首个使用奔腾II CPU的台式机,但如果你拿来配置单一看就会发现奔腾II怎么着也得配一个AGP接口的显卡吧?联想可到好,直接给怼进去一块PCI接口的S3T64V+。这种显卡是iN在486DX100上做最后一次升级的时候用到的,和奔腾II之间还隔着一个奔腾呢!当时是在《电脑报》上看到的这个广告,看广告的时候瞥了一眼显示器下面压着的康佰WS5000瞬间就觉得联想的奔腾II不香了,这个感觉过去了快1/4个世纪但记忆犹新。

记忆归记忆,但消费市场的心理学并没有变化,大家总是最关注一个产品的最明显的参数,而去忽略掉一个产品的短板部分。商家不提,你也不问……

在任何IT产品中都有数量说不清的参数,如果你奔着某一个具体参数去选择IT产品大概率就是踩坑。随着发展现在电脑并不算是一个重灾区,相反各种外设和网络设备这件事就有的所说了,目前最严重的是Wi-Fi 6,虽然号称WIFI的速度可以达到4800Mbps的速率

但是只提供一个最大2.5G也就是2500Mpbs的网络接口:

那么请问Wi-Fi 6上的4804Mbps的带宽到底是通过什么来满足的呢?仔细想这里面是不是有什么误解?

其实这里面的速度都是接口速度,来源于网络接口下行的PHY芯片的支持规格。

焊接在主板上的这枚BMC54991芯片仅仅能代表你的路由器有一个2.5Gbps的网络接入功能,而后面的数据处理功能能不能处理2.5Gbps所带来的庞大数据量并不是以这枚芯片所能左右的。

毕竟PHY界面仅仅是在OSI网络模型中的最底层也就是物理层。它的作用是为了网络传输的需要提供高频电信号环境。

但也正因为PHY层本身是可以标记出设备可以支持的网络接口带宽,也就是“线速”,就被很多商家用来标记“设备性能”,而忽略掉(或者模糊掉)了后面的OSI层级的意义。实际上真正决定网络速度的是在第二层(链路层)和第三层(网络层)。

第二层链路层如果不谈MAC地址管理的性能,我们最关心的就是这个层级的背板容量。

高性能的二层处理设备是用交换矩阵来生成和处理网络数据包的,低端一些的设备会用专门的网络交换芯片来生成和处理网络数据包,再低端一些的设备会用共享内存的方式由CPU处理网络数据包。

无论是从电路层面(交换矩阵)还是从电子层面(交换芯片)甚至数据处理层面(CPU)处理的结果都是殊途同归的,都是将标记了MAC地址的数据帧发送到对应的PHY层也就是你的各个网口,虽然处理方式不同,但是最后落到设备上的一个统一叫法就是“背板容量”了或者叫做“交换带宽”、“背板带宽”。

这是网络交换机设备的极其重要的一个参数,但是——大家在自己的家用路由器上看到过吗?反正iN是没见过哪个厂商的家用路由器上标记这个参数的。原因很简单,大多数家用路由器,无论是几百块到几千块的,都没有脸去标出来这个参数,如果非得标出来的话也会很难看。

说一个场景:一对夫妇旅游回来,丈夫忙着用笔记本将旅游时所拍的照片和视频上传到家里的NAS中,妻子闲来无事,用平板电脑来看网络上的热门电视剧。这时候忽然发现网络卡得要命根本无法看片子。

明明在家里的内网相互拷贝文件并没有占用外网带宽,为什么连网络视频看起来也不流畅了呢?原因就在于家用路由器使用了CPU来处理交换数据,而在大量的网络数据流面前CPU已经不堪重负。真正的交换机本身都会有足够的背板容量,例如iN这边影音区有一个小个的希力8808交换机:

前几天还有网友在问,其实就是100多块钱的小设备,但是是有背板带宽的。

有了这个带宽,8个千兆端口,每个端口上下行各占1Gbps,供需16Gbps,就可以保证每个设备全速度运行而毫不干扰。当然了,这是设备内的带宽,还有上行接口的带宽,这个回头有机会和大家细讲。

再往上就涉及到了第三层,也就是网络层。网络层实际上是真正路由器发挥自己功能的地方。咱们就终于扯回文章开头提到的RB750GR3跑得满跑不满带宽的问题上了。

本质上RB750GR3是一个软路由!在上面运行的Router OS系统看起来像是一个专门的路由器系统,但是它依旧是一个基于Linux开发的软件平台,仅仅是对路由器的功能做了一些优化,实际上和大多数软路由系统区别并不是很大。因此也不必要神话他家的任何产品。

尤其是像是RB750GR3这样的低端货,软路由有的通病它全有。这台小路由器里面是一颗联发科的MT7621A网络处理器(实际就是一个SOC)。

当年联发科发布这枚芯片的时候还在说这是一枚最快的网络路由器,本来嘛在2007年一个网络处理芯片给干到880MHz也实属惊人,不过商家怎么吹并不重要,我们需要看的是这个芯片的硬件指标。最重要的要看这三个部分:

这枚SOC本身支持5个1Gbps的端口和RGMII(介质无关接口),这份文档里面没告诉大家的是“背板容量”,这五个1Gbps接口实际上是和PCI-E直接驳接,如果按照PCI-E来看是20Gbps的带宽。但是这是软路由,20Gbps仅仅是理论值。

另一个参数是它有2Gbps的IP4/6路由带宽,这是它真正能够支持的出口带宽大小,如果用它跑千兆宽带接入实际上是绰绰有余的。

再有一个就是它的编码器,它拥有一个200Mbps的编码套件,也就是说每秒的数据加密能力最多为200Mbps。

那么这个路由器跑满千兆怎么跑呢?实际上在Mikrotik的官网上已经给出答案了:

如果仅仅以网桥和路由的模式来跑的话,在发送标准以太网包(1518 byte)的时候其性能接近于2Gbps(1972.2Mbps)。作为一个基本的家用千兆路由器这个东西是完全够用的。但如果数据包过小(例如测试案例中的64 byte的数据包)或者增加了路由器的额外过滤规则(例如测试案例中增加了25个过滤项目)其性能都会大幅度下降。例如在跑64字节小包再加上25个过滤的时候,这台路由器的性能就下降到了48.0Mbps已经不足百兆了。

同时,在使用Router路由器的时候大部分人实际上都看中了这种路由器的编码和加密功能,至于做什么大家也心知肚明了。

你会发现在经过隧道加密处理之后,网络速度大幅度下降。这就是用CPU的软路由的一个通病。例如在用AES-256-CBC + SHA256加密256个通道的时候这个路由器跑标准以太网络数据包的时候性能就下降到了359.5Mbps和之前不跑加密的时候性能有了5倍的差异。

这也是很多人觉得RB750GR3跑不满千兆带宽的主要原因了。别抱怨!这东西价格在那里摆着呢!几百块的小设备加密跑满千兆基本上就是痴人说梦了。

想跑得快,得加钱,买更强的设备。例如:

你可以看到测试指标已经差了一天一地,当然了,一个价格只有59.95美金,另一个价格则是3350美金。

那么问题来了,59.95美金的路由器怎么用起来?一般家用如果是普通人使用实际上还真的够了,大部分时间都可以满足你的要求,只是网络负担很大的时候你会发现这种路由器会出现我们之前提到夫妻场景的问题。

同时如果真的在意网络性能和成本的话,不妨在这个路由器下再接一个交换机,利用交换机隔离掉大部分二层网络的处理需求。还是之前弱电箱的例子,RB750GR3仅仅是做路由器的工作。

网络交换的功能实际上是交给了一台TP-link的POE交换机来完成,这种做法咱们就仅仅是用路由器上2Gbps的路由接口,也就是刚刚咱们提到的联发科资料里面的第二个重要参数。

再有就是要更合理均衡的分配加密流量和非加密流量了。例如iN自己用的路由器性能高那么一些,因此就更倾向的将所有数据走加密流量:

但如果再这种小路由器上用,那么事情就倒过来了,就把更多的流量走非加密通道。这样这种小路由器才能真正的发挥出应有的性能价值。

这里咱们说的是路由器、交换机本身的理想使用方法。但如果你家里是那种宽带光猫这种集成设备基本上是没有什么解的。宽带光猫本身也不是为了较大流量需求而设计的。CPU更弱、内存更小、数据处理能力也更差。但是如果你家里数吗设备很多,有多于三条网线需要接入光猫,想提升网络性能,除了换光猫改桥接之外还有一个方法是用一个真正的交换机(注意不是路由器)从光猫的Lan口接出来负责家里所有有线设备的网络接入。这个方法其实还是之前咱们讲过的,用交换机隔离二层处理需求,这样降低了光猫CPU的负载,网速自然也能提升很多。