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