1. 孤立 コンピュータ ネットワークは階層的に実装されており、異なるプロトコルが異なる階層で動作します。 OSI 階層モデルによれば、7 つの層があります。一般的に「分離」と呼ばれるものは、通常、「データ リンク層」とも呼ばれる第 2 層を指します。データリンク層のネットワークパケットは「フレーム」とも呼ばれます。よく話題になるネットワーク カードの MAC アドレスは、フレームのアドレスです。 MAC は実際には「メディア アクセス制御」の略語であり、データ リンク層のサブ層です。 なぜ第 2 層で分離を実行する必要があるのですか?第 2 層のフレームの一部にはブロードキャスト アドレスがあり、同じ第 2 層にあるすべてのデバイスがこれらのフレームを受信でき、また受信する必要があるためです。スイッチは一般に第 2 層で動作すると考えられており、これらのブロードキャスト パケットは転送される必要があるため、第 2 層は通常「ブロードキャスト ドメイン」と呼ばれます。 [[255524]] 仮想LAN Openstack Neutorn の中核は、レイヤー 2 物理ネットワークの抽象化と管理です。テナント間のネットワーク分離を保証するために、さまざまなネットワーク分離テクノロジをサポートしています。 VLAN は主な分離ソリューションであり、それ自体がスイッチで広く使用されているレイヤー 2 分離テクノロジです。ただし、このソリューションにも一定の制限があります。まず、管理が比較的面倒で、物理的なスイッチの設定が必要になります。さらに、利用可能な VLAN の数も制限されています。 VLAN ID番号は4,000以上あります。各テナントに 1 つの VLAN が割り当てられていると仮定すると、最大 4,000 を超えるテナントをサポートできます。 3. 仮想ネットワークデバイス 図1: VLANモードのコンピューティングノードの仮想ネットワークトポロジ図 3.1 VLAN ネットワーク モードでは、コンピューティング ノード上の仮想ネットワーク デバイスは次のようになります。 (1)tapxxxデバイス 簡単に言うと、仮想マシンに提供される仮想ネットワーク カードであり、VM に対応するネットワーク ポートの vNIC です。仮想マシンのネットワーク機能は vNIC によって提供されます。ハイパーバイザーは、仮想マシンごとに 1 つ以上の vNIC を作成できます。 (2)qbrxxxデバイス Linux ブリッジは、セキュリティ グループにサービスを提供してセキュリティを担当するものと簡単に理解できます。タップ デバイスではネットワーク ACL ルールを構成できないため、iptable セキュリティ グループ ポリシーを実装するために Linux ブリッジが追加されます。 (3)qvmxxxデバイス Qvm は主に、VM から出力されるパケットに VLAN タグを追加します。 (4)plyxxxデバイス Ovs ブリッジの主な機能は、ローカル MAC アドレスではないユニキャスト メッセージをフィルターすることです。 (5)pvixxxおよびpvoxxxデバイス PLY はポリシー ブリッジです。 PLY と BR-INT は、パス ポートのペアによって接続されます。 PLY に接続されている端は PVI ポート、BR-INT に接続されている端は PVO ポートです。 (6)br-intデバイス br-int は統合ブリッジであり、主にフレーム転送を担当します。 (7)int-brcpsおよびphy-brcpsデバイス 主に、br-int によって転送されたフレーム内の vlanid を変換する役割を担います。 (8) brcpsとtrunk0デバイス br-cps は Ovs ブリッジです。 Trunk0 は、eth0 と eth1 (アクティブ バックアップ モード) で構成される結合です。パケットが物理ネットワークに入る場合、実際の物理ネットワーク カード trunk0 (eth2 および eth4) を通過する必要があります。したがって、trunk0 は br-1 にブリッジされ、リンク全体が開きます。 (9)タプウ装置 DHCP サービスのリスニング ポート。 3.2 コンピューティングノード上のネットワークデバイス情報 3.2.1 Linuxブリッジ情報 - Compute153:~ # virshリスト
- ID名前州
-
- 1 インスタンス 00000583 が実行中
- 2 インスタンス-000005df 実行中
- 3 インスタンス-00000603 実行中
- 4 インスタンス-00000654 実行中
- 5 インスタンス-0000068f 実行中
- 6 インスタンス-000006d7 実行中
- 7 インスタンス-0000070d 実行中
- 9 インスタンス-00000769 実行中
- 10 インスタンス-0000090d 実行中
- 11 インスタンス-00000a37 実行中
コンピューティング ノード Compute153 で 10 台の仮想マシンが起動されます。 - 計算153
- :~
- # brctl 表示
- ブリッジ名ブリッジID STP対応インターフェース
- qbr7fc1e7d0-0c 8000.bee6e69f9457いいえqvm7fc1e7d0-0c
- タップ7fc1e7d0-0c
- qbr931641ad-4b 8000.eaa1a27fffcbいいえqvm931641ad-4b
- タップ931641ad-4b
- qbr963c4b38-70 8000.7635674ec1fcいいえqvm963c4b38-70
- タップ963c4b38-70
- qbr9df6f9f9-42 8000.2e1eba67aca5いいえqvm9df6f9f9-42
- タップ9df6f9f9-42
- qbrb9dd9478-0f 8000.2e954943421cいいえqvmb9dd9478-0f
- タップb9dd9478-0f
- qbrc24f2999-b9 8000.427df7c7a333いいえqvmc24f2999-b9
- タップc24f2999-b9
- qbrc3833757-af 8000.7e6eb025950bいいえqvmc3833757-af
- タップc3833757-af
- qbrc78917be-9c 8000.1a67a8814d03いいえqvmc78917be-9c
- タップc78917b0-9c
- qbrd5cbf3b0-ef 8000.f6de8391f526いいえqvmd5cbf3b0-ef
- TAPd5cbf3b0-ef
- qbrfe79631b-85 8000.c2d425903a69いいえqvmfe79631b-85
- タップfe79631b-85
10 個の qbr があり、各仮想マシンの各ネットワーク カードに対応する qbr があることがわかります。各 qbr には対応するタップと qvm があり、図の qbr の北向きおよび南向きのインターフェイスに対応しています。 3.2.2 OVSブリッジ情報 ovs-vsctl を使用して、ホスト上の既存の OVS ブリッジとそのポートを照会できます。 - ブリッジ「plyc24f2999-b9」
- ポート「qvmc24f2999-b9」
- インターフェース「qvmc24f2999-b9」
- タイプ: 内部
- ポート「plyc24f2999-b9」
- インターフェース「plyc24f2999-b9」
- タイプ: 内部
- ポート「pvic24f2999-b9」
- インターフェース「pvic24f2999-b9」
- タイプ: パッチ
- オプション: {peer= "pvoc24f2999-b9" }
プライブリッジ情報を確認できます。上部はqvmに接続され、下部はbr-intに接続されます。 ply と br-int の間には、pvi と pvo というポート インターフェイスのペアがあります。 - ブリッジ br- int
- fail_mode: セキュア
- ポート「pvoc78917be-9c」
- タグ: 5
- インターフェース「pvoc78917be-9c」
- タイプ: パッチ
- オプション:{peer= "pvic78917be-9c" }
- ポート「pvob9dd9478-0f」
- タグ: 9
- インターフェース「pvob9dd9478-0f」
- タイプ: パッチ
- オプション:{peer= "pvib9dd9478-0f" }
pov ポートがタグ付けされていることに注意してください。これは内部タグであり、主に同じ仮想マシン内の異なる仮想ネットワーク カード デバイスを区別するために使用されます。複数のネットワーク カードには順番に番号が付けられます。 - ブリッジ br- int
- fail_mode: セキュア
- ポート「pvoc78917be-9c」
- タグ: 5
- インターフェース「pvoc78917be-9c」
- タイプ: パッチ
- オプション:{peer= "pvic78917be-9c" }
- ポート「pvob9dd9478-0f」
- タグ: 9
- インターフェース「pvob9dd9478-0f」
- タイプ: パッチ
- オプション:{peer= "pvib9dd9478-0f" }
- ポートbr- int
- タグ: 4095
- インターフェース br- int
- タイプ: 内部
- ポートint -brcps
- インターフェースint -brcps
- タイプ: パッチ
- オプション: {peer=phy-brcps}
- ポート「pvo9df6f9f9-42」
- タグ: 5
- インターフェース「pvo9df6f9f9-42」
- タイプ: パッチ
- オプション:{peer= "pvi9df6f9f9-42" }
br-int ブリッジ上のすべてのポート情報を確認できます。上向きポートは pvo ポートであり、下向きポートは brcps ブリッジへの接続に使用される int-brcps ポートです。 - ブリッジ br- int
- fail_mode: セキュア
- ポート「pvoc78917be-9c」
- タグ: 5
- インターフェース「pvoc78917be-9c」
- タイプ: パッチ
- オプション:{peer= "pvic78917be-9c" }
- ポートint -brcps
- インターフェースint -brcps
- タイプ: パッチ
- オプション: {peer=phy-brcps}
int-brcps および phy-brcps インターフェイスは、br-int と brcps ブリッジを接続するインターフェイスです。 br-int をクエリすると、それに接続されている int-brcps を見つけることができ、brcps ブリッジをクエリすると、それに接続されている phy-brcps インターフェイスを見つけることができます。 - ブリッジ brcps
- ポート external_om
- タグ:1405
- インターフェース external_om
- タイプ: 内部
- ポート「trunk0」
- インターフェース「trunk0」
- ポート phy-brcps
- インターフェース phy-brcps
- タイプ: パッチ
- オプション: {peer= int -brcps}
- ポート external_api
- タグ:1400
- インターフェース external_api
- タイプ: 内部
- ポート brcps
- タグ:0
- インターフェース brcps
- タイプ: 内部
- ポート「om-physnet1」
- タグ:1089
- インターフェース「om-physnet1」
- タイプ: 内部
管理プレーン ブリッジ brcps には、外部通信用のタグが付いた external_om ポートと external_api ポートを含む複数のポートがあります。上向き phy-brcps インターフェース。ローカル インターフェイス brcps、ポート om-physnet1、そして最も重要な trunk0 (実際のデータ物理通信インターフェイス)。 上記は、VLAN モードの仮想マシン通信が通過する必要があるすべてのポートであり、データ フローは次のようになります。 1) データ フレームは VM から出力され、TAP によって提供される仮想ネットワーク ポート vNIC を通過し、次に Linux ブリッジ qrb セキュリティ検証を通過します。 qvm に移動すると、内部 VLAN タグが付けられ、ホスト ノード内のローカル ID になります。この ID の目的は、同じホスト内の異なる VM を区別することです。 2) 南へ進み、合流します。ドキュメントには、非ローカル MAC アドレスをフィルタリングするために使用されることが示されています。主な目的は、同じホスト上の他の VM へのアクセスを容易にすることです。宛先ソースが同じホストの場合は、br-int 転送なしに直接アクセスできます。 3) br-int を続行すると、フレームは宛先ホストに転送され、その後南のパッチ ポートに送られます。ポートはフレームの途中にある内部 VLAN ID (ローカル ID) を削除し、外部 VLAN ID に置き換えます。 4) フレームは実際の外部物理スイッチ ポートに送信され、宛先に送信されます。 3.2.2 br-int ダンプフロー情報 br-int は、brcps から来るトラフィック (ポート int-brcps から到着) の VLAN タグ変換を完了します。以下の例では、外部 VLAN ID: 1013 から内部 VLAN ID: 2 への変換を確認できます。 - 計算153
- :~
- #ovs-ofctl ダンプフロー br- int
- NXST_FLOW応答(xid=0x4):
- クッキー=0xaf3ffaad56834ff8、期間=8767986.702秒、テーブル=0、n_packets=138635866、n_bytes=49130127982、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=1013アクション=mod_vlan_vid:2、通常
- クッキー=0xaf3ffaad56834ff8、期間=8759690.249秒、テーブル=0、n_packets=902894466、n_bytes=111008267998、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=1014、アクション=mod_vlan_vid:3、通常
- クッキー=0xaf3ffaad56834ff8、期間=8606291.966秒、テーブル=0、n_packets=75523546、n_bytes=7721353259、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=503、アクション=mod_vlan_vid:4、通常
- クッキー=0xaf3ffaad56834ff8、期間=7943259.828秒、テーブル=0、n_packets=27312770、n_bytes=4039091682、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=1011アクション=mod_vlan_vid:5、通常
- クッキー=0xaf3ffaad56834ff8、期間=7248098.099秒、テーブル=0、n_packets=17132221、n_bytes=1590164809、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=504、アクション=mod_vlan_vid:6、通常
- クッキー=0xaf3ffaad56834ff8、期間=5730798.970秒、テーブル=0、n_packets=35859018、n_bytes=4389953008、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=1012アクション=mod_vlan_vid:7、通常
- クッキー=0xaf3ffaad56834ff8、期間=583874.187秒、テーブル=0、n_packets=2041814、n_bytes=433205117、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=1015アクション=mod_vlan_vid:8、通常
- クッキー=0xaf3ffaad56834ff8、期間=146306.053秒、テーブル=0、n_packets=435169、n_bytes=31391505、アイドル年齢=0、ハード年齢=65534、優先度=3、in_port=1、dl_vlan=1016 アクション=mod_vlan_vid:9、通常
- クッキー=0xaf3ffaad56834ff8、期間=9233017.369秒、テーブル=0、n_packets=8966890076、n_bytes=2799828872226、アイドル時間=0、ハード時間=65534、優先度=2、in_port=1 アクション=ドロップ
- クッキー=0xaf3ffaad56834ff8、期間=9233016.732秒、テーブル=0、n_packets=1106708092、n_bytes=190560627712、アイドル年齢=0、ハード年齢=65534、優先度=0 アクション=NORMAL
- クッキー=0xaf3ffaad56834ff8、期間=9233019.667秒、テーブル=23、n_packets=0、n_bytes=0、idle_age=65534、hard_age=65534、優先度=0、アクション=ドロップ
- クッキー=0xaf3ffaad56834ff8、期間=9233019.551秒、テーブル=24、n_packets=0、n_bytes=0、idle_age=65534、hard_age=65534、優先度=0、アクション=ドロップ
3.2.3 brcps ダンプフロー情報 brcps は、br-int から着信するトラフィック (ポート phy-brcps から着信) を処理し、ローカル VLAN から外部 VLAN への変換を実現します。次の例は、内部 VLAN ID: 2 から外部 VLAN ID: 1013 への変換を示しています。 - 計算153
- :~
- # ovs-ofctl ダンプフロー brcps
- NXST_FLOW応答(xid=0x4):
- クッキー=0xaaf94399aad7707e、期間=8768079.505秒、テーブル=0、n_packets=4610859、n_bytes=723908441、アイドル年齢=6、ハード年齢=65534、優先度=4、in_port=5、dl_vlan=2、アクション=mod_vlan_vid:1013、通常
- クッキー=0xaaf94399aad7707e、期間=8759783.046秒、テーブル=0、n_packets=1061625441、n_bytes=180117774176、アイドル時間=0、ハード時間=65534、優先度=4、in_port=5、dl_vlan=3、アクション=mod_vlan_vid:1014、通常
- クッキー=0xaaf94399aad7707e、期間=8606384.765秒、テーブル=0、n_packets=12135266、n_bytes=3806123480、アイドル年齢=32、ハード年齢=65534、優先度=4、in_port=5、dl_vlan=4、アクション=mod_vlan_vid:503、通常
- クッキー=0xaaf94399aad7707e、期間=7943352.621秒、テーブル=0、n_packets=8783552、n_bytes=1513703385、アイドル年齢=0、ハード年齢=65534、優先度=4、in_port=5、dl_vlan=5、アクション=mod_vlan_vid:1011、通常
- クッキー=0xaaf94399aad7707e、期間=7248190.902秒、テーブル=0、n_packets=2559355、n_bytes=510785011、アイドル年齢=16、ハード年齢=65534、優先度=4、in_port=5、dl_vlan=6、アクション=mod_vlan_vid:504、通常
- クッキー=0xaaf94399aad7707e、期間=5730891.771秒、テーブル=0、n_packets=16831749、n_bytes=3864947698、アイドル年齢=0、ハード年齢=65534、優先度=4、in_port=5、dl_vlan=7、アクション=mod_vlan_vid:1012、通常
- クッキー=0xaaf94399aad7707e、期間=583966.979秒、テーブル=0、n_packets=169878、n_bytes=24055409、アイドル年齢=29、ハード年齢=65534、優先度=4、in_port=5、dl_vlan=8 アクション=mod_vlan_vid:1015、通常
- クッキー=0xaaf94399aad7707e、期間=146398.874秒、テーブル=0、n_packets=1541、n_bytes=157171、アイドル年齢=132、ハード年齢=65534、優先度=4、in_port=5、dl_vlan=9 アクション=mod_vlan_vid:1016、通常
- クッキー=0xaaf94399aad7707e、期間=9233110.012秒、テーブル=0、n_packets=78、n_bytes=6780、idle_age=65534、hard_age=65534、優先度=2、in_port=5 アクション=ドロップ
- クッキー=0xaaf94399aad7707e、期間=9233111.393秒、テーブル=0、n_packets=10761364888、n_bytes=3180091314185、アイドル時間=0、ハード時間=65534、優先度=0 アクション=
3.2.4 iptables セキュリティグループ 各仮想マシン タップは 2 つのチェーン テーブル (out と in) に対応し、DHCP エージェントから仮想マシンへのアクセス ポリシーは out テーブルで定義されます。 - 計算153
- :~
- # iptables -Lneutron-openvswi-sg-チェーン
- 鎖
- neutron-openvswi-sg-チェーン (
- 20
- 参考文献
- ターゲット 利益 選択 ソース 宛先
- neutron-openvswi-i7fc1e7d0-0すべて
- neutron-openvswi-o7fc1e7d0-0すべて
- neutron-openvswi-i931641ad-4すべて
- neutron-openvswi-o931641ad-4すべて
- neutron-openvswi-i963c4b38-7すべて
- neutron-openvswi-o963c4b38-7すべて
- neutron-openvswi-i9df6f9f9-4すべて
- neutron-openvswi-o9df6f9f9-4すべて
- neutron-openvswi-ib9dd9478-0すべて
- neutron-openvswi-ob9dd9478-0すべて
- neutron-openvswi-ic24f2999-bすべて
- neutron-openvswi-oc24f2999-bすべて
- neutron-openvswi-ic3833757-aすべて
- neutron-openvswi-oc3833757-aすべて
- neutron-openvswi-ic78917be-9すべて
- neutron-openvswi-oc78917be-9すべて
- neutron-openvswi-id5cbf3b0-eすべて
- neutron-openvswi-od5cbf3b0-eすべて
- neutron-openvswi-ife79631b-8すべて
- neutron-openvswi-ofe79631b-8すべて
- すべて受け入れる
- 計算153
- :~
- # iptables -L neutron-openvswi-oc78917be-9
- 鎖
- 中性子-openvswi-oc78917be-
- 9
- (
- 2
- 参考文献
- ターゲット 利益 選択 ソース 宛先
- RETURN udp
- neutron-openvswi-sc78917be-9すべて
- RETURN udp
- DROP udp
- 戻る 全て
- 戻る 全て
- 落とす 全て
- neutron-openvswi-sg-フォールバックすべて
- /*
- 送信
- 一致しないトラフィックをフォールバック チェーンに送信します。 */
- 計算153
- :~
- # iptables -Lneutron-openvswi-ic78917be-9
- 鎖
- 中性子-openvswi-ic78917be-
- 9
- (
- 1
- 参考文献
- ターゲット 利益 選択 ソース 宛先
- 戻る 全て
- 戻り値udp
- 戻り値udp
- 戻る 全て
- 落とす 全て
- neutron-openvswi-sg-フォールバックすべて
3.3 コンピューティングノードのVLAN分離 VLAN モードでは、各 VLAN ネットワークに独自のブリッジが存在するため、VLAN ベースの分離が実現されます。 VLAN タグの変換には、2 つのブリッジ br-int と brcps の連携が必要です。 br-int は int-brcps (外部 VLAN を使用) から内部 VLAN へのパケットの変換を担当し、brcps は phy-brcps (内部 VLAN を使用) から外部 VLAN へのパケットの変換を担当します。テナントのトラフィック分離も VLAN を通じて実行されるため、コンピュート ノード内の仮想マシンのトラフィックによって伝送されるローカル VLAN と、コンピュート ノードの外部の物理ネットワーク上の異なるテナントを分離する VLAN の 2 種類の VLAN が存在します。物理スイッチと eth ネットワーク カードを接続するポートは、トランク モードに設定され、同じ物理ネットワーク カード上の複数の異なる VLAN からのデータを実装します。 |