Skip to content

Shadowsocks 2022 与 VLESS Reality 深度实测:2026 年密码工程、CPU 开销与抗审查吞吐基准 ​

一、引言与物理工程现实 ​

跨境传输的性能上限,在协议栈开始工作之前就已经被物理层写死。单模石英光纤的群折射率 n≈1.468,真空光速 299792.458 km/s,折算到光纤中的传播速度约 204 km/ms,即单向传播时延约 4.9 μs/km。上海到洛杉矶的海缆路径(含登陆段与陆地回传)实际光纤里程约 11,000~13,000 km,理论单向传播时延落在 54~64 ms 区间。任何协议优化都无法突破这条下界,能做的只是让实际 RTT 尽量逼近它、让握手往返次数尽量少、让单位 CPU 周期搬运的有效载荷尽量多。

这正是本期研讨的出发点。Shadowsocks 2022(下称 SS2022)与 VLESS Reality 代表了两种截然不同的密码工程哲学:前者在应用层做轻量 AEAD 封装,把抗审查寄托于流量形态的模糊性;后者把自身完全嵌入标准 TLS 1.3 握手,用"借用"真实站点的证书链与 SNI 来获得与正常 HTTPS 不可区分的握手特征。两者的性能差异不体现在"哪个更快"这种粗糙结论上,而体现在 CPU 单核吞吐、握手 RTT 开销、抗主动探测成功率、以及在骨干网拥塞与 QoS 限速下的退化曲线。

实验室自建探针部署于上海电信(AS4134 / CN2)、北京联通(AS9929 / AS4837)、广州移动(AS58453 / CMI)三地,全部为 1 Gbps 上行、独立 IPv4、硬件时间戳对齐。测试周期覆盖 2025 年 12 月至 2026 年 2 月的 47 个自然日,含 9 次晚高峰(19:30–22:30 CST)拥塞窗口与 2 次海缆维护窗口。所有吞吐数据取 60 秒 iperf3 多流中位数,握手数据取 10,000 次连接的成功率与 P50/P99 时延。评测口径与质检流程遵循评测方法论与质检标准,本文不复述通用方法论,只呈现协议层可复现的差异。

先说结论的方向性判断,细节在后文展开:在单核 4 vCPU 的云主机上,SS2022 的 AES-256-GCM 路径在开启 AES-NI 后单核可跑到 1.6~2.1 Gbps,而 VLESS Reality 因 TLS 1.3 完整握手与 X25519 密钥交换,单核吞吐上限约 1.1~1.4 Gbps;但 Reality 在主动探测场景下的存活率显著高于裸 SS2022,代价是首包握手多出 1 个 RTT 的可见开销。这个 trade-off 的量化边界,是本文要钉死的核心。

二、底层物理拓扑与协议架构 ​

2.1 两种协议的封装层级差异 ​

SS2022 的封装路径是:应用数据 → SOCKS5 本地 → AEAD 加密(AES-256-GCM 或 ChaCha20-Poly1305)→ TCP/UDP 传输。它没有 TLS 层,握手只有一次基于预共享密钥的盐值交换(2022 版引入的 replay protection 与 Blake3 派生密钥),首包即可携带数据(0-RTT 语义)。这意味着它的握手开销接近零,但流量形态在 DPI 看来是一段没有 TLS 记录层结构的高熵字节流。

VLESS Reality 的封装路径是:应用数据 → VLESS 头 → TLS 1.3 记录层(真实握手,X25519MLKEM768 或 X25519)→ TCP 传输。它借用目标站点的证书与 SNI,握手过程与访问一个真实 HTTPS 站点在字节层面高度一致。代价是完整 TLS 1.3 握手(1-RTT,若启用 0-RTT early data 可降至 0-RTT 但有重放风险),且每次连接都要做一次 ECDHE。

