pip
一个内存使用极少的轻量级的单线程 TCP/IP 协议栈, 当前支持 IP, IPv6, ICMP, TCP, UDP.
当前只在 macOS, iOS 平台测试通过
注意
- MTU 默认为 9000
- TCP 每个数据包超时时间为 2 秒, 重传 2 次
- 自身 window 固定为 65535, 对方 window 兼容 window scaling
- 没有做线程安全处理, 多线程使用请注意处理线程冲突
性能测试
测试平台
- OS: macOS 12.6
- CPU: Intel(R) Core(TM) i5-8500B CPU @ 3.00GHz
测试流程
- 开启 iperf3 服务端
- 建立 utun network interface, 设置 MTU 为 9000
- 路由 1.1.1.1 到该 utun interface
- 开启 iperf3 客户端并指定地址为 1.1.1.1
- 重定向 1.1.1.1 到 127.0.0.1 以连接到 iperf3 服务端
数据流向示意
本机 iperf3 客户端<->pip<->tcp socket<->本机 iperf3 服务端
上传测试
~ iperf3 -c 1.1.1.1
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 7.04 GBytes 6.05 Gbits/sec sender
[ 5] 0.00-10.00 sec 7.04 GBytes 6.05 Gbits/sec receiver
下载测试
~ iperf3 -c 1.1.1.1 -R
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 2.20 GBytes 1.88 Gbits/sec sender
[ 5] 0.00-10.00 sec 2.16 GBytes 1.86 Gbits/sec receiver
地址: https://github.com/zx1262111739/pip
不要在意名字与 Python 的 pip 重合, 由于我自己取的网名为 plumk 取首字母 p 加上 ip 得出的这个名字,所以我也不准备改.
我的 C++水平属于边写边学的那种, 对于移植 windows 和 linux 有点困难. 路漫漫其修远兮, 吾将上下而求索.