DigitalOceanのネットワークエンジニアリングチームは、Open vSwitch(OVS)やその他のツールを使用して、クラウド内の仮想マシンへのトラフィックをレイヤー2からレイヤー3ベースのルーティングモデルに切り替える取り組みについて書いた。
インフラストラクチャが世界中に広がっているDigitalOceanは、パブリックインターネットトラフィックを仮想マシンに転送するためのレイヤー2(L2)ベースのルーティングメカニズムに対して、パフォーマンス、信頼性、スケーラビリティの課題に直面した。彼らは、ラベルスイッチングとボーダーゲートウェイプロトコル(BGP)を利用してこれらを軽減し、レイヤー3(L3)ベースのClosデータセンタートポロジに切り替えた。
各仮想マシン(VM)(DigitalOceanの用語ではDropletとも呼ばれる)には、パブリックインターネットからルーティング可能なパブリックIPv4アドレスがある。ネットワークパケットは、Open vSwitchを介してVMにルーティングされる。Open vSwitchは仮想ネットワークスイッチの実装である。利用可能なIPv4アドレスの範囲が数年前に不足し始めたため、IPを再利用できることが重要であるとCarl BaldwinとJacob CooperはOVSとOVN2019会議の講演で述べている。DigitalOceanでの初期設定では、デプロイが簡単なため、L2ルーティングを使用していた。データセンター内のほとんどのコンポーネントは、箱から出すとすぐに通信できる。VMはL2ネットワーク上で直接ブリッジされた。この主な課題は、インフラストラクチャの成長に伴うスケーラビリティであった。L2を介したルーティングとは、アドレス解決プロトコル(ARP)を使用して他のマシンを見つけることである。ARPはブロードキャストプロトコルであるため、ネットワークを溢れされる可能性のある大量のトラフィックを生成する。また、チームはルーティングが変更されるたびにハードウェア構成が更新されるのを避け、障害による影響を最小限に抑えたいと考えていた。これらは両方とも、古いL2ベースのセットアップでは問題であった。
これに対する解決策は、OVSを使用したL3ルーティングを使用することであった。InfoQは、DigitalOceanのネットワーキングスタッフエンジニアであるArmando Migliaccioに連絡を取り、移行について詳しく調べた。
Dropletsのゲートウェイはコアスイッチ上にある。このような問題に対する一般的な答えは、「ネットワークを仮想化する」ことであると、とMigliaccioは言っている。つまり、ソフトウェア定義ネットワーク(SDN)ソリューションを使用することである。また、彼はターンキーソリューションは彼らの要件に適合しなかったであろうと付け加えた。トンネリングなどの一般的なソリューションには高いパフォーマンスオーバーヘッドがあり、すでにデプロイされているほとんどのネットワークインターフェイスカードにハードウェアサポートがないため、VXLANは現実的ではなかった。
画像提供:DigitalOcean(許可を得て使用)
チームは最終的に、ラベルスイッチング(ネクストホップアドレスではなくショートパスラベルに基づくルーティング技術)とBGP(インターネット全体で広く使用されているL3ルーティングプロトコル)の組み合わせに落ち着いた。新しいトポロジはClosネットワークであり、他の組織も過去に同様の変更を行っている。会議の講演によると、チームは大規模なデータセンターでBGPを使用して課題を回避するための自動化を開発する必要があった。Migliaccio氏は、「ネットワークの自動化については、とりわけAnsibleとSaltに大きく依存している」と述べている。GoBGP、BIRD、OVSが主要コンポーネントを形成した。Migliaccioは、OpenBGPDのような類似のソフトウェアと比較してGoBGPを選択する背景にある考慮事項について説明している。
GoBGPを選択したのは、主に、dropletsイベント(つまり、作成、破棄など)を追跡するHVで実行される特注のコンポーネントにサービス/ライブラリを埋め込む必要があるためです。このコンポーネントはGolangで記述されています。事前に知識を持っていたため、Golangライブラリを選択することは理にかなっています。これにより、インテグレーション作業が簡素化されます。
スイッチで既存のラベルスイッチング機能を活用するために、彼らは「各ハイパーバイザーに対してラベルスイッチパス」を作成し、「ピュアIPの代わりにそれらを介してパブリックトラフィックをルーティングした」。古いルーティングメカニズムから新しいルーティングメカニズムへの移行は、顧客のダウンタイムなしにシームレスである必要があった。これを解決するために、L2とL3の両方でOVSを使用してパラレルデータパスを追加し、「ハイパーバイザーからDropletsを退避」することなくトラフィックを再ルーティングできるようにした。また、さまざまなチーム(エンジニアリングと非エンジニアリングの両方)に「かなりの量の部門横断的なコミュニケーション」が必要であるとMigliaccioは主張し、移行について技術的ではない詳細を説明している。
その大部分は、TPMチーム(技術プロジェクト管理)の助けを借りて対処された。顧客とのコミュニケーションについては、ロールバックなどによる予期しない障害に対処するために、各地域でのデプロイプロセスを複数のステップに分割しました。そして、各ステップで、ワークロードに影響を与える可能性のある顧客に自動のコミュニケーションを送信しました。デプロイした各地域で、いくつかの問題が発生し、一部の顧客に対して一時的なネットワークのダウンタイムがありました。しかし、全体として、取り組みの規模と複雑さを考えると、結果について圧倒的にポジティブに感じています。
残りのデータセンターにおけるL3への移行は進行中であり、2020年まで続くであろう。