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

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

  •  
  •   rrggqq · 7 天前 · 1518 次点击

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

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

    另外光猫的芯片是 SD5182H

    13 条回复    2025-03-03 11:43:23 +08:00
    ShioWSX
        1
    ShioWSX  
       7 天前
    高端路由器是支持 ppoe 硬件加速的,我的理解是支持 nat 加速就支持 ppoe ,硬解 ppoe 是 nat 硬件加速的前置条件
    datocp
        2
    datocp  
       7 天前
    不懂,只知道 pppoe 属于 tun 接口需要消耗 cpu ,实际测试性能还是远低于 br-wan 。
    像 mtk7620 之前的版本连 100mbps 都跑不起来,但是当它更新到 openwrt 21.02.5 直接跑满 100mbps 还不知道上限在哪。而该设备在 br-wan 忘了是 400+mbps 还是 600+mbps 。
    FabricPath
        3
    FabricPath  
       7 天前
    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  
       7 天前
    力大砖飞,软路由没问题就别折腾,除非你是游戏直播玩家,长期需要小包转发
    bibiisme
        5
    bibiisme  
       6 天前
    mtk 支持,跑 pppoe 完全不过 cpu
    datou
        6
    datou  
       6 天前
    几十块的 mt7981 都支持 pppoe offload
    nt0p
        7
    nt0p  
       6 天前
    如果一个处理逻辑可以标准化,那么大部分情况下就可以有造一个专有芯片来处理,比如 GPU 、TLS 加速芯片、交换机的交换芯片。mtk 的 hnat 对于这类情况直接 offload 到专有芯片处理,基本是处理器零占用。
    YGBlvcAK
        8
    YGBlvcAK  
       6 天前 via Android
    提个场景问题:换 b610-4e 后王者的延迟会减少 1-5ms 吗?
    如果完全没有换它的意义何在?
    datocp
        9
    datocp  
       6 天前 via Android
    经验中延迟不该是 2 个网络设备的距离嘛。
    而在 qos 中反应的是当前带宽的饱和程度,就如在同一根带宽划出 4 根水管,可以让高优先级的游戏做到小于 19ms ,同时让最低优先级的 p2p 以接近 100%分配的带宽通过延迟接近 600ms 。
    还有无线和有线表现不一。

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

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

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

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

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

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