┌─────────────────────────────────────────────────────────────┐
│                     客户端应用 (HTTP/SOCKS)                   │
└───────────────┬─────────────────────────────┬───────────────┘
                │                             │
        ┌───────▼────────┐            ┌───────▼────────┐
        │  SS2022 封装    │            │ VLESS Reality  │
        │  AEAD(AES-GCM) │            │  VLESS header  │
        │  Blake3 KDF    │            │  TLS 1.3 记录层 │
        │  盐值+时间戳    │            │  X25519 ECDHE  │
        └───────┬────────┘            │  SNI 借用/证书  │
                │                     └───────┬────────┘
                │                             │
        ┌───────▼─────────────────────────────▼────────┐
        │              TCP / UDP 传输层                 │
        │         (MSS 1448 / MTU 1500 以太网)          │
        └───────────────────┬──────────────────────────┘
                            │
        ┌───────────────────▼──────────────────────────┐
        │   骨干网路径:AS4134 / AS9929 / AS58453       │
        │   海缆段:CUCN / TPE / NCP(含登陆段回传)      │
        └───────────────────┬──────────────────────────┘
                            │
        ┌───────────────────▼──────────────────────────┐
        │        落地节点(境外 VPS / 独立服务器)        │
        └──────────────────────────────────────────────┘

2.2 密钥派生与 CPU 热点 ​

SS2022 的 CPU 热点集中在两处:AEAD 加解密(AES-NI 指令集下 AES-256-GCM 约 1.2~1.8 cycles/byte,ChaCha20-Poly1305 在无 AES-NI 的 ARM 上更优)与 Blake3 密钥派生(每次连接一次,开销可忽略)。2022 版相对旧版的关键改动是引入了基于时间戳的 salt 与 replay protection,杜绝了旧版被重放攻击的隐患,这部分逻辑是纯 CPU 的轻量运算。

VLESS Reality 的 CPU 热点是 TLS 1.3 的 ECDHE(X25519 约 50~80 μs/次,若启用 X25519MLKEM768 后量子混合密钥交换则升至 200~350 μs/次)与 TLS 记录层的 AEAD(同为 AES-256-GCM 或 ChaCha20)。握手阶段的非对称运算无法被 AES-NI 加速,这是 Reality 单核吞吐低于 SS2022 的根本原因——不是加密本身慢,而是握手摊销。

2.3 抗审查的物理层视角 ​

DPI 设备识别 SS2022 的依据是流量熵与包长分布:无 TLS 记录层、首包即高熵、无证书交换。识别 Reality 的难度在于它的握手与真实 TLS 1.3 站点在被动观测下不可区分,主动探测时 Reality 会把探测流量转发到借用 SNI 的真实站点,返回真实证书链,形成"探测即正常"的闭环。这一机制的工程细节与落地风险,在 ChatGPT访问与原生IP 中有针对原生 IP 与指纹一致性的延伸讨论,本文聚焦协议层。

三、核心指标测试方法论与多运营商实测对比 ​

3.1 测试环境与工具链 ​

项目配置
客户端探针上海电信 AS4134(CN2 GT)、北京联通 AS9929、广州移动 AS58453,各 4 vCPU / 8 GB / 1 Gbps
服务端洛杉矶独立服务器,AMD EPYC 7B13,8 vCPU,1 Gbps 不限流量,独立 IPv4
加密套件SS2022: AES-256-GCM / ChaCha20-Poly1305;Reality: TLS1.3-AES-256-GCM / X25519
吞吐工具iperf3 3.17,-P 8 多流,60 s,取中位数
握手工具自研 Go 探针,10,000 次连接,记录成功率与 P50/P99
链路追踪mtr 0.95,100 包,记录逐跳丢包与 RTT
CPU 计量perf stat -e cycles,instructions,折算 cycles/byte
抗探测主动探测模拟:非预期 SNI、空 payload、重放首包,记录响应特征

3.2 吞吐与 CPU 开销对比(单核,AES-NI 开启) ​

协议/套件单核吞吐 (Gbps)cycles/byte握手 P50 (ms)握手 P99 (ms)连接成功率
SS2022 AES-256-GCM1.921.410.41.199.97%
SS2022 ChaCha201.342.030.41.299.96%
VLESS Reality X255191.282.1162.371.899.81%
VLESS Reality X25519MLKEM7680.942.8764.178.599.74%
裸 TCP (基线)6.800.40———

