Dela via


Ställa in 2PF Kernel-Mode felsökning med KDNET

Felsökningsverktyg för Windows stöder kernelfelsökning via en nätverkskabel med flera fysiska funktioner (PFs) på de nätverkskort som stöds genom partitionering av PCI-konfigurationsutrymmet.

Med 2PF-felsökning kan varje PF anslutas till en enda nätverksport, så att funktionen för kernelfelsökning kan anslutas till en PF medan standardnätverksstacken pratar med den andra PF. På grund av detta behöver KDNIC inte dirigera Windows-nätverkstrafiken via KDNET, och KDNET ansvarar bara för att dirigera värdkärnfelsökartrafiken. Detta resulterar i en dramatisk prestandaökning.

Det här avsnittet beskriver hur du konfigurerar 2PF-felsökning med hjälp av verktyget kdnet.exe.

Nätverkskortleverantörer uppmuntras att aktivera stöd för den här funktionen. Mer information finns i Debugger 2PF KDNET Miniport Network Driver Support.

Två drivrutiner körs över det partitionerade PCI-konfigurationsutrymmet

  • Inkorgsdrivrutinen för Windows tar slut på den primära nätverksporten på bus.dev.fun0.0 PCI plats.

  • The KDNET-Ext. modulen får slut på den tillagda PF-modulen vid bus.dev.fun0.1ser den här tekniken till att Windows inkorgens NIC-drivrutin inte påverkas genom att dela nätverkskortet med KDNET.

Den dator som kör felsökningsprogrammet kallas värddatoroch datorn som debuggas kallas måldator.

Kernel-Mode 2PF-enhetskrav

Följande krävs:

  • På måldatorn finns ett 2PF-nätverkskort som stöds.

  • På värddatorn, ett nätverkskort.

  • En nätverksanslutning mellan målmaskinen och värddatorn.

  • Windows 10 Build 21313 och senare.

2PF-nätverkskort som stöds

Leverantörer som NVIDIA Mellanox och Cisco tillhandahåller nätverkskort som stöder 2PF-nätverksfelsökning. Kontakta nätverkskortleverantören för att se vilka modeller av nätverkskortet som stöds. Observera att vissa leverantörer stöder 2PF på en underuppsättning nätverkskort som delar samma PnP-ID.

Använd kdnet.exe för att bekräfta enhetens kompatibilitet och visa värdet för busparams

Använd kdnet.exe-verktyget för att visa parameterinformationen för kontrollanter som stöder KDNET 2PF-transportfelsökning.

  1. Bekräfta att Windows-felsökningsverktygen är installerade på värdsystemet. Information om hur du laddar ned och installerar felsökningsverktygen finns i Felsökningsverktyg för Windows.

  2. Leta upp filerna kdnet.exe och VerifiedNICList.xml. Som standard finns de här.

    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

  3. På värddatorn kopierar du de två filerna till en nätverksresurs eller ett USB-minne så att de är tillgängliga på måldatorn.

  4. På måldatorn skapar du en C:\KDNET-katalog och kopierar kdnet.exe- och VerifiedNICList.xml-filerna till katalogen.

  5. Öppna ett kommandotolksfönster som administratör på måldatorn. Ange det här kommandot för att kontrollera att måldatorn har ett nätverkskort som stöds och för att visa busparams-värdet.

    
    C:\KDNET>kdnet.exe
    
    Network debugging is supported on the following NICs:
    busparams=141.0.0, Mellanox ConnectX-4 Lx Ethernet Adapter #2, Plugged in, Primary function, multiple physical functions are supported.
    
    Network debugging is supported on the following USB controllers:
    busparams=128.15.0, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
    busparams=0.15.0, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
    busparams=128.15.1, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
    busparams=0.15.1, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
    

    Eftersom utdata som visas ovan inte innehåller "KDNET körs på det här nätverkskortet."anger detta att traditionell KDNET-felsökning inte är aktiverad på något av korten.

    Om nätverkskortet inte stöder flera PF-funktioner, utelämnas PF-statusmeddelandet för "flera fysiska funktioner stöds" (tom) från den information som visas.

    Om nätverkskortet stöder flera PF beror den faktiska informationen som visas på kombinationen av nätverksporten (rotporten/PF-porten har lagts till), samt kabelns anslutna/frånkopplade status till/från den fysiska NIC-porten.

    Den här tabellen sammanfattar olika PF-meddelanden för det primära nätverkskortet.

    Nätverkskort bus.dev.fun motsvarar Kabelstatus PF-status
    original (primär) PF-kabel ansluten Primär funktion, flera fysiska funktioner är aktiverade
    original (primär) PF-kabeln är frånkopplad Primär funktion, flera fysiska funktioner stöds

    Den här tabellen sammanfattar olika PF-meddelanden för det sekundära nätverkskortet.

    Det nätverksgränssnittskort bus.dev.fun motsvarar Kabelstatus PF-status
    ny (sekundär) PF-port Kdnet körs Sekundär funktion
    ny (sekundär) PF-port kabel frånkopplad eller okänd status Primär funktion, flera fysiska funktioner är aktiverade, men den sekundära funktionen används inte
  6. Om utdata från kdnet.exe anger att en NIC-styrenhet som stöds är tillgänglig kan vi fortsätta.

