何?ネットワーク カードも仮想化できますか?

何?ネットワーク カードも仮想化できますか?

01 macvlan の紹介

前回の記事では、tap/tun、veth-pair、bridge といったいくつかの Linux 仮想ネットワーク デバイスについて説明しました。これらは本質的に、Linux システムによって提供されるネットワーク仮想化ソリューションです。今日お話しする macvlan もその 1 つです。より正確に言えば、ネットワーク カード仮想化ソリューションです。 macvlan テクノロジは、物理ネットワーク カードを複数の仮想ネットワーク カードに仮想化できるため、物理ネットワーク カードが複数のシャドウ クローンのテクニックを実行し、1 つから複数に変わるのと同等です。

[[262804]]

02 macvlanの仕組み

macvlan は Linux カーネルでサポートされている新しい機能です。サポートされているバージョンは v3.9-3.19 および 4.0+ です。より安定したバージョンとして 4.0 以上が推奨されます。通常はカーネル モジュールの形式で存在します。現在のシステムがそれをサポートしているかどうかは、次の方法で確認できます。

  1. # modprobe macvlan
  2. lsmod コマンドgrep macvlan
  3. macvlan 24576 0

最初のコマンドがエラーを報告するか、2 番目のコマンドが返されない場合は、現在のシステムが macvlan をサポートしておらず、カーネルをアップグレードする必要があることを意味します。

macvlan テクノロジーは VLAN に少し似ていますが、実装メカニズムはまったく異なります。 macvlan サブインターフェイスは元のメインインターフェイスから完全に独立しており、個別の MAC アドレスと IP アドレスで設定できますが、VLAN サブインターフェイスとメインインターフェイスは同じ MAC アドレスを共有します。 VLAN はブロードキャスト ドメインを分割するために使用され、macvlan は同じブロードキャスト ドメインを共有します。

macvlan は、異なるサブインターフェースを通じてトラフィックを分離することもできます。 macvlan は、受信したパケットの宛先 MAC アドレスに基づいて、パケットをどの仮想ネットワーク カードに渡すかを決定し、仮想ネットワーク カードはパケットを上位レベルのプロトコル スタックに渡して処理します。

03 4つのモード

macvlan サブインターフェース間の通信モードに応じて、macvlan には 4 つのネットワーク モードがあります。

  • プライベートモード
  • vepa (仮想イーサネット ポート アグリゲータ) モード
  • ブリッジモード
  • パススルーモード

デフォルトモードは vepa です。

3.1 プライベート

このモードでは、同じメイン インターフェイスの下にあるサブ インターフェイスは互いに分離されており、通信できません。トラフィックが外部の物理スイッチから送信された場合でも、容赦なく破棄されます。

3.2 ベパ

このモードでは、サブインターフェイス間の通信トラフィックは、802.1Qbg/VPEA 機能 (物理または仮想) をサポートする外部スイッチに送信され、外部スイッチによって転送された後、ループバックされる必要があります。

注: 802.1Qbg/VPEA 機能は、スイッチがヘアピン機能をサポートする必要があることを意味します。ヘアピン機能は、データ パケットがインターフェイスから受信された後に返される可能性があることを意味します。

3.3 ブリッジ

このモードでは、Linux ブリッジの機能がシミュレートされますが、ブリッジに比べて 1 つの利点は、各インターフェースの MAC アドレスが既知であり、学習する必要がないことです。したがって、このモードでは、サブインターフェースは相互に直接通信できます。

3.4 パススルー

このモードでは、メイン インターフェイスに接続できるサブ インターフェイスは 1 つだけであり、プロミスキャス モードに設定する必要があります。これは通常、サブインターフェイスのブリッジングと VLAN サブインターフェイスの作成に使用されます。

3.5 マカタップ

macvlan に似た別のテクノロジーは mactap です。 macvlan とは異なり、mactap はパケットを受信した後、それをプロトコル スタックに渡すのではなく、tapX ファイルに渡し、このファイルを使用してユーザー状態との直接通信を完了します。

