Sdílet prostřednictvím


Předávání požadavků OID na fyzické síťové adaptéry

Toto téma popisuje, jak Hyper-V rozšíření rozšiřitelného přepínače předávají požadavky na identifikátor objektu (OID) pro podkladové fyzické adaptéry přes řídící cestu rozšiřitelného přepínače Hyper-V. Rozšíření může také iniciovat požadavky OID na základní fyzické síťové adaptéry pomocí metod popsaných v tomto tématu.

Externí síťový adaptér může být například svázán s hranou virtuálního miniportu, který je součástí zprostředkujícího ovladače NDIS multiplexeru (MUX). Ovladač MUX je vázán na tým jedné nebo více fyzických sítí na hostiteli. Tato konfigurace se označuje jako rozšiřitelný tým přepínače .

V této konfiguraci je rozšíření rozšiřitelného přepínače zobrazeno každému síťovému adaptéru v týmu. To umožňuje rozšíření spravovat konfiguraci a použití jednotlivých síťových adaptérů v týmu. Rozšíření pro předávání může například poskytovat podporu pro řešení převzetí funkcí při selhání Load Balancing (LBFO) tím, že tým přesměruje odchozí pakety na jednotlivé adaptéry. Rozšíření pro předávání, které spravuje rozšiřitelný tým přepínače, se označuje jako poskytovatele seskupování. Další informace o poskytovateli teamingu naleznete v tématu Rozšíření poskytovatele teamingu.

Následující obrázek ukazuje příklad týmu přepínačů pro NDIS 6.40 (Windows Server 2012 R2) a novější.

diagram řídicí cesty oid pro ndis 6.40.

Následující obrázek ukazuje příklad rozšiřitelné skupiny přepínačů pro NDIS 6.30 (Windows Server 2012).

diagram rozšiřitelného přepínače pro NDIS 6.30.

Poznámka V rozšiřitelném rozhraní přepínače Hyper-V se ovladače filtru NDIS označují jako rozšíření rozšiřitelného přepínače a ovladačový zásobník se označuje jako rozšiřitelný ovladačový zásobník přepínače.

Aby bylo možné předat požadavek podkladovému fyzickému síťovému adaptéru, musí být požadavky OID zapouzdřeny. Požadavky OID jsou nejprve zapouzdřené uvnitř struktury NDIS_SWITCH_NIC_OID_REQUEST. Potom se požadavky OID přeposílají prostřednictvím rozšiřitelné cesty řízení přepínače pomocí požadavku sady identifikátorů OID_SWITCH_NIC_REQUEST.

Požadavky OID na podkladové fyzické adaptéry se vydávají takto:

rozšiřitelné rozhraní přepínače.
Požadavky OID, jako jsou požadavky na hardwarové offloady, se vydávají protokolovými nebo filtrovacími ovladači, které běží nad následujícími:

  • Operační systém pro správu, který běží v Hyper-V nadřazeném oddíle.

  • Operační systém hosta, který běží na podřízeném oddílu Hyper-V.

Při přijetí těchto požadavků OID rozšiřitelným přepínačem se zapouzdřují a přeposílají přes rozšiřitelnou cestu ovládacího prvku přepínače. Když rozšíření pro předávání obdrží zapouzdřený požadavek OID, může požadavek předat podkladovému fyzickému adaptéru. Tato schopnost je užitečná zejména pro konfiguraci rozšiřitelného týmu přepínačů pro snižování zátěže hardwaru.

Ovladač MUX například inzeruje společné funkce celého rozšiřitelného týmu přepínačů. Rozšíření pro předávání ale může vydávat požadavky OID na dotazování nebo nastavení jednotlivých schopností adaptérů v rámci týmu. Pak může předávací rozšíření vytvořit indikaci stavu NDIS z externího síťového adaptéru, aby informovalo nadřazené ovladače o schopnostech, které se vztahují na celý tým. Další informace o tomto postupu naleznete v tématu Indikace stavu iniciované z fyzických síťových adaptérů v NDIS.

Když rozšíření pro předávání přesměruje požadavek OID přes řídicí cestu, přijímá ho externí síťový adaptér. V tomto okamžiku se požadavek OID odečítá a předá zadanému fyzickému síťovému adaptéru.

