Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第8章 ネットワークチーミングの設定

8.1. ネットワークチーミングについて

ネットワークリンクを結合させてより高いスループットの論理リンクや冗長性を提供する手段には、チャンネルボンディングイーサネットボンディングポートトランキングチャンネルチーミングNIC チーミング、または リンクアグリゲーション など多くの名前が付けられています。当初 Linux カーネルで実装されたこの概念は、広く ボンディング と呼ばれます。この概念の新しい実装の呼び方として、ネットワークチーミング という用語が選択されました。既存のボンディングドライバーは影響を受けません。ネットワークチーミングは Red Hat Enterprise Linux 7 のボンディングの代替メカニズムとして提供されるもので、これに置き換わるものではありません。
注記
モード 4 Link Aggregation Control Protocol (LACP) チーミングモードについては、リンクを集約するようにスイッチを設定する必要があります。詳細は https://www.kernel.org/doc/Documentation/networking/bonding.txt を参照してください。
ネットワークチーミング (またはチーム) は、高速でパケットフローを処理する小型のカーネルドライバーおよびその他すべてのユーザースペースタスクを実行する様々なユーザースペースのアプリケーションを提供するという、異なる方法でこの概念を実装するように設計されています。このドライバーには Team Netlink API と呼ばれる アプリケーションプログラミングインターフェイス (API) が備わっており、これが Netlink 通信を実装します。ユーザースペースのアプリケーションは、この API を使用してドライバーと通信できます。libと呼ばれるライブラリーは、Team Netlink 通信と RT Netlink メッセージのユーザースペースラッピングを行うために提供されています。libteam ライブラリーを使用するアプリケーションデーモン teamd も利用可能です。teamd の 1 つのインスタンスが、チームドライバーの 1 つのインスタンスを制御できます。このデーモンは、ランナーと呼ばれる新たなコードを使用することで、ラウンドロビンなどの負荷分散やアクティブバックアップ論理を実装します。このようにコードを分離することで、ネットワークチーミングの実装は負荷分散および冗長性要件に対して容易に拡張可能およびスケーラブルなソリューションを提供します。たとえば、カスタムランナーは、teamd を介して新しいロジックを実装するために比較的簡単に記述でき、 teamd も任意であるため、libteam を使用するために独自のアプリケーションを作成することができます。
teamdctl ユーティリティーは、D-bus を使用して teamd の実行中のインスタンスを制御するために使用できます。teamdctl は、teamd D-Bus API に関する D-Bus ラッパーを提供します。デフォルトでは、teamd は Unix Domain Sockets を使用してリッスンし、通信しますが、引き続き D-Bus を監視します。これは、teamd が D-Bus が存在しない環境またはまだ読み込まれていない環境で使用できるようにするためです。たとえば、teamd リンクで起動すると、D-Bus がまだ読み込まれません。ランタイム時に teamdctl ユーティリティーを使用すると、設定の読み取り、リンク監視の状態の確認と変更、ポートの状態の確認と変更、ポートの追加と削除、アクティブ状態とバックアップ状態間のポート変更を行うことができます。
Team Netlink API は、Netlink メッセージを使ってユーザースペースのアプリケーションと通信します。libteam ユーザー空間ライブラリーは API と直接対話しませんが、libnl または teamnl を使用してドライバー API と対話します。
要約すると、カーネルで実行中のチームドライバーのインスタンスは、直接設定、制御されることはありません。すべての設定は、teamd アプリケーションなどのユーザー空間アプリケーションを使用して行われます。アプリケーションはその後、カーネルドライバーのパートに適切に指示します。
注記
ネットワークチーミングのコンテキストでは、ポート という用語は スレーブ としても知られています。teamd 直接使用する場合は、port が推奨されます。一方、NetworkManager を使用してチームを作成するインターフェイスを参照する場合は、スレーブ が使用されます。