ネットワークプロトコルについての楽しい話-講義25 |ソフトウェア定義ネットワーク:共有インフラストラクチャのコミュニティプロパティ管理方法

関連するブログ、参照この一連のオタクの時間-ネットワークプロトコルについての何か

前のセクションで、ネイティブVLANとLinuxブリッジを使用してクラウドプラットフォームを管理することを説明しましたが、これは柔軟性と分離の点で不十分であり、ネットワーク全体で統一されたビューと統一された管理が欠如しています。

これは、クラウドコンピューティングは、アパートに住んでいる全員がコミュニティのインフラストラクチャを共有しているようなものであり、ネットワークは、コミュニティのエレベーター、廊下、道路、ゲートなどに相当します。仕事のピーク時には、外出する人が多すぎるため、コミュニティの資産管理に課題が生じます。

プロパティは、各ユニットの階段に独自のプロパティ管理担当者を派遣し、エレベーターの速度を少し上げたり下げたりすることができます。地下鉄に直接行く場合は、複数の出入り口を複数の出入り口に変更するように人々を送ることもできます。10時30分を過ぎると、仕事のピークが過ぎて送り返された。

ソフトウェア定義ネットワーク(SDN)

このモードは、従来のネットワークデバイスや通常のLinuxブリッジモードに似ています。クラウドプラットフォーム全体のネットワークパスを構成するには、このマシンにログインして構成し、別のデバイスにログインして構成を成功させる必要があります。

資産管理担当者がインテリジェントな制御システムを持っている場合は、資産監視室でコミュニティの各ユニットと各エレベーターの人の流れを確認できます。監視室では、リモコンでハンドルをいじるだけです。エレベーターの速度を調整して柵の扉を開け、入口を出口に変更。
ここに画像の説明を挿入
これはソフトウェア定義ネットワーク(SDN)です。主に以下の3つの特徴があります。

  • 制御と転送の分離転送プレーン、セル内の道路と同様に、仮想または物理ネットワークデバイスです。コントロールプレーン、住宅の監視室と同じように、統合されたコントロールセンターです。プロパティマネージャーは、監視室から出て、道路上の機器を管理する必要がありましたが、現在は分離されています。道路は離れています。制御室は監視室にあります。
  • コントロールプレーンとフォワーディングプレーンの間のオープンインターフェイスコントローラーは、マスターコントロールルームがプロパティ管理者が使用するボタンを提供するのと同じように、アプリケーションレイヤーによって呼び出される上向きのインターフェイスを提供します。主制御室がエレベーターの速度を遠隔制御するのと同じように、コントローラーはインターフェースを呼び出してネットワーク機器を制御しますここでは2つの用語がよく使用されます。フロントインターフェースはノースバウンドインターフェースと呼ばれ、後者のインターフェースはサウスバウンドインターフェースと呼ばれます
  • 論理集中制御:論理集中制御プレーンは、複数の転送プレーンデバイス、つまり物理ネットワーク全体を制御できるため、グローバルネットワークステータスビューを取得でき、グローバルネットワークステータスビューに従ってネットワークの最適化された制御を実現できます。プロパティマネージャーが監視室でコミュニティ全体の状況を確認できるように、状況に応じてアクセスプランを最適化できます。

OpenFlowとOpenvSwitch

SDNを実装する方法はたくさんありますが、オープンソースの実装を見てみましょう。

オープンフローがあるSDNコントローラとネットワークデバイス間のインターワーキング南回りインターフェースプロトコルOpenvSwitchがために使用される仮想スイッチのソフトウェアを作成します

OpenvSwitchはOpenFlowプロトコルをサポートしていますが一部のハードウェアスイッチはOpenFlowプロトコルもサポートしていますこれらは、ネットワーク接続を両方の物理および仮想マシンを可能にする、管理SDNコントローラを統一することができます
ここに画像の説明を挿入

SDNコントローラーはOpenFlowプロトコルを介してネットワークをどのように制御しますか?

ここに画像の説明を挿入
OpenvSwitchにはフローテーブルルールがあり、このスイッチを通過するパケットはすべて、これらのルールによって処理され、受信、転送、および破棄されます。

流量計はどのように見えますか?実際、それはテーブルであり、各テーブルには多くの行があり、各行はルールです。各ルールには優先度があります。最初に優先度の高いルールを確認し、次に優先度の低いルールを確認します。
ここに画像の説明を挿入
ルールごとに、一致条件が満たされているかどうかによって異なります。これらの条件には、それが入ったポート、ネットワークパケットヘッダーの内容などが含まれます。満足の条件ネットワークパケットは、あろう行う運動を、このプロセスのネットワークパケットを。パケットヘッダーの内容を変更したり、任意のフォームにジャンプしたり、特定のネットワークポートに転送したり、破棄したりできます。

