Linux 仮想ネットワーク カード テクノロジー: Macvlan

Linux 仮想ネットワーク カード テクノロジー: Macvlan

1. Macvlan の紹介

Macvlan が登場する前は、イーサネット カードには複数の IP アドレスしか追加できず、MAC アドレスはグローバルな一意性によってイーサネット カードを識別するため、複数の MAC アドレスを追加することはできませんでした。 ethx:y を作成する方法を使用した場合でも、これらすべての「ネットワーク カード」の MAC アドレスは ethx と同じであることがわかります。本質的には、これらは依然としてネットワーク カードであり、多くのレイヤー 2 操作を実行する能力が制限されます。 Macvlan テクノロジーを使用すると、これが可能になります。

Macvlan を使用すると、ホストのネットワーク インターフェイス上に複数の仮想ネットワーク インターフェイスを設定できます。これらのネットワーク インターフェイスにはそれぞれ独立した MAC アドレスがあり、通信用に IP アドレスを設定することもできます。 Macvlan の下の仮想マシンまたはコンテナ ネットワークは、ホストと同じネットワーク セグメントにあり、同じブロードキャスト ドメインを共有します。 Macvlan は Bridge に似ていますが、Bridge の存在を省略しているため、設定やデバッグがより簡単であり、効率も比較的高いです。さらに、Macvlan 自体も VLAN を非常によくサポートできます。

[[261271]]

同じ VLAN 間のデータ転送は、ルーティングを必要とせずに、レイヤー 2 相互アクセス、つまり MAC アドレスを通じて実現されます。デフォルトでは、異なる VLAN 内のユーザーは直接通信できません。通信を行う場合は、ルーティング用のレイヤー 3 デバイスが必要です。 Macvlan についても同様です。 Macvlan テクノロジーによって仮想化された仮想ネットワーク カードは、論理的には物理ネットワーク カードと同等です。物理ネットワーク カードはスイッチに相当し、対応する仮想ネットワーク カードと MAC アドレスを記録します。物理ネットワーク カードはデータ パケットを受信すると、宛先 MAC アドレスに基づいてパケットがどの仮想ネットワーク カードに属しているかを判断します。つまり、データ パケットが Macvlan サブインターフェイスから送信される (または Macvlan サブインターフェイスに送信される) 限り、物理ネットワーク カードはデータ パケットを受信するだけで、処理は行いません。これにより、ローカル Macvlan ネットワーク カード上の IP が物理ネットワーク カード上の IP と通信できないという問題が発生します。この問題の解決策については次のセクションで説明します。

まず、Macvlan テクノロジーのフローチャートを見てみましょう。

簡単に言えば、Macvlan 仮想ネットワーク カード デバイスは、物理ネットワーク カード デバイスに寄生します。パケットを送信する際には、独自のパケット送信関数を呼び出し、寄生物理デバイスを見つけ、その物理デバイスを介してパケットを送信します。パケットを受信すると、寄生物理デバイスの rx_handler コールバック関数を登録してデータ パケットが処理されます。

2. マックヴラン vs ブリッジ

Macvlan について話すとき、ブリッジについて言及する必要があります。なぜなら、Macvlan は単純なブリッジと見なすことができるからです。しかし、両者の間にはまだ大きな違いがあります。

ブリッジは実際には古いタイプのスイッチであり、それらの間に大きな違いはありません。ブリッジとスイッチの違いは、技術ではなく市場にあります。スイッチはブリッジと同じ方法でネットワークをセグメント化します。スイッチはマルチポートブリッジです。正確には、ポート密度の高いブリッジを LAN スイッチと呼びます。

Bridge には次の機能があります。

  • ブリッジはレイヤー 2 デバイスであり、レイヤー 2 通信の処理にのみ使用されます。
  • ブリッジは MAC アドレス テーブルを使用してフレームの転送方法を決定します。
  • ブリッジは、ホスト間の通信パケットから MAC アドレスを学習します。
  • ハードウェア デバイスまたは純粋なソフトウェア実装 (例: Linux Bridge) にすることができます。

以下は、複数の VM がブリッジを使用して相互に通信する Linux ホスト上の状況です。