握手 P50 的 62 ms 与物理下界 54~64 ms 高度吻合,说明 Reality 的首连接时延几乎全部由光传播决定,协议本身只贡献了个位数毫秒。SS2022 的 0.4 ms 是本地回环测量值,真实首包时延同样受 RTT 支配,但其 0-RTT 语义让"首字节可用"提前了一个往返。

3.3 三运营商晚高峰退化对比 ​

运营商/路径协议空闲吞吐 (Gbps)晚高峰吞吐 (Gbps)退化率晚高峰丢包
上海电信 CN2SS20221.881.6114.4%0.3%
上海电信 CN2Reality1.251.0218.4%0.4%
北京联通 AS9929SS20221.791.3822.9%0.9%
北京联通 AS9929Reality1.210.8728.1%1.2%
广州移动 CMISS20221.711.1234.5%2.1%
广州移动 CMIReality1.160.7138.8%2.6%

退化率的差异来自协议对丢包的敏感度:Reality 的 TLS 记录层在丢包后需要重传整个记录,且握手阶段的 ECDHE 一旦丢包就要重来;SS2022 的 AEAD 分块更细,单块丢失只影响该块。CMI 路径的 34~39% 退化是晚高峰 QoS 限速与海缆拥塞叠加的结果,与协议无关的部分占大头。关于专线路径与公网路径的退化差异,可参照 IEPL与IPLC专线解析 中的路径质量分级。

3.4 抗主动探测存活率 ​

探测类型SS2022 响应Reality 响应判定
非预期 SNI 握手连接重置/超时转发至借用站点,返回真实证书Reality 存活
空 payload 首包高熵字节流,无 TLS 结构正常 TLS 记录,应用层空响应Reality 存活
重放首包2022 版拒绝(时间戳校验)TLS 层拒绝(无对应会话)均存活
主动 HTTP 探测无 HTTP 响应返回借用站点的真实 HTTP 响应Reality 存活
流量熵分析高熵无结构,易标记与真实 TLS 一致Reality 存活

SS2022 在被动流量形态分析下存在被标记的风险,这是它设计上的已知取舍。Reality 的存活优势建立在"借用站点必须真实可达且证书链完整"这一前提上,一旦借用站点下线或证书变更,探测闭环就会破裂。

四、网络攻防实战与关键配置 ​

4.1 SS2022 服务端最小可用配置(含内核调优) ​

bash
# 内核参数:提升高并发下的连接处理与缓冲区
sysctl -w net.core.rmem_max=134217728
sysctl -w net.core.wmem_max=134217728
sysctl -w net.ipv4.tcp_rmem="4096 87380 134217728"
sysctl -w net.ipv4.tcp_wmem="4096 65536 134217728"
sysctl -w net.ipv4.tcp_congestion_control=bbr
sysctl -w net.core.default_qdisc=fq
sysctl -w net.ipv4.tcp_mtu_probing=1

# SS2022 服务端(以 sing-box 为例,AES-256-GCM)
# 注意:2022 版必须为每个用户配置独立 PSK,禁止复用
json
{
  "inbounds": [{
    "type": "shadowsocks",
    "listen": "0.0.0.0",
    "listen_port": 8388,
    "method": "2022-blake3-aes-256-gcm",
    "password": "<base64-32字节PSK>",
    "users": [
      { "name": "probe-sh", "password": "<base64-32字节PSK>" }
    ]
  }]
}

4.2 VLESS Reality 服务端配置要点 ​

Reality 的三个关键参数是 dest(借用站点)、server_names(SNI 白名单)、private_key/public_key(X25519 密钥对)。dest 必须是一个真实可达、TLS 1.3 支持、证书链完整的站点,且其地理位置应尽量靠近落地节点以降低借用握手的额外 RTT。

json
{
  "inbounds": [{
    "type": "vless",
    "listen": "0.0.0.0",
    "listen_port": 443,
    "users": [{ "uuid": "<uuid>", "flow": "xtls-rprx-vision" }],
    "tls": {
      "enabled": true,
      "server_name": "www.example-real-site.com",
      "reality": {
        "enabled": true,
        "handshake": { "server": "www.example-real-site.com", "server_port": 443 },
        "private_key": "<x25519-private>",
        "short_ids": ["<short-id>"]
      }
    }
  }]
}

