• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

dauernde Kollisionen bei der Datenübertragung

Hallo Leute,

ich hab ein Problem, wenn ich etwas von meinem Suse 10.0 Server (AMD K6 300Mhz mit 160 MB RAM) auf meinen Windows XP Rechner kopiere leuchtet die Kollisionsanzeige meines 100 Mbit Hubs kontinuierlich durch. Die Übertragungsrate steigt auch nie über 1.500 KB/s, was bei größeren Dateien echt nervt und die CPU-Last geht auf 100%. :(
Zuerst hab ich die auto-Einstellung meiner Netzwerkkarte (Realtek 8139) im Windows auf 100 Vollduplex gestellt, dann ging aber nichtmal mehr 20 KB/s. Auf Halbduplex entsteht die gleiche Situtation wie oben beschrieben.
Der nächste Versuch war nun die Einstellungen im Linux manuell zu konfigurieren. Das hab ich, mit dem hier im Forum gefundenen Befehl, versucht:

ethtool -s -eth-id-00:undsoweiter speed 100 duplex half autoneg off

Als Antwort bekomme ich aber: :x

*** buffer overflow detected ***: ethtool terminated
Abgebrochen

So, hier weis ich nicht mehr weiter. :cry:
Warum wird hier ein buffer overflow ausgelöst und wie kann ich das verhindern?
Oder hat jemand eine andere Idee wie ich mein Kollisionenproblem in den Griff bekommen kann?

Bin um jeden Tipp dankbar! :)
 
Wenn ich mich recht entsinne, geht mit einem Hub nur Halfduplex. Und Dein Server ist prozessormäßig etwas schmalbrüstig. Wenn die CPU-Last auf 100% ist, heißt das natürlich auch, daß die CPU der beschränkende Faktor ist. Ich vermute, daß da nicht viel zu machen ist.
 
Erstmal danke für eure schnellen Antworten! :)

@SP: Der Suse Rechner vergibt per dhcp die Adressen und hat selbst 192.168.1.1. An den Windowsrechner wurde 192.168.1.199 vergeben. Netzmaske ist natürlich 255.255.255.0.

@rolle: Das mit dem Hub nur Halfduplex würde auf jeden Fall die absolut üble Performance erklären, als ich kurz auf Vollduplex umgestellt hatte.
Aber könnte bei der CPU-Last nicht auch sein das Suse noch im PIO Modus läuft und den DMA nicht wirklich erkennt (werd ich gleich mal überprüfen).

Aber hat denn keiner ne Idee wie ich das Buffer overflow Problem in den Griff bekommen könnte, damit ich die Netzwerkkarte manuell konfigurieren kann? :?

Edit:
Sorry, dass ich jetzt immer mehr vom eigentlichen Thema weggehe aber ich hab mal mit dem Befehl "hdparm -i /dev/hda" meine Festplatten Settings ausgeben lassen:

Model=ST380021A, FwRev=3.19, SerialNo=3HV3GRL3
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=2048kB, MaxMultSect=16, MultSect=16
CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=156301488
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 *mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: device does not report version:

* signifies the current active mode

Das bedeutet ja wohl, dass die Platte zumindest im DMA Modus läuft. Also dürfte doch die CPU-Last beim Kopieren nicht an die 100% steigen, oder?
DMA = Direct Memory Access, also kann die CPU Auslastung nur noch von der Netzwerkverbindung ausgehen. Da andauernd Kollisionen entstehen muss ja auch die CPU mehr arbeiten, oder verstehe ich das falsch? :?

Bitte um Hilfe! :cry:
 
Kollisionen entstehen, wenn zwei Rechner versuchen gleichzeitig zu senden. Daraufhin bemerken die Rechner das Ihr Paket nicht angekommen ist, dies geschieht durch einen Zähler im Protokoll. Wenn ein Rechner ein Paket sendet, und es beim Empfänger ankommt schickt der Empfänger mit seinem Paket die Empfangsbestätigung mit u. wartet seinerseits wieder auf die Bestätigung. Dies kostet natürlich Speicher und die Prozessorlast steigt an.
 
@spoensche:
Aber es müssen doch nicht zwangsläufig Kollisionen bei der Übertragung entstehen, oder?
Gibts also keine Möglichkeit da was zu machen? :cry:
 
Hmmm, also meiner Meinung nach könnte es entweder am HUB liegen oder am Windows PC.
Ein HUB hat ja den entscheidenden Nachteil das er nicht "weiss" an welchem Port denn nun der Zielrechner, bzw. die Zieladresse, des Pakets liegt, das er überträgt.Deswegen bläst er es an alle Port´s raus, und nur der Zielrechner würde das Paket annehmen, alle anderen würden die Pakete verwerfen.
Aber vielleicht ist die Lösung auch viel banaler, könnte es sein das du ein Antiviren Programm auf dem Windows Rechner hast?
Möglicherweise versucht dein Antivirenprogramm den ankommenden Datenstrom nach Viren zu durchsuchen was den Datenfluss bremst, und dein Server versucht mit aller Gewalt seine Daten los zu werden.

