LAN容量を超える場合のOSのネットワーク優先順位


0

リアルタイムネットワーキングを必要とするデスクトップアプリケーションを開発しようとしています。今、私は多くのアプリケーションが1つのNICを共有し、オペレーティングシステムのNICの全LAN容量を超えるときにいくつかの質問をします。

1)トラフィックがNIC容量の制限を超えるとどうなりますか? Windowsでは、各アプリケーションの速度は同等に低下しますか?それとも、先に起動したアプリケーションが優先されますか。 MacやLinuxではどうでしょうか。

2)インターネットからデータをダウンロードするとき、私はブラウザができるだけ速くそれをダウンロードすると思います。この動作は、リアルタイムアプリケーションのネットワーキングにどの程度影響しますか?

3)Windowsでは、プロセスの優先順位を設定することができます。同様にネットワークの優先順位を設定することはできませんか?またMacやLinuxはどうですか? (私はWindowsでネットワークの優先順位を設定するサードパーティ製のアプリケーションを知っていますが、OSはサポートしていませんか?)

4)各IPヘッダは優先順位設定を含むTOSフィールドを有する。ほとんどのオペレーティングシステムとルーターはこのフィールドを無視すると聞きました。本当?

前もって感謝します。

(この投稿は範囲外のためStack Overflowから移動しました)


アプリケーションに関するもう少し情報が役に立つかもしれません。確かにあなたはトラフィックにサービスの質(QoS)のルールを適用することができますがそれがあなたが求めているものであるかどうかわからない。
Dave M

私の質問にとって理想的で最も近いアプリケーションは、待ち時間が最も少ないオンラインゲームであり、各ユーザーのネットワークシステムに構成や制限を課すことは不可能です。だから私は私のアプリケーションネットワークロジックを考案するために可能な限り速度を保証する必要があります。
user3288408

回答:


0

はじめに real time ネットワーキングは、どのようなネットワーク状況でも「タイムリー」な方法であなたの情報の提供を保証できないという基本的な事実のために存在しません。リアルタイムコンピューティングはしばしば混同されます high performance computing。第二に、NICはあまりにも多くのビットを突き出すと破裂する可能性がある送水管のようなものではないため、「NICの容量を超えることはできません」。 NICの「容量」(または帯域幅)は 物理的 1つの接続されたインターフェースが物理的にビットを「ストリーミング」できる速度(アップ/ダウン)の制限値。1秒あたりのメガビット数で測定されます(一般的な誤称のようなメガバイトではありません。

1)トラフィックがNIC容量の制限を超えるとどうなりますか? Windowsでは、各アプリケーションの速度は同等に低下しますか?それとも、先に起動したアプリケーションが優先されますか。 MacやLinuxではどうでしょうか。

「ネットワークリソース」(またはソフトウェアエンジニアが「ソケット」と呼ぶもの)を要求する、実行する各アプリケーションは、アプリケーションが「バインド」されている(待機している)最大速度でダウンロード/アップロードできます。この種の「機能」は、多かれ少なかれOSに依存しないことに注意してください(すなわち、WindowsのソケットはLinux / Macのものと同じ基本的な制限/概念を持っています)。したがって、アプリケーション(Webサーバーなど)が実行されている場合、それは、理論的には、待機しているインターフェイスの最大速度(1Gb /秒で 'nic 1')でWebページを「提供」できます1秒間に125MBのファイル/要求を受信し、同時に125MBのファイル/応答を送信します(全二重の場合)。実際には速度は多くの理由ではるかに低いですが...

これを考えて、私たちの「完璧な」ウェブサーバーは今やFTPリクエストも処理する必要があるとし、そして同じNIC上で待ち受ける同じマシン上にFTPサーバーをロードするとします(この例では「nic 1」)。 FTPサーバーアプリケーションが起動すると、送受信も可能になります。 まで NICの理論上の最大値(この例では125MB / s)。これはあなたが実行するすべてのアプリケーション(ウェブブラウザ、ビデオゲーム、Netflix / Huluなど)にも当てはまります。最も重要な点は、NICの最大帯域幅を使用できる2つ以上のアプリケーション(この例ではwebとftp)があることです。これが、一般的なネットワーキングとOSの実装が登場するところです。

この例では、Webサーバーから10Mb / sでダウンロードする人が80人(合計800Mb / s)いるとします。その後、さらに30人がFTPサーバーからそれぞれ10MB / sで合計1100Mb / sでダウンロードを開始します。 ;理論的には、各アプリケーションは、NICが物理的に処理できる1000Mbの帯域幅を均等に共有することになります(OSが最大100%のCPU負荷で実行中のアプリケーション間でCPUを「共有」する方法と同様)。実際にはあります LOT どのアプリケーションを決定するさまざまな要因の 用途 与えられた瞬間にどのくらいの帯域幅の量。これらの要因は、リソースを要求しているユーザーの数から、単純なハードウェアの問題、3ネットワークホップダウンストリームまでさまざまです。これらの問題は、ユーザーの制御の範囲を超えています。帯域幅割り当てで。この1100Mb / sのシナリオでは、FTPが40%になっている間にWebサーバーが60%の帯域幅の実効レートで動作している可能性があります。 Webサーバーは20%しか使用せず、FTPは40%の速度で続行できるため、Webサーバーの受信側のユーザーが制限されます。

これらはすべて理解を深めるための一般的なシナリオであり、「実社会」のケースは完全に異なり、ユーザーベースの帯域幅ニーズを満たすことができるようにするためには多くの計画と設計作業が必要です。 。

2)インターネットからデータをダウンロードするとき、私はブラウザができるだけ速くそれをダウンロードすると思います。この動作は、リアルタイムアプリケーションのネットワーキングにどの程度影響しますか?

