Тестирование гигабитных сетевых адаптеров на шине 32-бит PCI

Мы продолжаем цикл тестирования гигабитных сетевых адаптеров. Сегодня будут рассмотрены платы, предназначенные как для 32 бит PCI шины, так и платы с интерфейсом 64 бит PCI, но обратно совместимые с 32-битной шиной. Это именно та PCI шина, что распаяна на материнских платах обычных компьютеров. Наличие 64-бит PCI пока(?) является привилегией серверных материнских плат. Они предназначены для других задач, обычно многопроцессорные и естественно сильно дороже.

Теория о гигабитном Ethernet (Gigabit Ethernet) была рассмотрена в предыдущей статье. Эта статья ее продолжением, и кроме того, в ней немного модифицирована методика тестирования адаптеров.

Список плат

Пять из семи рассмотренных адаптеров собраны на микроконтроллере от National Semiconductor Corporation. Все они двух-чиповые, второй чип является трансивером физического уровня. Трансивер DP83861VQM-3 одинаков для всех пяти карт. На трансивере некоторых из них радиатор установлен, на других — отсутствует.

Нужен он или нет — решать производителю, отмечу лишь, что трансиверы ощутимо греются. При смене карты сразу после выключения компьютера, чип или радиатор на ощупь практически обжигающие. Трансивер может работать на скоростях 10/100/1000 Мбит/сек в режимах полу- и полного дуплекса. Поддерживает режим автосогласования скоростей и режимов из вышеназванного списка (IEEE 802.3u Auto-Negotiation).

А вот микроконтроллеры установленные на этих картах, и являющиеся 10/100/1000 Мбит Ethernet контроллерами, связывающими сетевую карту с шиной PCI, различаются в зависимости от битности шины PCI. На 64-битных адаптерах установлены контроллеры DP83820BVUW, на 32-битных — DP83821BVM. В принципе, их единственное глобальное отличие, это разрядность PCI шины, с которой они работают. Остальные характеристики одинаковы:

  • MDI-X — автодетектирование прямого и кросс-кабеля;
  • встроенные очереди FIFO размерами 8 КБ на передачу и 32 КБ на прием;
  • поддержка Jumbo-фреймов;
  • поддержка VLAN (Virtual LAN) с автодетектированием и удалением VLAN-тэгов для принимаемых пакетов и автоматической установкой VLAN-тэгов на уходящие пакеты;
  • поддержка 802.1D и 802.1Q QoS, в том числе, несколько очередей в обоих направлениях (на прием и передачу);
  • ускорение обсчета контрольных сумм кадров протокола IPv.4 — поддерживается расчет и проверка заголовков протоколов IP, TCP, и UDP.

При установки драйверов под ОС Windows у всех этих пяти карт вылез забавный баг — после перезагрузки или поиска на наличие новых устройств, появлялось неизвестное дополнительное  PCI устройство, которое ничем не идентифицировалось и драйвер карты, который я пытался ему подсунуть, не воспринимала. Тем не менее, адаптеры нормально работали и других багов (в работе) замечено не было.

Первая карта TRENDnet TEG-PCITX от компании TRENDware.

     

 

Карта имеет 32-битный PCI интерфейс. Сзади на ней расположены шесть светодиодных индикаторов, первые три информируют о скорости соединения 10/100/1000 Мбит, а остальные показывают наличие коллизий, полного дуплекса и факта передачи данных. На трансивер установлен радиатор.

Для установки сетевого адаптера в ОС Windows 2000 использовалась последняя версия драйвера, скачанная с сайта производителя. Номер версии — 5.01.24.

     

В драйвере присутствуют богатые возможности настройки и тюнинга карты, а размер Jumbo Frame можно задавать вручную с шагом 1, насколько большой размер можно выставить, не выяснялось. Но с размером фрейма 16128, являвшимся максимальным в тестах, адаптер работал нормально.

