問題タブ [retransmit-timeout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tcp - ns-3 シミュレーターでデフォルトの RTO (再送信タイムアウト) 値を設定する
これは rtt-estimator.h で見つかりました。コンストラクターはm_initialEstimatedRtt
、再送信タイムアウト値を直接制御すると思われる値を設定します。
の値を設定する方法がわかりませんm_initialEstimatedRtt
。
その値を変更するために使用できるという名前のメソッドSetCurrentEstimate
が表示されますが、それを使用する場合、シミュレーションのどの段階で変更する必要があるのか わからないため、初期値を制御することを好みます。
また、例で設定されているデフォルト値は何ですか? どこで見つけることができますか?
vb.net - デバイス ドライバーを修正するための VB.net マルチスレッド
ASTM プロトコルでデータを受信するための VB.net ベースのデバイス ドライバーをコーディングしようとしました。ドライバーはデータをさらに処理し、データベースベースのソフトウェア (「生物学的」) に送信する必要があります。実際、小さなデータ セットを受信しているときに、両方のタスクを達成することに成功しました。しかし、膨大な量のデータを受信すると問題が発生します。データをドライバに送信するソフトウェアが ACK コマンドを取得せず、フレームの再送信が発生します。私はマルチスレッドにあまり詳しくありませんが、同期とタイムアウトに関連しているため、マルチスレッドが問題を解決する可能性があると最近聞いています.私のコードの現在のバージョンを以下で見つけてください。ドライバーが新しいデータをキューに挿入して ACK コマンドを送信する方法で、スレッドを追加してそれらを同期するように変更する方法についてアドバイスと支援をいただければ幸いです。キューからデータベースへのデータ。それは、同期された方法でそれを行うべきだと思います...助けてください...
エンドモジュール
windows - Windows はどの設定/テンプレート (インターネットとデータセンター) が TCP 接続に適用されるかをどのように決定しますか?
最小 RTO をグローバルに構成するため。遅延 ACK タイムアウト。Windows 7 以降の輻輳アルゴリズムなどは、ネットワーク TCP テンプレートを使用することになっています。これらを表示するには、Get-NetTCPSetting powershell コマンドレットを使用できます。
個々の接続とそれらに適用される設定を取得するには、Get-NetTCPConnection コマンドレットを使用できます。
インターネットとデータセンターの TCP 設定の選択に影響を与える (または少なくともどのように行われる) のですか? データセンターの設定で処理したい (通信障害からの回復を高速化するため) 低遅延接続がいくつかありますが、これをすべての接続にやみくもに適用したくはありません。
tcp - TCP 再送信: 再送信されるパケットの数は?
TCP 再送信はどのように行われますか? 再送信されるパケットの数によって決定される式はどれですか? キュービックTCPのどこかに設定されていることは理解していますが、どこですか?
Linux での動作に興味があります。私は Debian 8 を使用しており、ダンプを探しているだけです。netcat を使用して 27000 ポートへの接続をセットアップしました。私は通常、iptablesがポート27000ですべてのパケットをドロップしてパケットを送信するサーバーで行います(そして、パッケージが再送信された回数を調べます)。
linux - TCP 接続がアイドル状態と見なされるのはいつですか?
すべての接続で TCP キープアライブを有効にする必要があり、テスト ケースの結果に苦労しています。これは、最初のキープアライブ プローブが送信されるタイミングがよくわからないためだと思います。tcp_keepalive_time
Linuxのドキュメントで次のことを読みました。
最後に送信されたデータ パケット (単純な ACK はデータとは見なされません) と最初のキープアライブ プローブの間の間隔。接続がキープアライブが必要であるとマークされた後、このカウンターはそれ以上使用されません
他の情報源では、これは接続がアイドル状態であると述べていますが、これが何を意味するかについては詳しく定義していません。また、再送信を検討するときに「最後に送信されたデータパケット」が実際に何を意味するのか疑問に思っているため、これのより正式な定義を見つけるためにスティーブンスを調べました。
私のテストケースでは、データがサーバーからクライアントにかなり高いレートでのみ送信される接続があります。キープアライブをテストするために、クライアントの NIC のケーブルを取り外しました。ネットワーク スタックがデータを送信しようとして再送信状態に入ることがわかりますが、キープ アライブ プローブは送信されません。再送信中にキープアライブ プローブが送信されないというのは正しいですか?
mysql - MySQL のスタックまたはネットワークの問題?
物理サーバーでホストされているmysql-server(5.5.47)があります。外部インターネット インターフェイス (ユーザー アクセスを制限) をリッスンし、さまざまな場所から集中的に使用される mysql サーバー (さまざまなライブラリを使用して mysql と通信します) をリッスンします。しかし、mysqlサーバー(またはネットワーク)全体がスタックして接続の受け入れを停止し、クライアントがetimedout(connect)/timeout(recv)で失敗し、サーバーからmysqlへの直接接続でmysql cliが機能していない(応答なしでスタックしたようです接続を確立してみてください)。最初に考えたのは、これは tcp バックログに関連しているので、mysql バックログが増加したということでしたが、これはまったく役に立ちませんでした。
問題は再現できないため、前回この問題が発生したときにトラフィックをスニッフィングすると、次の結果が得られます。
http://grab.by/STwq — スクリーンショット
セッションから、tcp 接続が確立されたと仮定できますが、サーバーは SYN/ACK をクライアントに再送信します (ダンプから、サーバーが ACK を受信したことがわかります。なぜ再送信するのでしょうか?)。設立。1 つのセッションからの画面のみですが、他のすべてのセッションはほとんど同じで、SYN -> SYN/ACK -> ACK -> サーバーは retries_count まで SYN/ACK を再送信します。
再起動後、mysql はすべて再起動直後に正常になります。したがって、ネットワークまたはmysqlに関連しているかどうかはわかりません。
どんな考えでも適切です。
ありがとうございました!
c# - クライアントからサーバーへの再送信パケットが見えない
LAN(OS-Windows8)で実行されているカスタムクライアントサーバーアプリケーションがあります。クライアントでキープアライブ オプションを使用したところ、Wireshark でキープ アライブ パケットが表示されます。ただし、サーバーが実行されているマシンのネットワーク ケーブルを抜くと、クライアントからサーバーへの再送信パケットは表示されませんが、他のアプリケーションが再送信パケットをサーバーの IP に送信しているのが表示されます。なぜこれが起こっているのかわかりません。再送信のタイムアウト値を明示的に設定する必要がありますか? または、この問題を解決するにはどうすればよいですか?
参考までに、これは私が使用しているキープアライブ コードです。 TCP クライアント (ソケット) の VB.NET で TCP KeepAlive を実装する方法
値で setKeepAlive を呼び出しています- SetKeepAlive(clientSocket, 60000, 10000)
ありがとうございました
dll - DLL の優先度が低く、イーサネット機能に影響を与える可能性がありますか? TCP 再送信が発生する
DLL で実行しようとしている modbus イーサネット tcp 通信がいくつかあります。WireShark で見られるように、ターゲット デバイスから多数の TCP 再送信を受け取ります。
(この画像では、192.168.1.5 は Modbus デバイスです。192.168.1.72 はコンピューターです)
ただし、同じコードをアプリケーションに直接挿入すると、通信エラーは発生しません。
DLL の優先度が低く、通信が遅くなる可能性があるかどうか、またはこのコードがアプリケーションで TCP の問題なしに実行されるのに DLL では実行されない理由について誰かが洞察を持っているかどうか疑問に思っています。
dll ヘッダーは次のとおりです。
ソースファイルは次のとおりです。
コードを可能な限り単純化しました。通信はテストのためにループしています。元のアプリケーションは、デバイスからこのデータをポーリングします。