Netzwerkdiagnose mit mii-diag unter Linux
Zur Diagnose von Problemen bei der Netzanbindung von Stationen an ein
Ethernet eignet sich das Tool mii-diag sehr gut. Der folgende Artikel beschreibt
das Vorgehen von der Installation von mii-diag bis zur korrekt eingestellten Netzwerkkarte.
Installation
Sollte mii-diag bei ihrer Distribution schon mitgeliefert werden, können sie diesen Schritt
überspringen.
Den Quellcode von mii-diag gibt es auf den Webseiten des Entwicklers Donald Becker unter
http://www.scyld.com/ethercard_diag.html
Zum Übersetzen benötigt man die Dateien mii-diag.c und libmii.c
von ftp://scyld.com/pub/diag/.
Von Donald Becker stammen übrigens auch eine Vielzahl von Ethernettreibern für Linux.
Zuerst wird das Archiv mittels tar entpackt und dann der Quellecode mit gcc übersetzt.
Das fertige Programm wird dann noch nach /usr/bin kopiert.
[mku] ~/work $ tar xvzf mii-diag_2.09.orig.tar.gz
mii-diag-2.09.orig/
mii-diag-2.09.orig/mii-diag.c
mii-diag-2.09.orig/libmii.c
[mku] ~/work $ cd mii-diag-2.09.orig
[mku] ~/work/mii-diag-2.09.orig $ gcc -Wall -Wstrict-prototypes -O mii-diag.c -DLIBMII libmii.c -o mii-diag
[mku] ~/work/mii-diag-2.09.orig $ cp mii-diag /usr/bin
Benutzung
Der Aufruf erfolgt einfach via mii-diag.
Sehen wir uns zwei Beispiele an. Beim ersten Start ist der PC nicht mit einem Switch verbunden,
beim zweiten Versuch besteht eine Verbindung zu einem Switch.
[mku] ~/work/mii-diag-2.09.orig $ ./mii-diag
Using the default interface 'eth0'.
Basic registers of MII PHY #1: 3000 7809 02a8 0154 05e1 0000 0000 0000.
Basic mode control register 0x3000: Auto-negotiation enabled.
Basic mode status register 0x7809 ... 7809.
Link status: not established.
End of basic transceiver information.
[mku] ~/work/mii-diag-2.09.orig $ ./mii-diag
Using the default interface 'eth0'.
Basic registers of MII PHY #1: 3000 782d 02a8 0154 05e1 45e1 0001 0000.
The autonegotiated capability is 01e0.
The autonegotiated media type is 100baseTx-FD.
Basic mode control register 0x3000: Auto-negotiation enabled.
You have link beat, and everything is working OK.
Your link partner advertised 45e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD 10baseT, w/ 802.3X flow control.
End of basic transceiver information.
Der Switch aus dem zweiten Aufruf beherrscht NWay Auto-Negotiation. Er bietet die Verbindung mit
100 MBit/s Vollduplex (100baseTx-FD), 100 MBits/s Halbduplex (100baseTx), 10 MBit/s Vollduplex (10baseT-FD)
und 10 MBit/s Halbduplex (10baseT) an. Da der PC auch mit Auto-Negotiation arbeitet und 100baseTx-FD
beherrscht, kommt ein Link mit 100 MBit/s Vollduplex zustande.
Mit dem Aufruf von "mii-diag -w eth0" gibt das Programm fortlaufend Informationen zum Interface aus.
[mku] ~/work/mii-diag-2.09.orig $ ./mii-diag -w eth0
Basic registers of MII PHY #1: 1000 7829 02a8 0154 0181 45e1 0003 0000.
The autonegotiated capability is 0180.
The autonegotiated media type is 100baseTx-FD.
Basic mode control register 0x1000: Auto-negotiation enabled.
Basic mode status register 0x7829 ... 782d.
Link status: previously broken, but now reestablished.
Your link partner advertised 45e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD 10baseT, w/ 802.3X flow control.
End of basic transceiver information.
Monitoring the MII transceiver status.
16:16:10.949 Baseline value of MII BMSR (basic mode status register) is 782d.
16:16:18.665 MII BMSR now 7809: no link, NWay busy, No Jabber (0000).
16:16:24.375 MII BMSR now 782d: Good link, NWay done, No Jabber (45e1).
New link partner capability is 45e1 0001: 10/100 switch w/ flow control.
16:16:38.085 MII BMSR now 7809: no link, NWay busy, No Jabber (0000).
Die Option "-w" eignet sich sehr gut, wenn der Admin eine grosse Anzahl von Netzwerkanschlüssen zu prüfen hat oder
zur Langzeitbeobachtung von "verdächtigen" Netzwerkports.
Einstellen von Parametern
Mit mii-diag ist es auch möglich, die Netzwerkkarte fest auf einen Speed- und Duplexwert einzustellen.
Das nächste Beispiel stellt das Interface eth0 fest auf 10 MBit/s Halbduplex ein.
[mku] ~/work/mii-diag-2.09.orig $ ./mii-diag -F 10baseT-HD
Using the default interface 'eth0'.
Setting the speed to "fixed", Control register 0000.
Basic registers of MII PHY #1: 0000 7809 02a8 0154 05e1 0000 0000 0000.
Basic mode control register 0x0000: Auto-negotiation disabled, with
Speed fixed at 10 mbps, half-duplex.
Basic mode status register 0x7809 ... 7809.
Link status: not established.
Link partner information is not exchanged when in fixed speed mode.
End of basic transceiver information.
Zum Setzen von Interfaceparametern benötigt man Root-Rechte.
Grundsätzlich gilt: Entweder beide Linkpartner auf Auto-Negotiation stellen oder beide fest auf den gleichen
Wert einstellen. Alle anderen Varianten erzeugen Probleme, da Auto-Negotiation nur funktioniert, wenn beide Seiten
eines Links mitspielen. Wenn ein Linkpartner fest auf 100 MBit/s Vollduplex steht und die andere Seite Auto-Negotiation
fährt, ergibt das einen Duplex-Mismatch. Die Performance des Links ist dann extrem schlecht.
Weiterführende Informationen finden Sie unter folgenden Link:
|