Microsoft — мировой лидер в области ПО и ИТ-услуг
766,12
рейтинг
13 декабря 2012 в 21:49

Разное → NIC Teaming в Windows Server 2012

С выходом Windows Server 2012 технология NIC Teaming стала штатным средством серверной операционной системы. Долгое время решения по объединению (группировке) сетевых адаптеров для платформы Windows предоставлялись только сторонними производителями, прежде всего, поставщиками оборудования. Теперь Windows Server 2012 содержит инструменты, которые позволяют группировать сетевые адаптеры, в том числе, адаптеры разных производителей.

Что дает NIC Teaming?


Технология NIC Teaming, именуемая также как Load Balancing/Failover (LBFO), доступна во всех редакциях Windows Server 2012 и во всех режимах работы сервера (Core, MinShell, Full GUI). Объединение (тиминг) нескольких физических сетевых адаптеров в группу приводит к появлению виртуального сетевого интерфейса tNIC, который представляет группу для вышележащих уровней операционной системы.

image

Объединение адаптеров в группу дает два основных преимущества:
  • Отказоустойчивость на уровне сетевого адаптера и, соответственно, сетевого трафика. Выход из строя сетевого адаптера группы не приводит к потери сетевого соединения, сервер переключает сетевой трафик на работоспособные адаптеры группы.
  • Агрегирование полосы пропускания адаптеров, входящих в группу. При выполнении сетевых операций, например, копирования файлов из общих папок, система потенциально может задействовать все адаптеры группы, повышая производительность сетевого взаимодействия.


Особенности NIC Teaming в Windows Server 2012


Windows Server 2012 позволяет объединять в группу до 32 сетевых адаптеров Ethernet. Тиминг не Ethernet адаптеров (Bluetooth, Infiniband и пр.) не поддерживается. В принципе, группа может содержать только один адаптер, например, для разделения трафика по VLAN, но, очевидно, отказоустойчивость в этом случае не обеспечивается.

Драйвер сетевого адаптера, включаемого в группу, должен иметь цифровую подпись Windows Hardware Qualification and Logo (WHQL). В этом случае можно объединять в группу адаптеры разных производителей, и это будет поддерживаемая Microsoft конфигурация.

В одну группу можно включать только адаптеры с одинаковой скоростью подключения (speed connections).

Не рекомендуется использовать на одном сервере встроенный тиминг и тиминг третьих фирм. Не поддерживаются конфигурации, когда адаптер, входящий в тиминг стороннего производителя, добавляется в группу, создаваемую штатными средствами ОС, и наоборот.

Параметры NIC Teaming


При создании тиминговой группы необходимо указать несколько параметров (рассмотрены ниже), два из которых имеют принципиальное значение: режим тиминга (teaming mode) и режим балансировки трафика (load balancing mode).

Режим тиминга


Тиминговая группа может работать в двух режимах: зависимый от коммутатора (switch dependent) и не зависимый от коммутатора (switch independent).

Как следует из названия, в первом варианте (switch dependent) потребуется настройка коммутатора, к которому подключаются все адаптеры группы. Возможны две опции – статическая настройка свича (IEEE 802.3ad draft v1), либо использование протокола Link Aggregation Control Protocol (LACP, IEEE 802.1ax).

В режиме switch independent адаптеры группы могут быть подключены к разным коммутаторам. Подчеркиваю, могут быть, но это необязательно. Просто если это так, отказоустойчивость может быть обеспечена не только на уровне сетевого адаптера, но и на уровне коммутатора.

Режим балансировки


Кроме указания режима работы тиминга, необходимо еще указать режим распределения или балансировки трафика. Таких режимов по сути два: Hyper-V Port и Address Hash.

Hyper-V Port. На хосте с поднятой ролью Hyper-V и n-ым количеством виртуальных машин (ВМ) данный режим может оказаться весьма эффективным. В этом режиме порт Hyper-V Extensible Switch, к которому подключена некоторая ВМ, ставится в соответствие какому-либо сетевому адаптеру тиминговой группы. Весь исходящий трафик данной ВМ всегда передается через этот сетевой адаптер.

Address Hash. В этом режиме для сетевого пакета вычисляется хэш на основе адресов отправителя и получателя. Полученный хэш ассоциируется с каким-либо адаптером группы. Все последующие пакеты с таким же значением хэша пересылаются через этот адаптер.

