Instradare il traffico tra reti nell'infrastruttura SDN
Questo articolo descrive come instradare il traffico tra reti in un'infrastruttura SDN (Software Defined Network) configurata nell'infrastruttura di System Center Virtual Machine Manager (VMM).
Un gateway RAS SDN consente di instradare il traffico di rete tra reti fisiche e virtuali, indipendentemente dalla posizione in cui si trovano le risorse. Il gateway RAS SDN è multi-tenant, con supporto BGP (Boarder Gateway Protocol) e supporta la connettività tramite la rete privata virtuale da sito a sito (VPN) usando IPsec o Generic Routing Encapsulation (GRE) o l'inoltro di livello 3. Altre informazioni.
Nota
- Da VMM 2019 UR1, un tipo di rete connesso viene modificato come Rete connessa.
- VMM 2019 UR2 e versioni successive supporta IPv6.
- IPv6 è supportato per il tunnel IPSec, il tunnel GRE e il tunnel di livello L3.
Nota
- IPv6 è supportato per il tunnel IPSec, il tunnel GRE e il tunnel di livello L3.
Prima di iniziare
Verificare quanto segue:
Vengono distribuiti controller di rete SDN, bilanciamento del carico software SDN e gateway RAS SDN.
Viene creata una rete VM SDN con virtualizzazione di rete.
Configurare connessioni VPN da sito a sito tramite VMM
Una connessione VPN da sito a sito consente di connettere in modo sicuro due reti in posizioni fisiche diverse usando Internet.
Per i provider di servizi cloud (CSP) che ospitano molti tenant nel data center, il gateway RAS SDN offre una soluzione gateway multi-tenant che consente ai tenant di accedere e gestire le proprie risorse tramite connessioni VPN da sito a sito da siti remoti, che a sua volta consente il traffico di rete tra le risorse virtuali nel data center e la relativa rete fisica.
VMM 2022 supporta dual stack (Ipv4 + Ipv6) per i componenti SDN.
Per abilitare IPv6 per la connessione VPN da sito a sito, la subnet di routing deve essere sia IPv4 che IPv6. Per consentire il funzionamento del gateway in IPv6, fornire indirizzi IPv4 e IPv6 separati da punto e virgola (;) e specificare l'indirizzo IPv6 nell'endpoint remoto. Ad esempio, 192.0.2.1/23; 2001:0db8:85a3:0000:0000:8a2e:0370::/64. Per specificare l'intervallo VIP, non usare la forma abbreviata dell'indirizzo IPv6; usare il formato '2001:db8:0:200:0:0:0:7' anziché '2001:db8:0:200::7'.
Configurare la connessione IPSec
Utilizzare la procedura seguente:
- Selezionare la rete VM che si vuole configurare una connessione IPSec da sito a sito e selezionare Connettività.
- Selezionare Connetti a un'altra rete tramite un tunnel VPN. Facoltativamente, per abilitare il peering BGP nel data center, selezionare Abilita BGP (Border Gateway Protocol).
- Selezionare il servizio controller di rete per il dispositivo gateway.
- Selezionare l'opzione Connessioni>VPN Aggiungi>aggiungi tunnel IPSec.
- Immettere una subnet come illustrato nel diagramma seguente. Questa subnet viene usata per instradare i pacchetti dalla rete VM. Non è necessario preconfigurare questa subnet nel data center.
- Immettere un nome per la connessione e l'indirizzo IP dell'endpoint remoto. Facoltativamente, configurare la larghezza di banda.
- In Autenticazione selezionare il tipo di autenticazione da usare. Se si sceglie di eseguire l'autenticazione usando un account Runas, creare un account utente con un nome utente e la chiave IPSec come password per l'account.
- In Route immettere tutte le subnet remote a cui connettersi. Se è stata selezionata l'opzione Abilita BGP (Border Gateway Protocol) nella pagina Connettività , le route non sono necessarie.
- Nella scheda Avanzate accettare le impostazioni predefinite.
- Se è stata selezionata l'opzione Abilita BGP (Border Gateway Protocol) nella pagina Connettività, è possibile compilare l'ASN, l'IP BGP peer e il relativo ASN nella pagina della procedura guidata Border Gateway Protocol , come illustrato di seguito.
- Per convalidare la connessione, provare a eseguire il ping dell'indirizzo IP dell'endpoint remoto da una delle macchine virtuali nella rete VM.
Configurare il tunneling GRE
I tunnel GRE consentono la connettività tra reti virtuali tenant e reti esterne. Poiché il protocollo GRE è leggero e il supporto per GRE è disponibile nella maggior parte dei dispositivi di rete, diventa una scelta ideale per il tunneling in cui la crittografia dei dati non è necessaria. Il supporto gre nei tunnel da sito a sito (S2S) facilita l'inoltro del traffico tra reti virtuali tenant e reti esterne tenant.
Utilizzare la procedura seguente:
- Selezionare la rete VM in cui si vuole configurare una connessione GRE da sito a sito e selezionare Connettività.
- Selezionare Connetti a un'altra rete tramite un tunnel VPN. Facoltativamente, per abilitare il peering BGP nel data center, selezionare Abilita BGP (Border Gateway Protocol).
- Selezionare il servizio controller di rete per il dispositivo gateway.
- Selezionare Connessioni>VPN Aggiungi>tunnel GRE.
- Immettere una subnet come illustrato nel diagramma seguente. Questa subnet viene usata per instradare i pacchetti dalla rete VM. Questa subnet non deve essere preconfigurata nel data center.
- Immettere un nome di connessione e specificare l'indirizzo IP dell'endpoint remoto.
- Immettere il tasto GRE.
- Facoltativamente, è possibile completare gli altri campi in questa schermata; questi valori non sono necessari per configurare una connessione.
- In Route aggiungere tutte le subnet remote a cui connettersi. Se è stata selezionata l'opzione Abilita BGP (Border Gateway Protocol) in Connettività, è possibile lasciare vuota questa schermata e completare invece i campi ASN, IP BGP peer e ASN nella scheda Protocollo gateway di confine.
- È possibile usare le impostazioni predefinite per le impostazioni rimanenti.
- Per convalidare la connessione, provare a eseguire il ping dell'indirizzo IP dell'endpoint remoto da una delle macchine virtuali nella rete VM.
Configurare le connessioni IPsec e GRE nel sito remoto
Nel dispositivo peer remoto usare l'indirizzo IP dell'endpoint di rete della macchina virtuale dall'interfaccia utente di VMM come indirizzo di destinazione durante la configurazione della connessione IPSec\GRE.
Configurare l'inoltro L3
L3 l'inoltro consente la connettività tra l'infrastruttura fisica nel data center e l'infrastruttura virtualizzata nel cloud di virtualizzazione della rete Hyper-V.
Usando l'inoltro L3, le macchine virtuali di rete tenant possono connettersi a una rete fisica tramite il gateway SDN di Windows Server 2016, già configurato in un ambiente SDN. In questo caso, il gateway SDN funge da router tra la rete virtualizzata e la rete fisica.
Per altre informazioni, vedere questi articoli: Gateway server Windows come gateway di inoltro e disponibilità elevata del gateway RAS.
Prima di provare a configurare L3, verificare quanto segue:
- Assicurarsi di aver eseguito l'accesso come amministratore nel server VMM.
- È necessario configurare una rete logica hop successivo univoca, con ID VLAN univoco, per ogni rete VM tenant per cui è necessario configurare l'inoltro L3. È necessario eseguire il mapping 1:1 tra una rete tenant e la rete fisica corrispondente (con ID VLAN univoco).
Usare la procedura seguente per creare la rete logica hop successivo in SCVMM:
Nella console VMM selezionare Reti logiche, fare clic con il pulsante destro del mouse e selezionare Crea rete logica.
Nella pagina Impostazioni scegliere Una rete connessa e selezionare la casella di controllo Crea una rete VM con lo stesso nome per consentire alle macchine virtuali di accedere direttamente a questa rete logica e gestita da Controller di rete Microsoft
Creare un pool IP per questa nuova rete logica.
L'indirizzo IP di questo pool è necessario nello script per configurare l'inoltro L3.
Nella tabella seguente vengono forniti esempi di connessioni L3 dinamiche e statiche.
Parametro | Dettagli/valori di esempio |
---|---|
L3VPNConnectionName | Nome definito dall'utente per la connessione di rete di inoltro L3. Esempio: Contoso_L3_GW |
VmNetworkName | Nome della rete virtuale tenant raggiungibile tramite la connessione di rete L3. Questa rete deve esistere durante l'esecuzione dello script. Esempio: ContosoVMNetwork |
NextHopVMNetworkName | Nome definito dall'utente per la rete vm hop successiva, creata come prerequisito. Rappresenta la rete fisica che vuole comunicare con la rete VM tenant. Questa rete deve esistere durante l'esecuzione di questo script. Esempio: Contoso_L3_Network |
LocalIPAddresses | Indirizzi IP da configurare nell'interfaccia di rete L3 del gateway SDN. Questo indirizzo IP deve appartenere alla rete logica hop successivo creata. È anche necessario specificare la subnet mask. Esempio: 10.127.134.55/25 |
PeerIPAddresses | Indirizzo IP del gateway di rete fisico, raggiungibile tramite la rete logica L3. Questo indirizzo IP deve appartenere alla rete logica hop successivo creata nei prerequisiti. Questo indirizzo IP fungerà da hop successivo una volta che il traffico destinato alla rete fisica dalla rete VM tenant raggiungerà il gateway SDN. Esempio: 10.127.134.65 |
GatewaySubnet | Subnet da usare per il routing tra il gateway HNV e la rete virtuale tenant. È possibile usare qualsiasi subnet, assicurarsi che non si sovrapponga alla rete logica hop successivo. Esempio:192.168.2.0/24 |
RoutingSubnets | Route statiche che devono trovarsi nell'interfaccia L3 del gateway HNV. Queste route sono per le subnet di rete fisiche, che devono essere raggiungibili dalla rete VM tenant tramite la connessione L3. |
EnableBGP | Opzione per abilitare BGP. Impostazione predefinita: false. |
TenantASNRoutingSubnets | Numero ASN del gateway tenant, solo se BGP è abilitato. |
Eseguire lo script seguente per configurare l'inoltro L3. Fare riferimento alla tabella precedente per verificare l'identificazione di ogni parametro di script.
param (
[Parameter(Mandatory=$true)]
# Name of the L3 VPN connection
$L3VPNConnectionName,
[Parameter(Mandatory=$true)]
# Name of the VM network to create gateway
$VmNetworkName,
[Parameter(Mandatory=$true)]
# Name of the Next Hop one connected VM network
# used for forwarding
$NextHopVmNetworkName,
[Parameter(Mandatory=$true)]
# IPAddresses on the local side that will be used
# for forwarding
# Format should be @("10.10.10.100/24")
$LocalIPAddresses,
[Parameter(Mandatory=$true)]
# IPAddresses on the remote side that will be used
# for forwarding
# Format should be @("10.10.10.200")
$PeerIPAddresses,
[Parameter(Mandatory=$false)]
# Subnet for the L3 gateway
# default value 10.254.254.0/29
$GatewaySubnet = "10.254.254.0/29",
[Parameter(Mandatory=$false)]
# List of subnets for remote tenants to add routes for static routing
# Format should be @("14.1.20.0/24","14.1.20.0/24");
$RoutingSubnets = @(),
[Parameter(Mandatory=$false)]
# Enable BGP in the tenant space
$EnableBGP = $false,
[Parameter(Mandatory=$false)]
# ASN number for the tenant gateway
# Only applicable when EnableBGP is true
$TenantASN = "0"
)
# Import SC-VMM PowerShell module
Import-Module virtualmachinemanager
# Retrieve Tenant VNET info and exit if VM Network not available
$vmNetwork = Get-SCVMNetwork -Name $VmNetworkName;
if ($vmNetwork -eq $null)
{
Write-Verbose "VM Network $VmNetworkName not found, quitting"
return
}
# Retrieve L3 Network info and exit if VM Network not available
$nextHopVmNetwork = Get-SCVMNetwork -Name $NextHopVmNetworkName;
if ($nextHopVmNetwork -eq $null)
{
Write-Verbose "Next Hop L3 VM Network $NextHopVmNetworkName not found, quitting"
return
}
# Retrieve gateway Service and exit if not available
$gatewayDevice = Get-SCNetworkGateway | Where {$_.Model -Match "Microsoft Network Controller"};
if ($gatewayDevice -eq $null)
{
Write-Verbose "Gateway Service not found, quitting"
return
}
# Retrieve Tenant Virtual Gateway info
$vmNetworkGatewayName = $VmNetwork.Name + "_Gateway";
$VmNetworkGateway = Get-SCVMNetworkGateway -Name $vmNetworkGatewayName -VMNetwork $vmNetwork
# Create a new Tenant Virtual Gateway if not configured
if($VmNetworkGateway -eq $null)
{
if($EnableBGP -eq $false)
{
# Create a new Virtual Gateway for tenant
$VmNetworkGateway = Add-SCVMNetworkGateway -Name $vmNetworkGatewayName -EnableBGP $false -NetworkGateway $gatewayDevice -VMNetwork $vmNetwork -RoutingIPSubnet $GatewaySubnet;
}
else
{
if($TenantASN -eq "0")
{
Write-Verbose "Please specify valid ASN when using BGP"
return
}
# Create a new Virtual Gateway for tenant
$VmNetworkGateway = Add-SCVMNetworkGateway -Name $vmNetworkGatewayName -EnableBGP $true -NetworkGateway $gatewayDevice -VMNetwork $vmNetwork -RoutingIPSubnet $GatewaySubnet -AutonomousSystemNumber $TenantASN;
}
}
if ($VmNetworkGateway -eq $null)
{
Write-Verbose "Could not Find / Create Virtual Gateway for $($VmNetwork.Name), quitting"
return
}
# Check if the network connection already exists
$vpnConnection = Get-SCVPNConnection -VMNetworkGateway $VmNetworkGateway -Name $L3VPNConnectionName
if ($vpnConnection -ne $null)
{
Write-Verbose "L3 Network Connection for $($VmNetwork.Name) already configured, skipping"
}
else
{
# Create a new L3 Network connection for tenant
$vpnConnection = Add-SCVPNConnection -NextHopNetwork $nexthopvmNetwork -Name $L3VPNConnectionName -IPAddresses $LocalIPAddresses -PeerIPAddresses $PeerIPAddresses -VMNetworkGateway $VmNetworkGateway -protocol L3;
if ($vpnConnection -eq $null)
{
Write-Verbose "Could not add network connection for $($VmNetwork.Name), quitting"
return
}
Write-Output "Created VPN Connection " $vpnConnection;
}
# Add all the required static routes to the newly created network connection interface
foreach($route in $RoutingSubnets)
{
Add-SCNetworkRoute -IPSubnet $route -RunAsynchronously -VPNConnection $vpnConnection -VMNetworkGateway $VmNetworkGateway
}
Configurare l'inoltro L3
L3 l'inoltro consente la connettività tra l'infrastruttura fisica nel data center e l'infrastruttura virtualizzata nel cloud di virtualizzazione della rete Hyper-V.
Usando la connessione di inoltro L3, le macchine virtuali di rete tenant possono connettersi a una rete fisica tramite il gateway SDN di Windows Server 2016/2019, già configurato in un ambiente SDN. In questo caso, il gateway SDN funge da router tra la rete virtualizzata e la rete fisica.
Usando la connessione di inoltro L3, le macchine virtuali di rete tenant possono connettersi a una rete fisica tramite il gateway SDN di Windows Server 2016/2019/2022, già configurato in un ambiente SDN. In questo caso, il gateway SDN funge da router tra la rete virtualizzata e la rete fisica.
Per altre informazioni, vedere questi articoli: Gateway server Windows come gateway di inoltro e disponibilità elevata del gateway RAS.
Prima di provare a configurare la connessione L3, verificare quanto segue:
- Assicurarsi di aver eseguito l'accesso come amministratore nel server VMM.
- È necessario configurare una rete logica hop successivo univoca, con ID VLAN univoco, per ogni rete VM tenant per cui è necessario configurare l'inoltro L3. È necessario eseguire il mapping 1:1 tra una rete tenant e la rete fisica corrispondente (con ID VLAN univoco).
Usare la procedura seguente per creare la rete logica hop successivo in VMM:
Nella console VMM selezionare Reti logiche, fare clic con il pulsante destro del mouse e selezionare Crea rete logica.
Nella pagina Impostazioni scegliere Una rete connessa e selezionare Crea una rete VM con lo stesso nome per consentire alle macchine virtuali di accedere direttamente a questa rete logica e gestita da Controller di rete Microsoft.
Nota
Da VMM 2019 UR1, un tipo di rete connesso viene modificato come Rete connessa.
- Creare un pool IP per questa nuova rete logica. L'indirizzo IP di questo pool è necessario per configurare l'inoltro L3.
Per configurare l'inoltro L3, seguire questa procedura:
Nota
Non è possibile limitare la larghezza di banda nella connessione VPN L3.
Nella console VMM selezionare la rete virtuale tenant che si vuole connettere alla rete fisica tramite il gateway L3.
Fare clic con il pulsante destro del mouse sulla rete virtuale tenant selezionata, selezionare Connettività proprietà>.
Selezionare Connetti a un'altra rete tramite un tunnel VPN. Facoltativamente, per abilitare il peering BGP nel data center, selezionare Abilita BGP (Border Gateway Protocol).
Selezionare il servizio controller di rete per il dispositivo gateway.
Nella pagina Connessioni VPN selezionare Aggiungi tunnel di>livello 3.
Specificare una subnet nel formato di notazione CIDR per La subnet di routing. Questa subnet viene usata per instradare i pacchetti dalla rete VM. Non è necessario preconfigurare questa subnet nel data center.
Usare le informazioni seguenti e configurare la connessione L3:
Parametro | Dettagli |
---|---|
Nome | Nome definito dall'utente per la connessione di rete di inoltro L3. |
Rete VM (NextHop) | Nome definito dall'utente per la rete vm hop successiva, creata come prerequisito. Rappresenta la rete fisica che vuole comunicare con la rete VM tenant. Quando si seleziona Sfoglia, per la selezione saranno disponibili solo le reti VM connesse gestite dal servizio di rete. |
Indirizzo IP peer | Indirizzo IP del gateway di rete fisico, raggiungibile tramite la rete logica L3. Questo indirizzo IP deve appartenere alla rete logica hop successiva creata come prerequisito. Questo INDIRIZZO IP fungerà da hop successivo, dopo che il traffico destinato alla rete fisica dalla rete VM tenant raggiunge il gateway SDN. Deve essere un indirizzo IPv4. Possono essere presenti più indirizzi IP peer e devono essere separati da virgole. |
Indirizzi IP locali | Indirizzi IP da configurare nell'interfaccia di rete L3 del gateway SDN. Questi indirizzi IP devono appartenere alla rete logica hop successiva creata come prerequisito. È anche necessario specificare la subnet mask. Esempio: 10.127.134.55/25. Deve essere un indirizzo IPv4 e deve essere in formato notazione CIDR. Gli indirizzi IP peer e gli indirizzi IP locali devono trovarsi nello stesso pool. Questi indirizzi IP devono appartenere alla subnet definita nella definizione di rete logica della rete VM. |
Se si usano route statiche, immettere tutte le subnet remote a cui connettersi, in Route.
Nota
È necessario configurare le route nella rete fisica, per le subnet della rete virtuale tenant, con l'hop successivo come indirizzo IP dell'interfaccia L3 nel gateway SDN (indirizzo IP locale usato nella creazione della connessione L3). Ciò consente di assicurarsi che il traffico restituito alla rete virtuale tenant venga indirizzato correttamente attraverso il gateway SDN.
Se si usa BGP, assicurarsi che il peering BGP venga stabilito tra l'indirizzo IP dell'interfaccia interna del gateway SDN, presente in un raggruppamento diverso nella macchina virtuale del gateway (non il raggruppamento predefinito) e il dispositivo peer nella rete fisica.
Per il funzionamento di BGP, è necessario eseguire la procedura seguente:
Aggiungere il peer BGP per la connessione L3. Immettere l'ASN, l'IP BGP peer e il relativo ASN nella pagina Border Gateway Protocol .
Determinare l'indirizzo interno del gateway SDN come descritto nella sezione seguente.
Creare un peer BGP sul gateway di rete remoto (gateway di rete fisico). Durante la creazione del peer BGP, usare l'indirizzo interno del gateway SDN (come determinato nel passaggio precedente) come indirizzo IP peer.
Configurare una route nella rete fisica con la destinazione come indirizzo interno del gateway SDN e l'hop successivo come indirizzo IP dell'interfaccia L3 (valore dell'indirizzo IP locale usato per la creazione della connessione L3).
Nota
Dopo aver configurato la connessione L3, è necessario configurare le route nella rete fisica per le subnet della rete virtuale tenant, con l'hop successivo come indirizzo IP dell'interfaccia L3 nel gateway SDN (parametro LocalIpAddresses nello script). Ciò consente di assicurarsi che il traffico restituito alla rete virtuale tenant venga indirizzato correttamente attraverso il gateway SDN.
È possibile scegliere di configurare route statiche o route dinamiche (tramite BGP) con la connessione L3. Se si usano route statiche, è possibile aggiungerle usando Add-SCNetworkRoute , come descritto nello script seguente.
Se si usa BGP con connessione tunnel L3, il peering BGP deve essere stabilito tra l'indirizzo IP dell'interfaccia interna del gateway SDN, presente in un raggruppamento diverso nella macchina virtuale del gateway (non il raggruppamento predefinito) e il dispositivo peer nella rete fisica.
Per il funzionamento di BGP, è necessario seguire questa procedura:
Aggiungere il peer BGP per la connessione L3 usando il cmdlet Add-SCBGPPeer .
Esempio: Add-SCBGPPeer -Name "peer1" -PeerIPAddress "12.13.14.15" -PeerASN 15 -VMNetworkGateway $VmNetworkGateway
Determinare l'indirizzo interno del gateway SDN come descritto nella sezione seguente.
Creare un peer BGP sul gateway di rete remoto (gateway di rete fisico). Durante la creazione del peer BGP, usare l'indirizzo interno del gateway SDN (determinato nel passaggio 2 precedente) come indirizzo IP peer.
Configurare una route nella rete fisica con la destinazione come indirizzo interno del gateway SDN e l'hop successivo come indirizzo IP dell'interfaccia L3 (parametro LocalIPAddresses nello script).
Determinare l'indirizzo interno del gateway SDN
A tale scopo, seguire questa procedura:
Eseguire i cmdlet di PowerShell seguenti in un computer installato nel controller di rete o in un computer configurato come client del controller di rete:
$gateway = Get-NetworkControllerVirtualGateway -ConnectionUri <REST uri of your deployment>
$gateway.Properties.NetworkConnections.Properties.IPAddresses
I risultati di questo comando possono visualizzare più gateway virtuali a seconda del numero di tenant con connessioni gateway configurate. Ogni gateway virtuale può avere più connessioni (IPSec, GRE, L3).
Come si conosce già l'indirizzo IP dell'interfaccia L3 (LocalIPAddresses) della connessione, è possibile identificare la connessione corretta in base a tale indirizzo IP. Dopo aver creato la connessione di rete corretta, eseguire il comando seguente (nel gateway virtuale corrispondente) per ottenere l'indirizzo IP del router BGP del gateway virtuale.
$gateway.Properties.BgpRouters.Properties.RouterIp
Il risultato di questo comando fornisce l'indirizzo IP che è necessario configurare sul router remoto come indirizzo IP peer.
Configurare il selettore di traffico da VMM PowerShell
Utilizzare la procedura seguente:
Nota
I valori usati sono solo esempi.
Creare il selettore di traffico usando i parametri seguenti.
$t= new-object Microsoft.VirtualManager.Remoting.TrafficSelector $t.Type=7 // IPV4=7, IPV6=8 $t.ProtocolId=6 // TCP =6, reference: https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers $t.PortEnd=5090 $t.PortStart=5080 $t.IpAddressStart=10.100.101.10 $t.IpAddressEnd=10.100.101.100
Configurare il selettore di traffico precedente usando il parametro -LocalTrafficSelectors di Add-SCVPNConnection o Set-SCVPNConnection.