これらのフォームを通じて、受信したネットワークパケットを自由に処理できます。
ここに画像の説明を挿入
具体的に何ができますか?上記の表からわかるように、TCP / IPプロトコルスタックの4つの層をカバーできます。

以下のための物理層

  • マッチングルールには、どの口から入力するかが含まれます。
  • 実行アクションには、どの口からかが含まれます。

以下のためのMAC層

  • マッチングルールは次のとおりです。送信元MACアドレスは何ですか。dl_src)、ターゲットMACは何ですか?dl_dst)、vlanとは何ですか?dl_vlan);
  • 実行アクションには、ソースMACの変更mod_dl_src)、ターゲットMACの変更mod_dl_dst)、VLANの変更mod_vlan_vid)、VLANの削除strip_vlan)、MACアドレス学習learn)が含まれます。

以下のためのネットワーク層

  • マッチングルールは次のとおりです。送信元IPアドレスは何ですか。nw_src)、ターゲットIPは何ですか?nw_dst)。
  • 実行アクションには、ソースIPアドレスの変更mod_nw_src)とターゲットIPアドレスの変更mod_nw_dst)が含まれます。

以下のためのトランスポート層

  • マッチングルールには、次のものがありますtp_src)、ターゲットポートは何ですか?tp_dst)。
  • 実行アクションには、ソースポートの変更mod_tp_src)とターゲットポートの変更mod_tp_dst)が含まれます。

全体として、OpenvSwitchの場合、ネットワークパケット(バッファー)が届きます。これを変更し、任意のポートに送信します。

OpenvSwitchには、先に説明した機能のいくつかを試すように構成できるローカルコマンドラインがあります。OpenvSwitchコマンドを使用して仮想スイッチを作成できます。その後、この仮想スイッチに複数の仮想ポートポートを追加できます。

ovs-vsctl add-br ubuntu_br

実験1:OpenvSwitchを使用してVLAN機能を実現する

OpenvSwitchを介してVLANを実装する機能を試してみましょう。OpenvSwitchには2種類のポートあります。

最初のタイプはアクセスポートです

  • タグはこのポートで設定され、このポートからのパケットにはこのタグが付けられます。
  • ネットワークパケット自体のVLAN IDがタグと等しい場合、このポートから送信されます。
  • アクセスポートから送信されるパケットには、VLAN IDは含まれません。

2番目のタイプはトランクポートです

  • このポートはタグを構成せず、トランクを構成します。
  • トランクが空の場合、すべてのVLANがトランクになります。つまり、すべてのVLANパケットで、どのVLAN IDがそれ自体によって運ばれ、どのVLAN IDが運ばれるか、VLANが設定されていない場合、VLAN 0に属し、すべてが通過を許可されます。
  • トランクが空でない場合、これらのVLAN IDを持つパケットのみが通過します。

次のコマンドを使用して、次の環境を作成します。

ovs-vsctl add-port ubuntu_br first_br
ovs-vsctl add-port ubuntu_br second_br
ovs-vsctl add-port ubuntu_br third_br
ovs-vsctl set Port vnet0 tag=101
ovs-vsctl set Port vnet1 tag=102
ovs-vsctl set Port vnet2 tag=103
ovs-vsctl set Port first_br tag=103
ovs-vsctl clear Port second_br tag
ovs-vsctl set Port third_br trunks=101,102

また、MACアドレスの学習を禁止するように設定する必要があります。

ovs-vsctl set bridge ubuntu_br flood-vlans=101,102,103 

ここに画像の説明を挿入
環境を作成したら、この実験を行ってみましょう。

  1. 192.168.100.102から192.168.100.103にpingし、tcpdumpを使用してパケットをキャプチャします。first_ifがパケットを受信し、first_brからのヘッダーにVLAN IDがありません。second_ifもパケットを受信しました。second_brはトランクポートであるため、パケットヘッダーはVLAN IDで出力され、third_ifはパケットを受信できません。
  2. 192.168.100.100からping 192.168.100.105まで、second_ifとthird_ifはパケットを受信できます。もちろん、third_ifはVLANに属していないため、pingは失敗します。first_ifはパッケージを受け取ることができません。second_ifはパケットを受信でき、パケットヘッダーにはVLAN ID = 101が含まれています。third_ifもパケットを受信でき、パケットヘッダーにはVLAN ID = 101が含まれています。
  3. 192.168.100.101からping 192.168.100.104まで、second_ifとthird_ifはパケットを受信できます。first_ifはパッケージを受け取ることができません。second_brはパケットを受信でき、パケットヘッダーにはVLAN ID = 102が含まれています。third_if彼はパケットを受信でき、パケットヘッダーにはVLAN ID = 102が含まれています。

