2つのインスタンス間で並行して実行される多数(数百)の同時ネットワーク操作を持つアプリケーションを作成しています。接続の平均存続期間は非常に短いため(多くても数秒)、多くのTCP接続を使用して毎回ハンドシェイクを実行する(特にTLSハンドシェイクの場合)オーバーヘッドが大きすぎると思いました。
私は、多重化を実装するいくつかのプロトコルとライブラリを調べ始めました(この質問への回答で述べたように、主にApache Qupid、RabbitMQなどのAMQP実装)。ただし、それらはすべてTCP上で実行されているように見えるため、オーバーヘッドが発生し、あまり意味がありません(この投稿では、問題を十分に説明し、TCP多重化は愚かであるという結論に達しました)。また、それらはすべてかなり太っていると感じます、私は小さくて軽いものが好きです(ZeroMQ残念ながら、多重化afaikは実装されていません)。それで、UDPを使用することが選択肢になるかどうかを考えました。もちろん、リカバリやACKなどを適切に実装する必要がありますが、接続を介した複数のストリームに関する知識があれば、単にTCPを使用するよりもはるかに効率的です。
上記の私の推論は正しいと思いますか、それとも私は何か重要なことを見逃しましたか?UDPを介した多重化を実装する優れたC/C ++ライブラリはありますか?