Twitterにも書いたけど忘れそうなのでメモしておく。
下記の図のような構成でns2のveth2とveth3にXDPのプログラムをアタッチし、 XDP_REDIRECT
でns1とns3の間でパケットが往復できるかどうかテストしていたときにTCPのパケットだけ通らなかった。
ググったところ下記のメールスレッドが見つかり、結論としてはGeneric XDPではTCPのパケットがPASSされていて、アタッチしたXDPのプログラムを通らない。
実際のソースは ここ でXDPのプログラムに入る前に XDP_PASS
している。
回避策としては、Native XDPをサポートしているNICを使うか、下記のパッチをカーネルに当てるかで、カーネルのパッチで回避ができることは確認した。