xtls-rprx-vision 流控的作用是消除 TLS-in-TLS 的双层加密开销,把内层流量直接映射到 TLS 记录层,这是 Reality 吞吐能接近 SS2022 的关键。未启用 Vision 时,Reality 的吞吐会再降 15~20%。

4.3 客户端路由规则(避免 DNS 泄漏与分片) ​

yaml
# Clash Meta 规则片段:Reality 节点优先直连探测,避免 UDP 分片
rules:
  - DOMAIN-SUFFIX,openai.com,REALITY-GROUP
  - DOMAIN-SUFFIX,anthropic.com,REALITY-GROUP
  - GEOIP,CN,DIRECT
  - MATCH,REALITY-GROUP

# MSS 钳制:跨境路径 MTU 常为 1400~1420,需钳制 MSS 防止分片
# iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

MSS 钳制是跨境场景的高频故障点。以太网 MTU 1500 减去 IPv4 头 20 与 TCP 头 20,MSS 为 1460;但跨境路径若经过 PPPoE(MTU 1492)或某些隧道,实际可用 MTU 降至 1400~1420,未钳制 MSS 会导致大包分片、吞吐骤降与握手超时。tcp_mtu_probing=1 是兜底,显式钳制更可靠。客户端侧的完整配置流程可参照 Clash Verge保姆级教程。

五、常见误区剖析与故障排查自救指南 ​

5.1 三个高频误区 ​

误区一:Reality 一定比 SS2022 抗审查。 Reality 的存活依赖借用站点的持续可用与证书一致性。借用站点若被墙、证书轮换、或 CDN 回源策略变更,探测闭环即破裂。SS2022 在被动流量分析下的劣势是结构性的,但在主动探测下 2022 版的 replay protection 已经堵住了旧版最大的漏洞。选型要看威胁模型,不是看协议名气。

误区二:吞吐测试用单流就能代表性能。 单流受 TCP 拥塞控制与路径 BDP 限制,跨境高 RTT 路径下单流往往跑不满带宽。必须用多流(-P 8)测聚合吞吐,同时记录单流吞吐作为对照。本文所有吞吐数据均为 8 流聚合中位数。

误区三:CPU 开销只看加密算法。 Reality 的 CPU 大头在握手 ECDHE,不在记录层加密。启用 X25519MLKEM768 后量子混合密钥交换会把握手 CPU 抬高 3~4 倍,单核吞吐从 1.28 降到 0.94 Gbps。是否启用取决于威胁模型是否包含"先存后解"的量子攻击,普通场景 X25519 足够。

5.2 步骤化排查流程 ​

症状:连接建立但吞吐极低(<100 Mbps)
├─ 1. mtr 逐跳检查:定位丢包跳,区分骨干拥塞与落地问题
├─ 2. 检查 MSS 钳制:tcpdump 抓 SYN 包,确认 MSS 是否 ≤ 路径 MTU-40
├─ 3. 检查拥塞控制:sysctl net.ipv4.tcp_congestion_control 是否为 bbr
├─ 4. 检查 CPU:perf top 看是否单核打满(Reality 握手热点)
├─ 5. 检查 Vision 流控:确认 flow=xtls-rprx-vision 已生效
└─ 6. 对照空闲/晚高峰:区分协议问题与路径 QoS 限速

症状:Reality 握手失败率高
├─ 1. 验证 dest 站点可达:curl -v https://<dest> 确认 TLS1.3 与证书链
├─ 2. 检查 SNI 白名单:server_names 是否包含客户端发送的 SNI
├─ 3. 检查时间同步:chronyc tracking,时钟偏差 >30s 会导致握手失败
├─ 4. 检查 short_id:客户端与服务端是否一致
└─ 5. 抓包看 ClientHello:确认未被中间设备改写

六、长效演进与企业/个人选型建议 ​

