• 莫名
    2022-02-15
    1. 挂在宿主机的 eth0 网卡,会导致宿主机网络受影响,最直接的影响是来自外部的 ssh 连接异常,之后再执行 ssh 也登不进宿主机。(原因是源 IP 不是 CLIENT_IP 时将目的 IP 直接修改为 CLIENT_IP,源 IP 无论如何均修改为 LOADBALANCER_IP,进来的数据包无法正常被接收与响应) 2. 目前的实现有些 hardcode,不利于扩展,负载均衡器通常运行配置多个 vip,每个 vip 对应若干真正的后端服务。觉得改进措施可以用 BPF map 类型存储,最好有个文本格式的配置文件,程序加载前解析这个配置文件,填充 BPF map。xdp 程序中根据 key(比如 vip 或者 UUID)查找真正的后端服务,如果能够找到则从中读取 IP、Mac 等信息。

    作者回复: 非常赞的答案👍 如果能把这些思路再都实现了就更好了😊

    
    9
  • L33K
    2022-02-27
    如果一个上层的大包被拆成一个多个包发过来,目前这种负载均衡方式是不是可能就有问题了?

    作者回复: 嗯 XDP是有一些限制的,具体可以参考这个PPT: https://lpc.events/event/11/contributions/939/attachments/771/1551/xdp-multi-buff.pdf

    
    3
  • Aiolos
    2023-02-02 来自英国
    原生nginx和sock_ops+sk_msg优化均是2000QPS,但是使用XDP优化后降到了400QPS,请问这是什么原因,如何修正

    作者回复: 很有可能是用了虚拟机导致的。案例中使用的是通用挂载模式,实际生产中使用原生模式或卸载模式才能获得比较好的加速效果。

    
    1
  • codejw
    2022-02-16
    老师,如果有多个xdp程序如何挂载呢,我有多个.o都挂载到xdp

    作者回复: 如果是不同的网卡,多次调用挂载和加载的函数或者用 ip link set 命令都可以。但如果想挂载多个XDP程序到相同的网卡,那就需要5.10新增的freplace类型,具体细节可以参考 https://lpc.events/event/7/contributions/671/attachments/561/992/xdp-multiprog.pdf

    
    1
  • yuan
    2022-03-01
    老师好,我用如下命令编译静态链接的可执行文件时报错了,代码用的是github中的代码,请问有啥思路吗? 命令:clang -Wall -O2 -g xdp-proxy-v2.o -static -lbpf -lelf -lz -o xdp-proxy-v2 结果:/usr/bin/ld: cannot find -lbpf /usr/bin/ld: cannot find -lelf /usr/bin/ld: cannot find -lz /usr/bin/ld: cannot find -lc clang-13: error: linker command failed with exit code 1 (use -v to see invocation) 另外用ip link挂载也不行 命令:sudo ip link set dev eth0 xdpgeneric object xdp-proxy-v2.bpf.o sec xdp 结果: BTF debug data section '.BTF' rejected: Invalid argument (22)! - Length: 1817 Verifier analysis: ... ... Prog section 'xdp' rejected: Permission denied (13)! - Type: 6 - Instructions: 151 (0 over limit) - License: GPL Verifier analysis: ... ... processed 25 insns (limit 1000000) max_states_per_insn 0 total_states 1 peak_states 1 mark_read 1 Error fetching program/map! 内核版本信息如下: 5.14.10-300.fc35.x86_64 Fedora release 35 (Thirty Five)
    展开

    作者回复: 缺少依赖库,参考根目录的Readme把依赖库安装一下

    共 2 条评论
    
  • 乌拉呆zyb
    2022-05-04
    倪老师,请问为什么将XDP eBPF程序挂载上去之后,优化效果反而大大地下降了?优化前 Requests/sec 是7500左右;XDP优化后 Requests/sec 是250 左右;代码都是github上的代码;两个版本的都试过了,都是反向优化,不知道为啥 ^~^
    共 1 条评论
    4
  • 为了维护世界和平
    2022-07-20
    倪老师你好,使用XDP 速度慢了,这大概什么原因呢 / # wrk -c100 "http://172.17.0.5" Running 10s test @ http://172.17.0.5 2 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 272.26ms 386.46ms 1.70s 86.32% Req/Sec 122.51 90.04 580.00 73.65% 2483 requests in 10.06s, 441.31KB read Socket errors: connect 0, read 0, write 0, timeout 53 Requests/sec: 246.73 Transfer/sec: 43.85KB
    
    2
  • aith
    2022-05-24
    XDP程序把数据包随机调度到某个Webserver,没有会话保持,会不会导致同一次请求的数据包,发送到不同的后端Webserver上面,从而不能正常相应?
    共 1 条评论
    2
  • 乌拉呆zyb
    2022-05-04
    倪老师,还想请教您一个问题: 加载XDP eBPF程序后,curl "http://172.17.0.5" 测试正常,有负载均衡能力;但 wrk -c 100 "http://172.17.0.5" 的测试结果中有Socker errors的连接超时的报错如下: / # wrk -c 100 "http://172.17.0.5" Running 10s test @ http://172.17.0.5 2 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 274.75ms 384.76ms 1.70s 86.88% Req/Sec 127.44 86.42 530.00 69.19% 2640 requests in 10.09s, 469.22KB read Socket errors: connect 0, read 0, write 0, timeout 56 Requests/sec: 261.64 Transfer/sec: 46.50KB / #
    共 2 条评论
    2
  • Bachue Zhou
    2023-04-13 来自上海
    这个程序对 libbpf 的版本要求很高啊,我这边用的是 Ubuntu 22.04 都不行,很多 symbol 找不到的。
    
    1