Zarządzanie wieloma kanałami SMB

Dotyczy: Azure Stack HCI, wersje 22H2 i 21H2; Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows 10

Protokół SMB Multichannel jest częścią protokołu Bloku komunikatów serwera (SMB) 3.0, który zwiększa wydajność sieci i dostępność serwerów plików.

Funkcja SMB Multichannel umożliwia serwerom plików jednoczesne używanie wielu połączeń sieciowych. Ułatwia agregację przepustowości sieci i odporności na uszkodzenia sieci, gdy wiele ścieżek jest dostępnych między klientem SMB 3.0 a serwerem SMB 3.0. Dzięki temu aplikacje serwerowe mogą w pełni wykorzystać całą dostępną przepustowość sieci i zapewnić im większą odporność na awarie sieci.

Funkcja SMB Multichannel zapewnia następujące możliwości:

  • Zwiększona przepływność. Serwer plików może jednocześnie przesyłać dodatkowe dane przy użyciu wielu połączeń dla szybkich kart sieciowych lub wielu kart sieciowych.

  • Odporność na uszkodzenia sieci. Gdy klienci jednocześnie korzystają z wielu połączeń sieciowych, klienci mogą kontynuować bez przerwy pomimo utraty połączenia sieciowego.

  • Konfiguracja automatyczna. Funkcja SMB Multichannel automatycznie odnajduje wiele dostępnych ścieżek sieciowych i dynamicznie dodaje połączenia w razie potrzeby.

Wymagania dotyczące funkcji SMB Multichannel

Ponieważ funkcja SMB Multichannel jest domyślnie włączona, nie trzeba instalować dodatkowych ról, usług ról ani funkcji. Klient SMB automatycznie wykrywa i używa wielu połączeń sieciowych po zidentyfikowaniu konfiguracji. Jednak protokół SMB Multichannel ma następujące wymagania:

  • Co najmniej dwa komputery z systemem operacyjnym Azure Stack HCI, Windows Server lub Windows 10.

  • Co najmniej jedna z następujących konfiguracji:

    • Wiele kart sieciowych

    • Co najmniej jedna karta sieciowa obsługując skalowanie po stronie odbierającej (RSS)

    • Wiele kart sieciowych, które są zespołowe (zobacz tworzenie zespołu kart sieciowych)

    • Co najmniej jedna karta sieciowa, która obsługuje zdalny bezpośredni dostęp do pamięci (RDMA)

Konfigurowanie funkcji SMB Multichannel

W tej sekcji opisano niektóre opcje konfiguracji wdrażania funkcji SMB Multichannel przy użyciu tablicy kart sieciowych. Te konfiguracje są tylko przykładowymi konfiguracjami. Istnieje wiele innych możliwych konfiguracji, które nie zostały uwzględnione w tym temacie.

Pojedyncza karta sieciowa z obsługą funkcji RSS

W tej typowej konfiguracji klient SMB i serwer SMB są konfigurowane przy użyciu jednej karty sieciowej Ethernet (10 GbE). Gdy protokół SMB jest wdrażany bez funkcji SMB Multichannel, a jeśli istnieje tylko jedna sesja protokołu SMB, protokół SMB tworzy jedno połączenie TCP/IP. W przypadku tylko jednego rdzenia procesora CPU ta konfiguracja z natury prowadzi do przeciążenia, zwłaszcza w przypadku wykonywania wielu małych operacji we/wy. W związku z tym potencjał wąskiego gardła wydajności jest znaczący.

Większość bieżących kart sieciowych oferuje funkcję o nazwie Skalowanie po stronie odbierającej (RSS), która umożliwia automatyczne rozłożenie wielu połączeń na wiele rdzeni procesora CPU. Jeśli jednak używasz jednego połączenia, funkcja RSS nie może pomóc. W przypadku korzystania z funkcji SMB Multichannel z kartą sieciową z obsługą funkcji RSS protokół SMB tworzy wiele połączeń TCP/IP dla tej konkretnej sesji. Ta konfiguracja pozwala uniknąć potencjalnego wąskiego gardła w jednym rdzeniu procesora CPU, jeśli wymagana jest wiele małych operacji we/wy.

Wiele kart sieciowych

