• 検索結果がありません。

NTMobile 用 Java ラッパーの提案と実装

N/A
N/A
Protected

Academic year: 2021

シェア "NTMobile 用 Java ラッパーの提案と実装"

Copied!
24
0
0

読み込み中.... (全文を見る)

全文

(1)

NTMobileJavaラッパーの提案と実装

130441077 清水 一輝

渡邊研究室

1. はじめに

モバイルネットワークの普及に伴って,ネットワーク環 境にかかわらず通信を開始することができる通信接続性と ネットワークが切り替わった際にも通信を継続できる移動 透過性が求められている.NTMobileNetwork Traversal with Mobility)は両者を同時に実現する次世代の技術であ [1]

NTMobileLinuxカーネルに実装を行っていたが,こ れをアプリケーション側に移植を行っている.これをNT- Mobileフレームワークと呼んでいる.フレームワークはC 言語によって記述されているため,Javaで利用するには変 換が必要である.そこで本研究では,NTMobileフレーム ワーク用のJavaラッパーを実現する方式について検討し た.提案方式では,JavaアプリケーションがNTMobile ほとんど意識することなく,Java標準APIを使用すると 自動的にNTMobileフレームワークが呼び出される.

2. NTMobile

NTMobileは,NTMobile 機能を有するNTM端末と NTM端末の端末情報管理やトンネルの経路指示を行うDC

Direction Coordinator)によって構成される.

NTM端末は,起動時に自身の端末情報をDCに対して 登録し,DCから仮想IPアドレスを取得する.アプリケー ションは仮想IPアドレスを利用して通信を確立する.仮 IPアドレスにより生成されたパケットは全て実IPアド レスによってカプセル化される.NTM端末はIPv4グロー バル/IPv4プライベート/IPv6アドレスの違いを意識する ことなく相互に通信ができ,通信中にネットワークを切り 替えることが可能である.

NTMobileフレームワークにて行う処理にはntmfw ntm initと呼ばれる登録処理,ntmfw getaddrinfoと呼ばれ る送信/受信端末間のトンネル構築処理,及びパケット送受 信時のトンネル通信の3つが存在する.

3. NTMobileJavaラッパー

1Javaラッパーを用いたNTM端末のモジュール 構成を示す.JavaアプリケーションにてNTMobile通信 を行うには,C言語で記述されたNTMobileフレームワー クの関数を呼び出す必要がある.C言語とJavaでは引数 の型の違いがあるため,Javaラッパーを介することにより 型の変換処理を行い,NTMobile通信を可能にする.

Javaアプリケーションでは,Java標準APIを使用し て自動的にNTMobile通信を実現できるように,Java 準の通信クラスのメソッドをオーバーライドする.これに よりJavaアプリケーションがJavaの通信に関するメソッ ドを呼び出した際にJavaラッパーによってNTMobile レームワークの関数を自動的に呼び出すようになる.

 図1においてinitgetByName2つの処理は,NT- Mobileフレームワーク特有の処理を行うため,Java標準 APIをオーバーライドすることができない.そこでこの 2つのメソッドは新たにクラスを作成し,そこに定義す る.initntmfw ntm initを呼び出し,getByName ntmfw getaddrinfoを呼び出す.

Java アプリケーション

Java ラッパー

NTMobile フレームワーク

Linux

Java ソケット

NTMfw C ソケット

C ソケット ntmfw_ntm_init

init getByName

ntmfw_getaddrinfo

1: Javaラッパーを用いたNTM端末のモジュール 構成

4. 評価

Javaラッパーを実装し,NTMobile通信による,動作検 証と処理時間の測定を行った.

 送信/受信端末に対して Javaアプリケーション,Java ラッパー,NTMobileフレームワークを実装し,Linux で動作検証を行った.両端末間で,UDP通信を行った際に 要する時間の測定を5回行った.これらを平均した結果を 1に示す.

1: 送信/受信時の処理時間の平均 測定箇所 送信時[ms] 受信時[ms]

Javaラッパー 0.13 0.16

NTMobile fw 2.91 2.37

Linux 0.07 0.01

合計 3.11 2.54

1LinuxNTMobile通信を利用しなかった場合 の送受信に要する時間である.NTMobile通信を行うと送 信時では約3.1ミリ秒,受信時では約2.5ミリ秒かかり,多 くの時間がNTMobileフレームワークであることが分かっ た.NTMobileフレームワークに多くの時間を要する理由 は,メッセージの暗号化/復号処理に要する時間が含まれる ためと考えられる.Javaラッパーでの処理に要した時間は 送信時で約0.13ミリ秒,受信時で約0.16ミリ秒であった.

5. まとめ

本稿では,NTMobileフレームワーク用のJavaラッパー を実現する方式を提案した.UDP通信部分の実装を行い,

