IIJmio meeting 5 MVNOとGPSについて
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

IIJmio meeting 5 MVNOとGPSについて

on

  • 1,578 views

この資料はIIJmio meeting 5で発表されたものです。詳細は下記blogをご覧下さい。

この資料はIIJmio meeting 5で発表されたものです。詳細は下記blogをご覧下さい。
http://techlog.iij.ad.jp/archives/1293

Statistics

Views

Total Views
1,578
Views on SlideShare
334
Embed Views
1,244

Actions

Likes
5
Downloads
6
Comments
0

4 Embeds 1,244

http://techlog.iij.ad.jp 1156
https://twitter.com 86
http://www.google.co.jp 1
https://www.inoreader.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

IIJmio meeting 5 MVNOとGPSについて Presentation Transcript

  • 1. 1 IIJmiomtg#5 MVNOとGPSについて 株式会社インターネットイニシアティブ
  • 2. 2 •名前 大内宗徳 •所属 ネットワーク本部ネットーワークサービス部技術開発課 •経歴 2002年IIJ入社。以降、研究開発部門に所属 •業務内容 ネットワークサービス全般の技術調査、機器の動作検証、 研究開発 インターネット関連の技術調査、コアルータやスイッチ等機器の動作検証、 ツール開発 モバイル関連の技術調査、機器の動作検証、ツール開発 社内エンジニアの後方支援 最近はモバイルの端末挙動調査からコアネットワーク設備まで色々やってい ます! 自己紹介/初めてなので
  • 3. 3 MVNOのGPSについて •ネット上ではMVNOとGPSについて情報があふ れています •ただし、古い情報や正しくない情報も散見されます •次の2つ問題に焦点をあてて解説していきます 1.MVNOではGPSが使えない? 2.MVNOでGPSの位置情報取得を高速にで きるのか?
  • 4. 4 •端末のGPS機能は使うことは出来ます!でき るはずです ->ただし、端末によってGPSの位置情報取得に かなり時間がかかる場合がある (白ロム端末だと顕著になる場合も) ->MVNOだとGPSが使えない、という誤解に •この原因を理解するために下記の2つを解説 •Android端末の位置情報取得 •GPSとA-GPSの仕組みについて解説 1.MVNOではGPSが使えない?
  • 5. 5 (注1)運が良ければこの精度で (注2)GPSを直近で使っていれば、暫くの間は早く取得可能 (注3)Android4.4以降では改善されているらしい。LGG2mini(4.4.2)で確認 無線LAN MNOの基地局情報 GPS 位置特定に利用す る情報 BSSID Cell ID 衛星の信号 位置情報精度 数十~百m (注1) 数百m~数km (注1) 数m 位置取得の時間 早い 早い 遅い(注2) 無線LANをON 必要 不要 不要 Googleサーバへの 到達性 必要 必要 不要 音声orSMS契約 必要なし 必要(注3) 不要 Android端末での位置情報取得
  • 6. 6 Android端末での位置情報取得/GoogleMAP •飯田橋のIIJ本社で試した結果 •端末SO-03D で、MVNOSIM利用 •大体の位置ならば無線LANでもOK。GPSは時間がかかる 無線LAN 基地局GPS
  • 7. 7 GPSについて •ただし、正確な位置把握のためにはGPSが必要 ->本題のGPSの話題に •GPS概要については省略 •GPSによる位置情報の取得は仕組み的に時間が 掛かる •この仕組みをもう少し掘り下げて説明
  • 8. 8 GPSで位置情報を取得する手順 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 (補足) 1、2の処理は時間がかかる。3,4の処理は短時間で完了 エフェメリス: 衛星の詳細な位置情報 アルマナック: 衛星の概略の位置情報
  • 9. 9 TimeToFirstFix(TTFF) •GPS端末が初期の位置情報取得までにかかる時間 •GPS端末の位置情報を取得する性能指標として用いられる •参考:SiRFStarIII™ http://hyperlogos.org/files/GSC3%28f%29_6.20.05.pdf •おおまかに分けて3つの状態で値が示されている •ColdStart GPS衛星に関する情報を何も持ってない状態 30秒~数分かかる •WarmStart GPS時刻、アルマナック、過去に計算済の位置情報を持つ状態 30秒~1分 •HotStart 2-3時間以内のエフェメリス、計算済の位置情報を持つ状態 数秒以内
  • 10. 10 ColdStartとの関係 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 1-5のすべての処理を行うため時間がかかる!
  • 11. 11 WarmStartとの関係 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 1は以前に取得したアルマナック等の情報からサーチを高速化 でき、また、2のナビゲーションメッセージ取得を一部省ける分、 時間が短くなる!
  • 12. 12 HotStartとの関係 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 1,2の処理を省けるため、大幅に時間が短縮される!!
  • 13. 13 GPSとA-GPSの関係について •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星を割だして位置情報を逐次更新 1,2の部分の情報をIPネットワークから提供する ことで、HotStartに近い時間短縮を目指す! =>(MS-based)A-GPS
  • 14. 14 •ここまで説明して最初の話に戻ります •MVNOでGPSの動作を高速化出来ないのか? ->キャリア端末でもアプリでGPSを高速化できる ただし、一部端末は無理 •GPSの高速化、A-GPS実装について解説 A-GPSについて AndroidのA-GPSの実装 (おまけ)A-GPSサーバとの通信プロトコル解析 2.MVNOでGPSの位置情報取得を高速にできるのか?
  • 15. 15 A-GPSについて-1 一般的なA-GPSの実装は2種類に大別される 1.SUPLに基づく実装 •SUPL(SecureUserPlaneLocation) •OMASecureUserPlaneLocationV1.0/V2.X •3GPPTS44.031 •LocationServices(LCS);MobileStation(MS)-ServingMobileLocationCentre(SMLC)RadioResourceLCSProtocol(RRLP) •特徴 •IP通信でのSUPLサーバからGPS測位補助情報を取得可能 •モバイルデータ通信が必要->無線LAN経由は不可 •標準化されたプロトコルを利用 •SSL/TCPport7275を利用 •SUPLサーバをSSL証明書で確認 •GoogleはSSLを使わないport7276も利用 •利用できる端末が制限されることが多い •キャリア網内からしかアクセスできない •IMSI/MSISDNの認証等がある
  • 16. 16 A-GPSについて-2 2.GPSチップメーカー独自実装 •特徴 •IP通信でのサーバからGPS測位補助情報を取得可能 •アクセスネットワークなんでも良い(3G/LTE/WiFi..) •HTTPでデータをダウンロードしてGPSチップに与える •エフェメリス、アルマナック等を含む •データフォーマットはベンダー独自 •1週間前後有効な場合が多い •情報を取得するのに認証等は不要 •MVNOからでも利用可能! •ベンダー実装例 •Qualcomm:gpsOneXTRA •Broadcom:LongTermOrbit(LTO) •MediaTek:ExtendedPredictionOrbit(EPO)
  • 17. 17 AndroidのA-GPSの実装-1 •A-GPSの実装 •SUPLとGPSチップメーカーの独自実装の両対応APIあり •ただし、端末メーカーによって対応が異なる •無線LANのみ端末->メーカー独自のみ •3G/LTE端末->両方対応orSUPLのみ対応 •A-GPSに関する設定 •/system/etc/gps.conf–端末によって違うファイル、隠しモードで設定 •root権限がないと書き換え不可能 •設定からでは変更できない値が多い •GPSのドライバーにハードコーディング? •SSL利用の有無の設定はできない? •3G/LTE経由でSUPLの有効化 •APNタイプが未設定ordefault,suplの記述であればOK •端末によってはこの値を見てない場合も… •SSL証明書を利用したSUPLサーバの確認 •NTTドコモの端末は確認を行っている(?) •SIMフリー端末だとSSLを利用してないものがほとんど
  • 18. 18 •A-GPSの利用 1.SUPL利用 •GPSを利用する位置情報取得APIが叩かれると、SUPL サーバへアクセスして補助情報の取得を試みる •SUPLサーバへのアクセス •ドコモ端末:dcm-supl.com/MSISDN/SSLport7275 •SIMフリー端末:supl.google.com/IMSI/SSLなしport7276 •一部のSIMフリー端末だと、音声/SMS契約がないと SUPLが正常に利用できない場合が 2.GPSチップメーカー独自実装の利用 •アプリで明示的にAPIを叩かないと利用出来ない?! AndroidのA-GPSの実装-2
  • 19. 19 AndroidのA-GPSの実装-3 •GPSチップメーカー独自実装のA-GPSの利用 •APIを明示的に叩く場合の例 •実際の利用方法 •GPSStatus&ToolboxなどのAPIを叩くアプリを利用 •注意点 •APIを叩いても正常に動作したかはわからない •独自実装がされてなくても、APIは叩ける android -Problems with sendExtraCommandand force_xtra_injection-Stack Overflow http://stackoverflow.com/questions/4961514/problems-with-sendextracommand-and-force-xtra- injection public static void downloadGPSXtra(Context context) { LocationManagerlocationmanager= (LocationManager)context.getSystemService("location"); Bundle bundle= new Bundle(); locationmanager.sendExtraCommand("gps", "force_xtra_injection", bundle); locationmanager.sendExtraCommand("gps", "force_time_injection", bundle); }
  • 20. 20 AndroidのA-GPSの実装-4 •GPSStatus&Toolboxの画面サンプル
  • 21. 21 AndroidのA-GPSの実装-5 •GPSStatus&Toolboxを利用してTTFFを測定 •それぞれ2回試した。単位は秒 •(注)端末のA-GPSデータを消去したColdStart状態で計測 GPSStatus&Toolbox->ManageA-GPSstate->Reset SO-03D:*#*#7378423#*#*->Servicetests->GPS->Purgeassistancedata LGG2mini:3845#*620#->GNSSTest–>DeleteAidingData GPSのみ A-GPS(SUPL) SUPLサーバ A-GPS(メーカー独自) SO-03D/Xi SIM 35/47 19/20 ドコモ 10/11 SO-03D/IIJSIM 39/34 34/33(注) ドコモ 8/17 AscendG6/IIJ SIM 69/70 12/8 Google 10/11 LG G2 mini/IIJ SIM 197/254 42/55 Google 16/27 •GPS信号の捕捉時間は端末に依存 •GPSのみに比べて、A-GPSを利用すると早くなる •MVNOSIMでもA-GPS(メーカー独自)利用で高速化! (注)NTTドコモのSUPLは利用できません。
  • 22. 22 まとめ 1.MVNOではGPSが使えない? ->使えます! GPSの仕組み的に時間がかかるため、その理由を解説 2.MVNOでGPSの位置情報取得を高速にでき るのか? ->キャリア端末でもアプリを使えば高速化出来ます! (ただし、一部端末ではダメ) GPSのTTFFを高速化するA-GPSについて解説 実際にA-GPSを利用したTTFFを測定して確認
  • 23. 23 おまけ -Apple(iPhone)のA-GPSの実装 -A-GPSサーバとのSUPLプロトコル解析 -dcm-supl.comのSUPLプロトコル解析 -supl.google.comのSUPLプロトコル解析
  • 24. 24 Apple(iPhone)のA-GPSの実装-1 •A-GPSの実装 •GPSチップメーカーの独自実装のみ?! •SUPLは利用してないらしい (参考) When Assistance Becomes Dependence: Characterizing the Costs and Inefficiencies of A-GPS http://www.tid.es/sites/526e527928a32d6a7400007f/content_entry5321ef0928a32d08900000ac/533c077028a32da56a0024fc/files/agps_mc2r_2013.pdf •キャプチャでも、TCPport7275向けの通信は見つからず •A-GPSに関する設定 •設定は一切不可 •位置情報サービスのOFF/ONぐらい •GPSのチップ •端末世代毎にGPSのチップが異なる •世代毎に異なるデータをダウンロードして利用 •iPhone3G:LTO •iPhone4S:gpsOneXTRA •iPhone5/5S/6:?
  • 25. 25 •GPSチップメーカー独自実装の利用 •iPhone5c(iOS8.1)の場合 •位置情報取得APIを叩くと、謎のバイナリデータを取得 •これがA-GPSのデータか?! •モバイル通信/Wi-Fiどちららでも同じ挙動 •Appleサーバからなので、MVNO SIMでも問題ない •HTTPS経由で取得 •TTFFの計測テスト •できませんでした。。。 •困った点 •A-GPSデータを消去できない? •コールドスタート状態に戻せないので、比較試験が出来ず •A-GPSデータ無効相当にするは1週間以上の放置が必要 •A-GPSデータが有効であるかの確認がアプリからでは難しい •iOSはNMEA形式でのGPSデータ出力をサポートしてない? (参考) Android でGPS 衛星からの情報をNMEA 形式で取得する方法-A Day In The Life http://d.hatena.ne.jp/glass-_-onion/20101123/1290522121 Apple(iPhone)のA-GPSの実装-2
  • 26. 26 •謎バイナリデータ(A-GPSデータ?) •Proxyを設定し、mitmproxyでHTTPS通信を監視して確認 (参考) iPhone -iOS実機のSSL通信をプロキシによって傍受したり改ざんする方法-Qiita--- http://qiita.com/yimajo/items/c67cb711851f747c35e5 2014-10-23 15:47:43 GET https://cl2.apple.com/4/v1/124/318/1240000_3180000_0000000001B8000A.gz ← 200 application/x-gzip468.74kB 4.15MB/s Request Response Host: cl2.apple.com User-Agent: locationd/1753.17 CFNetwork/711.1.12 Darwin/14.0.0 Connection: close Proxy-Connection: close https://cl2.apple.com/4/v1/124/318/1240000_3180000_0000000001B8000A.gz ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 上記^部分はアクセスされるごとに異なる。ルールは不明 上記ファイルを解答して調べたがバイナリーファイルで正体不明 頻繁に異なる種類のファイルをダウンロードする場合も Apple(iPhone)のA-GPSの実装-3
  • 27. 27 (おまけ)無線LAN/基地局から情報取得するAPI •iPhone5c(iOS8.1)の場合 (参考)Apple社のGeoLocationシステム周りに関するお話 http://d.hatena.ne.jp/RobinEgg/20140113/p1 2014-10-2315:47:43POSThttps://gs-loc.apple.com/clls/wloc Host:gs-loc.apple.com Proxy-Connection:keep-alive Accept-Encoding:gzip,deflate Content-Type:application/x-www-form-urlencoded Accept-Language:en-us Connection:keep-alive Accept:*/* Content-Length:70 User-Agent:locationd/1753.17CFNetwork/711.1.12Darwin/14.0.0 Hex000000000000010005656e5f55530013636f6d2e61....en_US..com.a 000000001070706c652e6c6f636174696f6e64000apple.locationd.. 0000000020382e312e3132423431310000000100008.1.12B411...... 0000000030001418002001ca010d08b803100a1883............... 0000000040f69014209028....( Apple(iPhone)のA-GPSの実装-4
  • 28. 28 A-GPSサーバとのSUPLプロトコル解析-1 •SUPLサーバとのやりとりをキャプチャ •supl-client/supl-proxyをベースに独自改良 •Assisted GPS (AGPS) SUPL client and proxy •http://www.tajuma.com/supl/ •Patch to build supl-proxy and fallback to non-TLS connection •https://gist.github.com/kanru/3713093 •キャプチャ環境 [supl-client]--(非SSL/TCP)--[supl-proxy]—(SSL/TCP)—[SUPLserver] [端末]-------(非SSL/TCP)--[socat]—--(非SSL/TCP)—[SUPLserver] ^^^^^^^^^^^^^^ ここでキャプチャ
  • 29. 29 A-GPSサーバとのSUPLプロトコル解析-2 •SUPLプロトコルの基本的なやりとり [端末]------SUPLSTART-----[SUPLサーバ] ----SUPLRESPONSE---- ------SUPLPOSINIT---- ----SUPLPOS--------- •(注意)TCP/SSL通信なので前後に他のシーケンスがあるが詳細略
  • 30. 30 SUPLサーバ:dcm-supl.com-1 •試験環境 •Xiデータ通信サービスSIMを利用 •APN:mopera.net •supl-clientツールを利用してアクセス •tcpdumpでキャプチャ •Wiresharkでデコード •参考:DNSでの名前解決 •IIJmio SIM (host) /root >host dcm-supl.com Host dcm-supl.com not found: 2(SERVFAIL) •Xiデータ通信SIM (host) /root >host dcm-supl.com dcm-supl.com has address 61.195.xxx.xxx
  • 31. 31 SUPLSTART例SUPLRESPONSE例 OMA UserPlaneLocation Protocol ULP-PDU length: 30 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXX message: msSUPLSTART(1) msSUPLSTART sETCapabilities posTechnology .... ..0. agpsSETassisted: False .... ...1 agpsSETBased: True 0... .... autonomousGPS: False .0.. .... aFLT: False ..0. .... eCID: False ...0 .... eOTD: False .... 0... oTDOA: False prefMethod: agpsSETBasedPreferred(1) posProtocol 0... .... tia801: False .1.. .... rrlp: True ..0. .... rrc: False locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 410 refMNC: 10 refUC: 3752005 status: stale (0) OMA UserPlaneLocation Protocol ULP-PDU length: 32 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXX slpSessionID sessionID: d00535ea slpId: fQDN(1) fQDN: dcm-supl.com message: msSUPLRESPONSE(2) msSUPLRESPONSE posMethod: agpsSETbased(1) SUPLサーバ:dcm-supl.com-2
  • 32. 32 SUPLPOSINIT例 OMA UserPlaneLocation Protocol ULP-PDU length: 49 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXX slpSessionID sessionID: d00535ea slpId: fQDN(1) fQDN: dcm-supl.com message: msSUPLPOSINIT(3) msSUPLPOSINIT sETCapabilities posTechnology ...0 .... agpsSETassisted: False .... 1... agpsSETBased: True .... .0.. autonomousGPS: False .... ..0. aFLT: False .... ...0 eCID: False 0... .... eOTD: False .0.. .... oTDOA: False prefMethod: agpsSETBasedPreferred(1) posProtocol .... .0.. tia801: False .... ..1. rrlp: True .... ...0 rrc: False requestedAssistData ..1. .... almanacRequested: True ...0 .... utcModelRequested: False .... 0... ionosphericModelRequested: False .... .0.. dgpsCorrectionsRequested: False .... ..1. referenceLocationRequested: True .... ...1 referenceTimeRequested: True 1... .... acquisitionAssistanceRequested: True .0.. .... realTimeIntegrityRequested: False ..1. .... navigationModelRequested: True navigationModelData gpsWeek: 0 gpsToe: 0 nSAT: 0 toeLimit: 0 locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 410 refMNC: 10 refUC: 13182428 status: stale (0) SUPLサーバ:dcm-supl.com-3
  • 33. 33 SUPLPOS例-1 OMA UserPlaneLocation Protocol ULP-PDU length: 1689 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXXXXX slpSessionID sessionID: d00535ea slpId: fQDN(1) fQDN: dcm-supl.com message: msSUPLPOS(4) msSUPLPOS posPayLoad: rrlpPayload(2) rrlpPayload: 201178de99a9f8998a52618a43... Radio Resource LCS Protocol (RRLP) PDU referenceNumber: 1 component: msrPositionReq(0) msrPositionReq positionInstruct methodType: msBased(1) msBased: 60 positionMethod: gps(1) measureResponseTime: 5 useMultipleSets: oneSet(1) gps-AssistData controlHeader referenceTime gpsTime gpsTOW23b: 5569612 gpsWeek: 788 gpsTowAssist: 11 items Item 0 GPSTOWAssistElement satelliteID: 19 tlmWord: 788 antiSpoof: 1 alert: 0 tlmRsvdBits: 0 Item 1 GPSTOWAssistElement satelliteID: 27 tlmWord: 788 antiSpoof: 1 alert: 0 tlmRsvdBits: 0 . refLocation. threeDLocation: 9032c5ac635f9900401111007f00 1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9) 0... .... = Sign of latitude: North (0) .011 0010 1100 0101 1010 1100 = Degrees of latitude: 3327404 (35.69918 degrees) Degrees of longitude: 6512537 (139.74389 degrees) 0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0) .000 0000 0100 0000 = Altitude in meters: 64 .001 0001 = Uncertainty semi-major: 17 (40.5 m) .001 0001 = Uncertainty semi-minor: 17 (40.5 m) Orientation of major axis: 0 .111 1111 = Uncertainty Altitude: 127 (990.5 m) .000 0000 = Confidence(%): 0 . GPS時刻-> 位置情報-> SUPLサーバ:dcm-supl.com-4
  • 34. 34 SUPLPOS例-2 navigationModel navModelList: 11 items Item 0 NavModelElement satelliteID: 19 satStatus: newSatelliteAndModelUC(0) newSatelliteAndModelUC ephemCodeOnL2: 1 ephemURA: 0 ephemSVhealth: 0 ephemIODC: 92 ephemL2Pflag: 0 ephemSF1Rsvd reserved1: 0 reserved2: 0 reserved3: 0 reserved4: 0 ephemTgd: -17 ephemToc: 27900 ephemAF2: 0 ephemAF1: 38 ephemAF0: 517171 ephemCrs: 997 ephemDeltaN: 15911 ephemM0: -412499778 ephemCuc: 891 ephemE: 51890437 ephemCus: 3884 ephemAPowerHalf: 2702030612 ephemToe: 27900 ephemFitFlag: 0 ephemAODA: 31 ephemCic: -26 ephemOmegaA0: -2034760447 ephemCis: 31 ephemI0: 633654509 ephemCrc: 7269 ephemW: 909022217 ephemOmegaADot: -24347 ephemIDot: 900 . almanac alamanacWNa: 21 almanacList: 32 items Item 0 AlmanacElement satelliteID: 0 almanacE: 7451 alamanacToa: 15 almanacKsii: 3144 almanacOmegaDot: -688 almanacSVhealth: 0 almanacAPowerHalf: 10554631 almanacOmega0: 5898737 almanacW: 1148377 almanacM0: 5429806 almanacAF0: 23 almanacAF1: 0 . . acquisAssist timeRelation gpsTOW: 5569612 acquisList: 11 items Item 0 AcquisElement svid: 19 doppler0: 249 addionalDoppler doppler1: 28 dopplerUncertainty: 4 codePhase: 367 intCodePhase: 12 gpsBitNumber: 0 codePhaseSearchWindow: 0 addionalAngle azimuth: 12 elevation: 7 . . エフェメリス-> アルマナック-> 衛星補足 補助情報-> SUPLサーバ:dcm-supl.com–5
  • 35. 35 SUPLサーバ:supl.google.com-1 •試験環境 •MVNO(IIJSIM)を利用 •SMS+データ通信SIM •データ通信SIM •APN:IIJのテスト用APN •DNSサーバでsupl.google.comのアドレスをキャプチャ用 サーバのアドレスを返して、トラフィックを捻じ曲げた •端末 •ASUSFonepadME371MG •LGG2mini •tcpdumpでキャプチャ •Wiresharkでデコード
  • 36. 36 SUPLサーバ:supl.google.com-2 SUPLSTART例 データ通信SIMを利用した場合-ASUSFonepadME371MG OMA UserPlaneLocation Protocol ULP-PDU length: 18 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 446 setId: imsi(3) imsi: 441030…….. message: msSUPLEND(5) msSUPLEND statusCode: systemFailure(1) <-正常なリクエストが 送られていない A-GPS動作せず
  • 37. 37 SUPLサーバ:supl.google.com-3 SMS+データ通信SIMを利用した場合-ASUSFonepadME371MG SUPLSTART例SUPLRESPONSE例 OMA UserPlaneLocation Protocol ULP-PDU length: 30 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 502 setId: imsi(3) imsi: 441030….. message: msSUPLSTART(1) msSUPLSTART sETCapabilities posTechnology .... ..1. agpsSETassisted: True .... ...1 agpsSETBased: True 1... .... autonomousGPS: True .0.. .... aFLT: False ..0. .... eCID: False ...0 .... eOTD: False .... 0... oTDOA: False prefMethod: noPreference(2) posProtocol 0... .... tia801: False .1.. .... rrlp: True ..0. .... rrc: False locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 status: current (1) qoP horacc: 19 maxLocAge: 1 OMA UserPlaneLocation Protocol ULP-PDU length: 26 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 502 setId: imsi(3) imsi: 441030...... slpSessionID sessionID: 4a125ae4 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLRESPONSE(2) msSUPLRESPONSE posMethod: agpsSETbased(1)
  • 38. 38 SUPLサーバ:supl.google.com-4 SMS+データ通信SIMを利用した場合-ASUSFonepadME371MG SUPLPOSINIT例 OMA UserPlaneLocation Protocol ULP-PDU length: 40 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 502 setId: imsi(3) imsi: 441030……. slpSessionID sessionID: 4a125ae4 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLPOSINIT(3) msSUPLPOSINIT sETCapabilities posTechnology .... 1... agpsSETassisted: True .... .1.. agpsSETBased: True .... ..1. autonomousGPS: True .... ...0 aFLT: False 0... .... eCID: False .0.. .... eOTD: False ..0. .... oTDOA: False prefMethod: noPreference(2) posProtocol .... ..0. tia801: False .... ...1 rrlp: True 0... .... rrc: False requestedAssistData ...0 .... almanacRequested: False .... 0... utcModelRequested: False .... .0.. ionosphericModelRequested: False .... ..0. dgpsCorrectionsRequested: False .... ...1 referenceLocationRequested: True 1... .... referenceTimeRequested: True .0.. .... acquisitionAssistanceRequested: False ..0. .... realTimeIntegrityRequested: False ...1 .... navigationModelRequested: True navigationModelData gpsWeek: 0 gpsToe: 0 nSAT: 0 toeLimit: 0 locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 status: current (1)
  • 39. 39 SUPLサーバ:supl.google.com-5 SMS+データ通信SIMを利用した場合-ASUSFonepadME371MG SUPLPOS例-1 OMA UserPlaneLocation Protocol ULP-PDU length: 948 version maj: 1 min: 0 servind: 0 . . message: msSUPLPOS(4) msSUPLPOS posPayLoad: rrlpPayload(2) rrlpPayload: 24134053f68cc51b206... Radio Resource LCS Protocol (RRLP) PDU referenceNumber: 1 component: assistanceData(2) assistanceData gps-AssistData controlHeader referenceTime gpsTime gpsTOW23b: 5502604 gpsWeek: 788 refLocation threeDLocation: 9032c737635ff000642c2c007f27 1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9) 0... .... = Sign of latitude: North (0) .011 0010 1100 0111 0011 0111 = Degrees of latitude: 3327799 (35.70341 degrees) Degrees of longitude: 6512624 (139.74576 degrees) 0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0) .000 0000 0110 0100 = Altitude in meters: 100 .010 1100 = Uncertainty semi-major: 44 (652.6 m) .010 1100 = Uncertainty semi-minor: 44 (652.6 m) Orientation of major axis: 0 .111 1111 = Uncertainty Altitude: 127 (990.5 m) .010 0111 = Confidence(%): 39 navigationModel navModelList: 13 items Item 0 NavModelElement satelliteID: 0 satStatus: newSatelliteAndModelUC(0) newSatelliteAndModelUC ephemCodeOnL2: 0 ephemURA: 0 ephemSVhealth: 0 ephemIODC: 81 ephemL2Pflag: 0 ephemSF1Rsvd reserved1: 0 reserved2: 0 reserved3: 0 reserved4: 0 ephemTgd: 12 ephemToc: 27450 ephemAF2: 0 ephemAF1: 4 ephemAF0: 47254 ephemCrs: -1071 ephemDeltaN: 12399 ephemM0: 231454399 ephemCuc: -905 ephemE: 30423662 ephemCus: 5640 ephemAPowerHalf: 2702010424 ephemToe: 27450 ephemFitFlag: 0 ephemAODA: 31 ephemCic: 41 ephemOmegaA0: 1593627408 ephemCis: 24 ephemI0: 657148950 ephemCrc: 5735 ephemW: 290747099 ephemOmegaADot: -22274 ephemIDot: 704 . GPS時刻-> 位置情報-> エフェメリス->
  • 40. 40 SUPLサーバ:supl.google.com-6 データ通信SIMを利用した場合–LGG2mini SUPLSTART例 OMA UserPlaneLocation Protocol ULP-PDU length: 41 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 0 setId: imsi(3) imsi: 441030………… message: msSUPLSTART(1) msSUPLSTART sETCapabilities posTechnology .... ..0. agpsSETassisted: False .... ...1 agpsSETBased: True 1... .... autonomousGPS: True .0.. .... aFLT: False ..1. .... eCID: True ...0 .... eOTD: False .... 0... oTDOA: False prefMethod: noPreference(2) posProtocol 0... .... tia801: False .1.. .... rrlp: True ..0. .... rrc: False locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 OMA UserPlaneLocation Protocol ULP-PDU length: 26 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 0 setId: imsi(3) imsi: 441030……………. slpSessionID sessionID: 9bebd352 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLRESPONSE(2) msSUPLRESPONSE posMethod: agpsSETbased(1) SUPLRESPONSE例 primaryScramblingCode: 427 measuredResultsList: 1 item Item 0 MeasuredResults frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 cellMeasuredResultsList: 1 item Item 0 CellMeasuredResults modeSpecificInfo: fdd(0) fdd primaryCPICH-Info primaryScramblingCode: 427 cpich-Ec-N0: 43 cpich-RSCP: 47 status: current (1) qoP horacc: 19 maxLocAge: 0 delay: 7
  • 41. 41 SUPLサーバ:supl.google.com-7 SMS+データ通信SIMを利用した場合–LGG2mini SUPLPOSINIT例 OMA UserPlaneLocation Protocol ULP-PDU length: 51 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 0 setId: imsi(3) imsi: 441030………. slpSessionID sessionID: 9bebd352 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLPOSINIT(3) msSUPLPOSINIT sETCapabilities posTechnology .... 0... agpsSETassisted: False .... .1.. agpsSETBased: True .... ..1. autonomousGPS: True .... ...0 aFLT: False 1... .... eCID: True .0.. .... eOTD: False ..0. .... oTDOA: False prefMethod: noPreference(2) posProtocol .... ..0. tia801: False .... ...1 rrlp: True 0... .... rrc: False requestedAssistData ...1 .... almanacRequested: True .... 1... utcModelRequested: True .... .1.. ionosphericModelRequested: True .... ..0. dgpsCorrectionsRequested: False .... ...1 referenceLocationRequested: True 1... .... referenceTimeRequested: True .0.. .... acquisitionAssistanceRequested: False ..1. .... realTimeIntegrityRequested: True ...1 .... navigationModelRequested: True navigationModelData gpsWeek: 0 gpsToe: 0 nSAT: 0 toeLimit: 0 locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 primaryScramblingCode: 427 measuredResultsList: 1 item Item 0 MeasuredResults frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 cellMeasuredResultsList: 1 item Item 0 CellMeasuredResults modeSpecificInfo: fdd(0) fdd primaryCPICH-Info primaryScramblingCode: 427 cpich-Ec-N0: 43 cpich-RSCP: 47 status: current (1)
  • 42. 42 SUPLサーバ:supl.google.com-8 SMS+データ通信SIMを利用した場合–LGG2mini SUPLPOS例-1 OMA UserPlaneLocation Protocol ULP-PDU length: 1700 version maj: 1 min: 0 servind: 0 . . message: msSUPLPOS(4) msSUPLPOS posPayLoad: rrlpPayload(2) rrlpPayload: 2413785852b4c51b20658e6ec6bfe000c8585800fe4f8084... Radio Resource LCS Protocol (RRLP) PDU referenceNumber: 1 component: assistanceData(2) assistanceData gps-AssistData controlHeader referenceTime gpsTime gpsTOW23b: 5788340 gpsWeek: 788 refLocation threeDLocation: 9032c737635ff000642c2c007f27 1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9) 0... .... = Sign of latitude: North (0) .011 0010 1100 0111 0011 0111 = Degrees of latitude: 3327799 (35.70341 degrees) Degrees of longitude: 6512624 (139.74576 degrees) 0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0) .000 0000 0110 0100 = Altitude in meters: 100 .010 1100 = Uncertainty semi-major: 44 (652.6 m) .010 1100 = Uncertainty semi-minor: 44 (652.6 m) Orientation of major axis: 0 .111 1111 = Uncertainty Altitude: 127 (990.5 m) .010 0111 = Confidence(%): 39 GPS時刻-> 位置情報-> エフェメリス-> navigationModel navModelList: 13 items Item 0 NavModelElement satelliteID: 1 satStatus: newSatelliteAndModelUC(0) newSatelliteAndModelUC ephemCodeOnL2: 1 ephemURA: 0 ephemSVhealth: 0 ephemIODC: 44 ephemL2Pflag: 0 ephemSF1Rsvd reserved1: 0 reserved2: 0 reserved3: 0 reserved4: 0 ephemTgd: -43 ephemToc: 29250 ephemAF2: 0 ephemAF1: 19 ephemAF0: 1120966 ephemCrs: -1106 ephemDeltaN: 13772 ephemM0: -699419914 ephemCuc: -952 ephemE: 118602899 ephemCus: 6131 ephemAPowerHalf: 2702017266 ephemToe: 29250 ephemFitFlag: 0 ephemAODA: 31 ephemCic: 199 ephemOmegaA0: 1571318455 ephemCis: 122 ephemI0: 642485765 ephemCrc: 4755 ephemW: -1629536356 ephemOmegaADot: -23010 ephemIDot: 234
  • 43. 43 SUPLサーバ:supl.google.com-9 SMS+データ通信SIMを利用した場合–LGG2mini SUPLPOS例-2 ionosphericModel alfa0: 27 alfa1: 2 alfa2: -2 alfa3: -1 beta0: 65 beta1: -1 beta2: -4 beta3: 3 utcModel utcA1: -3 utcA0: -4 utcTot: 240 utcWNt: 28 utcDeltaTls: 16 utcWNlsf: 159 utcDN: 0 utcDeltaTlsf: 16 almanac alamanacWNa: 20 almanacList: 31 items Item 0 AlmanacElement satelliteID: 0 almanacE: 7445 alamanacToa: 144 almanacKsii: 3147 almanacOmegaDot: -683 almanacSVhealth: 0 almanacAPowerHalf: 10554635 almanacOmega0: 6221907 almanacW: 1145155 almanacM0: -7551246 almanacAF0: 23 almanacAF1: 0(990.5 m) .010 0111 = Confidence(%): 39 . . UTCモデル-> 補正情報-> アルマナック->
  • 44. 44 参考文献 •NTTドコモ, 国際ローミングSUPLによるFOMA位置情報機能の開発―現在地確認機能― •https://www.nttdocomo.co.jp/corporate/technology/rd/technical_journal/bn/vol17_2/006.html •NTTドコモ, スマートフォン端末向け位置提供機能の開発 •https://www.nttdocomo.co.jp/corporate/technology/rd/technical_journal/bn/vol20_2/037.html •GPS初期位置算出時間(TTFF)短縮のための検討, 電子情報通信学会SANE研究会電子航法研究所, July 27, 2007 •http://www.enri.go.jp/%7Esakai/pub/sane0707.ppt •The Open Mobile Alliance, Secure User Plane Location V1.0 •http://technical.openmobilealliance.org/Technical/technical-information/release-program/current-releases/secure-user-plane-location-v1-0 •3GPP TS44.031, Location Services (LCS); Mobile Station (MS) -Serving Mobile Location Centre (SMLC) Radio Resource LCS Protocol (RRLP) •Assisted GPS (AGPS) SUPL client and proxy •http://www.tajuma.com/supl/ •Patch to build supl-proxy and fallback to non-TLS connection •https://gist.github.com/kanru/3713093 •WirelessMoves: How To Trace An A-GPS SUPL Request •http://mobilesociety.typepad.com/mobile_life/2014/09/how-to-trace-an-a-gps-supl-request.html •WirelessMoves: How SUPL Reveals My Identity And Location To Google When I Use GPS •http://mobilesociety.typepad.com/mobile_life/2014/08/supl-reveals-my-identity-and-location-to-google.html •How to create a SuplRootCertfor supl.google.com • Andreas Schneider •https://blog.cryptomilk.org/2012/07/24/how-to-create-a-suplrootcert-for-supl-google-com/ •Understanding GPS: Principles and Applications, Second Edition •GLOBAL POSITIONING SYSTEM STANDARD POSITIONING SERVICE SIGNAL SPECIFICATION •http://www.gps.gov/technical/ps/1995-SPS-signal-specification.pdf •Chapter 3: THE GPS SIGNALS •http://www.gmat.unsw.edu.au/snap/gps/gps_survey/chap3/chap3.htm •A-GPS: Assisted GPS, GNSS, and SBAS, Frank Stephen Tromp Van Diggelen •Assisted GPS -Wikipedia, the free encyclopedia •http://en.wikipedia.org/wiki/Assisted_GPS •When Assistance Becomes Dependence: Characterizing the Costs and Inefficiencies of A-GPS •http://www.cl.cam.ac.uk/~nv240/papers/agps_mc2r.pdf •Security issues with SUPL implementations –rpw •https://rpw.io/slides/rpw-bhus2012-supl.pdf •Android & Symbian Application and OS Concepts: Android GPS Middleware •http://suratechsoft.blogspot.jp/2011/09/android-gps-middleware.html •location/java/com/android/internal/location/GpsLocationProvider.java -platform/frameworks/base -Gitat Google •https://android.googlesource.com/platform/frameworks/base/+/2f3a615feaa1286612576bc15f6bd8cae011301f/location/java/com/android/internal/location/GpsLocationProvider.java •https://android.googlesource.com/platform/hardware/qcom/gps/