上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ハードウェアVPNアクセラレータ(暗号化アクセラレータ)の魔力 ~Buffalo+OpenWrt編 その2

 Cryptdevを有効にしたOpenSSLのパッケージが出来上がったので、速度を測定してみます。


root@OpenWrt:~# openssl speed -evp aes-128-cbc -elapsed -engine cryptodev
engine "cryptodev" set.
You have chosen to measure elapsed time instead of user CPU time.
To get the most accurate results, try to run this
program when this computer is idle.
Doing aes-128-cbc for 3s on 16 size blocks: 21172 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 20754 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 19900 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 17245 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 2048 size blocks: 14738 aes-128-cbc's in 3.00s
OpenSSL 0.9.8i 15 Sep 2008
built on: Thu Sep 24 13:35:49 JST 2009
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr)
compiler: mipsel-linux-uclibc-gcc -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DDSO_DLFCN -DHAVE_DLFCN_H -DHAVE_CRYPTODEV -I/home/kazner/kamikaze_8.09.1/staging_dir/mipsel/usr/include -I/home/kazner/kamikaze_8.09.1/staging_dir/mipsel/include -DOPENSSL_SMALL_FOOTPRINT -DOPENSSL_NO_ERR -DOPENSSL_NO_HW -DTERMIO -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts -fpic -fomit-frame-pointer -Wall
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: ftime
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 2048 bytes
aes-128-cbc 112.88k 442.75k 1698.13k 5886.29k 10061.14k

やはりブロックサイズが小さいとあまりよい結果が出ていません。ソフトウェア処理の結果が

aes-128-cbc 2572.87k 2837.16k 2912.43k 2927.62k 2930.01k

だったので、1024Byte以上で効果が出ています。Geode LXの場合は256Byte以上で効果が出ていました。やはりチップによる特性のようなものがあるようです。


テーマ : Linux
ジャンル : コンピュータ

tag : OpenWrt OpenVPN


OpenWrt(brcm47xx、主にBuffalo)用のハードウェア暗号化アクセラレータ用OpenSSLライブラリ

OpenWrt8.09.1をBuffaloの無線ルータ(brcm4704搭載機種)で稼動させるのに利用できるハードウェア暗号化アクセラレータ対応のlibopensslです。

libopensslのipkgファイルをダウンロードし、拡張子をtxtからzipに変更してください。zipを解凍するとipkgファイルがあるので、これをopkgコマンドでインストールしてください。

その他にkmod-crypto-ocf・kmod-ocf-ubsec-ssb・kmod-crypto-misc・kmod-crypto-coreが必要です。

# openvpn --show-engines

# openssl engines
を実行してcryptodevが出力されればとりあえずOKです。

BHR-4RV上のOpenWrt8.09.1上で簡単なテストは行っています。

続きを読む

tag : OpenVPN OpenWrt


cryptodevを有効にしたOpenSSLのコンパイル

俺メモです。

http://kamikaze.openwrt.org/8.09.1/kamikaze_8.09.1_source.tar.bz2
からソースをダウンロード、展開

make menuconfig
でTargetSystemをBroadcom BCM947xx/953xx [2.6]に変更
Utilityでopenssl-utilをチェックしてExit。

vi package/openssl/Makefile

70 ifeq ($(BOARD),ixp4xx)
71 OPENSSL_OPTIONS:= shared no-ec no-err no-fips no-hw no-threads zlib-dynamic \
72 no-sse2 no-perlasm --with-cryptodev
73 else
74 OPENSSL_OPTIONS:= shared no-ec no-err no-fips no-hw no-threads zlib-dynamic \
75 no-engines no-sse2 no-perlasm --with-cryptodev
76 endif
Makefileを見る限りでは、ixp4xxのみcryptodevを有効にしているようだ。なので、とりあえず全部のアーキテクチャでcryptodevを有効にするよう無理やり変更。そしてmake、待つこと約1時間。