Poznámka Počínaje Windows Serverem 2012 se tímto způsobem zapouzdřují a přeposílají pouze požadavky OID pro odlehčení hardwaru. Například požadavky na odlehčení OID pro frontu virtuálního počítače (VMQ) nebo zabezpečení internetového protokolu (IPsec) jsou zapouzdřeny a směrovány přes rozšiřitelnou řídicí cestu přepínače. Další informace naleznete v tématu Správa požadavků OID na hardwarové offloadování k fyzickým síťovým adaptérům.

rozšíření předávání.
Rozšíření pro předávání může vytvářet své vlastní zapouzdřené požadavky OID a předávat je základnímu fyzickému síťovému adaptéru. Předávací rozšíření může zapouzdřovat standardní požadavky NDIS OID. Rozšíření pro předávání může také zapouzdřit privátní požadavky OID definované nezávislým dodavatelem hardwaru (IHV) pro fyzické síťové adaptéry. To umožňuje rozšíření pro předávání, které také vyvinulo IHV, umožnit povolení nebo zakázání proprietárních atributů na jednotlivých fyzických adaptérech v rámci týmu.

Rozšíření pro směrování může navíc vytvářet zapouzdřené požadavky na hardwarové přenosy OID za účelem přidělení prostředků pro zadaný Hyper-V podřízený oddíl. Rozšíření pro předávání může například vytvořit zapouzdřené požadavky OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE pro přidělení VMQ pro zadaný podřízený oddíl. V tomto případě rozšíření zapouzdřuje požadavek jako pocházející z portu rozšiřitelného přepínače a připojení síťového adaptéru přidruženého k oddílu.

Poznámka Rozšíření přesměrování může generovat vlastní zapouzdřenou žádost o hardwarové offload OID pouze tehdy, pokud filtruje stejnou žádost OID, kterou vydaly nadřazené ovladače. V tomto případě rozšíření nesmí přeposílat původní požadavek OID. Místo toho musí rozšíření při dokončení tohoto požadavku volat NdisFOidRequestComplete poté, co NDIS volá svůj FilterOidRequestComplete k dokončení původního požadavku OID.

filtrování nebo zachytávání přípon
Filtrační nebo zachytávací rozšíření může vytvářet vlastní zapouzdřené žádosti dotazů OID a přesměrovat je na fyzický síťový adaptér. Tato rozšíření můžou zapouzdřit standardní požadavky na dotazy NDIS OID nebo požadavky na privátní dotazy OID definované nezávislým dodavatelem hardwaru (IHV) pro fyzické síťové adaptéry.

Poznámka Pouze přesměrovací rozšíření mohou vytvářet zapouzdřené požadavky na sadu OID směřující k podkladovým fyzickým adaptérům.

