問題タブ [qos]
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.
android - IP接続を介したビデオのパケット損失、ジッター、およびQoSパラメータを計算する方法は?
音声とビデオの品質テストを実行して、IP接続を介した音声/ビデオエクスペリエンスの品質を測定するモバイルアプリケーションに出くわしました。このテストでは、リモートストリームのジッター、パケット損失などの値を計算します。
これがどのように行われているのか知りたいのですが?そのようなモバイルアプリケーションを書くには何が必要でしょうか?
どんな形でも助けていただければ幸いです。
ありがとう。
java - Javaでの一般的なQoSメッセージのバッチ処理と圧縮
Javaで記述されたカスタムメッセージングシステムがあり、基本的に高負荷の下で一連のプッシュ応答を単一のプッシュ応答に集約する基本的なバッチ処理/圧縮機能を実装したいと思います。
基本的に:
- 過去1秒間に3つのメッセージが送信されたことを検出した場合は、応答のバッチ処理を開始し、5秒以内に起動するようにタイマーをスケジュールします。
- タイマーは、次の5秒間に受信したすべてのメッセージ応答を1つのメッセージに集約します
Javaでの最良の例を探す前に、これは実装されていると確信しています。私は本格的なメッセージングレイヤーを探していません。基本的な1秒あたりのメッセージの検出と、いくつかのタスクのスケジュールを設定します(もちろん、これは自分で簡単に作成できます。既存のアルゴリズムと比較して、欠落していないことを確認したいだけです。エッジケースまたは問題を可能な限り単純化したこと)。
基本的なQoSバッチ処理/スロットリング/圧縮の実装を構築するための優れたオープンソースの例はありますか?
linux - Linux prio ベースの tc でネットワーク遅延が改善されないのはなぜですか?
さまざまなネットワーク トラフィックを持つリアルタイムの組み込み Linux アプリケーションを構築しています。一連のトラフィックのうち、2 つの接続はタイム クリティカルです。1 つは入力データ用で、もう 1 つは出力データ用です。私のアプリケーションでは、このトラフィックが他のタイム クリティカルでないトラフィックよりも優先される必要があります。
私は2つのことを気にしています:
- これら 2 つの接続の過負荷によりドロップされるパケットの数を最小限に抑えます。
- これら 2 つの接続で、デバイス (入力から出力) を介したレイテンシを最小限に抑えます。
私は Linux トラフィック制御について (ある程度!) 理解を深めており、送信されるデータの優先度はリモート デバイスが担当するため、主に送信トラフィックに適用されることを理解しています。アプリケーションをリアルタイム プロセスとしてセットアップし、アプリケーションを実行する優先度に関連する問題に取り組みました。
私は今、tcのセットアップに着手します。私のテストケースでは、これが私が使用するものです:
基本的には、優先度 7 のすべてのトラフィックを帯域 0 で送信し、その他のすべてのトラフィックを帯域 2 で送信するということです。
まず、私の予想を確認してみましょう。私が予想しているのは、優先度 7 のトラフィックは、他の優先度のトラフィックよりも常に先に送信される必要があるということです。これにより、そのようなトラフィックの遅延は、ボックス上の他のトラフィックの影響を比較的受けなくなりますよね? 私の mtu は 1500 に設定されており、インターフェイス経由で約 10 MB/秒を取得しています。バンド 2 トラフィックによって生じるバンド 0 の最大追加レイテンシは、1 パケット (<=1500 バイト)、または 150 マイクロ秒 (1500 バイト / 10 M バイト/秒 = 150 マイクロ秒) です。
これが私のテスト設定です:
2 つの Linux ボックス。ボックス 1 は、入力データをエコーする TCP サーバーを実行しています。ボックス 2 はボックス 1 に接続し、TCP 経由でパケットを送信し、遅延 (送信時間から受信時間) を測定します。
ボックス Linux ボックスに同じ tc セットアップを使用します。
アプリケーション (サーバーとクライアントの両方) で、次のようにソケットに SO_PRIORITY を設定しました。
tc を使用して、トラフィックが帯域 0 を通過し、他のすべてのトラフィックが帯域 2 を通過することを確認します。
問題は次のとおりです。他にトラフィックがない場合、500 us の範囲の遅延が見られます。他のトラフィック (たとえば、100 MB のファイルをコピーする scp ジョブ) がある場合、レイテンシーは 10 ミリ秒以上に跳ね上がります。本当に奇妙なのは、私が行った tc の作業がまったく影響を与えていないことです。実際、帯域を交換すると (つまり、すべてのトラフィックが優先度の低い帯域 2 を通過し、その他のトラフィックが帯域 1 を通過します)、遅延に違いは見られません。
私が予想していたのは、ネットワーク上に他のトラフィックがある場合、10 ミリ秒ではなく、約 150 マイクロ秒の遅延の増加が見られるということです! ところで、ボックスに他の (非リアルタイム優先) プロセスをロードしても、レイテンシーや他のインターフェイスのトラフィックに影響しないことを確認しました。
もう 1 つの注目すべき点は、mtu を 500 バイトに下げると、レイテンシーが約 5 ミリ秒に減少することです。それでも、これは無負荷の場合よりも一桁悪いです。また、なぜ mtu を変更するとそれほど影響を受けるのに、tc を使用してプライオリティ キューイングを設定しても効果がないのですか?
tc が役に立たないのはなぜですか? 私は何が欠けていますか?
ありがとう!
エリック
linux - Linux 低遅延 TCP ストリーム
この要件を持つ組み込みアプリケーションがあります。1 つの発信 TCP ネットワーク ストリームは、他のすべての発信ネットワーク トラフィックよりも絶対的に高い優先度を必要とします。そのストリームで転送を待機しているパケットがある場合、それらは次に送信されるパケットになります。限目。
私の成功の尺度は次のとおりです。バックグラウンド トラフィックがない場合に優先度の高いレイテンシを測定します。バックグラウンド トラフィックを追加して、再度測定します。遅延の差は、優先度の低いパケットを 1 つ送信する時間になります。100Mbps リンクの場合、mtu=1500 で、およそ 150us です。私のテスト システムには、クロスオーバー ケーブルで接続された 2 つの Linux ボックスがあります。
私は非常に多くのことを試しましたが、レイテンシーは大幅に改善されましたが、目標を達成していません (現在、バックグラウンド トラフィックで 5 ミリ秒のレイテンシーが追加されています)。すでに別の非常に具体的な質問を投稿しましたが、一般的な質問からやり直す必要があると考えました。
最初の質問: これは Linux で可能ですか? 2 番目の質問: もしそうなら、私は何をする必要がありますか?
- tc?
- どの qdisc を使用すればよいですか?
- カーネルのネットワーク パラメータを微調整しますか? どれ?
- 他に何が欠けていますか?
ご協力いただきありがとうございます!
エリック
2010 年 10 月 4 日更新: 送信側と受信側の両方で tcpdump をセットアップしました。これが送信側で見られるものです(物事が混雑しているようです):
受信側では、次のように表示されます。
問題は、SCP パケットの長さ (25208 バイト) にあるようです。これは、mtu (このテストでは 600 に設定しました) に基づいて複数のパケットに分割されます。ただし、これはトラフィック制御よりも下位のネットワーク層で発生するため、遅延は mtu ではなく最大 tcp 送信パケット サイズによって決定されます。ああああ..
LinuxでTCPのデフォルトの最大パケットサイズを設定する良い方法を知っている人はいますか?
linux - How to set the maximum TCP Maximum Segment Size on Linux?
In Linux, how do you set the maximum segment size that is allowed on a TCP connection? I need to set this for an application I did not write (so I cannot use setsockopt
to do it). I need to set this ABOVE the mtu in the network stack.
I have two streams sharing the same network connection. One sends small packets periodically, which need absolute minimum latency. The other sends tons of data--I am using SCP to simulate that link.
I have setup traffic control (tc) to give the minimum latency traffic high priority. The problem I am running into, though, is that the TCP packets that are coming down from SCP end up with sizes up to 64K bytes. Yes, these are broken into smaller packets based on mtu, but this unfortunately occurs AFTER tc prioritizes the packets. Thus, my low latency packet gets stuck behind up to 64K bytes of SCP traffic.
This article indicates that on Windows you can set this value.
Is there something on Linux I can set? I've tried ip route and iptables, but these are applied too low in the network stack. I need to limit the TCP packet size before tc, so it can prioritize the high priority packets appropriately.
windows - DLL による TCP 接続の QoS
私たちの Windows アプリは、サードパーティの DLL にサーバーへの TCP 接続を確立するように要求します。遅延を減らすために、この TCP 接続に QoS パラメータを適用する必要があります。それを行う方法についてのアイデアはありますか?外部ツールを使用する提案と、アプリで Windows API を呼び出せるようにする提案の両方を受け入れます。
アプリは Windows XP 以降で動作します。
android - Androidの通話品質
Androidで音声通話中に通話品質を取得または測定することは可能ですか?
アイデアは、場所ごとの通話中に高品質のオーディオの配信を知ることです。
windows - yahooメッセンジャーのQoSアプリケーションタイプ
Yahoo メッセンジャーのビデオ/音声通話に QoS ルールを設定しようとしています。ただし、どのようなサービスかはわかりません。IGMP、SIP、H323、RSTP などですか? または、どのポート範囲を使用していますか?
c++ - qWAVEを使用するために必要なWindowsのアクセス許可/ポリシー
qWAVE(Windows Server 2008 R2の場合)を使用して、ソケットトラフィックに任意のDSCP値を設定しようとしています。フローを正しく設定していると思いますが、QOSSetFlow()を呼び出そうとすると、ERROR_ACCESS_DENIEDエラーが発生します(「呼び出し元のアプリケーションには、要求された操作に対する十分な権限がありません。」)。このコードを実行しているユーザーはAdministratorsグループのメンバーであり、さまざまなセキュリティポリシーを確認しましたが、関連性のあるものは見つかりませんでした。このAPIを機能させるためにユーザーに与える必要のある権限を誰かが知っていますか?
ありがとう!
更新:DSCP値を設定しようとするテストプログラムがあります。[互換性]メニューの[管理者として実行]をオンにすると、すべて正常に機能します。したがって、コードは問題なく、管理者ユーザーには必要な権限があります。残念ながら、実際のサービスを管理者ユーザーとして実行することはできません。管理者グループ(または特定のユーザー)に管理者ユーザーが持つ権限の一部を与える方法はありますか?
networking - 利他的なネットワーク接続帯域幅の見積もり
Alice と Bob の 2 つのピアが IP ネットワークを介して接続されているとします。Alice と Bob は、生成されてリアルタイムで消費される非可逆圧縮データのパケットを交換しています (VoIP またはビデオ チャット アプリケーションを考えてください)。このサービスは、利用可能なわずかな帯域幅に対処するように設計されていますが、低レイテンシーに依存しています。Alice と Bob は、適切な QoS プロファイルで接続をマークします。
Alice と Bob は、可変ビットレート圧縮を使用したいと考えており、それらの間の接続に使用できる残りの帯域幅をすべて消費したいと考えていますが、ネットワークの状態に応じて、消費されるビットレートを自発的に削減します。しかし、彼らは安定したリンクを維持したいと考えています。つまり、帯域幅が調整されるまでの輻輳と遅延によって引き起こされるデコードされたデータ ストリームの中断を回避したいと考えています。ただし、いくつかのパケットを失う可能性は十分にあります。
TL;DR: Alice と Bob は VoIP プロトコルをゼロから実装したいと考えており、帯域幅と輻輳制御に興味があります。
Alice と Bob が読むように提案する論文とリソースは何ですか? 主に帯域幅推定と輻輳制御の分野で。