Vielleicht mal einen Switch nehmen und das AV abschalten.

Is wie gesagt nur ne Theorie.

greets
Delta544
 
Achwas, bei 300 MHz sind schon 3 Megabyte/sec (ueber SSH oder ssh-verwendende) drin. Soviel schafft ja schon ein P2/233.
 
erstmal sorry, dass ich mich so lange nicht gemeldet hab.

Mein Problem besteht leider nach wie vor! :cry:

@delta544:
Also am Hub liegts vermutlich nicht. Ich hatte zwar grad keinen Switch zum Testen, hab aber einfach ein Cross-Kabel benutzt und hatte wieder das gleiche Spiel.
An meinem Windowsrechner liegts wohl auch kaum, da ich mit anderen Rechnern meine 100 Mbit fast ausnutzen kann. Das Deaktivieren des AV Progs bringt keine Veränderung.

Grundsätzlich seh ich das mit der Übertragungsgeschwindigkeit auch so wie jengelh.

Hat vielleicht doch noch jemand einen konstruktiven Vorschlag, durch den ich diese besch****** Kollisionen wegbekommen könnte? :(
 
Hab mich mal schlau gemacht. Dein Problem können späte kollisionen sein, die durch Verletzung von Kabelstandards und /oder defekte Netzwerkkarten hervergerufen werden. Eine defkte Karte erkennt nicht, dass eine andere station am senden ist und beginnt selbst mit der übertragung und es kommt zur kollision.

Eine hohe Anzahl von CRC- Fehlern können auf späte kollisionen hindeuten.
 
@Martin Breidenbach
Versuche doch mal ALLES auf Halbduplex umzustellen.

genau das hab ich mir am Anfang auch gedacht, deshalb ist dieser Beitrag ja auch entstanden.
Der nächste Versuch war nun die Einstellungen im Linux manuell zu konfigurieren. Das hab ich, mit dem hier im Forum gefundenen Befehl, versucht:

ethtool -s -eth-id-00:undsoweiter speed 100 duplex half autoneg off

Als Antwort bekomme ich aber:

*** buffer overflow detected ***: ethtool terminated
Abgebrochen

So, hier weis ich nicht mehr weiter.

hier wollte ich das ganze im Linux auf halbduplex umstellen und dabei hab ich diese Fehlermeldung erhalten.

Wär also echt toll wenn ihr noch ne Idee hättet! :)
Ich bin eben auch noch recht neu bei Linux! :oops:
 
Hai kenny@LinuxNooB,

vorausgesetzt, dass Du nur eine Netzwerkkarte in Deinem Rechner hast, sollte folgendes Kommando funktionieren:

ethtool -s -eth0 speed 100 duplex half autoneg off

Wichtig: Nicht die ID aus der Konfiguration verwenden!

cu
worst case
 
@worst case:

Danke für deinen Tipp!

Ich verwende den Rechner als dsl-Router und habe deshalb zwei Netzwerkkarten verbaut. :(
Kann ich vielleicht irgendwo nachsehen welche Karte als eth0 und welche als eth1 belegt ist. Bei meiner Suche habe ich nur immer die ID gefunden.

Schon mal vielen Dank! :)

so long, kenny@LinuxNooB
 
Hai!

Der hintere Teil des "-eth-id-00:undsoweiter" entspricht der MAC-Adresse der Netzwerkkarte. Mit dem Kommando ifconfig kannst Du Dir die Interfaces anzeigen lassen. Suche in der Ausgabe nach der MAC-Adresse, die der ID entspricht. Am Anfang der Zeile steht, welches Device dieser Karte entspricht.

cu
worst case
 
Schon mal vorne weg! Es hat leider wieder nicht funktioniert! :x
Ich hab jetzt echt keine Ahnung mehr. :cry:

Der Befehl ifconfig hat mir die Bezeichnung eth0 für die entsprechende Netzwerkkarte zurückgegeben.

Mit dem Befehl:
ethtool -s -eth0 speed 100 duplex half autoneg off

hab ich aber folgendes zurückbekommen:
Cannot get current device settings: No such device
not setting speed
not setting duplex
not setting autoneg


ifconfig sagt eth0 und das ethtool findet dann die Karte nicht, das versteh ich nicht! :?
Hab das ganze auch als su ausgeführt!

Hat von euch jemand vielleicht noch ne Idee?

thx
 
@rolle:
Danke für deinen Tipp! Hat aber leider auch nix gebracht. :(

Diesmal sagt er:
linux:/ # ethtool eth0
Settings for eth0:
No data available
linux:/ # ethtool -s eth0 speed 100 duplex half autoneg off
Cannot get current device settings: Operation not supported
not setting speed
not setting duplex
not setting autoneg

Hast du vielleicht noch ne andere Idee? Wär echt super!
Ansonsten werd ich langsam aufgeben! :cry:
 
Oben