Копирование файла между двумя машинами 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 уйдёт из картины. Запишите, какой адаптер вы изменили, потому что следующий человек найдёт настройку, а не причину.

Похожие статьи