チーミング プロバイダー拡張機能

拡張可能スイッチ外部ネットワーク アダプターは、NDIS マルチプレクサー (MUX) 中間ドライバーの仮想ミニポート エッジにバインドできます。 MUX 中間ドライバー自体は、ホスト上の 1 つ以上の物理ネットワークのチームにバインドできます。 この構成を、拡張可能スイッチ チームと呼びます。 拡張可能なスイッチ チームの詳細については、「物理ネットワーク アダプター構成の種類」を参照してください。

この構成では、拡張可能スイッチの拡張機能は、拡張可能なスイッチ チーム内のすべてのネットワーク アダプターに公開されます。 これにより、拡張可能スイッチ ドライバー スタック内の転送拡張機能で、チーム内の個々のネットワーク アダプターの構成と使用を管理できます。 たとえば、拡張機能では、送信パケットを個々のアダプターに転送することで、チーム経由の負荷分散フェールオーバー (LBFO) ソリューションのサポートを提供できます。 このような拡張機能を、チーミング プロバイダーと呼びます。

次の図は、NDIS 6.40 (Windows Server 2012 R2) 以降の外部ネットワーク アダプターにバインドされている、基になる拡張可能スイッチ チームとの間のパケット トラフィックのデータ パスを示しています。

data path for packet traffic to or from the vswitch team that is bound to the external network adapter for ndis 6.40.

次の図は、NDIS 6.30 (Windows Server 2012) の外部ネットワーク アダプターにバインドされている、基になる拡張可能スイッチ チームとの間のパケット トラフィックのデータ パスを示しています。

data path for packet traffic to or from the vswitch team that is bound to the external network adapter for ndis 6.30.

チーミング プロバイダーは、転送拡張機能で実行できることはすべて実行できます。 さらに、チーミング プロバイダーは次のことができます。

  • 送信パケットを拡張可能なスイッチ チームの個々の物理アダプターに転送します。 この機能は、LBFO 機能において特に役立ちます。

  • 標準 NDIS オブジェクト識別子 (OID) 要求を、拡張可能スイッチ チームの個々の物理アダプターに転送します。 この機能は、チーム内のアダプターをハードウェア オフロード用に構成する場合に特に役立ちます。

    たとえば、MUX ドライバーは、拡張可能スイッチ チーム全体の共通機能をアドバタイズします。 ただし、チーミング プロバイダーは OID 要求を発行して、チーム内のアダプターの個々の機能を照会できます。 その後、チーミング プロバイダーは、拡張可能スイッチ外部ネットワーク アダプターに OID 要求を発行して、チーム全体に適用される機能を設定できます。

  • プライベート OID 要求を、拡張可能スイッチ チームの個々の物理アダプターに転送します。 これらのプライベート OID 要求は、物理ネットワーク アダプターの独立系ハードウェア ベンダー (IHV) によって定義されます。 これにより、IHV によって開発されたチーミング プロバイダーは、チーム内の個々の物理アダプターで独自の属性を有効または無効にすることができます。

  • 拡張可能スイッチ チームから NDIS 状態表示を変更します。 この機能は、ハードウェア オフロード用の拡張可能スイッチ チームを管理する場合に特に役立ちます。

    たとえば、MUX ドライバーは、拡張可能スイッチ チーム全体に共通する設定で NDIS 状態表示を発行します。 チーミング プロバイダーが拡張可能スイッチ チームのネットワーク アダプターに対して有効にしたハードウェア オフロードの状態を示す場合、チーミング プロバイダーは最初に OID 要求を発行して、そのアダプターの現在の機能を照会できます。 その後、チーミング プロバイダーは、アダプターで変更された可能性のある属性を設定するために指示データを変更できます。

チーミング プロバイダーは、拡張可能スイッチ チームを管理する際に、次のガイドラインに従う必要があります。

  • チーミング プロバイダーは拡張可能スイッチネットワーク接続が確立されたすべての物理ネットワーク アダプターの状態を保持する必要があります。

    外部ネットワーク アダプターにバインドされているすべての物理ネットワーク アダプターについて、拡張可能スイッチのプロトコル エッジは、個別 OID 設定要求 OID_SWITCH_NIC_CONNECT を発行します。 この OID 要求は、基となる物理アダプターへのネットワーク接続の作成について拡張機能に通知します。

  • 物理ネットワーク アダプターへのネットワーク接続が作成されると、外部ネットワーク アダプターが接続されているポートに対して 0 以外の一意のインデックス値が割り当てられます。

    チーミング プロバイダーは、基になる物理ネットワーク アダプターにパケットまたは OID 要求を発行または転送するときに、ネットワーク アダプターのインデックス値を指定する必要があります。

    詳細については、「ネットワーク アダプターのインデックス値」を参照してください。

  • チーミング プロバイダーが物理アダプターにパケットを発行または転送する場合、物理アダプター接続のネットワーク アダプター インデックス値を 0 以外で指定する必要があります。

    パケットを受信したプロバイダーは、NET_BUFFER_LIST 構造体のパケットの帯域外転送コンテキストから送信元ネットワーク アダプターのインデックス値を決定できます。 転送コンテキストの詳細については、Hyper-V 拡張可能スイッチ転送コンテキストを参照してください。

    詳細については、「Hyper-V 拡張可能スイッチのデータ パス」を参照してください。

  • 物理アダプターに転送 OID 要求を発行するには、チーミング プロバイダーは、NDIS_SWITCH_NIC_OID_REQUEST 構造体内に OID 要求をカプセル化する必要があります。 プロバイダーは、DestinationNicIndex メンバーに、物理アダプター接続のネットワーク アダプター インデックス値に 0 以外の値を設定する必要があります。 その後、プロバイダーは、OID_SWITCH_NIC_REQUEST の OID セット要求を発行し、カプセル化された OID 要求 をターゲット物理アダプターに配信します。

    詳細については、「物理ネットワーク アダプター への OID 要求の管理」を参照してください。

  • チーミング プロバイダーは、基になる物理アダプターの代わりに NDIS 状態表示を発行できます。 これを行うには、プロバイダーは、NDIS_SWITCH_NIC_STATUS_INDICATION 構造体内に表示をカプセル化する必要があります。 プロバイダーは、 SourceNicIndex メンバーに、物理アダプター接続のネットワーク アダプター インデックス値に 0 以外の値を設定する必要があります。 次に、プロバイダーは、NDIS_STATUS_SWITCH_NIC_STATUS の NDIS 状態表示を発行し、拡張可能スイッチ ドライバー スタック内の上位ドライバーにカプセル化された状態表示を配信します。

    詳細については、「物理ネットワーク アダプターからの NDIS 状態表示の管理」を参照してください。

拡張機能の転送の詳細については、「拡張機能の転送」を参照してください。

MUX ドライバーの詳細については、「NDIS MUX 中間ドライバー」を参照してください。