优化连接效率
This commit is contained in:
68
README.md
68
README.md
@@ -1,49 +1,34 @@
|
||||
## todo
|
||||
|
||||
排查启动速度很慢的问题
|
||||
鉴权时判断授权的协议
|
||||
|
||||
可配置 processUserConn 超时等待时间
|
||||
建立通道时,发送的 dst 和 tag 等信息,可以用字节表示而非 string,提高效率
|
||||
|
||||
建立数据通道失败后,根据用户所选协议返回对应失败响应
|
||||
|
||||
测试跳过认证时的最大 qps(需要注意单机连接数上限,会导致连接失败)
|
||||
|
||||
简化数据传递时的 tag 文本量(找一个无重复 hash 的办法),并且在控制通道直接传输目标地址,客户端可以同时开始数据通道和目标地址的连接建立
|
||||
|
||||
读取 conn 时加上超时机制
|
||||
|
||||
代理节点超时控制
|
||||
|
||||
网关根据代理节点对目标服务连接的反馈,决定向用户返回的 socks 响应
|
||||
|
||||
数据通道池化
|
||||
|
||||
协程池化
|
||||
|
||||
可配配置环境变量
|
||||
|
||||
- 退出等待时间
|
||||
- 数据通道连接超时等待时间
|
||||
- 目标地址连接超时等待时间
|
||||
|
||||
### 长期
|
||||
|
||||
配置退出等待时间
|
||||
协程池化
|
||||
|
||||
需要测试,考虑是否切换到 gnet
|
||||
|
||||
实现一个 socks context 以在子组件中获取 socks 相关信息
|
||||
|
||||
代理端口支持混合端口转发
|
||||
|
||||
数据通道支持 tcp 多路复用(分离逻辑流)
|
||||
|
||||
👆 进阶黑魔法 multipath tcp + 多路复用
|
||||
|
||||
考虑一下连接安全性
|
||||
|
||||
内部接口 rtt 是否还有优化空间(当前30-300ms,根据内容大小增长)
|
||||
|
||||
### 代码清理
|
||||
|
||||
检查 slog 级别:
|
||||
|
||||
ERR: 除非有必要,否则全部 error 都使用 `errors.Wrap()` 包裹(如果下游有返回 err),并附带本层业务信息,return 到上层统一打印
|
||||
|
||||
其他级别日志就地打印,Info 只用来跟踪关键流程
|
||||
|
||||
## 开发相关
|
||||
|
||||
### 环境变量
|
||||
@@ -68,3 +53,34 @@ ERR: 除非有必要,否则全部 error 都使用 `errors.Wrap()` 包裹(如
|
||||
1. 关闭接听端口,防止新连接接入(user, data, ctrl)
|
||||
2. 通知并等待所有正在运行的 conn 处理协程全部关闭(user, data, ctrl)
|
||||
3. 结束所有保存且未使用的 conn 连接(user, ctrl)
|
||||
|
||||
|
||||
### 代码清理
|
||||
|
||||
检查 slog 级别:
|
||||
|
||||
ERR: 除非有必要,否则全部 error 都使用 `errors.Wrap()` 包裹(如果下游有返回 err),并附带本层业务信息,return 到上层统一打印
|
||||
|
||||
其他级别日志就地打印,Info 只用来跟踪关键流程
|
||||
|
||||
## 协议
|
||||
|
||||
### 建立连接
|
||||
|
||||
客户端(控制通道):
|
||||
|
||||
`version(1)` `id_len(1)` `id_buf(n)`
|
||||
|
||||
服务端(控制通道):
|
||||
|
||||
`status(1)`
|
||||
|
||||
### 开启代理
|
||||
|
||||
服务端(控制通道):
|
||||
|
||||
`dst_len(1)` `dst_buf(n)` `tag_len(1)` `tag_buf(n)`
|
||||
|
||||
客户端(数据通道):
|
||||
|
||||
`status(1)` `tag_len(1)` `tag_buf(n)`
|
||||
Reference in New Issue
Block a user