Java標準APIを使用してNTMobile通信が可能なことを 確認した.

参考文献

[1] 上醉尾一真,: IPv4/IPv6混在環境で移動透過性を実 現するNTMobileの実装と評価,情報処理学会論文誌, Vol. 54, No. 10, pp.2288-2299 (2013).

(2)

NTMobile Java ラッパーの提案と実装

130441077

渡邊研究室 清水 一輝

(3)

研究背景

 インターネット通信の需要増加

スマートフォンなどの移動通信端末の普及

通信接続性の課題

 IPv4

アドレスの枯渇に伴い,

NAT

によるプライベートネットワークを 構築することが一般的

 NAT

の外側にあるネットワークから,

NAT

の内側にあるネットワークにアクセスできない(

NAT

越え問題)

1

NATNetwork Address Translation

端末間で自由に通信できない

グローバルネットワーク プライベートネットワーク

端末A 端末B

NAT

(4)

研究背景

移動透過性の課題

現在のネットワークでは,

IP

アドレスを通信識別子としている

端末移動時などにネットワークが切り替わると,

端末の

IP

アドレスが変化し,通信を継続できない

2

ネットワークA

端末A 端末B

ネットワークB IPアドレス:IPA

移動しながら通信を継続できない

(5)

研究背景

移動透過性の課題

現在のネットワークでは,

IP

アドレスを通信識別子としている

端末移動時などにネットワークが切り替わると,

端末の

IP

アドレスが変化し,通信を継続できない

3

ネットワークA

端末A 端末B 端末B

移動しながら通信を継続できない

移動

IPアドレス:IPB

ネットワークB IPアドレス:IPA

(6)

Java の有用性

 幅広い分野で使用されている

業務システム

 Web

サービス

 Android

アプリケーション

 人気のあるプログラミング言語

4

各調査機関のプログラミング言語ランキング.Code部.

https://blog.codecamp.jp/programming_language_2015(参照 2016/12/03)

IEEE TIOBE Devpost GitHub RedMonk 1 Java Java HTML/CSS JavaScript JavaScript

2 C C JavaScript Java Java

3 C++ C++ Python Ruby PHP

4 Python C# Java PHP Python

5 C# Python C/C++ Python C#

(7)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

5

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network Private Network

Internet

NTM端末:MN DC

RS

NAT

NTM端末:CN

(8)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

6

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network Private Network

Internet

NTM端末:MN DC

RS

NAT

NTM端末:CN 端末起動時

仮想IPアドレスの配布 端末情報の登録

(9)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

7

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network Private Network

Internet

NTM端末:MN DC

RS

NAT

NTM端末:CN 通信開始時()

経路指示の要求

通信経路の指示

(10)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

8

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network Private Network

Internet

NTM端末:MN DC

RS

NAT 通信開始時()

NTM端末:CN

トンネル構築

(11)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

9

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network Private Network

Internet

NTM端末:MN DC

RS

NAT

NTM端末:CN トンネル通信時

トンネル通信

(12)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

10

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network

Internet

NTM端末:MN DC

RS

NAT

NTM端末:CN

移動

端末移動時()

通信経路の指示 経路指示の要求

(13)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

11

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network

Internet

NTM端末:MN DC

RS

NAT

NTM端末:CN

移動

端末移動時()

トンネル再構築

(14)

NTMobile

(Network Traversal with Mobility)

 通信接続性と移動透過性を同時に実現する技術

 NTM

端末

(NTMobile Node)

NTMobile機能が実装された端末

 DC(Direction Coordinator)

通信経路の指示

仮想IPアドレスの配布

 RS(Relay Server)

直接通信不可の際,

通信を中継

 DC , RS は複数台設置可能

12

MNMobile Node CNCorrespondent Node

・端末の位置に依存しない

・実IPアドレスの変化を隠蔽 仮想IPアドレス

Private Network

Internet

NTM端末:MN DC

RS

NAT

NTM端末:CN

移動

トンネル通信時

トンネル通信

(15)

RIPMN RIPCN

NTMobile の通信

パケットを実 IP アドレスでカプセル化した通信

13

RIP:実IPアドレス VIP:仮想IPアドレス

Application

MN CN

NTMobile Application NTMobile

RIPRIPMN

VIPVIPMN

RIPRIPCN

VIPVIPCN

VIPMN VIPCN VIPMN VIPCN

VIPMN VIPCN

カプセル化 デカプセル化

RIPが変化してもVIPは変化しない

(16)

NTMobile フレームワーク

 NTMobile 機能をユーザ空間にて実現する実装方式

アプリケーションは C 言語の標準ソケット API に代わり,

NTM ソケット API を使用する

14

