V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cwbsw
V2EX  ›  宽带症候群

路由器理论上能跑满多大接入带宽

  •  
  •   cwbsw · 2018-09-07 21:13:29 +08:00 · 11436 次点击
    这是一个创建于 2273 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家用路由器一般都是接在千兆交换机的一个端口上,这种设计理论上只能跑满双向共计 1Gbps 的带宽,如果是千兆对等网络就不能胜任了。

    另外,所谓的单臂路由无论是通过 VLAN 实现或者直接在光猫的 LAN 上拨号,与这种只有交换芯片的路由器设计,理论上能达到的最大带宽是相同的。

    以上理解是否正确?
    53 条回复    2018-09-08 22:05:43 +08:00
    zwy100e72
        1
    zwy100e72  
       2018-09-07 21:32:26 +08:00
    上限的话,就是你的物理接口连接速度
    比如网口是 1Gbps 全双工,不考虑 NAT 的话就能跑满双向各 1Gbps 速度
    单臂路由器如果也是通过一个 1Gbps 全双工的网口连接的,那么可以跑满双向加起来共计 1Gbps 速度
    不过常见的单臂路由器应该是通过内部总线直接连到内部交换芯片的,这个就要看内部总线的速度了
    237176253
        2
    237176253  
       2018-09-07 21:39:24 +08:00 via Android
    k2p 能跑上下行 1000m
    cwbsw
        3
    cwbsw  
    OP
       2018-09-07 22:01:55 +08:00
    @zwy100e72
    CPU 只接交换芯片的一个端口,就相当于只有一张网卡,就算 1Gbps 全双工,只能跑满外网的 1Gbps 下行,同时跑满 1Gbps 的上下行应该需要 2 张 1Gbps 全双工的网卡。
    rio
        4
    rio  
       2018-09-07 22:23:23 +08:00
    你对「全双工」是不是有什么误解😂
    cwbsw
        5
    cwbsw  
    OP
       2018-09-07 22:31:09 +08:00
    @rio
    全双工就是双向 1Gbps。但是路由器是一收一发,如果局域网内一台设备以 1Gbps 速率下载,那么路由器就需要在 WAN 口以 1Gbps 收包,同时在 LAN 口以 1Gbps 发包,合计就需要 2Gbps 带宽,如果要跑满双向 1Gbps 的宽带,路由器就需要两张千兆网卡,合计 4Gbps 的带宽。
    billlee
        6
    billlee  
       2018-09-07 23:07:57 +08:00
    背板带宽了解一下?
    LGA1150
        7
    LGA1150  
       2018-09-08 04:37:16 +08:00 via Android
    @zwy100e72 “内部总线”也只是 GMII/RGMII/SGMII,也是 1Gbps
    xenme
        8
    xenme  
       2018-09-08 06:47:20 +08:00 via iPhone
    单臂模式只是路由结构,变成了旁路并不是真的新的三层网段。

    如果是单接口,如你所说,转发 500Mbps 的 uplink 需要收 500mbps,再发 500mbps,等于一次占掉双向 500,全双工转发 500Mbps,路由带宽就跑满双向 1Gbps 了

    解决方案也很简单,类似双臂加一个网口,数据在路由内部交换就行了,还是单臂,只是多占用一个 IP 而已
    wwqgtxx
        9
    wwqgtxx  
       2018-09-08 08:53:21 +08:00 via iPhone
    @LGA1150 但是大部分路由器 soc 和交换机硬盘之间的连接接口直接走的是 pci-e 接口,并不只是 gmii 系列
    wwqgtxx
        10
    wwqgtxx  
       2018-09-08 09:09:05 +08:00
    比如这篇文章中有常见的千兆路由器 SOC BCM4708 的结构图
    https://www.anandtech.com/show/5925/broadcom-announces-bcm4708x-and-bcm5301x-socs-for-80211ac-routers
    明确了是 SOC 直接对外提供 5 口 GbE,而它和内部 CPU 的通讯完全是走内部总线
    然后它和无线模块的芯片是通过 pci-e 进行连接的
    The obvious high-end platform configuration for a Broadcom-based 802.11ac router thus becomes a BCM4708x with two BCM4360s (one transceiver for 2.4 GHz 802.11n, another for 5 GHz 802.11ac) connected over PCIe 1x.
    所以他们之间的通讯完全不受普通千兆网口的带宽限制
    cwbsw
        11
    cwbsw  
    OP
       2018-09-08 09:12:42 +08:00
    @billlee
    背板带宽是交换机端口速率的总和,但是只有一个端口连接到路由器。
    @xenme
    没太懂,数据在路由内部交换是指?
    @wwqgtxx
    问题是 CPU 只连接了交换机的一个端口,这种结构事实上等效于单网卡机器连接交换机通过划分 VLAN 作单臂路由这种形式。
    billlee
        12
    billlee  
       2018-09-08 09:28:21 +08:00
    @cwbsw #11 路由器的芯片是 SoC, 交换模块和 CPU 都在一块芯片上,几个以太网口是直接从片上引出的。一般情况被路由的数据包也不需要经过 CPU.
    wwqgtxx
        13
    wwqgtxx  
       2018-09-08 09:34:27 +08:00
    @cwbsw 你可以理解成 CPU 只连接了交换机的一个端口,但是 CPU 连接的是一个“超级端口”,这个端口的带宽并不是只有双向千兆,而是根据内部交换机芯片和内部 IO 总线之间的带宽决定的
    cwbsw
        14
    cwbsw  
    OP
       2018-09-08 09:41:31 +08:00
    @billlee
    绕过 CPU 快速转发是可能的。
    但是就算在同一块芯片,CPU 和 Switch 之间速率也只能是 1Gbps 全双工,因为数据交换的中心是 Switch,端口速率是由 Switch 的交换效率决定而不是连接 Switch 的总线速率。
    cwbsw
        15
    cwbsw  
    OP
       2018-09-08 09:46:12 +08:00
    @wwqgtxx
    难道把千兆 Switch 接到 100000G 的外部总线上,就能跑满 100000G ?用逻辑想想……
    wwqgtxx
        16
    wwqgtxx  
       2018-09-08 10:04:06 +08:00   ❤️ 1
    @cwbsw 你的理解逻辑是有问题的,千兆 switch 只是说它提供的每个网口之间的带宽是双向 1000mbps,但是并不是整个交换矩阵的带宽就只有 1000mbps,假设外部总线的带宽是 10gbps 那么 CPU 就可以同时同该 switch 的 5 个端口进行双向 1000mbps 的通讯。这个情况就类似于你有一个千兆交换机,上面连接了 4 个百兆设备,一个千兆设备,在这种情况下,你的百兆设备之间的通讯还是最大只有 100mbps 但是该千兆设备却可以同时以 100mbps 的速度和其他四个百兆设备通讯而不会遇到瓶颈
    xenme
        17
    xenme  
       2018-09-08 10:08:30 +08:00
    wwqgtxx
        18
    wwqgtxx  
       2018-09-08 10:09:51 +08:00
    任何 hub 也没说他的上级级联端口和下级端口的带宽必须一致,就好比主板上常用的 usb 3.x 芯片,他的上级接口是 pci-e 4x,下级端口是 usb3.x,按照你的逻辑难道这个芯片下面接了多个 usb3.x 设备只有一个设备能跑满带宽么,那样级联端口用 pci-e 4x 设计者的脑子进水了么,用个 1x 的端口不就够了
    hjc4869
        19
    hjc4869  
       2018-09-08 10:13:22 +08:00 via iPhone
    @LGA1150 可以用内部 SerDes,GbE 交换机跟 SoC 之间常见的带宽可以达到 2.5Gbps 或更高。
    cwbsw
        20
    cwbsw  
    OP
       2018-09-08 10:20:48 +08:00
    @wwqgtxx
    switch dev switch0 show

    pvid: 0
    link: port:6 link:up speed:1000baseT full-duplex

    port 6 就是 CPU 端口,你解释下这个 1000baseT 是什么意思吧。
    设计者脑子当然很精明,因为这本来就是家用路由器缩减成本的做法,难道还会给你弄一个端口速率 10Gbps 的 Switch。
    wwqgtxx
        21
    wwqgtxx  
       2018-09-08 10:25:58 +08:00
    @cwbsw 与其你和我硬抬这个杠还不如自己拿两台电脑测试一下,一台接路由器的 wan 一台接 lan 自己试试 nat 转发下的带宽能不能跑满不就知道了。这种显示的 speed:1000baseT 根本就没啥说服力,很多主板上提供的 USB3.0 接口在操作系统上照样显示 usb2.0 这个只是个汇报值罢了。而且所谓的“家用路由器”并没有详细的定义,你可以说免费的 K2 这种是家用路由器,我也可以说 ac68u 这种在 V2 上很常见的路由器是家用路由器。
    cwbsw
        22
    cwbsw  
    OP
       2018-09-08 10:43:57 +08:00
    @wwqgtxx
    没错啊,照你的例子,USB1.X 的鼠标键盘照样也是接在 USB3.X 的高速总线上,所以只能跑 12Mbps,同理 1Gbps Switch 接到 10Gbps 总线上当然也只能跑 1Gbps,好好想想吧。
    iwtbauh
        23
    iwtbauh  
       2018-09-08 10:55:46 +08:00 via Android
    @cwbsw #3 #5

    4 楼说的没错,你对全双工真的有误解。https://en.m.wikipedia.org/wiki/Duplex_(telecommunications)

    我还从来没见过半双工的网卡。

    “网卡”这个概念有些泛,应该叫“网络接口”。
    wwqgtxx
        24
    wwqgtxx  
       2018-09-08 10:56:41 +08:00
    @cwbsw 我们两个说的不在一个频道上
    “ USB1.X 的鼠标键盘照样也是接在 USB3.X 的高速总线上,所以只能跑 12Mbps ”这个没毛病呀,但是你的电脑可以透过一个 usb3.x hub 同时和多个 usb1.x 设备满速通讯这个不冲突呀
    我又没说 CPU 和交换机芯片之间的带宽大于 1000mbps 了,CPU 和 LAN1 这个口的速度就能突破 1000mbps 了,但是交换机内部是用交换矩阵实现的,和 CPU 级联的这个端口可以透过这个矩阵和每个端口直接直连而并不是 CPU 和交换机芯片之间还是通过一个 1000mbps 的网口连接的。
    按照你的想法实际上是实现了一个六口对等交换机,CPU 和隐藏的第六口相连了,但是实际上设计的时候级联端口的存在本来和其他五口就不是对等的,换句话说让这个口实现 10gbps 的速率并不需要让整个交换机工作在 10gbps,交换机本身还是工作在 1000mbps 下,只是这个级联口和下级的五口之间都有直接连接,这个第六口在 SOC 的设计中根本就不是以网口形式存在的,所以这个口就可以同时和下级的五个口进行 1000mbps 的双向通讯,达到最大 5000mbps 的通讯速率,当然依然是不可能达到我们前面假设的 10gbps,而且大部分的这个内部端口的设计带宽还是只有 2.5gbps,因为这样就够用了,lan 口内部的通讯并不需要经过 CPU,2.5gbps 的双向带宽足以处理 lan 和 wan 口之间的通讯了
    LGA1150
        25
    LGA1150  
       2018-09-08 10:57:10 +08:00 via Android
    @wwqgtxx
    我这里正好有一台 4708 SoC 的路由器,摘一部分内核日志:
    eth0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 7.14.89.21 (r524987)

    eth0 正是 SoC 内部以太网卡连接交换机芯片的接口,通过 VLAN 划分为 WAN LAN
    PCIe 是接无线芯片用的
    silencefent
        26
    silencefent  
       2018-09-08 10:57:12 +08:00
    家用的有电信送的十几块钱成本的路由,也有自己买几千块钱的路由
    你要我说是不是所有的家用路由都支持千兆对等,那我说肯定不是
    wwqgtxx
        27
    wwqgtxx  
       2018-09-08 11:02:18 +08:00
    @LGA1150 eth0 的意思是网卡 0,请不要混淆网卡和 1000MBPS PHY 之间的概念,这种设备本来就只是一种 SOC 内部的虚拟设备,它的存在是为了把 SOC 的网络接口暴露给 linux 内核,好比很多虚拟机提供的虚拟网卡,系统显示连接速度是 100mbps 实际上跑到 1.5gbps 都没问题
    wwqgtxx
        28
    wwqgtxx  
       2018-09-08 11:06:33 +08:00
    这种纯硬件设计的东西不要过分解读,更有意思的例子就是 intel 的核显,理论上说它应该就是一个普通的 pci-e 4x 的显卡,但是实际上它却能直接访问内存控制器,通过内部环形总线和 CPU 直接交互。如果你打开你的台式机的设备树看看,几乎所有的设备都接在 PCI 设备总线上,包括 PCI-E 控制器、内存控制器、核显甚至是南桥,但事实上是这样的么,这只是为了兼容现有的系统设备树而做的一种“伪装”而已
    @LGA1150
    lcy630409
        29
    lcy630409  
       2018-09-08 11:48:10 +08:00
    路由器的最大宽带 ,看情况,如果没有 nat,就是网卡的速度,如果有 nat 就需要看 cpu 的处理速度了,一般是网卡的 9 成左右;
    看了上面,貌似 lz 对全双工有误解,全双工只是说明在数据传送的过程中,可以同时上下行的传送,和速率没啥大关系,和延迟有大关系,打个比方,全双工就是双向两车道,两个方向同时走,,半双工就是单车道,有两个交警在道路两头指挥,每次这条路上只能走一个方向;
    单臂路由 说白了 就是外网内网走一条线,全速的话,网线内是走全速,但是外网传输到你电脑的速度只能是一半了,就像把一条路在不加宽的情况下 强行改成双向车道;
    swsh007
        30
    swsh007  
       2018-09-08 11:59:01 +08:00 via Android
    理论上是长江
    实际跑的是家用自来水管
    原因是不管怎么跑都和 cpu 内存相关
    通讯设备的核心其实是将原来的交换矩阵做的小做到芯片里面去,剩下的就是 buffer 和在协议上打 tag
    针对于 mips 和 arm 的民用产品,一般厂商的理想状态差不多是打个 85 折
    cwbsw
        31
    cwbsw  
    OP
       2018-09-08 12:42:28 +08:00
    @lcy630409 这个贴吐槽的是,现在市面上大多数所谓千兆路由器事实上本来就是只有一张网卡的单臂路由。
    LGA1150
        32
    LGA1150  
       2018-09-08 12:49:40 +08:00 via Android
    @wwqgtxx 实际上 BCM4708 CPU 本身的性能也不够,不支持硬件转发。梅林固件下行跑到 900M 时 CPU 已占满,Web 管理页已经打不开
    如果是 BCM4709 这种 SoC 集成硬件转发加速的,启用加速后不会走 eth0,据说可以达到双向 900M
    cwbsw
        33
    cwbsw  
    OP
       2018-09-08 12:50:50 +08:00
    @wwqgtxx
    这不就是我的意思,速率是由 Switch 决定的,而不是等于外部总线的速率。
    cwbsw
        34
    cwbsw  
    OP
       2018-09-08 12:53:20 +08:00
    @wwqgtxx
    刚才简单测了下手头的 R6300v2 和 k2p,LAN-LAN 都达不到双向 1Gbps ……
    LGA1150
        35
    LGA1150  
       2018-09-08 13:09:49 +08:00 via Android
    @cwbsw LAN-LAN 纯交换的速度不可能达不到双向 1G 吧?你怎么测的?
    cwbsw
        36
    cwbsw  
    OP
       2018-09-08 13:16:21 +08:00
    @LGA1150
    就是两边跑 iperf3 呗。
    不过也可能是我这台笔记本性能不够,或者 Realtek 网卡太弱的缘故,单向发包只能有 740Mbps,台式机单向发包有 960Mbps,两边同时双向发包的话收发速率都不到 700Mbps。
    LGA1150
        37
    LGA1150  
       2018-09-08 13:17:22 +08:00 via Android
    @cwbsw 怀疑因 ACK 不到而出现了拥塞控制,用 UDP 模式并手动执行带宽试一下
    LGA1150
        38
    LGA1150  
       2018-09-08 13:19:48 +08:00 via Android
    #37 *手动设定带宽
    cwbsw
        39
    cwbsw  
    OP
       2018-09-08 13:48:57 +08:00
    @LGA1150
    -u -b 800M 直接卡死了……
    wwqgtxx
        40
    wwqgtxx  
       2018-09-08 13:59:15 +08:00
    @cwbsw 如果 LAN-LAN 都打不到可能就是别的问题了,电脑 CPU、网卡的性能问题,网线的质量不过关
    @LGA1150 BCM4708A 的话我记得是支持硬件 NAT 加速的吧,可能和硬件版本,你的梅林固件编译的有关
    LGA1150
        41
    LGA1150  
       2018-09-08 14:03:06 +08:00 via Android
    @wwqgtxx 4709 才支持,4708 只有软件 CTF 加速,要是 CTF 也不开的话性能更差
    cwbsw
        42
    cwbsw  
    OP
       2018-09-08 14:10:35 +08:00
    @wwqgtxx
    话说你有相关芯片的设计规格资料吗,或者有确定来源?我是真不信 BCM53125、MT7530 这类不到几刀的民用交换芯片会设计大于 1Gbps 的级联端口,这简直毫无意义……
    zhangjn
        43
    zhangjn  
       2018-09-08 14:20:28 +08:00 via Android
    只有 broadcom 是一个网卡然后 vlan 划分的吧,其他的多是 eth0 eth1 两个的吧
    sola97
        44
    sola97  
       2018-09-08 15:36:53 +08:00 via Android
    我买的网件 16 口交换机,32Gbps 背板带宽,设计上就是每个千兆口 2Gbps 带宽
    lxzcook
        45
    lxzcook  
       2018-09-08 18:34:39 +08:00 via Android
    看路由参数吧,貌似跟端口工作模式,路由器工作模式有关,路由器跟交换机以及网卡都支持千兆全双工,有做方法可以测试,找两部大内存的电脑,内存虚拟出硬盘 ,然后一台接路由器 WAN 口,一台接交换机,包装线材质量达标,然后虚拟内存共享双方文件夹,两边同事复制对方文件 监控网卡速率。测完后,再用双交线直连双方网卡,重复复制文件,看下多做个误差比对就知道了。 理论来说,全双工接收跟发送是分开的,但是别忘了,发送千兆数据给接收端,接收端会校验数据返送发送端,也要占用 2m 以上的接收带宽。
    cwbsw
        46
    cwbsw  
    OP
       2018-09-08 19:19:48 +08:00
    @zhangjn
    市面上的家用千兆路由,基本上都是单交换芯片。
    xenme
        47
    xenme  
       2018-09-08 19:41:03 +08:00
    @cwbsw 看起来楼主到现在还是对单双臂以及线速以及内部背板交换带宽一些概念有些互相混淆。

    就你的场景,千兆路由就一个口连接到交换机,其他设备全有线接交换机的话,那你路由就是单臂模式。
    这个场景,交换机千兆限速转发,流量通过路由撑死 500Mbps,这是因为单网口的原因。

    路由如果双网口,不管设备接路由或者接交换机,这种有可能跑满 1Gbps,上限由你路由器的两个口之间的转发速度有关,这个时候才涉及到背板(两个接口之间)以及 NAT 等性能问题。

    而且,目前主流路由器,基本都有 LAN 和 WAN 的区分,LAN 之间虽然达不到线速,但是也缩水不了多少,至少 LAN 口之间的带宽是足够每个口 LAN 之间跑满的,WAN 由于涉及到 NAT 等需要 CPU 或者有独立芯片处理,千兆路由最多也就给你 1Gbps,大部分有缩水,而且由于包大小的原因,实际下载等到 110-120MBps 就可以了。
    cwbsw
        48
    cwbsw  
    OP
       2018-09-08 20:28:15 +08:00
    @xenme
    主流家用路由器的 LAN 和 WAN 都是用 VLAN 分割的,共享同一物理链路,所以本质上就是个单网口的单臂路由。上面有人说这一链路速率超过千兆线速,在此先存疑。
    xenme
        49
    xenme  
       2018-09-08 21:01:19 +08:00
    @cwbsw 就以 R6300v2 为例,用的 BCM4708A0
    https://www.broadcom.com/products/wireless/wireless-lan-infrastructure/bcm4707-4708-4709
    从 SPEC 来看,支持 8 端口线速转发,也就是说 SoC 本身交换带宽 8Gbps.

    5PHY VLAN 分隔开,4 个 LAN 之间基本都是交换工作,这里 4Gbps 完全不是问题,但是和 WAN 间,跨 VLAN 通信,就是 4 个口挤独木桥了,上限受 VLAN 间通信带宽 1Gbps 限制了,因为 PHY 本身 1000Mbps 限制。
    而且看到还支持硬件加速,理论 WAN 跑 1Gbps 应该不是问题,但实际各种原因,CPU 负载等缩水很正常。
    TJT
        50
    TJT  
       2018-09-08 21:03:44 +08:00
    这就是几千块的企业用路由器和几百块的家用路由器的区别,都是声称千兆,只不过一个是硬路由一个是软路由。以前做学校的项目,倒腾过
    TJT
        51
    TJT  
       2018-09-08 21:06:24 +08:00
    加起来几十万的网络硬件,基本上企业用的交换机 24 口都可以同时跑满百兆,千兆没测试过,没这么多千兆的终端。家里用的梅林就是所有端口加起来不超过千兆。
    terrytw
        52
    terrytw  
       2018-09-08 21:34:03 +08:00
    @cwbsw 我的笔记本上也是 reltek 的自适应千兆网卡
    怎么测都稳定 940mbps 的
    你的硬件肯定有问题了
    LGA1150
        53
    LGA1150  
       2018-09-08 22:05:43 +08:00 via Android
    @xenme #49 支持硬件加速的是 4709 (如 R7000,还不支持 PPPoE 的硬件加速),R6300v2 的 4708 不支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3849 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 10:27 · PVG 18:27 · LAX 02:27 · JFK 05:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.