Konfigurera måldatorn för 2PF

Använd verktyget kdnet.exe för att konfigurera felsökningsinställningarna på måldatorn för 2PF genom att följa dessa steg.

Viktigt!

Innan du använder bcdedit för att ändra startinformationen kan du tillfälligt behöva pausa Windows-säkerhetsfunktioner som BitLocker och Säker start på testdatorn. Du kan återaktivera Bit Locker och Säker start när du är klar med BCDEdit för att uppdatera startinformationen. Hantera testdatorn på rätt sätt när säkerhetsfunktionerna är inaktiverade.

Den här processen lägger till en ny fysisk funktion (PF) till nätverkskortet som anges av bus.device.function. Den nya PF kan endast användas av KDNET eftersom Inkorgsdrivrutinen för Windows har konfigurerats för att inte köras på en tillagd sekundär PF. Följ de här stegen för att lägga till en ny PF som ska användas av felsökningsenheten.

Bekräfta att felsökning är inaktiverat innan du lägger till den nya fysiska funktionen

  1. Använd BCDEdit-kommandot för att bekräfta att KD:n är inaktiverad på målet innan du lägger till en ny PF på nätverkskortet. Detta krävs för att säkerställa att standarddrivrutinen för NIC från leverantören laddas så att den kan användas för att lägga till den nya PF.
C:\> bcdedit /enum 
...

debug           No

Du kan också använda kdnet.exe utan parametrar för att se om felsökning är aktiverat. Utdata nedan visar KDNET som körs på ett system med felsökning aktiverat på ett nätverkskort. Det här är den äldre konfigurationen med lägre prestanda.


c:\Debuggers>kdnet

Network debugging is supported on the following NICs:
busparams=141.0.0, Mellanox ConnectX-4 Lx Ethernet Adapter #2, KDNET is running on this NIC.

Network debugging is supported on the following USB controllers:
busparams=128.15.0, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
busparams=0.15.0, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
busparams=128.15.1, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
busparams=0.15.1, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
  1. Om felsökningsvärdet är inställt på Jaanvänder du kommandot set för att inaktivera felsökning.
C:\> bcdedit.exe /debug off
C:\> bcdedit.exe /set {default} bootdebug off
C:\> bcdedit.exe /set {bootmgr} bootdebug off
  1. Använd kommandot shutdown -r -t 0 från en administratörs kommandotolk för att starta om.

När måldatorn har startats om och felsökningen har inaktiverats kan vi lägga till den nya fysiska funktionen.

