tcp代理实验性零拷贝TCP代理
使用方法:
$ make
$ ./bin/tcp-proxy
例如:
$ ./bin/tcp-proxy 本地主机:8080 本地主机:8000
实现提示:
-
默认启动
nproc
线程,每个线程运行独立的事件循环(libev
) -
每个事件循环接受连接(通过
SO_REUSEPORT
创建的套接字) -
连接接受过程为
malloc-free
(偶尔可能重新分配) -
使用
splice()
在下游与上游之间通信实现高效传输
进一步可能的改进/调整:
-
套接字读取中的退避策略
-
pthread CPU/内存亲和性优化
-
为IRQ和接口队列处理添加亲和性
-
增加对SO_LINGER的支持,以减少与上游断开后的
TIME_WAIT
状态的套接字数量
暂无评论