物語の核心にある中性子では抽象的および物理的なネットワーク管理です。従来のネットワークサーバの元の形そのホストオペレーティングシステム、オペレーティングシステム展開上位レイヤ機能(ファイアウォール、アプリケーションサーバ、データベースサーバ)の一部。その後、物理NICのトラフィック(トラフィック)を通過させる - >物理的なスイッチ - >ルータ。
仮想化技術が表示されたら、物理デバイスの利用のために高くなります。上記のサービスのすべての仮想マシンに展開することができます。仮想マシン間の通信が必要なので、仮想ネットワークの概念が生まれました。仮想化二階の場合:仮想スイッチ、のvNIC。
Linuxでの仮想ネットワークデバイス
(1)TAP / TUN / VETH
TAP / TUNは、仮想ネットワークデバイスのLinuxカーネルの実装、二階のTAP作業、3層におけるTUNの仕事のチームです。Linuxは、データの状態を送信する装置のTAP / TUNスペースのユーザデバイスによって与えられたカーネル。
構造体tun_struct { char型の名前[ 8。 ]; // デバイス名 符号なしロングフラグを; // 区別TUNとタップデバイス 構造体 fasync_struct * fasync; // ファイル構造非同期通知 wait_queue_head_t read_wait // 待つキュー 構造体 net_device devの; // Linuxデバイスの抽象化構造体の 構造体は、 TXQをsk_buff_head; // ネットワークバッファ 構造体 net_device_stats統計; // NICステータス情報構造体 };
データ構造の定義とタップTUNの観点から同じです。しかし、ネットワーク層の仕事は異なっています。イーサネットプロトコル:データリンク層プロトコルは、タップの一方のみに対応します。タップして、またとして知られている仮想イーサネットデバイス。アプリケーションの用途は()/書き込み(リード)ネットワーク・プロトコル・スタックのLinuxへのデータを受信し、送信するためにタップを行います。
tunデバイスは、ポイントネットワーク層、3つのトンネルのLinuxのネイティブサポートする点です。また、あなたは、IPなどを設定する必要があります。
ペアでVETHペア。名前空間と一緒に満たしている必要があります。そうでなければ、意味がありません。データの要求送信に一端が常に要求受付の形でもう一方の端から現れます。ユーザプログラムは、デバイスが直接操作が、使用するのは簡単ですすることはできません。作成して正しく設定した後、入力データの1つの端部、配向VETHデータを変更し、コアネットワークコアへの完全な注入データを送信します。他の終わりには、このデータを読み取ることができます。
(2)橋
これは、仮想レイヤ2スイッチングデバイスとして見ることができます。他のLinuxネットワークデバイスは、スレーブデバイスとして、ブリッジにバインドすることができます。仮想ポートにこれらのデバイス。物理的観点から、我々は、デバイスからのブリッジ接続に何を置きます。
カーネルレーンに、netdev_rx_handler_register()は、登録されるデータを受信するためのコールバック関数と呼ばれます。データは、このデバイスから受信されるたびに後橋にデータを転送することができ、この関数を呼び出します。ブリッジは、このデータを受信すると、br_handle_frame()と呼ばれる実世界と同様、プロセススイッチである:カテゴリー(ブロードキャスト/単一点)宛先ポート番号を位置決めする、決定されたパケット、MACルックアップ内部ポートマッピングテーブルであり、ターゲットポートにデータを転送したり、自動的に廃棄された内部MACの自己学習にポートマッピングテーブルを更新します。
橋自体はの(直接データのLinuxカーネルスタックを受け入れる)と仮想NIC(bridge0を)隠す隠されたMACアドレスです。だから我々は、ブリッジに直接セットIPを与えることができます。だから、マウントされている場合のデバイスからのIPは、以前に存在してIPが失敗した後、マウントし、橋をマウントipからデバイスを設定する必要はありません。ネットワークプロトコルスタックは、唯一の橋は、その機器が橋の上に取り付けられたトップが隠されて見ることができます。
仮想アプライアンスのワークフロー参照として、マップを検索します。
詳細説明:https://www.ibm.com/developerworks/cn/linux/1310_xiawc_networkdevice/index.html