NTMobileを用いたE2Eチャットアプリケーションの提案
120430073 中村 隼大
渡邊研究室
1. はじめに
モバイルネットワークの普及に伴い,チャットが重要な コミュニケーションツールとなっている.チャットはクラ イアントサーバシステムで実現するのが一般的である.し かし,サーバから情報漏洩する懸念や,サーバの障害・二 重化等に対する管理負荷が大きいという課題がある.筆者 らは,端末がどのようなネットワーク環境にいてもエンド ツーエンドで通信を行うことができるNTMobile(Network Traversal with Mobility)を提案している[1].そこで,本 稿ではNTMobileを用いたエンドツーエンド通信による チャット通信方式を提案し,その利点を考察する.
2. 従来のチャットアプリケーションの実現 方法
現在のネットワークには通信経路上にNAT(Network Ad- dress Translation)が存在することが多く,エンドツーエ ンドの通信が阻害されている.そのため,インターネット 上のサーバを介して通信を行う必要がある.従来のチャット アプリケーションにおいても,インターネット上に存在す るIRC(Internet Relay Chat)サーバとクライアントから 成るクライアントサーバシステムで実現されている.クラ イアントはサーバに対して,常時Keep Aliveを行うこと によりNATテーブルを維持する.このシステムでは,ク ライアントがサーバに対してメッセージを送付し,サーバ が各クライアントに同一メッセージを配信する.クライア ントはサーバから通知を受け取るとメッセージの受信を知 り,サーバにチャットデータを取りに行くことができる.
クライアントサーバシステムでは,サーバの管理者が情 報を取得できるため,セキュリティ上問題があるという指 摘がある.また,サーバの二重化等の管理が必須である.さ らに,メッセージ送信毎に全ての処理を実行しなければな らないため,トラフィックが大きいことが課題である.
3. NTMobileによるエンドツーエンド通信
NTMobileは,NTMobileを実装した端末(NTM端末) とNTM端末に対してアドレス情報の管理やトンネル構築 指示を行うDC(Direction Coordinator)により構成され る.NTM端末は,インターネット上に配置されたDCか ら仮想IPアドレスが割り当てられる.アプリケーション は仮想IPアドレスによりセッションを確立する.通信開始 側のNTM端末(イニシエータ)は通信開始時にDCから の指示に従って通信相手のNTM端末(レスポンダ)との間 に実IPアドレスによるUDPトンネルを構築する.実際 の通信は仮想IPアドレスによるパケットを実IPアドレス でカプセル化することにより実現する.NTM端末はDC に対してKeep Aliveを行うことで通信経路を常に確保し ている.DCはこの経路を通してNTM端末に経路指示を 行い,NTM端末同士がUDPトンネルによりエンドツー エンドの通信を行うことができるようになる.NTMobile を適用することにより,ユーザはNATの存在を意識する 必要がない.
イニシエータ NAT レスポンダ
NTM Signaling
キャラクタデータ送信 応答
TCPコネクション接続
ファイル転送
TCPコネクション切断 キャラクタデータの入力
ファイル転送の指示
DC
UDPトンネル UDP
TCP
図 1: NTMobileを用いたE2Eチャットシーケンス
4. NTMobileを用いたチャット通信
図1にエンドツーエンド通信によるチャットのシーケン スを示す.イニシエータがレスポンダのFQDNを指定す るとNTMobileのシグナリング機能により,両者の間にエ ンドツーエンドのトンネル経路が構築される.このトンネ ルを経由して,キャラクタデータやファイル転送を直接実 行する.
NTM Signaling処理の詳細説明については本稿の本質で はないため省略するが,図1のようにレスポンダがNAT配 下に存在しても通信の開始が可能である.NTM Signaling 処理後,送信データがチャットのキャラクタデータであれ ば,単一パケットの通信で済むためUDPで通信を行う.こ の場合,正常に受信できたことを確認するためレスポンダ はアプリケーションレベルで応答を返す.送信データがファ イル(長データ)であればTCPで通信を行う.TCP通信 の場合,送達確認はTCPの機能に任せる.
本提案方式ではチャットサーバが不要であるため,サー バの管理が不要で,サーバからの情報漏洩等の心配がない.
また,NTMobileのシグナリング処理は初回のみ行うだけ で良く,サーバを経由する場合に比べてシーケンスを大幅 に簡略化でき,トラフィックが少なくなる.
5. まとめ
本稿では,NTMobileを用いてエンドツーエンドでチャッ ト通信を実現する方式を提案した.今後は,相手端末が起 動していない場合や複数人でのチャットを行う場合等につ いて検討する.また,提案手法の実装・性能評価を行って いく.
参考文献
[1] 鈴木 秀和,他:NTMobileにおける通信接続性の確立手 法と実装,情報処理学会論文誌Vol.54,No.1,pp.367–
379,2013.
名城大学 理工学部 情報工学科 渡邊研究室
120430073中村 隼大
ネットワーク技術が急速に発展
チャットが重要なコミュニケーションツール
◦
クライアントサーバシステムによる実現
◦
チャットを業務で使用できると有用
サーバから情報漏洩する懸念
サーバの障害・二重化等に対する管理
1
クライアントA サーバ クライアントB Internet
エンドツーエンド通信によるチャットの実現
クライアントサーバシステム
2
Global Network
クライアント
Aクライアント
B NATInternet
Private Network
・ クライアントは 経路 を確保
Keep Alive
CS:Chat Server
NAT:Network Address Translation
NAT
クライアント
C Private Network CS
クライアントサーバシステム
3
クライアント
Aクライアント
B NATInternet
CS
メッセージ送信 メッセージ受信
Private Network
・ クライアントは 経路 を確保
・インターネット を経由
CS:Chat Server
NAT:Network Address Translation
NAT
クライアント
C Global NetworkPrivate Network
4
イニシエータ CS NAT レスポンダ
データ送信 データ送信応答
CS:Chat Server データ取得完了応答
データ取得完了 データ取得要求応答
データ取得要求 Keep Alive
・サーバに
データを送信
既読通知 既読通知応答
既読確認
データ受信通知
・メッセージの 受信を通知
・メッセージを取得
Hello
Hello
5
イニシエータ CS NAT レスポンダ
データ送信 データ送信応答
CS:Chat Server データ取得完了応答
データ取得完了 データ取得要求応答
データ取得要求 Keep Alive
・サーバに
データを送信
既読通知 既読通知応答
既読確認
データ受信通知
・メッセージの 受信を通知
・メッセージを取得
Hello
Hello
・メッセージ取得の
確認応答を送信
6
イニシエータ CS NAT レスポンダ
データ送信 データ送信応答
CS:Chat Server データ取得完了応答
データ取得完了 データ取得要求応答
データ取得要求 Keep Alive
・サーバに
データを送信
既読通知 既読通知応答
既読確認
データ受信通知
・メッセージの 受信を通知
・メッセージを取得
Hello
Hello
・既読通知を送信
サーバから情報漏洩する懸念
◦
管理者が情報を取得
サーバの管理負荷
◦
サーバの障害・二重化等に対する管理負荷が大きい
トラフィックが大きい
◦
シーケンスが複雑
◦
メッセージ送信毎、チャットシーケンス全てを実行
7
・
NTMobile上で
E2Eチャットを実現
8
エンドツーエンドの通信を行える
◦
ネットワーク環境(プライベート,グローバル)を意識せず通信
◦
アプリはNATの存在を意識しない
DC:Direction Coordinator Global
Network
Private Network
9
アプリケーション間は仮想
IPアドレスで通信
◦
ネットワーク環境が変わっても変化しないIPアドレス
イニシエータは通信開始時に
DCからの指示に従って レスポンダとの間にトンネルを構築
実際の通信は実
IPアドレスでトンネル通信
◦
実IPアドレスで仮想IPアドレスをカプセル化
実IPアドレス 仮想IPアドレス
エンドツーエンド通信が可能
NTM Signaling
10
イニシエータ DC NAT レスポンダ
トンネル構築応答
UDP トンネル 経路指示要求
通信経路の指示
一回のみ処理を行う
トンネル構築要求 通信経路の指示応答 通信経路の指示
通信経路の指示応答
キャラクタデータ
11
イニシエータ DC NAT レスポンダ
データ送信
応答 キャラクタデータの入力
ファイル転送
12
イニシエータ DC NAT レスポンダ
ファイル転送の指示
TCPコネクション接続
ファイル転送
TCPコネクション切断
・簡単にチャットを実現
NTMobile
上でチャットプログラムを実行
◦ NTM端末のアプリケーション部分の実装
13
Chat Application
NTMobile Daemon
NTM Kernel Module Virtual I/F
Real I/F User space
Kernel space
NTM Tunnel Req/Res etc...
ホストPC
OS Windows7 64bit
CPU Intel Core i7-2600 (3.40GHz) Memory 8.00GB
14
NTM Node A, NTM Node B
OS Ubuntu 12.04 LTS Linux
Kernel 3.2.0-97-generic-pae
CPU Intel Core i7-2600 (3.40GHz) Memory 1GB
Global Network
Private Network DC
NTM NodeB NTM
NodeA
・NTM NodeA、NTM NodeBは
1台のホストPC上に仮想マシンで構築
・DCは既に構築されているサーバを利用
NAT
文字列
”test”を送信
◦
送信側
◦
受信側
送達時間を計測
NTMobile
上で実行時:
1.382[ms]の遅延
◦
ユーザの利用には影響ない
15
送達時間 直接実行
NTMobileUDP
チャット
(キャラクタデータ)
0.047[ms] 1.429[ms]相手FQDN
16
実行回数 従来方式
(
サーバ経由
)提案方式
(UDP)初回
489
2
回目以降
482
17
従来方式
(
サーバ経由
)提案方式
セキュリティ ×
(管理者が情報を取得)
○
(情報漏洩の心配がない)
サーバ管理 ×
(サーバの障害、
二重化等の管理)
△
(CS不要→DC)
(DC:ネットワークのインフラ)
トラフィック ×
(毎回チャットシーケンス実行)
○
(シグナリングは初回のみ)
(必要パケット数の削減)
NTMobile
を用いたエンドツーエンド通信による チャット通信方式
◦
トンネルを構築・経由してキャラクタデータやファイル転送を 直接実行
◦
提案方式の有用性を確認
サーバの管理が不要
サーバから情報漏洩の心配がない
トラフィックの軽減
◦
実装と評価
チャットアプリケーションを実装
仮想環境にて正常に動作することを確認
今後の予定
◦
相手端末が起動していない場合,
大規模なチャットを行う場合の処理について検討
18
相手端末が起動していない場合
◦
従来の方式で通信
20
リトライ 3回目
応答
CN 起動
チャット取得
(CN→CS)
送信完了 チャット送信
(MN→CN)
チャット送信
(MN→CS)
No
No
Yes No
Yes
Yes
MN(Mobile Node) : イニシエータ
CN(Correspondent Node) : レスポンダ
複数人での大規模なチャットを行う場合
◦
数珠つなぎでチャットを行う
21
Internet
数珠繋ぎ チャット
エンドエンド 通信
NTM
端末
NATNAT NAT
イニシエータ レスポンダ
RS
DC
Private Network
22
イニシエータ・レスポンダが共に
NAT配下に 存在する場合の通信の中継
エンドツーエンドで通信を行える
◦ CSと異なりRSは
経由するのみ
Internet
Private Network
23
イニシエータ CS NAT レスポンダ
データ送信 データ送信応答
CS:Chat Server データ取得完了応答
データ取得完了 データ取得要求応答
データ取得要求 Keep Alive
既読通知 既読通知応答
既読確認
データ受信通知
⑪
⑬
⑨
⑮
・
48パケット必要
NTM Signaling
24
イニシエータ DC NAT レスポンダ
トンネル構築応答 経路指示要求
UDPトンネル
通信経路の指示
トンネル構築要求 通信経路の指示応答 通信経路の指示
通信経路の指示応答
NTM Signaling
25
イニシエータ DC NAT レスポンダ
トンネル構築応答
通信経路の指示
UDPトンネル
トンネル構築要求 経路指示要求
通信経路の指示 通信経路の指示応答
通信経路の指示応答
NTM Signaling
26
イニシエータ DC NAT レスポンダ
トンネル構築応答
UDPトンネル
通信経路の指示
通信経路の指示応答 経路指示要求
通信経路の指示応答
トンネル構築要求 通信経路の指示
NTM Signaling
27
イニシエータ DC NAT レスポンダ
トンネル構築応答
UDP トンネル 経路指示要求
通信経路の指示
一回のみ処理を行う
トンネル構築要求 通信経路の指示応答 通信経路の指示
通信経路の指示応答
15.5KB
の
JPG画像ファイルを送信
◦
送信側
◦
受信側
送達時間を計測
NTMobile
上で実行時:
0.618[ms]性能
UP28
送達時間 直接実行
NTMobileTCP