04 実践

Linux システムでは、macvlan を作成するためのコマンド形式は次のとおりです。

  1. ip リンク リンクを追加デバイス 名前タイプ { macvlan | macvtap } モード { プライベート |ベパブリッジ |
  2.  
  3. パススルー [ nopromisc ] }

通常、macvlan を単独で使用しても意味がなく、VM やコンテナと組み合わせてネットワークを構築するのが一般的です。次に、名前空間を使用して、Linux が macvlan をどのように使用するかを確認します。

実験トポロジーは次のとおりです。

私のシステムでは、インターフェイス enp0s8 を例に、2 つの macvlan サブインターフェイス (ブリッジ モードを使用) を作成し、IP を設定して 2 つの名前空間に接続し、接続をテストします。

  1. # 2つのmacvlanサブインターフェースを作成する 
  2. ip link リンクenp0s8 dev mac1 タイプ macvlan モード ブリッジを追加します
  3. ip link リンクを追加enp0s8 dev mac2 タイプ macvlan モード ブリッジ
  4.  
  5. # 2つの名前空間を作成する 
  6. ip netns ns1を追加します
  7. ip netns はns2を追加します
  8.  
  9. # 2つのサブインターフェースをそれぞれ2つの名前空間にアタッチします
  10. IPリンクセットmac1netnsns1  
  11. IP リンクセットmac2 netns ns2
  12.  
  13. # IPを設定して有効にする
  14. ip netns exec ns1 ip a a 192.168.56.122/24 dev mac1
  15. ip netns exec ns1 ip l s mac1 アップ
  16. ip netns exec ns1 ip a a 192.168.56.123/24 dev mac2
  17. ip netns exec ns2 ip l s mac2 アップ

注: enp0s8 の IP は 192.168.56.110/24 であり、設定されたサブインターフェイス IP も同じネットワーク セグメント内にある必要があります。

その後、2 つのサブインターフェースを ping します。

  1. root@ubuntu:~# ip netns exec ns1 ip a show mac1
  2. 9: mac1@if3: mtu 1500 qdisc noqueue 状態 不明グループ デフォルトのqlen 1
  3. リンク/イーサ 2e:6e:d9:08:c5:05 brd ff:ff:ff:ff:ff:ff リンク-netnsid 0
  4. inet 192.168.56.122/24 スコープグローバルmac1
  5. valid_lft 永久に preferred_lft 永久に
  6. inet6 fe80::2c6e:d9ff:fe08:c505/64 スコープ リンク
  7. valid_lft 永久に preferred_lft 永久に
  8. root@ubuntu:~# ip netns exec ns1 ping 192.168.56.123
  9. PING 192.168.56.123 (192.168.56.123) 56(84)バイトデータ。
  10. 192.168.56.123からの64 バイト: icmp_seq=1 ttl=64時間=0.052 ミリ秒
  11. 192.168.56.123からの64 バイト: icmp_seq=2 ttl=64 time =0.028 ms
  12. ^C
  13. --- 192.168.56.123 ping 統計 ---  
  14. 送信パケット 2 個、受信パケット 2 個、パケット損失 0%、時間1000 ミリ秒
  15. rtt最小/平均/最大/ mdev = 0.028/0.040/0.052/0.012 ミリ秒

ご覧のとおり、ping は成功しています。上記モードを他のモードに変更すると動作しなくなります。これについては皆さんの実験にお任せします (デフォルトは vepa モードです)。

また、docker では macvlan が比較的重要なホスト間ネットワーク モデルであり、これについては次の記事で説明します。

05 結論

macvlan は、1 つのネットワーク カードから複数のネットワーク カードを仮想化できるネットワーク カード仮想化テクノロジです。

macvlan には 4 つの通信モードがあり、一般的に使用されるモードはブリッジです。

