Microsoft — мировой лидер в области ПО и ИТ-услуг
499,23
рейтинг
14 сентября 2012 в 09:39

Разное → SMB Multichannel в Windows Server 2012

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

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


SMB Multichannel позволяет одновременно использовать несколько сетевых соединений с файловым сервером, тем самым обеспечивая:
  • Увеличенную пропускную способность. Клиент и сервер SMB могут передавать больший объем данных, одновременно задействуя несколько сетевых соединений, установленных с помощью одного высокоскоростного сетевого адаптера, например 10GbE, или нескольких сетевых адаптеров. В случае нескольких сетевых адаптеров SMB Multichannel фактически агрегирует их полосы пропускания
  • Отказоустойчивость. Выполняемые сетевые операции, например копирование файла, не прерываются в случае потери одного или нескольких соединений до тех пор, пока хотя бы одно соединение продолжает существовать. Потеря соединения может происходить как из-за проблем в сетевой среде (обрыв кабеля, поломка коммутатора и пр.), так и из-за проблем с сетевым адаптером. Таким образом, при использовании нескольких сетевых адаптеров SMB Multichannel обеспечивает отказоустойчивость на уровне физической сетевой карты. Но еще раз отмечу, только для операций по протоколу SMB

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


Для работы SMB Multichannel необходимо выполнение двух требований:
  • SMB 3.0 на клиенте и на сервере. На текущий момент эта версия протокола реализована в Windows Server 2012 и Windows 8
  • Одна из поддерживаемых конфигураций, рассматриваемых ниже

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


Для работы SMB Multichannel клиент и сервер должны поддерживать как минимум одну из перечисленных ниже конфигураций:
  • Несколько сетевых адаптеров с одинаковой скоростью
  • Один и более сетевых адаптеров с поддержкой RSS (Receive Side Scaling)
  • Два и более сетевых адаптеров, объединенных в группу с помощью NIC Teaming
  • Один и более сетевых адаптеров с поддержкой RDMA (Remote Direct Memory Access)

image

Как следствие, 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

image

Два и более адаптеров, объединенных с помощью 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


image

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

image

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

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

image

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

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

SMB Multichannel в действии


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

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

image

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

image

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

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

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

Комментарии (26)

  • 0
    Поддержки этой фичи в Windows 2008 и Windows 7 не планируется?
    • +2
      Нет, не планируется. SMB 3.0 содержит довольно много изменений, чтобы можно было так просто портировать его в Windows 7 или Windows Server 2008 R2. При взаимодействии с этими системами Windows Server 2012 и Windows 8 будут использовать версию SMB 2.1.
      • 0
        А в Samba?
        • +1
          При всей моей любви к Samba и при всем моем оптимизме на реализацию SMB3 команде потребуется столько же времени, как и на выход Samba 4. Вы следите за историей четвертой самбы? Это довольно длинная мыльная опера, подходящая ныне к финалу.
  • 0
    То есть, если у меня 10Гб коммутатор, сервер с 10Гб сетевой платойа и клиент с 1Гб сетевой платой, то эта фича не заработает?
    • 0
      Эта фича — просто несколько TCP соединений, которая хорошо сочетается с RSS
      Это как однопоточные и многопоточные алгоритмы в сочетании с одним процессором либо SMP.
      • 0
        То есть это просто для передачи файлов между серверами? Потому как мне сложно представить десктоп компьютер с Windows 8 и 10Гб сетевой платой.
        • 0
          А кто сказал, что оно только на 10Гб работает? Оно даже и на 10Мб будет работать. Только толку мало будет.
          • 0
            Значит в «Поддерживаемые конфигурации» про скорости написано для примера? Ок.
            • 0
              Там только о RSS написано, о скоростях ничего нет.
              82576, например, вполне себе умеет RSS, при чем, кстати, очень даже неплохо :).
              Младшие чипсеты не вспомню, но, вроде бы, 82574L тоже что-то умел.
        • 0
          А вообще, если хотите, могу написать краткую заметку о том, что такое RSS и нахре зачем он нужен.
          • 0
            Конечно пишите, информация лишней не бывает ;)
            • 0
              На выходных постараюсь выкроить время и написать. Только учтите — это всё будет в контексте Linux.
              Смешно, кстати, выглядит, когда M$ рекламирует фичу, которая уже года 3 у меня на серверах под Linux работает. :)
              • 0
                В контекстет Linux даже интереснее, а если FreeBSD — то ещё интереснее будет :)
              • +1
                > M$
                Детский сад

                > которая уже года 3 у меня на серверах под Linux работает. :)
                А о какой фиче речь? Об RSS (о котором данная ветка)? SMB Multichannel (о котором данный пост)?
                «M$» уже давно не «рекламирует» RSS, потому что оно работает начиная с Win2003 Server (со scalable networking pack-ом) и нативно поддерживается начиная с NDIS6 (Longhorn Server — три поколения Windows Server-ов назад), включено по умолчанию и спокойно себе работает — зачем его СЕЙЧАС-то «рекламировать»?

                RPS же был включен в 2.6.35 (2010-й год) и толком пока нигде не используется (вон люди даже линии прерываний по процессорам вручную разбрасывают — какой уж там RSS)

                Если же речь об использовании SMB Multichannel (фичи SMB3) — то лично мне было бы крайне интересно узнать о том, как Вы ее использовали в Linux еще до того, как она появилась в винде.
                • 0
                  Не поймут :)

                  Трудно наверное признать, что в первую очередь функционал разрабатывается так ненавидимыми «проприетарными» корпорациями в сотрудничестве с другими такими же, а потом долго и упорно портируется в «открытые» системы…
  • 0
    Сейчас используем для виртуализации Hyper-V сервер с подключенным к нему iSCSI (Win08 с бесплатной целью от MS). Соединение 1Гбит уже начинает не хватать.
    Hyper-V 3 теперь же умеет использовать SMB3 шары как хранилище виртуальных машин.
    В отсутствие 10Гбе адаптеров интересно было бы проверить, как скажется SMB Multichannel на производительности ВМ, если использовать несколько 1Гбит портов.
    iSCSI то агрегацию «не поддерживает».
    • 0
      iSCSI вроде из коробки поддерживает лоад-балансинг? По крайней мере, при подключении к стораджу Dell задействуются все интерфейсы без всякого тиминга или агрегации, просто мультипасинг.
      • 0
        MPIO да. Но скорости это не добавит никак. Только одно активное соединение, если я правильно помню. Вот тут на примере VMware это разжевано.
        • 0
        • 0
          Ну, во-первых, статье 3 года. Во-вторых, там дело касается одной конкретной реализации — ESX 3.5, которая устарела уже на 4 поколения :) И, в-третих, по вашей же ссылке есть апдейт этой статьи, в котором подробно описывается, как мультипасинг отлично работает уже в следующей версии вмваре.
        • 0
          image
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Замеры чего? MPIO и Load balancing это типа взаимодополняющие вещи, ага.
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                Я не втыкал конкретно Hyper-V, но просто windows server отлично бегает по нескольким интерфейсам, причём сторонние драйверы зачастую позволяют выбирать оптимальный алгоритм балансировки для разных типов нагрузки.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разное