Rozšíření pro předávání musí při předávání, přesměrování nebo původu zapouzdřeného požadavku OID základního fyzického adaptéru postupovat podle těchto kroků:

  1. Pokud rozšíření pro předávání pochází z požadavku OID, musí inicializovat strukturu přidělenou rozšířením NDIS_OID_REQUEST s informacemi souvisejícími s požadavkem.

    Pokud rozšíření předává požadavek OID, nesmí změnit existující strukturu NDIS_OID_REQUEST odkazovanou parametrem OidRequest u funkce FilterOidRequest. Místo toho musí rozšíření nejprve zavolat NdisAllocateCloneOidRequest, aby přidělilo paměť pro novou strukturu NDIS_OID_REQUEST a poté zkopírovalo všechny informace z existující struktury NDIS_OID_REQUEST.

  2. Rozšíření nastaví členy NDIS_SWITCH_NIC_OID_REQUEST přiřazené rozšířením na následující hodnoty:

    • DestinationPortId člen musí být nastaven na identifikátor rozšiřitelného portu přepínače, ke kterému je externí síťový adaptér připojený.

    • DestinationNicIndex člen musí být nastaven na nenulovou hodnotu indexu základního fyzického síťového adaptéru.

      Další informace o těchto hodnotách indexu naleznete viz Hodnoty indexu síťových adaptérů.

    • Pokud rozšíření přesměrování iniciuje požadavek OID pro offload hardwaru pro podřízený oddíl Hyper-V, musí být člen SourcePortId nastaven na identifikátor portu, který oddíl používá. Také musí být SourceNicIndex položka nastavena na index síťového adaptéru ke spojení s daným portem.

      Pokud rozšíření pro předávání iniciuje standardní nebo privátní požadavek OID pro vlastní účely, musí být členy SourcePortId a SourceNicIndex nastaveny na nulu.

      Pokud rozšiřující zásuvný modul přesměruje nebo přesměruje žádost OID o hardwarové odlehčení, musí zachovat hodnoty SourcePortId a SourceNicIndex členů, které byly nastaveny rozšiřitelným rozhraním přepínače.

    • Člen OidRequest musí být nastavený jako ukazatel na inicializovanou strukturu NDIS_OID_REQUEST pro zapouzdřený požadavek OID. Rozšíření předávání buď přidělí a inicializuje tuto strukturu, nebo používá klonovanou kopii struktury.

  3. Rozšíření nastaví členy struktury NDIS_OID_REQUEST alokované rozšířením na následující hodnoty:

    • Člen Oid musí být nastaven na OID_SWITCH_NIC_REQUEST.

    • InformationBuffer člen musí obsahovat ukazatel na vyrovnávací paměť, který obsahuje vygenerovaná nebo filtrovaná data z požadavku OID.

    • InformationBufferLength člen musí obsahovat délku, v bajtech, vyrovnávací paměti, která obsahuje vygenerovaná nebo filtrovaná data požadavku OID.

    Rozšíření nastaví ostatní členy na hodnoty platné pro NDIS_OID_REQUEST strukturu.

  4. Rozšíření volá ReferenceSwitchNic, aby inkrementovalo referenční čítač pro index cílového fyzického síťového adaptéru. To zaručuje, že rozšiřitelné rozhraní přepínače neodstraní připojení fyzického síťového adaptéru, zatímco jeho referenční čítač není nenulový.

    Když rozšíření volá ReferenceSwitchNic, nastaví parametr SwitchPortId na hodnotu zadanou pro člena DestinationPortId. Rozšíření také nastaví parametr SwitchNicIndex na hodnotu zadanou pro DestinationNicIndex člena.

    Poznámka Pokud ReferenceSwitchNic nevrací NDIS_STATUS_SUCCESS, požadavek OID nelze předat cílovému fyzickému síťovému adaptéru.

  5. Pokud rozšíření přesměrování iniciuje požadavek na OID pro hardwarové vyložení pro podřízený oddíl Hyper-V, volá také ReferenceSwitchNic, aby zvýšil referenční čítač pro index připojení zdrojového síťového adaptéru, který je přidružen k oddílu. To zaručuje, že rozšiřitelné rozhraní přepínače neodstraní připojení fyzického síťového adaptéru, zatímco jeho referenční čítač není nenulový.

    Když rozšíření volá ReferenceSwitchNic, nastaví parametr SwitchPortId na hodnotu zadanou pro položku SourcePortId. Rozšíření také nastaví parametr SwitchNicIndex na hodnotu zadanou pro SourceNicIndex člen.

    Poznámka Pokud ReferenceSwitchNic nevrací NDIS_STATUS_SUCCESS, požadavek OID nelze předat cílovému fyzickému síťovému adaptéru.

  6. Rozšíření volá NdisFOidRequest, aby předalo zapouzdřený požadavek OID na zadaný cílový port rozšiřitelného přepínače a síťového adaptéru.

    Poznámka Pokud rozšíření předává filtrovaný požadavek OID, musí v rámci volání své funkce FilterOidRequest volat NdisFOidRequest. Pokud rozšíření předává požadavky OID, které vygenerovalo, volá NdisFIndicateStatus, zatímco je ve stavech Spuštěno, Restartování, Pozastavenoa Pozastavení. Další informace o těchto stavech naleznete v Stavy a operace filtračního modulu.

  7. Když NDIS volá funkci FilterOidRequestComplete, rozšíření volá DereferenceSwitchNic za účelem vymazání referenčního čítače pro index cílového fyzického síťového adaptéru.

    Pokud rozšíření přesměrování iniciovalo požadavek typu OID pro hardwarovou zátěž pro podřízený oddíl Hyper-V, volá také funkci DereferenceSwitchNic, aby vymazalo referenční čítač pro index připojení zdrojového síťového adaptéru.

    V obou případech rozšíření nastaví parametry SwitchPortId a SwitchNicIndex na stejné hodnoty, které použilo při volání ReferenceSwitchNic.

Další informace o tom, jak rozšíření vydává požadavky OID, najdete v tématu Generování požadavků OID z ovladače filtru NDIS.

Další informace o ovladačích MUX naleznete v tématu NDIS MUX Intermediate Drivers.