Aracılığıyla paylaş


KDNET kullanarak 2PF Kernel-Mode Hata Ayıklamayı Ayarlama

Windows için Hata Ayıklama Araçları, PCI yapılandırma alanını bölümleyerek desteklenen NIC'lerde birden çok Fiziksel İşlev (PF) kullanarak ağ kablosu üzerinden çekirdek hata ayıklamasını destekler.

2PF hata ayıklama ile her PF tek bir ağ bağlantı noktasına bağlanabilir, bu nedenle standart ağ yığını diğer PF ile konuşurken çekirdek hata ayıklama işlevinin bir PF'ye bağlanmasına olanak tanır. Bu nedenle, KDNIC'nin Windows ağ trafiğini KDNET üzerinden yönlendirmesi gerekmez ve KDNET yalnızca konak çekirdek hata ayıklayıcısı trafiğini yönlendirmekle sorumludur. Bu da önemli bir performans artışına neden olur.

Bu konuda, kdnet.exe yardımcı programını kullanarak 2PF hata ayıklamanın nasıl ayarlanacağı açıklanmaktadır.

Ağ kartı satıcılarının bu özellik için desteği etkinleştirmesi tavsiye edilir. Daha fazla bilgi için bkz. Hata Ayıklayıcı 2PF KDNET MiniPort Ağ Sürücüsü Desteği.

Bölümlenmiş PCI yapılandırma alanı üzerinde iki sürücü çalışacak

  • Windows gelen kutusu sürücüsü, bus.dev birincil ağ bağlantı noktasının fun0.0 PCI konumunda çalışacaktır.

  • KDNET-Ext. modülü bus.dev.fun0.1'de eklenen PF'yi çalıştıracaktır. Bu teknik, KDNET ile NIC paylaşımı nedeniyle Windows NIC sürücüsünün etkilenmemesini sağlar.

Hata ayıklayıcısını çalıştıran bilgisayaraana bilgisayar adı verilir ve hata ayıklanan bilgisayarahedef bilgisayar adı verilir.

Kernel-Mode 2PF cihaz gereksinimleri

Aşağıdakiler gereklidir:

  • Hedef bilgisayarda desteklenen bir 2PF ağ kartı.

  • Konak bilgisayarda bir ağ kartı.

  • Hedef ve konak arasında bir ağ bağlantısı.

  • Windows 10 Derleme 21313 ve üzeri.

Desteklenen 2PF Ağ Kartları

NVIDIA Mellanox ve Cisco gibi satıcılar 2PF ağ hata ayıklamasını destekleyen NIC'ler sağlar. Ağ kartının hangi modellerinin desteklendiğine bakmak için ağ kartı satıcısına başvurun. Bazı satıcıların aynı PnP kimliğini paylaşan bir alt ağ kartı kümesinde 2PF'yi desteklediğini unutmayın.

Cihaz desteğini onaylamak ve busparams değerini görüntülemek için kdnet.exe kullanın

