Also mehrere Male habe ich bei irgendwelchen Server-BurnIn Tests den Wunsch verspürt, auch die Netzwerkkarten/Treiber auf Stabilität zu testen und dort ordentlich Daten drüberzujagen, ohne damit Servernetz und Core-Switche zu quälen. (Sprich: Crossoverkabel an eth0/1 und ab die Post).

Was zunächst trivial erschien, stellte sich als echt harte Nuss heraus. Nach langer Recherche und Anfrage an die linux-netdev Mailingliste endlich Lösung gefunden. Ich habe das mal in eine Kochrezept-Anleitung zwecks einfacher Reproduzierbarkeit gepackt:

Man nehme einen Kernel 2.6.33+ und dazu

ip addr add 10.0.0.1/24 dev eth0; ip link set eth0 up
ip addr add 10.0.0.2/24 dev eth1; ip link set eth1 up

ip rule flush
ip rule del pref   0 lookup local
ip rule add pref 500 lookup local
ip rule add pref 10 iif eth0 lookup local
ip rule add pref 11 iif eth1 lookup local
ip rule add pref 100 to 10.0.0.1 lookup 100
ip rule add pref 101 to 10.0.0.2 lookup 101

echo 1 >/proc/sys/net/ipv4/conf/eth0/accept_local
echo 1 >/proc/sys/net/ipv4/conf/eth1/accept_local

ip route flush table 100;ip route add default dev eth1 table 100
ip route flush table 101;ip route add default dev eth0 table 101

so, nun schön ein paar Terabytes mit seinem Lieblingstool/Protokoll zwischen 10.0.0.1 und 10.0.0.2 hin und herschubsen bis das Kabel glüht….  Die Daten gehen hier, obwohl nur lokale Verbindung, tatsächlich komplett durch die „Physik“  🙂

For the english readers:
If you want testing network devices/driver for stability, you may want to send data from eth0 to eth1 via crossover cable loopback and you want to make sure that the data flows trough the physical connection. Unfortunatly, setting that up is not trivial or let`s say impossible without patching the kernel with the self-to-self patch from Julian Anastasov. Starting with Kernel 2.6.33 there is a builtin solution for this. Appropiate commands, see above.

Reference:
http://www.spinics.net/lists/netdev/msg179338.html

Advertisements