Linuxサーバーで特定の方法でパケットを処理する方法を探しています-すべてのパケットでカスタムロジックを実行してから、(おそらく)パケットに対していくつかのアクションを実行し、カーネルに必要に応じてルーティングさせる必要があります。私の使用固有のユースケースは次のとおりです。
tc
、XDP
、DPDK
およびその他のFD.io
ソリューション(VPP
)などのLinuxユーティリティとツールを見てきましたが、私が望むものを達成するために、これらのテクノロジーを簡単な方法で解決する簡単な方法を見つけることができませんでした。私の検証とアクションが最新の柔軟な環境とコードで実行できる場合は望ましいです(ここではpythonまたはJavaを要求しませんが、bashは一部の人よりも望ましいでしょうカーネルのようなCコード)。
Linuxマシンでそのようなアクションを実装する一般的な方法は何ですか?上記のすべての変更と機能をプログラムで許可するベストプラクティスまたはテクノロジーはありますか?
乾杯。
XDP INGRESSの使用は、igmpおよびtcpシナリオの理想的な候補です。ただし、ipv6の場合は、チェックと境界が多いため、どのように変換されるかわかりません。ここでの欠点は、特定のユーザーアプリケーションがないため、ユーザーゼロコピーモードを使用できず、eBPFがサンドボックスJITでパケットごとに処理することです。 IDのパケットミラーも難しくなります。
TAPまたはKNIを使用したDPDKは、コストをバッチ処理して償却できるため、実際に使用する方法です。ただし、これにはユーザースペースの傍受が含まれます。
これが私の提案です
または