Lägg till den nya fysiska funktionen

  1. Öppna en kommandotolk med administratörsrättigheter och kör följande kommando för att lägga till en andra PF. Alla värden anges med decimalvärden.
C:\KDNET> kdnet -addpf 141.0.0 198.51.100.1 50001

Succeeded adding a Pci PF on :141.0.1. Please power off or reboot the machine.

Enabling network debugging on Mellanox ConnectX-4 Lx Ethernet Adapter #2.
Manage-bde.exe not present.  Bitlocker presumed disabled.

To debug this machine, run the following command on your debugger host machine.
windbg -k net:port=50001,key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

Then reboot this machine by running shutdown -r -t 0 from this command prompt.

bus.dev.fun är PCI-platsporten för nätverkskortet som stöder flera PF-funktioner, så den nya PF läggs till/ansluts till den här nätverksenheten.

-addpf alternativet aktiverar automatiskt kernelfelsökning över KDNET-transport på den tillagda PF-porten.

[host name/host ip address] är värddatorns TCP/IP-adress. Använd kommandot ipconfig på värddatorn för att fastställa den här adressen.

[port number] är TCP/IP-portnumret. Du kan välja valfritt portnummer från 49152 till 65535. Det rekommenderade intervallet är mellan 50000 och 50039. Porten som du väljer öppnas för exklusiv åtkomst av felsökningsprogrammet som körs på värddatorn. Välj en unik portadress för varje mål-/värdpar som du arbetar med inom det rekommenderade intervallet 50000-50039. 50005 visas i exemplet.

Observera att -addpf också lägger till attributet NO_KDNIC till operativsystemets installation {default} loadoptions. Detta beror på att KDNIC inte längre behöver köras ovanpå KDNET.

Loadoptions = NO_KDNIC läggs till i {default} OS-taggen för att säkerställa att kdnic.sys inte tar slut på den nyligen tillagda pf (141.0.1)

Använd kommandot bcdedit för att bekräfta att NO_KDNIC har angetts.

C:\KDNET> bcdedit /enum {default}

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows Server
locale                  en-US
loadoptions             NO_KDNIC
inherit                 {bootloadersettings}
recoverysequence        {c23c4005d-12ae-11eb-9399-ac9840c152e7}
displaymessageoverride  Recovery
recoveryenabled         Yes
bootdebug               No
testsigning             Yes
isolatedcontext         Yes
flightsigning           Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {c23c4005d-12ae-11eb-9399-ac9840c152e7}
nx                      OptOut
debug                   Yes
hypervisordebug         No

2. Run the bcdedit /enum command to display the generated key.

