SoracomでIPv6を使う

この記事はSORACOMさんのSoftware Design巻頭特集記念リレーブログ 5/4日の記事です。

何か面白い使い方を?というのを考えて、やはり自分と言ったらIPv6じゃん(w)ということで、SoracomのNW上でIPv6を使うことに。

なぜIPv6か

普通に使うとMVNOのNWで端末にはIPv4プライベートが降ってくるですね。まぁ、Global IPv4が降ってきたらちょっぴりビックリはするけど、プライベートIPということで、上位のNWから直接何か攻撃されるとかってリスクは防げている。
ただし、やっぱりあれだよね、IoTというかM2M的というか、はるか昔からそれ系のと言ったら…IPv6(藁)だーよーね。IPv6 Globalを降るとIPv6 NW側から直接端末にリーチする事が出来るようになる。これはこれで便利。ただし、Global IP直撃アタックのリスクも出てくる。その辺は、NWがNativeでIPv6に対応していて、上位のFWで選択的にACLを書けたら素敵だなーとは思うけど、とりあえずは端末に直撃で振って使う事に。

使うもの

使うものはRPi3、L-02C、soracom simです。
IMG_1127

ここで、端末にどーやってIPv6を振るか…というと、トンネル、VPNものですね。ただし、NAT越えか上位ルータでのプロトコル番号41番を通したりが必要になったりする。

1) Hurricane Electric IPv6ブローカを使ってみる
これはうまくいった。上位のNWで41番通してくれているのね(多分)。本当は6to4とか残っていたらなーとか思ったけど、見つけられなかった。もうこの手のトンネルものはIPv6の普及と共に少なくなってきたもんね。
このHurricane Electricのは適当にメアドで登録するとブローカが使えるようになる。ただし、1日にGlobal IPに対して2個の設定しか食わせられない…そう、仮に上位のNWのGlobal IPが変わると割り当てされるブローカ、IPv6が変わるというか再設定をするハメになるから、ちょっとなぁ…といった感じだった。

2) SoftEther IPv6割り当てサービスを使う
これはたまに使っているIPv6接続サービス。素晴らしいっす。これを使うと構成は次のようになる。

RPi用のARM SoftEtherクライアントでIPv6サーバに接続することで、IPv6のNWを引き込むことができる。これで別のIPv6 NW上のサーバから直撃でアクセスも可能になる。実際に接続した状態はこちら。

ppp0はsimで接続したもので、vpn_soracomはSoftEther VPN IPv6接続で作ったinterface。ちゃんと2001から始まるGlobal IPv6が振られてますね。(あ、もうこのIPにアクセスしてもムルポッス。止めてるから:)
これでやりたい事は出来た。次に実際データを流してみる。

パケット圧縮を使う

SoftEtherにはパケット圧縮という機能が付いていて、これを利用するとNW上に流れるパケットを事前に圧縮する事が出来る。もちろん、Plain Textとかだと効率がいいけど、バイナリだと効率が悪くなる。とわ言え、流したデータ量に対して従量課金が発生すると思うと、この辺はできるだけ抑えたくなる。
ということで、IPv6サーバから毎秒ping6を流して、圧縮、非圧縮じのデータ量比較を確認してみる。

結果はこちら。これはSoracomさんの時間毎データ量から見ることができる。

1) 一番右のもっともデータ量が大きい : 非圧縮
2) 右から2番目のもの : 圧縮
3) 右から3番目より左 : ping6も何も投げない定常接続

ということで、ping6のデータ(64byte文字)だと当然っちゃ当然の結果になった。何もしないで接続だけの場合だと1MByteくらいのデータ量で、毎秒ping6(64byte)の圧縮だと2MByte、非圧縮だと3.1Mbyteという結果に。SoftEtherのパケット圧縮が効いてますねー。
もちろん、圧縮処理をすると端末もパケットを投げる時に、圧縮/解凍が走るからその分重くなるけど、RPi3 quad-core ARMのハイスペックだと毎秒64byteなんて投げても負荷はもちろんゼロ。

まとめ

ということで、IoT/M2M的にはやっぱIPv6だーよーねー、というのは将来的な部分や可能性として6LoWPANという利用もあるから、何にしてもIPv6を引き込みたくなる(気がする)。
とりあえず、HurricaneとSoftEther IPv6を使ったけどSEの方が自分は便利だと思う。軽快に動くし、パケット圧縮という機能で流量を圧縮することができる。これは従量課金という部分にヒットする所だけど、IoT/M2M的なデータ流通ってそんなにサイズ的・頻度もあるかどうか…だし端末への圧縮/解凍負荷をどう考えるか?という部分にも効いてくる。全部が全部、RPi3ほどのハイスペックじゃないからね(と言っても、たまにデータを投げるくらいでテキストとかなら軽めの圧縮をした方が良いと思われ)。
こうやって、IPv6をトンネル/VPNで通さなくてもNativeでIPv6が使えるよーになったら、何かもっとテンションが上がるよーな気がする:-)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください