2. Introduction

Lagopusプロジェクトは,2013年よりNTT研究所において,汎用サーバで動作し,高速かつ大容量のフロー制御が求められるネットワークドメインや高性能なパケット処理が求められる仮想化環境において活用可能であり,SDN/OpenFlow 1.3に対応した高速なソフトウエアスイッチの開発を目指しスタートした. 柔軟なパケット処理やネットワークI/Oをユーザースペースで実現するDPDKに着目し,Lagopusでは近年の汎用サーバがもつマルチコアCPUにむけての最適化や,高速なマルチレイヤに対応したフロー検索機構および,フローキャッシュ機構を備えている. LagopusではOpenFlow Switchの仕様を拡張し,特定のパケットに対してオーバーレイ・ネットワークを実現する複数Tunnelプロトコルのencapsulation, decapsulation処理が可能である.

現在のLagopusは異種ネットワークを接続可能なswitchやrouterのデータプレーンの機能は提供しているが,プロトコルやネットワーク制御処理はOpenFlow controllerの実装に依存している.当初,OpenFlow controller アプリケーションの増加を期待していたが,コントローラ開発にもネットワークに関する深い知識と運用経験が必要になるため,現在でもOpenFlow controller アプリケーションの種類や数は増えていない.

次期Lagopusでは,SD-WANへの適応,ユースケースの拡大およびオープンソースコミュニティの拡大を狙い,ルータに備えている標準的なプロトコル制御機能に加え,既存のNW上でオーバーレイ・ネットワークを実現するVxLANやGRE, 暗号化IPsecの終端機能にも対応するソフトウエアルータを目指す. これまでのOpenFlow Switchで開発した柔軟なフロー検索と処理をもつデータプレーンを活かしたうえで,様々なネットワーク制御系アプリやオーケストレーションと連携可能なようにLagopusを拡張する.

2.1. Design principles

Lagopusの設計や実装に関して,以下のデザインプリンシパルを採用することとした.

  • 拡張性を備えたモジュール型のアーキテクチャ
    • オープンソースやプロプラなネットワーク制御エージェントやネットワークOSとの柔軟な連携
    • 様々なプロトコルフォーマットやトンネルプロトコルに対し構成可能なデータプレーン
  • マイクロサービスアーキテクチャ
    • 各コンポーネントやモジュールを分離し可用性の向上
    • 他システムとの連携を促進
    • 各コンポーネントをAPIやRPCを通して制御
    • ネットワーク制御のためのフロー識別・転送処理機能とAPIの提供
  • 高い移植性
    • 各コンポーネントや・ライブラリを別な実装に交換可能
    • 新しいプロトコル制御やプロトコルフォーマットに対応可能
  • 高性能なパケット転送・処理能力の実現
    • マルチCPU,マルチコアCPUを活用
    • ハードウエアオフロード処理活用

2.2. Requirements

次期Lagopusで求められる主な機能は以下のとおり.

  • Ethernet Bridge機能
    • VLAN, static MAC登録
    • VRF
  • Layer 3機能
    • IPv4, IPv6
    • VRF
    • BGPによるルーチング制御
    • VRRP, ICMP
  • Tunnel終端機能
    • オーバーレイトンネル VxLAN, GRE, MPLS
    • 暗号化トンネル IPsec
  • フロー統計出力機能
    • SNMP
    • sFlow, nFlow
  • ユーザへのフロー制御APIと統計取得API
    • Flow-based API
    • スイッチ構成制御API