Для ОС Linux предлагаются лишь драйвера для ядра 2.2.х. В ядрах версии 2.4.х они не собираются, поэтому использовался встроенный в ОС драйвер «National Semiconduct DP83820» версии 0.18. Но в ней задан максимальный размер Jumbo Frame — 8192. Причем не правя исходный код драйвера, невозможно выставить размеры пакета, более 1500.

 

          

Вторая карта — TRENDnet TEG-PCITX2 — от той же компании, но с интерфейсом 64-бит PCI. Кроме этого, используется более старая ревизия микроконтроллера — DP83820BVUW. Трансивер тоже оснащен радиатором.

Драйверы под Windows и Linux те же, что и у 32-битной модели.

Следующие две карты — от компании SMC Networks. Обе они двух-чиповые и собрана на вышеописанных микроконтроллерах. На обоих картах радиаторы отсутствуют.

            

Карта SMC9452TX обладает 32-битным интерфейсом PCI и имеет 5 индикаторов, три из которых сообщают о скорости работы, а два оставшиеся о наличии линка и активности. У обоих адаптеров интересный дизайн PCB — со стороны интерфейсного Ethernet разъема наблюдается небольшой срез, а с другой стороны — непонятный выступ. Хотя после внимательного рассмотрения плат становится ясно, что это сделано для экономии текстолита.

           

Для Windows использовались последние драйверы с сайта компании. Их версия — 1.2.905.2001. Опций настроек тут несколько меньше, чем в предыдущем случае, а размер Jumbo Frame задается дискретно и может принимать значения 1514, 4088, 9014, 10000, 16128.

Хотя на сайте компании SMC выложены драйвера для ОС Linux, при тестировании использовался драйвер из ядра ОС (тот же, что и в предыдущих случаях). Это связано с тем, что родной драйвер достаточно старый (середины 2001 года).

 

                

Второй адаптер от SMC Networks — SMC9462TX — обладает практически теми же характеристиками, что и предыдущий, но использует 64-битную PCI (и соответственно другой микроконтроллер Gigabit Ethernet). Все утверждения относительно драйверов аналогичны предыдущей карте.

Последняя двух-чиповая карта в обзоре — LNIC-1000T(64) от компании LG Electronics.

              

 

Карта обладает 64-битным PCI интерфейсом. x На трансивере присутствует радиатор. На карте установлено шесть светодиодных индикаторов с функциями, аналогичными адаптеру TEG-PCITX.

                

Для ОС Windows использовались прилагаемые с картой драйверы, так как на сайте компании новые драйверы отсутствовали. Судя по их виду, использовались референсные драйверы (опять же аналогично TEG-PCITX) с теми же функциями. Их версия — 5.01.24.

Драйверы для Linux присутствовали только для версии ядер 2.2.х, поэтому для тестирования использовался тот же драйвер, встроенный в ОС.

Следующий адаптер — Hardlink HA-64G — от MAS Elektronik AG с 64-битным интерфейсом.

                  

 

На карте установлено три светодиодных индикатора, которые показывают скорость 10/100/1000 Мбит и наличие линка. А при передаче данных индикатор мерцает.

Эта карта наиболее интересна, так она одночиповая и на ней установлен новый контроллер AC1001KPB от Altima. На контроллер установлен радиатор.

                

На сайте компании новые драйверы тоже отсутствовали, поэтому для Windows использовались драйверы версии 3.12.0.0, поставляемые с картой. Драйвер предоставляет не очень много опций для настройка адаптера. Размеры Jumbo Frame задаются дискретно и принимают значения 1500, 2000, 3000 и 4000. Выше нельзя.

Драйверы для Linux то же поставлялись с картой, они успешно собрались и система увидела адаптер. Но дальше нас поджидала неприятность — драйвер отказывался изменять размеры MTU в стороны увеличения от 1500. Быстрый поиск в исходном коде драйвера на наличие переопределения единого лимита ничего не дал. Возможно Jumbo фреймы все же можно как то включить (исходном коде драйвера много переменных, относящихся к Jumbo), но об этом нигде не написано. Поэтому этот адаптер в ОС Linux тестировался только на размерах пакета 1500, то есть без Jumbo фреймов.

