SMB Direct
System Windows Server zawiera funkcję o nazwie Server Message Block (SMB) Direct, która obsługuje korzystanie z kart sieciowych, które mają możliwość zdalnego bezpośredniego dostępu do pamięci (RDMA). Karty sieciowe, które mają funkcję RDMA, mogą działać pełną szybkością z mniejszym opóźnieniem bez naruszania użycia procesora. W przypadku obciążeń, takich jak Hyper-V lub Microsoft SQL Server, ta funkcja umożliwia zdalnemu serwerowi plików przypominanie magazynu lokalnego. Funkcja SMB Direct jest automatycznie konfigurowana i domyślnie włączona w systemie Windows Server 2012 i przyszłych iteracji.
Korzystanie z protokołu SMB Direct zapewnia:
- zwiększona przepływność: stosuje pełną przepływność sieci o dużej szybkości, w których karty sieciowe koordynują transfer dużych ilości danych z szybkością linii.
- Niska latencja: Zapewnia szybkie odpowiedzi na żądania sieciowe, co sprawia, że zdalna pamięć plików sprawia wrażenie jak bezpośrednio dołączona pamięć blokowa.
- niskie wykorzystanie procesora CPU: używa mniejszej liczby cykli procesora PODCZAS przesyłania danych za pośrednictwem sieci, co pozostawia większą moc dostępną dla aplikacji serwerowych.
Funkcję SMB Direct można używać w klastrze trybu failover, jednak należy upewnić się, że sieci klastra używane do dostępu klienta są wystarczające dla protokołu SMB Direct. Klaster w trybie awaryjnym obsługuje używanie wielu sieci do dostępu klienta, jak również kart sieciowych z obsługą RSS (skalowanie po stronie odbioru) i RDMA.
Notatka
Można użyć SMB Direct w systemie operacyjnym zarządzającym Hyper-V, aby obsługiwać korzystanie z Hyper-V przez SMB oraz udostępniać magazyn maszynie wirtualnej, która korzysta ze stosu przechowywania Hyper-V. Jednak karty sieciowe obsługujące funkcję RDMA nie są bezpośrednio widoczne dla klienta Hyper-V. Nawet jeśli podłączasz kartę sieciową z funkcją RDMA do przełącznika wirtualnego, wirtualne karty sieciowe utworzone przez przełącznik nie mogą obsługiwać funkcji RDMA.
Wymagania
Poniżej przedstawiono wymagania dotyczące protokołu SMB Direct:
- Co najmniej jedna karta sieciowa z funkcją RDMA.
- Co najmniej dwa komputery z co najmniej jednym z następujących systemów operacyjnych:
- System Windows Server 2012 lub nowszy.
- Windows 10 Enterprise lub nowszy.
- Windows 10 Education i nowsze.
- System Windows 10 Pro dla stacji roboczych i nowszych
- Windows 10 Pro 22H2 (czysta instalacja, nie uaktualniona ze starszych wersji) i nowsze.
Notatka
Rodzina systemów Windows 10 i Windows 11 jest ograniczona tylko do klienta i nie może działać jako serwer SMB Direct.
SMB Multichannel
Funkcja SMB Multichannel jest funkcją odpowiedzialną za wykrywanie funkcji RDMA kart sieciowych w celu włączenia funkcji SMB Direct. Bez SMB Multichannel, SMB używa zwykłego protokołu TCP/IP z kartami sieciowymi obsługującymi funkcję RDMA (wszystkie karty sieciowe zapewniają stos TCP/IP wraz z nowym stosem RDMA).
Dzięki funkcji SMB Multichannel protokół SMB wykrywa, czy karta sieciowa ma funkcję RDMA, i tworzy wiele połączeń RDMA dla tej jednej sesji (dwie na interfejs). Ta funkcja umożliwia protokółowi SMB korzystanie z wysokiej przepływności, małych opóźnień i niskiego wykorzystania procesora CPU oferowanych przez karty sieciowe obsługujące funkcję RDMA. Zapewnia również odporność na uszkodzenia, jeśli używasz wielu interfejsów RDMA.
Można zestawiać karty sieciowe z obsługą RDMA za pomocą Wbudowanego zestawiania przełączników (SET) począwszy od systemu Windows Server 2016. Po utworzeniu co najmniej jednego połączenia sieciowego RDMA połączenie TCP/IP używane do negocjacji protokołu oryginalnego nie jest już używane. Jednak połączenie TCP/IP jest zachowane na wypadek niepowodzenia połączeń sieciowych RDMA.
Wyłączenie funkcji SMB Multichannel powoduje również wyłączenie funkcji SMB Direct. Funkcja SMB Multichannel wykrywa możliwości karty sieciowej i określa, czy karta sieciowa obsługuje funkcję RDMA. Urządzenia klienckie nie mogą używać protokołu SMB Direct, jeśli funkcja SMB Multichannel jest wyłączona.
Szyfrowanie SMB
Począwszy od systemów Windows Server 2022 i Windows 11, funkcja SMB Direct obsługuje teraz szyfrowanie. Wcześniej włączenie szyfrowania SMB wyłączyło bezpośrednie umieszczanie danych, co sprawia, że wydajność funkcji RDMA jest tak niska, jak tcp. Teraz dane są szyfrowane przed zapisaniem, co prowadzi do stosunkowo niewielkiego obniżenia wydajności przy użyciu ochrony prywatności pakietów AES-128 i AES-256. Aby uzyskać więcej informacji na temat konfigurowania szyfrowania SMB, zobacz ulepszenia zabezpieczeń protokołu SMB.
Ponadto klastry failover systemu Windows Server obsługują teraz bardziej szczegółową kontrolę szyfrowania komunikacji magazynowej pomiędzy węzłami, zarówno dla udostępnionych woluminów klastra (CSV), jak i warstwy magistrali magazynowej (SBL). Oznacza to, że w przypadku korzystania z bezpośrednich miejsc do magazynowania i funkcji SMB Direct można zdecydować się na szyfrowanie komunikacji między wschód-zachód w ramach samego klastra w celu zapewnienia wyższych zabezpieczeń.
Wyłączanie i włączanie funkcji SMB Direct
Klient SMB automatycznie wykrywa i używa wielu połączeń sieciowych, jeśli zostanie zidentyfikowana odpowiednia konfiguracja. Ponieważ funkcja SMB Direct jest domyślnie włączona, po wyłączeniu należy ją ręcznie ponownie włączyć zawsze, gdy jest to konieczne.
Zazwyczaj nie trzeba wyłączać funkcji SMB Direct, jednak można ją wyłączyć wraz z jej funkcjami, uruchamiając następujące polecenia programu Windows PowerShell.
Aby wyłączyć funkcję SMB Direct, wpisz:
Disable-WindowsOptionalFeature -Online -FeatureName SMBDirect
Aby wyłączyć funkcję SMB Multichannel po stronie serwera, wpisz:
Set-SmbServerConfiguration -EnableMultiChannel $false
Aby wyłączyć funkcję SMB Multichannel po stronie klienta, wpisz:
Set-SmbClientConfiguration -EnableMultiChannel $false
Aby wyłączyć funkcję RDMA dla określonego interfejsu, wpisz:
Disable-NetAdapterRdma <name>
Aby wyłączyć funkcję RDMA dla wszystkich interfejsów, wpisz:
Set-NetOffloadGlobalSetting -NetworkDirect Disabled
Po wyłączeniu funkcji RDMA na kliencie lub serwerze systemy nie mogą go używać. Network Direct to wewnętrzna nazwa podstawowej obsługi sieci systemu Windows Server dla interfejsów RDMA.
Aby sprawdzić, w którym stanie jest obecnie skonfigurowany program SMB Direct, uruchom następujące polecenie cmdlet:
Get-WindowsOptionalFeature -Online -FeatureName SMBDirect
Testowanie protokołu SMB Direct
Wydajność protokołu SMB Direct można przetestować, mierząc przepływność podczas uruchamiania dużej kopii plików. Przed rozpoczęciem testowania sprawdź, czy karta sieciowa obsługuje funkcję RDMA przy użyciu programu PowerShell.
Po stronie serwera wpisz:
Get-SmbServerNetworkInterface
Po stronie klienta wpisz:
Get-SmbClientNetworkInterface
Po zweryfikowaniu, że karta sieciowa obsługuje RDMA, wykonaj następujące czynności:
- Wyłącz funkcję RDMA na karcie sieciowej, zobacz Wyłączanie i włączanie funkcji SMB Direct.
- Mierzenie czasu potrzebnego na uruchomienie dużej kopii pliku bez użycia protokołu SMB Direct.
- Ponownie włącz funkcję RDMA na karcie sieciowej, wykonaj tę samą kopię pliku, a następnie porównaj dwa wyniki.
- Aby uniknąć wpływu buforowania, wykonaj następujące czynności:
- Skopiuj dużą ilość danych (więcej danych niż pamięć jest w stanie obsłużyć).
- Skopiuj dane dwa razy, pierwszą kopię wykonując w ramach ćwiczenia, a mierząc czas przy drugiej kopii.
- Uruchom ponownie zarówno serwer, jak i klienta przed każdym testem, aby upewnić się, że działają one w podobnych warunkach.
Ponadto można obserwować liczniki wydajności podczas testowania przy użyciu tego samego scenariusza korzystającego z narzędzia Monitor wydajności, wykonując następujące czynności:
- Wybierz pozycję Start, wpisz perfmon, naciśnij Enter.
- W okienku po lewej stronie w obszarze narzędzia do monitorowania > wybierz pozycję Monitor wydajności.
- W okienku po prawej stronie wybierz zieloną ikonę "+", aby dodać nowy licznik.
- W oknie dialogowym Dodawanie liczników rozwiń węzeł SMB Direct Connection.
- Wybierz Bajty odczytu/s RDMA i Bajty zapisu/s RDMA, wybierz Dodaj, a następnie wybierz OK.
Zdolność przełączenia awaryjnego SMB Direct
Poniżej przedstawiono sposób potwierdzania możliwości trybu failover protokołu SMB Direct:
- Upewnij się, że SMB Direct działa w konfiguracji z wieloma kartami sieciowymi.
- Uruchom dużą kopię pliku. Podczas procesu kopiowania zasymuluj awarię jednej ze ścieżek sieciowych, odłączając jeden z kabli lub wyłączając jedną z kart sieciowych.
- Upewnij się, że kopiowanie pliku jest kontynuowane przy użyciu jednej z pozostałych kart sieciowych i że nie ma błędów kopiowania plików.
Napiwek
Aby uniknąć błędów obciążenia, które nie korzysta z protokołu SMB Direct, upewnij się, że nie ma żadnych innych obciążeń przy użyciu rozłączonej ścieżki sieciowej.