Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

SMB Multichannel - нова можливість протоколу SMB 30.

SMB (Server Message Block) - мережевий протокол для загального доступу до файлів. За допомогою SMB додаток (або користувач, це додаток використовує) може отримувати доступ до файлів та інших ресурсів віддаленого сервера. Цей протокол може обмінюватися даними з будь-серверної програмою, яка налаштована на отримання клієнтських запитів SMB.

В Windows Server 2012 і Windows 8 реалізована нова версія протоколу - SMB 3.0, яка отримала безліч цікавих можливостей. Про одну з цих можливостей, а саме про технології SMB Multichannel ми сьогодні і поговоримо.

Опис SMB Multichannel

Технологія SMB Multichannel є частиною протоколу SMB 3.0 і дозволяє підняти продуктивність і доступність файлових серверів. Суть SMB Multichannel полягає в наступному: якщо між клієнтом і сервером є кілька мережевих шляхів, то SMB Multichannel автоматично виявляє їх і починає використовувати в міру необхідності. При цьому можуть бути досягнуті дві цілі:

Збільшення пропускної здатності - при передачі даних використовуються одночасно кілька мережевих підключень, встановлених або за допомогою одного високошвидкісного (напр.10GbE) мережевого адаптера, або декількох мережевих адаптерів. У разі декількох адаптерів SMB Multichannel агрегує їх смуги пропускання;

Підвищення відмовостійкості - в разі втрати одного або декількох з'єднань (відмова мережевого адаптера, обрив кабелю і т.п.) виконуються мережеві операції, наприклад копіювання файлу, що не перериваються до тих пір, поки хоча б одне з'єднання продовжує працювати.Таким чином, при використанні декількох мережевих адаптерів SMB Multichannel забезпечує відмовостійкість, правда тільки для операцій по протоколу SMB.

Для роботи SMB Multichannel необхідне виконання двох вимог:

1) SMB 3.0 на клієнті і на сервері. На поточний момент ця версія протоколу доступна тільки в Windows Server 2012 і Windows 8.

2) Апаратна конфігурація, яка підтримує SMB Multichannel.

Ось деякі конфігурації, з якими може працювати SMB Multichannel.



Кілька мережевих адаптерів

при наявності декількох мережевих адаптерів, якщо не задіяна SMB Multichannel, то при підключенні по SMB встановлюється одна сесія, створюється одне TCP/IP підключення і використовується тільки один мережевий адаптер.З SMB Multichannel для однієї SMB-сесії буде створено кілька підключень (по одному на кожен мережевий адаптер). Це дозволить SMB використовувати загальну пропускну здатність всіх мережевих адаптерів, а також продовжувати роботу в разі виходу одного з них з ладу.

Кілька мережевих адаптерів, об'єднаних в групу

Windows Server 2012 дозволяє об'єднувати кілька мережевих адаптерів в групу за допомогою технології NIC Teaming.Хоча таке об'єднання і саме по собі буде досить швидким і ВІДМОВОСТІЙКО, додатково можна задіяти SMB Multichannel.

SMB Multichannel створить кілька TCP/IP підключень, що дозволить краще розподіляти навантаження і використовувати всю доступну пропускну здатність, а NIC Teaming додасть отказоустойчивую конфігурацію, яка буде працювати швидше ніж при використанні одного SMB Multichannel.Крім того, NIC Teaming забезпечить відмовостійкість будь-якого мережевого трафіку, а не тільки SMB.

Один або кілька мережних адаптерів з підтримкою RSS

При зверненні клієнта до сервера по SMB відкривається сесія, в рамках якої встановлюється одне TCP/IP-з'єднання. Обробка трафіку по цьому з'єднанню здійснюється одним з доступних процесорних ядер, як правило CPU0.Деякі мережеві адаптери мають функцію Receive Side Scaling (RSS), яка розподіляє обробку мережевого трафіку по всіх доступних ядер процесора.

При використанні SMB Multichannel, якщо мережевий адаптер підтримує RSS, то протокол SMB в рамках однієї сесії встановлює кілька з'єднань (за замовчуванням 4 на 1 RSS адаптер), а RSS, в свою чергу, розподіляє обробку трафіку через ці з'єднання по всім доступним процесорним ядрам.

Навіть при наявності одного RSS-адаптера SMB Multichannel дозволяє прискорити мережеві операції і більш ефективно використовувати наявну смугу пропускання, особливо в разі 10-гігабітних мережевих адаптерів. Однак в конфігурації з одним фізичним адаптером не забезпечується відмовостійкість, адже якщо єдиний адаптер виходить з ладу, то втрачаються всі з'єднання.Тому для підвищення відмовостійкості можна використовувати кілька адаптерів з підтримкою RSS.

Один або кілька мережних адаптерів з підтримкою RDMA

Технологія Remote Direct Memory Access (RDMA) дозволяє пристрою отримати прямий доступ до пам'яті ( DMA) віддаленого комп'ютера. Це дає можливість отримати доступ до даних, що зберігаються в віддаленої системи безпосередньо, без залучення операційної системи, при цьому помітно збільшується швидкість роботи з віддаленими ресурсами.

SMB Multichannel відповідає за виявлення підтримки RDMA у мережевого адаптера, що в подальшому дозволяє використовувати технологію SMB Direct (SMB over RDMA). Без SMB Multichannel SMB буде використовувати звичайний TCP/IP навіть при наявності RDMA-сумісних адаптерів.

