CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
今回からは、2018年に公開された論文「Andromeda: Performance, Isolation, and Velocity at Scale in Cloud Network Virtualization」を元にして、Google Cloud Platform(GCP)のVirtual Private Cloud(VPC)ネットワークを支える仮想ネットワーク基盤を紹介していきます。
GCPのネットワーク開発チームでは、「Andromeda」と呼ばれるこの仮想ネットワーク基盤を5年以上にわたって開発してきました。今回は、Andromedaの基本的な設計ポリシーを紹介したいと思います。
仮想マシンが稼働する物理ホスト上に仮想ネットワークを構成する方法の一つに、OpenFlowに対応したソフトウェアスイッチであるOpen vSwitchを利用した実装があります。Andromedaでは、独自にカスタマイズしたOpen vSwitchを用いて、「Hoverboard Model」と呼ばれる独自のアーキテクチャーを実装しています。これは、ネットワークフローごとに次の3種類のパスを使い分けるというもので、低レイテンシーが要求されるフローは可能な限りFast Pathで処理する一方、重要度の低いフローはHoverboard(外部のソフトウェアスイッチ)に転送することで、物理ホストの負荷を下げるという仕組みになります。
それぞれの詳細については、次回以降に説明することにして、まずは、このようなアーキテクチャーを採用した背景をまとめておきましょう。
冒頭の論文では、大規模なパブリッククラウドサービスに求められる次のような要求を満たすために、このようなハイブリッド型のアーキテクチャーを採用したと説明しています。
(1) プロジェクトごとに独立した仮想ネットワークを構成。論理的な機能だけではなく、性能面での独立性も確保した上で、ソフトウェアレイヤーのオーバーヘッドをできるだけ低減して、物理サーバーと同等の性能を目指す。
(2) 課金、DoS対策、モニタリング、ファイアウォールなど、ハイレベルな機能をサービスを停止せずに、継続的に追加・拡張していく。
(3) 障害の影響範囲を限定することで、グローバル規模でのネットワーク障害の発生を防止する。
(4) 仮想マシンのライブマイグレーションをサポートする。
(5) コントロールプレーンのスケーラビリティを確保して、仮想ネットワークの構成変更が大量に発生した場合でも、処理時間の遅延を回避する。
たとえば、(4)に関して言うと、Andromedaでは、グローバルな仮想ネットワークで接続されたクラスター間でのライブマイグレーションを実現しています。あるいは、(5)については、仮想マシンを仮想ネットワークに接続する際に必要となる、仮想ネットワークの構成処理の時間が(Andromedaの導入以前に比べて)中央値で551ミリ秒から184ミリ秒に改善されたというデータが掲載されています。特に99パーセンタイルの値で見ると、以前は3秒以上かかることもあったものが、現在では576ミリ秒におさえられており、性能の変動が少なくなっていることが読み取れます。
また、(1)に関しては、パケットの転送処理に必要となるCPU処理時間のデータが掲載されています(図1)。Andromedaは、これまでに数回のアップグレードが行われており、世代が進むにつれて、パケット処理がより効率化されていることがわかります。
図1 1バイトのパケット処理に必要なCPUサイクル(論文より抜粋)
今回は、2018年に公開された論文「Andromeda: Performance, Isolation, and Velocity at Scale in Cloud Network Virtualization」を元にして、GCPのVPCネットワークを支える仮想ネットワーク基盤であるAndromedaについて、基本的な設計ポリシーを紹介しました。次回からは、今回紹介した3種類のデータパス(Fast Path、Guest VM Coprocessor、Hoverboard)について、より具体的なアーキテクチャーを解説していきます。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes