日本ソフトウェア科学会第 36 回大会 (2019 年度) 講演論文集

Claude: ロケーションベース P2P アプリケーション開発フレームワーク
川部 勝也 福田 浩章 三好 匠
近年，車の相乗りや AR ゲームなど，地理情報を利用した様々なサービスやアプリケーションが開発されている．それらサービスの多くは近隣のノードと通信するために P2P 通信を用いている．P2P アプリケーションを実行するデバイスは，セキュリティや IPv4 アドレスの枯渇問題などの理由から，NAT を介したプライベートネットワークに接続している．そのため，インターネットを介した P2P を実現する場合，STUN や TURN といった通信プロトコルを利用し，異なるプライベートネットワークに接続しているピア同士を接続する必要がある．また，地理情報の管理やピアの発見も行う必要がある．P2P アプリケーション開発者は，アプリケーション本来のロジックに加え，P2P を実現するこれらの技術を理解し，自身で実装する必要がある.
そこで本論文では，地理情報を利用した P2P アプリケーションを開発するために必要な通信，地理情報管理，ピアの探索をアプリケーションから分離するフレームワーク，Claude の提案と実装を行う．Claude ではプライベー
トネットワークごとにプロキシサーバを用意し，既存のネットワークトポロジ，ネットワーク機器に大幅な変更を施すことなく地理情報を利用した P2P アプリケーション開発を容易にする．開発者は，Claude が提供する API を使用することにより，プロキシサーバの存在や，通信するピアが異なるプライベートネットワークに存在することを意識することなく P2P アプリケーションを開発することができる．そして，Claude を利用して異なるプライベートネットワークに接続したピア同士のスループットを測定し，同地点でグローバル IP を保持するピア同士のスループットと比較することで，Claude の性能を示す.

Recently, many applications using geolocation information are developing, for example, Uber and Grab.
These applications use P2P to communicate with the neighbor nodes. The devices executing P2P application connect to the Internet via private-network to avoid exhausting the addressing space of IPv4. In
this case, a peer in private-network needs to use some protocols such as STUN and TURN to directorycommunicate with other peers in diﬀerent private-network. Additionally, it is necessary to do managing
geolocation information and looking up other peers. As a result, the application developer must comprehend
and implement P2P communication logic on their application.
Claude is a location-based framework that separates the implementation of P2P communication. That isincluding managing geolocation information, looking up other peers, and communicating with them. Claude
provides the proxy server for each private-network. The proxy server plays managing geolocation information, looking up peers, and communication with other peers without large modifying the network devices
and network topology. And the application developer uses the client library provided by Claude to connect
proxy from an application on the peer. Therefore, the proxy server and the client library helps to isolate
those from the application developer.
In this paper, we propose the location-based P2P framework: Claude. And it indicates that the network
throughput between peers each in private-network is similar to network throughput between the same peers
which have global IP.

1 はじめに
過去 10 年間でスマートフォンを始めとしたポータ
Claude: Location-Based P2P Application Framework
Katsuya Kawabe Hiroaki Fukuda Takumi Miyoshi, 芝浦工業大学, Dept. of , Shibaura Institute Technology.

ブルなコンピュータは大きく普及した. スマートフォンの利用者数は 2014 年に 1.57 億人で, 2020 年には2.87 億人にも昇ると見られている [1]. スマートフォ

ンの機能の主要な一つとして GPS がある. GPS は特リを用いることでプロキシサーバとの通信, ピアの探別なデータのやり取りを必要とせず, 衛生からの信号索ロジックなどを意識することなくアプリケーションを受信することで自身の地理情報を取得することがでの実装が可能となる. 2 節でロケーションベースの関きる技術である. GPS を用いたサービスとして Uber

連研究との差異を示し, 3 節で Claude の基本的な構が存在する. Uber はライドシェアリングサービスと成要素と役割について触れる. また, 具体的なピアの呼ばれる Uber の提供するアプリを通じて, 車を手配探索や地理情報の管理, 通信のアルゴリズムについてして欲しい利用者と時間の空いている運転手をマッチも同節で言及する. 最後に 4 節で Claude を利用してングさせるサービスである. この時, 利用者は自身がプライベートネットワークに接続したピア同士のスどこで待っているかを運転手に伝えるために GPS をループットと同地点でグローバル IP を保持するピア用いてなるべく正確な地理情報を伝えることができ同士のスループットを比較し, Claude の性能についる. また, Tinder というマッチングサービスでは, 利て検証する.

