GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa menyetel batas waktu pengiriman ulang TCP awal?

Solusi 1:

Tidak, Anda tidak bisa; itu di-hardcode di kernel. Jadi ubah kernel dan kompilasi ulang.

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

Inilah yang harus Anda dapatkan di include/net/tcp.h.

Tapi saya bisa melihat seseorang memberikan tambalan, meskipun belum pernah mencobanya sendiri

Solusi 2:

Pengaturan awal seharusnya tidak terlalu memengaruhi kinerja Anda secara keseluruhan, karena RTO menyesuaikan sendiri dengan kondisi jaringan. Jika Anda mengubah RTO, Anda dapat menyetelnya menjadi 1 detik (namun tidak lebih rendah).

Ada diskusi tentang ini di 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 adalah pembaruan yang diusulkan (diterbitkan Juni 2011) yang menyatakan bahwa RTO dapat diinisialisasi ke nilai yang lebih rendah (namun tidak lebih rendah dari 1 detik), dan berisi Apendiks berisi data yang membenarkan 1 detik sebagai nilai awal yang masuk akal.


Linux
  1. Bagaimana saya bisa menetapkan kata sandi awal/default untuk pengguna di Linux?

  2. Bagaimana saya bisa meraster semua teks dalam PDF?

  3. Bagaimana saya bisa memantau panjang antrian penerimaan?

  1. Bagaimana cara menemukan versi Fedora yang saya gunakan?

  2. Bagaimana saya bisa mengatur 'backend' di matplotlib dengan Python?

  3. Seberapa besar seharusnya partisi swap?

  1. Bagaimana saya bisa mematikan TCP port 16969 di Bash?

  2. Bagaimana saya bisa mengetahui jalur absolut dari proses yang sedang berjalan?

  3. Bagaimana saya bisa mengedit $PATH di linux?