Kopírování souborů se zpomalí po připojení VPN: vícekanálový SMB
Kopie čeká na svůj nejpomalejší kanál, takže zdravý test propustnosti skrývá příčinu. Ověřte kanál tunelu, vyjměte ho z SMB a potom změřte obě cesty.
Kopírování souboru mezi dvěma počítači s Windows je rychlé, dokud se oba nepřipojí ke stejné VPN, a pak se zhroutí, i když test propustnosti přes stejnou dvojici stále hlásí téměř rychlost linky. Ten rozdíl je diagnóza: spojení je v pořádku a něco volí horší cestu pro samotný přenos. Tím něčím je obvykle vícekanálový SMB3, který dělá právě to, k čemu byl navržen. Vyjměte nadbytečný kanál ze hry a kopie se vrátí na fyzické spojení.
Příznak čeká na svůj nejpomalejší kanál
Vícekanálový přenos umožňuje jedné relaci SMB použít několik připojení TCP, jedno pro každou vhodnou dvojici adres mezi klientem a serverem. Když oba počítače leží v LAN a zároveň ve stejném tunelu, Windows může spárovat adresy z LAN s adresami tunelu a obě dvojice považovat za použitelné. Relace pak má více kanálů, než fyzické spojení potřebuje, a jeden z nich je mnohem pomalejší.
Neselže. Čeká, protože relace nemůže skončit rychleji než její nejpomalejší kanál.
Proto může test propustnosti vypadat zdravě, zatímco kopie leze: měření jednoho toku může vybrat jednu cestu, zatímco přenos byl rozložen mezi dvě. Přečtěte si seznam kanálů dřív, než změníte jakékoli nastavení adaptéru, a čtěte ho, dokud kopie ještě běží, protože nečinná relace nic neukáže. To, co si zapíšete, má pojmenovat rozhraní za každým kanálem, ne jen jak pomalý výsledek působil.
Ověřte, že existuje druhý kanál
Dva cmdlety odpovídají na otázku přímo. Seznam připojení ukazuje používané kanály a souhrn relace ukazuje samotné připojení. Spusťte oba během pomalé kopie.
Get-SmbMultichannelConnection
Get-SmbConnectionHledejte více než jeden řádek označený jako vybraný pro stejný server, potom rozlište klientskou adresu v podezřelém řádku. Pokud ta adresa patří adaptéru tunelu, druhá cesta je skutečná a potvrzená. Pokud všechny řádky patří fyzickému rozhraní, vícekanálový přenos není váš problém a kopie je pomalá z nesouvisejícího důvodu. Udělejte toto ověření nejdřív, protože oprava je dost rušivá, aby si zasloužila minutu důkazů.
Get-NetIPAddress -IPAddress 10.20.30.44Adresy zde jsou zástupné. Nahraďte je tím, co hlásí váš vlastní výstup, protože kopírování adresy z blogu je způsob, jak se z funkčního příkazu stane matoucí chybová zpráva.
Vyjměte tunel z SMB a potom měřte znovu
Vypnutí vícekanálového přenosu je nejrychlejší způsob, jak diagnózu potvrdit, a je vratné. Nastavení klienta použijte na počítači, který kopíruje, a nastavení serveru na počítači, který hostuje sdílenou složku, protože kterákoli strana sama může držet nadbytečný kanál naživu. Změna platí pro nová připojení, nikoli pro existující, takže otevřená relace ji přežije. Restartujte oba počítače, nebo alespoň zavřete všechny handle ke sdílené složce, než cokoli změříte.
Set-SmbClientConfiguration -EnableMultiChannel $false -Force
Set-SmbServerConfiguration -EnableMultiChannel $false -ForceOvěřte nový stav a potom se podívejte, co server nyní inzeruje klientům.
Get-SmbClientConfiguration | Select-Object EnableMultiChannel
Get-SmbServerNetworkInterface | Format-List *Rozhraní tunelu by mělo z inzerovaného seznamu vypadnout. Pokud ne, nastavení přistálo na špatném konci nebo je stará relace stále otevřená. Pokud sdílení souborů prostě nesmí tunel používat, odpojte raději komponentu serveru od tohoto adaptéru, což tunel ponechá použitelný pro každou další službu.
Get-NetAdapterBinding -Name "OpenVPN Data Channel Offload"
Disable-NetAdapterBinding -Name "OpenVPN Data Channel Offload" -ComponentID ms_serverPreferujte cestu přes LAN, aniž byste předstírali, že maže kanály
Metrika rozhraní říká Windows, kterou cestu preferovat pro nová připojení. Neodstraňuje kanál, který se vícekanálový přenos už rozhodl otevřít. Zvýšení metriky tunelu se přesto vyplatí, protože drží nesouvisející provoz mimo pomalou cestu a činí preferovanou trasu předvídatelnou, ale je to postrčení, ne filtr.
Get-NetIPInterface | Sort-Object InterfaceMetric | Select-Object InterfaceAlias, InterfaceMetric
Set-NetIPInterface -InterfaceAlias "OpenVPN Data Channel Offload" -AutomaticMetric Disabled -InterfaceMetric 1000Zkopírujte alias z toho výstupu, místo abyste ho psali, protože některé instalace lokalizují název adaptéru a anglický řetězec nebude odpovídat.
Potom znovu změřte obě čísla: kopírování souboru a test propustnosti přes stejnou dvojici. Pokud se kopie obnoví, zatímco test propustnosti nikdy pomalý nebyl, příčinou byl vícekanálový přenos a můžete skončit. Pokud se zhroutí oba, tunel je úzké hrdlo a vícekanálový přenos ho jen zesílil. Pokud kopie zůstane pomalá, i když obě cesty vypadají správně, zbývající problém sídlí ve sdílené složce, v úložišti nebo v ovladači filtru, což je jiné vyšetřování.