用者の GPS を用いて数 km 圏内に存在する他利用者と優先的にマッチング可能となる仕組みも存在する.

2 関連研究上記のサービスは利用者同士の通信に一部 P2P 通信

本節では Claude と同様にロケーションベースなを用いている [2]. P2P 通信は従来のクライアント/P2P プロトコルについての関連研究について述べる.

サーバ間通信のように他利用者と通信を行う場合はサーバを介さずに利用者同士が直接通信を行う. 利用

2. 1 DGT者のノード (ピア) 同士が直接通信を行うにはお互いDGT [5] は位置情報に基づいてネットワーク構築をの IP アドレスとポート番号番号を指定する必要があ

行うピュア P2P な手法として提案された. DGT でるが, セキュリティや IPv4 アドレスの枯渇問題などは, ネットワークに参加したピアの情報を自身からのの理由から全てのピアが一意な IP アドレスを割り振

距離に応じてグループ分けした Geo-Buckets(GB) とられているわけではなく, NAT を介したプライベー呼ばれるリストを用いる. ピアがネットワークに参加トネットワークに接続している. そのため, インターする時に, 自身の位置情報と共に参加要求を全てのピネットを介した P2P 通信を行う場合は STUN [3] やアの情報管理するブートストラップノードに送信す

TURN [4] といった通信プロトコルを利用することで,る. ブートストラップノードは要求のあったピアの近異なるプライベートネットワークに接続しているピアくに存在するピアのリストを返信することでネット同士の接続を確立する必要がある. 地理情報を用いたワークへの参加を実現している. Claude では DGTサービスを実現するには, これらのプロトコルの理解の Geo-Buckets と類似した手法を用いているがそれやピアの発見, 管理, アプリケーションロジックへのをプロキシが管理することでピアへの負担を軽減し組み込みを行わなくてはならない.ている.

本論文では, 地理情報を利用した P2P アプリケーションを開発するために必要な通信, 地理情報管理,2. 2 Globase.KOM

ピアの探索をアプリケーションから分離するフレー

Globase.KOM [6] はスーパノード型の P2P ネット

ムワーク, Claude の提案と実装を行う. Claude ではワークを位置情報に基づいて構築する手法である.

プライベートネットワークごとにパケットの中継, ピGlobase.KOM では物理的な領域を格子状に分割し,アの検索を担うプロキシサーバを用意し, 既存のネッ各格子領域内に存在するピアから CPU 性能が高く,トワークトポロジ, ネットワーク機器に大幅な変更をネットワーク状況の良好なピアを選択する. 選択され加えることなく, 地理情報を用いた P2P アプリケー

たピアはスーパーノードとして同一領域内に存在すションの開発を容易にする. アプリケーション開発者

るピアからの検索を中継する. これによって各領域は Claude が提供する API やクライアントライブラ間のピアの検索, 通信を実現している. しかし, スーナリングサーバはピア間の通信を実現するためにピアの IP, ポート番号と位置情報に一意な ID を紐付けて管理するサーバである. 次に, シグナリングサーバは条件にマッチしたピアの情報を返信する. そして,アプリケーションは G-LocON の提供するクライアントライブラリを介して, 受信したリストに記載されているグローバル IP とポート番号を元に通信を開始する.

G-LocON はフレームワークとして実装されているが, Android 専用のフレームワークとなっている. ま
図1

G-LocON によるオーバレイネットワーク

た, ピア検索のクエリも対応しているのは近隣のピアをリストアップすることのみのため , ユーザが任意パーノードはネットワークに参加する一般的なピアの地域のピアとコネクションを確立することはできから選出されるため, ピアが不意にダウンする可能性ない.

や移動により, 通信遅延の増加が懸念される. Claudeにおけるプロキシは Globase.KOM のスーパーノー

3 Claudeドと役割が類似しているが, プロキシはピアから選出

本節では Claude の概要と機能を説明する. Claude

されることなく, プロキシ専用のマシンを予めアプリ

ではピアの代わりにプライベートネットワークに予ケーションを運用者が適したものをプライベートネッ