W tej konfiguracji klient SMB i serwer SMB są konfigurowane przy użyciu wielu kart sieciowych 10 GbE. Gdy protokół SMB jest wdrażany bez funkcji SMB Multichannel, a jeśli istnieje tylko jedna sesja protokołu SMB, protokół SMB używa jednej z dostępnych kart sieciowych do utworzenia pojedynczego połączenia TCP/IP. W tym scenariuszu nie można agregować przepustowości wielu kart sieciowych; na przykład nie można osiągnąć 2 gb na sekundę (Gb/s) w przypadku używania dwóch kart sieciowych 1 GbE. Istnieje również możliwość awarii, jeśli wybrana karta sieciowa zostanie rozłączona lub wyłączona.

Po wdrożeniu protokołu SMB z funkcją SMB Multichannel protokół SMB tworzy wiele połączeń TCP/IP dla jednej sesji z co najmniej jednym połączeniem na interfejs, jeśli karty sieciowe obsługują funkcję RSS. Ta konfiguracja umożliwia protokółowi SMB używanie połączonej przepustowości karty sieciowej, która jest dostępna i umożliwia klientowi SMB kontynuowanie bez przerwy w przypadku awarii karty sieciowej.

Tworzenie zespołu kart interfejsu sieciowego

Usługi Azure Stack HCI i Windows Server obsługują możliwość łączenia wielu kart sieciowych w jedną kartę sieciową przy użyciu funkcji nazywanej tworzeniem zespołu kart sieciowych. Mimo że zespół zawsze zapewnia odporność na uszkodzenia, gdy protokół SMB jest wdrażany bez funkcji SMB Multichannel, protokół SMB tworzy tylko jedno połączenie TCP/IP dla każdego zespołu. Ta konfiguracja prowadzi do ograniczeń zarówno liczby rdzeni procesora CPU, które są zaangażowane, jak i maksymalnego wykorzystania przepustowości zespołu.

Po wdrożeniu protokołu SMB za pomocą protokołu SMB Multichannel protokół SMB tworzy wiele połączeń TCP/IP dla jednej sesji w celu uzyskania lepszej równowagi między rdzeniami procesora CPU i lepszym wykorzystaniem dostępnej przepustowości. Tworzenie zespołu kart interfejsu sieciowego nadal oferuje możliwość pracy w trybie failover, która działa szybciej niż samo używanie funkcji SMB Multichannel. Zalecamy również tworzenie zespołu kart interfejsu sieciowego, ponieważ oferuje ona możliwości pracy w trybie failover innym obciążeniom, które nie korzystają z protokołu SMB, ponieważ te obciążenia nie mogą korzystać z możliwości trybu failover protokołu SMB Multichannel.

Jeśli używasz dedykowanego zestawu kart sieciowych do Bezpośrednie miejsca do magazynowania ruchu, tak jak to jest czasami wykonywane w usłudze Azure Stack HCI, tworzenie zespołu tych kart sieciowych magazynu jest ściśle opcjonalne — nie zapewnia żadnych znaczących korzyści ani wad.

Ważne

W przypadku Windows Server 2012 R2 i wcześniejszych nie używaj tworzenia zespołu kart sieciowych, jeśli zamierzasz korzystać z funkcji RDMA kart sieciowych. W tych systemach operacyjnych zespół kart sieciowych obsługujących funkcję RDMA jest zawsze zgłaszany jako bez funkcji RDMA, ponieważ tworzenie zespołu wyłącza funkcję RDMA karty sieciowej.

Karty sieciowe obsługujące jedną lub wiele kart sieciowych z obsługą funkcji RDMA

Funkcja SMB Multichannel wykrywa funkcje RDMA kart sieciowych, które umożliwiają funkcję SMB Direct o nazwie SMB Direct przez RDMA. Bez funkcji SMB Multichannel protokół SMB używa regularnych połączeń TCP/IP z kartami sieciowymi obsługującymi funkcję RDMA, gdzie wszystkie karty sieciowe zapewniają stos TCP/IP, który istnieje obok nowego stosu RDMA.

Po wdrożeniu protokołu SMB z funkcją SMB Multichannel protokół SMB wykrywa funkcję RDMA karty sieciowej i tworzy wiele połączeń RDMA dla tej pojedynczej sesji z dwoma połączeniami RDMA na interfejs. Ta konfiguracja umożliwia protokółowi SMB korzystanie z wysokiej przepływności, małych opóźnień i niskiego wykorzystania procesora CPU oferowanych przez karty sieciowe z obsługą funkcji RDMA. Zapewnia również odporność na uszkodzenia w przypadku korzystania z wielu interfejsów RDMA.

Ważne