Linux ホストでは、コマンド ライン ツール brctl を使用してブリッジ構成を表示できます。このツールは、ソフトウェア パッケージ bridge-utils をインストールすることで入手できます。

  1. $ brctl 表示
  2.  
  3. ブリッジブリッジID STP対応インターフェース
  4. br0 8000.080006ad34d1 eth0なし
  5. ベス0
  6. br1 8000.080021d2a187いいえveth1
  7. ベス2

ブリッジでレイヤー 2 ループが発生する可能性があります。必要に応じて、ループを防ぐために STP を有効にすることができます。

マックヴラン

Macvlan には次の機能があります。

  • ユーザーは同じ物理ネットワーク カード上に複数の MAC アドレスを設定できます。
  • 前述の通り、上記で設定した MAC アドレスを持つネットワーク カードをサブ インターフェイスと呼び、物理ネットワーク カードを親インターフェイスと呼びます。
  • 親インターフェースは、物理インターフェース (eth0)、802.1q サブインターフェース (eth0.10)、またはボンディング インターフェースにすることができます。
  • 親/サブインターフェースにはMACアドレスだけでなくIPアドレスも設定可能です。
  • サブインターフェースは親インターフェースと直接通信できません (サブインターフェースを持つ VM またはコンテナはホストと直接通信できません)。
  • 前述のように、VM またはコンテナがホストと通信する必要がある場合は、ホストが使用するための追加のサブインターフェースを作成する必要があります。
  • サブインターフェースは通常、識別しやすいように mac0@eth0 の形式で名前が付けられます。

Macvlan を設定した後の様子を説明する写真がこちらです:

3. Macvlanの動作モード

Macvlan は次の 4 つのモードをサポートしています。

VEPA (仮想イーサネット ポート アグリゲータ)

VEPA モードでは、トラフィックの宛先が同じ親インターフェイスを共有する他の Macvlan インターフェイスであっても、Macvlan インターフェイスからのすべてのトラフィックは宛先に関係なく親インターフェイスに送信されます。レイヤー 2 ネットワーク シナリオでは、スパニング ツリー プロトコルにより、2 つの Macvlan インターフェイス間の通信がブロックされます。このとき、上位層ルータにルートを追加する必要があります (外部スイッチはヘアピン サポートで設定する必要があります。つまり、送信元アドレスと宛先アドレスの両方がローカル Macvlan インターフェイス アドレスであるトラフィックを対応するインターフェイスに送り返すことができる、802.1Qbg と互換性のあるスイッチが必要です)。このモードでは、親インターフェイスから受信したブロードキャスト パケットは、VEPA モードのすべてのサブインターフェイスにフラッディングされます。

現在、ほとんどのスイッチはヘアピン モードをサポートしていませんが、Linux ホストでヘアピン モード ブリッジを使用すると、VEPA モードの異なる Macvlan インターフェイスが通信できるようになります (前述のように、ブリッジは実際には古いスイッチです)。どのように設定するのですか?これは非常に簡単で、1 つのコマンドで解決できます。

  1. $ brctl ヘアピン br0 eth1オン 

または、iproute2 を使用して設定します。

  1. $ ブリッジリンクはdev eth0ヘアピンをオンに設定 

カーネルを手動でコンパイルしてアップグレードした場合、ユーザー モード プログラムは新しいカーネルのすべての機能をサポートしない可能性があります。つまり、brctl のバージョンが古すぎて、ヘアピン コマンドをサポートできない可能性があります。これを修正するには sysfs を使用できます:

  1. $ echo 1 >/sys/class/net/br0/brif/eth1/hairpin_mode

Linux ホストで Harpin モードを構成すると、送信元アドレスと宛先アドレスの両方がローカル Macvlan インターフェイス アドレスであるトラフィックは、br0 によって対応するインターフェイスに送り返されます (作成したブリッジが br0 であると仮定)。

仮想マシンまたはコンテナ間のアクセス トラフィックを物理スイッチ レベルで最適化する場合は、VEPA モードの方が適しています。

VEPA モードと Passthru モードでは、2 つの Macvlan インターフェイス間の通信はプライマリ インターフェイスを 2 回通過します。1 回目は送信時、2 回目は戻り時です。これにより、物理インターフェースの帯域幅に影響が及び、異なる Macvlan インターフェース間の通信速度も制限されます。複数の Macvlan インターフェースが頻繁に通信する場合、パフォーマンスへの影響はより顕著になります。

