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

路由器的硬件转发是否支持 pppoe 数据包的拆包和组包?

  •  
  •   rrggqq · 18 天前 · 1794 次点击

    高负载下数据包的拆分和封装都是很消耗资源的,如果没有硬件加速纯靠 cpu 的话可能性能表现还是不如软路由。我看很少有人讨论这个问题,是因为默认都是支持的吗?

    最近在考虑把 x86 软路由换成 b610-4e 直接拨号,单纯为了杜绝浪费。请大家解惑,谢谢!

    另外光猫的芯片是 SD5182H

    13 条回复    2025-03-03 11:43:23 +08:00
    ShioWSX
        1
    ShioWSX  
       18 天前
    高端路由器是支持 ppoe 硬件加速的,我的理解是支持 nat 加速就支持 ppoe ,硬解 ppoe 是 nat 硬件加速的前置条件
    datocp
        2
    datocp  
       18 天前
    不懂,只知道 pppoe 属于 tun 接口需要消耗 cpu ,实际测试性能还是远低于 br-wan 。
    像 mtk7620 之前的版本连 100mbps 都跑不起来,但是当它更新到 openwrt 21.02.5 直接跑满 100mbps 还不知道上限在哪。而该设备在 br-wan 忘了是 400+mbps 还是 600+mbps 。
    FabricPath
        3
    FabricPath  
       18 天前
    x86 软路由换成 b610-4e 直接拨号,单纯为了杜绝浪费

    多虑了,pppoe 没有加密且头部固定,encap 和 decap 你就简单理解为 memcpy 了二三十个字节。
    “硬件加速”可以简单理解为快慢路径,慢路径是 CPU ,快速路径是硬件,以一个最简单的,从你电脑 ping 1.1.1.1 来说,硬件上记录了两条表项,分别是正向 nat 和反向 nat ,
    正向: 从 接口 A 进来的 源 IP 是 192.168.1.100 目的 IP 是 1.1.1.1 协议是 ICMP 的报文 NAT 成 源 IP100.64.0.11 (你 pppoe 接口的 IP )目的 IP1.1.1.1 从接口 B (你的 wan 接口)出去
    反向就是上面的表项反着下一条,来把 wan 收到的报文 nat 成你的 IP

    想象一下这个过程:
    1. 硬件表项需要 CPU 参与,流程简单描述是 硬件表项 miss ,upcall 到 cpu ,cpu 根据 iptables 的配置处理完成之后,下发到内核 conntrack ,再下发到硬件
    2. 家用路由器硬件表项是有数量限制的,通常 16K 到 64K ,意思是超过这么大的连接数之后,就会超时老化置换掉一部分连接

    硬件加速比软路由有优势的场景:
    1. 连接数小且单个连接存活时间长且流量大

    以上所有处理过程都是 ns 或者 us 级别,人肉不可感知,所以,直接用 x86 软路由,灵活性和可扩展性都吊打家用和中低端企业级路由器
    kk2syc
        4
    kk2syc  
       18 天前
    力大砖飞,软路由没问题就别折腾,除非你是游戏直播玩家,长期需要小包转发
    bibiisme
        5
    bibiisme  
       18 天前
    mtk 支持,跑 pppoe 完全不过 cpu
    datou
        6
    datou  
       18 天前
    几十块的 mt7981 都支持 pppoe offload
    nt0p
        7
    nt0p  
       17 天前
    如果一个处理逻辑可以标准化,那么大部分情况下就可以有造一个专有芯片来处理,比如 GPU 、TLS 加速芯片、交换机的交换芯片。mtk 的 hnat 对于这类情况直接 offload 到专有芯片处理,基本是处理器零占用。
    YGBlvcAK
        8
    YGBlvcAK  
       17 天前 via Android
    提个场景问题:换 b610-4e 后王者的延迟会减少 1-5ms 吗?
    如果完全没有换它的意义何在?
    datocp
        9
    datocp  
       17 天前 via Android
    经验中延迟不该是 2 个网络设备的距离嘛。
    而在 qos 中反应的是当前带宽的饱和程度,就如在同一根带宽划出 4 根水管,可以让高优先级的游戏做到小于 19ms ,同时让最低优先级的 p2p 以接近 100%分配的带宽通过延迟接近 600ms 。
    还有无线和有线表现不一。

    1-5ms 总要找一个对比的东西,1-5ms 这是用什么测出来,手里没这么精度的测试软件。
    对于游戏至少电信对英雄联盟做了 qos ,反而本地 qos 配置不当导致延迟更高,另外 openwrt 下一直用的 sfq ,sqm 的那些技术延迟很好看,画面的实时性非常差,有一种飘移感。游戏想玩得好,一手机独占 ap 不会受其它终端信号强度引起 ap 呑吐变化带来延迟变化。
    julyclyde
        10
    julyclyde  
       16 天前
    @ShioWSX 你为啥会有这种理解呢
    PPPoE (注意是三个 P )和 NAT 有啥关系?都不是同一层的
    wy315700
        11
    wy315700  
       16 天前
    x86 软路由最大的问题是 linux 内核有 1mpps 的上限

    只要在这个范围内,x86 软路由吊打一切硬路由,但是超过这个范围,最好用硬路由。

    除非你用 DPDK 或者不用 linux 系统

    或者启用网卡的硬件卸载,英伟达的 CX5 网卡开始就有硬件 NAT ,但是这本身就是硬路由的范畴了

    X86 软路由下限很高,天花板很低。硬路由,下限可以很低,上限可以很高。
    skylancer
        12
    skylancer  
       13 天前 via iPhone
    @ShioWSX PPPoE 加速和 NAT 加速是两个概念,根本不是一回事

    @FabricPath 早在多年前就已经有人在 reddit 这类网站上问有没有 modem 支持 half-bridge 了,你猜是为什么
    FabricPath
        13
    FabricPath  
       12 天前
    @skylancer 不用猜为啥,我自己用 xdp 撸一个 pppoe 报文转发,就几个 memcpy ,没发现难在什么地方。
    你指的 nat 加速是指什么?你理解的 nat 加速是指,conntrack 不用 CPU 下发?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:02 · PVG 18:02 · LAX 03:02 · JFK 06:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.