Intel® EtherExpress PRO/100 Server Dual Port

Ich habe zwei Typen dieser NIC im Einsatz.

BottomTopPRO/100+

Abbildung der NIC Intel® EtherExpress® PRO/100+ Dual Port
Intel® EtherExpress® PRO/100+ Server Dual Port

BottomTopPRO/100 S

Abbildung der NIC Intel® EtherExpress® PRO/100 S Dual Port
Intel® EtherExpress® PRO/100 S Server Dual Port

BottomTopBeschreibung

Die "PRO/100+" ist eine 32 Bit PCI-Steckkarte für 5 V-Slots. Der Adapter unterstützt Hotplug. Beide Ports können unabhängig voneinander konfiguriert werden. VLAN nach 802.1Q und Flusskontrolle nach 802.3x wird unterstützt. Kanalbündelung, auch mit mehreren NICs ist möglich.

Die "PRO/100 S" kann sowohl in 32, als auch in 64 Bit PCI- oder PCI-X-Slots betrieben werden. Den vollen Durchsatz erzielt sie aber nur mit 64 Bit.
Ausserdem unterstützt diese Variante Fehlertoleranz, VLAN nach 802.1Q, Load Balancing und Kanalbündelung. 3DES-Verschlüsselung ist onboard integriert.

BottomTopTreiber

Für diese NIC existieren meines Wissens zwei Treiber: "eepro100" von Donald Becker und "e100" von Intel®.
Eine harte Konfiguration über Jumper oder ein Setup-Programm ist, soweit mir bekannt, nicht möglich.

Ich habe lange Zeit das Modul "eepro100" verwendet. Die Einstellung auf eine Betriebsart kann über die Angabe von Parametern beim Aufruf des Moduls erfolgen. Mögliche Parameter sind:

Name: Bedeutung
debug Bestimmt den Debug-Level von 0 (keine Infos) bis 6 (sehr ausführlich)
options Legt über einen Hex-Wert die Betriebsart der NIC fest (siehe Liste unten)
full_duplex Erzwingt Full-Duplex-Mode
max_interrupt_work Maximale Anzahl Ereignisse, die mit einem Interrupt bearbeitet werden können, default 20
rx_copybreak Siehe Treiber-Source.
Hex Dez Bedeutung
0x10 16 Erzwingt Full-Duplex-Mode (muss mit 0x20 oder 0x40 kombiniert werden)
0x20 32 Erzwingt 100 MB/s
0x40 64 Erzwingt 10 MB/s
Diese Parameter können in der Datei modules.conf im Verzeichnis /etc fest eingetragen werden. Der Eintrag
options eepro100 debug=1 options=0x20,0,0x50
setzt die Debugmeldungen auf minimale Ausgabe. Die erste NIC wird auf 100 MB/s Halb-Duplex, die zweite auf Autonegotiation und die dritte auf 10 MB/s Full-Duplex gesetzt.

Die Einstellungen dieser Karte können mit dem Tool "mii-diag" ausgelesen und überprüft werden.
Die Einstellung der Betriebsart mit "mii-tool" ist AFAIK ebenfalls möglich.

Im allgemeinen ist es besser, die NIC auf eine feste Betriebsart zu konfigurieren. Mit einem Noname-Switch habe ich allerdings mit Autonegotiation einen wesentlich höheren Durchsatz erreicht.

Zwischenzeitlich hat sich der Treiber von Intel® als stabiler erwiesen. Beim Laden des Moduls können folgende Optionen gesetzt werden:

