-
Notifications
You must be signed in to change notification settings - Fork 209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TCPの既定の待ち受けポート番号をエフェメラルポートから変更する #631
Comments
Issue作成ありがとうございます! VOICEVOXエンジンを利用する他のプラグインやソフトウェアのために、今からポートを変更するというのは破壊的変更に近いため(また、エンジンを利用する方々への周知を行う必要があるため)、なかなかにハードルの高いことだと考えます。 よって、今後ポート番号の変更を行うことは現実的ではない・必須ではないかなと思いました...! ちなみに、私は優先度及び問題としての大きさは低い・小さいと感じましたが、 @leobtype さんとしてはどのように感じているでしょうか...?(単に私の知識不足で、大きな問題である可能性もあるので、少し教えていただきたいです...!:pray:) |
こちらに転記します。 VOICEVOX/voicevox#1252 (comment)
そのため、個人的には50021番ポートからは変更して欲しいと思いますが、前のコメントの通り破壊的です。具体的に困ったことは、エンジンを利用するアプリケーションとのあいだにプロクシサーバーを立てようとしたところ、予約済みで.NETからは50021番ポートを扱えなかったことです。 どの番号を使うかについて、VOICEVOXエンジンのようにポート番号を固定する必要があるローカルホストサービスとしては、理想的には登録済みポート番号の範囲 (1024〜49151) からIANAに申請して利用することです。 なお、エフェメラルポートは、49152〜65535ではなく1024〜65535から利用中でも予約済みでもないポートを選択することになっているため、1024〜49151の範囲を利用しても衝突を避けられるわけではないと思います。 次善策として、ポート番号を引数ではなく設定ファイルでも指定できるようにしておく、VOICEVOXがIANA未登録であり50021番ポート固定ではないことを、エンジンを利用するアプリケーション開発者向けに明記しておくのが良いのかなと思います。 |
2024年3月での前提状況(最終議論から約10ヶ月経過したため、前提状況の再整理) VOICEVOX (エディタ) 側で自動ポートスキャンが実装されており、エディタレベルではポート競合問題が解決しました。 対応策へのコメント
👍
2024年3月段階ではエディタ側での問題解決により、ENGINE 直接ユーザーのみが考慮対象になりました。ENGINE 直接ユーザーであれば引数指定のみで十分と考えます。
IANA非登録であることは半ば自明であり、READMEにポート引数があることからポート可変は明記済みと考えます。 今後の方向性issue タイトルである「TCPの既定の待ち受けポート番号をエフェメラルポートから変更する」は実装無しとの結論が得られたと認識しています。 @y-chan @Hiroshiba |
@tarepan 整理ありがとうございます! デフォルトのポート番号の変更はもう結構現実的ではなさそうに思っています。 確かに少なくとも現状ではportが固定ではないことがしっかり案内されているように思うので、追加で何かしないといけないことはないかもです。 |
内容
本ソフトウェアのTCPの待ち受けポート番号は既定値で50021番で、これは多くのOSでエフェメラルポートとして扱われます。エフェメラルポートはTCPのクライアントソフトウェアがサーバーとの通信のために空いているポート番号を一時的に利用する資源で、サーバーソフトウェアが待ち受けをするための専有的な利用には向きません。
エフェメラルポートをTCPの待ち受けポートとして利用することで、例えば次のようなケースで問題が発生する可能性があります。
あるTCPクライアントがバックグラウンドで通信(たとえばゲームソフトをダウンロード)していて、そのTCPクライアントが50021番を「たまたま」使っています。その間に本ソフトウェアを起動して利用しようとした場合に50021番は競合するため利用できません。そして利用者はゲームソフトのダウンロードが終わったあとは「なぜか」また利用できるようになったと感じます。
本ソフトウェアでサポートするOSでエフェメラルポートとして扱われていないレンジのポート番号をTCPの待ち受けポートに利用することで上のような問題の発生を回避できます。
Pros 良くなる点
本ソフトウェアを起動できなかったり利用できなくなるケースが低減される。
Cons 悪くなる点
本ソフトウェアにTCP接続するクライアント側の設定変更も必要になる可能性がある。
実現方法
本ソフトウェアでサポートするOSでエフェメラルポートとして扱われていないレンジからポート番号を選択して既定値に設定する。また本ソフトウェアとよく併用されるソフトウェアと待ち受けポートが競合しないように注意する。
VOICEVOXのバージョン
0.14
OSの種類/ディストリ/バージョン
その他
私自身は利用者ではございませんが本ソフトウェアと連携するソフトウェアの設定をしている配信を動画配信サイトで視聴している中で気づいたので上げさせていただきました。
The text was updated successfully, but these errors were encountered: