2014-01-08 6 views
5

編集:2015年5月現在、SocketPlane(websiteおよびrepo)がDockerチームに加わり、OVSソリューションをDockerコアに統合しています。 Dockerのさまざまなネットワーキングソリューションの優位性があるかのように見えます。Docker(またはLinux Containers)をネットワークエミュレーションに使用するには?


私はMininetを使用して、ネットワークソフトウェアでテストを実行しています。 Mininetコンテナは基本的にネットワーキングスタックを持つLinuxコンテナなので、限界に達しているようです。私はそれぞれのコンテナに独自のネットワーキングスタック、ファイルシステム、プロセスセットを持たせたいと思っています。基本的には、コンテナを可能な限りVMに近いものにしたいと思います。 DockerはMinocketの反対側にあり、そのコンテナにはファイルシステムと独自のプロセスがありますが、独自のネットワークスタックはありません。私はDockerに傾いています.Dorkerだけのディスクスペースを使用して、コンテナをフォークするための素晴らしいAPIを持っています。私の質問は、次のコンテナレイアウト+ネットワークインターフェイスの設定でLinuxコンテナ(Dockerなどで)のセットを作成することは可能ですか?

enter image description here

答えて

2

あなたはその目的のためにPipeworkを使用することができます。具体的には、それが実装するシナリオの1つです(コンテナ間のプライベートネットワーク、標準のDockerネットワークに加えて)。

+0

私はすでにそれを見つけて、今試してみました:) – jpillora

2

私はLinuxのコンテナを使用する2つのオープンソースのネットワークエミュレータの認識しています:

CORE Network Emulatorは、コンテナを使用し、それだけで必要なディレクトリのマウント名前空間を作成するため、各コンテナは、独自のファイルシステム(または部分的なファイルシステムを持っています各ノードで実行されているサービス)。

VNXネットワークエミュレータは別のオプションです。それはKVMかLXCのどちらかを使って仮想ノードを作成します(しかし私はまだLXCオプションを試していません)。

+0

@Brianのおかげで、私たちは現在、Openflow 1.3ソフトウェアスイッチを実行して、OVS-私たちはそれらを調査し、私たちができることを見ていきます。 – jpillora

1

@jpillora IMUNESネットワークエミュレータは、L2(ハブ、スイッチ)ノードのL3(PC、ルータ、ホスト)およびオープンvSwitchにDockerを使用します。たとえば、ルータノードは実際にはクアガが自動的に設定されているDebian Jessieシステムを持つDockerコンテナで、ノードをGUI内に描画するだけです。これらのコンテナにアクセスするには、それらをダブルクリックして、Linuxシステムで何をしても構いません。これは、ダミーのinitプロセスを使用するimunes/vrootと呼ばれるHub上で利用可能な「特別な」Dockerイメージを使用しているため、終了しません。技術的には、少し微調整すれば、それをあなたが望むものに置き換えることができます。そのソースコードはGithubにあります。 ユースケースには適切だと思います。

2

CORE Network Emulatorには、貢献して書いたDockerサービスがあります。これはarticle aboutです。 4.8の初期バージョンはほとんど壊れていますが、私は修正し改善しました。プルリクエストはGitHubです。

このサービスでは、Docker Imagesに 'core'というタグを付けることができ、サービス設定でオプションとして表示されます。コンテナ内のドッカーサービスを開始するDockerイメージを選択する必要があります。次に、そのノードで実行するコンテナを選択します。それは非常にうまくスケーリングされ、私は16Gbマシンに2000を超えるノードを持っています。

OVSについてもお話しました。これはCOREに組み込まれていませんが、手動で使用することができます。私はちょうどこれについてのCOREのメーリングリストに関する質問に答えました。これは、OVSを使用して標準のCOREスイッチ(ブリッジ)を切り替える簡単な概要を示しています。役に立つ場合は以下のテキストを再作成してください:

openvswitchはあまり使われていませんが、すばやく見ました。

は、私は私のパッケージマネージャ(Ubuntuの15.04)を介してopenvswitchインストール:

須藤はapt-getを私はその後、CORE 4.8に非常に単純なネットワークを構築しopenvswitchスイッチ

をインストールします。 2台のPCをスイッチに接続します。私はCOREでエミュレーションを開始しました。そして、私が設定されていた橋を見て、ホスト上:

sudo brctl show 

bridge name  bridge id    STP enabled  interfaces 
b.3.76   8000.42c789ce95e9  no    veth1.0.76 
                 veth2.0.76 
docker0   8000.56847afe9799  no 
lxcbr0   8000.000000000000  no 

私はスイッチがb.3.76呼ばれ表し、それに接続インターフェースveth1.0.76とveth2.0.76を持って橋を見ることができます。スイッチが動作しているようだので、私は今、ノード間のpingを

sudo ovs-vsctl add-br b.3.76 
sudo ovs-vsctl add-port b.3.76 veth1.0.76 
sudo ovs-vsctl add-port b.3.76 veth2.0.76 

ことができます。私は、その後openvswitchブリッジを設定

sudo ip link set b.3.76 down 
sudo brctl delbr b.3.76 

:私は橋を削除します。私はopenvswitchのそれ以上の設定を行おうとはしていません。

あなたがしなければならないので、それは明らかにopenvswitchブリッジまたはポートを削除しませんCOREエミュレーションを停止すると、その手で:

sudo ovs-vsctl del-port veth2.0.76 
sudo ovs-vsctl del-port veth1.0.76 
sudo ovs-vsctl del-br b.3.76 

これは、スクリプトまたは少しで自動化することが比較的簡単になります仕事のビットはドッカーに統合することができます。

ホープこれは私がCOREおよびいくつかの他のを試してみましたが、(特にAWS中またはMac上で)彼らはハードに設定し、実行することが分かっ

0

に役立ちます。おそらくシンプルなネットワークをシミュレートしたいのであれば、おそらく強力ですが、残念です。

したがって、私はYANS(Yet Another Network Simulator)と書いています。 YANSはDockerに基づいています。たとえ私が自分がどれほど速く走っているのか驚いています。試してみます!

関連する問題