B последняя в этом обзоре карта — Intel PRO/1000 MT Desktop от Intel Corporation. Она уже тестировалась в предыдущем обзоре, но теперь протестирована заново на новых версиях драйверов.

                

Повторю некоторую информацию о ней. Это одночиповое решение, собранное на микроконтроллере Intel 82540EPВр. Карта имеет два светодиодных индикатора, один из которых показывает наличие линка и передачи данных, а второй (двухцветный) — скорость работы 10/100/1000 Мбит. Некоторые параметры микроконтроллера:

  • поддержка скорости 10/100/1000 Мбит в режимах полу- и полного дуплекса;
  • MDI-X — автодетектирование прямого и кросс кабеля;
  • автодетектирование длины кабеля;
  • конфигурируемые очереди FIFO на прием и передачу, размером 64 КБ;
  • очереди приема/передачи с низким временем ожидания;
  • передача до 64 дескрипторов пакетов по шине за операцию;
  • программируемые буфера приема размером от 256 байт до 64 КБ;
  • ускорение обсчета контрольных сумм кадров протоколов IP, TCP, и UDP.
  • поддержка IEEE 802.1Q VLAN c установкой и удалением VLAN-тэгов, а также пакетная фильтрация до 4096 VLAN тагов;
  • средства контроля для уменьшения количества прерываний при работе;
  • поддержка Jumbo-фреймов размером до 16 КБ.
                  

Последние версии драйверы для обоих ОС брались с сайта компании. Версия драйвера в Windows 2000 — 6.4.16, он предоставляет богатые возможности по конфигурированию адаптера. Размер Jumbo Frame задается дискретными значениями в 4088, 9014 и 16128 байт.

Linux-драйвер версии 4.4.19 собрался и заработал без проблем. Отмечу только, что работать он может только в виде модуля.

Методика тестирования

В качестве тестовых стендов использовались два компьютера со следующими параметрами:

  • Pentium 4  1,8 ГГц и 2,2 ГГц;
  • Память 512 MБ;
  • Жесткий диск Maxtor 20 ГБ;
  • ОС Windows 2000 с установленным сервис-паком версии 3 и Linux Red Hat 7.3 с ядром версии 2.4.19

Компьютеры напрямую (без использования коммутатора) соединялись пятиметровым кабелем категории 5е (практически идеальные условия).

В Windows 2000 для генерации TCP трафика и снятия показаний использовались программы Iperf версии 1.2 и NTttcp из Windows 2000 DDK. Программы запускались для снятия показателей скорости передачи данных и загрузки процессора при размерах Jumbo Frame

  • 1514 байт (Jumbo-фреймы отсутствуют);
  • 3014 байт;
  • 6014 байт;
  • 9014 байт;
  • 16128 байт.

Естественно, что карты, не поддерживающие определенные размеры Jumbo фреймов, эти тесты пропускали.

Кроме этого, Iperf запускался в режиме генерации UDP трафика. При этом устанавливалась скорость потока UDP трафика в 200 Мбит, которая в цикле увеличивалась до 800 с шагом в 10 Мбит. После окончания теста, в результат записывалась максимальная полученная скорость.

