TUN/TAP インターフェイスを使用して TCP スタックをテストすることは可能ですか? 次のような仕組みを考えています。
+--------------------------------+
| TCP Client / Server |
| socket(AF_INET, SOCK_STREAM) |
| e.g. HTTP Server / Client |
+----------+---------------------+
|
| +---------------------+
| | TUN Device |
| | ( kernel does TCP ) |
| +---------------------+
|
+------------+----------------------+
| Linux Kernel + Forwarding Magic |
+-----------------------------------+
|
| +---------------------+
| |TAP Device |
| |Raw ethernet frames |
| +---------------------+
|
+----------+----------------------+
| Raw Socket API |
| socket(AF_PACKET, SOCK_RAW) |
| User mode TCP Stack over raw API|
| a HTTP client/server over it |
+---------------------------------+
一番上のボックスは、(たとえば) 標準の変更されていない HTTP サーバーであり、TUN デバイスにルーティングされた IP アドレスをリッスンします。一番下のボックスは、生のイーサネット フレームで動作するカスタム TCP/IP スタックです。
質問:
- このように 2 つの TAP/TUN デバイスを背中合わせに接続することは可能ですか?
- ここで「ブリッジ」が必要ですか?彼らは他にどのように背中合わせに話しますか?
- そして最後に:これを行うためのより良い方法はありますか?
事前にサンクス。
PS: すべてを同じマシンで実行します。「ボックス」は、ここではプロセスまたはセットまたはプロセスに似ています。