この例では、OpenvSwitchを使用して、VLANをサポートするスイッチを購入しなくてもVLANの動作モードを学習できることがわかります。

実験2:OpenvSwitchを使用してネットワークカードのバインドをシミュレーションし、スイッチに接続する

次に、別の実験をしてみましょう。以前、高可用性のために、ネットワークカードバインディングを使用してスイッチに接続でき、OpenvSwitchでもこれをシミュレートできると述べました。

OpenvSwitchには、次の3つの値に設定できるbond_modeがあります。

  • active-backup:1つの接続がアクティブで、もう1つはバックアップです。アクティブが失敗すると、バックアップが一番上になります。
  • balance-slb:負荷分散するトラフィックのソースMACと出力VLANをインストールします。
  • balance-tcp:LACPプロトコルがサポートされている場合のみ、L2、L3、L4に従ってロードバランスできます。

テスト環境を構築します。 
ここに画像の説明を挿入
次のコマンドを使用して、ボンド接続を確立します。

ovs-vsctl add-bond br0 bond0 first_br second_br
ovs-vsctl add-bond br1 bondl first_if second_if
ovs-vsctl set Port bond0 lacp=active
ovs-vsctl set Port bondl lacp=active

デフォルトでは、bond_modeはアクティブバックアップモードで、最初のアクティブはfirst_brとfirst_ifです。

このとき、192.168.100.100から192.168.100.102、および192.168.100.101から192.168.100.103にpingを実行すると、tcpdumpはすべてのパケットがfirst_ifを通過していることを確認できます。

first_ifがdownに設定されている場合、パケットの方向が変更され、second_ifがトラフィックを持ち始めていることがわかります。これは、192.168.100.100および192.168.100.101では影響を受けていないようです。

次のコマンドを使用する場合は、bond_modeをbalance-slbに設定します。次に、192.168.100.100の192.168.100.102と192.168.100.101の192.168.100.103に同時にpingすると、パケットがtcpdumpを介して回避されていることがわかりました。

ovs-vsctl set Port bond0 bond_mode=balance-slb
ovs-vsctl set Port bond1 bond_mode=balance-slb

この例では、OpenvSwitchを使用して、結合をサポートするスイッチを2つ購入しなくても、結合の効果を確認できます。

OpenvSwitchアーキテクチャ

OpenvSwitchはこれをどのように行うのですか?OpenvSwitchのアーキテクチャ図を見てみましょう。 
ここに画像の説明を挿入
OpenvSwitchは、多くのモジュールが含まれているユーザーモードがある二つの重要なプロセスは、ある二つの重要なコマンドラインツールは

  • 最初のプロセスはOVSDBプロセスです。ovs-vsctlコマンドラインはこのプロセスと通信して、仮想スイッチを作成し、ポートを作成し、ポートを仮想スイッチに追加します。OVSDBはこれらのトポロジー情報をローカルファイルに保存します。
  • 2番目のプロセスはvswitchdプロセスです。ovs-ofctlコマンドラインはこのプロセスと通信してフローテーブルルールを発行します。ルールはネットワークパケットの処理方法を指定します。vswitchdはフローテーブルをユーザーモードのフローテーブルに配置します。

カーネル・モード、OpenvSwitchがカーネルモジュールOpenvSwitch.ko図に対応し、データパス部。ネットワークカードに関数を登録します。この関数は、ネットワークパケットがネットワークカードに到着するたびに呼び出されます。

カーネルのこの機能では、ネットワークパケットを取得し、さまざまなレベルで重要な情報を取り出します。次に例を示します。

  • 物理層では、in_portは、パケットが入るネットワークポートのIDです。
  • MAC層では、送信元および宛先MACアドレス。
  • IP層では、送信元アドレスと宛先アドレス。
  • トランスポート層では、送信元と宛先のポート番号。

コアコアの状態表フロー次に、カーネルモジュールはカーネルフローテーブルのルールを照合し、一致した場合は、操作を実行するか、パケットを変更するか、パケットを転送または破棄します。カーネルが一致しない場合、ユーザー状態を入力する必要があり、ユーザー状態とカーネル状態はLinuxのメカニズムNetlinkを介して相互に通信します