Name Werte Default Bedeutung
BundleMax 1-65535 6 Legt fest, wieviele kleine Pakete (weniger als 128 Byte) zusammengefasst werden können. Empfohlen sind Werte zwischen 2 und 10. Siehe CPU Cycle Saver.
BundleSmallFr 0-1
0=off
1=on
0 Legt fest, ob kleine Pakete (weniger als 128 Byte) zusammengefasst werden sollen. Siehe CPU Cycle Saver.
e100_speed_duplex 0-4
0=auto
1=10hd
2=10fd
3=100hd
4=100fd
0 Bestimmt den Übertragungsodus des Interfaces.
Beispiel: insmod e100 e100_speed_duplex=4,4 (Setzt zwei Interfaces auf 100 MBit/s Full Duplex)
flow_control 0-1
0=off
1=on
0 Dieser Parameter steuert die Flusskontrolle durch "Ethernet PAUSE Frames".
Flusskontrolle sollte nur verwendet werden, wenn Autonegotiation aktiviert ist und die Gegenstelle Flusskontrolle unterstützt.
IntDelay 0-65535 1536 Legt fest, wieviele Zeiteinheiten der Adapter wartet, bis er eine Interrupt generiert. Der empfohlene Wert für IntDelay beträgt 1536. Sinnvolle Werte liegen zwischen 512 und 2048. Mit 0 wird die Verzögerung abgeschaltet. Siehe CPU Cycle Saver.
IFS 0-1
0=off
1=on
1 Inter Frame Spacing (IFS) soll die Anzahl der Kollisionen verringern, in dem die Zeitspanne zwischen dem Senden zweier Frames verändert wird.
RxDescriptors 8-1024 64 Regelt die Größe des Empfangspuffers.
Für Itanium-basierte Systeme liegt das Maximum bei 64.
TxDescriptors 19-1024 64 Regelt die Größe des Sendepuffers.
Für Itanium-basierte Systeme liegt das Maximum bei 64.
ucode 0-1
0=off
1=on
0 für 82558-basierte Karten
1 für 82550-, 82551- oder 82559-basierte Karten
Mit on wird der Microcode auf den Adapter geladen. Damit wird der CPU Cycle Saver aktiviert. Siehe CPU Cycle Saver.
Beispiel: insmod e100 ucode=0 (Deaktiviert den CPU Cycle Saver)
Nicht verfügbar auf 82557-basierten Karten.
Diese Parameter können in der Datei modules.conf im Verzeichnis /etc fest eingetragen werden.

CPU Cycle Saver


Der CPU Cycle Saver reduziert die CPU-Auslastung durch Verringern der Interrupts die der Adapter auslöst.
Wenn CPU Cycle Saver deaktiviert ist, dann generiert der Adapter einen Interrupt bei jedem ankommenden Frame. Das bedeutet, dass das OS seine Arbeit unterbricht, zum Netzwerktreiber umschaltet und das empfangene Paket bearbeitet.
Wenn CPU Cycle Saver aktiviert ist, dann wartet der Adapter bis einige Frames angekommen sind, bevor ein Interrupt ausgelöst wird. Das reduziert die Zeit, die für das Umschalten zum und vom Treiber benötigt wird.
CPU Cycle Saver wird durch folgende Optionen beeinflusst: IntDelay, BundleMax und BundleSmallFr. Wird IntDelay erhöht, dann wartet der Adapter länger auf ankommende Frames vor der Auslösung eines Interrupts. Durch Erhöhen von BundleMax kann die Anzahl der kleinen Frames vergrößert werden, die zur Auslösung eines Interrupts erwartet werden. Wenn BundleSmallFr deaktiviert wird, werden keine kleinen Pakete zusammengefasst. Kleine Pakete sind oftmals Steuerpakete, die sofort bearbeitet werden sollten. Deshalb ist BundleSmallFr standardmäßig deaktiviert.
Für die meisten Anwender wird der Einsatz von CPU Cycle Saver mit den vorgeschlagenen Werten empfohlen. In manchen Fällen kann es mit CPU Cycle Saver Durchsatzprobleme geben. Dann wird das Abschalten dieser Funktionalität mit dem Setzen der Option ucode=0 empfohlen.

Die Tools "mii-diag" und "mii-tool" funktionieren mit diesem Treiber nicht. Statt dessen kann "ethtool" zum Auslesen oder Setzten von Betriebsoptionen verwendet werden.



Anmerkung zur Fußzeile ;-)

zurück