情報畑でつかまえてロゴ
本サイトは NTTテクノクロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

DPDKリリースノートを読み解く ~DPDK入門 第13回~

今回はDPDKリリースノートの読み方を解説します。

はじめに

こんにちは、NTTテクノクロスの山下です。私はフューチャーネットワーク事業部に所属しており、主にネットワークの高速化の分野で仕事をしております。 高速化の分野は直接ユーザに接しないことが多いのですが、様々なサービスを提供しています。 最近では、ネットワークの高速化技術を利用した開発やそれを利用した海外での実験サポートの業務をしています。~高速化技術とクラウド 第1回~でブログ連載もしています。今回は2021年末にリリースされたDPDK21.11を例にDPDKリリースノートの読み方を解説します。まずは、DPDKにおけるリリースサイクルについて解説します。

リリースサイクルについて

DPDK公式サイトのDPDK Stable Releases and Long Term Supportに詳しく記載されていますが、DPDKは年に数回リリースされます。

本ブログで題材にするDPDK21.11はLTS版にあたります。

LTSとはLong Term Supportの略語です。直訳すると「長期サポート」となりますがその名の通りDPDKリリースの中では相対的に長期的(基本は2年)なメンテナンスがなされます。
その間もバグFIXがサポートされるため、利用者は安心してDPDKを利用することができます。

DPDKのリリースサイクルについてはネットワーク高速化とクラウド第2回にも記載しております。

ちなみにDPDK公式サイト内のロードマップによると、2022年は3回リリースされるようです。

DPDKロードマップには今後DPDKに追加される予定の機能について記載があるためお時間があればご覧になると面白いですよ。

リリースノートの読み方

DPDK公式サイトにあるDPDKのリリースノートは以下のような構成となっています

  • New Features   新規機能
  • Removed Items  削除されたファイルや機能、サポートされなくなったデバイス等
  • API Changes   前述のAPIの変更
  • ABI Changes   前述のABIの変更
  • Tested Platforms リリース前に検証されたプラットフォーム

以下では、APIとABIについてDPDKサイトのABI Policyを基に以下の図を用いて解説します。

図1. APIとABI

APIとは

APIとはApplicaiton Programing Interfaceの略で、あるソフトウェアが提供する機能を外部から利用する際のインタフェースを意味します。APIにはRESTやソケットなど様々な形式がありますがDPDKにおいてはC言語の関数のことを示します。DPDKの1個1個の関数の追加や、引数の変更などをさしてAPI Changeと称しています。

ABIとは

ABIとはApplicaton Binary Interfacesの略語でバイナリレベルでの後方互換性を意識したインタフェースの集合を示します。Major ABI VersionはLTS版で定められたものが1年間は原則保証されます。

例:

function rte_foo()が存在したところに function rte_foo(int a)が追加されてもMajor ABI Changeにはなりません(理由:rte_foo()を利用していたアプリケーションはこの関数を利用がつづけられるため)。

ある時点でfunction rte_foo()が削除された場合にMajor ABI Change(より具体的にはABI Breakage)となります。この削除された関数を利用していたプログラムはこの関数を利用できなくなり、プログラムの修正が必要となるためです。

新機能の読み方

リリースノート内で新機能の記載箇所は、図2のようになっています。

新機能には、新たなDPDK対応NIC(Network Interface Card)用ドライバの追加が多くを占めます。

今回は、題材としているDPDK21.11において、上記以外の新機能で、私が特に着目した2つについてご紹介します。

図2.DPDK21.11リリースノート

注目機能1:GPUサポート(Introduced GPU device class)

GPU(Graphics Processing Unit)制御について以下がInitial features(初期機能)として追加されています。リリースノートには、図3のように記載されています。

図3.リリースノート内での記載箇所(GPUサポート)

Initial features(初期機能)とあるので、今後も機能拡充されると予想します。

GPUは、コンピュータゲームに代表されるリアルタイム画像処理に特化した演算装置あるいはプロセッサです。

近年では、FPGA,量子コンピュータなどとともにアクセラレーション(システムの処理の高速化)手段の一つとして用いられます。

背景としてはCPUのみでの処理では、処理限界があったり、コストが非常に高くなるためです。

DPDKを用いたパケット処理はもともとCPUで実施することを前提としていますが、GPUをサポートすることにより

GPUでもパケット処理を行うことが可能となり、結果としてより高速・低遅延での処理が可能となります。図4にDPDKでの利用イメージを示します。

GPUを用いたアクセラレーションについてはDPDK入門14回 ヘテロジニアスコンピューティングで、より詳しくご紹介しています。

図4.GPUサポート

注目機能2:メタデータ受信サポート(Added ethdev support to control delivery of Rx metadata from the HW to the PMD)

メタデータ受信サポートについて、リリースノートでは図5のように記載されています。

図5.リリースノート内での記載箇所(メタデータ受信サポート)

図6に概略を示します。

パケットをFPGAなどで前処理した場合に、その結果を実際に受信データとは別にメタデータとして付加することが可能です。

ただし、DPDKアプリケーション自体は受信データ(メタデータを含む)をm_buf(メッセージバッファ)として

認識するため、メタデータは自力で解析しなければなりません。

(例えば、受信パケットの末尾から2バイト先がメタデータ等)

この解析処理は馬鹿にならないので、実際に解析処理をしたFPGAに解析結果をAPI経由で取得できればより便利です。

これを実現するために、NICにそもそも特定のパケット種別の処理が可能かどうかを確認するためのAPIが以下で提供されました(実際のメタデータ取得処理はまだ実装されていないようです)

rte_eth_rx_metadata_negotiate() //NICに対してメタデータサポートしているかを問い合わせるAPI

メタデータの種別については以下の3つが提供されています

#define RTE_ETH_RX_METADATA_USER_FLAG RTE_BIT64(0) 
#define RTE_ETH_RX_METADATA_USER_MARK RTE_BIT64(1)
#define RTE_ETH_RX_METADATA_TUNNEL_ID RTE_BIT64(2)

図6.メタデータ受信サポート

おわりに

今回はこれまでの12回の連載と少し趣向を変えて、執筆時点での最新版LTSであるDPDK21.11を題材にDPDKリリースノートの読み方をご紹介しました。機会があれば、今回少し触れたDPDKの最新技術等についてもご紹介しようとおもいます。本記事の連載に関して何か問い合わせがございましたら、以下に連絡下さい。よろしくお願いします。

本件に関するお問い合わせ

NTTテクノクロス
フューチャーネットワーク事業部

山下英之

お問い合わせ

連載シリーズ
DPDK入門
著者プロフィール
山下 英之