Хэш может вычисляться на основе следующих значений:
  • MAC-адрес отправителя и получателя;
  • IP-адрес отправителя и получателя (2-tuple hash);
  • TCP-порт отправителя и получателя и IP-адрес отправителя и получателя (4-tuple hash).

Вычисление хэша на основе портов позволяет распределять трафик более равномерно. Однако для трафика отличного от TCP или UDP применяется хэш на основе IP-адреса, для не IP-трафика – хэш на основе MAC-адресов.

Таблица ниже описывает логику распределения входящего/исходящего трафика в зависимости от режима работы группы и выбранного алгоритма распределения трафика. Отталкиваясь от этой таблицы, вы сможете выбрать наиболее подходящий для вашей конфигурации вариант.

Address Hash Hyper-V Port
Switch Independent
  • Исходящий трафик распределяется между всеми активными адаптерами группы
  • Входящий трафик поступает только на один интерфейс (основной адаптер группы). В случае сбоя в работе основного адаптера группы, его функции передаются другому сетевому адаптеру, и весь входящий трафик направляется к нему

  • К исходящим пакетам присоединяется тег со ссылкой на порт коммутатора Hyper-V, через который эти пакеты были переданы. Все пакеты с одного порта направляются одному и тому же адаптеру группы
  • Входящий трафик, предназначенный для конкретного порта Hyper-V, поступает тому же адаптеру группы, который используется для отправки пакетов
    с этого порта

Static, LACP
  • Исходящий трафик распределяется между всеми активными адаптерами группы
  • Входящий трафик будет перенаправляться
    в соответствии с алгоритмом распределения нагрузки, который реализован в коммутаторе

  • К исходящим пакетам присоединяется тег со ссылкой на порт коммутатора Hyper-V, через который эти пакеты были переданы. Все пакеты с одного порта направляются одному и тому же адаптеру группы. Если группа была переведена в режим распределения портов коммутатора Hyper-V, но не была подключена к коммутатору Hyper-V, весь исходящий трафик будет отправлен одному адаптеру группы
  • Входящий трафик будет перенаправляться в соответствии с алгоритмом распределения нагрузки, который реализован в коммутаторе



Необходимо отметить еще один параметр. По умолчанию все адаптеры группы являются активными и задействуются для передачи трафика. Однако вы можете один из адаптеров указать в качестве Standby. Это адаптер будет использоваться только в качестве «горячей» замены, если один из активных адаптеров выходит из строя.

NIC Teaming в гостевой ОС


По разным причинам вы можете не захотеть включать тиминг на хостовой машине. Или же установленные адаптеры не могут быть объединены в тиминг штатными средствами ОС. Последнее справедливо для адаптеров с поддержкой SR-IOV, RDMA или TCP Chimney. Тем не менее, если на хосте более одного даже такого физического сетевого адаптера, можно использовать NIC Teaming внутри гостевой ОС. Представим, что на хосте две сетевые карточки. Если в некоторой ВМ два виртуальных сетевых адаптера, эти адаптеры через два виртуальных свича типа external подключены к, соответственно, двум физическим карточкам, и внутри ВМ установлена ОС Windows Server 2012, то вы можете сконфигурировать NIC Teaming внутри гостевой ОС. И такая ВМ сможет воспользоваться всеми преимуществами тиминга, и отказоустойчивостью, и повышенной пропускной способностью. Но для того, чтобы Hyper-V понимал, что при выходе из строя одного физического адаптера, трафик для этой ВМ нужно перебросить на другой физический адаптер, нужно установить чекбокс в свойствах каждого виртуального NIC, входящего в тиминг.

image

В PowerShell аналогичная настройка задается следующим образом:

Set-VMNetworkAdapter -VMName srv4 -AllowTeaming On


Добавлю, что в гостевой ОС можно объединить в группу только два адаптера, и для группы возможен только switch independent + address hash режим.

Настройка NIC Teaming


Настройка тиминга возможна в графическом интерфейсе Server Manager, либо в PowerShell. Начнем с Server Manager, в котором необходимо выбрать Local Server и NIC Teaming.

image

В разделе TEAMS в меню TASKS выбираем New Team.

image

Задаем имя создаваемой группы, помечаем включаемые в группу адаптеры и выбираем режим тиминга (Static, Switch Independent или LACP).

image

Выбираем режим балансировки трафика.

image

Если необходимо, указываем Standby-адаптер.

