Skip to content

feat: eBPF Add the relevant XDP CPU balancer related code#11268

Merged
yinjiping merged 17 commits intomainfrom
ref_xdp_lb
Mar 19, 2026
Merged

feat: eBPF Add the relevant XDP CPU balancer related code#11268
yinjiping merged 17 commits intomainfrom
ref_xdp_lb

Conversation

@yinjiping
Copy link
Contributor

This PR is for:

  • Agent

Affected branches

  • main

@yinjiping yinjiping marked this pull request as draft January 19, 2026 12:24
@yinjiping yinjiping force-pushed the ref_xdp_lb branch 2 times, most recently from 99c703e to df36e86 Compare January 20, 2026 03:58
@yinjiping yinjiping force-pushed the ref_xdp_lb branch 4 times, most recently from 2236e93 to 9bc7cf8 Compare February 12, 2026 09:16
@yinjiping yinjiping force-pushed the ref_xdp_lb branch 2 times, most recently from edb947e to 34776a7 Compare February 26, 2026 02:34
@yinjiping yinjiping marked this pull request as ready for review February 27, 2026 08:39
@rvql
Copy link
Contributor

rvql commented Mar 5, 2026

@claude review this code. 用中文回复

@claude
Copy link
Contributor

claude bot commented Mar 5, 2026

代码审查进行中

  • 收集上下文,阅读变更文件
  • 分析代码质量和潜在问题
  • 提交审查反馈

@yinjiping yinjiping force-pushed the ref_xdp_lb branch 2 times, most recently from ca87176 to f1de42b Compare March 9, 2026 09:11
@yinjiping yinjiping force-pushed the ref_xdp_lb branch 2 times, most recently from a0de882 to 3d7243c Compare March 9, 2026 09:29
@kylewanginchina
Copy link
Contributor

@claude review一下当前pr的代码修改

@claude
Copy link
Contributor

claude bot commented Mar 12, 2026

Claude encountered an error —— View job


代码审查进行中

  • 收集上下文并阅读 CLAUDE.md/相关变更文件
  • 分析主要改动并定位潜在问题
  • 输出审查意见

@yinjiping yinjiping marked this pull request as draft March 18, 2026 10:27
@yinjiping yinjiping marked this pull request as ready for review March 18, 2026 10:32
@rvql
Copy link
Contributor

rvql commented Mar 18, 2026

LGTM

@kylewanginchina
Copy link
Contributor

@claude review一下当前pr的代码修改

@claude
Copy link
Contributor

claude bot commented Mar 19, 2026

Claude finished @kylewanginchina's task in 17m 49s —— View job


a. 事件类型:PR 上的 issue comment,触发词为 `@claude`,要求 review 当前 PR 修改。 b. 任务类型:代码审查,不做实现。 c. 已阅读内容:`agent/src/config/config.rs`、`agent/src/config/handler.rs`、`agent/src/ebpf/mod.rs`、`agent/src/ebpf_dispatcher.rs`、`server/agent_config/template.yaml`、`server/agent_config/README.md`、`server/agent_config/README-CH.md`,并检索了 eBPF/XDP 相关 C/Rust 代码。 d. 主要发现:1) Rust FFI 入参从外部配置直接 `CString::new(...).unwrap()`,存在 panic 风险;2) dispatcher 会无条件下发 `nic_optimize` 项,结合模板默认的空 `interface` 会把无效值传到 C 层;3) 文档样例里有 `eppf` 拼写错误,容易误导用户。 e. 结论:配置链路基本打通,`NicOptimizeConfig::apply()` 的提取也回应了前面的 review 建议,但以上问题建议在合并前处理。 f. 本次为静态代码阅读,未实际运行 eBPF/XDP 场景测试。

代码审查结果

  • 收集上下文并阅读仓库说明/PR 变更
  • 分析当前 PR 的主要改动与潜在问题
  • 整理并发布代码审查意见

我重点看了 NIC/XDP 这条配置链路:template.yaml/README -> Rust config -> handler hot_update -> dispatcher -> FFI。整体方向没问题,而且前面 reviewer 提到的 apply() 抽取现在已经落到了 agent/src/config/config.rs:1277-1310,这点是加分项。

不过这次 review 里我看到 2 个建议在合并前处理的问题,外加 1 个文档小问题:

  1. CString::new(...).unwrap() 会让非法配置直接触发 panic

    • 位置:agent/src/config/config.rs:1281agent/src/config/config.rs:1282agent/src/config/config.rs:1283
    • interfaceirq_cpu_listxdp_cpu_redirect_list 都来自外部配置输入;如果里面带有 \0,这里会直接 panic。NIC 优化又是 hot_update 配置项,这意味着 controller 下发异常值时会把 agent 直接打挂。
    • 建议:在配置校验阶段显式拒绝包含 NUL 的字符串,或者让 apply() 返回 Result/记录 warning,而不是 unwrap()
    • Fix this →
  2. 当前会无条件下发 nic_optimize,默认空 interface 也会传进 C 层

    • 位置:agent/src/ebpf_dispatcher.rs:1053-1062agent/src/ebpf_dispatcher.rs:1542-1552server/agent_config/template.yaml:4199-4206
    • 现在的逻辑是先执行 set_nic_optimization(config.ebpf.network.nic_opt_enabled),然后无论开关是否开启,都遍历 nic_optimize 执行 nic.apply()
    • 但模板默认值里 nic_optimize 又放了一个占位项:interface: ""。这样启动/热更新时就会把空网卡名传给 nic_optimize_config()。最轻是产生无意义 warning,重一点则取决于 C 侧怎么处理这个非法参数。
    • 建议:至少在 Rust 侧跳过 interface.is_empty() 的项;更稳妥的是把模板默认值改成空列表,并在配置校验里禁止空 interface
    • Fix this →
  3. 文档样例里把 ebpf 写成了 eppf

    • 位置:server/agent_config/template.yaml:3980server/agent_config/template.yaml:4018server/agent_config/README.md:5420server/agent_config/README-CH.md:5276
    • 这个会直接误导用户复制配置。
    • Fix this →

如果只保留必须修的项,我建议前两条至少要处理;第 3 条是文档 typo,可以顺手一起改掉。

@yinjiping yinjiping enabled auto-merge (squash) March 19, 2026 06:40
@yinjiping yinjiping merged commit e530a0b into main Mar 19, 2026
10 checks passed
@yinjiping yinjiping deleted the ref_xdp_lb branch March 19, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants