Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • DeaD_EyE

    Administrator

    Sie müssen sich registrieren, um eine Verbindung mit diesem Benutzer herzustellen.

19

Bonding-Test

Bewertung:

Von DeaD_EyE, Sonntag, 29. Mai 2011, 17:37

Seit ein paar Tagen beschäftige ich mich mit dem Thema Bonding. Dabei handelt es sich nicht um eine Sexualpraktik, sondern um das Bündeln von Netzwerkkarten.
Die großen Hersteller verschiedener Switches nennen das unter anderem auch:
  • Port Trunking
  • Etherchannel
  • Link Aggregation


Mir persönlich ging es nur um die Steigerung der Bandbreite. Leider benötigt man für das Vorhaben ein Spezielles Switch, welches 802.3ad unterstützt. Das Switch wird über das WebInterface so eingerichtet, dass mehrere Ports gebündelt werden. Linux beherrscht von Haus aus Bonding. Unter Windows benötigt man dafür spezielle Netzwerkkarten, dessen Treiber das unterstützt. Da die meisten Boards bereits zwei OnBoard-Netzwerkkarten haben, bot sich der Test mit meinem Server an. Das Switch musste ich weglassen und habe stattdessen die Netzwerkkabel direkt mit den Netzwerkkarten verbunden.

Ich habe im Server und im meinem SpielePC noch jeweils eine zusätzliche Netzwerkkarte eingebaut. Dadurch hatte ich in beiden PCs 3 GBit-Netzwerkkarten. Da auf dem Server bereits Debian-Linux installiert war, konnte ich dort recht schnell das Bonding einrichten. Unter Debian ist das recht einfach.

/etc/network/interfaces:

Quellcode

1
2
3
4
5
6
7
8
auto lo
iface lo inet loopback

auto bond0
iface bond0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    slaves eth0 eth1 eth2


D.h. die Netzwerkkarten eth0 - eth2 sind in einem Bond zusammengefasst, der mit bond0 angesprochen wird. Das Modul bonding wird durch das Netzwerkscript automatisch geladen. Ohne zusätzliche Optionen wird der Modus 0 verwendet.

Zitat

mode=0 (balance-rr)
Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.


Auf dem SpielePC habe in kein Linux installiert. Aus diesem Grund habe ich mir eine Debian-LiveCD gebrannt, von der ich den PC dann gebootet habe.
Die Konfiguration habe ich dann manuell vorgenommen:

Quellcode

1
2
3
modprobe bonding
ifconfig bond0 10.0.0.100 netmask 255.255.255.0
ifenslave bond0 eth0 eth1 eth2


Auf dem Server ist bereits ein Apache2-Server installiert gewesen. Zusätzlich habe ich für den Test noch eben eine Ramdisk auf das SharedMemory gemountet:

Quellcode

1
2
3
4
5
6
mount -t tmpfs /dev/shm /var/www/isos-rd
cd /var/www/isos
#testimage kopieren 1,5GiB groß
cp testiso.iso ../isos-rd/test.bin
#MD5-Hashwert erstellen
md5sum ../isos-rd/test.bin > ../isos-rd/test.md5


Auf dem SpielePC war das nicht notwendig, da diese ja schon von Haus aus SharedMemory für / verwendet. Aus diesem Grund konnte ich dann direkt mit dem Testen anfangen.

Mittels wget hatte ich dann die beiden Dateien, die ich auf dem Webserver in den SharedMemory kopiert habe, heruntergeladen.

Das Resultat sieht dann so aus:

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
root@debian:/home/user# wget 10.0.0.1/test.bin 10.0.0.1/test.md5
--2011-05-29 16:13:35--  http://10.0.0.1/test.bin
Connecting to 10.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1593360384 (1.5G) [application/octet-stream]
Saving to: test.bin

100%[==============>] 1,593,360,384  276M/s   in 5.5s

2011-05-29 16:13:41 (278 MB/s) - test.bin saved [1593360384/1593360384]

--2011-05-29 16:13:41--  http://10.0.0.1/test.md5
Reusing existing connection to 10.0.0.1:80.
HTTP request sent, awaiting response... 200 OK
Length: 43 [text/plain]
Saving to: test.md5

100%[==============>] 43          --.-K/s   in 0s

2011-05-29 16:13:41 (11.8 MB/s) - test.md5 saved [43/43]

FINISHED --2011-05-29 16:13:41--
Downloaded: 2 files, 1.5G in 5.5s (278 MB/s)
root@debian:/home/user# rm test.*
root@debian:/home/user# wget 10.0.0.1/test.bin 10.0.0.1/test.md5
--2011-05-29 16:14:34--  http://10.0.0.1/test.bin
Connecting to 10.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1593360384 (1.5G) [application/octet-stream]
Saving to: test.bin

100%[==============>] 1,593,360,384  321M/s   in 6.2s

2011-05-29 16:14:40 (243 MB/s) - test.bin saved [1593360384/1593360384]

--2011-05-29 16:14:40--  http://10.0.0.1/test.md5
Reusing existing connection to 10.0.0.1:80.
HTTP request sent, awaiting response... 200 OK
Length: 43 [text/plain]
Saving to: test.md5

100%[==============>] 43          --.-K/s   in 0s

2011-05-29 16:14:40 (8.00 MB/s) - test.md5 saved [43/43]

FINISHED --2011-05-29 16:14:40--
Downloaded: 2 files, 1.5G in 6.2s (243 MB/s)
root@debian:/home/user# md5sum -c test.md5
test.bin: OK
root@debian:/home/user#


Der Kopiervorgang fing bei 125MB/s an und steigerte sich zum Schluss auf 321 MB/s. Theoretisch wäre ein Datendurchsatz von 375 MB/s durch die drei 1-GBit-Netzwerkkarten möglich. In einem Raid0 müsste man da schon ein paar Festplatten für nehmen. Um große Datenmengen mal eben zu kopieren, eignet sich das sicherlich ganz gut. Bei einem Raid-0-Verbund mit Festplatten oder SSDs hätte man für den Transfer mehr als genügend Bandbreite. Für Lan-Partys mit geeigneter Hardware (Switches die das unterstützen) und einem Server, der schnell genug ist, wäre somit auch ein schneller redundanter Fileserver möglich, der mit mehr als nur 1GBit/s angebunden ist.

Dieser Artikel wurde bereits 10 930 mal gelesen.


Blog Navigation

Nächster Artikel

Strom sparen, durch geschicktes scripten

Von DeaD_EyE (Sonntag, 5. Juni 2011, 20:42)

Vorheriger Artikel

Shell-Code zum Frühstück

Von DeaD_EyE (Donnerstag, 21. April 2011, 08:13)