OpenWrtを一度リブートしておく。リブートしておかないとopkgにパッケージのハッシュ値が違うと怒られる。
出来上がったbin/packages/mipsel/libopenssl_0.9.8i-3.1_mipsel.ipkをOpenWrtの/tmpにでもコピー。
root@OpenWrt:/tmp# opkg install -force-overwrite -force-reinstall libopenssl_0.9.8i-3.1_mipsel.ipk
フラッシュ4MBのモデルだと容量不足で怒られる。クリーンインストールが必要。zlibに依存しているのでzlibのipkgもあわせてローカルに落としておいて同時にopkg installする。


tag : OpenVPN OpenWrt


ハードウェアVPNアクセラレータ(暗号化アクセラレータ)の魔力 ~Buffalo+OpenWrt編 その1

 BuffaloのWZR-G54世代のBBルータにはBroadcom4704というチップが搭載されていて、こちらもハードウェア暗号化アクセラレータが入っているようです。OpenWrt8.09.1でこのアクセラレータが使えるかどうか試してみました。

フラッシュメモリ8MBのおすすめモデル




まずはデフォルトの状態で。

root@OpenWrt:~# openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 482414 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 132992 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 34130 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 8577 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 2048 size blocks: 4292 aes-128-cbc's in 3.00s
OpenSSL 0.9.8i 15 Sep 2008
built on: Sun May 17 04:00:48 UTC 2009
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr)
compiler: mipsel-linux-uclibc-gcc -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DDSO_DLFCN -DHAVE_DLFCN_H -I/home/andy/openwrt/brcm47xx/staging_dir/mipsel/usr/include -I/home/andy/openwrt/brcm47xx/staging_dir/mipsel/include -DOPENSSL_SMALL_FOOTPRINT -DOPENSSL_NO_ERR -DOPENSSL_NO_HW -DTERMIO -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts -fpic -fomit-frame-pointer -Wall
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 2048 bytes
aes-128-cbc 2572.87k 2837.16k 2912.43k 2927.62k 2930.01k
root@OpenWrt:~#
※openssl-utilパッケージをあらかじめインストールしています

やっぱり遅いですね。Alixのアクセラレータ無効の状態の半分ぐらい、ってところでしょうか。

次にopkgコマンドでkmod-crypto-ocf、kmod-ocf-ubsec-ssb、kmod-crypto-misc、kmod-crypto-core、openvpnの4つのパッケージをインストールしてみます。dmesg|tailすると

ubsec_ssb: DES 3DES AES128 AES192 AES256 MD5_HMAC SHA1_HMAC

なメッセージが見えます。期待できそうです。

ところが、openvpn --show-enginesをしても
root@OpenWrt:~# openvpn --show-engines
OpenSSL Crypto Engines

Dynamic engine loading support [dynamic]
おや、何も出てこない・・・。まいいや、とりあえずやっちまえ、ってことで
root@OpenWrt:~# openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 485102 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 133204 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 34150 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 8581 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 2048 size blocks: 4293 aes-128-cbc's in 3.00s
OpenSSL 0.9.8i 15 Sep 2008
built on: Sun May 17 04:00:48 UTC 2009
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) blowfish(ptr)
compiler: mipsel-linux-uclibc-gcc -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DDSO_DLFCN -DHAVE_DLFCN_H -I/home/andy/openwrt/brcm47xx/staging_dir/mipsel/usr/include -I/home/andy/openwrt/brcm47xx/staging_dir/mipsel/include -DOPENSSL_SMALL_FOOTPRINT -DOPENSSL_NO_ERR -DOPENSSL_NO_HW -DTERMIO -Os -pipe -mips32 -mtune=mips32 -funit-at-a-time -fhonour-copts -fpic -fomit-frame-pointer -Wall
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 2048 bytes
aes-128-cbc 2587.21k 2841.69k 2914.13k 2928.98k 2930.69k
ん?やっぱり変わらない。と思ってググって見ると、どうやらOCFを有効にしたアプリケーションでなければならない、すなわちOpenSSLでcryptodevを有効にしなければならず、しかもドライバもまだ実験的な実装の模様。OpenSSLの再コンパイルが必要なんだろうか?確かにコンパイルオプションに「-DOPENSSL_NO_HW 」という怪しげなオプションがあるなぁ・・・。OpenSSLを直接触ったことはあまりないが、調べてみねば。