Po utworzeniu połączenia RDMA połączenie TCP/IP dla oryginalnego negocjowania protokołu nie jest już używane. Jednak to połączenie jest utrzymywane w przypadku niepowodzenia innego połączenia RDMA.

Zgodność kart sieciowych obsługujących funkcję SMB Multichannel, RDMA i kart sieciowych

Poniższa tabela zawiera podsumowanie różnych możliwości dostępnych podczas łączenia funkcji SMB Multichannel, RDMA (SMB Direct) i tworzenia zespołu kart interfejsu sieciowego.

Konfigurowanie Przepływność Odporność na uszkodzenia protokołu SMB Odporność na uszkodzenia dla protokołu innego niż SMB Niższe wykorzystanie procesora CPU
Pojedyncza karta sieciowa (bez rss) *
Wiele kart sieciowych (bez rss) ** *
Wiele kart sieciowych (bez rss) z tworzeniem zespołu kart interfejsu sieciowego ** ** *
Pojedyncza karta sieciowa z funkcją RSS *
Wiele kart sieciowych z funkcją RSS ** *
Wiele kart sieciowych z tworzeniem zespołu rss i kart interfejsu sieciowego ** ** *
Pojedyncza karta sieciowa z obsługą funkcji RDMA * *
Wiele kart sieciowych obsługujących funkcję RDMA *** * *
Wiele kart sieciowych obsługujących funkcję RDMA z zespołem kart interfejsu sieciowego *** ** * *

Jeśli używasz Windows Server 2016 lub nowszego, idealnym rozwiązaniem jest użycie wielu kart sieciowych obsługujących funkcję RDMA i łączenie zespołu kart interfejsu sieciowego z funkcją SMB Multichannel. Ta kombinacja zapewnia najlepszą przepływność, zapewnia odporność na uszkodzenia aplikacji korzystających z protokołu SMB i innych protokołów oraz ma najniższy wpływ na procesor.

Jak wspomniano powyżej, w przypadku korzystania z kart sieciowych obsługujących funkcję RDMA na Windows Server 2012 R2 lub wcześniejszym tworzenie zespołu kart interfejsu sieciowego nie jest dobrym rozwiązaniem, ponieważ wyłącza funkcję RDMA karty sieciowej.

Przykładowe konfiguracje bez wielokanałowego protokołu SMB

Jeśli planujesz używać pojedynczej karty sieciowej bez funkcji RSS, nie korzystasz z wielu połączeń sieciowych, dlatego nie jest używany protokół SMB Multichannel. Ponadto jeśli planujesz używać kart sieciowych o różnych szybkościach, funkcja SMB Multichannel automatycznie wybiera najszybszą kartę sieciową. Dzieje się tak, ponieważ karty sieciowe, które są tego samego typu (takie jak RDMA, RSS lub żadna z nich) i mają taką samą szybkość, są jednocześnie używane przez funkcję SMB Multichannel. Wolniejsze karty sieciowe są bezczynne.

Wyłączanie funkcji SMB Multichannel

Zazwyczaj nie trzeba wyłączać funkcji SMB Multichannel. Jeśli jednak chcesz wyłączyć funkcję SMB Multichannel, na przykład w środowisku testowym, użyj następujących procedur Windows PowerShell.

Najpierw połącz się z jednym z serwerów, otwierając sesję programu PowerShell:

Enter-PSSession <server-name>

Aby wyłączyć funkcję SMB Multichannel po stronie serwera, użyj następującego polecenia cmdlet:

Set-SmbServerConfiguration -EnableMultiChannel $false

Aby wyłączyć protokół SMB Multichannel po stronie klienta, użyj następującego polecenia cmdlet:

Set-SmbClientConfiguration -EnableMultiChannel $false

Uwaga

Wyłączenie funkcji SMB Multichannel na kliencie lub serwerze blokuje używanie obu systemów.

Ponowne włączanie funkcji SMB Multichannel

Jeśli wyłączono funkcję SMB Multichannel i chcesz ją ponownie włączyć, skorzystaj z poniższych procedur.

Aby ponownie włączyć funkcję SMB Multichannel po stronie serwera, użyj następującego polecenia cmdlet:

Set-SmbServerConfiguration -EnableMultiChannel $true

Aby ponownie włączyć funkcję SMB Multichannel po stronie klienta, użyj następującego polecenia cmdlet:

Set-SmbClientConfiguration -EnableMultiChannel $true

Uwaga

Należy ponownie włączyć funkcję SMB Multichannel zarówno na kliencie, jak i na serwerze, aby ponownie go użyć.

