V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
SunBK201
V2EX  ›  Linux

如何解决 eBPF sockmap 重定向转发中背压缺失带来的 OOM ?

  •  
  •   SunBK201 ·
    SunBK201 · 2 小时 7 分钟前 · 82 次点击

    我在尝试使用 eBPF 的 BPF_PROG_TYPE_SK_SKBBPF_MAP_TYPE_SOCKHASH 实现 socket 的铰接转发,目标是基于 bpf_sk_redirect_hash 将一个 socket 的 ingress 队列数据转发到另一个 socket 的 egress 队列,但是在实际的吞吐量测试时出现了系统 OOM 。

    具体的环境如下:

    1. Linux Kernel 6.8
    2. 2 个 socket 所处网络接口不同,且 2 个网络接口带宽不一致,转发源 socket 所处接口 (测试用的 loopback) 带宽高于目标 socket 所处带宽
    3. 吞吐测试是在 loopback 上使用 netperf 建立源 socket 连接,目标是转发到另一个网络接口的 socket egress 发送队列进行发送
    4. 具体代码可以见 https://github.com/SunBK201/UA3F/blob/v3.3.0/src/internal/bpf/sockmap/sockmap.c

    我的疑问:

    1. 是否是因为由于网络接口带宽不一致(源网络接口产生的流量远大于目标网络接口所能承载发送的网络带宽),再加上 bpf_sk_redirect_hash 没有背压(流量控制),导致数据堆积造成 OOM ?
    2. 如果是因为背压缺失的原因,该如果解决?实现流控 or 这种场景用 eBPF 做不合适?

    希望各位前辈大佬指教!

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   970 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:14 · PVG 04:14 · LAX 13:14 · JFK 16:14
    ♥ Do have faith in what you're doing.