image

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

image

При этом в свойствах реальных адаптеров можно увидеть включенный фильтр мультиплексирования.

image

В PowerShell манипуляции с тимингом реализуются набором команд с суффиксом Lbfo. Например, создание группы может выглядеть так:

New-NetLbfoTeam -Name teamSRV1 -TeamMembers LAN1,LAN2 -TeamingMode SwitchIndependent -LoadBalancingAlgorithm TransportPorts


Здесь TransportPorts означает балансировку с использованием 4-tuple hash.

Замечу, что вновь созданный сетевой интерфейс по умолчанию использует динамическую IP-адресацию. Если в скрипте нужно задать фиксированные настройки IP и DNS, то сделать это можно, например, так:

New-NetIPAddress -InterfaceAlias teamSRV1 -IPAddress 192.168.1.163 -PrefixLength 24 -DefaultGateway 192.168.1.1

Set-DnsClientServerAddress -InterfaceAlias teamSRV1 -ServerAddresses 192.168.1.200


Таким образом, встроенными средствами Windows Server 2012 вы можете теперь группировать сетевые адаптеры хостовой или виртуальной машины, обеспечивая отказоустойчивость сетевого трафика и агрегирование пропускной полосы адаптеров.

Увидеть технологию в действии, а также получить дополнительную информацию по этой и другим сетевым возможностям Windows Server 2012 вы можете, просмотрев бесплатные курсы на портале Microsoft Virtual Academy:


Надеюсь, материал был полезен.
Спасибо!
Автор: @ashapo
Microsoft
рейтинг 766,12
Microsoft — мировой лидер в области ПО и ИТ-услуг

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

  • –1
    В режиме switch independent адаптеры группы могут быть подключены к разным коммутаторам.

    Да и с LACP надо бы подключать адаптеры в разные коммутаторы, иначе резервирования как бы почти и нету. Благо примерно любые современные датацентровые коммутаторы поддерживают ту или иную реализацию mLAG в режиме active/active.
  • +2
    Только в 2012 году? Ого.
    • 0
      Лучше поздно чем никогда. :)
  • 0
    Спасибо за данную фичу!

    Раньше приходилось танцевать с бубном, чтобы настроить нормально тиминг (проблем не было только с серверами HP).
  • 0
    Не совсем понял, как в режиме switch independent могут быть активны одновременно несколько адаптеров. Ведь если передаётся трафик с одним и тем же MAC-адресом, это вызовет его флаппинг между коммутаторами и потерю трафика.
    • 0
      Ничто не мешает размазать разные виртуальные интерфейсы по разным физическим, с фейловером по мере надобности. В итоге каждый мак будет светиться только с одного порта, но активны будут все порты.
      Виртуальные интерфейсы могут быть назначены виртуалкам (если поднята роль гипервизора), или созданы на хосте в разных VLANах. Все это не вызовет никаких проблем.
      • 0
        Это понятно. Просто не подчёркнуто в статье, и лично у меня после её прочтения сложилось впечатление, что можно просто так, безо всяких VLAN-ов и виртуалок, взять и размазать исходящий трафик, и всё типа будет ОК.
        • 0
          Да вы правы, я не акцентировал внимание на этих нюансах. При использовании режима Address Hash создается и настраивается нужное количество виртуальных сетевых интерфейсов (тех самых tNIC на первом рисунке поста), для которых задаются VLAN ID. При использовании режима Hyper-V Port предполагается, что вы используете роль Hyper-V и виртуальные машины. В этом случае MAC-адрес ВМ может быть привязан к конкретному адаптеру группы для распределения трафика. Еще точнее, привязка осуществляется на основе идентификатора порта Hyper-V Switch, поскольку ВМ может использовать более одного MAC-адреса для каждого порта Hyper-V Switch.
  • 0
    Немного странно выглядит отсутсвие выбора алгоритма хеширования в server manager до его изменения через PS. Или это какая-то защита от дурака и сделано специально?
  • 0
    Александр, скажите в чем может быть причина «нестыковки» NIC Teaming в Windows Server 2012 R2 (switch independent + Hyper-V Port) и Virtual Switch'а?
    Создаю Virtual Switch на свежесозданном NIC Teaming и после этого хост становится не доступен. Пакеты не приходят, хотя сам Virtual Switch создается. Галочка «allow management operating system to share this network adapter» установлена

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

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