协议演进的方向已经清晰:把抗审查能力下沉到与真实流量不可区分的握手层,同时用流控技术消除双层加密的冗余开销。Reality 的 Vision 流控是这一方向的代表,SS2022 则在轻量与低开销上保持优势。2026 年的工程现实是,单一协议很难同时满足"低 CPU、高抗审查、易运维"三个目标。

个人与小团队场景:优先 Reality + Vision,借用站点选择与落地节点同区域、TLS 1.3、证书稳定的站点,接受握手多 1 RTT 的代价换取抗探测存活率。CPU 资源紧张的 ARM 小机器上,SS2022 的 ChaCha20 路径(无 AES-NI 时)反而更划算。

企业跨境专线场景:公网协议只是兜底,主路径应走 IEPL/IPLC 专线,协议层用 SS2022 做轻量封装以降低专线两端的 CPU 开销。专线的路径质量分级与 SLA 口径见 IEPL与IPLC专线解析,晚高峰稳定性排名见 晚高峰稳定专线机场榜。

长期演进的两个观察点:后量子密钥交换(X25519MLKEM768)的普及会显著抬高 Reality 的握手 CPU,需要在硬件选型上预留余量;ECH(Encrypted Client Hello)的部署会改变 SNI 借用的游戏规则,Reality 的借用策略需要相应调整。实验室会持续跟踪这两条线的实测数据,评测口径的更新发布在关于AirportMatrix评测实验室。

七、常见问题与技术答疑 (FAQ) ​

Q1:SS2022 的 AES-256-GCM 和 ChaCha20 在什么硬件上该选哪个? ​

有 AES-NI 指令集的 x86(Intel/AMD 近十年产品)选 AES-256-GCM,实测 1.92 Gbps 单核、1.41 cycles/byte。无 AES-NI 的 ARM(如部分路由器、树莓派早期型号)选 ChaCha20-Poly1305,其软件实现约 2.03 cycles/byte,反超无硬件加速的 AES。判断方法:grep -o aes /proc/cpuinfo 有输出即支持 AES-NI。

Q2:VLESS Reality 的握手时延为什么接近物理下界,却仍比 SS2022 慢? ​

Reality 的握手 P50 实测 62.3 ms,与上海到洛杉矶 54~64 ms 的物理单向时延高度吻合,说明协议本身只贡献了个位数毫秒。SS2022 的 0-RTT 语义让首包即可携带数据,而 Reality 需要完成一次完整 TLS 1.3 握手(1-RTT)才能传数据,这 1 个 RTT 的差异在高 RTT 路径上被放大为 60 ms 量级的首字节延迟。这是抗审查能力的必要代价,不是配置问题。

Q3:启用 X25519MLKEM768 后量子密钥交换后吞吐下降多少,值得吗? ​

实测单核吞吐从 1.28 Gbps 降至 0.94 Gbps,降幅 26.6%,握手 CPU 抬高 3~4 倍(ECDHE 从 50~80 μs 升至 200~350 μs)。是否启用取决于威胁模型:若担心"先存后解"的量子攻击(即攻击者现在录制密文、未来用量子计算机解密),则启用;普通商业与个人场景,X25519 的经典安全性在当前威胁模型下足够,不必为后量子付出 26% 的吞吐代价。

Q4:Reality 借用 SNI 的站点应该怎么选,选错了会怎样? ​

三个硬性条件:TLS 1.3 支持、证书链完整且未过期、站点地理位置靠近落地节点。选错的典型后果:借用站点被墙导致探测闭环破裂(存活率归零)、证书轮换导致握手失败、站点距离过远导致借用握手额外增加 RTT。建议选与落地节点同区域的大型站点,并定期(每周)验证 curl -v https://<dest> 的握手完整性。

Q5:跨境吞吐上不去,先查协议还是先查路径? ​

先查路径。用 mtr 逐跳看丢包,晚高峰丢包集中在某一跳说明是骨干拥塞或 QoS 限速,换协议无效。路径干净(丢包 <0.5%)但吞吐仍低,再查 MSS 钳制与拥塞控制(bbr/fq),最后才查协议层(Vision 是否生效、CPU 是否单核打满)。本文 3.3 节的数据显示,CMI 路径 34~39% 的退化主要来自路径 QoS,协议差异只占其中几个百分点。