```console
C:\KDNET> bcdedit /dbgsettings
busparams               141.0.1
key                     2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
debugtype               NET
hostip                  198.51.100.1
port                    50001
dhcp                    Yes
The operation completed successfully.
   
  1. Kopiera den returnerade nyckeln till en anteckningsbok .txt-fil. I exemplet som visas har den genererade nyckeln värdet:

    2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

  2. Du kan också använda kdnet.exe för att bekräfta att flera fysiska funktioner är aktiverade.

C:\KDNET> kdnet.exe

Network debugging is supported on the following NICs:
busparams=141.0.0, Mellanox ConnectX-4 Lx Ethernet Adapter #2, Plugged in, Primary function, multiple physical functions are enabled.
busparams=141.0.1, Mellanox ConnectX-4 Lx Ethernet Adapter, KDNET is running on this NIC, Secondary function.

Network debugging is supported on the following USB controllers:
busparams=128.15.0, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
busparams=0.15.0, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
busparams=128.15.1, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
busparams=0.15.1, Standard USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)

Inaktivera brandväggen på värden

På värddatorn ska du inaktivera brandväggen för felsökningsporten.

Ansluta WinDbg till målet för kernel-felsökning

Öppna WinDbg på värddatorn. På menyn Arkiv väljer du Kernel Debug. I dialogrutan Kernel Debugging öppnar du fliken Net. Klistra in ditt portnummer och din nyckel som du sparade i anteckningsfilen .txt tidigare. Välj OK.

Du kan också starta en WinDbg-session genom att öppna ett kommandotolkfönster och ange följande kommando, där är porten du valde ovan, och är nyckeln som returnerades av kdnet.exe ovan. Klistra in nyckeln som du sparade i anteckningsfilen .txt tidigare.

windbg -k -d net:port=<YourDebugPort>,key=<YourKey>

Starta om måldatorn

När felsökningsprogrammet är anslutet startar du om måldatorn. Ett sätt att starta om datorn är att använda kommandot shutdown -r -t 0 från en administratörs kommandotolk.

När måldatorn har startats om bör felsökningsprogrammet ansluta automatiskt.

När datorn startas om tilldelar nätverkskortets inbyggda programvara en ny MAC-adress till den nyligen tillagda KDNET PF, och dbgsettings::busparams pekar på den nyligen tillagda PF.

Hitta MAC-adressen för 2PF-adaptern

Eftersom den nyligen tillagda PF är en port konfigurerad som en PCI-buss, kommer det att finnas ett nytt MAC-adressvärde som delats ut till den nyligen tillagda PF av nätverkskortets inbyggda programvara. Verktyget kdnet.exe stöder för närvarande inte visning av MAC-adressen för den tillagda 2PF.

Det finns två sätt att hitta den nya MAC-adressen:

Använd WinDbg/KD med en lokal KD-session

Kör den lokala kernel-felsökaren windbg.exe -kl på målsystemet.

Kontrollera att du har åtkomst till symbolfilen kdnet.pdb genom att köra .reload /f kdnet.dll

Kör kommandot .kdtargetmac för att hämta MAC-adressen.

kd> .kdtargetmac
Force unload of kdnet.dll
ModLoad: fffff800`18510000 fffff800`18557000   kdnet.dll
Loading symbols for fffff800`18510000        kdnet.dll ->   kdnet.dll

The target machine MAC address in open-device format is: DC9840C151E8

Kör leverantörens tillhandahållna verktyg för inbyggd programvara

Ett sätt att hitta MAC-adressen är att köra verktygen för inbyggd programvara som tillhandahålls av leverantören. Kontakta NIC-leverantören för information om hur du laddar ned, installerar och använder leverantörens verktyg.

... 
Base MAC:              98039baa757c           4

Hitta fältet för MAC-adress. Beräkna värdet för KDNET 2PF MAC-adress genom att sekventiellt lägga till en till den sista siffran i rot-MAC-enheten. Så för rotenheten med adressen 98039baa757cskulle KDNET 2PF-enheten ha en adress för 98039baa757d.

Återställa det tidigare konfigurationstillståndet – Ta bort den andra PCI PF

Du kan ta bort den tidigare tillagda PF från en enhet med hjälp av alternativet kdnet -removepf och det ursprungliga bus.device.function-värdet. PF kopplas från nätverkskortet och den PF-tilldelade resursen släpps av nätverkskortets inbyggda programvara.

För att ta bort KDNET PF från enheten öppnar du en kommandotolk med administratörsbehörighet och kör följande kommando.

kdnet -removepf [bus.dev.fun] [host name/host ip address] [port number]

Där bus.dev.fun är PCI-platsen för NIC-adaptern där PF ursprungligen var anslutet. Det här är samma PCI-plats som ursprungligen skickades till kdnet -addpf.

Med alternativet -removepf återaktiveras även kernelfelsökning över KDNET på den ursprungliga bus.dev.fun.

C:\KDNET> kdnet -removepf 141.0.0 198.51.100.1 50001

Succeeded removing a Pci PF on :141.0.0. Please power off or reboot the machine.

Enabling network debugging on Mellanox ConnectX-4 Lx Ethernet Adapter #2.
Manage-bde.exe not present.  Bitlocker presumed disabled.