KDNET 2PF aktarım hata ayıklamasını destekleyen denetleyicilerin parametre bilgilerini görüntülemek için kdnet.exe yardımcı programını kullanın.

  1. Konak sisteminde Windows Hata Ayıklama Araçları'nın yüklü olduğunu onaylayın. Hata ayıklayıcı araçlarını indirme ve yükleme hakkında bilgi için bkz. Windowsiçin Hata Ayıklama Araçları .

  2. kdnet.exe ve VerifiedNICList.xml dosyalarını bulun. Varsayılan olarak, bunlar burada bulunur.

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

  3. Konak bilgisayarda, iki dosyayı hedef bilgisayarda kullanılabilir olmaları için bir ağ paylaşımına veya flash belleğe kopyalayın.

  4. Hedef bilgisayarda bir C:\KDNET dizin oluşturun ve kdnet.exe ve VerifiedNICList.xml dosyalarını bu dizine kopyalayın.

  5. Hedef bilgisayarda, Yönetici olarak bir Komut İstemi penceresi açın. Hedef bilgisayarın desteklenen bir ağ bağdaştırıcısına sahip olduğunu doğrulamak ve busparams değerini görüntülemek için bu komutu girin.

    
    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)
    

    Yukarıda gösterilen çıkış "KDNET bu NIC üzerinde çalışıyor" ifadesini içermediğinden, bu geleneksel KDNET hata ayıklamasının bağdaştırıcıların hiçbirinde etkinleştirilmediğini gösterir.

    NIC birden çok PF özelliğini desteklemiyorsa , görüntülenen bilgilerden "birden çok fiziksel işlev destekleniyor" pf durumu bildirimi atlanır (boş).

    NIC birden çok PF'yi destekliyorsa, görüntülenen gerçek bilgiler Ağ bağlantı noktasının (kök bağlantı noktası/PF eklenen bağlantı noktası) bileşimine ve NIC fiziksel bağlantı noktasına bağlı/bağlantısı kesilmiş duruma bağlıdır.

    Bu tablo, birincil NIC için farklı PF bildirimlerini özetler.

    NIC kartı bus.dev.fun ile eşleşir Kablo durumu PF Durumu
    özgün (birincil) PF kablosu bağlı Birincil işlev, birden çok fiziksel işlev etkin
    özgün (birincil) PF kablosunun bağlantısı kesildi Birincil işlev, birden çok fiziksel işlev desteklenir

    Bu tablo, ikincil NIC için farklı PF bildirimlerini özetler.

    NIC bağdaştırıcısı bus.dev.fun ile eşleşir Kablo durumu PF Durumu
    yeni (ikincil) PF bağlantı noktası Kdnet çalışıyor İkincil işlev
    yeni (ikincil) PF bağlantı noktası kablo bağlantısı kesildi veya kablo durumu bilinmiyor Birincil işlev, birden çok fiziksel işlev etkinleştirilir, ancak ikincil işlev kullanılmaz
  6. kdnet.exe çıktısı desteklenen bir NIC denetleyicisinin kullanılabilir olduğunu gösteriyorsa devam edebiliriz.

2PF için Hedef Bilgisayarı Ayarlama

2PF için hedef bilgisayarda hata ayıklayıcı ayarlarını yapılandırmak için aşağıdaki adımları izleyerek kdnet.exe yardımcı programını kullanın.

Önemli

Önyükleme bilgilerini değiştirmek için bcdedit'i kullanmadan önce, test bilgisayarında BitLocker ve Güvenli Önyükleme gibi Windows güvenlik özelliklerini geçici olarak askıya almanız gerekebilir. ÖNYÜKLEME bilgilerini güncelleştirmek için BCDEdit'i kullanmayı bitirdikten sonra Bit Locker ve Secure Boot'ı yeniden etkinleştirebilirsiniz. Güvenlik özellikleri devre dışı bırakıldığında test bilgisayarını uygun şekilde yönetin.

Bu işlem, tarafından bus.device.functionbelirtilen NIC'ye yeni bir fiziksel işlev (PF) ekler. Yeni PF yalnızca KDNET tarafından kullanılabilir çünkü Windows gelen kutusu sürücüsü eklenen, ikincil bir PF'de çalıştırılmayacak şekilde ayarlanmıştır. Hata ayıklama cihazı tarafından kullanılacak yeni bir PF eklemek için bu adımları izleyin.

Yeni fiziksel işlevi eklemeden önce hata ayıklamanın devre dışı bırakıldığını onaylayın

  1. NIC'ye yeni bir PF eklemeden önce hedefte KD'nin devre dışı bırakıldığını onaylamak için BCDEdit komutunu kullanın. Yeni PF'yi eklemek için kullanılabilmesi için standart satıcı NIC sürücüsünün yüklendiğinden emin olmak için bu gereklidir.
C:\> bcdedit /enum 
...

debug           No