め用意したプロキシがピアの探索や他のピアとの通トワークに配置することで, ピアへの負担を減らす.

信を行う. これによってピアに提供するライブラリとユーザーのアプリケーションはプロキシに地理情報の2. 3 G-LocON管理, 検索, 通信を一任することができる. 加えて, ピG-LocON は図 2. 3 に示すとおり, LTE や Wi-Fi

アはグローバルなネットワークに接続することなくハを用いたロケーションベースの P2P オーバレイネッ

イブリッドな P2P 通信を実現することができる. 以

トワークを構築するためのフレームワークである [7].

下にプロキシを介してピアが異なるプライベートネッ

例えば, ユーザの 1km 圏内にいるピアと通信したいトワークのピアと通信を行うまでの手順を説明する.

場合は G-LocON を用いることでサーバを介さずにピア間の P2P 通信を実現可能となる. ピアはプライ

3. 1 情報の登録

ベートネットワークに接続している場合, 自身のグピアが異なるプライベートネットワークのピアと通ローバルな IP とポート番号を知らない. そのため, ま信を行うには現在の IP とポート番号をベースにしたずピアは自身の情報をグローバルに観測する STUN

ネットワーク通信の仕様上, 相手のピアやプロキシのサーバにアクセスすることでピア自身のグローバルIP, ポート番号や検索を行うための地理情報を取得す

IP とポート番号を確認する. 次に, ピアはシグナリンる必要がある. そのためにプロキシ, ピアは通信を行

グサーバにアクセスすることで一意な ID を付与されう前にお互いの情報が取得可能な場所に自身の情報る. ピアは受け取った ID を L-Tracker というネットを登録しなくてはならない. まずプロキシの情報の登ワークに参加しているピアの地理情報を管理するサー録手順について述べる.

バに自身の経度, 緯度と共に送信することでグローバ

3. 1. 1 プロキシの登録手順

ルな P2P ネットワークに参加する. ピア同士で通信

プロキシは起動後に GPS や外部サービスを用いてを行う時にはピアは必ずシグナリングサーバに 1km自身の経度, 緯度 (地理情報) を取得する. その後, 外圏内のピアのリストのようなクエリを送信する. シグ部のタブレットサーバに地理情報を付与して登録のリクエストを送信する. タブレットサーバは予めプロキニの公式 (1) を用いて計算する. タブレットサーバがシが存在を認知しているプロキシの情報を保存する

保持しているプロキシの情報それぞれに対して D をグローバルなサーバである. リクエストを受け取った求めた後に Dreq > D を満たしたプロキシの IP とタブレットサーバは送信元の IP とポート番号, 付与ポート番号のリストを検索元のプロキシに返信する.

された地理情報に加え, 一意な名前を生成し保存する.

リストを受け取ったプロキシはリストに含まれるプロ

この時タブレットサーバに保存される IP とポート番キシに対して保持しているピアのリストをリクエス

号はプライベートネットワークの IP とポート番号でトする. リクエストを受け取った他のプロキシは自身はなく, グローバルネットワークに接続する時に経由が保持しているピアの名前のリストとプロキシ自身する NAT で変換された後の IP とポート番号である.の名前を返信する. ピアのリストを受け取った検索元

これを他のプロキシが取得することによってプロキシのプロキシはその結果をピアへ中継する. これによっ間の通信が可能となる. そして, タブレットサーバはてピアは指定した経度, 緯度からの一定距離以内に属情報を保存後, 生成した名前をプロキシに返信する.

するプロキシが保持するピアのリストを取得した. 以

生成された名前は実際に通信を行う際に宛先, 送信元降, 検索元のピアは受け取ったリストに含まれるピアのプロキシを判別するために用いられる. 以上でプロの名前とそのピアが登録されているプロキシの名前

キシの情報登録が完了となる.

を元に通信を開始する. √(Dy ∗ M )2 + (Dx ∗ N ∗ cos P )2

3. 1. 2 ピアの登録手順

D=

3. 1. 1 節の手順によってプロキシはタブレットサー

Dy : 2 点の緯度の差バに自身の情報を登録した. その後にプロキシはピア

