В этой статье мы рассмотрим методику активации пакетов увеличенной длины, 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 и снизить загрузку ЦП.
Home » Networking » Configuring jumbo frames between two servers
In tweaking an AppAssure environment recently, I ran through Dell documentation on performance tweaks that are mentioned to help improve AppAssure backup performance. One of the recommended tweaks for network performance is setting up jumbo frames between your primary core and target core servers. What are jumbo frames you might ask? Jumbo frames are Ethernet frames with more than the standard 1500 bytes of payload and typically have the advantage of reducing TCP overhead and CPU cycles in the process. Take a look at this in depth definition and explanation. Let’s take a look at configuring jumbo frames between two servers.
Configuring jumbo frames between two servers means that we have to configure jumbo frames along the whole chain of communication devices. This means any switches, routers, etc, between the two, have to be configured for jumbo frames to work correctly.
Switches
Most all enterprise grade switches today support jumbo frames. This feature can usually be enabled from either a CLI or web GUI. The environment I worked with recently is using a mix of Enterasys and Extreme switches. The CLI commands are fairly straightforward.
To enable jumbo frames in the Enterasys CLI:
show port jumbo ge.1.1 set port jumbo enable ge.1.1
In the Extreme XOS CLI:
show port information detail enable jumbo-frame ports [all | <port_list>]
Remember in the port configuration, this will need to be done on all access ports for your servers as well as the trunk uplink ports for your switches so they can correctly pass the jumbo frames.
Windows Servers
On the Windows server side, enabling jumbo frames is found under the advanced properties of most enterprise network cards.
Navigate to your Network Connections configuration, right click your network adapter, go to properties, and then under the Connect Using that lists your network card, click Configure.
Change the Jumbo Packet Value to 9014.
Testing
To test that jumbo frames have been successfully enabled throughout the chain of communication between servers, we can use the ping command along with some switches.
We can ping with 8972 bytes send buffer size as there is a 28 byte TCP header appended to the 8972 equalling the 9000 bytes jumbo packet size.
ping -f -l 8972 192.168.1.50
If you test and ping with 8973 bytes for instance, you will receive the following in your ping output:
Packet needs to be fragmented but DF set.
Final Thoughts
Jumbo frames are especially useful for maximizing the TCP payload, reducing CPU cycles, and maxing out network performance. Keep in mind that jumbo frames need to be enabled from the servers all the way through the network chain, including switches, routers, etc.
Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don’t have to.
Jumbo frames are Ethernet frames with a payload greater than the standard mtu of 1500. Increasing the mtu size on a 1 GB network usually improves network performance and efficiency.The following PowerShell cmdlets will help display and check current jumbo frame values and edit them.The maximum value of a Jumbo frame on an Ethernet adapter varies depending on the network adapter brand.
I have a Windows Server 2012R2 with four NICs in a team. After setting the Jumbo frame values at the individual NICs, they should be inherited by the NIC team adapter.The Advanced Properties of the NICs are displayed below:
The Get-NetAdapterAdvancedProperty -Name nic2
cmdlet displays the current Jumbo frame value of NIC2 in the team:
My attempt to set the Jumbo frame value on this NIC to 9014 failed, with the following error message “the value must be within the range 1500-9000” as indicated :
Set the new value to 9000:
Get-NetAdapterAdvancedProperty -Name nic2 -RegistryKeyword "*jumbopacket" | Set-NetAdapterAdvancedProperty -RegistryValue 9000
The new value is shown in the following screen shot:
I completed the same configuration on the remaining team NICs.To optimize performance on the network and take full advantage of this configuration, the next logical step in the process is to configure the corresponding Cisco switch port for Jumbo frames.
By default, the switch and it’s gigabit ports/interfaces are set to the standard 1500 mtu. As indicated in the following command :
L3Switch#sh system mtu
System MTU size is 1500 bytes
System Jumbo MTU size is 1500 bytes
Routing MTU size is 1500 bytes
This could also be verified by using the sh run command as shown below:
L3Switch#sh running-config
Building configuration...
Current configuration : 3666 bytes
!
version 12.2
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname L3Switch
!
boot-start-marker
boot-end-marker
!
enable secret 5 $1$w7It$7sxFdFRIbKR7zfDZeYJq2/
!
no aaa new-model
clock timezone CST -5
system mtu routing 1500
And the sh interfaces gigabitEthernet0/21 command for a specific interface:
L3Switch#sh interfaces gigabitEthernet0/21
GigabitEthernet0/21 is down, line protocol is down (notconnect)
Hardware is Gigabit Ethernet, address is 64d8.148e.8015 (bia 64d8.148e.8015)
MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Configure Jumbo Frame values on the Cisco Gigabit switch globally:
L3Switch#config t
Enter configuration commands, one per line. End with CNTL/Z.
L3Switch(config)#system mtu jum
L3Switch(config)#system mtu jumbo ?
Jumbo MTU size in bytes
L3Switch(config)#system mtu jumbo 9000 ?
L3Switch(config)#system mtu jumbo 9000
Changes to the system jumbo MTU will not take effect until the next reload is done
L3Switch(config)#^Z
L3Switch#
*Mar 1 00:23:12.967: %SYS-5-CONFIG_I: Configured from console by console
L3Switch#reload
System configuration has been modified. Save? [yes/no]: y
Building configuration...
[OK]
Proceed with reload? [confirm]
After reload, verify Jumbo Frame settings have taken effect:
L3Switch#sh system mtu
System MTU size is 1500 bytes
System Jumbo MTU size is 9000 bytes
Routing MTU size is 1500 bytes
Verify the settings for a specific interface:
L3Switch#sh interfaces gigabitEthernet0/21
GigabitEthernet0/21 is down, line protocol is down (notconnect)
Hardware is Gigabit Ethernet, address is 64d8.148e.8015 (bia 64d8.148e.8015)
MTU 9000 bytes, BW 10000 Kbit, DLY 1000 usec,
reliability 255/255, txload 1/255, rxload 1/255
umbo 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\{4D36E972-E325-11CE-BFC1-08002BE10318}
- Внутри данной ветки содержатся несколько «подкустов». Нужно пробежаться по ним и найти ветку, в которой значение параметра «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, позволяющей определить что пакет большого размера может быть передан без дефрагментации:
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 и снизить загрузку ЦП.
Enabling Jumbo Frame support in Hyper-V Server 2008 R2 (or Windows Server Core) has proven to be a bit of an adventure. It really just involves setting the MTU size, but it has to be done in the OS (to affect the TCP/IP stack) as well as the network cards’ driver. Since Core versions of Windows do not have a network control, setting the MTU on the cards proves to be a bit of a trick. This is what I had to do to enable Jumbo Frames on several iSCSI nics, and since it differs for Intel vs Broadcom adapters, there are two procedures.
I should point out that this does not address configuring the network switch that these nics are attached to. That is a whole ‘nother can of worms, but suffice it to say that the switch must not only support Jumbo Frames but have that support enabled, along with a whole host of other settings.
Enable Jumbo Frames on the OS
The first thing you need to do is make sure that your server will allow jumbo frames. You do this by setting the MTU on your adapters to 9000. The easiest way to do this is by running a netsh command on each adapter you want to use Jumbo Frames.
Get a list of interface names by running “netsh int show int”
Admin State State Type Interface Name ------------------------------------------------------------------------- Enabled Disconnected Dedicated Local Area Connection 2 Enabled Connected Dedicated Bcom-GB3-iSCSI-A Enabled Connected Dedicated Local Area Connection Enabled Connected Dedicated Local Area Connection 3 Enabled Connected Dedicated Local Area Connection 4 Enabled Connected Dedicated Bcom-GB4-iSCSI-B Enabled Connected Dedicated Intel-GB1-Guest-B Enabled Connected Dedicated Bcom-GB2-Guest-A Enabled Connected Dedicated Intel-GB2-Guest-C Enabled Connected Dedicated Bcom-GB1-Mgmnt Enabled Connected Dedicated Intel-GB3-iSCSI-C Enabled Connected Dedicated Intel-GB4-Migration
In this case I have already re-named the Interfaces that I intend to use for iSCSI. You might just see a whole list of “Local Area Connection” interfaces. You can use ipconfig or netsh to further identify which ones you want to use.
Now for each interface you want jumbo frames enabled, run this command:
netsh int ipv4 set subint “<Interface Name Goes Here>” mtu=9000 store=persistent
Now you have to configure Jumbo Frames in the driver for each interface.
Enable Jumbo Frames on Intel cards
The Intel driver stores it’s “Jumbo Frame” settings in the registry. Thankfully, Hyper-V Server (and Windows Core) comes with Regedit, so you can just launch that from command line (regedit.exe) and browse to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces
Here you will see all the network interfaces listed by GUID. I have found that the easiest way to determine which GUID is which adapter is by finding the IP address and being able to correlate it to the right Interface name.
At this point you should start making a list to help keep things straight. Copy the GUID into notepad and list the IP address next to it and do this for each card you want to configure. So for this server, my list looks like this:
SERVERNAME {7A310D71-217C-4E4A-9DA7-43299A76CBD5} 172.16.0.9 SERVERNAME {7BC7F3B9-B245-4579-82CB-C94161BFDBC1} 172.16.0.7 SERVERNAME {8BA5076E-0FC3-4D20-9609-654F228EE6BD} 172.16.0.6 SERVERNAME {98ABBECA-B8A2-41D2-9550-8B571E50F49A} 172.16.0.8
Now we have to navigate to a new registry key to configure the driver. Go here:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
Here you will again see a list of all network interfaces, only this time they are under 4 digit identifiers. From here, search for the GUID that you copied to your list and you should find it as the “NetCfgInstanceId” key of one of the adapters. Once found, it’s not a bad idea to update your list to keep track of what’s what. Mine looks like this now:
SERVERNAME {7A310D71-217C-4E4A-9DA7-43299A76CBD5} 172.16.0.9 0009 Intel SERVERNAME {7BC7F3B9-B245-4579-82CB-C94161BFDBC1} 172.16.0.7 0005 Broadcom SERVERNAME {8BA5076E-0FC3-4D20-9609-654F228EE6BD} 172.16.0.6 0004 Broadcom SERVERNAME {98ABBECA-B8A2-41D2-9550-8B571E50F49A} 172.16.0.8 0008 Intel
Scroll up to find the “*JumboPacket” key and double click it to change the default value of 1514 to 9014. Note the extra 14 bytes here represents packet headers that normally are not counted in MTU size.
Repeat this for each Intel adapter you need to configure, and then reboot the server for the setting to take effect.
Enable Jumbo Frames on Broadcom cards
First make sure you have the latest Broadcom drivers. Make sure you get the 2008 R2 x64 set.
If you haven’t already, then download and install the driver and then reboot the host. Note: Make sure you migrate any existing guest servers off the host before you install the drivers. The temporary outage of the card due to the update seems to make a failover cluster angry.
Now get the Broadcom Management Application suite. Again, get the x64 set from the same page.
Install the management app. I opt’d not to install the BASP component (see screenshot below) since we do not want failover or teaming in this scenario. It’ll likely warn you that you need the dotNet Framework 2.0 and you should be able to ignore this because the installer just does not recognize the “Core” framework, but the application still runs. To make sure you do in fact have the framework installed, run “oclist | findstr /i netfx” and look for a line stating that NetFx is installed. For example, “Installed:NetFx2-ServerCore”. If not, you can install it by running “start /w ocsetup NetFx2-ServerCore” or instead you can install dotNet 3.0 and 3.5 by running “start /w ocsetup NetFx3-ServerCore”.
From C:\Program Files\Broadcom\BACS run “BACSCLi” to run in interactive mode. It will show you a list of all network adapter drivers installed. You only care about the “NDIS” adapters so enter “list ndis” and you’ll see something like this:
C MAC Dev Type Name - ------------ -------- ---------------------------------------------------- 0 001B214285B8 NDIS [0000] Intel(R) Gigabit ET Quad Port Server Adapter 1 001B214285B9 NDIS [0007] Intel(R) Gigabit ET Quad Port Server Adapter #2 2 001B214285BC NDIS [0008] Intel(R) Gigabit ET Quad Port Server Adapter #3 3 001B214285BD NDIS [0009] Intel(R) Gigabit ET Quad Port Server Adapter #4 4 0026B9429866 NDIS [0002] Broadcom BCM5709C NetXtreme II GigE (NDIS VBDClient) 5 0026B9429868 NDIS [0003] Broadcom BCM5709C NetXtreme II GigE (NDIS VBDClient) #2 6 0026B942986A NDIS [0004] Broadcom BCM5709C NetXtreme II GigE (NDIS VBDClient) #3 7 0026B942986C NDIS [0005] Broadcom BCM5709C NetXtreme II GigE (NDIS VBDClient) #4
If you did the Intel configuration you’ll notice the four digit number in square braces of the Name field matches the Control\Class registry key.
Use some combination of “ipconfig /all” in another window or CtxAdmTools’ Visual Core Configurator 2008 or the four digit registry code to identify the adapter that you want to configure. In this example we want Connection #6. Select it by using “select 6” or whatever number is in the “C” column that matches your adapter. Now validate that you have selected the correct adapter by reviewing some of its details. Run “info” to see it’s MAC/IP, etc.
Vital Signs ----------- MAC Address: : 00-26-B9-42-98-6A Permanent MAC Address: : 00-26-B9-42-98-6A IPV4 Address : 172.16.0.6 Link Status : UP Duplex: : Full Speed(in Mbps): : 1000 Offload Capabilities : TOE,LSO,CO,RSS Mtu : 1500 Driver Information ----------- Driver Status: : Loaded Driver Name: : bxnd60a.sys Driver Version: : 5.0.13.0 Driver Date: : 07/30/2009
Notice the MTU setting is set to 1500 by default. Now run “cfg advanced” to list its advanced properties.
Advanced -------- Ethernet@WireSpeed: Enable (Default) Flow Control: Disable IPv4 Checksum Offload: Tx/Rx enabled (Default) IPv4 Large Send Offload: Enable (Default) IPv6 Checksum Offload: Tx/Rx enabled (Default) IPv6 Large Send Offload: Enable (Default) Interrupt Moderation: Enable (Default) Jumbo MTU: 1500 (Default) Locally Administered Address: Not Present (Default) Number Of RSS Queues: 8 (Default) Priority & VLAN: Priority & VLAN enabled (Default) Receive Buffers: 750 (Default) Receive Side Scaling: Enable (Default) Speed & Duplex: Auto (Default) TCP Connection Offload (IPv4): Enable (Default) TCP Connection Offload (IPv6): Enable (Default) Transmit Buffers: 1500 (Default) VLAN ID: 0 (Default) Wake Up Capabilities: Both (Default)
Run “cfg advanced “Jumbo MTU”=9000” to set Jumbo frames to 9000 bytes. Note that you do not have to account for the 14 bytes of header data here. It’ll take a few seconds to apply the change but you should not need to reboot (yay!). You can now run “cfg advanced” and “info” to list the settings and ensure that the MTU is in fact set to 9000.
You should also enable Flow Control for Transmit (Tx) and Receive (Rx). With the correct adapter already selected, run “cfg advanced “Flow Control”=”Rx & Tx enabled””.
Once that is complete you can enter “q” to exit BACScli or start over using “list ndis” and select another interface to configure. You can also use this utility to select non-Broadcom adapters to display some of their info like MTU size.
Testing Jumbo Frames
To test if Jumbo Frames are working you can ping another host target that also supports Jumbo Frames. The easiest way that I have found to do this was to just change the IP of your test NIC and your test target NIC to something that no other adapter has. This is because there is no way to tell windows specifically what NIC to send traffic over, so setting the NIC’s to their own network ip space is the only way to ensure that the ping traverses a particular adapter.
For example, I changed the source test nic to 172.16.1.4 and the target to 172.16.1.8 and no other adapters on either host saw set in the 172.16.1.* range.
First try a normal “ping 172.16.1.8” and it should work fine. Then use “ping -f -l 6000 172.16.1.8” to test jumbo frames and it should also work, only this time you’ll see it sending 6000 bytes instead of 32.
So that about covers it. I had to do this for each of the 32 iSCSI nics spread across the 8 host servers, but it works! You should be aware that if you do a driver update or if you share a NIC with a virtual network (as a Hyper-V Host) your settings may be lost and you’ll have to go through this again.