9

私は非常に遅いインターフェイスで Linux デバイス ドライバーをプログラミングしています。そのインターフェイスの ping ラウンド時間は数分にも及ぶことがあります。TCP を使用して 2 つのノード間の接続を確立しようとすると、接続が常にタイムアウトします。

ドライバーで TCP 再送信またはハンドシェークのタイムアウトをより長く設定する方法はありますか、またはそれを設定するコマンドはありますか? ありがとう

4

2 に答える 2

8

この質問に対する答えを探してみましたか?簡単なグーグル検索は私にこれを与えました、そしてそれはこの問題に直接対処しているようです。要約すると、の設定により、net.ipv4.tcp_syn_retriesTCP接続で使用可能な最大タイムアウトが決まります。

そのドキュメント があなたの質問に答えない場合、あなたはあなたが何を試みたか、そしてあなたが期待したものとどのように振る舞いが異なったかを示すべきです。

于 2013-03-18T19:28:26.363 に答える
4
/proc/sys/net/ipv4/tcp_retries1
/proc/sys/net/ipv4/tcp_retries2

tcp_retries1 - INTEGER


 This value influences the time, after which TCP decides, that
    something is wrong due to unacknowledged RTO retransmissions,
    and reports this suspicion to the network layer.
    See tcp_retries2 for more details.

    RFC 1122 recommends at least 3 retransmissions, which is the
    default.


tcp_retries2 - INTEGER

This value influences the timeout of an alive TCP connection,
when RTO retransmissions remain unacknowledged.
Given a value of N, a hypothetical TCP connection following
exponential backoff with an initial RTO of TCP_RTO_MIN would
retransmit N times before killing the connection at the (N+1)th RTO.

The default value of 15 yields a hypothetical timeout of 924.6
seconds and is a lower bound for the effective timeout.
TCP will effectively time out at the first RTO which exceeds the
hypothetical timeout.

RFC 1122 recommends at least 100 seconds for the timeout,
which corresponds to a value of at least 8.
于 2013-03-18T19:32:29.660 に答える