[linux-l] Re: ACKs bevorzugen mir fli4l

Peter Ross Peter.Ross at alumni.tu-berlin.de
Mo Aug 4 04:59:44 CEST 2003


Hi Ihno,

danke fuer Deine Mail.

On Sun, 3 Aug 2003, Ihno Krumreich wrote:

> Es gibt ein allgemeines Verfahren fuer TCP-Verbindungen, das auch im RFC
> dokumentiert ist, bei dem bei einer TCP-Verbindung mit einem kleinen
> Fenster begonnen wird. Kommen die Empfangsbestaetigungen entsprechend
> schnell, wird die Fenstergroesse erweitert. Analog wird die
> Fenstergroesse wieder verkleinert, wenn Fehler auftreten/Bestaetigungen
> ausbleiben.

Ja. Das ist erst einmal ziemlich basic und wird wohl auch von Linux
unterstuetzt.

Ich bin mir nicht sicher, ob das z.B. auch fuer den Nagle-Algorithmus (RFC
896) gilt.

Der beschaeftigt sich mit "kleinen" Packeten, wie sie typischerweise bei
interaktiven Verbindungen, Shells, X11 etc, vorkommen. Hier werden, wenn
im WAN ein Engpass auftritt, die Bestaetigungen langsam eintrudeln, Pakete
"gesammelt" und in einem Paket verschickt.

Gewartet werden muss sowieso und das Verschicken von "Sammelpaketen"
verringert den Overhead und traegt so zur Entlastung bei.

> Sollten es lizenzrechtkiche Gruende geben, so ist es egal ob der Code
> im Kernel oder Userland laeuft.

Nicht ganz.

Das Programm im Userland ist unabhaengig vom Kernel und kann sich so der
eigenen (hier BSD-) Lizenz "bedienen".

Beim unter GNU Lizenz stehenden Linuxkernel waere ein Treiber eine
Erweiterung des GNU-Linux-Kernels und muesste so wieder unter GNU-Lizenz
stehen.

Und Kernelmodule sind fuer mein Laienauge die schwammige Grauzone.

Und irgendwie der Unterschied zwischen GNU-Lizenz und GNU-Lib-Lizenz. Fuer
eine kurze einleuchtende Erklaerung dazu waere ich dankbar. Kennt sich
damit jemand gut genug aus?

Deine anderen Gruende, etwas im Userland "abzufackeln", gibt es natuerlich
auch.

> - Unter den Kernelentwicklern gibt es unterschiedliche Meinungen
>   darueber, welche Funktionen im Kern laufen sollten und welche nicht.

Ja.

Ich bin eher der Meinung, ein iSCSI-Treiber gehoert in den Kernel.

Immerhin soll darueber eine "Fern-Festplatte" angesprochen werden. Das
verspricht jede Menge Aufrufe, wenn das benutzt werden soll.

Wenn dann Teile davon im Userland laufen, hast Du bei jedem Schreib- oder
Lesevorgang einen Kontextswitch. Das bremst ganz schoen.

Vergleichbar hier dem NFS, welches sich auch in den Kernel "versenkt".
Lediglich der Aufbau der Verbindung (das Mounten) laeuft im Userland.

Waehrend NFS auf Filesystem-Ebene laeuft, tut es iSCSI noch drunter, auf
Device-Ebene. NFS ist eine VFS-Implementierung, iSCSI ein "SCSI-Adapter".

Es gruesst
Peter



Mehr Informationen über die Mailingliste linux-l