TCP事前接続リレー (TCP-preconnection-relay)
概要
TCP-preconnection-relayは、高性能なTCP/UDP転送(リレー)を実現する軽量ツールです。ゼロコピー転送によりデータ転送のオーバーヘッドを抑え、TCPでは「事前接続」によるコネクションプールを維持しておくことで、クライアントと転送先(中継ノード間)の握手遅延をほぼ排除します。遠距離(例:日本→米国)や内網の長距離転送で特に効果を発揮し、HTTPなどのレイテンシ低減に寄与します。接続の回収ロジックも備えており、メモリや帯域の過剰消費を抑える設計です。
リポジトリの統計情報
- スター数: 10
- フォーク数: 3
- ウォッチャー数: 10
- コミット数: 18
- ファイル数: 4
- メインの言語: C
主な特徴
- ゼロコピー転送による高効率なデータ中継(CPU負荷とメモリコピーを低減)
- TCPの事前接続(コネクションプール)で握手遅延を実質的に解消
- UDPも良好にサポート、汎用的なプロトコル転送に対応
- 接続回収機構を実装し、長期運用時のメモリ/リソース管理を強化
技術的なポイント
本プロジェクトはCで実装された軽量リレーで、性能重視の設計が随所に見られます。まず「ゼロコピー転送」を謳っており、ユーザ空間でのバッファコピーを極力排しOSレベルの効率的なデータ移送経路を利用することで、スループットとCPU効率を向上させています(典型的にはLinuxのゼロコピー機構を活用する実装が想定されます)。次にTCPに関する独自の工夫として「事前接続(preconnection)」アプローチを採用しています。これは転送元と転送先の中継ノード間であらかじめ一定数のTCP接続を確立してプールしておき、実際のユーザ接続到着時にはその既存接続を素早く割り当てることで、新たな3ウェイハンドシェイクによる遅延を回避する仕組みです。結果として、遠距離回線や高遅延環境でのHTTPやその他TCPベース通信の応答時間が改善されます。重要な点として、単なるコネクション再利用(multiplexing)とは異なり、事前接続方式は個別接続の独立性を保ちつつ遅延を削減するため、接続共有に伴う副作用(セッション混在や状態管理の複雑化)を回避できます。さらに、長時間の接続維持によるメモリや帯域の枯渇を防ぐために接続回収・ガベージコレクション相当の管理ロジックを実装しており、運用時の安定性やQoS(品質)への影響を最小限に抑えます。インストールは提供されるinstall.shのワンライナーで済み、設定ファイルをコピーして編集するだけで即時利用できる点も導入のハードルを下げています。
プロジェクトの構成
主要なファイルとディレクトリ:
- LICENSE: file
- README.md: file
- install.sh: file
- tcp_pool.c: file
まとめ
遠距離転送やレイテンシ改善を低コストで実現する実用的なC製リレーです。(約50字)
リポジトリ情報:
- 名前: TCP-preconnection-relay
- 説明: 自带预链接的轻量TCP转发,有效消除线路鸡到落地鸡之间的握手延时
- スター数: 10
- 言語: C
- URL: https://github.com/Xeloan/TCP-preconnection-relay
- オーナー: Xeloan
- アバター: https://avatars.githubusercontent.com/u/105624127?v=4
READMEの抜粋:
TCP-preconnection-relay
高性能TCP/UDP转发器,类似于realm,gost那种。采用零拷贝转发,性能基本无瓶颈。UDP性能良好。TCP连接采用了预链接方式,让线路鸡和落地鸡长期维持一个连接池,随时取用。故而消除了握手延时(长距离转发,如日本转发美国,效果尤为明显,理论上也可用于内网转发如Po0),客观数据上表现为http延时减少,同时也没有单纯连接复用的种种副作用。有完善的连接回收机制,避免了qos以及内存大量占用。
インストールと使い方(簡易)
一括インストール:
curl -fsSL https://raw.githubusercontent.com/Xeloan/TCP-preconnection-relay/main/install.sh | bash
設定例(us向け):
cp /etc/tcp_pool/default.conf /etc/tcp_pool/us.conf
# 編集後、サービスを再起動して適用
※ 詳細はリポジトリのREADMEをご確認ください。