GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich das Timeout für die anfängliche TCP-Neuübertragung optimieren?

Lösung 1:

Nein, das kannst du nicht; es ist im Kernel fest codiert. Also den Kernel ändern und neu kompilieren.

#define TCP_TIMEOUT_INIT ((unsigned)(3*HZ))     /* RFC 1122 initial RTO value   */

Das sollten Sie in Ihre include/net/tcp.h bekommen.

Aber ich kann sehen, dass jemand einen Patch bereitgestellt hat, obwohl ich ihn nie selbst ausprobiert habe

Lösung 2:

Die anfängliche Einstellung sollte Ihre Gesamtleistung nicht stark beeinträchtigen, da sich RTO selbst an die Netzwerkbedingungen anpasst. Wenn Sie RTO ändern, können Sie es auf 1 Sekunde einstellen (aber nicht niedriger).

Es gibt eine Diskussion darüber in RFC 1122:

        The following values SHOULD be used to initialize the
        estimation parameters for a new connection:
        (a)  RTT = 0 seconds.

        (b)  RTO = 3 seconds.  (The smoothed variance is to be
             initialized to the value that will result in this RTO).

        The recommended upper and lower bounds on the RTO are known
        to be inadequate on large internets.  The lower bound SHOULD
        be measured in fractions of a second (to accommodate high
        speed LANs) and the upper bound should be 2*MSL, i.e., 240
        seconds.

        DISCUSSION:
             Experience has shown that these initialization values
             are reasonable, and that in any case the Karn and
             Jacobson algorithms make TCP behavior reasonably
             insensitive to the initial parameter choices.

RFC 6298 ist ein vorgeschlagenes Update (veröffentlicht im Juni 2011), das besagt, dass RTO kann auf einen niedrigeren Wert initialisiert werden (jedoch nicht niedriger als 1 Sekunde) und enthält einen Anhang mit Daten, die 1 Sekunde als vernünftigen Anfangswert rechtfertigen.


Linux
  1. Wie kann ich das 'Backend' in Matplotlib in Python einstellen?

  2. Wie kann ich in einem SIGILL-Handler die anstößige Anweisung überspringen?

  3. Wie kann ich den TCP-Port 16969 in Bash beenden?

  4. Wie kann ich die Symbolleiste in Emacs dauerhaft ausblenden?

  5. Wie finde ich die älteste Datei in einem Verzeichnisbaum?

Wie wird NGINX für das kommende Jahr 2022 optimiert?

Wie soll ich die aktuelle Netzwerkauslastung ermitteln?

8G RAM und SSD – wie groß sollte der Swap sein?

Wie kann ich die Länge der Annahmewarteschlange überwachen?

Wie groß sollte die Swap-Partition sein?

Wie kann ich mit iptables weiterleiten?