November 7, 2018

TCPパケットがGeneric XDPで処理されない件について

Twitterにも書いたけど忘れそうなのでメモしておく。

下記の図のような構成でns2のveth2とveth3にXDPのプログラムをアタッチし、 XDP_REDIRECT でns1とns3の間でパケットが往復できるかどうかテストしていたときにTCPのパケットだけ通らなかった。

network-diagram ググったところ下記のメールスレッドが見つかり、結論としてはGeneric XDPではTCPのパケットがPASSされていて、アタッチしたXDPのプログラムを通らない。

Generic XDP and veth

実際のソースは ここ でXDPのプログラムに入る前に XDP_PASS している。

回避策としては、Native XDPをサポートしているNICを使うか、下記のパッチをカーネルに当てるかで、カーネルのパッチで回避ができることは確認した。

cilium/cilium#3077 (comment)

© Yuya Kusakabe 2011-2022

Powered by Hugo & Kiss.