eBPF Talk: 揭秘 XDP 转发网络包【续】
文章目录
书接 eBPF Talk: 揭秘 XDP 转发网络包 未竟的内容,看看最后 generic_xdp_tx() 函数中的发包详情。
|
|
由以上函数调用栈可知,XDP_REDIRECT 和 XDP_TX 的处理办法是直接调用目标网络设备的 ndo_start_xmit() 发包函数直接将网络包发送出去。
因为不是调用 dev_queue_xmit() 设备层的发包函数进行发包,所以该网络包不会经过目标设备在内核协议栈设备层的 egress 处理阶段。
意即,经过 XDP 重定向的网络包无法在目标网络设备的 tc egress 中再处理一遍。
小结
这么一分析,就觉得 XDP_REDIRECT + tc egress 搭配工作的想法特别不靠谱。
但如果没这么分析一下,又怎么知道这想法不可行呢?
文章作者 Leon Hwang
上次更新 2023-05-21