V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
plumk
V2EX  ›  分享创造

PIP 一个高性能低内存使用的用户空间的 TCP/IP 网络栈

  •  
  •   plumk · 2023-03-28 10:13:30 +08:00 · 1420 次点击
    这是一个创建于 611 天前的主题,其中的信息可能已经有所发展或是发生改变。

    pip

    一个内存使用极少的轻量级的单线程 TCP/IP 协议栈, 当前支持 IP, IPv6, ICMP, TCP, UDP.

    当前只在 macOS, iOS 平台测试通过

    注意

    1. MTU 默认为 9000
    2. TCP 每个数据包超时时间为 2 秒, 重传 2 次
    3. 自身 window 固定为 65535, 对方 window 兼容 window scaling
    4. 没有做线程安全处理, 多线程使用请注意处理线程冲突

    性能测试

    测试平台

    • OS: macOS 12.6
    • CPU: Intel(R) Core(TM) i5-8500B CPU @ 3.00GHz

    测试流程

    1. 开启 iperf3 服务端
    2. 建立 utun network interface, 设置 MTU 为 9000
    3. 路由 1.1.1.1 到该 utun interface
    4. 开启 iperf3 客户端并指定地址为 1.1.1.1
    5. 重定向 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 有点困难. 路漫漫其修远兮, 吾将上下而求索.

    第 1 条附言  ·  2023-03-28 18:01:27 +08:00

    更新了checksum算法,下载速度提升了将近3倍

    ~ iperf3 -c 1.1.1.1 -R
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-10.01  sec  5.27 GBytes  4.52 Gbits/sec                  sender
    [  5]   0.00-10.00  sec  5.25 GBytes  4.51 Gbits/sec                  receiver
    
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1045 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:48 · PVG 05:48 · LAX 13:48 · JFK 16:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.