技術入門
OpenStack Tackerによるネットワーク仮想化基盤システムの研究開発
NIC ネットワーク制御ソフトウェアプロジェクト
小川 泰文(おがわ やすふみ)
#OSS#OpenStack Tacker#NFV
2024/7/31
はじめに
NIC ネットワーク制御ソフトウェアプロジェクトの小川です。所属部署の名前の通り、私たちは通信インフラを支えるためのソフトウェア基盤技術の研究開発に取り組んでいます。
近年はオープンソースソフトウェア(OSS)をベースとした開発が主流となりつつあり、皆さんが普段利用する通信サービスにも多く利用されています。仮想化技術によるネットワーク装置のソフトウェア化はその中核であり、私たちはIOWNを構成する様々なアプリケーションを対象に、大規模なネットワークにおいてこれらのソフトウェアを支える仮想化基盤を制御するコントローラ機能の開発を行っています。
私自身も以下に紹介するOpenStack Tackerというソフトウェアプロジェクトのリーダー(Project Team Leader、略してPTL)としてOSSコミュニティに参加しています。
OSSを用いたネットワーク基盤の開発
私たちはOpenStackというクラウド基盤ソフトウェアをベースに、仮想化ネットワークを制御するためのTackerというソフトウェアを開発しています。実はTackerはNTT研究所が始めた取り組みではなく、世界各国の開発者が集まるコミュニティに私たちも参加し、NTTだけでは実現が難しい大規模かつ高度なソフトウェアを提供すべく取り組んでいます。またTackerだけではなく、OpenStackやそれに関連する様々なソフトウェアにも視野を広げ、時には我々の成果を提供することでOSSの機能拡充および独自技術の確立を両立させることを目指しつつ開発を行っています。
一般的にOSSに対して新たに機能を追加するためには、まずコミュニティへ提案し合意を得る必要があります。OpenStackでも同様にProject Team Gathering(PTG)と呼ばれる会議にて開発項目を決定するのですが、世界各地の開発者が集いPTLを中心として数日間の議論を行います。近年はリモート開催が中心ですが、我々Tackerチームでも通信ソフトウェアのエキスパートが中心となり、NFVの標準化技術の動向や将来的なトレンドを踏まえつつTacker開発の方向性や備えるべき機能などを議論します。またOpenStackの開発プロセスは全てオープンであり、かつ高度に自動化されています。例えばソースコードはgit*3をベースとした共有システム上で管理され、またコードへの変更はzuul*5と呼ばれるCI/CD*4ツールを用いて厳重に検証されます。これらのシステムは全てOpenStackコミュニティが自前で運用しており、インフラチームが中心となって管理しています。
OpenStackはzuul*5などの周辺ツールも含め数多くの企業で採用されており、1年に一度開催されるOpenInfra Summitにおいて世界中の開発者やユーザーが集まり最新の開発トピックや利用事例などが話し合われます。このイベントには数千人が参加し、私たちもこれまでPTGやSummitに参加し提案や発表を行っておりますが、OSSコミュニティならではの企業間の垣根をこえた交流を通して様々なフィードバックや新たな研究開発のアイデアを得るとともにOpenStackの発展にも寄与するなど活動しています。
OSS開発に取り組む意義については是非こちらの記事(https://www.rd.ntt/nic/article/0003.html)(1)もご覧ください。
ネットワーク基盤ソフトウェア
世の中にはOpenStackの他に、Kubernetesなどいくつものクラウド基盤ソフトウェアが存在しますが、これらはNTTが運用するような大規模ネットワークを想定して設計されたものではありません。このためTackerと同様にこれらの基盤ソフトウェアを大規模ネットワーク向けに活用するための取り組みがいくつも行われています。その中でTackerはETSI*2 NFV標準と呼ばれる世界の大手通信会社らにより定められた仕様に準拠し、かつOpenStackを含む複数のクラウド基盤と組み合わせて運用ができるという特徴を持ちます。
ネットワーク基盤ソフトウェアにおいては、高いレベルでの信頼性や可用性と言った要件が求められます。ネットワークサービスを提供するアプリケーション(VNF*1と呼ばれます)は常に監視され、異常があった場合には速やかに復旧されなければなりません。TackerではETSI*2標準仕様に従い、VNF*1の配置から監視、停止までの全てを行うよう設計・実装されており、例えば局所的な災害などに対しても耐障害性を有しつつシステム全体を安定的に稼働させ、またシステムの一部において負荷が過大となった場合には処理能力を増強(スケールアウト)する事でいわゆる輻輳状態を回避する事ができます。
最後に
私の所属するネットワーク制御ソフトウェアプロジェクトでは、歴史あるNTTの通信インフラの研究開発も踏襲しながら最先端のソフトウェア開発を進めています。またOpenStackやKubernetesといった基盤制御ソフトウェアだけでなく、他にもカーネルやCPUなどデバイスの深い領域にまで踏み込みネットワークの利便性を高めるための研究開発に取り組むメンバーも多数在籍していますので、次回以降はこれらの内容についても紹介させていただきます。
脚注(用語解説)
*1 VNF(Virtual Network Function): ロードバランサーなどのネットワーク機器をソフトウェア(仮想マシン)として実装したもの。
*2 ETSI: 欧州電気通信標準化機構 (ETSI: European Telecommunications Standards Institute)。
*3 git: 複数の開発者がソースコードを同時並行で変更することを可能とする分散バージョン管理システムの一種。
*4 CI/CD: ソフトウェアの品質を保証し開発を円滑にするための手法であり、ソフトウェアに変更があるたびにテストを行い、提供可能にする。正式には継続的インテグレーション&継続的デリバリー(Continuous Integration and Continuous Delivery)。
*5 zuul: gitと連動してソースコードの変更を管理・検証するためのCI/CDツール。
参考文献
関連するプロジェクト
プロジェクト一覧へ採用情報
採用情報