Также осуществлялся небольшой тюнинг ОС. Параметры запуска программ и установки реестра следующие:

  • Максимальный размер пакета 1514 байт (Jumbo Frame отсутствуют)

    Hkey_Local_MachineSystemCurrentControlSetServicesTcpipParameters
    TcpWindowSize = ffff

    Параметры запуска Iperf в режиме TCP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 64K -l 24K
    сервер: iperf -s -m -M 100000 -w 64K -l 24K

    Параметры запуска Iperf в режиме UDP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 64K -l 24K -u -b 200M
    сервер: iperf -s -m -M 100000 -w 64K -l 24K -u

    Параметры запуска NTttcp:
    передатчик: ntttcps -m 1,0,10.0.0.2 -a 4 256K -n 10000
    приемник: ntttcpr -m 1,0,10.0.0.1 -a 4 -l 256K -n 10000

  • Размер пакета 3014, 6014, 9014 и 16128 байт (включены Jumbo Frame)

    Hkey_Local_MachineSystemCurrentControlSetServicesTcpipParameters
    TcpWindowSize = 20971520 (20 Мб)
    Tcp1323Opts = 3

    Параметры запуска Iperf в режиме TCP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 1M -l 24K
    сервер: iperf -s -m -M 100000 -w 1M -l 24K

    Параметры запуска Iperf в режиме UDP:
    клиент: iperf -c 10.0.0.1 -M 100000 -w 1M -l 24K -u -b 200M
    сервер: iperf -s -m -M 100000 -w 1M -l 24K -u

    Параметры запуска NTttcp:
    передатчик: ntttcps -m 1,0,10.0.0.2 -a 4 256K -n 10000
    приемник: ntttcpr -m 1,0,10.0.0.1 -a 4 -l 256K -rb 20000000 -n 10000

Каждый TCP тест запускался 15 раз, после чего выбирался лучший (по скорости) результат. В случае NTttcp загрузка процессора измерялась встроенными средствами программы, а в Iperf — с помощью системного монитора Windows 2000.

В ОС Linux для генерации трафика и снятия показаний использовалась программа netPIPE версии 2.4. Программа осуществляет генерацию трафика с постепенно возрастающим размером пакета данных (пакет размера N передается несколько раз, количество передач обратно пропорционально его размеру, но не меньше семи). Эта схема позволяет наглядно увидеть процент использования канала в зависимости от размера передаваемых данных.

Изменение размера Jumbo Frame осуществлялось через изменение MTU в настройках сетевого интерфейса командой
ifconfig eth0 MTU $size up
При тестировании устанавливались следующие размеры MTU:

  • 1500 байт (Jumbo фреймы отсутствуют);
  • 3000 байт;
  • 6000 байт;
  • 9000 байт;
  • 16128 байт.

Параметры запуска netPIPE:
приемник: NTtcp -b 65535 -o logfile -P -r
передатчик: NTtcp -b 65535 -o logfile -P -t

Результаты тестирования

Адаптеры от SMC тестировались как на своем драйвере, так и на референсном (изначально предназначенном для TEG-PCITX). Эти адаптеры собраны на одинаковых микропроцессорах, поэтому драйвера совместимы. Вот только родной драйвера от SMC показывает несколько худшую производительность и большую загрузку процессора. Остальные адаптеры тестировались на своих родных драйверах.

1. Windows 2000, скорость передачи данных.





2. Windows 2000, загрузка процессора.

Intel PRO/1000 MT Desktop вырывается вперед практически во всех тестах, явно программисты из Intel неплохо поработали над новыми драйверами. Но вот при размере Jumbo фрейма в 16128, адаптер от Intel резко теряет свое приемущество и показывает наименьшую скорость. Второе место получил адаптер Hardlink HA-64G, явно сказывается наличие нового микроконтроллера (карта одночиповая).

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

Несколько разочаровал тест UDP. В нем явно где то образовалось узкое место, так как результаты большинства адаптеров очень близки. Возможно, проблема в самой реализации этого теста в Iperf.

3. Linux, изменяем размер MTU.













Ожидаемая картина у всех карт, кроме Intel PRO/1000 MT Desktop. Видимо, программисты не до конца потрудились — С увеличением размера Jumbo фрейма скорость передачи данных растет лишь до определенного момента. При размере Jumbo Frame 16000, скорость почему-то резко падает. Так же наглядно видно, что отличие в скорости между одинаковыми картами, но разными PCI интерфейсами минимально.

4. Linux, сравнение производительности на одинаковом размере MTU.





Intel PRO 1000/MT лидирует на малых размерах фреймов, но при размере 6000 все карты показывают уже приблизительно одинаковые результаты. А вот на размере Jumbo Frame в 3000 произошло абсолютно непонятное падение скорости у TRENDnet TEG-PCITX.