このモードは Linux の Bridge に似ています。同じ親インターフェイスを持つ 2 つの Macvlan 仮想ネットワーク カードは直接通信できます。親ネットワーク カードを介して外部ネットワークにトラフィックを送信する必要はありません。ブロードキャスト フレームは、「ブリッジ」に接続されている他のすべてのサブインターフェイスと物理インターフェイスにフラッディングされます。これは、同じ親インターフェイスを共有する Macvlan ネットワーク カードが直接通信できるシナリオに適しています。

ここでのいわゆるブリッジとは、外部からの支援なしにこれらのネットワーク カード間でデータ フローを直接転送できることを意味します。これは、Linux ホストに組み込まれているブリッジに少し似ています。つまり、すべて brctl コマンドで実行されます。しかし、それは Linux ブリッジとはまったく異なります。 MAC アドレスを学習する必要がなく、STP も必要ないため、Linux ブリッジを使用する場合よりもパフォーマンスが大幅に向上します。

ブリッジ モードには欠点があります。親インターフェイスがダウンすると、すべての Macvlan サブインターフェイスもダウンし、サブインターフェイスは相互に通信できなくなります。

プライベート

このモードは VEPA モードの拡張モードに相当し、同じ親インターフェイスを共有する Macvlan 仮想ネットワーク カード間の通信を完全にブロックします。ヘアピンが親インターフェイスから送信されたトラフィックをホストに戻すように設定されている場合でも、対応する通信トラフィックは破棄されます。具体的な実装方法は、ブロードキャスト/マルチキャスト データを破棄することです。つまり、イーサネット アドレス解決 ARP は実行できなくなります。 MAC アドレスを手動で検出しない限り、同じホスト マシン上の複数の Macvlan ネットワーク カード間で通信を行うことはできません。ブロードキャスト トラフィックを分離する理由は、イーサネットがブロードキャストに基づいているためです。ブロードキャストが分離されると、イーサネットはサポートされなくなります。

パススルー

このモードでは、親インターフェイスと対応する MacVLAN インターフェイスが直接バインドされます。このモードでは、各親インターフェイスは 1 つの Macvlan 仮想ネットワーク カード インターフェイスにのみバインドでき、Macvlan 仮想ネットワーク カード インターフェイスは親インターフェイスの MAC アドレスを継承します。

このモードの利点は、仮想マシンとコンテナが MAC アドレスやその他のインターフェース パラメータを変更できることです。

4. Macvlanとブリッジの使用シナリオ

最後に、Macvlan と Bridge のそれぞれの使用シナリオについて説明します。

Macvlan の使用:

  • 仮想マシンまたはコンテナに外部の物理ネットワークへのアクセスを提供するだけで済みます。
  • Macvlan は CPU の使用量を抑えながら、より高いスループットを実現します。
  • Macvlan を使用する場合、ホストは VM またはコンテナと直接通信できません。

Bridge の使用:

  • 同じホスト上の複数の仮想マシンまたはコンテナを接続する必要がある場合。
  • 複数のブリッジが混在する環境向け。
  • 高度なフロー制御、FDB メンテナンスを適用する必要があります。

5. MacVLAN の制限

  • Macvlan は、レイヤー 2 経由で VM またはコンテナーを物理ネットワークに接続するためのほぼ理想的なソリューションですが、いくつかの制限もあります。
  • Linux ホストが接続されているスイッチでは、同じ物理ポートに接続できる MAC アドレスの数が制限される場合があります。ネットワーク管理者にこれらのポリシーを変更してもらうこともできますが、これが実行できない場合もあります (クライアント向けに簡単な PoC デモを実行している場合など)。
  • 多くの NIC では、その物理カードに割り当て可能な MAC アドレスの数にも制限があります。この制限を超えるとシステムのパフォーマンスに影響します。

IEEE 802.11 では、同じクライアント上に複数の MAC アドレスが存在することは許可されません。つまり、Macvlan サブインターフェイスは、ワイヤレス カードでも AP でも通信できません。この制限を打破するには複雑な方法を使うこともできますが、より簡単な方法として Ipvlan を使う方法もあります。ご興味がございましたら、ご自身で関連情報をご確認ください。

