UDP-Verbindung zu langsam



  • kein hindernis für einen erfolgreichen datentransfer, jedoch wird jedes udp-paket untersucht. bei tcp verkehr geht das prinzipiell einfacher. ich kenne aber den linux paketfilter nicht wirklich und weiß daher nicht wie er intern arbeitet.

    grüße, mm



  • mezzo mix schrieb:

    kein hindernis für einen erfolgreichen datentransfer, jedoch wird jedes udp-paket untersucht.
    grüße, mm

    Stimmt das kann sein, aber das größte Problem ist ja dass UDP zwischen Windows zu Windows so langsam ist, und hier ist definitiv die Firewall auf beiden Seiten aus.

    Gruss Christian



  • Der Unterschied Windows <-> Linux muss nicht daher kommen dass Windows so langsam ist. Ich hab' zwischen 2 Windows PCs auch extrem unterschiedliche Transferraten, je nachdem in welche Richtung die Daten fliessen. Liegt u.U. an der Netzwerkkarte bzw. deren Treibern. Oft kann man da auch noch was drehen, Anzahl der Sende-/Empfangspuffer raufdrehen etc.

    Wäre interessant ob Windows immer noch langsamer ist wenn du die Netzwerkkarten tauscht, bzw. überhaupt gleich die ganze Hardware (so dass Windows dann auf der Hardware läuft wo du vorher Linux laufen hattest und umgekehrt).

    Sonst könnte es noch sein dass Iperf mit UDP langsamer ist, weil es irgendwas falsch macht oder einfach nur schlecht programmiert ist 🙂

    Und: wie sehen denn die Transferraten Linux <-> Linux aus?



  • Hallo, ich bin gerade erst wieder dazu gekommen mich mit dem Thema weiter zu beschäftigen. Also ich benutze die gleiche Hardware unter Linux wie unter Windows, dran liegt es nicht. Unter Linux habe ich fast immer die maximale Geschwindigkeit. Unter Windows konnte ich noch eine erhebliche Steigerung erreichen, als ich den TCP-Cache erhöht habe. Das ging mit einem Eintrag in die Registry (Tcp1323Opts), hat aber trotzdem nicht die Performance von Linux.
    Für UDP habe ich überhaupt keine Möglichkeit gesehen, wie man hier den Cache höher setzen kann. UDP kricht weiter bei 150MBit hinterher.

    Kennt jemand eine Möglichkeit, wie man den UDP-Cache hochschrauben kann?

    Gruss Christian



  • columbus schrieb:

    Das verrückte: TCP ist schneller als UDP?

    bei kleinen Datenmengen ist UDP sicherlich schneller als TCP, da bei tcp ein großer overhead aufgrund des three-way handshakes auftritt. Wie sich das ganze bei großen Datenmengen verhält, ist aber nicht gesagt.



  • hihi.
    TCP cache.
    ja, wenns sowas denn geben würde 🙂
    also.
    da es keinen "UDP cache" gibt kann man den auch nicht "hochschrauben".



  • Ja klar gibt sowas nicht. Die Datenpackete werden als Ethernetframes direkt an die Anwendung weitergereicht. Deswegen muss sich ja jeder Programmierer der eine Netzwerk-Anwendung schreibt erst mal darum kümmern aus den Ethernetframes die Nutzdaten rauszulesen.

    http://rdweb.cns.vt.edu/public/notes/win2k-tcpip.htm

    Gruss Christian



  • columbus, du hast leider garkeine ahnung von netzwerktechnik, tcp und udp.
    daher werde ich das auch nicht weiter mit dir diskutieren, sorry.



  • Man sieht, wie viele Mythen über den Windows-Stack existieren.
    Ja, allerdings kann man den Buffer für UDP erhöhen.

    setsockopt( socket, SOL_SOCKET, SO_RCVBUF, (char *)&udpBufSize, sizeof(udpBufSize) );
    

    Wir haben ähnliche Versuche mit Windows UDP gemacht und Datenraten bis zu 940-950MBit/s erreicht. Der Buffer hilft in dem Fall, den Packetverlust zu minimieren.

    Schöne Grüße



  • mezzo mix schrieb:

    interessanterweise dauert das untersuchen von verbindungslosem traffic länger.
    [...]
    bei tcp verkehr geht das prinzipiell einfacher.

    hast du dazu 'ne quelle? oder sind das persönliche erfahrungen?


Anmelden zum Antworten