Rivermax™ – 放送業界のためのストリーミングライブラリ
現在のSDIベースの放送設備は、FPGAなど、ハードウェアを主体として設計構成されたものがその多くを占めていますが、地上デジタル放送への移行以降、HDR、4K、8Kなど、従来とは異なる時間軸で新たな仕様の導入がなされていることにお気づきかと思います。また、「放送のIP化」は、まだ現在進行形の話であり、今まで以上に短いスパンで、新たな仕様や勧告といったものが登場することが予想されています。その様な状況において設備の主要部分をハードウェアですべて作り込んでしまうと装置の陳腐化がより速い速度で進行していくことになります。その一方で「ムーアの法則」に沿って、最近のCPUの性能は格段に向上しており、従来ハードウェアを主体とした設計でしかありえなかったような機器をソフトウェアを主体とした設計で置き換えることを可能にしています。加えて、「放送のIP化」においては、様々なものが、SMPTE、AMWA など仕様を策定する団体により、仕様化、あるいは勧告といった形で標準化されつつあり、より既製品のハードウェアの活用をしやすくなる環境を構成しつつあります。
それ故に、「放送のIP化」において、メラノックスが提唱しているのは、放送設備の主要な部分をサーバ上で動作するソフトウェアとして作り込み、タイミングにクリティカルな部分のみを「上手に」ハードウェアを活用するソフトウェア主体のソリューションとなります。このような形にすることにより、新たな仕様が出てきたり、あるいは、仕様の変更などが生じてもソフトウェアを更新することでその仕様に追従する柔軟性を持つことを可能とし、また、時間軸にクリティカルな部分をハードウェアで担うことで信頼性を担保致します。またソフトウェア化によりJT-NMのロードマップにあるクラウド環境での動作も視野に入ってきます。
このメラノックスの提唱を体現するライブラリが、放送業界のためのストリーミングライブラリである、「Rivermax」であり、ConnectX®-5のカードと組み合わせ同カードのハードウェア機能を上手に活用することで、以下の3つの機能を実現します。
■ パケットペーシング(Packet Pacing)
データセンターでは、持ちうる帯域をすべて活用して出来るだけ高速にデータを送り届けることが望まれます。しかしながら、映像のストリーミングでは、画角・映像深度などより確定するある一定量のデータをネットワークのすべての帯域を使わずに一定のタイミングで送り届け続けることが求められます。このための技術がパケットペーシングであり SMPTE では、2110-21として規定されています。ConnectX-5 カードでは、このパケットペーシングをハードウェアで実現しており、Riveremaxと 組み合わせることでSMPTE 2110-21に準拠する形のパケットペーシング機能を提供致します。
■ カーネル・バイパス(Kernel Bypass)
従来の(OSが提供する、)ネットワークのプロトコル・スタックを使用せず、ソケット・ライブラリの形でRivermaxが直接 ConnectX-5カードのハードウェアに直接データを送り込むことでプロトコル・スタックが内包するカーネルオーバーヘッドを排除します。また、すべてをバイパスする「カーネル・バイパス」に加え、ARPのようにアプリケーションが、高速化されていないデータトラフィックをカーネルに転送することを選択できる、「セレクティブ・バイパス」も提供可能です。
カーネルをバイパスすることで、CPU内の各リングを移動するためのコンテキストスイッチングによるCPUオーバーヘッドとスタック内でのメモリ間コピーを削減します。メモリ間と言えどコピーは、物理的にデータ転送を伴う動作ですので、これは遅延時間の増加に直結する話となります。これらによりストリーミング性能の向上が図られます。具体的には、遅延時間の短縮とスループットの向上が得られ、そしてCPU使用率を削減致します。
■ パケットアグリゲーション
Rivermaxは、以下のようにConnectX-5のハードウェア機能を活用し、パケット処理をCPUからオフロードします。これらの処理によりCPUの使用率を削減いたします。
■ 受信時
ネットワークを流れる映像パケットには、RTP(Real Time Protocol)ヘッダーがつけられ伝送されてきます。ConnectX-5アダプタカードで受信したRTPヘッダーは、別のバッファーに分離され、映像パケットは、メモリ上にフレーム/ラインの形で完全に整形された形で格納されます。フレームバッファーがいっぱいになると、アプリケーション側に通知されます。
■ 送出時
アプリケーションからフレーム/ラインの映像データの塊として渡されるデータをSMPTE ST 2110-21 に準拠したパケットペーシングで、転送レートと送信タイミングを制御しながらの同期送信を行います。最初のパケットは、A/V信号位相を一意に確定する、SMPTE 2059-1で規定されているアライメントポイント(SMPTE EPOCH)に同期し、またすべてのパケットはSMPTE ST2110 -21仕様のパケットペーシングに準拠した形で、ハードウェアで送出されます。
以下のチャートは、通常のプロトコルスタックを活用しソフトウェアベースでのパケットペーシングとカーネルバイパス機能でConnectX-5のハードウェアを活用してパケットペーシングの比較です。
画角や映像深度が増え、送るべき映像データの量が増えてくると、大きく差が出てきています。20.5Gp/sのスループットが求められる、8K UHD (7680 x 4320 30fps (4:2:2 12 bpp))のビデオストリームにおいて、ソフトウェアだけのソリューションでは、CPU使用率が100%と頭打ちになり、ストリームの提供に赤信号が点灯しています。その一方で、Rivermaxでは、そのストリームの約8倍となる、8K UHD(7680 x 4320 50fps (4:4:4 12bps))のビデオストリームにおいても、 CPU使用率 約80%で問題なくストリーミングを実現しています。
要求が低い帯域幅であれば、パケットページング自体は、ソフトウェアだけでも実現可能なソリューションです。しかしながら、上記のCPUの頭打ちに加え、4K映像送出のためのIPG(Inter Packet Gap) は、470ナノ秒程度の短いタイミングになります。それゆえに、メラノックスのRivermaxでは、ConnectX-5 のハードウェア機能を活用することで、解像度あるいは、CPU性能に依存しない、パケットペーシングを実現しています。
さて、ここまではRivermax+ConnectX-5の概要をご案内してまいりました、ここからは、視点を変え「放送業界のための」と記載した意味はどこにあるのかについてご案内させていただきます。
■ 時刻同期
時刻同期というと先ずは、PTP、SMPTE2059-2(IEEE1588:2015)の話が出てきますが、これはPTPのグランドマスターに対しての時刻同期であり、Rivermaxでは、SMPTE2059-2だけではなく、最初の送信パケットを、SMPTE2059-1:2005で定義されているSMPTE Epochに揃えることで、任意の時刻でのA/V信号位相を一意に確定可能となっています。これにより従来のSDIでのタイムコードとの親和性を高めています。また、ConnectX-5 は、ポートレベルで、ハードウェアタイムスタンプ機能に対応しており、OSレベルでハードウェアPTPに対応しているLinux環境では、ConnectX-5 カード上のPTPハードウェアクロックをタイムシステムクロックに同期することが可能となります。
■ SMPTE 2110
SMPTE2110 では、ST2022 とは異なり、ビデオ(ST2110-20)、音声(ST 2110-30)、Ancillary(ST 2110-40)が、各()内の仕様に基づき、それぞれ個別のパケットで、ST2110-10に準拠したタイミングで送られます。すでに上記で記載している通り、Rivermaxでの配信においても、これらの仕様に準拠しています。
■ 使い勝手の良さ
Rivermaxは、Windows環境(Windows Server 2012R2 、2016、Windows 10)とLinux環境(Ubuntu 16.04 & 18.04, Centos 7.5 及び RH7.5)に対応しています。またクラウドReady となっており、SR-IOVに対応するConnectX-5との組み合わせて仮想化環境での動作に対応し、VMware 社ESXi上のゲストOS環境で動作致します。これにより、サーバを増やすことで、スケーラブルにストリーミング数の拡大を可能とします。「Mellanox Rivermax FAQ」によれば、現在はまだアルファレベルとのことですが、準仮想化環境のDockerコンテナ上での動作も今後の視野に入っている模様です。
現時点、Windows環境ではOSとしてのハードウェアPTPへの対応がなされていません。このため、Windowsで動作するアプリを活用しストリーミングを行おうとすると、時刻同期をどのように実現するのかといった問題を事前に解決する必要が出てきます。Rivermaxでは、クラウド上にゲストOSとしてWindows 環境を乗せ、また別のゲストOSとしてLinux環境を立ち上げ、こちらで、ハードウェアPTPによる時刻同期及びシステムクロックとの同期を行うことでこの問題を解決することを可能としています。
蛇足となりますが既に、Inter BEE 2018のメラノックスブースにおいて、VMware 社ESXi の仮想環境上にWindows Server とLinuxの2つのゲストOSを乗せ(時刻同期を行いながら、映像配信を行う)この環境のデモを実施しています。
■ 性能
以下のチャートで表すように、Linux及びWindowsいづれの環境においても、カーネルを活用する場合との比較で大きな違いが生じています。
1つのCPUコアでの比較
- Rivermaxは、SMPTE ST 2110-21に準拠したパケットペーシングで送信します。
- メモ:カーネルには特別な最適化は行っていません。
- メモ:カーネルには特別な最適化を行っていません。
■ 導入事例
Rivermax は、既にGrass Valley社を始めとするいくつかのM&E顧客において、導入が進んでいます。
■ 最後に
米ラスベガスで開催される世界最大のM&Eイベントである、NAB 2019のIP SHOWCASEにおいて実施された「JT-NM TESTED PROGRAM」において、Rivermaxは、JT-NM Tested SMPTE2110 の認証を得ています。
Rivermax は、メラノックスのConnectX-5(以降の)カードに紐づくライセンスとして提供されます。製品として、既にリリース済みとなっており、また、ご要望により期間限定の評価用ライセンスも提供可能です。
Rivermax 製品ページ:https://www.servants.co.jp/product/software/1978/
Rivermax FAQ:http://www.mellanox.com/related-docs/prod_software/Rivermax_FAQ.pdf
※ 2020年12月 追記
Rivermaxは、まだまだ進化をしています。
Rivermax のエッセンスについては、上記の記載でカバーされていると考えますが、ロードマップを含む最新のRivermaxのアップデートについては、2021年2月26日まで公開中の Inter BEE 2020 ONLINE サイト にログインし、弊社ページのデモ・プレゼン動画項に掲載の「NVIDIA RIVERMAX UPDATE」ビデオをご覧ください。(本ビデオは、ログイン後に表示されるエリアに掲載されています。)
また、NVIDIA DEVELOPER サイトにNVIDIA Mellanox Rivermax SDK ページが新設されています。
本ページに記載されている会社名、会社ロゴ、商品名は、各社の商標または登録商標です。本ページに記載されているシステム名、製品名などには必ずしも商標表示(TM、®)を付記していません。また既にMellanox社は、NVIDIA 社のNETWORKING部門となっていますが、本ブログ記事では、「追記部分」を除きブログ記載当時の記述のままとさせていただきます。