И последняя диаграмма сравнение пиковых скоростей всех адаптеров в netPIPE. Опять замечу, что скорость в Linux получается немного больше, чем в Windows. Но на самом деле это не совсем корректное сравнение, так как тут приводится пиковая скорость.

Выводы

Jumbo фреймы безусловно вещь полезная, отключать их не стоит. Но скорость еще сильно зависит от драйвера, это наглядно видно на примере адаптера Intel PRO 1000/MT. По сравнению с предыдущим тестированием ее скорость возросла. И конечно мы все равно не можем достигнуть максимума (гигабита) из-за узкого горлышка — 32-битной PCI шины. Тем не менее серверные (64-битные) адаптеры были протестированы на 32-битной PCI шине для наглядного сравнения обоих версий карт между собой. Как видно из диаграмм, на 32-битной шине отличий практически нет.

 

Адаптер Intel PRO/1000 MT Desktop предоставлен представительством компании Intel
Адаптер LG LNIC-1000T(64) предоставлен компанией ОЛДИ
Адаптер Hardlink HA-64G предоставлен компанией MAS Elektronik AG
Адаптеры SMC94x2TX предоставлены компанией SMC NetworksG
Адаптеры TRENDnet TEG-PCITXx предоставлены компанией MultiCo ltdu

31 декабря 2002 Г.

32- PCI.

32- PCI

. , 32 PCI , 64 PCI, 32- . PCI , . 64- PCI (?) . , .

Ethernet (Gigabit Ethernet) . , , .

National Semiconductor Corporation. -, . DP83861VQM-3 . , — .

— , , . , . 10/100/1000 / - . (IEEE 802.3u Auto-Negotiation).

, 10/100/1000 Ethernet , PCI, PCI. 64- DP83820BVUW, 32- — DP83821BVM. , , PCI , . :

  • MDI-X — -;
  • FIFO 8 32 ;
  • Jumbo-;
  • VLAN (Virtual LAN) VLAN- VLAN- ;
  • 802.1D 802.1Q QoS, , ( );
  • IPv.4 — IP, TCP, UDP.

Windows — ,  PCI , , , . , ( ) .

TRENDnet TEG-PCITX TRENDware.

     

32- PCI . , 10/100/1000 , , . .

Windows 2000 , . — 5.01.24.

     

, Jumbo Frame 1, , . 16128, , .

Linux 2.2.. 2.4. , «National Semiconduct DP83820» 0.18. Jumbo Frame — 8192. , , 1500.


          

— TRENDnet TEG-PCITX2 — , 64- PCI. , — DP83820BVUW. .

Windows Linux , 32- .

SMC Networks. - . .

            

SMC9452TX 32- PCI 5 , , . PCB — Ethernet , — . , .

           

Windows . — 1.2.905.2001. , , Jumbo Frame 1514, 4088, 9014, 10000, 16128.

SMC Linux, ( , ). , ( 2001 ).


                

SMC Networks — SMC9462TX — , , 64- PCI ( Gigabit Ethernet). .

- — LNIC-1000T(64) LG Electronics.

              

64- PCI . x . , TEG-PCITX.

                

Windows , . , ( TEG-PCITX) . — 5.01.24.

Linux 2.2., , .

— Hardlink HA-64G — MAS Elektronik AG 64- .

                  

, 10/100/1000 . .

, AC1001KPB Altima. .

                

, Windows 3.12.0.0, . . Jumbo Frame 1500, 2000, 3000 4000. .

Linux , . — MTU 1500. . Jumbo ( , Jumbo), . Linux 1500, Jumbo .

B — Intel PRO/1000 MT Desktop Intel Corporation. , .

                

. , Intel 82540EP. , , () — 10/100/1000 . :

  • 10/100/1000 - ;
  • MDI-X — ;
  • ;
  • FIFO , 64 ;
  • / ;
  • 64 ;
  • 256 64 ;
  • IP, TCP, UDP.
  • IEEE 802.1Q VLAN c VLAN-, 4096 VLAN ;
  • ;
  • Jumbo- 16 .
                  