Alternatif olarak, hata ayıklamanın etkinleştirilip etkinleştirilmediğini görmek için parametresiz kdnet.exe kullanın. Aşağıdaki çıkışta, bir NIC'de hata ayıklamanın etkinleştirildiği bir sistemde çalışan KDNET gösterilmektedir. Bu, düşük performanslı eski kurulumdur.


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. Hata ayıklama değeri Evet olarak ayarlandıysa, hata ayıklamayı devre dışı bırakmak için set komutunu kullanın.
C:\> bcdedit.exe /debug off
C:\> bcdedit.exe /set {default} bootdebug off
C:\> bcdedit.exe /set {bootmgr} bootdebug off
  1. shutdown -r -t 0 Yeniden başlatmak için yöneticinin komut istemindeki komutu kullanın.

Hedef bilgisayar yeniden başlatıldıktan ve hata ayıklama devre dışı bırakıldıktan sonra yeni fiziksel işlevi ekleyebiliriz.

Yeni fiziksel işlevi ekleme

  1. Yükseltilmiş bir komut istemi açın ve ikinci bir PF eklemek için aşağıdaki komutu çalıştırın. Tüm değerler ondalık değerler kullanılarak sağlanır.
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 , NIC bağdaştırıcısının birden çok PF özelliğini destekleyen PCI konum bağlantı noktasıdır, bu nedenle yeni PF bu ağ cihazına eklenir/eklenir.

-addpf seçeneği, eklenen PF bağlantı noktasında KDNET aktarımı üzerinden otomatik olarak çekirdek hata ayıklamasını etkinleştirir.

[host name/host ip address] , ana bilgisayarın TCP/IP adresidir. ipconfig Bu adresi belirlemek için ana bilgisayardaki komutunu kullanın.

[port number] TCP/IP bağlantı noktası numarasıdır. 49152 ile 65535 arasında herhangi bir bağlantı noktası numarası seçebilirsiniz. Önerilen aralık 50000 ile 50039 arasındadır. Seçtiğiniz bağlantı noktası, konak bilgisayarda çalışan hata ayıklayıcı tarafından özel erişim için açılır. Birlikte çalıştığınız her hedef/konak çifti için önerilen 50000-50039 aralığında benzersiz bir bağlantı noktası adresi seçin. Örnekte 50005 gösterilmektedir.

-addpf özniteliğini NO_KDNIC işletim sistemi yüklemesine de ekleyeceğini unutmayın {default} loadoptions. Bunun nedeni KDNET'in KDNET üzerinde çalışması için KDNIC'in artık gerekli olmamasıdır.

kdnic.sys yeni eklenen pf değerinin (141.0.1) bitmemesini sağlamak için loadoptions = NO_KDNIC {default} işletim sistemi etiketine eklendi

NO_KDNIC ayarlandığını onaylamak için bcdedit komutunu kullanın.

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. Döndürülen anahtarı Not Defteri'nde .txt biçiminde bir dosyaya kopyalayın. Gösterilen örnekte, oluşturulan anahtarın değeri:

    2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

  2. İsteğe bağlı olarak, birden çok fiziksel işlevin etkinleştirildiğini onaylamak için kdnet.exe kullanın.

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)

Host üzerinde güvenlik duvarını devre dışı bırak

Konakta, hata ayıklayıcı bağlantı noktası için güvenlik duvarını devre dışı bırakın.

Çekirdek hata ayıklaması için WinDbg'yi hedefe bağlama

Konak bilgisayarda WinDbg'yi açın. Dosya menüsünde Çekirdek Hata Ayıklama öğesini seçin. Çekirdek Hata Ayıklama iletişim kutusunda sekmesini açın. Daha önce not defteri .txt dosyasına kaydettiğiniz bağlantı noktası numaranızı ve anahtarınızı yapıştırın. Tamam'ı seçin.

Ayrıca, bir Komut İstemi penceresi açarak ve aşağıdaki komutu girerek bir WinDbg oturumu başlatabilirsiniz; burada yukarıda seçtiğiniz bağlantı noktasıdır ve , yukarıda kdnet.exe tarafından döndürülen anahtardır. Daha önce not defteri .txt dosyasına kaydettiğiniz anahtarı yapıştırın.

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

