文件名称:tcp-proxy:实验性零拷贝 tcp 代理
文件大小:140KB
文件格式:ZIP
更新时间:2024-07-25 02:43:17
C
tcp代理 实验性零拷贝 tcp 代理 用法: $ make $ ./bin/tcp-proxy 例如:$ ./bin/tcp-proxy 本地主机:8080 本地主机:8000 一些实现提示: 默认启动nproc线程,每个线程运行独立的事件循环 (libev) 每个事件循环接受连接(使用 SO_REUSEPORT 创建的套接字) 接受连接是 malloc-free(偶尔重新分配是可能的) 通过 splice() 在下游 <-> 上游之间进行通信 进一步可能的改进/调整: 从套接字读取时的退避策略 pthread CPU/内存亲和性 IRQ 和接口的队列处理亲和性 添加对 SO_LINGER 的支持,这有助于减少与上游断开连接后处于 TAIM_WAIT 状态的套接字数量
【文件预览】:
tcp-proxy-master
----.gitignore(9B)
----Makefile(615B)
----src()
--------stack.h(1KB)
--------common.h(1KB)
--------server_ctx.c(18KB)
--------net.h(522B)
--------config.h(2KB)
--------net.c(4KB)
--------server_ctx.h(2KB)
--------tcp-proxy.c(3KB)
----README.md(812B)
----libev()
--------ev_kqueue.c(7KB)
--------ev.c(120KB)
--------ev.pod(213KB)
--------ev_poll.c(4KB)
--------ev_select.c(9KB)
--------ev_port.c(6KB)
--------ev_wrap.h(5KB)
--------ev.h(28KB)
--------ev_vars.h(6KB)
--------ev_epoll.c(10KB)