Dx : 2 点の経度の差からの情報の登録を受付可能となる. ピアはプロキシに情報を登録するために最初にプライベートネットワークに存在するプロキシをブロードキャストを用いて検索する. ブロードキャストを受け取ったプロキ
シはピアへ自身の IP とポート番号を返信する. ピア
はその IP とポート番号に対して自身の地理情報を付与して登録リクエストを送信する. プロキシはピアに一意な名前を割り振り, 地理情報と送信元の IP とP : 2 点の緯度の平均)(Rx 1 − E 2M=: 子午線曲率半径W3√22W = 1 − E ∗ sin P
Rx
N=: 卯酉線曲率半径W√22Rx − Ry
E=: 離心率
Rx2Rx = 6378137.000 : 赤道半径
Ry = 6356752.314 : 極半径(1)

ポート番号を保存し, ピアに割り振った名前を返信す
る. ピアは割り振られた名前を保存し, 登録は完了となる. 割り振られた名前はプロキシと同様に通信の際にデータがどのピアから送られてきたかを判別するために用いる. 以降, 登録を行ったピアはプロキシを介してピアの検索, 通信を行うことができる.

3. 2 ピアの検索
ピアの検索はまず, 検索元のピアが経度, 緯度, 距離(Dreq) を指定し, 検索リクエストをプロキシへ送信する. プロキシは受け取ったリクエストをタブレットサーバへ中継する. タブレットサーバはリクエストに含まれる経度と緯度とタブレットサーバが保持しているプロキシの経度と緯度の 2 点間の距離 D をヒュベ

3. 3 ピア間の通信
3. 1, 3. 2 節の手順によって, ピアは経度, 緯度, 距離を指定することで通信したいピアの情報を取得可能となった. 次に, ピアが取得したリストに含まれるピアと通信を中継する時の手順を示す.

3. 3. 1 通信の疎通確認
通信を行うピアとプロキシの例を図 2 に示す. プロ
キシとピアの組が 2 つ存在し, それぞれプライベートネットワークに属し, IP とポート番号が割り振られている. プロキシとピアにはそれぞれ一意な名前が割り振られており, 図中では Proxy-A, Peer-A, Proxy-B,Peer-B としている. プライベートネットワークのプ

を送信する際にはネットワークの仕組みとして送信するデータに宛先となる IP とポート番号を指定する必要がある. しかし, 現状の仕組みでは 1 つのデータに対して IP とポート番号は 1 つしか指定できない. その場合, Peer-A が Peer-B の IP とポート番号を指定した場合, NAT は宛先がプライベートネットワークのマシンだと思い, データは存在しない IP とポート番号に転送される. 同様に Proxy-A の IP とポート番号を指定した場合でも, Proxy-A に対してデータは届
図2

ピアとプロキシの構成例

くが, その後に Proxy-B に対してデータを転送するための情報が欠如している. 正しくデータを中継し, 別ロキシがプライベートネットワーク外のピアやプロキのプライベートネットワークのピアに転送するためにシ, タブレットと通信する際には NAT を経由して通Claude では送信するデータに以下の情報を付与する.

信する. また, 本節では通信の開始を Peer-A から行• 送信元のピアの名前

い, それぞれのプロキシを経由して宛先の Peer-B に• 送信元のピアが属するプロキシの名前

対してデータを中継する. まず, Peer-A は 3. 2 節で• 宛先のピアの名前の手順に則りピアを検索した結果, Proxy-B の名前と• 宛先のピアが属するプロキシの名前

Peer-B の名前を取得した. 次に Peer-A は Proxy-A

Peer-A は上記の情報が付与されたデータを Proxy-A

に対し, Proxy-B に属する Peer-B と通信を行う旨のに送信する. Proxy-A は受け取ったデータから宛先リクエストを送信する. Proxy-A は Proxy-B の名前のプロキシの名前を元に先程保存した Proxy-B の IPを鍵としてタブレットサーバに問い合わせる. タブとポート番号に対してデータを中継する. もし, このレットサーバは Proxy-B の IP とポート番号番号を返時 Proxy-B の情報が存在しなければ名前を元にタブ信する. そして, Proxy-B に対して Peer-B と通信をレットサーバに問い合わせ Proxy-B の IP とポート番確立するリクエストを送信する. 同時に Proxy-B の号を取得し解決する. Proxy-B は受け取ったデータかIP とポート番号を保存しておく. Proxy-B はリクエ

ら宛先のピアの名前を取得する. Peer-B の名前を鍵ストを受け取り, 自身が管理しているピアのリストかに自身が管理しているピアのリストから対応する IP

ら Peer-B を鍵として対応する IP とポート番号を取とポート番号を取得する. そして, Proxy-B は取得し得する. この時, 先程と同様に Proxy-A の名前と IP

た IP とポート番号に対してデータを送信することでとポート番号の情報を保存しておく. Proxy-B は取得

Peer-B にデータが届く.

した Peer-B の IP とポート番号に通信可能かを問い合わせる. Peer-B は通信可能な状態であればその旨以上の手順によってピアの検索, 通信の中継をプロキシを介して行えることを示した.

を Proxy-B に返信する. Peer-B から返信を受け取った Proxy-B は Proxy-A へ通信可能な旨を返信する.

4 スループットの評価最後に Proxy-A が Peer-A へ Proxy-B, Peer-B が通Claude の性能評価のために, プロキシを経由した信可能な状態であることが伝わることで Peer-A は通ピア間の通信とそうでない場合のスループットを検証信を開始することができる.

した. 2 つのピアを準備し, 一方のピアからもう一方

3. 3. 2 通信の中継のピアへ 1GB のデータを送信した場合にかかった時

Peer-A は Peer-B が通信可能な状態であることを間を評価する. 検証には Google Cloud Platform を確認した後に実際に Proxy-A, Proxy-B を経由して用いて仮想マシンを東京と大阪, オレゴンに用意し,Peer-B へのデータの送信を開始する. 実際にデータ東京-大阪間と東京-オレゴン間のスループットをそれ間のパケットのスループットを検証し, 提案手法でのオーバヘッドが許容範囲内であることを示した. しかし, 常に近隣のピアと検索, 通信を行うアプリケーションを実装する場合はタブレットサーバに検索クエリが集中してしまう. これを解決するためにタブレットサーバ, プロキシが保持するデータ構造と手順を改善し, 検索にかかる負荷の分散を図らなくてはならない.
参 考 文 献図3

評価: 各リージョン間におけるスループットぞれの手法で計測した. ピア間のプロキシを経由しない場合のデータの転送には一般的なスループット検証ツールである iperf3 を用いた. その結果を図 3 に示す.
図にある通り, プロキシを経由した場合とそうでない場合の転送時間にはほぼ差がないことがわかる. これはヘッダをプロキシで検証するオーバヘッドはあるが, 同一プライベートネットワーク内でのデータ転送におけるスループットが 2.0Gbps [8] と非常に高速なことから, iperf3 によるリージョン間の通信コストとほぼ差がなかったと考える.

5 まとめと今後の課題
プライベートネットワーク内に存在する様々なプラットフォームのピアが内部, 外部問わずに通信可能となるフレームワークを提案, 実装した. また, ピア[ 1 ] Statistica, Number of smartphone users worldwide from 2014 to 2020 , 2018 [Online]. Available:
https://www.statista.com/statistics/330695/numberof-smartphone-users-worldwide[ 2 ] investopedia ” Peer-to-Peer (P2P) Service”
https://www.investopedia.com/terms/p/peertopeerp2p-service.asp[ 3 ] Rosenberg, Jonathan, et al. ”STUN-simple
traversal of user datagram protocol (UDP) throughnetwork address translators (NATs).” (2003).
[ 4 ] https://tools.ietf.org/html/rfc5766[ 5 ] Picone, Marco, Michele Amoretti, and Francesco
Zanichelli. ”Proactive neighbor localization basedon distributed geographic table.” International
Journal of Pervasive Computing and Communications 7.3 (2011): 240-263.
[ 6 ] Kova, Aleksandra, Nicolas Liebau, and Ralf
Steinmetz. ”Globase. kom-a p2p overlay for fully retrievable location-based search.” Seventh IEEE International Conference on Peer-to-Peer Computing(P2P 2007). IEEE, 2007.
[ 7 ] Miyoshi Takumi, Shimomura Yusuke, Fourmaux Olivier. (2019). A P2P-based Communication
Framework for Geo-Location Oriented Networks.
Journal of Telecommunications and Information
Technology. 1. 58-66. 10.26636/jtit.2019.131119.
[ 8 ] https://www.apps-gcp.com/gce-performance-survey/