Android 端末間のアドホックネットワークの構築 ユビキタスネットワークシステム研究室 N11-040 坂本浩基 N11-107 吉田和矢 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
背景 l アドホックネットワーク 通信キャリアに頼らず構築することのできる無線ネットワーク 2 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
背景 l アドホックモード アクセスポイントを介さずに端末同士が直接通信を行うモードのこと l マルチホップ 端末同士が他の端末を経由することでより広範囲の端末との通信を可能にする技術 AP アドホックモード マルチホップ通信 3 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
目的 l PC や iphone では利用できるアドホックモードだが Android では利用出来ないので 今回 Android で利用できる方法を検討した 4 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Android に搭載されている端末通信方式 l バージョン 4.0 以降の Android では WifiDirect という端末通信方式がある アクセスポイントのようにネットワークの中心として振る舞い アドホックモードと同じように端末間のみで通信を行うことができる AP 5 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
アドホックモードと WiFiDirect の違い WiFiDirect は AP のように振る舞う端末を中心としたネットワークで 端末同士を相互に通信して大規模なネットワークを構成することができない AP WiFiDirect アドホックモード 6 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Android の WiFi 設定画面 通常の Android ではアドホックネットワークが表示されず 作成もできない 7 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
提案した方式 1Android のカスタム OS にアドホックモード接続可能なパッチを用いてカーネル構築をする 2Android に相乗りさせる形で Linux を動作 させる 8 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
wpa_supplicant について l Androidのライブラリ内にある無線 LAN 制御に使用しているソフトウェアである このソフトウェアにGoogleが意図的に無線 LANの設定画面からアドホックネットワークに接続できないようにしている ( 例 :android 4.0.1) External/wpa_supplicant_8/wpa_supplicant/events.c アドホックモード (IBSS モード ) であれば デバック情報を出力して以降の処理をスキップする 9 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
カスタム OS を使用した方式 l カスタム OS とは Android のオリジナル OS にユーザーが独自に改良を加えた OS である カスタム OS の一つである cyanogenmod はアドホック接続のパッチを提供しているので このパッチを使用してカーネル構築を行った 10 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Cyanogenmod のカーネル構築 1PC に Cyanogenmod のソースファイルをダウンロ - ドする 2 ネットワーク部分に変更を加えるパッチを用意する 3 パッチに記載されたファイルを抽出し パッチを当てる 4 パッチを当てたファイルをソースファイルに戻しカーネル構築を行う 5 カーネル構築した Cyanogenmod を Nexus7 にインストールする Cyanogenmod に提供されていたパッチは実験で使用する Nexus7 のカーネル構造と一部違う点があったので パッチを当てる前に修正をしなくてはならなかった 11 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Cyanogenmod の WiFi 設定画面 アドホックネットワークが見えるようになり 作成も可能になった 12 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
実験 使用機器 Asus Nexus7 2013 flo(cyanogenmod) 1 LinuxPC 2 内容 PC2 台と Nexus7 でのアドホックモードでの接続を行った 13 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
実験構成 Nexus7 PC1 PC2 端末 MACアドレス IPアドレス Nexus7 ac:22:0b:a3:c2:da 192.168.1.5 PC1 e0:06:e6:68:e3:c1 192.168.1.1 PC2 e0:06:e6:68:da:19 192.168.1.2 14 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
結果 複数回検証した結果 いずれも接続済みと表示されたが Ping を送受信できる場合とできない場合があった 15 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
結果 接続成功時のルーティングテーブル Nexus7 から PC1 への Ping 16 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
MAC 制御フレームの調査 l アドホックモードでの接続が不安定なためビーコンフレームの BSSID を調べるために用いたのが WireShark である WireShark とは 高機能なパケット取得ソフトである これを用いて実験の環境でアドホックモード設定時の MAC 制御フレームを調査した 端末 Nexus7 PC1 PC2 MACアドレス ac:22:0b:a3:c2:da e0:06:e6:68:e3:c1 e0:06:e6:68:da:19 17 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
アドホック接続の仕組み AP BSSID を共有 BSSID を共有 アクセスポイントを 利用するネットワーク アドホックモード BSSID=AP の MAC アドレス BSSID= 最初の端末が作成 18 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
アドホック接続の仕組み ビーコンフレーム (BSSID) ビーコンフレームを定期的に送信しあう ビーコンフレーム (BSSID) ビーコンフレーム (BSSID) アドホックモードで接続しているなら同じ BSSID を共有している 19 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
調査結果 Ne: 赤 PC1: 青 PC2: 緑 Nexus7 は PC と同じ頻度でビーコンフレームが送信されている 20 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
MAC 制御フレームの様子 Nexus7 のビーコンフレーム MAC アドレス ac:22:0b:a3:c2:da BSSID 02:f4:55:fa:54:fa 21 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
MAC 制御フレームの様子 PC1 PC2 のビーコンフレーム MAC アドレス e0:06:e6:68:e3:c1 BSSID 02:f4:55:fa:54:fa MAC アドレス e0:06:e6:68:da:19 BSSID 02:f4:55:fa:54:fa 22 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
方式 1 のまとめ 端末間で送受信されているビーコンフレーム内の BSSID は一致していたが Ping が送受信できる場合とできない場合がある この接続の不安定さを解決することで Android 間のアドホックモードの利用がより確実になるので検討していく 23 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
提案した方式 1Android のカスタム OS にアドホックモード接続可能なパッチを用いてカーネル構築をする 2Android に相乗りさせる形で Linux を動作 させる 24 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
iwconfig コマンドについて wireless- tools というツールで提供されているコマンド 無線インターフェースの状態の確認や設定を行うことができる AndroidOS には実装されていない Linux Android GUI NetworkManager wpa_supplicant コマンドライン wireless-tools 無 実装することでアドホックモードが利用できる 25 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
nuolsrv2 について マルチホップ通信に利用するルーティングソフト Android のアプリケーションはすべて Java 言語で書かれているが このソフトは C 言語で書かれている為 そのままでは AndroidOS で使用できない Android への移植が必要 26 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
方式 2 の目的 通常の Android も使える状態でこれらを利用したい そこで アプリケーション等は Android のものをそのまま利用 無線インターフェースの変更やルーティングソフトの動作等は追加した Linux で行う というものを目指した 27 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Android 内での LinuxOS の利用 Android の構成図 アプリケーション アプリケーション フレームワーク ライブラリランタイム Linux カーネル CPU GUI 等 Linux ライブラリ 実線部分は AndroidOS の部分 点線部分が今回追加する Linux の部分である wpa_supplicant wireless-tools Linux 側からは Android のライブラリを経由することなく Linux カーネルへとアクセスできる 28 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Debian-kit Debian 環境を構築することができるツール いくつかのスクリプト等からなる AndroidOS 上に相乗りする形で動作をさせることができる 29 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Debian-kit の流れ 1.Debian- kit を Android 端末にダウンロードする 2.Android 端末上でイメージファイルを作成 し loop デバイスとしてマウントする 3.bootdeb スクリプトによって chroot が行われ Debian の / ディレクトリは Android の / ディレクト リと同じ場所になる 30 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Debian-kit の流れ Debian は Debian-kit によってインストールされた bootdeb というスクリプトによってイメージファイルをマウントすることで起動する Android の / ディレクトリ 31 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Debian-kit の流れ Debian は chroot で Android の / ディレクトリを自らの / ディレクトリとして認識 Debian は /dev /mnt / proc /sys の 4 つのディレクトリは Android にあったものをそのまま使用する 32 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Debian-kit の流れ /etc /root /sbin は Android 側のものをリネーム保存し シンボリックリンクを作成 Debian 側のディレクトリにマージする リネームされた /etc /root /sbin はそれぞれ /.etc.debian-android /.root.debian-android /.sbin.debian-android という 3 つの隠しディレクトリとしてルートディレクトリに保存されている Android の / ディレクトリ Android と Linux が同時に動作するようになる 33 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
実験 1 使用機器 Asus Nexus7 2013 flo(debian インストール済 ) 1 内容 Nexus7 に Debian をインストールし Debian 側から iwconfig コマンドを用いて無線インターフェースをアドホックモードに変更できるかを確認した 34 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
結果 iwconfig コマンドによって無線インターフェースへの変更が可能となった 35 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
実験 2 使用機器とソフトウェア Asus Nexus7 2013 flo(debianインストール済 ) 1 LinuxPC 3 4つ全てにnuOLSRv2をインストール 内容 Nexus7とPC3 台でアドホックネットワークを作成し Android 側でもそのネットワークを利用できるか確認する 36 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
実験 2 構成 Nexus7 PC1 PC2 PC3 37 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
結果 Nexus7(Android 側 ) のルーティングテーブル PC3 のルーティングテーブル 38 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
結果 マルチホップ通信をしている 39 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
Android 側からの利用 Nexus7 は PC1 と PC3 とはマルチホップで通信していることが分かった為 Android 側から Ping での確認を行った Nexus7 から PC1 への Ping Nexus7 から PC3 への Ping 40 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
方式 2 のまとめ 実験 1 の結果から Android の無線インターフェースのアドホックモードへの変更 実験 2 の結果からアドホックネットワークの構築 Android での利用の 3 つが可能となった 41 All Rights Reserved, Copyright 2013 Osaka Institute of Technology
全体のまとめ Android でアドホックモードを利用するために 2 つの方式を検討した アドホックモードへの変更 方式 1 方式 2 1 対 1 の Ping 通信 ルーティングソフトの動作 マルチホップの Ping 通信 課題 上記のクリア コマンドやルーティングソフトのみの移植 42 All Rights Reserved, Copyright 2013 Osaka Institute of Technology