SMB Multichannel в Windows Server 2012

OSzone.net » Microsoft » Windows Server 2012/2012 R2 » SMB Multichannel в Windows Server 2012
Иcточник: Habrahabr.ru
Опубликована: 25.12.2012

SMB Multichannel – одна из возможностей протокола SMB 3.0, призванная повысить производительность и отказоустойчивость на уровне сетевого соединения при работе с файловыми серверами. Для использования этой возможности SMB-клиент и SMB-сервер должны поддерживать SMB 3.0, который, в свою очередь, реализован в Windows Server 2012 и Windows 8.

Какие преимущества дает SMB Multichannel?


SMB Multichannel позволяет одновременно использовать несколько сетевых соединений с файловым сервером, тем самым обеспечивая:


Каковы требования для работы SMB Multichannel?


Для работы SMB Multichannel необходимо выполнение двух требований:


Поддерживаемые конфигурации


Для работы SMB Multichannel клиент и сервер должны поддерживать как минимум одну из перечисленных ниже конфигураций:


*
Увеличить


Как следствие, SMB Multichannel не будет работать, если на компьютере один сетевой адаптер, не поддерживающий RSS, либо если адаптеров несколько, но они работают с разной скоростью. В последнем случае трафик будет передаваться по наиболее быстрому адаптеру.

Некоторые пояснения касательно отдельных конфигураций.

Сетевой адаптер с поддержкой RSS

В отсутствие SMB Multichannel при обращении SMB-клиента к SMB-серверу открывается SMB-сессия, в рамках которой устанавливается одно TCP/IP-соединение. Обработка трафика по этому соединению осуществляется одним из доступных процессорных ядер. Если сетевой адаптер не поддерживает RSS, то в принципе весь сетевой трафик обрабатывается одним ядром, как правило, CPU0. Если сетевой адаптер поддерживает RSS, то обработка сетевого трафика распределяется по доступным процессорным ядрам. Однако без SMB Multichannel в рамках одной сессии устанавливается только одно соединение, и RSS ничем не может помочь этой конкретной сессии.

В случае же SMB Multichannel, если сетевой адаптер поддерживает RSS, то протокол SMB в рамках одной сессии устанавливает несколько соединений (по умолчанию 4 на RSS-интерфейс), а RSS, в свою очередь, распределяет обработку трафика через эти соединения по доступным ядрам.

Соответственно, даже при использовании одного RSS-адаптера SMB Multichannel позволяет ускорить сетевые операции и более эффективно задействовать имеющуюся полосу пропускания. И прежде всего это актуально для адаптеров 10GbE.

Что нам не может обеспечить SMB Multichannel в конфигурации с одним физическим адаптером, так это отказоустойчивость, поскольку понятно, что если единственный адаптер выходит из строя, то мы теряем все соединения.

В Windows Server 2012 и Windows 8 проще всего определить, какие адаптеры и с какими текущими параметрами поддерживают RSS, можно с помощью командлета PowerShell

Get-NetAdapterRss

*
Увеличить


Два и более адаптеров, объединенных с помощью NIC Teaming

Использование NIC Teaming не является требованием для SMB Multichannel. Если в системе, например, два гигабитных адаптера, то SMB Multichannel может использовать их безо всякого тиминга. Однако объединение адаптеров в тиминговую группу даст дополнительное преимущество с точки зрения отказоустойчивости. Без тиминга SMB Multichannel обеспечит отказоустойчивость только SMB-трафика, вместе с NIC Teaming вы получите отказоустойчивость любого сетевого трафика. При этом и с тимингом, и без оного SMB Multichannel агрегирует доступные полосы пропускания имеющихся адаптеров.

Один и более сетевых адаптеров с поддержкой RDMA (Remote Direct Memory Access)

Технология RDMA обеспечивает низкие задержки при передачи данных по сети и снижение нагрузки на процессор. SMB Multichannel устанавливает для каждой SMB-сессии два соединения на каждый RDMA-интерфейс. Если RDMA-адаптеров несколько, дополнительно обеспечивается и отказоустойчивость. Надо отметить, что если вы объединяете RDMA-интерфейсы в группу средствами NIC Teaming в Windows Server 2012, то ОС рассматривает эти интерфейсы как non-RDMA. То есть в тиминге возможности RDMA вам не доступны. По аналогии с RSS получить информацию об адаптерах с поддержкой RDMA и их конфигурации можно с помощью командлета

Get-NetAdapterRdma


Несколько сетевых адаптеров с одинаковой скоростью

Это самый простой вариант конфигурации, при котором SMB Multichannel просто работает. Если адаптеры не поддерживают RSS, то устанавливается по одному соединению на интерфейс.

И теперь самое время обсудить настройку SMB Multichannel.

Настройка SMB Multichannel


Прелесть технологии в том, что она настраивается автоматически. Если ОС обнаруживает одну из поддерживаемых конфигураций (см. выше), то автоматически применяется SMB Multichannel. Тем не менее, вы можете убедиться в том, что технология включена с помощью

Get-SmbClientConfiguration

или

Get-SmbServerConfiguration


*
Увеличить


Дополнительно,

Get-SmbClientNetworkInterface

покажет вам, задействованы ли RSS и RDMA для доступных интерфейсов.

*
Увеличить


Я уже упомянул количество устанавливаемых соединений для различных типов сетевых интерфейсов (4 на RSS-адаптер, 2 на RDMA-адаптер, 1 на обычный NIC). По умолчанию SMB Multichannel использует максимум 8 соединений для каждой пары клиент/сервер. И это число может ограничивать количество соединение на один сетевой интерфейс. Например, если у вас три RSS-адаптера, то будет установлено три соединения через первый, три через второй и два через третий.

Рекомендуется использовать настройки SMB Multichannel по умолчанию. Тем не менее, эти настройки могут быть изменены. Например, максимально количество соединений на пару клиент/сервер устанавливается следующим образом:

*
Увеличить


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

Set-SmbServerConfiguration -EnableMultiChannel $false
Set-SmbClientConfiguration -EnableMultiChannel $false

Эти же команды со значением $true снова включат технологию.

SMB Multichannel в действии


Если в вашей системе одна из поддерживаемых конфигураций, то при открытии общей папки на сервере SMB Multichannel установит несколько соединений. Убедиться в этом можно с помощью

Get-SmbMultichannelConnection

В моей среде с двумя гигабитными карточками это выглядит так:

*
Увеличить


Далее, запустив копирование файла с сетевого ресурса, в Performance Monitor можно наблюдать, что копирование осуществляется с помощью обоих сетевых адаптеров.

*
Увеличить


Выключив один из адаптеров, вы увидите, что операция копирования не прервется, а вся нагрузка будет перекинута на оставшийся адаптер.

Посмотреть работу SMB Multichannel в динамике, а также сравнить, как ведет себя ОС при отключенной технологии, вы можете в моем веб-касте (проскроллируйте до демонстрации SMB Multichannel).

Таким образом, благодаря SMB Multichannel можно повысить эффективность и надежность сетевых операций. В сочетании же с другими технологиями Windows Server 2012, такими как SMB Scale Out, SMB Transparent Failover и ряд других (о них речь пойдет в других постах), вы можете штатными средствами ОС обеспечить высокий уровень доступности запущенных сервисов на разных уровнях: дисковая подсистема, узел кластера, сетевой интерфейс.


Ссылка: http://www.oszone.net/19391/SMB-Multichannel