Warum gibt es kein Nullkopie-Netzwerk im Linux-Kernel? [geschlossen]

9

Ich würde gern die Gründe dafür wissen, warum der Linux-Kernel (oder ein anderes Mainstream-Betriebssystem) keine Funktion für das Netzwerk mit Nullkopie hat? Mit Null-Kopie meine ich, dass ein Paket / Datenstrom nicht zum Übergeben an eine Anwendung im Benutzerbereich kopiert wird, sondern z.B. verwendet einen Speicherpool-Typ von Zuordner, um den Speicher zwischen Kernel und Benutzerbereich freizugeben. Ich habe 3 eigene Theorien entwickelt:

a) Ich denke, es gibt Sicherheitsbedenken. Aber gibt es wirklich keine Möglichkeit, Speicher sicher zwischen Benutzerbereich und Kernel zu teilen, wenn sie nur als Puffer verwendet werden?

b) Ich denke, es gibt Stabilitätsprobleme. Aber können wir nicht davon ausgehen, dass wer Null-Kopie-Netzwerk und z. muss ein Speicherpool für den Kernel-Aufruf installiert und übergeben werden? Ist Speicherverwaltung bekannt? Bewusst genug, um Lecks zu vermeiden?

c) Es wurde bisher noch nicht gemacht / benötigt. Ich kann mir nicht wirklich vorstellen, dass niemand diese Funktion anforderte, da jeder, der kleine Paketgrößen verwendet, typischerweise durch die "langsame" TCP-Stack-Implementierung blockiert ist und es Drittanbieter-Tools für 0-Kopie-Netzwerke gibt Netzwerkkarten.

Fühlen Sie sich frei, irgendwelche Vermutungen zu posten, aber bitte markieren Sie, ob Sie die Gründe für die Aufrechterhaltung der StackOverflow-Qualität annehmen oder kennen: -)

    
user1610743 03.03.2014, 14:59
quelle

1 Antwort

4

Es gibt Netzwerkkopien von Drittanbietern für Linux , es ist kein Standardfunktion jedoch.

Beachten Sie, dass eine Nullkopie mit TCP unpraktisch sein kann, da TCP-Segmente Header und Payload enthalten, Anwendungen sich jedoch nur mit Payload befassen, sodass Payload, aber keine Header in einen zusammenhängenden Puffer für Ihre Anwendung kopiert werden müssen. p>     

Maxim Egorushkin 03.03.2014 15:04
quelle