コンテンツに移動
Google Cloud

公開論文から学ぶ Google のテクノロジー : パート 2:ネットワーク技術編

2023年9月7日
https://storage.googleapis.com/gweb-cloudblog-publish/images/part02.max-2600x2600.jpg
中井 悦司

ソリューションズ・アーキテクト, Google Cloud Japan

Google Cloud のサービスは、Google が長年に渡って構築してきたグローバルネットワーク、そして、世界各地のデータセンターによって提供されています。これは、Google 検索をはじめとするさまざまな Google のサービスを支えるインフラでもあり、その上では、Google 独自の技術を活用したさまざまなミドルウェアが稼働しています。

Google のエンジニアは、自分たちが開発した技術の詳細を論文として公開しており、これまでに公開された論文は、Google の研究チーム、Google Research の Web サイトにある Publication Database で検索できます。このブログシリーズでは、次の 4 つの分野に分けて、Google Cloud の技術に関連の深い論文を紹介していきます。

  • 分散処理基盤(コンテナ技術)とデータセンター

  • ネットワーク技術

  • データベース技術

  • 機械学習 / AI

このパート 2 では、ネットワーク技術に関連した主要な論文を紹介します。なお、それぞれの論文は、公開時点での技術情報を伝えるものですので、今現在、Google のデータセンターで使用されている技術とは異なる場合もあるので、その点は注意してください。

Google Cloud を支えるネットワーク技術

Google が管理するネットワークは、「Espresso makes Google cloud faster, more available and cost effective by extending SDN to the public internet」で説明されている、次の図のような階層構造になっています。

内側から順番に、データセンターネットワーク(Jupiter)、データセンター間ネットワーク(B4)、インターネットとの相互接続用ネットワーク(B2)の階層に分かれており、それぞれで用いられている技術が論文で解説されています。

データセンターネットワーク

Google のデータセンター内部では、多数のサーバーを相互接続するデータセンターネットワークとして、Google が独自開発した Jupiter と呼ばれるシステムが使用されています。Jupiter については、2015 年に公開された次の論文に解説があります。

この論文によると、Google では、2005 年ごろからネットワークスイッチの独自開発を進めており、Jupiter は第 5 世代の技術にあたります。Jupiter に至るまでの開発の歴史なども説明されており、新しい技術の開発に挑戦する Google のエンジニアの考え方などもうかがい知ることができます。

Jupiterでは、Closトポロジーとよばれるアーキテクチャーを採用しており、サーバー間を複数のネットワーク経路で接続することで、広い帯域幅を実現しています。図のようなラックを複数連結した最大構成では、1.3Pbps の総帯域を実現します。また、複数の経路をどのように使用するかという、経路の最適化を外部に用意したコントローラから制御する、SDN(Software Defined Network)の技術についても解説があります。

さらに、2022 年に公開された次の論文によると、現在では、光ケーブルを流れるネットワークパケットを光信号のままでスイッチングする、光スイッチ技術の導入も進められています。

データセンター間ネットワーク

世界各地にある Google のデータセンターを相互接続するための専用ネットワークが B4 です。これは、インターネットとは切り離された回線で、地理的に離れたデータセンター間で、大量のデータをレプリケーションするなどの目的で利用されます。B4 については、2013 年に公開されて次の論文に詳しい解説があります。

この論文の中では、特に、アプリケーションが要求する通信帯域を満たす様に、データセンター間の通信経路を自動的に最適化する「トラフィックエンジニアリング」の仕組みが解説されています。Jupiter と同様に、ソフトウェアによるアルゴリズムでネットワーク通信を最適化するという Google のエンジニアの考え方をうかがい知ることができます。次の図は、論文の中で、アルゴリズムの説明に使われている簡単な模式図です。

ここでは、FG1 と FG2 の 2 つのアプリケーションのグループがあり、FG1 は通信の優先度が高く、FG2 は通信の優先度が低いという想定です。まず、左の (a) では、FG1 は、データセンター A からデータセンター B に向かって、20G の帯域を要求しています。今の場合、AB 間の総帯域は 10G しかありませんので、データセンター C を経由した A → C → B という経路を追加することで、20G の帯域を確保しています。一方、FG2 は、データセンター A からデータセンター C に向かって、10G の帯域を要求していますが、優先度が低いため、A → D → C という経路の5G の帯域のみを使用します。その後、FG1 が要求する帯域が 10G に減少すると、FG1 と FG2 の通信経路は、右の (b) のように変化して、FG2 に対しても 10G の帯域が割り当てられます。

このように、複数のデータセンターを経由したグローバルな通信経路をアプリケーションの要求や優先度に応じて自動的に最適化するのが B4 の特徴であり、これにより、複雑な通信経路を効率的に使用することができます。論文の中では、最適化の効果を示すモニタリングデータなども紹介されており、ネットワーク技術に関わるエンジニアには、必読の論文と言えるかも知れません。

インターネットとの相互接続用ネットワーク

インターネットから Google のサービスにアクセスする際に用いられるネットワークが B2 です。B2 は、世界各地の POP(Edge Points of Presence)と呼ばれる拠点で ISP(Internet Service Provider)の回線と相互接続されており、エンドユーザーからのネットワークパケットは、POP で B2 に入った後、Google のデータセンターへと転送されていきます。

B2 は、Google の中で最も歴史の古いネットワークで、最初は、BGP ルーターなど、一般的なネットワーク機器を用いて構築されました。その後、独自技術を用いたシステムが導入されており、現在は、Espresso と呼ばれるソフトウェアベースのネットワーク技術が使用されています。Espresso については、2017 年に公開された次の論文に詳細な説明があります。

一般的な BGP ルーターには、「BGP プロトコルによる経路情報の交換(転送先 ISP の選択)」「IP アドレスに基づいたパケット転送処理」「ACL(アクセスコントロールリスト)によるパケットフィルタリング」などの役割がありますが、Espresso では、これらの機能を分散システムとして、サーバー上のソフトウェアで実装しており、膨大なトラフィックを複数のサーバーで並列に処理することができます。次は、論文に掲載された、Espresso のアーキテクチャーを示す図です。

B4 と同様に、トラフィックエンジニアリングの仕組みも導入されており、エンドユーザーからのパケットを受け取る POP の選択、あるいは、エンドユーザーに向けて送信するパケットの送出経路などをソフトウェアによるアルゴリズムで最適化しています。

その他の論文

Google のネットワーク技術に関連した論文は、その他にも沢山あります。例えば、2016 年に公開された次の論文では、Google のネットワークインフラの信頼性を高めるための取り組みと、障害事例の分析結果が公開されています。

Google のネットワークは、その構成をソフトウェアで管理する Software Defined Network(SDN)の技術が全面的に採用されていますが、その仕組みもまた、時代と共に変化しています。次の 2 つの論文は、2 つの異なる世代の SDN の仕組みを解説したものです。

あるいはまた、2018 年に公開された次の論文では、Google Cloud の Virtual Private Cloud(VPC)ネットワークを支える仮想ネットワーク技術が解説されています。

ネットワーク技術に関連した論文の数からも、Google のネットワーク技術に対する関わりの深さがうかがわれます。冒頭で紹介した Publication Database を見ると、膨大な数の論文に圧倒されるかも知れませんが、本ブログシリーズを参考にして、自分の興味にあった論文を見つけ出してください。Google Cloudをより深く理解して、より楽しく使いこなす、「一歩先を行くクラウドエンジニア」になるためのヒントがきっと発見できるでしょう。

投稿先