6. 結論

この記事では、主に Macvlan の実装原理を紹介し、Macvlan と Linux Bridge モードの違いや使用シナリオを比較し、さらに Macvlan の 4 つのモードの動作原理と関連する注意事項を詳細に分析します。次のセクションでは、実際の演習を通じて Macvlan の 4 つの動作モードをシミュレートします。

7. 参考文献

http://hicu.be/bridge-vs-macvlan

https://blog.csdn.net/ztguang/article/details/51854037

https://lists.linuxfoundation.org/pipermail/bridge/2009-April/006842.html

この記事はWeChatの公開アカウント「Cloud Native Lab」から転載したものです。この記事を転載する場合は、Cloud Native Lab の公開アカウントにお問い合わせください。

<<:  人工知能は止められない。 Advantech WISE-PaaS 3.0がイノベーションを推進

>>:  高いコストパフォーマンスとハイパフォーマンスを思いのままに!ファーウェイのクラウドサーバー「ベストセラー」が再び進化

推薦する

データサイエンティストと開発者向けの新しいツールであるAmazon SageMakerが中国で利用可能になりました

【51CTO.comオリジナル記事】機械学習は誕生以来、多くの分野で応用されてきましたが、現時点では...

Baidu Bearのエコシステムパートナーは15万社を超え、インデックスされたデータソースは18億を超える

5月22日、2018年百度アライアンスエコシステムサミットが海口市で開催されました。同日午後に開催さ...

Canalys:中国のクラウドインフラサービス市場は2021年に45%成長し、総額274億ドルに達した。

Canalysのレポートによると、中国本土は2021年も力強い勢いを維持し、クラウドインフラサービス...

SEO最適化とSEM検索エンジンマーケティング、その違いと関連性はすべてここにあります

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスSEO 最適化と SEM...

ウェブサイトが降格された後に新しいランキングで良い仕事をする方法

ウェブサイトが降格されると、ウェブサイトに大きな影響が出ます。多くのウェブマスターは、降格のためにウ...

SEOVIPでウェブサイトページを最適化する方法をご覧ください

最近、人気のSEOIPウェブサイトの単一ページランキング効果は、SEOの世界ではもう一つの神話になっ...

インターネット技術起業家は、2 つのセッションで提案を行う際にどのような点に重点を置いていますか?

[[258735]] 3月3日、毎年恒例の全国「二会期」が正式に始まりました。 「両会」の季節が始ま...

SEOを学ぶことで学習効率を効果的に向上させるいくつかの方法

ご存知のとおり、ウェブサイトの最適化はウェブサイトの運用とメンテナンスの方法の 1 つです。正確なウ...

エッジ コンピューティングとは何ですか? なぜ重要なのですか?

クラウド コンピューティングは、ほとんどの人が認識しているよりもはるかに大きなものです。その影響はビ...

ウェブマスターネットワークの第3回SEM入札オンライン収益トレーニングが受講生募集を開始しました

1. オンライン入札とは何ですか?簡単に言えば、入札とは、Baidu、Google、Soso、Sog...

locvps: 新しい日本のVPS、20%割引、日本のソフトバンク+日本のネイティブIP、月額76元、中国語Windows付き

locvps では現在、新しい日本の VPS を販売しています。サーバーは日本の大阪にあり、日本のソ...

iniz シンガポール VPS シンプルレビュー/ネットワークが若干改善

数年前から存在している VPS ブランドである iniz.com は、誰もがよく知っていると思います...

OPA ポリシー管理に Gatekeeper を使用する

先ほど、OPA ポリシーの自動同期を完了するために kube-mgmt サイドカー コンテナの使用を...

virmach: $45/e3-1240/16g メモリ/1T ハードディスク/オプションのコンピュータ ルーム 4 室、Windows システム付き

Virmach は、皆さんにとてもよく知られています。同社は、低価格の VPS 会社としてスタートし...

2020 GIDC: Tianyi Cloud CDN コンテナが新しいクラウド、ネットワーク、エッジ エコシステムの構築を支援

2020年、新型コロナウイルス感染症のパンデミックが世界を席巻し、伝統的な実体経済は大きな打撃を受け...