High performance 10Gbit på Open Source

Så er det tid til en opfølgning på mine 10G projekter, omend det går langsomt fremad.

Første step var at samle hardwaren og det er lykkedes fint. Dernæst fik jeg installeret en masse software og lavet initielle test.

Jeg har siden fokuseret på følgende operativsystemer, i nævnte rækkefølge:

  • Linux - herunder en kort afstikker til XenServer 6.2
  • FreeBSD
  • OpenBSD

Det har taget noget tid og været lærerigt, blandt andet kommer der altid uventede problemer - som at den ene RAM klods pludselig ikke kunne ses, og medvirkede til at performance FRA det ene system var ringe og ubrugelig - men pro tip, det hjælper åbenbart at have ens ram monteret rigtigt ;-)

Idag har jeg så holdt et foredrag på The Camp om status på mine projekter og det er optaget på video, så der kommer et link senere. (Vi er 50 nørder på 2Mbit upload ... så videoen er undervejs)

Det mest interessante er hvor langt Linux, FreeBSD og OpenBSD er kommet med 10Gbit over de seneste par år. Meget positivt var det at opdage hvor simpelt det var at tune Linux til næsten wirespeed 10Gbit. NB: det er de systemer jeg har brugt til de foregående to indlæg om tcpreplay og pakker.

Selve processen for at tune Linux var basalt set:

  • Installer seneste updates for BackTrack og Ubuntu Server
  • download ixgbe-3.9.17 fra intel, pak ud og installer modulet
  • opdater /etc/sysctl.conf med diverse tuningsparametre som tillader mere hukommelse til netværksstacken

NB: jeg anbefaler at man udfører tuning i små skridt, og verificerer at det rent faktisk virker og forbedrer før man fortsætter.

Et uddrag fra præsentationen:

hlk@xpc03:~$ sudo iperf -t 60 -i 5 -c 10.0.10.20
------------------------------------------------------------
Client connecting to 10.0.10.20, TCP port 5001
TCP window size: 9.54 MByte (default)
------------------------------------------------------------
[  3] local 10.0.10.30 port 49131 connected with 10.0.10.20 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 5.0 sec  5.52 GBytes  9.49 Gbits/sec
[  3]  5.0-10.0 sec  5.53 GBytes  9.50 Gbits/sec
[  3] 10.0-15.0 sec  5.52 GBytes  9.49 Gbits/sec
[  3] 15.0-20.0 sec  5.53 GBytes  9.49 Gbits/sec
[  3] 20.0-25.0 sec  5.53 GBytes  9.49 Gbits/sec
[  3] 25.0-30.0 sec  5.52 GBytes  9.49 Gbits/sec
[  3] 30.0-35.0 sec  5.52 GBytes  9.49 Gbits/sec
[  3] 35.0-40.0 sec  5.53 GBytes  9.49 Gbits/sec
[  3] 40.0-45.0 sec  5.53 GBytes  9.50 Gbits/sec
[  3] 45.0-50.0 sec  5.52 GBytes  9.49 Gbits/sec
[  3] 50.0-55.0 sec  5.53 GBytes  9.50 Gbits/sec
[  3]  0.0-60.0 sec  66.3 GBytes  9.49 Gbits/sec

Ovenstående blev udført mellem BackTrack Linux med kerne (uname -a):
Linux xpc02 3.2.6 #1 SMP Fri Feb 17 10:34:20 EST 2012 x86_64 GNU/Linux

og en Ubuntu Server med kerne (uname -a):
Linux xpc03 3.2.0-26-generic #41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012 x86_64

Den samme process med optimering er blevet udført på FreeBSD, som dog tog lidt længere tid at få på plads - blandt andet grundet en fejlbehæftet USB3 driver som æd mange interrupts i idle tilstand?! Resultatet fra FreeBSD er pt. at den kan levere 6.15Gbit med TCP som målt med iperf over 60 sekunder, men ca. fuld wirespeed UDP!

OpenBSD ligger pt. langt fra wirespeed med omkring 3.3Gbit/sec som målt med iperf - men jeg har ikke givet op. Bliver spændende at se tallene for forwarding af pakker!

Et andet resultat fra test med disse systemer var en test med Erlang værktøjet tsung og Nginx, som i en test over næsten en time kunne levere 9Gbit kontinuert. Tsung gør det simpelt at frembringe et væld af gode grafer direkte fra logfilen, og er klart på vej til favoritlisten over værktøjer.

Illustration: HLK

Selve slideshowet er uploadet her og du kan læse flere detaljer i det:

