カスタムプロトコルでTCPのようなRTT推定を実装しています。私は、以前のRTT推定が行われていない最初の繰り返しの場合は、機能にLinuxカーネルでTCPのRTTを測定する
static void tcp_rtt_estimator(struct sock *sk, long mrtt){
long m = mrtt; /* RTT */
を見ると、コードスニペットはm
の値がsrtt
に直接取られていないのはなぜ
srtt = m << 3; /* take the measured time to be rtt */
です?私の理解によると、パラメータmrtt_us
は、現在の往復時間測定のためのjiffiesの値に過ぎません。
mrtt_us
についての上記の仮定は間違っていますか?はいの場合、この関数にどのような値を渡す必要がありますか?
P.S.-私は現在、この関数に渡しているjiffiesで測定されたRTTを持っています。 srtt = m << 3
はそれがルーチンに渡されたRTT値に適用されるアルゴリズムを平滑化の一部ではないですか? http://ee.lbl.gov/papers/congavoid.pdf – bytefire
はい、スムージングアルゴリズムでは、最初のRTT測定を直接SRTTとして使用し、適切なものを使用するよう指示していますsecong RTT測定から式を使用する必要があります。 https://tools.ietf.org/html/rfc6298のセクション2.2 –