Hedef bilgisayarı yeniden başlatın

Hata ayıklayıcı bağlandıktan sonra hedef bilgisayarı yeniden başlatın. Bilgisayarı yeniden başlatmanın bir yolu, yöneticinin komut istemindeki shutdown -r -t 0 komutu kullanmaktır.

Hedef bilgisayar yeniden başlatıldıktan sonra hata ayıklayıcının otomatik olarak bağlanması gerekir.

Makine yeniden başlatıldıktan sonra, NIC üretici yazılımı yeni eklenen KDNET PF'ye yeni bir MAC adresi atar ve dbgsettings::busparams yeni eklenen PF'yi gösterir.

2PF bağdaştırıcısının MAC adresini bulma

Yeni eklenen PF, PCI veri yolu yapılandırılmış bir bağlantı noktası olduğundan, NIC üretici yazılımı tarafından yeni eklenen PF'ye atanmış yeni bir MAC adresi değeri olacaktır. kdnet.exe aracı şu anda eklenen 2PF için MAC adresinin görüntülenmesini desteklemiyor.

Yeni MAC adresini bulmanın iki yolu vardır:

Yerel KD oturumuyla WinDbg/KD kullanma

Hedefte windbg.exe -kl yerel çekirdek hata ayıklayıcısını çalıştırın.

.reload /f kdnet.dll komutunu çalıştırarak kdnet.pdb sembol dosyasına erişiminiz olduğundan emin olun

MAC adresini almak için .kdtargetmac komutunu çalıştırın.

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

Satıcı tarafından sağlanan üretici yazılımı araçlarını çalıştırın.

MAC adresini bulmanın bir yolu, satıcı tarafından sağlanan üretici yazılımı araçlarını çalıştırmaktır. Satıcı araçlarını indirme, yükleme ve kullanma hakkında bilgi için NIC satıcısına başvurun.

... 
Base MAC:              98039baa757c           4

MAC adresi alanını bulun. KDNET 2PF MAC adres değerini, kök MAC cihazının son basamağını sırayla bir artırarak hesaplayın. Bu nedenle adresi 98039baa757colan kök cihaz için KDNET 2PF cihazının 98039baa757dadresi olacaktır.

Önceki yapılandırma durumunu geri yükleme - İkinci PCI PF'yi kaldırma

Önceden eklenen PF'yi bir cihazdan kaldırmak için kdnet -removepf seçeneğini ve özgün bus.device.function değerini kullanabilirsiniz. PF, NIC'den ayrılır ve PF tarafından atanan kaynak NIC üretici yazılımı tarafından serbest bırakılır.

KDNET PF'yi cihazdan kaldırmak için yükseltilmiş bir komut istemi açın ve aşağıdaki komutu çalıştırın.

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

Burada bus.dev.fun , PF'nin ilk olarak eklendiği NIC bağdaştırıcısının PCI konum bağlantı noktasıdır. Bu, başlangıçta kdnet -addpf'ye geçirilen aynı PCI konumudur.

-removepf seçeneğinin kullanılması, özgün bus.dev.fun KDNET üzerinden çekirdek hata ayıklamasını yeniden etkinleştirir.

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.

kdnet.exe -removepf komutu, KDNET özgün bus.dev.fun üzerinde etkinleştirileceğinden, yani dbgsettings::busparams özgün ağ bağlantı noktasına işaret edeceğinden, işletim sistemi {default} yükleme seçeneklerinden NO_KDNIC özniteliğini de kaldırır. Bu, KDNET'in yeniden kullanılmasına neden olur ve KDNET'in üzerinde yeniden bir ağ bağlantısı sağlar.

PF kaldırıldıktan sonra BCD değişikliklerinin uygulanması için makinenin yeniden başlatılması gerekir.

shutdown -r -t 0

Ana bilgisayar bağdaştırıcısı yapılandırması sorunlarını çözme

