執筆者: Yousef Khalidi (CVP, Azure Networking)
このポストは、3 月 8 日に投稿された SONiC: The networking switch software that powers the Microsoft Global Cloud の翻訳です。
マイクロソフトは、世界最大規模のクラウドの運用を通じて、パフォーマンス、可用性、安全性に優れたグローバル ネットワークの構築や管理に関するさまざまな知見を得ています。これまでの経験から、数百のデータセンターを運用し、数万のスイッチを使用する場合、以下の要件を満たす必要があることを学びました。
- ネットワークの各層で最高レベルのスイッチ ハードウェアを使用すること
- エンド ユーザーに影響を与えることなく新機能をデプロイすること
- 更新プログラムのロールアウトは、全体的な安全性と信頼性を確保しながら、数週間ではなく数時間で完了させること
- クラウド規模の詳細なテレメトリと、完全に自動化された障害対策を活用すること
- ソフトウェア定義ネットワーク ソフトウェアを有効化し、統一された構造によってネットワーク内のすべてのハードウェア要素を容易に制御できるようにすることで、重複を排除し、障害を減らすこと
これらの要件に対応するために、マイクロソフトはネットワーク スイッチの操作や管理を飛躍的に前進させる Software for Open Networking in the Cloud (SONiC) を開発しました。マイクロソフトはこのイノベーションをコミュニティに向けてオープン ソース化し、GitHub 上の SONiC リポジトリ (英語) で公開しました。SONiC は独自に拡張可能なプラットフォームであり、成長を続ける大規模なハードウェアおよびソフトウェアのパートナー エコシステムから、複数のスイッチ プラットフォームや各種ソフトウェア コンポーネントが提供されています。
Switch Abstraction Interface (SAI) でハードウェアのイノベーションを加速
SONiC は、標準化された API を定義する Switch Abstraction Interface (SAI、英語) に基づいて構築されています。ネットワーク ハードウェア ベンダーは、SAI を利用することで、革新的な高速ハードウェア プラットフォームを開発すると共に、ハードウェア プラットフォーム間で ASIC (特定用途向け集積回路) へのプログラミング インターフェイスの一貫性を確保することができます。マイクロソフトは、2015 年に SAI をオープン ソース化しました。このアプローチにより、プロセッサ、CPU、電源、ポート密度、光ファイバー、スピード面の急速なイノベーションを活用しながら、複数のプラットフォームに対応する単一の統合ソフトウェア ソリューションに投資を集中することができます。
図 1. SONiC: 投資を集中してハードウェアのイノベーションを促進
コンテナーを利用したモジュール設計でソフトウェアの進化を加速
SONiC は、モノリシックなスイッチ ソフトウェアを複数のコンテナー化された (英語) コンポーネントに分割した初のソリューションです。SONiC を使用すると、ダウンタイムを発生させずに詳細な障害復旧やインサービス アップグレードを実行できます。これを実現するうえでは、Switch State Service (SWSS、英語) を併用しました。このサービスは、オープン ソースのキー値ストアを利用してすべてのスイッチの状態の要件を管理し、スイッチを目標とする状態に移行させるものです。バグを修正するためにスイッチのイメージ全体を交換するのではなく、不具合のあるコンテナーのみを新しいコード (Border Gateway Protocol (BGP) などのプロトコルを含む) にアップグレードできます。このとき、データ プレーンでダウンタイムは発生しません。この機能は、SONiC プラットフォームのサービス性やスケーラビリティを実現するために不可欠な要素です。
コンテナー化は、SONiC の非常に優れた拡張性を実現するうえでも役立っています。SONiC は、基本的にはクラウド ネットワークのシナリオを対象に設計されており、シンプルさと大規模での管理が最優先事項です。オペレーターは、サードパーティ、独自開発、オープン ソースのソフトウェアといった新しいコンポーネントを最小限の労力で接続することで、特定のシナリオに合わせて SONiC をカスタマイズできます。
図 2. SONiC: プラグ アンド プレイ方式で拡張可能
大規模ネットワークを管理するうえでは、監視機能と診断機能も重要です。マイクロソフトは、障害の早期検出、障害の関連付け、オペレーターによる操作を必要としない自動復旧メカニズムなどの分野で継続的にイノベーションを進めています。Netbouncer (英語) や Everflow (英語) など、長年にわたる運用経験の集大成であるこれらのイノベーションは、すべて SONiC で使用することができます。
急速に成長するエコシステム
昨年 1 年間、業界内で広く SONiC と SAI のサポートが進められました。現在では、以下のような大手ネットワーク チップ ベンダーの大半が ASIC の主力製品で SAI をサポートしています。
- Barefoot Networks (英語): Tofino
- Broadcom Limited (英語): Trident、Tomahawk
- Cavium (英語): XPliant
- Centec Networks (英語): Goldengate
- Mellanox Technologies (英語): Spectrum
- Marvell Technology Group Ltd. (英語): Prestera
- Nephos Inc (英語): Taurus
また、SAI の各リリースに新しい拡張機能や高度な機能を追加するコミュニティの動きも活発です。
- Broadcom、Marvell、Barefoot とマイクロソフトは、ASIC の詳細な可視性や強力な分析機能を実現するために、SAI の高度な監視機能やテレメトリの開発に取り組んでいます。
- Mellanox、Cavium、Dell、Centec は、SAI へのプロトコル発表に貢献しています。MPLS、Enhanced ACL モデル、Bridge モデル、L2/L3 マルチキャスト、セグメント ルーティング、802.1BR など、プロトコルのサポート強化や大規模ネットワーク シナリオへの対応を進めています。
- Dell と Metaswitch は、SAI の耐障害性とパフォーマンス向上のために、L3 Fast Reroute や BFD の提案を追加しています。
- Mellanox と Broadcom が推進するパイプライン モデルや、Dell が推進するマルチ NPU により、SAI や SAI に基づいて構築されたネットワーク スタックを適用できるインフラストラクチャが拡充されます。
Open Compute Project U.S. Summit 2017 では、複数のスイッチ ハードウェア企業の 100 ギガビット スイッチのデモを行いました。SONiC は、各社の最新かつ最速の SKU で利用可能で、以下のプラットフォームでサポートされています。
- Arista Networks (英語): 7050、7060 シリーズ
- Centec Networks: E580、E582 シリーズ
- Dell Inc: S6000 ON、S6100-ON、Z9100-ON シリーズ
- Edge-core Networks (英語): AS7512 シリーズ、Wedge-100b
- Facebook: Wedge-100
- Ingrasys Technology Inc. (英語): S9100 シリーズ
- Marvell Technology Group Ltd.: RD-BC3-4825G6CG-A4、RD-ARM-48XG6CG-A4 シリーズ
- Mellanox Technologies: SN2700 シリーズ
SONiC を使用することで、クラウド コミュニティは最も優れたソリューションを自由に選択できるようになりました。以下のように多数のパートナーがこのエコシステムに参入しています。
- Arista は、EOS BGP など、SONiC を使用して実行されるコンテナー化された EOS コンポーネントを提供しています。これにより、SONiC コミュニティは、Arista が提供する多様な EOS ソフトウェア スイートに容易にアクセスできます。
- Canonical は、Ubuntu 用のスナップとして SONiC を利用できるようにしました。これにより、MAAS を使用してスイッチに SONiC をデプロイしたり、サーバーのデプロイに SONiC を使用したりできるようになりました。ネットワークおよびサーバーのデプロイの統合により、オペレーターの俊敏性が大幅に向上します。
- Docker は、SONiC コンテナーの管理に Swarm を利用できるようにしました。Swarm では、シンプルな宣言型サービス モデルを使用することにより、SONiC を大規模での管理および更新できます。
- Mellanox は、Spectrum ASIC のハードウェア ベースのパケット生成機能を実現するために SONiC を使用しました。これは、診断とトラブルシューティングに役立つ需要の高い機能です。
マイクロソフトは、コミュニティやパートナー エコシステムとの協力により、現在および将来のネットワークの変革を目指して取り組んでいます。
SONiC は GitHub で完全にオープン ソース化 (英語) されており、業界内の協力企業、研究者、学生、イノベーターの皆様にご利用いただけます。SONiC で採用されているコンテナー化のアプローチとソフトウェア シミュレーション ツールを利用することで、世界最大規模を誇るクラウド プラットフォームである Microsoft Azure で使用されているスイッチ ソフトウェアを体験することができます。ぜひ、膨大な数のユーザーにとって役立つコンポーネントの開発にご協力ください。SONiC はクラウド コミュニティ全体にメリットをもたらすものであり、マイクロソフトは、このプラットフォームを支えるパートナーの動向がさらに活発化していることに大いに期待しています。
追加情報
以下はこのブログ シリーズの別の記事です。ぜひ併せてご覧ください。