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. Додавання каналу там перерозподіляє роботу, не додаючи ємності, і вимірювання це покаже.
Тримайте підпис і шифрування ввімкненими, поки порівнюєте, бо їх вимкнення змінює те, що ви міряєте. Результат продуктивності, що залежить від вимкнення параметра безпеки, — не той результат, який можна впровадити.
Виміряйте те навантаження, яке справді повільне
Назвіть навантаження, перш ніж щось змінювати: одна велика послідовна копія, багато дрібних файлів в одному каталозі або програма, що відкриває й закриває дескриптори. Кілька каналів можуть допомогти першому випадку, коли є справді незалежні шляхи, і роблять дуже мало для третього, бо там витрати — це залежні кругові обміни, а не пропускна здатність.
Зніміть базовий замір із поточною розкладкою, змініть одну річ і зніміть знову з тим самим набором файлів і в ту саму пору дня. Запишіть кількість вибраних шляхів поруч із числом, щоб пізніший читач міг зрозуміти, чи зміна змінила розкладку, чи лише навантаження.
Якщо канали не змінилися, питання продуктивності в іншому місці: витрати на шифрування тунелю, затримка шляху або власні диск і процесор сервера. Їх варто виміряти, перш ніж додавати ще один адаптер ноутбуку, який їх уже має достатньо.