ブラウザは「彼らが」できるほど速くはダウンロードせず、他のアプリケーションができる限り速くダウンロードし、他のアプリケーションがそうであるようにシステムの全帯域幅に影響を与えます(1の答えを参照)。

3)Windowsでは、プロセスの優先順位を設定することができます。同様にネットワークの優先順位を設定することはできませんか?またMacやLinuxはどうですか? (私はWindowsでネットワークの優先順位を設定するサードパーティ製のアプリケーションを知っていますが、OSはサポートしていません?)

「ネットワーク」の「優先順位」を設定することは可能ですが、プロセスの優先順位を設定するのと同じ意味ではありません。 「ネットワークの優先順位」を設定するということは、NICの優先順位を別の優先順位に設定するなど、いくつかのことを意味します(Win / Mac / Linuxで行うことができ、「ネットワークインターフェイスメトリック」の設定とも呼ばれます)。あなたの意図が特定のプロセスのネットワークの優先順位または「ネットワークトラフィックのタイプ」を設定することである場合でも、これはとして知られています 「サービス品質(QoS)」 そしてWin / Mac / Linuxにも適用することができます(あなたのプラットフォームのQoSの設定と設定はこの質問/回答の範囲外ですが)。 QoSを使用すると、特定のものに割り当てられる帯域幅を制限または評価できます。たとえば、他に何もダウンロードしていないときにトレントダウンロードの最大帯域幅を許可するようにQoSを設定し、他のネットワークアクティビティによってトレントダウンロードが帯域幅のすべてを使い果たさないように自動的に制限します。あなたのEメールをチェックしようとしている間またはYouTubeを見ている間(ちょうど例として)。

4)各IPヘッダは優先順位設定を含むTOSフィールドを有する。ほとんどのオペレーティングシステムとルーターはこのフィールドを無視すると聞きました。本当?

「サービスの種類」 定義されたフィールド これらによって 2つのRFC 以来、「差別化サービスコードポイント」として知られるものに変貌しました。それは ではない それが単に「使われていない」のと同じくらい無視されます。言い換えれば、パケットがフィールドセットを持っているからといって(ネットワークデバイスの実装者として)実際にそれを「何でもする」必要があるわけではないので、ToSはQoSの一部であり、したがってあなたの特定のOS /デバイスはサポートしなければなりません。 ToS / DSフィールドとはいえ、ほとんどのOS /ネットワーク機器には、いくつかのQoSポリシーを介してこれらのフィールドを使用できるようにするためのいくつかの機能があります(少なくとも私が最近知っていることは知らない)。 しないで 何らかのQoS実装を持っています)。

繰り返しますが、「リアルタイムネットワーキング」のような表記法はありません。代わりに「リアルタイム」は要求された/実装されたものの保証された時間の配信を意味するので「低レイテンシ」と言います。操作。ネットワーク上で実行される操作が特定の時間配信Xを持つことを保証することはできません。代わりに、ネットワーク操作が特定のノードでXよりも高い/低い待ち時間を持たないことを保証できると言えます。

それはあなたの質問の文脈を与えられた後にあなたの後であるかもしれないと思われるので私はまたQoSについて読み上げることを提案する。

それが役立つことを願っています。


お返事ありがとうございます。私は非常に詳細で有用な答えを感謝します。私の下手な英語力ですみません、私はさらに質問があります。 (1)あなたの答えを以下のように要約しました。実世界の場合、NICの帯域幅を共有するためのさまざまな要因がたくさんあるため、どのアプリケーションが大きな帯域幅を得ることができるのか私たちはそれを制御できません。だから私達は気質ネットワークシステムに対して設計、計画そして論理を工夫しなければならない。あれは正しいですか?
user3288408

(2)各アプリケーションのネットワークは総帯域幅に影響を与えます。しかし、ネットワークの優先順位を制御することはできないので、ダウンロードの動作は私のアプリケーションのネットワークに影響を与える可能性があります。誰も知らない。あれは正しいですか? (4)自分のアプリケーションにQoSを適用することを考えています。簡単に言うと、私のアプリケーションがToSフィールドを使用して自分のパケットに高い優先度を与え、他に何もしない場合、オペレーティングシステムはこの設定を無視しますか?または私のパケットは高い優先順位を得ることができますか? (オペレーティングシステムでQoS設定が行われていないと仮定)
user3288408

問題ない!あなたの他の質問に答えるために。 1つは正しいです、私達(エンジニアとして)ネットワークアプリケーションを開発する場合ネットワークの「信頼性」を考慮に入れる必要があります。 Q2では、各アプリが総帯域幅に影響を与えることは正しいのですが、他のアプリが帯域幅に影響を与えるかどうかはわからないかもしれませんが、Q1に戻ります。ポイントがありません。待ち時間の短いアプリを設計するには「市場調査」が必要なので、実際にどれだけの待ち時間が発生するかを推測することができます(または、アプリケーションが処理できる最大の待ち時間とは何ですか)。
txtechhelp

質問4のとおり、3 :)になっていたと思います。パケットに特定のToSフラグを付けると、そのOSにQoS設定があるかどうかによって、OSが「無視」する可能性があります(基本的にはQoSを有効にすること(狂った設定ではありません)、あなたのパケットがいったんNICを離れると、エンドポイント間の個々のノードの影響を受けやすくなります。ノード(少なくとも自分の管理下にないもの)はあなたのToSフラグを尊重するかもしれないし、尊重しないかもしれません、そしてここが主な関心事です(あなたはノード間の機器が何をすることができるか知らない)。
txtechhelp

お返事をいただきありがとうございます。私はあなたのおかげでほとんどすべてのことを理解しました!
user3288408
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.