PS undervejs i testene fik jeg blandt andet testet et 10Gbit modul til en ældre Dell PowerConnect 6248 - som jeg ikke forventede kunne levere fuld 10Gbit i L2, men det kunne det rent faktisk! Ligeledes kunne en test gennem 4 switche af blandet Dell/Force10 vise fuld hastighed på L2, dejligt at få det eftervist - gundforskning er rart at få på plads :-)

Kommentarer (10)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Henrik Kramshøj Blogger

Fidusen er at der er en driver med i både Backtrack og Ubuntu, den virker fint - kan kan sende ping og få svar, overføre filer. Den er dog ikke helt så god som den nyeste driver fra Intel - som vi valgte at bruge.

Med den indbyggede stock driver fik vi med tre test:
0.0-60.0 sec 41.3 GBytes 5.91 Gbits/sec
0.0-60.0 sec 26.7 GBytes 3.82 Gbits/sec
0.0-60.0 sec 21.5 GBytes 3.08 Gbits/sec

new ixbge driver:
[ 4] 0.0-60.0 sec 62.5 GBytes 8.94 Gbits/sec
[ 5] 0.0-60.0 sec 62.6 GBytes 8.97 Gbits/sec
[ 4] 0.0-60.0 sec 62.6 GBytes 8.96 Gbits/sec

Så med alle de andre ting vi skal installere på en server, så er en driver der giver ~100% ekstra performance nok noget jeg vil overveje kraftigt.

... men den kommer da helt sikkert også i en opdatering på et tidspunkt, eksempelvis performede XenServer fint uden manuel opdatering!

  • 2
  • 0
Anders Kvist

Vi benytter også Intels driver til link imellem 2 DRBD bokse - den er GPL2, så den burde vel være kompatibel med kernen. Men måske den bare er "bagud". Jeg har ikke gemt noget data, men jeg husker det som at der var noget galt med den medfølgende driver (CentOS5 - 2.6.18-194.el5) og vi derfor hentede Intels og havde fuld spark på :)

Vores setup er så uden switche og med bondede (active/backup) interfaces for at fjerne unødige fejlkilder på forbindelsen...

  • 2
  • 0
Martin Jensen

Jeg har mellem to desktop PC'ere med Intel i3 CPU og Ubuntu server 12.04, og Intel dualport 10G kort begge maskiner, samtidigt overført 2x 9,90 Gbps mellem maskiner i én retning. Jumbo frames og 16 MB til TCP rmem/wmem.

Der blev brugt SFP+DA kobber kabler.

Det var overraskende nemt. Jeg fik ikke umiddelbart noget ud af at ændre rx/tx rings i driveren til max.

OpenBSD var også skuffende ved os i den samme test, omend vi bliver ved med at bruge til til firewalls. Forwarding blev ikke testet, så jeg afventer også din test. :-)

Priserne er også godt på vej ned, og det skader jo ikke.

  • 0
  • 0
Per Hvid

Jeg har en halv snes HP Proliant DL360 G7 kørende i produktion med 10G netværk.
De kører med singel mode fiber og de billige kineser optik.
Jeg anvender Redhat Linux RHEL 5.7, 5.8, 6.1 & 6.2, alt kører default.
HP leverer Mellanox 10G adapter cards til disse servere, så de anvender mlx4_en driveren.

Inden de blev sat i produktion testede jeg 10G mellem to servere og et krydset fiber.
Alt var default opsætning.
Iperf målingen med RHEL 5.7 var hastigheden 9,39 Gb/s.
Med RHEL 6.1 var det en anelse hurtigere 9,40 Gb/s.
Med disse rimelige målinger har jeg ikke brugt tid på at tune Linux serverne.

Jeg har ikke haft 10G problemer overhovedet.
De eneste der kan minde om problemer er følgende:

  1. Når man har 4 stk 10 G porte pr server, så er det ikke altid lige nemt at gennemskue Linux interface navngivningen.

  2. På nogle servere havde 10G adapteren firmware v 2.8.0. HPs daværende firmware tool kunne ikke opdatere denne adapter.
    Så da jeg opgraderede RHEL fra 6.1 til 6.2 så stoppede 10G. Da 6.2 kernen krævede nyere firmware.
    Det krævede en HP support sag for at få opgraderet firmwaren. Efter firmware opdateringen så virkede 10G på den ny kerne.
    Firmware v 2.8.600 & 2.9.1002 fungere ok med RHEL 6.2

  • 0
  • 0
Log ind eller Opret konto for at kommentere