Udostępnij za pomocą


Wydajność bramy SDN

W systemie Windows Server 2016 jednym z problemów klienta była niezdolność bramy SDN do spełnienia wymagań przepływności nowoczesnych sieci. Przepływność sieci w tunelach IPsec i GRE miała ograniczenia; przepływność pojedynczego połączenia dla IPsec wynosiła około 300 Mb/s, a dla GRE około 2,5 Gb/s.

Począwszy od systemu Windows Server 2019, znacznie poprawiliśmy wydajność bramy SDN, a liczby wzrosła odpowiednio do 1,8 Gb/s i 15 Gb/s dla połączeń IPsec i GRE. Wszystko to, ze znacznymi redukcjami cykli procesora CPU/bajtów, zapewniając w ten sposób ultrawydajną przepływność przy znacznie mniejszym wykorzystaniu procesora CPU.

Umożliwienie wysokiej wydajności dzięki bramom

W przypadku połączeń GRE, po wdrożeniu/uaktualnieniu kompilacji Windows Server 2019 na maszynach wirtualnych bramy, powinna być zauważalna automatyczna poprawa wydajności. Nie są wykonywane żadne kroki ręczne.

W przypadku połączeń IPsec domyślnie podczas tworzenia połączenia dla sieci wirtualnych uzyskuje się ścieżkę danych i numery wydajności systemu Windows Server 2016. Aby włączyć ścieżkę danych systemu Windows Server 2019, wykonaj następujące czynności:

  1. Na maszynie wirtualnej bramy SDN przejdź do konsoli Services (services.msc).
  2. Znajdź usługę o nazwie Azure Gateway Service i ustaw typ uruchamiania na Wartość Automatyczna.
  3. Uruchom ponownie maszynę wirtualną bramy. Aktywne połączenia na tej bramie są przełączane awaryjnie do zapasowej maszyny wirtualnej bramy.
  4. Powtórz poprzednie kroki dla pozostałych maszyn wirtualnych bramy.

Aby połączenia IPsec o wysokiej wydajności działały, muszą zostać spełnione następujące wymagania:

  • Adres sieci Translation-Traversal (NAT-T) powinien być włączony na bramie lokalnej. Podczas włączania połączeń IPsec o wysokiej wydajności brama SDN konfiguruje regułę NAT, dlatego należy również włączyć NAT-T w lokalnej bramie.
  • Brama lokalna powinna zezwalać na pakiety protokołu UDP (User Datagram Protocol) na portach 500 i 4500 oraz protokołach 50 i 51.

Tip

Aby uzyskać najlepsze wyniki wydajności, upewnij się, że szyfrowaniaTransformationConstant i authenticationTransformConstant w ustawieniach quickMode połączenia IPsec używa zestawu szyfrowania GCMAES256 .

Aby uzyskać maksymalną wydajność, sprzęt serwera bramy musi obsługiwać zestawy instrukcji AES-NI i PCLMULQDQ procesora CPU. Są one dostępne w przypadku dowolnego procesora Westmere (32nm) i nowszego procesora Intel z wyjątkiem modeli, w których AES-NI został wyłączony. Możesz zapoznać się z dokumentacją dostawcy sprzętu, aby sprawdzić, czy procesor obsługuje zestawy instrukcji AES-NI i PCLMULQDQ.

Poniżej znajduje się przykład interfejsu REST połączenia IPsec z optymalnymi algorytmami zabezpieczeń:

# NOTE: The virtual gateway must be created before creating the IPsec connection. More details here.
# Create a new object for Tenant Network IPsec Connection
$nwConnectionProperties = New-Object Microsoft.Windows.NetworkController.NetworkConnectionProperties

# Update the common object properties
$nwConnectionProperties.ConnectionType = "IPSec"
$nwConnectionProperties.OutboundKiloBitsPerSecond = 2000000
$nwConnectionProperties.InboundKiloBitsPerSecond = 2000000

# Update specific properties depending on the Connection Type
$nwConnectionProperties.IpSecConfiguration = New-Object Microsoft.Windows.NetworkController.IpSecConfiguration
$nwConnectionProperties.IpSecConfiguration.AuthenticationMethod = "PSK"
$nwConnectionProperties.IpSecConfiguration.SharedSecret = "111_aaa"

$nwConnectionProperties.IpSecConfiguration.QuickMode = New-Object Microsoft.Windows.NetworkController.QuickMode
$nwConnectionProperties.IpSecConfiguration.QuickMode.PerfectForwardSecrecy = "PFS2048"
$nwConnectionProperties.IpSecConfiguration.QuickMode.AuthenticationTransformationConstant = "GCMAES256"
$nwConnectionProperties.IpSecConfiguration.QuickMode.CipherTransformationConstant = "GCMAES256"
$nwConnectionProperties.IpSecConfiguration.QuickMode.SALifeTimeSeconds = 3600
$nwConnectionProperties.IpSecConfiguration.QuickMode.IdleDisconnectSeconds = 500
$nwConnectionProperties.IpSecConfiguration.QuickMode.SALifeTimeKiloBytes = 2000

$nwConnectionProperties.IpSecConfiguration.MainMode = New-Object Microsoft.Windows.NetworkController.MainMode
$nwConnectionProperties.IpSecConfiguration.MainMode.DiffieHellmanGroup = "Group2"
$nwConnectionProperties.IpSecConfiguration.MainMode.IntegrityAlgorithm = "SHA256"
$nwConnectionProperties.IpSecConfiguration.MainMode.EncryptionAlgorithm = "AES256"
$nwConnectionProperties.IpSecConfiguration.MainMode.SALifeTimeSeconds = 28800
$nwConnectionProperties.IpSecConfiguration.MainMode.SALifeTimeKiloBytes = 2000

# L3 specific configuration (leave blank for IPSec)
$nwConnectionProperties.IPAddresses = @()
$nwConnectionProperties.PeerIPAddresses = @()

# Update the IPv4 Routes that are reachable over the site-to-site VPN Tunnel
$nwConnectionProperties.Routes = @()
$ipv4Route = New-Object Microsoft.Windows.NetworkController.RouteInfo
$ipv4Route.DestinationPrefix = "<<On premise subnet that must be reachable over the VPN tunnel. Ex: 10.0.0.0/24>>"
$ipv4Route.metric = 10
$nwConnectionProperties.Routes += $ipv4Route

# Tunnel Destination (Remote Endpoint) Address
$nwConnectionProperties.DestinationIPAddress = "<<Public IP address of the On-Premise VPN gateway. Ex: 192.168.3.4>>"

# Add the new Network Connection for the tenant. Note that the virtual gateway must be created before creating the IPsec connection. $uri is the REST URI of your deployment and must be in the form of “https://<REST URI>”
New-NetworkControllerVirtualGatewayNetworkConnection -ConnectionUri $uri -VirtualGatewayId $virtualGW.ResourceId -ResourceId "Contoso_IPSecGW" -Properties $nwConnectionProperties -Force

Wyniki testowania

Przeprowadziliśmy obszerne testy wydajnościowe bram SDN w naszych laboratoriach testowych. W testach porównaliśmy wydajność bramy sieciowej z systemem Windows Server 2019 w scenariuszach SDN i poza SDN. Wyniki i szczegóły konfiguracji testów można znaleźć w artykule w blogu tutaj.