Testowanie wielokanałowego protokołu SMB

W tej sekcji opisano niektóre scenariusze testowania SMB Multichannel, który obejmuje porównanie kopii pliku z, a następnie bez funkcji SMB Multichannel i celowo powodując niepowodzenie karty sieciowej podczas operacji kopiowania plików.

Porównywanie kopii pliku z funkcją SMB Multichannel i bez protokołu SMB

Aby zmierzyć zwiększoną przepływność zapewnianą przez funkcję SMB Multichannel, wykonaj następujące testy. Uruchom ponownie zarówno serwer, jak i klienta przed każdym testem, aby upewnić się, że działają w podobnych warunkach.

  1. Skonfiguruj funkcję SMB Multichannel przy użyciu jednej z wcześniej opisanych konfiguracji.

  2. Zmierz czas potrzebny na wykonanie długotrwałej operacji kopiowania plików przy użyciu funkcji SMB Multichannel.

  3. Wyłącz funkcję SMB Multichannel. Aby uzyskać instrukcje, zobacz Wyłączanie funkcji SMB Multichannel.

  4. Zmierz czas potrzebny na wykonanie tej samej kopii pliku bez funkcji SMB Multichannel.

  5. Włącz ponownie funkcję SMB Multichannel. Aby uzyskać instrukcje, zobacz Ponowne włączanie funkcji SMB Multichannel.

  6. Porównaj dwa wyniki.

Ważne

Aby uniknąć wpływu na wydajność buforowania, najpierw skopiuj dużą ilość danych przekraczających rozmiar dostępnej pamięci. Następnie ponownie wykonaj operację kopiowania z pierwszą operacją kopiowania służącą jako rozgrzewka. Czas tylko drugiej operacji kopiowania.

Przyczyna niepowodzenia jednej z kart sieciowych podczas kopiowania pliku za pomocą funkcji SMB Multichannel

Aby potwierdzić możliwość trybu failover wielokanałowego protokołu SMB:

  1. Upewnij się, że funkcja SMB Multichannel działa w konfiguracji wielu kart sieciowych.

  2. Wykonaj długotrwałą operację kopiowania plików.

  3. Gdy operacja kopiowania plików jest uruchomiona, zasymuluj awarię jednej ze ścieżek sieciowych, odłączając jeden z kabli lub wyłączając jedną z kart sieciowych.

  4. Upewnij się, że kopia pliku nadal używa pozostałej karty sieciowej i działa bez żadnych błędów kopiowania plików.

Upewnij się, że nie ma innych obciążeń, które używają rozłączonej ścieżki połączenia sieciowego. Ten środek ostrożności pozwala uniknąć ewentualnego błędu w obciążeniach, które nie korzystają z funkcji SMB Multichannel.

Sprawdź, czy funkcja SMB Multichannel działa

Użyj poniższej procedury, aby sprawdzić, czy funkcja SMB Multichannel działa.

  1. Aby sprawdzić poprawną konfigurację karty sieciowej, wpisz następujące polecenie w Windows PowerShell na serwerze SMB i kliencie SMB.

    Get-NetAdapter
    Get-NetAdapterRSS
    Get-NetAdapterRDMA
    Get-NetAdapterHardwareInfo
    
  2. Aby sprawdzić, czy funkcja SMB Multichannel jest włączona, upewnij się, że protokół SMB poprawnie identyfikuje karty sieciowe i czy funkcje RSS i RDMA karty sieciowej są prawidłowo identyfikowane, wykonaj następujące czynności:

    Na kliencie SMB wpisz następujące polecenie w Windows PowerShell:

    Get-SmbClientConfiguration | Select EnableMultichannel
    Get-SmbClientNetworkInterface
    

    Na serwerze SMB wpisz następujące polecenie w Windows PowerShell:

    Get-SmbServerConfiguration | Select EnableMultichannel
    Get-SmbServerNetworkInterface
    
  3. Na kliencie SMB wykonaj długotrwałą operację kopiowania plików, która tworzy trwającą sesję z serwerem SMB. Gdy operacja kopiowania jest uruchomiona, wpisz następujące polecenie w Windows PowerShell, aby sprawdzić, czy połączenie korzysta z odpowiedniej wersji protokołu SMB i czy funkcja SMB Multichannel działa.

    Get-SmbConnection
    Get-SmbMultichannelConnection
    Get-SmbMultichannelConnection -IncludeNotSelected
    

Następne kroki

Aby uzyskać powiązane informacje, zobacz również: