Netzwerkanalyse, Fehlersuche, Testberichte
Home / News
Netzwerkanalyse
Grundlagen
Verkabelung
Erste Schritte
Baselining
Let's sniff
Tools
Auswerten/Filtern
Typische Probleme 1
Typische Probleme 2
Sicherheit
Bücher
Tutorials
Cacti
DSL einrichten
DynDNS einrichten
m0n0wall | pfSense
Nmap
VirtualBox
Wireshark
FAQ
Know How
Testberichte
Hardware-DB
Netzwerklexikon
Links / Service
Suche
Kontakt
Impressum
Feedback
Sitemap
Know How

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:

 

 
© 2004-2023, network lab - we make your net work - Netzwerkforum
aktualisiert am 22.03.2012