软路由(Software Router)是指通过软件实现的路由功能,通常运行在通用硬件上,如个人电脑或专用设备
以下指标用来衡量软路由的性能:
- CPU 性能:软路由的处理能力通常取决于其 CPU 的性能,尤其是在处理大量数据包时
- NAT 性能:网络地址转换(NAT)是软路由的核心功能之一,NAT 的性能直接影响到网络连接的稳定性和速度
在 NAT 性能上,由于缺少 NPU(Network Processing Unit)加速,软路由的性能通常不如硬件路由器,这里不展开讨论 NPU 部分
软路由常见于科学上网,科学上网会涉及到各种加密协议,加密解密算法性能是衡量一款软路由性能的重要指标
openssl
支持测量各种加密算法的性能,如下:
openssl speed -evp RC4-HMAC-MD5
列出所有加密算法:
openssl list -cipher-algorithms
基于 Arm 架构的 Rockchip RK3328 CPU 跑分情况:
$ openssl speed -evp chacha20-poly1305
Doing ChaCha20-Poly1305 for 3s on 16 size blocks: 6607614 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 64 size blocks: 3764027 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 256 size blocks: 1879871 ChaCha20-Poly1305's in 2.99s
Doing ChaCha20-Poly1305 for 3s on 1024 size blocks: 589911 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 8192 size blocks: 78763 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 16384 size blocks: 39494 ChaCha20-Poly1305's in 2.99s
version: 3.0.13
built on: Sun Mar 3 09:47:43 2024 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DOPENSSL_TLS_SECURITY_LEVEL=2 -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/reproducible-path/openssl-3.0.13=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
CPUINFO: OPENSSL_armcap=0xbd
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
ChaCha20-Poly1305 35240.61k 80299.24k 160952.17k 201356.29k 215075.50k 216411.27k
基于 X86 架构的 Intel Celeron J3455 跑分:
$ openssl speed -evp chacha20-poly1305
Doing ChaCha20-Poly1305 for 3s on 16 size blocks: 21381033 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 64 size blocks: 11434976 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 256 size blocks: 4655210 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 1024 size blocks: 1257140 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 8192 size blocks: 162470 ChaCha20-Poly1305's in 3.00s
Doing ChaCha20-Poly1305 for 3s on 16384 size blocks: 81714 ChaCha20-Poly1305's in 2.99s
version: 3.0.9
built on: Tue May 30 16:12:36 2023 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DOPENSSL_TLS_SECURITY_LEVEL=2 -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-HFEiK2/openssl-3.0.9=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
CPUINFO: OPENSSL_ia32cap=0x4ff8e3bfefebffff:0x2294e283
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes
ChaCha20-Poly1305 114032.18k 243946.15k 397244.59k 429103.79k 443651.41k 447759.93k