- Что такое Jumbo Frames и нужно ли их включать в небольшой сети
- Включаем Jumbo Frames в Windows Server 2012 R2 Hyper-V
- Настройка Jumbo Frames в Hyper-V Windows Server 2012 / R2
- Jumbo Frames на физических сетевых картах сервера
- Поддержка Jumbo Frames на сетевом оборудовании
- Включаем поддержку Jumbo Frames на виртуальном коммутаторе Hyper-V
- Активация Jumbo Frames в гостевой ОС (Windows Server 2012)
- Тестируем работу Jumbo Frames в Windows
- Настройка Jumbo Frames из Powershell
- Что такое Jumbo Frames и как их использовать?
- Фреймы Ethernet
- Что делает их Джамбо?
- Зачем идти гигантский?
- В чем подвох?
- Как использовать их
Что такое Jumbo Frames и нужно ли их включать в небольшой сети
Постоянно спотыкаюсь и что-то забываю, поэтому, разобравшись в очередной раз, решил вкратце записать основное, как я понял. Поправьте, если что не так.
Jumbo Frames — большие фреймы ethernet-сети (не путать с пакетами TCP, например). Стандартный фрейм для Ethernet — 1500 байт, однако, к Jumbo относятся фреймы больше 1518 байт. Максимальный фрейм — 16000 байт, однако чаще используется 9000 байт, как максимум.
В чем плюсы JF: из-за того, что за один фрейм можно пробросить больше информации, возрастает скорость передачи данных по сети (но достаточно незначительно 3%-5%). Зато ощутимо падает нагрузка на CPU всех устройств, которые участвуют в приеме-передаче. Это, в свою очередь, увеличивает скорость отклика и дает возможность увеличить нагрузку на сеть.
В чем минусы JF: все устройства, участвующие в передаче, должны поддерживать фреймы размером, не меньшим, чем отправляющий сервер. Т.е. если сервер А отправляет файл серверу Б, то оба сервера и все промежуточные свичи должны Jumbo Frames поддерживать и размером не меньшим, чем отправляет сервер А. Стандартов на размеры JF никаких нет, как и нет стандартов на их обработку. Разные устройства реагируют на JF по разному, что порождает массу глюков (вплоть до обрывов связи), в связи с чем JF по умолчанию отключены, а это еще и добавляет проблем с тем, чтобы все устройства цепочки поддерживали JF. А, если в цепочке встретится неподдерживающее JF устройство, то картина производительности ухудшится, если сравнить с картиной, где ни одно устройство не пытается использовать JF. Траффик под JF тоже должен быть соответствующий, толстый, например, NFS. В интернет выкидывать больший фреймы нельзя, гарантированно найдется устройство без его поддержки. Признаком отсутствия поддержки JF является, например, рост rx_header_split на интерфейсе.
Выводы: Преимущества Jumbo Frames проявляются исключительно на гигабите и выше, они есть и значительные. Зато количество глюков, которые вы можете собрать и не сможете диагностировать просто потрясает.
Я не рекомендую использование Jumbo Frames в домашней или офисной сети, если она не гигабитная или быстрее, а так же если вы плохо себе представляете всю цепочку устройств по дороге.
Включаем Jumbo Frames в Windows Server 2012 R2 Hyper-V
В этой статье мы рассмотрим методику активации пакетов увеличенной длины, 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 в 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\
- Внутри данной ветки содержатся несколько «подкустов». Нужно пробежаться по ним и найти ветку, в которой значение параметра «driverdesc» равно «Hyper-V Virtual Ethernet Adapter», а «Characteristics»= 0x00000029 (41)
- В найденной ветке задать параметру *JumboPacket значение 9014
- Перезагрузите сервер для вступления изменений в силу
Активация Jumbo Frames в гостевой ОС (Windows Server 2012)
На уровне гостевой ОС (в нашем примере это Windows Server 2012) включается аналогично гипервизору: в расширенных настройках драйвера укажите, что Jumbo Packet=9014 Bytes.
Тестируем работу Jumbo Frames в Windows
В большинстве случаев после выполнения указанных настроек перезагрузка ни гостевой, ни хостовой машины не требуется. Однако если что-то не работает, в первую очередь рекомендуется перезагрузить систему.
Протестировать работу Jumbo Frames можно с помощью простой команды ping, позволяющей определить что пакет большого размера может быть передан без дефрагментации:
где, флаг f — запрещает фрагментацию пакета, флаг –l задает размер пакета (8972 — на нашем стенде это максимальный размер пакета, передающийся без дефрагментации), second_jumbo_frame_server – имя/ip_адрес второго сервера с включенным Jumbo Frames.
Если ping отработал успешно – поздравляю, вы только что настроили Jumbo Frames для виртуальной машины на Hyper-V!
Настройка Jumbo Frames из Powershell
Указанные выше операции можно выполнить и с помощью всемогущего Powershell:
Следующая команда позволяет узнать включен ли Jumbo Frames для сетевого адаптера с именем Ethernet:
Если команда возвращает Disables (RegistryValue 1514), этоозначает, что Jumbo Frames в настоящий момент не включен, и используется стандартный размер MTU – 1514 байт.
Задаем увеличенный размер пакета для данного интерфейса:
Что такое Jumbo Frames и как их использовать?
Jumbo Frames может предоставить некоторые серьезные преимущества для вашей локальной сети. Они могут ускорить вашу общую скорость сети, обеспечить лучшее взаимодействие между некоторыми приложениями и снизить нагрузку на вашу сеть. У них также есть некоторые серьезные ограничения и недостатки, потому что они нарушают стандарт Ethernet. Если вы планируете внедрять Jumbo Frames, важно сначала выполнить домашнее задание.
Фреймы Ethernet
Прежде чем вы сможете понять Jumbo Frames, вы должны иметь представление о том, что такое Ethernet Frames. Таким образом, кадры Ethernet буквально выделяют данные, передаваемые в пакетах Ethernet. Все Ethernet-фреймы имеют одинаковые основные части. Эта структура имеет решающее значение для сотрудничества между устройствами. Оно должно быть распознаваемым для любого устройства Ethernet для передачи и понимания данных. Каждый кадр Ethernet начинается с преамбулы. Сетевые устройства используют преамбулу для дифференцирования кадра, чтобы синхронизировать передачу кадра.
В конце преамбулы находится разделитель начального кадра (SFD). SFD предназначен для отделения преамбулы от фактического содержимого кадра Ethernet. Сразу после SFD идет MAC-адрес назначения, за которым непосредственно следует MAC-адрес источника. Конечно, это важно для обеспечения того, чтобы пакет попал туда, куда ему нужно, и чтобы ответ мог быть отправлен. Следующая часть присутствует только в конфигурации VLAN. Он содержит информацию о VLAN.
После этого есть небольшой раздел кадра, который содержит информацию о протоколе передачи данных, частью которого являются пакет и кадр. Если это данные TCP / IP, они будут представлены здесь. Этот следующий кусок сами данные. Эти данные или полезная нагрузка содержат порцию информации, которая фактически передается. Полезная нагрузка — это и есть причина всего остального. Полезная нагрузка является самой большой частью кадра Ethernet. Его размер может изменяться, но максимальный размер сети определяет максимальный размер передаваемого блока (MTU). Стандарт Ethernet устанавливает MTU на 1500 байтов.
Наконец, концом кадра Ethernet является последовательность проверки кадра (FCS). Это циклическая проверка избыточности (CRC), которая позволяет получателю кадра проверять отсутствующие или поврежденные данные.
Что делает их Джамбо?
Итак, почему Jumbo Frames Jumbo? Они несут гораздо большую полезную нагрузку, чем обычные кадры Ethernet. Вместо обычных 1500 байт, Jumbo Frames может загружать до 9000 байт. Эти значительно большие кадры могут нести в шесть раз больше данных, чем стандартные кадры. Теоретически, вы можете уменьшить количество пакетов, передаваемых в вашей сети, до одной шестой стандартной скорости при идеальных условиях.
Зачем идти гигантский?
Вы уже увидели причины использования Jumbo Frames в своей сети. Теперь пришло время погрузиться глубже и разобраться в основных причинах выбора Jumbo Frames.
Они могут уменьшить использование полосы пропускания. Одна из основных целей Jumbo Frames — загружать больше данных в меньшее количество Ethernet-фреймов. Используя меньше кадров, вы уменьшаете общее количество транзакций в сети. Это сокращение может быть драматичным. В любом случае, меньшее количество транзакций может напрямую приравняться к меньшей используемой пропускной способности. Jumbo Frames также снижает нагрузку на ваше сетевое оборудование. Ваше оборудование должно занять время для обработки каждого полученного пакета. Размер полезной нагрузки не влияет на требуемое время обработки. Сетевые устройства имеют дело только с сетевыми данными в начале кадра Ethernet. Таким образом, меньшее количество больших полезных нагрузок создает меньшую нагрузку на сетевое оборудование, чем множество небольших полезных нагрузок.
Jumbo Frames также может увеличить общую скорость сети. Поскольку сетевое оборудование должно обрабатывать меньше кадров, а сеть использует полосу пропускания более эффективно, скорость передачи данных должна быть выше. Эффект должен быть таким же, как в сети с меньшим количеством пользователей и меньшим трафиком.
В чем подвох?
Jumbo Frames не идеальны. Есть несколько очень явных недостатков при их реализации в вашей сети.
Прежде всего, вам нужно оборудование, которое поддерживает Jumbo Frames. Теперь, это обычно не проблема в корпоративных средах, но это все еще вопрос. Все ваше сетевое оборудование должно поддерживать Jumbo Frames. Обычно это означает, что скорость должна быть не менее гигабитной. Вы также должны явно настроить его для работы с Jumbo Frames. Если какой-то фрагмент в цепочке не поддерживает Jumbo Frames, он фрагментирует кадры. Это увеличит нагрузку на процессор этого устройства, создаст узкое место и замедлит работу вашей сети. Короче говоря, если ваша сеть не поддерживает Jumbo Frames, вы получите противоположность желаемых результатов.
Вам нужны не только маршрутизаторы и коммутаторы. Сетевые интерфейсные карты (NIC) всех ваших клиентских компьютеров также должны поддерживать Jumbo Frames. Если они этого не сделают, они все равно будут работать, но соединение с этим клиентом будет замедляться, так как оно разбивает кадры на более мелкие стандартные.
Также важно помнить, что пакеты большего размера более подвержены повреждению. Это верно для любого случая, когда вы работаете с большими кусками данных. Сетевое оборудование стало лучше в предотвращении коррупции, но это все еще фактор.
Как использовать их
Как и в большинстве ситуаций с сетью, очень сложно предоставить конкретику. Здесь все сводится к совместимости. Если все ваше оборудование поддерживает Jumbo Frames, их настройка не должна быть проблемой. MTU является ключом к использованию Jumbo Frames. Процесс настройки вашей сети сводится к изменению настройки MTU на каждом устройстве до 9000 байт вместо 1500 байт по умолчанию. Сначала проверьте каждый маршрутизатор, коммутатор и любое другое сетевое устройство в вашей сети. Убедитесь, что он поддерживает Jumbo Frames. Если они все делают, измените настройку MTU на каждом.
Затем сделайте то же самое на своих подключенных устройствах. Вам нужно будет установить MTU через операционную систему каждого компьютера. Как правило, это проще в системах на основе Unix, но вы можете сделать это и в Windows. В Windows 10 вы можете включить Jumbo Frames через настройки вашей сетевой карты. В диспетчере устройств вы можете выбрать свой сетевой адаптер. Ищите настройки Jumbo Frames. Если его там нет, ваша карта не поддерживает его. Когда вы выбираете Jumbo Frames, установите размер 9k.
Под Linux есть несколько способов включить Jumbo Frames. Предполагая, что вы используете Linux на рабочем столе, вы можете увеличить размер MTU с помощью Network Manager. Выберите правильное соединение, и вы можете ввести пользовательское значение MTU. Если вы работаете с сервером, у вас есть некоторые другие параметры интерфейса командной строки, в том числе написание пользовательского модуля Systemd, настройка его с помощью ifconfig при запуске или установка значения в resolv.conf.
Если у вас есть телефоны или другие устройства, которые не поддерживают Jumbo Frames, кадры Ethernet, поступающие с этих устройств, останутся стандартными 1500 байтами. Устройство сломает любые Jumbo Frames, которые приходят к нему.
Если вы работаете в большой сети, вы, вероятно, увидите хорошую выгоду от Jumbo Frames. Домашние пользователи могут использовать их, но, возможно, не увидят такой большой пользы. Так как их настройка не слишком сложна, вы можете поэкспериментировать с ней, если вы чувствуете себя авантюрным.