. Windows 2000 — 6.4.16, . Jumbo Frame 4088, 9014 16128 .

Linux- 4.4.19 . , .

:

  • Pentium 4  1,8 2,2 ;
  • 512 M;
  • Maxtor 20 ;
  • Windows 2000 - 3 Linux Red Hat 7.3 2.4.19
( ) 5 ( ).

Windows 2000 TCP Iperf 1.2 NTttcp Windows 2000 DDK. Jumbo Frame

  • 1514 (Jumbo- );
  • 3014 ;
  • 6014 ;
  • 9014 ;
  • 16128 .
, , Jumbo , .

, Iperf UDP . UDP 200 , 800 10 . , .

. :

  • 1514 (Jumbo Frame )

    Hkey_Local_Machine\System\CurrentControlSet\Services\Tcpip\Parameters
    TcpWindowSize = ffff

    Iperf TCP:
    : iperf -c 10.0.0.1 -M 100000 -w 64K -l 24K
    : iperf -s -m -M 100000 -w 64K -l 24K

    Iperf UDP:
    : iperf -c 10.0.0.1 -M 100000 -w 64K -l 24K -u -b 200M
    : iperf -s -m -M 100000 -w 64K -l 24K -u

    NTttcp:
    : ntttcps -m 1,0,10.0.0.2 -a 4 256K -n 10000
    : ntttcpr -m 1,0,10.0.0.1 -a 4 -l 256K -n 10000

  • 3014, 6014, 9014 16128 ( Jumbo Frame)

    Hkey_Local_Machine\System\CurrentControlSet\Services\Tcpip\Parameters
    TcpWindowSize = 20971520 (20 )
    Tcp1323Opts = 3

    Iperf TCP:
    : iperf -c 10.0.0.1 -M 100000 -w 1M -l 24K
    : iperf -s -m -M 100000 -w 1M -l 24K

    Iperf UDP:
    : iperf -c 10.0.0.1 -M 100000 -w 1M -l 24K -u -b 200M
    : iperf -s -m -M 100000 -w 1M -l 24K -u

    NTttcp:
    : ntttcps -m 1,0,10.0.0.2 -a 4 256K -n 10000
    : ntttcpr -m 1,0,10.0.0.1 -a 4 -l 256K -rb 20000000 -n 10000

TCP 15 , ( ) . NTttcp , Iperf — Windows 2000.

Linux netPIPE 2.4. ( N , , ). .

Jumbo Frame MTU
ifconfig eth0 MTU $size up
MTU:

  • 1500 (Jumbo );
  • 3000 ;
  • 6000 ;
  • 9000 ;
  • 16128 .
netPIPE:
: NTtcp -b 65535 -o logfile -P -r
: NTtcp -b 65535 -o logfile -P -t

SMC , ( TEG-PCITX). , . SMC . .

1. Windows 2000, .





2. Windows 2000, .

Intel PRO/1000 MT Desktop , Intel . Jumbo 16128, Intel . Hardlink HA-64G, ( ).

. SMC — , . Jumbo . , . , .

UDP. , . , Iperf.

3. Linux, MTU.













, Intel PRO/1000 MT Desktop. , — Jumbo . Jumbo Frame 16000, - . , , PCI .

4. Linux, MTU.





Intel PRO 1000/MT , 6000 . Jumbo Frame 3000 TRENDnet TEG-PCITX.

netPIPE. , Linux , Windows. , .

Jumbo , . , Intel PRO 1000/MT. . () - — 32- PCI . (64-) 32- PCI . , 32- .

 

Intel PRO/1000 MT Desktop Intel
LG LNIC-1000T(64)
Hardlink HA-64G MAS Elektronik AG
SMC94x2TX SMC NetworksG
TRENDnet TEG-PCITXx MultiCo ltdu