Почему копирование по SMB замедляется, когда оба компьютера подключаются к одному VPN
SMB3 Multichannel может добавить в копирование по LAN туннельный канал и утянуть его на более медленный путь. Подтвердите канал, затем отвяжите или отключите его и проверьте снова.
Копирование файла между двумя машинами Windows в гигабитной LAN падает до черепашьей скорости в тот момент, когда обе подключаются к одному и тому же VPN, хотя тест пропускной способности между той же парой по-прежнему показывает почти скорость линии. Проблема не в канале и не в диске. SMB3 Multichannel тихо добавил второе TCP-соединение, которое идёт через туннель, и копия ждёт самый медленный канал. Если убрать этот путь из SMB, скорость LAN возвращается.
Одна общая папка может идти через несколько TCP-соединений
Multichannel позволяет клиенту открывать независимые соединения к одному серверу, по одному на каждую подходящую пару адресов. В обычной LAN может быть только одна пара, поэтому ничего удивительного не происходит. Добавьте VPN-адаптер на обе машины, и Windows увидит вторую пару, адрес туннеля против адреса туннеля, и откроет через неё канал.
Этот канал зашифрован, делит процессор с туннелем и проходит через тот же канал WAN, что и всё остальное. У копии, которая иначе использовала бы только LAN, теперь есть медленный участник в наборе, и SMB не отбрасывает его молча.
Тест пропускной способности, привязанный к адресу LAN, по-прежнему выглядит здоровым, и именно поэтому два измерения так резко расходятся.
Докажите, что туннельный канал существует, прежде чем что-то менять
Выполните запросы на клиенте, пока идёт копирование, потому что список каналов интересен только тогда, когда он живой.
Get-SmbMultichannelConnection | Where-Object Selected -eq $true | Format-Table ServerName, ClientIPAddress, ServerIPAddress Get-SmbConnection | Format-Table ServerName, Dialect, NumOpens
Больше одной выбранной строки для одного сервера — это и есть нужное подтверждение. Преобразуйте клиентский адрес подозрительной строки в интерфейс. Если этот псевдоним — VPN-адаптер, канал настоящий, а не устаревшая запись.
Get-NetIPAddress -IPAddress 10.8.0.6 | Format-List IPAddress, InterfaceAlias
Адреса различаются на каждой машине, поэтому читайте те, что сообщает ваш собственный вывод, а не вводите примеры выше.
Уберите туннель из SMB и перезапустите оба конца
Отключение Multichannel — это изменение и на клиенте, и на сервере, а если сделать его только с одной стороны, другая останется свободной продолжать предлагать интерфейс. Существующие каналы переживают эту настройку, поэтому планируйте перезапуск, а не ждите, что следующая копия поведёт себя иначе.
Set-SmbClientConfiguration -EnableMultiChannel $false -Force Set-SmbServerConfiguration -EnableMultiChannel $false -Force Get-SmbClientConfiguration | Select-Object EnableMultiChannel
После перезапуска перечислите интерфейсы, которые сервер предлагает для SMB. Адаптер туннеля должен исчезнуть из этого списка. Если он всё ещё там, настройка попала на неверную конечную точку или старая сессия ещё открыта.
Get-SmbServerNetworkInterface | Format-List Name, InterfaceAlias, LinkSpeed
Когда цель уже, чем отключение Multichannel везде, отвязка серверного компонента от адаптера туннеля останавливает общий доступ через него, оставляя остальную часть VPN нетронутой.
Get-NetAdapterBinding -Name "<vpn adapter>" -ComponentID ms_server Disable-NetAdapterBinding -Name "<vpn adapter>" -ComponentID ms_server
Предпочитайте LAN и измеряйте дважды одинаково
Метрика интерфейса не удаляет канал, но направляет новые соединения на физический канал и держит посторонний трафик вне туннеля. Копируйте псевдоним из вывода, а не вводите его, потому что на некоторых установках он локализован.
Get-NetIPInterface | Sort-Object InterfaceMetric | Select-Object InterfaceAlias, InterfaceMetric Set-NetIPInterface -InterfaceAlias "<vpn adapter>" -AutomaticMetric Disabled -InterfaceMetric 9000
Затем повторите оба измерения: копирование файла и тест пропускной способности одного потока. Если копия восстанавливается, а тест пропускной способности не меняется, туннель никогда не был узким местом. Если оба рушатся, предел — это путь VPN, и Multichannel лишь сделал его видимым. Сравните с копией, сделанной до подключения VPN, потому что это единственная базовая линия, которая изолирует изменение.
Отключение Multichannel стоит пропускной способности на серверах, которые действительно предлагают несколько быстрых путей, поэтому включите его снова, когда VPN уйдёт из картины. Запишите, какой адаптер вы изменили, потому что следующий человек найдёт настройку, а не причину.