Kommandot kdnet.exe -removepf tar också bort NO_KDNIC-attributet från operativsystemets installation {default} loadoptions, eftersom KDNET aktiveras på den ursprungliga bus.dev.fun, d.v.s. dbgsettings::busparams pekar på den ursprungliga nätverksporten. Detta gör att KDNIC används igen, vilket ger en nätverksanslutning igen ovanpå KDNET.

När PF har tagits bort måste datorn startas om för att BCD-ändringarna ska tillämpas.

shutdown -r -t 0

Felsöka konfiguration av värdadapter

Kontrollera att 2PF-adaptern finns i enhetshanteraren

Du kan kontrollera att KDNET PF har lagts till genom att kontrollera att det nya nätverkskortet har en ny bus.dev.fun port i listan över Windows Device Manager-kort.

Det här diagrammet visar tre olika adaptrar, där adapter #2 är reserverad för användning av kernelfelsökaren.

enhetshanteraren som visar nätverksnoden med en nod för ett Windows KDNET 2PF-nätverkskort som stöds.

Vanliga felmeddelanden – lägga till en ny PF

C:\KDNET> kdnet -addpf 28.0.0 192.168.137.1 50005

Device Name:\\.\Mlx5Util

Pci Bus:28.0.0

PCI PF har redan konfigurerats på den här porten: Error=(0x80004004) Misslyckad PF-åtgärd på felsökningsenheten. Felsökningsenheten har inte konfigurerats för KDNET.

  • Lägg inte till eller ta bort en PF på rotporten där den redan är tillagd som en PF.

Vanliga felmeddelanden – ta bort en PF

C:\KDNET> kdnet -removepf 28.0.1 192.168.137.1 50005

Adapter is not active: Error=(0x80070002)

Device Name:\\.\Mlx5Util

Pci Bus:28.0.1

adaptern är inte aktiv: Error=(0x80070002) Misslyckad PF-åtgärd på felsökningsenheten. Felsökningsenheten har inte konfigurerats för KDNET-

  • Använd inte en tillagd PF-port med kommandoradsparametern "-removepf/-addpf", eftersom en åtgärd på den tillagda PF-porten resulterar i ett fel (fel: Adaptern är inte aktiv på porten), eftersom inkorgsdrivrutinen för leverantörskortet har konfigurerats för att uttryckligen inte köras på en tillagd PF.
  • Båda kommandoradsalternativen (-addpf/-removepf) får endast användas på rot-PCI-enheten.
C:\KDNET> kdnet -removepf 28.0.0 192.168.137.1 50005

Device Name:\\.\Mlx5Util

Pci Bus:28.0.0

Det finns ingen PCI PF att ta bort på den här porten: Error=(0x80004005) Misslyckad PF-åtgärd på felsökningsenheten. Felsökningsenheten har inte konfigurerats för KDNET-

  • Om du lägger till en ny PF och sedan bestämmer dig för att ta bort den utan omstart leder det till ett fel, eftersom nätverkskortets firmware kräver omstart eller återställning av nätverkskortets hårdvara innan den kan identifiera den nyligen tillagda PF.

Vanliga felmeddelanden – BCDEdit

NO_KDNIC finns inte i BCD OS{default}-installationen.

  • Vi rekommenderar inte att du använder bcdedit.exe för att ändra felsökningsenheten (dbgsettings) efter att ha lagt till en ny PF. Kommandoradsalternativen kdnet -addpf/removepf konfigurerar felsökningsenheten och lägger också till/tar automatiskt bort NO_KDNIC token till/från {default}::loadoptions.

Se även

Konfigurera KDNET-nätverkskärnfelsökning automatiskt

Konfigurera KDNET-nätverkskärnfelsökning manuellt

Konfigurera USB 3.0 xHCI-DBC kärnläge felavhjälpning (KDUSB)

Konfigurera USB KDNET EEM-Kernel-Mode felsökning (KDNET-EEM-USB)

Ställ in kärnlägesfelsökning manuellt