Mar 29

CPU 概况:

PHICOMM N1: Amlogic S905,ARM Cortex-A53,64位 四核 2GHz(实际运行在 1.5GHz)

fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid

Raspiberry 3B: BCM2837, ARM Cortex-A53, 64 位 四核 1.2GHz

half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32

Asus RT-AC68P:BCM4709A0, ARMCortex-A9, 双核 1GHz

swp half thumb fastmult edsp

测试方法,运行 shadowsocks-libev 自带 script/iperf.sh 500M chacha20-ietf-poly1305/aes-128-gcm。

测试结果:(更新:38e83d6

PHICOMM N1:

chacha20-ietf-poly1305 | 470 Mbits/sec;aes-128-gcm | 144Mbits/sec

Raspiberry 3B:

chacha20-ietf-poly1305 | 240 Mbits/sec;aes-128-gcm | 85Mbits/sec

Asus RT-AC68P:

chacha20-ietf-poly1305 | 140 Mbits/sec;aes-128-gcm | 70Mbits/sec

:twisted: :twisted: :twisted:

新增 go-shadowsocks2 数据:

Asus RT-AC68P:

chacha20-ietf-poly1305 | 78 Mbits/sec;aes-128-gcm | 35Mbits/sec

PHICOMM N1:

chacha20-ietf-poly1305 | 274 Mbits/sec;aes-128-gcm | 750Mbits/sec

发现没, N1 的 aes-128-gcm 数据很夸张?扩展阅读:

AES GCM really use of AES-NI extension on supported machine?
Use libsodium for `aes-256-gcm` when available
AES-128/192-GCM has no AES-NI support?
AES is much slower than OpenSSL with AESNI enabled


Dec 30

先配置下选项,我这里以 PolarSSL 为例:
./configure --prefix=/opt --with-crypto-library=polarssl --with-polarssl=/mmc/lib --with-polarssl-include=/mmc/include

为了解决编译时出现的 epoll 相关错误(应为 uClibc 版本低的原因),需要:
sed -i "s/epoll_create1/epoll_create/g" ./libev/ev_epoll.c

使用 ldtools 的话,可以在编译二进制文件时指定 -all-static:
sed -i "s/LDFLAGS = /LDFLAGS = -all-static/g" ./src/Makefile

然后就可以:

make
strip ./src/ss-*
make install

May 10

其实就是注意 -ldl 放的位置,之前放在 LDFLAGS 最后老是提示 -lcrypto 错误(这样放,在路由器上编译好像没事~~ :evil: ):

make clean

LIBS="-ldl" LDFLAGS="-Wl,-static -static -static-libgcc" ./configure --host=arm-brcm-linux-uclibcgnueabi CC=arm-brcm-linux-uclibcgnueabi-gcc --with-openssl=/home/punk/arm_apps/libs/openssl

make -j`nproc`


Oct 21

下载源码: https://github.com/madeye/shadowsocks-libev

直接编译会出错:

/tmp/cciqCfzf.s: Assembler messages:
/tmp/cciqCfzf.s:2903: Error: opcode not supported on this processor: mips1 (mips1) `sync'

修改 \shadowsocks-libev-master\libev 下的 ev.c :

找到:

#define ECB_MEMORY_FENCE         __asm__ __volatile__ ("sync"     : : : "memory")

改为:

#define ECB_MEMORY_FENCE         __asm__ __volatile__ (".set mips2; sync; .set mips0" ::: "memory")

有两处,都改吧。(参考:http://permalink.gmane.org/gmane.comp.lib.ev/2182)

再编译就可以通过了:

Shadowsocks.1.4.0.Tomato.gif