APIApplication Programming Interface Cアプリケーション

NTMobileフレームワーク

Linux

 ntmfw_bind

 ntmfw_sendto

 ntmfw_recvfrom

 bind

 sendto

 recvfrom ︙

C標準ソケットAPI NTMソケットAPI

(17)

NTMobile フレームワークの構成

仮想 TCP/IP スタック

仮想

IP

アドレスの提供

パケット操作

モジュール

パケットの暗号化

/

復号

改ざん検知のための

MAC

付与

/

検証

トンネルテーブル

/

仮想

IP

アドレス等の 関係を所持

ネゴシエーション

モジュール

通信経路のやり取り

15

MACMessage Authentication Code

NTMソケットAPI

CソケットAPI 仮想TCP/IP

スタック

ネゴシエー ション モジュール トンネルテーブル

パケット操作 モジュール

(18)

NTMobile フレームワーク

フレームワークは C 言語によって実装

フレームワークを利用できるアプリケーションは

C

言語に限定

実用的な利用のためには他の

プログラミング言語からフレームワークを 利用可能にするためのラッパーが必要

ラッパーとは

他のプログラミング言語にて 実装された機能などを

利用できるようにするもの

16

アプリケーション

NTMobileフレームワーク

Linux ラッパー

(19)

NTMobile 用 Java ラッパー

17

 フレームワークのライブラリへ JNA を利用しアクセス

 JNA(Java Native Access)

 C

言語のライブラリにアクセスする方法を提供

 C

言語のソースコードに手を加える必要なし

 bind

 sendto

 recvfrom ︙

C言語

 bind

 sendto

 recvfrom ︙

Java

同じ名前で宣言することで使用可能

マッピング

(20)

NTMobile 用 Java ラッパー

 Java アプリケーションは Java の標準ソケット API に代わり,

JavaNTM ソケット API を使用する

18

Javaアプリケーション

NTMobileフレームワーク

Linux Javaラッパー

JNA

 ntmfw_sendto

 ntmfw_recvfrom

NTMソケットAPI

 sendto

 recvfrom ︙

C標準ソケットAPI

 send

 recieve

JavaNTMソケットAPI

(21)

動作検証

装置の仕様

全ての装置を

1

台のホストマシン上に仮想マシンで構築

19

ホストマシン OS Windows 10 64bit

CPU Intel Core i7-4770 3.40GHz Memory 8.00GB

仮想マシン MNCN DC

OS Ubuntu 14.04 32bit Ubuntu 12.04 32bit Kernel Version 3.13.0-24-generic 3.2.0-101-generic-pae

CPU割り当て 1Core 1Core

Memory割り当て 2.00GB 1.00GB

DC CN

MN

(22)

動作検証

 NTM ソケット API を使用し, UDP による任意のメッセージを 送受信するアプリケーションを C 言語と Java で作成

 C 言語と Java , Java 同士の 2 通りで動作を検証

 2

通りで

UDP

送受信の成功を確認

20

C Java

Java Java

(23)

性能評価

 UDP 通信時の処理時間を計測

 5

回の平均を計算

NTMobile ではパケット暗号化 / 復号,

改ざん検知のために MAC 付与 / 検証を 行うため時間を要する

21

MACMessage Authentication Code

計測箇所 送信時[ms] 受信時[ms]

(ⅰ) Javaラッパー 0.13 0.16

(ⅱ) NTMobile 2.91 2.37

(ⅲ) Linux 0.07 0.01

合計 3.11 2.54

Javaアプリケーション

Linux

NTMobileフレームワーク Javaラッパー

JNA

(ⅰ)

()

()

(24)

まとめ

 NTMobile 用 Java ラッパー

 NTMobile

フレームワークを

Java

にて使用可能にする

実装と評価

仮想環境にて正常に動作することを確認

JavaNTMobileを使用可能

 C

言語と

Java

での異なるプログラミング言語による通信も確認

今後の予定

既存アプリケーションへの実装

22

参照

関連したドキュメント

1) 特に力を入れている 2) 十分である 3) 課題が残されている. ] 1) 行っている <選択肢> 2) 行っていない

活動が行われている。 実施 実施を継続

ても情報活用の実践力を育てていくことが求められているのである︒

スライダは、Microchip アプリケーション ライブラリ で入手できる mTouch のフレームワークとライブラリ を使って実装できます。 また

本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1

クチャになった.各NFは複数のNF  ServiceのAPI を提供しNFの処理を行う.UDM(Unified  Data  Management) *11 を例にとれば,UDMがNF  Service

は、これには該当せず、事前調査を行う必要があること。 ウ

を行っている市民の割合は全体の 11.9%と低いものの、 「以前やっていた(9.5%) 」 「機会があれば