カーネルは、ユーザーモードプロセスvswitchd up呼び出しを通じてユーザーモードフローテーブルのルール一致するように指示します。ルールは完全なフローテーブルルールであり、カーネルフローテーブルは迅速な処理のみを目的としています。一部のルールは予約されています。ルールはしばらくすると期限切れになります。

ユーザーモードでフローテーブルルールが一致する、操作はユーザーモードで実行さ一致したフローテーブルはreinjectを介してカーネルに配信されます。これにより、後続のパケットがカーネルでこのルールを見つけることができます。

ここでは、オープンフロープロトコル呼び出されます。これは、ローカルコマンドラインツールまたはリモートSDNコントローラーです。重要なSDNコントローラーはOpenDaylightです。

次の図は、OpenDaylightで見られるトポロジー図です。物件管理者が監視室にいるような感じはありますか?
ここに画像の説明を挿入

クラウドコンピューティングでOpenvSwitchを使用する方法

OpenvSwitchはクラウドコンピューティングでどのように使用できますか?
ここに画像の説明を挿入
VLANのシーンについてはまだ話し合っています。

OpenvSwitchがない場合、新しいユーザーが新しいVLANを使用したい場合は、新しいVLANに属する仮想ネットワークカードを作成し、テナント用に個別の仮想ブリッジを作成する必要があります。 、仮想ネットワークカードと仮想ネットワークブリッジはますます、管理は非常に複雑になります。

時間の計画の初めから、すなわち、別の問題は、VLANの仮想マシンで、VLANの物理的な環境が透明伝送である、あなたはすでに、強く結合し、物理環境と仮想環境を一致する必要が柔軟性に欠けますOpenvSwitchの導入により、ステータスが改善されました。

まず、OpenvSwitch自体がVLANをサポートしているため、すべての仮想マシンをブリッジbr0に配置でき、異なるユーザーが異なるタグを構成して分離を実現できます。たとえば、上の図では、ユーザーAの仮想マシンはすべてbr0にあり、ユーザーBの仮想マシンはすべてbr1にあります。OpenvSwitchを使用すると、それらすべてをbr0に配置して、異なるタグを設定できます。

さらに、仮想スイッチbr1を作成して、物理ネットワークを仮想ネットワークから分離することもできます。物理ネットワークには、物理​​ネットワークのVLANプランがあります。仮想マシンは物理マシン上にあり、すべてのVLANは1から始まります。マシン上には4096を超える仮想マシンがないため、物理マシン上でVLANが1から始まる場合は、それで十分です。

たとえば、図では、上部の物理マシンでは、ユーザーAに1のタグが割り当てられ、ユーザーBには2のタグが割り当てられていますが、下部の物理マシンでは、ユーザーAに7のタグが割り当てられています。タグは6です。

物理マシン間の通信と分離がまだVLANを介している場合、仮想マシンのVLANと物理環境のVLANは一致している必要がありますが、柔軟性のために必ずしも同じである必要はなく、物理マシンと仮想マシンのネットワークを個別に管理できます。ネットワーク。幸い、OpenvSwitchはパッケージの内容を変更できます。たとえば、dl_vlanを照合し、次にmod_vlan_vidを実行して、物理マシンに出入りするネットワークパケットを改善します。

テナントの数は増えますが、物理環境のVLANはまだ十分ではありませんが、OpenvSwitchのマッピングにより、物理環境と仮想環境が切り離されるため、後で説明する仮想マシン環境に影響を与えることなく、物理環境が他のテクノロジーを使用できます。

まとめ

さて、このセクションはここにあります、要約しましょう:

  • SDNを使用してクラウドネットワーク全体を制御することは、コントロールプレーンとデータプレーンを分離し、マスターコントロールルームからのプロパティ全体のコミュニティセキュリティ管理と同じです。
  • オープンソース仮想スイッチの実装OpenvSwitch。独自のパッケージに任意の変更を加えることができるため、クラウドをネットワーク制御に非常に柔軟にできます。
  • OpenvSwitchをクラウドに導入すると、構成がシンプルかつ柔軟になり、物理ネットワークと仮想ネットワークを分離できます。

最後に、2つの質問をさせていただきます。

  1. このセクションでは、フローテーブルを使用して、VIPが異なるマシン間の複雑なバランスを実現できることを説明しましたが、その方法を知っていますか?
  2. OpenvSwitchは物理ネットワークと仮想ネットワークを分離できますが、物理ネットワークで使用されるVLANの数は十分ではありません。
公開された40元の記事 ウォンの賞賛1 ビュー5350

おすすめ

転載: blog.csdn.net/aha_jasper/article/details/105575638