SMB с несколькими каналами через VPN: что клиент действительно использует
SMB с несколькими каналами через VPN добавляет мало каналов: прочитайте интерфейсы клиента, выбранные подключения и диалект SMB, прежде чем винить туннель в медленных файлах.
Медленный доступ к файлам через VPN подталкивает считать многоканальную настройку решением, а настройке часто не с чем работать. Один виртуальный адаптер без RSS не может распределить трафик по нескольким каналам, как бы ни гласил флажок. Важна возможность, которую SMB видит на обоих концах, а не спецификация физической сетевой карты ноутбука. Разбор ниже начинается с активного сеанса и возвращается к раскладке адаптеров.
Начинайте с сеанса, а не со спецификации сетевой карты
Сначала убедитесь, что сеанс вообще может использовать многоканальность. Функция относится к SMB3, поэтому более старый диалект, согласованный с устройством или старым сервером, исключает её ещё до того, как любой вопрос об адаптере станет важным. Затем убедитесь, к какому серверу клиент действительно подключился, потому что имя, разрешающееся в другой узел, нежели проверяемый, даёт убедительный, но не относящийся к делу результат.
Get-SmbConnection
Get-SmbClientConfiguration | Select-Object EnableMultichannel
Get-SmbClientNetworkInterface
Первая команда называет диалект, сервер и общий ресурс в одной строке. Вторая показывает, включена ли функция на клиенте, а третья перечисляет интерфейсы, известные SMB, с их заявленными возможностями. Виртуальный адаптер, который не сообщает ни о RSS, ни о RDMA, говорит вам, чем может стать раскладка.
Если диалект не SMB3, остановитесь и сначала решите этот вопрос. Иначе каждая последующая команда будет описывать функцию, которая не может включиться.
Читайте интерфейсы клиента честно
SMB не важно, какой адаптер несёт маршрут по умолчанию; он перечисляет интерфейсы, которые может использовать, и оценивает каждый. Ноутбук с Wi-Fi, Ethernet и VPN-адаптером может представить три интерфейса, и только один из них может быть доступен серверу, с которым вы говорите. Остальные — кандидаты, а не каналы.
Читайте столбцы RSS и RDMA, а не столбец скорости канала. Виртуальный адаптер обычно сообщает высокую номинальную скорость без поддержки RSS, а номинальная скорость описывает виртуальное соединение, а не путь через интернет. Ни одно из этих чисел не говорит, сколько каналов использует сеанс.
Если адаптер не показывает возможность RSS, поддерживаемое исправление относится к драйверу поставщика VPN, а не к дополнительным свойствам физической сетевой карты. Установка флажка RSS на аппаратном адаптере ничего не меняет в том, что виртуальный адаптер показывает SMB.
Отделите выбранные каналы от обнаруженных кандидатов
Список подключений — часть, которую чаще всего читают неправильно. Если включить невыбранных кандидатов, вывод показывает всё, что рассмотрел SMB, а это не набор каналов, передающих данные. Читайте флаг выбора и число каналов для конкретной пары интерфейсов клиента и сервера, которая вас интересует.
Get-SmbMultichannelConnection -ServerName files.lab.example -IncludeNotSelected
Get-SmbMultichannelConnection -ServerName files.lab.example | Format-List *
Подставьте имя своего сервера. Вторая форма печатает свойства выбранных подключений, включая индексы интерфейсов и текущее число каналов, и именно это число важно. Несколько обнаруженных адресов на одном адаптере — всё ещё один адаптер.
Обнаруженный адрес может быть непригоден и из-за политики VPN: это может быть адрес локальной подсети, который туннель не переносит, или адрес, который сервер обслуживает только в другой сети. SMB перечисляет его как кандидата потому, что интерфейс существует, а не потому, что путь работает.
Что VPN-адаптер делает с раскладкой
Три раскладки стоит различать, потому что только две из них могут дать больше одного канала. Один адаптер без RSS даёт один канал. Один адаптер с поддержкой RSS может распределить подключения по ядрам. Несколько пригодных адаптеров могут дать несколько каналов даже без RSS, и именно эту конфигурацию люди забывают, когда считают RSS обязательным.
| Layout SMB sees | Channels possible |
|---|---|
| One adapter, no RSS | One |
| One adapter with RSS | Several, spread across cores |
| Two or more usable adapters | Several, one path per adapter |
| Several adapters behind one tunnel | Several, one shared bottleneck |
Последняя строка — та, что важна через VPN. Каналы, которые все входят в один и тот же зашифрованный туннель, делят пропускную способность туннеля, процессор шлюза и канал WAN. Добавление канала там перераспределяет работу, не добавляя ёмкости, и измерение это покажет.
Оставляйте подпись и шифрование включёнными, пока сравниваете, потому что их отключение меняет то, что вы измеряете. Результат производительности, зависящий от отключения параметра безопасности, — не тот результат, который можно внедрить.
Измеряйте ту нагрузку, которая действительно медленная
Назовите нагрузку, прежде чем что-то менять: одна большая последовательная копия, множество мелких файлов в одном каталоге или приложение, открывающее и закрывающее дескрипторы. Многоканальность может помочь первому случаю, когда есть настоящие независимые пути, и делает очень мало для третьего, потому что там затраты — это зависимые круговые обмены, а не пропускная способность.
Снимите базовый замер с текущей раскладкой, измените одну вещь и снимите снова с тем же набором файлов и в то же время суток. Запишите число выбранных путей рядом со значением, чтобы позднейший читатель мог понять, изменило ли изменение раскладку или только нагрузку.
Если каналы не изменились, вопрос производительности в другом месте: затраты на шифрование туннеля, задержка пути или собственные диск и процессор сервера. Их стоит измерить, прежде чем добавлять ещё один адаптер ноутбуку, у которого их уже достаточно.