NTMobile
を
Android
端末に実装するための検討
赤堀 蒼磨
†
∗,
納堂 博史
†,
鈴木 秀和
†,
内藤 克浩
‡,
渡邊 晃
†(†
名城大学
, ‡
愛知工業大学
)
Studies of NTMobile Implementation in Android.
Soma Akahori†∗, Hiroshi Nodo†, Hidekazu Suzuki†, Katsuhiro Naito‡, Akira Watanabe† (†Meijo University, ‡Aichi Institute of Technology)
1
はじめに AndroidやiOS等のOSを搭載したスマートフォンやタブ レット端末の普及により,手軽にインターネットに接続が可能 になった.これらの移動端末において,接続するネットワーク 環境に関わらず通信を開始できる通信接続性と,通信中にネッ トワークを切り替えることができる移動透過性の必要性が高 まっている.著者らは,両者を同時に実現可能とする次世代技術NTMobile(Network Traversal with Mobility)[1]を提案している.
この技術をAndroidやiOS端末へ実装できると有用である.本 稿では,NTMobileをAndroid端末上のアプリケーションとして 動作させる,NTMobileフレームワークの実現方法について報告 する.
2
NTMobile
の概要NTMobileはインターネット上に,DC(Direction Coordinator)
と呼ぶ装置を設置する.NTMobileを搭載した端末(以降NTM 端末と記す)は,ログイン時にDCから重複しない仮想IPアド レスの配布を受ける.アプリケーションは仮想IPアドレスで セッションを確立する.DCはNTM端末の位置をすべて把握し, 通信開始時または移動を検出した時,両NTM端末に対しUDP トンネル構築の経路指示を行う.NTM端末間の通信パケットは, 全て実IPアドレスでカプセル化してトンネル通信を行う.以上 の動作により,通信接続性と移動透過性を同時に実現する. NTMobileは、当初Linuxカーネル上での動作を検証して いた.しかしAndroid端末ではルート権限が必要となることか ら,NTMobile普及のために望ましくない.そこでNTMobileを アプリケーションに移植し,フレームワークとして動作できる よう検討を進めてきた.これまで簡易実装によりUDPレベル での動作を確認している. 今回はTCPも実現可能なように,フ レームワークの実装を見直した.
3
フレームワークの実装方法 NTMobileフレームワークは,C言語で記述されており,上 位アプリケーションに対してNTMobile用のソケットインタ フェースを提供する.フレームワーク内で生成したTCP/IPパ ケットをデータとみなし,Linuxが提供するUDPによりカプセ ル化を行う.UDPポート番号4330を使うと,カーネル版との互 換性を保つことができる.ただし,4330に固定するとフレーム ワークを利用する他アプリケーションとの同時動作ができな いので,ポート番号をダイナミックに変更できるようになって いる. NTMobileフレームワークのモジュール構成はFig.1のとお りである. 仮想TCP/IPは,TCP/IPをアプリケーション層で実 現するモジュールで,オープンソースのlwIP(light weight IP)[2]を利用する. libntmは,DCとNTM端末が共通で使用するライ 各種アプリケ ーション NTMobile用 Javaアプリケーション Javaラッパー Java JNAソケット NTMobileソケット 仮想TCP/IP トンネル テーブル NTM シグナリング Hand Over libntm Cソケット UDPポート番号4330 Cソケット Linux(UDP/IP) NTMobileフレームワーク
Fig. 1 Module of NTMobile Framework
ブラリである. NTMシグナリングは,通信開始時またはIPアド レス変化時にDCの指示を受けて,UDPトンネルの構築を行う モジュールである.トンネルテーブルはトンネル構築時にカプ セル化処理に必要となるテーブルである. HandoverはIPアド レスの変化を常時監視するモジュールで,移動透過性実現のた めにフレームワーク特有の処理を行う.カーネル版ではIPアド レスの変化をカーネルで検出し,トンネル構築処理を開始して いた.フレームワーク版では,IPアドレスの変化をカーネルから 教えてもらうインタフェースがないため,Handoverモジュール にてIPアドレスの変化を定期的にチェックする.NTMobile接 続時または,IPアドレスの変化が検出されたらNTMシグナリ ングを呼び出しDCに経路指示を依頼する. NTMobileソケッ トは,カーネルが提供するCソケットと1対1に対応しており, 機能的に互換性を持つインタフェースである. Javaラッパー はJNA(Java Native Access)で定義されたJavaインタフェース をNTMobileソケットに変換するモジュールである.NTMbile に係る動作はフレームワークですべて実行するため,Javaラッ パーは単にJavaとCインタフェースの変換を行うだけである.