Alixであまりにもうまく行ったので調子に乗ってみたが、残念。

 OpenWrtにもOpenSSL用のパッチが提供されていたようですが、フットプリントが大きくなるなどの理由で採用は見送られているようです。パッチを採用する・しないで結構白熱した議論が行われていました。OpenWrtではocfはkmod-crypto-ocfで実装されているようですが、上記のとおりOpenSSLへの実装は難しいようです。

 OpenWrtの議論とは外れますが、どうもLinuxの暗号化関連のAPIは宗教論争的な要素があるようです。Alix+pfsenseであっさりハードウェアアクセラレータが有効になったのは、FreeBSDでcryptodevがあっさり使えるからみたいですね。このあたりはFreeBSDの強みかもしれません。


参考URL
http://doc.pfsense.org/index.php/Are_cryptographic_accelerators_supported
http://nuwiki.openwrt.org/oldwiki/HardwareAcceleratedCrypto
https://forum.openwrt.org/viewtopic.php?id=5032&p=2
http://oldwiki.openwrt.org/HardwareAcceleratedCrypto.html
http://www.danm.de/files/src/bcm5365p/


その2につづく。

続きを読む

テーマ : Linux
ジャンル : コンピュータ

tag : OpenVPN OpenWrt


OpenWrt化するのはどのルータがいい?

 LaFonera(FON2100E)Buffaloのルータ数台をOpenWrt化して使っている。利用用途は主にVPN用。特にFON2100Eは小型で持ち運びやすいので、外出先のホテルのLANに接続したらそのまま無線LAN側が自宅とVPN接続できるようにしている。無線LAN側がVPNに接続されていると言うことは、F1100とセットで持ち歩けばF1100がそのまま自宅内線として使えるのだ。

 と、それはさておき、いままでの経験から、BuffaloとLaFoneraを比較してみた。スペックの比較についてはOpenWrtのハードウェアリストが参考になる。

Buffaloのメリット
・流通量が多く中古で入手しやすい
・CPUがそこそこ高スペック(264MHz)、DRAMも64MBと余裕がある。

Buffaloのデメリット
・フラッシュメモリが少ない。流通量が多いのは4MBのモデルが中心で、8MBのものはVPN対応の機種なので、流通量が限られる。


フラッシュメモリ8MBのおすすめモデル



LaFoneraのメリット
・入手性がよく、新品でも入手できる。とにかく安い。(\1,980~)
・フラッシュメモリが多い。初期型のFON2100Eでも16MBある。

LaFoneraのデメリット
・CPUが非力(180MHz)
・DRAMも少ない(16MB)
・発熱が多い



 Buffaloの無線LANルータについては、2004年~2005年に発売された機種が比較的高スペックで、その後の機種はDRAMの容量が削られていたりするようである(少ないDRAMで効率的に動かせるよう企業努力をしている、ということだが・・・)。

 OpenWrtのハードウェアリストを見る限りではフラッシュを16MB積んだ機種はほとんど見当たらないため、バッファローの8MBの機種でもOpenWrt的には低スペックではない。とはいうものの、8MBなんてすぐにいっぱいになるので、目的を決めてopkgしないとすぐに容量いっぱいになってしまう。



テーマ : UNIX/Linux
ジャンル : コンピュータ

tag : OpenVPN OpenWrt



カテゴリ


最新記事

月別アーカイブ

最新コメント

最新トラックバック









上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。