İlk TCP yeniden iletim zaman aşımını nasıl ayarlayabilirim?


14

3s'lik ilk TCP RTO değeri, LAN tabanlı uygulamaların çoğu için çok uzun. Nasıl daha düşük ayarlayabilirim? Bir sistem var mı?

Yanıtlar:


12

Hayır, yapamazsın; çekirdeğe kodlanmıştır. Çekirdeği değiştirin ve yeniden derleyin.

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

İnclude / net / tcp.h dosyasına girmeniz gereken şey budur.

Ama kendim hiç denememiş olmama rağmen birisinin bir yama sağladığını görebiliyorum


4

RTO ağ koşullarına göre kendini ayarladığından, başlangıç ​​ayarı genel performansınızı fazla etkilememelidir. RTO'yu değiştirirseniz, 1 saniye olarak ayarlayabilirsiniz (ancak daha düşük değil).

Bunun RFC 1122'de bir tartışması var :

        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 söylüyor (Haziran 2011 yayınlı) önerilen bir güncelleme RTO daha düşük bir değere (ancak 1 sn'den daha düşük olmayan) başlatılır edilebilir, ve bir ek veriler içeren içeren fab makul bir başlangıç değeri olarak 1 sn.


1 saniye ZORUNLU, ZORUNLU DEĞİL; btw iyi bilinen bir arama motoru ön uçlarının
rto bakabilirsiniz

"Başlangıç ​​ayarı genel performansınızı fazla etkilememelidir" ifadesine katılmıyorum. Bu, ilk iletişimdeki uygulama için hata oranınızı etkileyebilir. Arka uç uygulaması okuma zaman aşımını 3 saniyeye veya daha kısa bir süreye ayarladığında, ilk TCP iletişimi sırasında ağdaki paket damlaları (herhangi bir tıkanıklıkla normal olay) bırakılan bir paketin düzgün bir şekilde yeniden iletilmesine izin vermez. başlangıç ​​değeri, alıcı uç tarafından ayarlanan okuma zaman aşımından daha düşük olmalı ve üzerinde çalışmakta olduğunuz ağın QOS değerine göre ayarlanmalıdır.
Joe

3 Saniye yerel ağlarda sonsuzluktur ve gidiş-dönüş süresinin milisaniye olduğu bir paket çok hızlı bir şekilde gerçekleşir.
Joe

Modern CPU'ların 3 saniyede çok şey yapabileceğini kabul ediyorum. Anladığım kadarıyla, bu ilk gecikme yalnızca sürücü başlatıldığında uygulanır; bu, yalnızca bir sistem ilk kez başlatıldığında gerçekleşir.
Jay Elston
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.