Una copia di file tra due macchine Windows su una LAN gigabit precipita a passo di lumaca nel momento in cui entrambe si collegano alla stessa VPN, mentre un test di throughput tra la stessa coppia riporta ancora quasi la velocità di linea. Il problema non è il collegamento né il disco. SMB3 Multichannel ha aggiunto silenziosamente una seconda connessione TCP che passa per il tunnel, e la copia attende il canale più lento. Rimuovere quel percorso da SMB riporta la velocità della LAN.

Una sola condivisione può viaggiare su più connessioni TCP

Multichannel consente a un client di aprire connessioni indipendenti verso un server, una per ogni coppia di indirizzi adatta. In una LAN semplice può esserci una sola coppia, quindi non succede nulla di sorprendente. Aggiungete un adattatore VPN su entrambe le macchine e Windows vede una seconda coppia, indirizzo tunnel contro indirizzo tunnel, e apre un canale attraverso di essa.

Quel canale è crittografato, condivide la CPU con il tunnel e attraversa lo stesso collegamento WAN di tutto il resto. Una copia che avrebbe usato solo la LAN ora ha un membro lento nell'insieme, e SMB non lo scarta in silenzio.

Un test di throughput fissato all'indirizzo della LAN sembra ancora sano, ed è esattamente per questo che le due misurazioni divergono così nettamente.

Dimostrate che il canale del tunnel esiste prima di cambiare qualcosa

Eseguite le query sul client mentre una copia è in corso, perché un elenco di canali è interessante solo quando è attivo.

Get-SmbMultichannelConnection | Where-Object Selected -eq $true | Format-Table ServerName, ClientIPAddress, ServerIPAddress
Get-SmbConnection | Format-Table ServerName, Dialect, NumOpens

Più di una riga selezionata per lo stesso server è la conferma che vi serve. Risolvete l'indirizzo client della riga sospetta in un'interfaccia. Se quell'alias è l'adattatore VPN, il canale è reale e non una voce obsoleta.

Get-NetIPAddress -IPAddress 10.8.0.6 | Format-List IPAddress, InterfaceAlias

Gli indirizzi variano su ogni macchina, quindi leggete quelli che riporta il vostro output invece di digitare gli esempi qui sopra.

Togliete il tunnel da SMB e riavviate entrambe le estremità

Disattivare Multichannel è una modifica sia sul client sia sul server, e farlo solo da un lato lascia l'altro libero di continuare a offrire l'interfaccia. I canali esistenti sopravvivono all'impostazione, quindi pianificate un riavvio invece di aspettarvi che la copia successiva si comporti diversamente.

Set-SmbClientConfiguration -EnableMultiChannel $false -Force
Set-SmbServerConfiguration -EnableMultiChannel $false -Force
Get-SmbClientConfiguration | Select-Object EnableMultiChannel

Dopo il riavvio, elencate le interfacce che il server offre per SMB. L'adattatore del tunnel dovrebbe essere sparito da quell'elenco. Se è ancora presente, l'impostazione è finita sull'endpoint sbagliato o una vecchia sessione è ancora aperta.

Get-SmbServerNetworkInterface | Format-List Name, InterfaceAlias, LinkSpeed

Quando l'obiettivo è più stretto della disattivazione di Multichannel ovunque, scollegare il componente server dall'adattatore del tunnel ferma la condivisione su di esso lasciando intatto il resto della VPN.

Get-NetAdapterBinding -Name "<vpn adapter>" -ComponentID ms_server
Disable-NetAdapterBinding -Name "<vpn adapter>" -ComponentID ms_server

Preferite la LAN e misurate due volte allo stesso modo

Una metrica di interfaccia non rimuove un canale, ma indirizza le nuove connessioni verso il collegamento fisico e tiene il traffico non correlato lontano dal tunnel. Copiate l'alias dall'output invece di digitarlo, perché su alcune installazioni è localizzato.

Get-NetIPInterface | Sort-Object InterfaceMetric | Select-Object InterfaceAlias, InterfaceMetric
Set-NetIPInterface -InterfaceAlias "<vpn adapter>" -AutomaticMetric Disabled -InterfaceMetric 9000

Poi ripetete entrambe le misurazioni: la copia di file e un test di throughput a flusso singolo. Se la copia si riprende mentre il test di throughput resta invariato, il tunnel non è mai stato il collo di bottiglia. Se entrambi crollano, il percorso VPN è il limite e Multichannel lo ha solo reso visibile. Confrontate con una copia presa prima del collegamento della VPN, perché è l'unica linea di base che isola la modifica.

Disattivare Multichannel costa throughput sui server che offrono davvero più percorsi veloci, quindi riattivatelo quando la VPN esce di scena. Annotate quale adattatore avete modificato, perché la persona successiva troverà l'impostazione e non il motivo.

Articoli correlati