You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

eBPF msg_verdict程序内核入口点及单程序执行流程问询

问题解答

1. 仅存在msg_verdict程序时的执行流程

当仅加载了msg_verdict程序(无str_parser/parse_prog)时,执行流程会跳过报文解析环节,直接进入verdict处理:

  • 接收路径:recv_sock -> verdict_prog -> skb_send_sock
  • 发送路径(对应你追踪的tcp_bpf_sendmsg):tcp_bpf_sendmsg -> tcp_bpf_send_verdict -> sk_psock_msg_verdict(直接执行msg_verdict程序) -> 内核后续发送逻辑
  • 核心逻辑:内核会先检查parse_prog是否存在,不存在则直接将原始报文/消息传入verdict程序,无需解析转换。

2. Socket传递到verdict环节的路径

结合你给出的代码片段及内核逻辑,Socket通过以下路径传递到verdict程序:

  1. tcp_bpf_sendmsg的输入参数包含当前操作的socket(记为sk)。
  2. 调用tcp_bpf_send_verdict时传入sk,内部通过sk_psock_get(sk)获取与Socket绑定的psock(BPF程序的载体)。
  3. 在sk_psock_msg_verdict中,构造传递给BPF程序的msg结构体(如struct sk_msg),该结构体包含指向当前socket的指针msg->sk。
  4. 调用bpf_prog_run_pin_on_cpu(prog, msg)时,msg作为参数传入BPF程序,verdict程序可直接通过msg->sk访问目标Socket。

你代码片段中提到的psock->progs.msg_parser是解析程序,若仅存在msg_verdict,内核会优先检查并执行psock->progs.msg_verdict,Socket同样通过上述msg结构体传递。


内容的提问来源于stack exchange,提问作者Wu J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:43:14