次のことを考慮してください。

  • macvlan ブリッジとブリッジの類似点と相違点は何ですか?
  • 複数の仮想ネットワーク カードが同じ MAC アドレスを共有しながら、独立した IP アドレスを持つ同様のテクノロジもあります。この技術とは何ですか?

この記事はWeChatの公開アカウント「Linux Cloud Computing Network(ID: cloud_dev)」から転載したものです。パブリックアカウントは主に、Linux、クラウド コンピューティング、ネットワークにおけるテクノロジの共有に重点を置いています。以下のQRコードからフォローできます。この記事を転載する場合は、Linux Cloud Computing Network のパブリック アカウントにお問い合わせください。

<<:  QingCloud、さらなるパフォーマンス向上を実現したプロフェッショナル向け強化ホスト「National Good Cloud」をリリース

>>:  SAP Concur、中国に研究開発センターを設立、インテリジェントな経費管理で中国企業の海外進出を支援

推薦する

Yuehuai SEO: ウェブサイトを合理的に最適化するための 4 つのステップについて簡単に説明します

最近、SEO に取り組む人が増えています。初心者のウェブマスターにとって、ウェブサイトを最適化すると...

垂直型電子商取引は「溝を越える」ことができるか?

現在、垂直型電子商取引が直面している困難は、オンラインショッピングの深さと幅が十分ではなく、ユーザー...

2020 年のクラウド コンピューティングとコンテナの予測

2020 年にクラウド サービス プロバイダーがどのように成長し、適応していくのか、また企業がクラウ...

本環長老が七色の遺物に生まれ変わったことをきっかけに、ウェブサイトの核心競争力について考える

偉大な僧侶であり現代の仏教指導者である本環尊者は、今年4月に亡くなりました。彼の化身は、100を超え...

オンライン教育は一時的な流行になるのでしょうか?教師委員会の隠れたルールに対処する必要がある

[要約] オンライン教育が将来的に従来の教育に勝てるかどうかは、どのチャネルを通じて教師がより大きな...

鄭州の現地学生研修機関はどのようにマーケティングを行っているのでしょうか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス昨日は、夜間の個別指導が...

ASO 最適化丨トラフィック思考は決して死なない (アプリプロモーションへの道を探る)

この記事は、主に CEO や会社の幹部向けに書かれており、アプリのプロモーションに関する新しいアイデ...

単語の選択から最適化まで、SEM の 3 つの主要なルーチンを 1 つの記事で学ぶ

SEM 広告では、キーワード管理に多くの時間を費やすことがよくあります。では、どのようなキーワード戦...

Amazon Web Servicesが多数の新しいデータベース機能を発表

[51CTO.com クイック翻訳] Amazon の Amazon Web Services (A...

ステーショングループ戦略のメリットとデメリットを客観的に見る

さて、いわゆるハイエンド SEO テクニックについて話すとき、ウェブマスターは常にサイト グループや...

Baidu のネットワークプロモーションでよく使用されるリソースの一覧

ウェブサイトが利益を上げたり、人々に何らかの意味を伝えたりしたい場合、より多くの人々にウェブサイトを...

張青:コンテンツの観点からタオバオのサプライネットワークを分析

コンテンツの観点からタオバオのサプライネットワークを分析するコンテンツは王様という言葉は、ウェブマス...

ipage - ウェブサイトの再設計が 23% オフ / 23 USD / 年払い / 無料ドメイン名 / 無制限のウェブサイトホスティング

1998 年に設立された老舗ホスティング会社 www.ipage.com は、Web サイトをリニュ...

バイトダンスが「今日頭条百科」を立ち上げ、検索事業が百度の領域に進出

「滬東百科事典」はかつて「世界最大の中国語百科事典」と自称していたが、「百度百科事典」の規模には達し...

vmiss: 香港の格安 VPS、年間 10 ドルから、1G メモリ/1 コア/10gSSD/1T トラフィック/500M 帯域幅、Netflix/Chatgpt のブロック解除

格安VPSサービスに特化したvmissは、最近、格安香港VPSに新しい国際回線を追加しました。より正...