В этой статье мы рассмотрим методику активации пакетов увеличенной длины, Jumbo Frames, на виртуальной машине с Windows, запущенной в Hyper-V на базе Windows Server 2012 R2. Но для начала немного вкратце напомним что такое Jumbo Frames и зачем они нужны.
Jumbo Frames – это особые, сверхдлинные кадры Ethernet, размер которых превышает стандартный размер MTU (Maximum Transmission Unit) для Ethernet в 1518 байт. Размер Jumbo-кадров обычно варьируется в диапазоне от 1518 до 16000 байт. Как правило, размер Jumbo Frame-а не превышает 9000 байт, это ограничение накладывается 32 битной CRC в сетях Ethernet, теряющей свою эффективность при объеме передаваемых данных больше 12000 байт.
Зачем же нужны такие увеличенные пакеты?
Благодаря использованию пакетов увеличенной длины можно существенно повысить КПД сети, т.к. при сохранении размера Ethernet заголовка, количество полезной информации, содержащейся в пакете увеличивается (почти в 6 раз). Кроме того за счет уменьшения количества пакетов, заголовки которых нужно разбирать, снижается нагрузка на CPU сервера. Пакеты Jumbo Frames рекомендуется использовать в высокопроизводительных сетях с интенсивной пересылкой больших объемов данных
Важно! Для того, чтобы воспользоваться технологией Jumbo Frames необходимо, чтобы этот режим поддерживался и был включен как на конечных серверах, так и на всем транзитном сетевом оборудовании (режим поддерживается практически на всех современных сетевых картах и коммутаторах).
Настройка Jumbo Frames в Hyper-V Windows Server 2012 / R2
По умолчанию jumbo frames в Windows — системах отключен. Чтобы активировать передачу больших пакетов Jumbo Frames для гостевой ОС, запущенной в виртуальной машине на базе Hyper –V 2012 нужно:
- Включить Jumbo Frames на физических сетевых картах (NIC) гипервизора (хостовой ОС), подключенных к сети LAN
- Включить поддержку Jumbo Frames на сетевом оборудовании LAN
- Включить Jumbo Frames на виртуальном коммутаторе Hyper-V
- Активировать Jumbo Frames в гостевой ОС
Jumbo Frames на физических сетевых картах сервера
Для каждой из сетевых карточек (NIC), используемых для подключений сервера (хостовой ОС) к сети LAN необходимо в свойствах сетевых адаптеров перейти в режим настройки драйвера (кнопка Configure). Затем на вкладке Advanced найти параметр с названием Jumbo Frames (в зависимости от производителя NIC, он также может называться Packet Size, Jumbo Packets или что-то похоже) и установить его значение в 9014.
Примечание. Если это поле отсутствует, убедитесь, что ваша сетевая карточка поддерживает этот режим, и обновите драйвера до актуальной версии.
Поддержка Jumbo Frames на сетевом оборудовании
Далее необходимо включить поддержку Jumbo Frames на коммутаторах, которые в дальнейшем будут задействована в цепочке передачи данных между серверами с включенным Jumbo Frames (это задача для администраторов сети).
Включаем поддержку Jumbo Frames на виртуальном коммутаторе Hyper-V
В том случае, если на хостовой ОС (гипервизор) установлена Windows Server 2012, чтобы активировать Jumbo Frames для виртуального коммутатора Hyper-V нужно
- Открыть редактор реестра и развернуть ветку HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
- Внутри данной ветки содержатся несколько «подкустов». Нужно пробежаться по ним и найти ветку, в которой значение параметра «driverdesc» равно «Hyper-V Virtual Ethernet Adapter», а «Characteristics»= 0x00000029 (41)
- В найденной ветке задать параметру *JumboPacket значение 9014
- Перезагрузите сервер для вступления изменений в силу
Примечание. Хорошая новость для владельцев Windows Server 2012 R2 – никакой настройки виртуального коммутатора для работы с Jumbo Frames не требуется
Активация Jumbo Frames в гостевой ОС (Windows Server 2012)
На уровне гостевой ОС (в нашем примере это Windows Server 2012) включается аналогично гипервизору: в расширенных настройках драйвера укажите, что Jumbo Packet=9014 Bytes.
Тестируем работу Jumbo Frames в Windows
В большинстве случаев после выполнения указанных настроек перезагрузка ни гостевой, ни хостовой машины не требуется. Однако если что-то не работает, в первую очередь рекомендуется перезагрузить систему.
Протестировать работу Jumbo Frames можно с помощью простой команды ping, позволяющей определить что пакет большого размера может быть передан без дефрагментации:
ping -f –l 8972 second_jumbo_frame_server
где, флаг f — запрещает фрагментацию пакета, флаг –l задает размер пакета (8972 — на нашем стенде это максимальный размер пакета, передающийся без дефрагментации), second_jumbo_frame_server – имя/ip_адрес второго сервера с включенным Jumbo Frames.
Если ping отработал успешно – поздравляю, вы только что настроили Jumbo Frames для виртуальной машины на Hyper-V!
Настройка Jumbo Frames из Powershell
Указанные выше операции можно выполнить и с помощью всемогущего Powershell:
Следующая команда позволяет узнать включен ли Jumbo Frames для сетевого адаптера с именем Ethernet:
Get-NetAdapterAdvancedProperty –Name Ethernet –DisplayName “Jumbo Packet”
Если команда возвращает Disables (RegistryValue 1514), этоозначает, что Jumbo Frames в настоящий момент не включен, и используется стандартный размер MTU – 1514 байт.
Задаем увеличенный размер пакета для данного интерфейса:
Get-NetAdapterAdvancedProperty -Name Ethernet -DisplayName "Jumbo Packet" | Set-NetAdapterAdvancedProperty -RegistryValue "9014"
Примечание. При использовании для хранения данных и виртуальных машин Hyper-V iSCSI хранилища, активация больших пакетов Jumbo Frames для iSCSi сетевых интерфейсов позволяет значительно повысить скорость передачи данных между гипервизором и системой хранения iSCSI и снизить загрузку ЦП.