Заметки о Windows и других программных продуктах Microsoft...

SMB Multichannel — новая возможность протокола SMB 3.0

SMB Multichannel — новая возможность протокола SMB 3.0

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 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

просмотр параметров SMB Multichannel

 

А проверить, поддерживает ли текущая конфигурация необходимые технологии можно командой:

Get-SmbClientNetworkInterface

просмотр параметров сетевых адаптеров

 

Изменять дефолтные настройки SMB Multichannel без крайней необходимости не рекомендуется. Тем не менее, для общего понимания мы рассмотрим некоторые из них.

Количество подключений

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

• Для RSS-совместимых адаптеров — четыре TCP/IP подключения на один сетевой адаптер;
• Для RDMA-совместимых адаптеров — два TCP/IP подключения на один сетевой адаптер;
• Для всех остальных — одно TCP/IP подключение на один сетевой адаптер.

Кроме того, существует общее ограничение — восемь TCP/IP подключений на пару клиент/сервер, которое так же ограничивает количество подключений на сетевой адаптер.  Например, общее количество соединений на пару клиент/сервер устанавливается следующей командой:

Set-SmbClientConfiguration –MaximumConnectionCountPerServer <N>

Количество подключений через RSS-совместимый адаптер:

Set-SmbClientConfiguration -ConnectionCountPerRssNetworkInterface <N>

Количество подключений через RDMA-совместимый адаптер:

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

Parameters″ ConnectionCountPerRdmaNetworkInterface -Type DWORD -Value <N> –Force

Количество подключений для остальных типов адаптеров:

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

Parameters″ ConnectionCountPerNetworkInterface -Type DWORD -Value <N> –Force

Включение и отключение

Если по каким-то причинам необходимо отключить SMB Multichannel, это можно сделать следующими командами, на сервере и клиенте соответственно:

Set-SmbServerConfiguration -EnableMultiChannel $false
Set-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 задействован только один адаптер.

копирование файлов без использования SMB Multichannel

 

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

включение SMB Multichannel

 

Опять запускаем копирование и видим, что теперь используются оба сетевых адаптера. И даже если отключить один из них, то связь не прервется и копирование будет продолжено.

копирование файлов с использованием SMB Multichannel

 

И чтобы убедиться окончательно, запускаем команду Get-SmbMultichannelConnection, которая показывает количество соединений клиент\сервер. В нашем случае их два, по одному на адаптер.

просмотр параметров подключения с использованием SMB Multichannel

 

В заключение напомню некоторые важные моменты, которые необходимы для работы SMB Multichannel:

• Наличие протокола SMB 3.0 на клиенте и на сервере. На данный момент SMB 3.0 есть только в Windows 8 и Windows Server 2012;
• Сетевые адаптеры должны работать на одной скорости.  При наличии сетевых адаптеров с различными скоростями работы SMB Multichannel будет использовать самый быстрый;
• Для сетевых адаптеров, не поддерживающих RDMA, лучше всего использовать комбинацию NIC Teaming и SMB Multichannel. Она даст наибольшую пропускную способность и отказоустойчивость;
• И наоборот, при наличии у адаптеров поддержки RDMA не рекомендуется использовать NIC Teaming, так как эти технологии не работают вместе.

 
 
Комментарии

Спасибо за собрание статей!
Настройки RSS и RDMA можно посмотреть в Advanced вкладке в настройках сетевой карты и через PS
Get-NetAdapterRss
Get-NetAdapterRdma

Познавательно!

Leave a Reply to Sergey_K