以前持っていた EPIA-ME6000 が不幸なことに再起不能になってしまった。直ぐにEPIA-EN12000EGを入手してたのだが、当時のLinuxのSATA_VIAドライバは不安定だったので、放ったらかしにしていた。
症状として、立ち上げ直後は問題ないが、それからしばらくするとディスク関連でエラーを吐いてフリーズしてしまい、長時間運用ができない、、、何じゃこれって感じ。
最近(etch/lenny ともに最新版)試したところ sata_via は非常に安定している気がする。
VIA C7 Esther には、ハードウェア処理のAES暗号化、SHA関数、乱数生成といった目玉な機能が実装されている。
なんで、Linux で使いましょう。。。。
参考 VIA PadLock support for Linux
ハードウェア乱数生成
Debian etch/lenny の Linux 2.6.18/2.6.24? ともに十分なサポートがあり、rng-tools を使うと、/dev/random からの乱数生成の帯域が太くなるらしい。
apt でインストール
# apt-get install rng-tools
設定を行い
/etc/default/rng-tools
...
RNGDOPTIONS="--hrng=via"
...
/etc/modules
via_rng
rngd を立ち上げ、動作確認をする。
# /etc/init.d/rng-tools stop
# dd if=/dev/random of=/dev/null bs=512 count=1000 & pid=$!
# sleep 10 ; kill -USR1 $pid ; sleep 1 ; kill $pid
0+0 records in
0+0 records out
0 bytes (0 B) copied, 10.0067 seconds, 0.0 kB/s
# /etc/init.d/rng-tools start
# dd if=/dev/random of=/dev/null bs=512 count=1000
0+1000 records in
0+1000 records out
96169 bytes (96 kB) copied, 1.04326 seconds, 92.2 kB/s
/dev/random に十分なエントロピーが供給されているので、ブロックされることは殆ど無くなる。
VIA Padlock for Linux Crypto API
VIA Padlock は Linux 2.6.19 からフルサポートされる。素のDebian etch のままだと 2.4.18 止まりなのだが、最近 etch-proposed-updates にバージョンに etchnhalf が含まれる linux-image が提供され、こいつが最新カーネルバージョンに追随してるっぽい。なので、etch でも 2.6.24 が使えるのでこいつを使う。
# apt-get install linux-image-2.6-686-etchnhalf
# reboot
...
# uname -r
2.6.24-etchnhalf.1-686
VIA Padlock のモジュールを読み込むように設定
/etc/modules
padlock_aes
padlock_sha
リブートして
# grep driver.*padlock /proc/crypto
driver : sha256-padlock
driver : sha1-padlock
driver : cbc-aes-padlock
driver : ecb-aes-padlock
driver : aes-padlock
カーネルで使える暗号化処理 AES/SHA が高速化するらしい。IPSec 、dm-crypt、とかが、、、
# dd if=/dev/zero of=/dev/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.0236812 seconds, 221 MB/s
...
# modprobe padlock_aes
# cryptsetup create -c aes-cbc-essiv:sha256 -d /dev/random ram1 /dev/ram1
# dd if=/dev/zero of=/dev/mapper/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.142272 seconds, 36.9 MB/s
# cryptsetup remove ram1
# rmmod padlock_aes
...
# modprobe aes_i586
# cryptsetup create -c aes-cbc-essiv:sha256 -d /dev/random ram1 /dev/ram1
# dd if=/dev/zero of=/dev/mapper/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.902938 seconds, 5.8 MB/s
# cryptsetup remove ram1
# rmmod aes_i586
VIA Padlock を使った方が 6倍くらい速くなるらしい。。。
これでユーザランドで高速化されるかと言うと、Linux Crypto API は、userland にはインタフェースを持っていない。。。パッチは2種類(CryptoDev for Linux,OCF-Linux)あるらしいが、いまだに議論があるらしく、マージされてない。
OpenBSD/FreeBSD だと OpenSSLが CryptoDev を使うようになってるので、何もせずに高速化されるらしい。。。いいなぁ。
VIA Padlock for OpenSSL
Debian etch/lenny ともに、VIA Padlock の engine が有効にして構築されていなので、自前で用意する必要がある。どうも共有ライブラリの形でプラグイン化できないのが駄目らしい。
VIA PadLock support for Linux 内の以下のパッチを当て、パッケージを再構築。
- openssl098-padlock-shared-move.diff
- openssl098-padlock-shared-makefiles.diff
インストール後、/usr/lib/ssl/engines/libpadlock.so がインストールされる。
# openssl speed -evp aes256
Doing aes-256-cbc for 3s on 16 size blocks: 1847840 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 575493 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 154125 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 39230 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 4929 aes-256-cbc's in 3.00s
...
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 9855.15k 12277.18k 13152.00k 13390.51k 13459.46k
# openssl speed -evp aes256 -engine padlock
engine "padlock" set.
Doing aes-256-cbc for 3s on 16 size blocks: 10478263 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 8095021 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 256 size blocks: 4480017 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 1600314 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 228568 aes-256-cbc's in 3.00s
...
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-256-cbc 55884.07k 173271.35k 382294.78k 546240.51k 624143.02k
via_rng/padlock_aes の効果で、実に約46倍速くなるらしい。。。はや。
OpenSSL を使う奴のほとんどが簡単なパッチを当てる必要があるらしい。そのうち改善されていくのかなぁ。
OpenSSH にパッチを当てて VIA Padlock を有効にした場合、
... ssh/sshd ともにソフトウェアバージョンを利用 ...
# dd if=/dev/zero count=50 bs=1M | ssh -c aes256-cbc localhost "cat >/dev/null"
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 11.8916 seconds, 4.4 MB/s
... ssh/sshd ともに padlock engine を利用 ...
# dd if=/dev/zero count=50 bs=1M | ssh -c aes256-cbc localhost "cat >/dev/null"
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 7.88281 seconds, 6.7 MB/s
約 50 % の高速化かぁ。。。
さて EPIA-EN12000EG をどう活用しようかなぁ。
0 件のコメント:
コメントを投稿