应用介绍
服务器在新加坡,用户在国内,链路动不动丢 10% 到 30% 的包,RTT 七八十毫秒。标准 TCP 一见丢包就缩窗口,带宽明明有,速度却掉到谷底;想换更激进的拥塞算法,又得让每个客户端都跟着改。Skyline Speeder 只动发送端:装在服务器上,客户端保持原生 TCP,什么都不用装,什么都不用配。
它用 eBPF 实现了一个拥塞控制算法,思路是按测量定速率,而不是按丢包定速率:每一轮测出投递速率和基础 RTT,直接把窗口设成带宽乘以 RTT,单纯丢包不会让它收缩;再按流自己测到的丢包率反向放大发送量,用 fq 做匀速发包。为了不把真拥塞的链路压垮,它还设了护栏,只把排队延迟升高和 ECN 标记当成真正的拥塞信号。作者在新加坡到广东的真实链路上和 bbr、tcp-brutal 做了对比:4 路并发下载中位数 117 Mbps,bbr 是 77 Mbps,游戏流量的卡顿次数也少了六成多。需要 Linux 6.12 LTS 或更新的内核。
单边部署:只在发送数据的服务器上安装,客户端不用任何软件、补丁或配置。
测量驱动的窗口:每个 ACK 都按带宽乘基础 RTT 设窗口,包括丢包恢复阶段,丢包本身不会让窗口缩小。
丢包补偿:按流自己测到的丢包率放大窗口和速率,有上限,专治随机丢包。
拥塞护栏:排队延迟超阈值或收到 ECN 标记时才降档,避免在真正拥堵的瓶颈上火上浇油。
RTO 上限与首包冗余:可限制每个连接的重传超时,并对短响应的首批数据做冗余发送,减少等恢复的时间。
Rust 控制面:skyline-speederd 守护进程在线下发系数,命令行工具 ssctl 查看和调整,BPF 程序加载时由内核校验器检查。
一键安装:一行命令装好最新发行版的预编译包,支持 Debian、Ubuntu、Fedora、RHEL 系和 Alpine。
它用 eBPF 实现了一个拥塞控制算法,思路是按测量定速率,而不是按丢包定速率:每一轮测出投递速率和基础 RTT,直接把窗口设成带宽乘以 RTT,单纯丢包不会让它收缩;再按流自己测到的丢包率反向放大发送量,用 fq 做匀速发包。为了不把真拥塞的链路压垮,它还设了护栏,只把排队延迟升高和 ECN 标记当成真正的拥塞信号。作者在新加坡到广东的真实链路上和 bbr、tcp-brutal 做了对比:4 路并发下载中位数 117 Mbps,bbr 是 77 Mbps,游戏流量的卡顿次数也少了六成多。需要 Linux 6.12 LTS 或更新的内核。
软件功能
单边部署:只在发送数据的服务器上安装,客户端不用任何软件、补丁或配置。
测量驱动的窗口:每个 ACK 都按带宽乘基础 RTT 设窗口,包括丢包恢复阶段,丢包本身不会让窗口缩小。
丢包补偿:按流自己测到的丢包率放大窗口和速率,有上限,专治随机丢包。
拥塞护栏:排队延迟超阈值或收到 ECN 标记时才降档,避免在真正拥堵的瓶颈上火上浇油。
RTO 上限与首包冗余:可限制每个连接的重传超时,并对短响应的首批数据做冗余发送,减少等恢复的时间。
Rust 控制面:skyline-speederd 守护进程在线下发系数,命令行工具 ssctl 查看和调整,BPF 程序加载时由内核校验器检查。
一键安装:一行命令装好最新发行版的预编译包,支持 Debian、Ubuntu、Fedora、RHEL 系和 Alpine。

