CTC 教育サービス
[IT研修]注目キーワード OpenStack OpenFlow/SDN 情報セキュリティ Python システムトラブルシュート
今回は、2017年に公開された論文「Taking the Edge off with Espresso: Scale, Reliability and Programmability for Global Internet Peering」をもとにして、Googleのデータセンターとインターネットの相互接続を担うネットワークシステム「Espresso」を紹介します。
一般にデータセンターネットワークとインターネットの相互接続では、BGPルーターを介して、ISP(Internet Service Provider)が提供するインターネット回線との相互接続が行われます。Espressoは、データセンター側のBGPルーターの機能をソフトウェアで実装した仕組みを各接続拠点に配置し、これらをグローバルなコントローラー(Global TE Controller)から制御することで、複数のISPに対するトラフィックを世界規模で最適化する仕組みを提供します。
本連載の第17回「SDNでグローバルな経路最適化を実現するB4ネットワーク」では、Googleのグローバルネットワークの構成を紹介しました(図1)。
図1 Googleのグローバルネットワーク(論文より抜粋)
この中で、インターネット(ISP)との相互接続を担う「B2ネットワーク」では、他のネットワークとの相互接続性を確保するために、一般的なベンダー製品のネットワーク機器が使用されていると説明しました。しかしながら、2017年に発表された冒頭の論文では、B2ネットワークにおいても、Googleの独自技術の導入が実験的に進められており、現在では、2割以上のトラフィックがこの新しい仕組みで処理されていると説明されています。この新しい仕組みが「Espresso」と呼ばれるネットワークシステムになります。
先に触れた、一般的なBGPルーターによる相互接続の場合、BGPルーターの専用ハードウェアにより、次のような処理が実施されます(図2)。
図2 BGPルーターによるインターネット接続
しかしながら、これらはそれぞれに独立した機能であり、必ずしも1つのハードウェアで実装する必要はありません。Espressoでは、これらの機能を複数のハードウェア/ソフトウェアで分散処理するようになっており、トラフィックの増加に対して処理をスケールアウトすることができます。さらに、個々の機能を独自のソフトウェアで実装しているため、一般的な機器では対応できない複雑なフィルタリング処理、あるいは、パケット転送経路の最適化が可能になります。次回以降に説明する予定ですが、アプリケーションごとに個別の転送経路を設定する、あるいは、複数の接続拠点のトラフィックをモニタリングして、トラフィックを流すISPを動的に選択するといった処理が実現されています。
先ほどの図2では、データセンターとエンドユーザーの間には単一のISPが存在しますが、トランジットと呼ばれる複数のISPを経由する場合もあります。そのため、データセンターから見て、どのISPに向けてパケットを送信するかによって経由するトランジットが変わり、その結果、エンドユーザーにパケットが到着するまでの遅延時間が変わります。さらに、Googleの場合は、世界各地に複数の接続拠点がありますので、どの接続拠点からパケットを送信するかという選択も必要となります。Espressoでは、このようなグローバルな経路選択をソフトウェアで制御する、SDN(Software Defined Network)の機能が実現されているのです。
前述のように、Espressoでは、BGPルーターの機能を分割して、複数のハードウェア/ソフトウェアで分散処理する仕組みが実装されています。まず、実際の通信処理を行うコンポーネントには次のようなものがあります。
そして、これらを動的に制御するコントローラーとして、次のようなものがあります。
たとえば、図3は、BGP SpeakerがBGPプロトコルでISP側のBGPルーターと通信する様子を示します。ISPからのパケットを受信したPeering Fabricは、BGPパケットについては、GREトンネルを用いて、バックエンドのBGP Speakerに転送するように、Peering Fabric Controllerによってプログラミングされているのです。BGP Speakerが収集した経路情報は、Local Controllerに集められた後、実際のパケットの経路制御に利用されます。
図3 Espressoを構成するコンポーネント(論文より抜粋)
今回は、論文「Taking the Edge off with Espresso: Scale, Reliability and Programmability for Global Internet Peering」をもとにして、B2ネットワークのグローバルな経路制御を実現する「Espresso」の概要を紹介しました。図3では、BGP SpeakerがBGPプロトコルで経路情報を収集する様子を示しましたが、次回は、この後、実際のアプリケーションのパケットがどのような経路で処理されていくのかを説明していきます。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
[IT研修]注目キーワード OpenStack OpenFlow/SDN 情報セキュリティ Python システムトラブルシュート