При використанні SMB Multichannel SMB визначає у адаптера наявність підтримки RDMA і створює кілька RDMA-підключень для однієї SMB-сесії (два на кожен мережевий адаптер).Це дозволить SMB отримати високу пропускну здатність, низькі затримки і низьке завантаження процесора. Якщо використовується кілька RDMA мережевих карт, то конфігурація буде ще і відмовостійкої.

Варто мати на увазі, що якщо об'єднати RDMA-адаптери в групу засобами NIC Teaming, то операційна система не визначить у них підтримку RDMA.Тобто при використанні NIC Teaming можливості RDMA не доступні.

Налаштування SMB Multichannel

Ще одним важливим достоїнством технології SMB Multichannel є те, що вона не вимагає спеціальної установки. Якщо операційна система виявляє одну з підтримуваних апаратних конфігурацій, то SMB Multichannel включається автоматично.Переконатися в тому, що технологія включена, можна за допомогою командлетів PowerShell, на клієнті:

Get-SmbClientConfiguration

І на сервері:

Get-SmbServerConfiguration



А перевірити, чи підтримує поточна конфігурація необхідні технології можна командою:

Get -SmbClientNetworkInterface



Змінювати дефолтні настройки SMB Multichannel без крайньої необхідності не рекомендується.Проте, для загального розуміння ми розглянемо деякі з них.

Кількість підключень

В залежності від типу мережевого адаптера SMB Multichannel використовує різну кількість підключень:

• для RSS-сумісних адаптерів - чотири TCP/IP підключення на один мережевий адаптер;
• для RDMA-сумісних адаптерів - два TCP/IP підключення на один мережевий адаптер;
• для всіх інших - одне TCP/IP підключення на один мережевий адаптер.

Крім того, існує загальне обмеження - вісім TCP/IP підключень на пару клієнт/сервер, яке так само обмежує кількість підключень на мережевий адаптер. Наприклад, загальна кількість з'єднань на пару клієнт/сервер встановлюється за допомогою такої команди:

Set-SmbClientConfiguration -MaximumConnectionCountPerServer

Кількість підключень через RSS-сумісний адаптер:

Set- SmbClientConfiguration -ConnectionCountPerRssNetworkInterface

Кількість підключень через RDMA-сумісний адаптер:

Set-ItemProperty -Path "HKLM: \ SYSTEM \ CurrentControlSet \ Services \ LanmanWorkstation \

Parameters "ConnectionCountPerRdmaNetworkInterface -Type DWORD -Value-Force

Кількість підключень для інших типів адаптерів:

Set-ItemProperty -Path" HKLM: \ SYSTEM \ CurrentControlSet \ Services \ LanmanWorkstation \

Parameters "ConnectionCountPerNetworkInterface -Type DWORD -Value -Force

Включення і відключення

Якщо з якихось причин необхідно відключити SMB Multichannel, це можна зробити наступними командами, на сервері і клієнта відповідно:

Set-SmbServerConfiguration -EnableMultiChannel $ false
S et-SmbClientConfiguration -EnableMultiChannel $ false

Для зворотного включення використовуються ці ж команди, але зі значенням $ true

Виборче включення

Для контролю SMB Multichannel в більш складних конфігураціях використовуються командлети SmbMultichannelConstraint.Наприклад, якщо у нас є чотири мережевих адаптера, але ми хочемо, щоб SMB Multichannel з них використовував тільки два, то можна використовувати наступну команду:

New-SmbMultichannelConstraint -ServerName SRV12 -InterfaceIndex 12, 19

І тут потрібно мати на увазі, що:

• Налаштування виробляються на клієнті;
• Обмеження робляться на сервер, так як може знадобитися налаштовувати різні мережеві адаптери для роботи з різними серверами;
• до серверів, які не вказуються в обмеженнях, використовуватимуться стандартні;
• вказуються мережеві адаптери, які потрібно використовувати, а не навпаки.

SMB Multichannel в дії

Проведемо невелике випробування можливостей SMB Multichannel. У якості піддослідних візьмемо дві машини - клієнт і сервер, на кожній по два гігабітних мережевих адаптера.

Відключаємо SMB Multichannel на клієнті.



Запускаємо копіювання даних з сервера на клієнт і відкриваємо монітор ресурсів.Як бачите, при відключеною SMB Multichannel задіяний тільки один адаптер.



Включаємо SMB Multichannel. Після включення необхідно перезавантажити машину, інакше зміни не застосовуються.



Знову запускаємо копіювання і бачимо, що тепер використовуються обидва мережевих адаптера.І навіть якщо відключити один з них, то зв'язок не перерветься і копіювання буде продовжено.



І щоб переконатися остаточно, запускаємо команду Get-SmbMultichannelConnection, яка показує кількість з'єднань клієнт \ сервер. У нашому випадку їх два, по одному на адаптер.



На закінчення нагадаю деякі важливі моменти, які необхідні для роботи SMB Multichannel:

• Наявність протоколу SMB 3.0 на клієнті і на сервері. На даний момент SMB 3.0 є тільки в Windows 8 і Windows Server 2012;
• Мережеві адаптери повинні працювати на одній швидкості. При наявності мережевих адаптерів з різними швидкостями роботи SMB Multichannel буде використовувати найшвидший;
• Для мережевих адаптерів, що не підтримують RDMA, найкраще використовувати комбінацію NIC Teaming і SMB Multichannel.Вона дасть найбільшу пропускну здатність і відмовостійкість;
• І навпаки, при наявності у адаптерів підтримки RDMA не рекомендується використовувати NIC Teaming, так як ці технології не працюють разом.

.