2PF bağdaştırıcısının cihaz yöneticisinde mevcut olduğunu doğrulayın

Yeni NIC bağdaştırıcısının Windows Cihaz Yöneticisi bağdaştırıcı listesinde yeni bir bus.dev.fun bağlantı noktası olduğunu denetleyerek KDNET PF'sinin başarıyla eklendiğini doğrulayabilirsiniz.

Bu diyagramda, çekirdek hata ayıklayıcısı tarafından kullanılmak üzere ayrılmış #2 numaralı bağdaştırıcının da bulunduğu üç farklı bağdaştırıcı gösterilmektedir.

Windows KDNET 2PF tarafından desteklenen ağ bağdaştırıcısı için bir düğüme sahip ağ düğümünü gösteren cihaz yöneticisi.

Yaygın hata iletileri - yeni PF ekleme

C:\KDNET> kdnet -addpf 28.0.0 192.168.137.1 50005

Device Name:\\.\Mlx5Util

Pci Bus:28.0.0

PCI PF şu bağlantı noktasında zaten yapılandırılmış: Hata ayıklama cihazında Error=(0x80004004) Başarısız PF işlemi. Hata ayıklama cihazı KDNET için yapılandırılmamış.

  • Zaten PF olarak eklenmiş olan kök bağlantı noktasına PF eklemeyin veya mevcut PF'yi kaldırmayın.

Yaygın hata iletileri - PF'yi kaldırma

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

Bağdaştırıcı etkin değil: Hata ayıklama cihazında Error=(0x80070002) Başarısız PF işlemi. Hata ayıklama cihazı KDNET için yapılandırılmamış

  • "-removepf/-addpf" komut satırı parametresiyle eklenmiş bir PF bağlantı noktası kullanmayın, çünkü eklenen PF bağlantı noktasındaki herhangi bir işlem hataya neden olur (hata: Bağdaştırıcı bağlantı noktasında etkin değil), çünkü satıcı NIC gelen kutusu sürücüsü açıkça eklenen bir PF'de çalıştırılmayacak şekilde ayarlanmıştır.
  • Her iki komut satırı seçeneği de (-addpf/-removepf) yalnızca kök PCI cihazında kullanılmalıdır.
C:\KDNET> kdnet -removepf 28.0.0 192.168.137.1 50005

Device Name:\\.\Mlx5Util

Pci Bus:28.0.0

Bu bağlantı noktasında kaldırılacak PCI PF yok: Hata ayıklama cihazında Error=(0x80004005) Başarısız PF işlemi. Hata ayıklama cihazı KDNET için yapılandırılmamış

  • Yeni bir PF ekleyip yeniden başlatmadan kaldırmaya karar verirseniz, satıcı NIC üretici yazılımı, yeni eklenen PF'yi tanıyabilmesi için NIC donanımının yeniden başlatılmasını veya sıfırlanmasını gerektirdiğinden hata oluşur.

Yaygın hata iletileri - BCDEdit

NO_KDNIC BCD işletim sistemi {default} yüklemesinde yok .

  • Yeni bir PF ekledikten sonra hata ayıklama cihazını (dbgsettings) değiştirmek/değiştirmek için bcdedit.exe kullanılması önerilmez. kdnet -addpf/removepf komut satırı seçenekleri, hata ayıklama cihazını yapılandıracak ve ayrıca {default}::loadoptions'e otomatik olarak NO_KDNIC belirteç ekleyecek veya kaldıracaktır.

Ayrıca bkz.

Otomatik olarak KDNET Ağ Çekirdeği Hata Ayıklamasını Ayarlama

KDNET Ağ Çekirdeği Hata Ayıklama Ayarlarını Elle Yapılandırma

USB 3.0 xHCI-DBC çekirdek modu hata ayıklama (KDUSB) ayarlama

USB KDNET EEM Kernel-Mode Hata Ayıklama Kurulumu (KDNET-EEM-USB)

El ile Hata Ayıklamayı Ayarlama Kernel-Mode