C で記述された p2p アプリに TCP の代わりにSCTPを使用することを検討しています。また、SCTP の速度は TCP の速度と比べてどうですか?
編集: SCTP は UDP 経由でトンネリングできることがわかりました。唯一の問題は、SCTP がトンネル化されていない SCTP と相互運用できないことです。
C で記述された p2p アプリに TCP の代わりにSCTPを使用することを検討しています。また、SCTP の速度は TCP の速度と比べてどうですか?
編集: SCTP は UDP 経由でトンネリングできることがわかりました。唯一の問題は、SCTP がトンネル化されていない SCTP と相互運用できないことです。
すべてのターゲット システムに SCTP が事前にインストールされているかどうか、またはアプリケーションに SCTP 自体を含める必要があるかどうかを検討しましたか? 私の経験では、すべてのシステムに SCTP がインストールされているとは思っていません。
アプリケーション自体に SCTP を含めると、カーネルの外に渡されるメッセージの数が 2 倍以上になり、事前にインストールされた TCP を使用する場合と比べてパフォーマンスに影響します。
SCTP にどのような利点が必要かを考えたことがありますか? 耐障害性について言及しましたが、これが SCTP で機能するには、アプリケーションに複数のイーサネット ポートと IP アドレスが必要です。これはあなたのアプリにある可能性がありますか?
私は SCTP が大好きですが (!)、SCTP が必要であると確信していない限り、またはアプリがデプロイされているホストを制御していない限り、TCP に固執することを真剣に検討します。
よろしく
ローカル エリア ネットワーク用の場合は、必ず選択してください。
ただし、オープンなインターネットで使用する場合、消費者向けのファイアウォールの多くは、認識されていない IP プロトコルの通過を許可するほど柔軟ではないことに注意してください。
それはどのように役立ちますか?
あなたは P2P であるため、すべてのピアは他のすべてのピアに対して少なくとも 1 つのソケットを開く必要があります。
ソケットが開いている場合は、それに対して必要なすべてのことを実行できます。ファイルごとに 1 つのソケットのアプローチを採用し、複数のファイルが 2 つの特定のピア間で同時に転送されている場合、SCTP はファイルごとに 1 つのソケットを節約します。ただし、どのようなサイズの通常の P2P ネットワークでも、複数のファイルが 2 つのピア間で同時に転送されることはほとんどありません。
ソケットを 1 つだけ用意して、独自の小さなプロトコルを用意します。ヘッダー付きのパケットを送信します。ヘッダーは、コマンドやファイルの一部などのコンテンツ タイプを示します。
もちろん、そのために多少のオーバーヘッドが発生しますが、コマンド用に 1 つのソケットとファイルごとに 1 つのソケットがある場合は、より効率的です。ピアごとに 1 つのソケットを節約すること (一度に 1 つのダウンロードを想定) は、SCTP を使用する時間/手間/複雑さに見合う価値がありますか?