GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je régler le délai initial de retransmission TCP ?

Solution 1 :

Non, vous ne pouvez pas ; il est codé en dur dans le noyau. Alors changez le noyau et recompilez.

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

C'est ce que vous devriez obtenir dans votre include/net/tcp.h.

Mais je peux voir que quelqu'un a fourni un patch, même si je ne l'ai jamais essayé moi-même

Solution 2 :

Le paramètre initial ne devrait pas trop affecter vos performances globales, car le RTO s'adapte automatiquement aux conditions du réseau. Si vous modifiez le RTO, vous pouvez le régler sur 1 seconde (mais pas moins).

Il y a une discussion à ce sujet dans la 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 est une mise à jour proposée (publiée en juin 2011) qui indique que RTO peut être initialisé à une valeur inférieure (mais pas inférieure à 1 sec), et contient une annexe contenant des données qui justifient 1 sec comme une valeur initiale raisonnable.


Linux
  1. Comment puis-je trouver la version de Fedora que j'utilise ?

  2. Comment puis-je obtenir l'état du clavier sous Linux?

  3. Comment puis-je attribuer un mot de passe initial/par défaut à un utilisateur sous Linux ?

  4. 8G RAM et SSD - quelle devrait être la taille de l'échange ?

  5. Comment puis-je transférer un port avec iptables ?

Comment régler NGINX pour le prochain 2022 ?

Comment changer la limite de délai d'expiration de MySQL sous Linux ?

Comment puis-je connaître le chemin absolu d'un processus en cours d'exécution ?

Comment puis-je modifier le $PATH sous Linux ?

Comment puis-je trouver le fichier le plus ancien dans une arborescence de répertoires

Comment dois-je déterminer l'utilisation actuelle du réseau ?