You are not logged in.

Dear visitor, welcome to sourceserver.info. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

  • DeaD_EyE

    Administrator

    You have to register first, to connect to this user.

19

Bonding-Test

Rating:

by DeaD_EyE, Sunday, May 29th 2011, 5:37pm

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:

Source code

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.

Quoted

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:

Source code

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:

Source code

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

Source code

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.

This article has been read 11,567 times.


Blog navigation

Next article

Strom sparen, durch geschicktes scripten

by DeaD_EyE (Sunday, June 5th 2011, 8:42pm)

Previous article

Shell-Code zum Frühstück

by DeaD_EyE (Thursday, April 21st 2011, 8:13am)