Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
WebRTCのICEについて知る
WebRTC Meetup Tokyo #8
@iwashi86
1
https://www.flickr.com/photos/aigle_dore/9997830314/in/photolist-getuC...
2
Yoshimasa Iwase
@iwashi86
3
https://www.flickr.com/photos/greenzowie/10543956045/in/photolist-h4JwMB-j3VKs2-qRZg9A-dyU1Aj-7xGMri-a3iFh-qXmB7S-rhDn4V...
よくある
説明
4
5
http://iwashi.co/2014/05/13/trickleice/
6
http://iwashi.co/2014/05/13/trickleice/
7
受注 開発 納品
8
受注 開発 納品
WebRTC案件
9
受注 開発 納品
開発完了 -> 動作確認OK!
10
受注 開発 納品
ん?つながらない?
11https://www.flickr.com/photos/ro_buk/4207903199/in/photolist-7pQB2a-7oP9vq-8xbiHx-7Ajmwj-8zemoB-7ehuXP-94aHzE-93jvSN-5gC...
12
https://www.flickr.com/photos/gumuz/7340412/in/photolist-DC3Q-6kqoV-9Lgf8x-naaGzP-pWzqNK-6kWVRg-oEZ6w8-8v7VGZ-9UEAmi-9k...
13https://www.flickr.com/photos/ro_buk/4207903199/in/photolist-7pQB2a-7oP9vq-8xbiHx-7Ajmwj-8zemoB-7ehuXP-94aHzE-93jvSN-5gC...
14
_(:3」∠)_
15
https://www.flickr.com/photos/jar0d/14758011307/in/photolist-ou7EAP-5wyd2j-ijH3Kj-9qtG1H-4yAsJE-nCwyJ6-bvcewH-7tfKKm-ns...
16
ICE知る = 大事
17
略
18
19
長すぎ
ちなみにSIPは約270ページ
20
_(:3」∠)_
21
https://www.flickr.com/photos/greenzowie/10543956045/in/photolist-h4JwMB-j3VKs2-qRZg9A-dyU1Aj-7xGMri-a3iFh-qXmB7S-rhDn4...
22
https://www.flickr.com/photos/nam2_7676/4437691249/
美味しく召し上がれるように
23
平易に解説
24
セッションのゴール
ICEを理解して
自身の仕事等に活かす
25
そもそも
なぜICEが必要?
26
NAT越えしたいから
Internet
NAT NAT
Dropped…
27
UPnP
PCP
ICE
28
UPnP
PCP
ICE
29
ICE
Vanilla
Trickle
30
ICE
Vanilla
Trickle
拡
張
31
ICE
Vanilla
Trickle
標準化されてないけど、
Chrome/Firefoxで動く
拡
張
32
ICE
Vanilla
Trickle
標準化されてないけど、
Chrome/Firefoxで動く
拡
張
1. ICE概要
2. ICE kwsk
33
1. ICE概要
2. ICE kwsk
34
35
収
集
(初期値)
交換
整頓穴開
終結
36
収集
交換
整頓穴開
終結
通信できそうな候補(IP&Port)を
ありったけ集める
37
収集
交換
整頓穴開
終結
集めた候補を
相手と交換する
38
収集
交換
整頓穴開
終結相手から受け取った候補と
自分の候補をペアにして
一手間加えて `uniq & sort`
39
収集
交換
整頓穴開
終結ペアに対して、お互いにひたすら
接続試行(ホールパンチ)
40
収
集
交換
整頓穴開
終結
ホールパンチ中で未知の候補ペアが
見つかっちゃうことも…(後述)
41
収集
交換
整頓穴開
終結
接続成功した候補ペアから
イケてる候補を決定
42
収集
交換
整頓穴開
終結 リロードとかすると
振り出しに戻る
43
収
集
交換
整頓穴開
終結
1. ICE概要
2. ICE kwsk
44
45
収集
交換
整頓穴開
終結
46https://www.flickr.com/photos/dwinton/15491767/in/photolist-2npar-fN8mrJ-6ZSNQW-3cEJD6-baVv4K-5cvQgk-fLdzPf-c4hNUA-gn15c...
47
ICE Candidate (候補) is 何?
48
ICE Candidate (候補) is 何?
・IPアドレス
・プロトコル(TCP/UDP)
・ポート番号
・コンポーネント
・タイプ(後述)
・優先度
・ファウンデーション
・ベース
後述
49
NAT
STUN
TURN
(この構成で説明)
50
NAT
STUN
TURN
まずローカル候補GET(ソケットをbind)
ex. 10.10.1.2 udp 50001 type host
51
NAT
STUN
TURN
STUNを利用してNAT外部★の候補をGET
ex. 100.1.2.3 udp 50002
52
NAT
STUN
TURN
TurnにAllocation Requestする
ex. 200.7.8.9 udp 60000
53
・10.10.1.2 udp 50001
・100.1.2.3 udp 50002
・200.7.8.9 udp 60000
今まで集めた候補
54
ICEには
もっと情報がある
整理しよう
55
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001
100.1.2.3 udp 50002
200.7.8.9 udp 60000
ICE候補...
56
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host
100.1.2.3 udp 50002 srlfx
200.7.8.9 udp ...
57
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host 1
100.1.2.3 udp 50002 srlfx 1
200.7.8.9 ...
58
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host 1
100.1.2.3 udp 50002 srlfx 1
200.7.8.9 ...
59
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host 1 0※
100.1.2.3 udp 50002 srlfx 1 4
200.7...
60
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host 1 0※ 126|32542|255
100.1.2.3 udp 50002 s...
61
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host 1 0※ 126|32542|255 10.10.1.2:20001
100.1...
62
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host 1 0※ 126|32542|255 10.10.1.2:20001
100.1...
63
IP Proto Port Type Component Foundation priority base
10.10.1.2 udp 50001 host 1 0※ 126|32542|255 10.10.1.2:20001
100.1...
64
https://www.flickr.com/photos/112931986@N07/11645894595/in/photolist-iK7fJ8-iK7g1R-4VHLyS-4VDvUg-on4f7G-85vph4-4Gf3qe-e...
65
https://www.flickr.com/photos/112931986@N07/11645894595/in/photolist-iK7fJ8-iK7g1R-4VHLyS-4VDvUg-on4f7G-85vph4-4Gf3qe-e...
66
収集
交換
整頓穴開
終結
67
IP Proto Port Type
10.10.1.2 udp 5000
1
host …
100.1.2.3 udp 5000
2
srlfx …
200.7.8.9 udp 6000
0
relay …
IP Proto Port ...
68
IP Proto Port Type
10.10.1.2 udp 50001 host …
100.1.2.3 udp 50002 srlfx …
200.7.8.9 udp 60000 relay …
IP Proto Port Typ...
69
Local IP Remote IP
10.10.1.2 … 10.10.9.9 …
100.1.2.3 … 10.10.9.9 …
200.7.8.9 … 10.10.9.9 …
10.10.1.2 … 100.1.9.9 …
… … ...
70
なぜ重複排除?
NAT STUN
STUN
NAT有
NAT無
71
なぜ重複排除?
NAT STUN
STUN
NAT有
NAT無
異なる
アドレス
72
なぜ重複排除?
NAT STUN
STUN
NAT有
NAT無
73
なぜ重複排除?
NAT STUN
STUN
NAT有
NAT無 同一の
アドレス
(=無駄)
74
Local IP Remote IP
10.10.1.2 … 10.10.9.9 …
100.1.2.3 … 10.10.9.9 …
200.7.8.9 … 10.10.9.9 …
10.10.1.2 … 100.1.9.9 …
… … ...
75
http://upload.wikimedia.org/wikipedia/commons/b/b3/BattleofLongisland.jpg
開戦!
76
http://upload.wikimedia.org/wikipedia/commons/b/b3/BattleofLongisland.jpg
注:ただのUDPホールパンチです
77
http://upload.wikimedia.org/wikipedia/commons/b/b3/BattleofLongisland.jpg
ICEはSTUNパケットでUDPホールパンチ
STUN
STUN
78
(途中で) 未知との遭遇
NAT NAT
List List
79
(途中で) 未知との遭遇
Symmetric
NAT
Cone
NAT
List List
持ってるリストに記載されていない
送信元アドレスからSTUNパケットが届くことがある
⇒ Type: Peer Reflexive 候補の発見
80
Local IP Remote IP
10.10.1.2 … 10.10.9.9 …
100.1.2.3 … 10.10.9.9 …
200.7.8.9 … 10.10.9.9 …
10.10.1.2 … 100.1.9.9 …
… … ...
81
収集
交換
整頓穴開
終結
82
使うペアを制御側が
Flag付きSTUNで教える
USE-CANDIDATE付きSTUN
Success Response
以降、DTLS Handshake…
83
ICE
Vanilla
Trickle
拡
張
84
収
集
(初期値)
交換
整頓穴開
終結GETした候補はすぐ送る、すぐ試す!
(もしかしたら早くつながるかもしれない)
特に違うところ
85
https://www.ietf.org/proceedings/86/slides/slides-86-mmusic-8.pdf
86
https://www.ietf.org/proceedings/86/slides/slides-86-mmusic-8.pdf
87
ということで
88
ICE知る = 大事
89
ICE知る = 大事
といっても、ICEにはまだまだ話せていないことがたくさんある
State Machine、Triggered Check、Authentication(ufrag等)
90
おしまい!
Upcoming SlideShare
Loading in …5
×

WebRTCのICEについて知る

14,545 views

Published on

WebRTCのICEについて
WebRTC Meetup Tokyo #8 で講演したスライドです。
口頭説明含めて確認したい方は、以下からご覧になれます。
https://youtu.be/6v4rvLiUCvM?t=47m17s

その他誤記指摘等は、twitterの@iwashi86まで。

Published in: Technology
  • Be the first to comment

WebRTCのICEについて知る

  1. 1. WebRTCのICEについて知る WebRTC Meetup Tokyo #8 @iwashi86 1 https://www.flickr.com/photos/aigle_dore/9997830314/in/photolist-getuCJ-rg9FSw-6uBXPM-qwVxdJ-9tAAku-qHWCTA-bxJrqC-dS3syZ-9RJHEB-9Tat6g-brUZ2W-dQiKoY-94RzU2-a3vmK9-ARR9p-9dyqtW-bqP5CT-p1QhWZ-dY6Bc-qZF5JW-pCNaK2-r8RWZ1-e5yb2Y-pPwGje-qFdRn8- bCydpc-oyvuRF-9bGQh8-azfu9R-j84fLK-bCfjjM-j4iWqn-a2tskF-9cMFBB-9vQwHT-javNQn-4mvLq4-9ebMGG-5YXb27-brB37c-qfpb6C-5RkFbC-nbXBRH-dVbBu5-jcL8uM-9et1Uh-7GM2YH-ngBXEo-hw2twQ-qwPYgR
  2. 2. 2 Yoshimasa Iwase @iwashi86
  3. 3. 3 https://www.flickr.com/photos/greenzowie/10543956045/in/photolist-h4JwMB-j3VKs2-qRZg9A-dyU1Aj-7xGMri-a3iFh-qXmB7S-rhDn4V-q3suF7-e1RHSP-68fqSC-7ruUn2-ae2UU7-6sNyov-bs1UAR-5NFbEx-6x1iU4-jqxvkh-s7ZpTn-sprJAv-4gQGMG-9cTcKt-9eYajw-9eY88L-j6KiKx- nLCY-kaLpYw-jwBa1M-jqxxiW-m87EZd-bvhe9u-9qUQtS-66EUvV-kPBhPH-9ofV2b-qXSDJd-941EoN-q4qefm-m3yYoj-s7Ze5P-jMgAvU-rvMzu3-bQDzMZ-9kgKBS-dJdSKY-9cgWri-brom8Z-sppYe2-de3BTr-jnoSt5 WebRTCのICE? (Interactive Connectivity Establishment)
  4. 4. よくある 説明 4
  5. 5. 5 http://iwashi.co/2014/05/13/trickleice/
  6. 6. 6 http://iwashi.co/2014/05/13/trickleice/
  7. 7. 7 受注 開発 納品
  8. 8. 8 受注 開発 納品 WebRTC案件
  9. 9. 9 受注 開発 納品 開発完了 -> 動作確認OK!
  10. 10. 10 受注 開発 納品 ん?つながらない?
  11. 11. 11https://www.flickr.com/photos/ro_buk/4207903199/in/photolist-7pQB2a-7oP9vq-8xbiHx-7Ajmwj-8zemoB-7ehuXP-94aHzE-93jvSN-5gCQp-nRdqb-7ESvZP-5eMSN-4izRk-gdCx68-7H5QhG-hm25eq-gdCArW-gdCvG6-99Q3YA-gdD9sZ-4iA9c-8uzbUL-7hWskX-24apZ- 6JCtXT-765WDT-7cpma4-765UzM-8wAnxv-8xtXNE-23HQ3r-79kxLp-9uu261-6JgUhP-62GZde-6HTovP-7xJsr-tXPfoF-6JkZB3-3aWJ47-6JkZtY-5fFxrT-5fKTRL-bzSKLU-RTQ8y-hGmu1-5fKTgm-5fFvFn-3D3gk9-769MNG WebRTCである よくわからないけど つながらないやつだ…
  12. 12. 12 https://www.flickr.com/photos/gumuz/7340412/in/photolist-DC3Q-6kqoV-9Lgf8x-naaGzP-pWzqNK-6kWVRg-oEZ6w8-8v7VGZ-9UEAmi-9kLv-ehYbxv-o6Ad1A-4DqFKJ-bRcWii-d1tJTm-4aHjs6-bJWNFP-97Pgho-8ZNBGe-rLYSXs- ajroY-96qUSC-4kAXcy-8QdCZt-r7MDtF-57tLjY-4Zhpz-9vjHhs-88hnSm-9fpiLc-bnc22E-Khua8-e4onL9-8QfuUe-fCyJ3-nzr4bo-7YvGrd-6pThCu-4bbmiz-cPhDnL-81rSz4-9Lj31N-81FuTC-jRVD8h-dYkr3t-8QVpAV-dhwwUe-8nJQUH- b8qzsB-bwhMsd 早く原因を調べなさい
  13. 13. 13https://www.flickr.com/photos/ro_buk/4207903199/in/photolist-7pQB2a-7oP9vq-8xbiHx-7Ajmwj-8zemoB-7ehuXP-94aHzE-93jvSN-5gCQp-nRdqb-7ESvZP-5eMSN-4izRk-gdCx68-7H5QhG-hm25eq-gdCArW-gdCvG6-99Q3YA-gdD9sZ-4iA9c-8uzbUL-7hWskX-24apZ- 6JCtXT-765WDT-7cpma4-765UzM-8wAnxv-8xtXNE-23HQ3r-79kxLp-9uu261-6JgUhP-62GZde-6HTovP-7xJsr-tXPfoF-6JkZB3-3aWJ47-6JkZtY-5fFxrT-5fKTRL-bzSKLU-RTQ8y-hGmu1-5fKTgm-5fFvFn-3D3gk9-769MNG WebRTCの通信の中身とか よくわからんし・・・
  14. 14. 14 _(:3」∠)_
  15. 15. 15 https://www.flickr.com/photos/jar0d/14758011307/in/photolist-ou7EAP-5wyd2j-ijH3Kj-9qtG1H-4yAsJE-nCwyJ6-bvcewH-7tfKKm-nsFpRX-reQpF2-pH36Cq-fmAtiU-jeLrpR-e3jcFm-dKmtwE-69VSTe-d5joAm-xWZbG-cpwuvu-ghWjGP-MPHno-fL1t9y-hAbUa2-owD33K-arqcdX-iNUwBE-ehaxYy- 8rfCd6-r5sAwo-bJHtS4-aE9vC2-662Gv6-aSDJg-aCrxxV-6PKpsp-6TM1kv-dGPHKP-4urjtC-6nQD8s-eYoDZu-kBuiEM-8cpE6r-gGyLHr-73DaN5-aHiPFi-bRje26-p8bJiq-o4JNX8-6EJK2H-7RGfyR 「NATで落ちてるだけですよ」 とか簡単に言える&対処できる
  16. 16. 16 ICE知る = 大事
  17. 17. 17 略
  18. 18. 18
  19. 19. 19 長すぎ ちなみにSIPは約270ページ
  20. 20. 20 _(:3」∠)_
  21. 21. 21 https://www.flickr.com/photos/greenzowie/10543956045/in/photolist-h4JwMB-j3VKs2-qRZg9A-dyU1Aj-7xGMri-a3iFh-qXmB7S-rhDn4V-q3suF7-e1RHSP-68fqSC-7ruUn2-ae2UU7-6sNyov-bs1UAR-5NFbEx-6x1iU4-jqxvkh-s7ZpTn-sprJAv-4gQGMG-9cTcKt-9eYajw-9eY88L-j6KiKx- nLCY-kaLpYw-jwBa1M-jqxxiW-m87EZd-bvhe9u-9qUQtS-66EUvV-kPBhPH-9ofV2b-qXSDJd-941EoN-q4qefm-m3yYoj-s7Ze5P-jMgAvU-rvMzu3-bQDzMZ-9kgKBS-dJdSKY-9cgWri-brom8Z-sppYe2-de3BTr-jnoSt5 アイスを
  22. 22. 22 https://www.flickr.com/photos/nam2_7676/4437691249/ 美味しく召し上がれるように
  23. 23. 23 平易に解説
  24. 24. 24 セッションのゴール ICEを理解して 自身の仕事等に活かす
  25. 25. 25 そもそも なぜICEが必要?
  26. 26. 26 NAT越えしたいから Internet NAT NAT Dropped…
  27. 27. 27 UPnP PCP ICE
  28. 28. 28 UPnP PCP ICE
  29. 29. 29 ICE Vanilla Trickle
  30. 30. 30 ICE Vanilla Trickle 拡 張
  31. 31. 31 ICE Vanilla Trickle 標準化されてないけど、 Chrome/Firefoxで動く 拡 張
  32. 32. 32 ICE Vanilla Trickle 標準化されてないけど、 Chrome/Firefoxで動く 拡 張
  33. 33. 1. ICE概要 2. ICE kwsk 33
  34. 34. 1. ICE概要 2. ICE kwsk 34
  35. 35. 35 収 集 (初期値) 交換 整頓穴開 終結
  36. 36. 36 収集 交換 整頓穴開 終結 通信できそうな候補(IP&Port)を ありったけ集める
  37. 37. 37 収集 交換 整頓穴開 終結 集めた候補を 相手と交換する
  38. 38. 38 収集 交換 整頓穴開 終結相手から受け取った候補と 自分の候補をペアにして 一手間加えて `uniq & sort`
  39. 39. 39 収集 交換 整頓穴開 終結ペアに対して、お互いにひたすら 接続試行(ホールパンチ)
  40. 40. 40 収 集 交換 整頓穴開 終結 ホールパンチ中で未知の候補ペアが 見つかっちゃうことも…(後述)
  41. 41. 41 収集 交換 整頓穴開 終結 接続成功した候補ペアから イケてる候補を決定
  42. 42. 42 収集 交換 整頓穴開 終結 リロードとかすると 振り出しに戻る
  43. 43. 43 収 集 交換 整頓穴開 終結
  44. 44. 1. ICE概要 2. ICE kwsk 44
  45. 45. 45 収集 交換 整頓穴開 終結
  46. 46. 46https://www.flickr.com/photos/dwinton/15491767/in/photolist-2npar-fN8mrJ-6ZSNQW-3cEJD6-baVv4K-5cvQgk-fLdzPf-c4hNUA-gn15cX-hbvc2u-i45cJV-oyhaRk-3NJ8q1-iG9ei4-6R5CsQ-dkbFo7-4ambAb-4sf4jZ-fZieCr-dpSjMb- 7kPv8B-8KQdNv-549Ffr-anZ9V5-5GDdt-an8sRH-8Dk7Hw-pi6wZh-dfk7z6-8xwVAa-p7t5bk-3cHnsS-jCAuX-3nzdyJ-6Nqpba-uQweU-og5QH4-cyGuyU-dmBq2P-7kTpqm-5eRh4E-oWSAMV-h5KBm-oP7Sx5-fZsXjr-fZt4rY-fZsXnH-7kPvaK- 8t9P2Y-o7GXcz 収集 (gathering / harvesting)
  47. 47. 47 ICE Candidate (候補) is 何?
  48. 48. 48 ICE Candidate (候補) is 何? ・IPアドレス ・プロトコル(TCP/UDP) ・ポート番号 ・コンポーネント ・タイプ(後述) ・優先度 ・ファウンデーション ・ベース 後述
  49. 49. 49 NAT STUN TURN (この構成で説明)
  50. 50. 50 NAT STUN TURN まずローカル候補GET(ソケットをbind) ex. 10.10.1.2 udp 50001 type host
  51. 51. 51 NAT STUN TURN STUNを利用してNAT外部★の候補をGET ex. 100.1.2.3 udp 50002
  52. 52. 52 NAT STUN TURN TurnにAllocation Requestする ex. 200.7.8.9 udp 60000
  53. 53. 53 ・10.10.1.2 udp 50001 ・100.1.2.3 udp 50002 ・200.7.8.9 udp 60000 今まで集めた候補
  54. 54. 54 ICEには もっと情報がある 整理しよう
  55. 55. 55 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 100.1.2.3 udp 50002 200.7.8.9 udp 60000 ICE候補の詳細
  56. 56. 56 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 100.1.2.3 udp 50002 srlfx 200.7.8.9 udp 60000 relay ICE候補の詳細 host = ローカルの候補 srlfx = STUNを使って入手した候補 relay = TURNを使って入手した候補 srlfx = Server Reflexive の略
  57. 57. 57 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 1 100.1.2.3 udp 50002 srlfx 1 200.7.8.9 udp 60000 relay 1 ICE候補の詳細 ICE(RFC5245)的にいえば RTP = 1、RTCP = 2 なので実は・・・
  58. 58. 58 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 1 100.1.2.3 udp 50002 srlfx 1 200.7.8.9 udp 60000 relay 1 10.10.1.2 udp 50003 host 2 100.1.2.3 udp 50004 srlfx 2 200.7.8.9 udp 60001 relay 2 ICE候補の詳細 2倍ある。 だが、SRTPとSRTCPはMUXするので たぶんWebRTCで後者は使われてない
  59. 59. 59 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 1 0※ 100.1.2.3 udp 50002 srlfx 1 4 200.7.8.9 udp 60000 relay 1 8 10.10.1.2 udp 50003 host 2 0※ 100.1.2.3 udp 50004 srlfx 2 4 200.7.8.9 udp 60001 relay 2 8 ICE候補の詳細 Foundationはホールパンチを効率化するために利用 「※」はNW特性が類似しておりどっちかやれば十分
  60. 60. 60 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 1 0※ 126|32542|255 100.1.2.3 udp 50002 srlfx 1 4 100|31518|255 200.7.8.9 udp 60000 relay 1 8 2|31518|255 10.10.1.2 udp 50003 host 2 0※ 126|32542|254 100.1.2.3 udp 50004 srlfx 2 4 100|31518|254 200.7.8.9 udp 60001 relay 2 8 2|31518|254 ICE候補の詳細 どの候補を一番優先して使うのか 決めるための値 (2^24)*(type preference) + (2^8)*(local preference) + (2^0)*(256 - component ID)
  61. 61. 61 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 1 0※ 126|32542|255 10.10.1.2:20001 100.1.2.3 udp 50002 srlfx 1 4 100|31518|255 10.10.1.2:20002 200.7.8.9 udp 60000 relay 1 8 2|31518|255 200.7.8.9:60000 10.10.1.2 udp 50003 host 2 0※ 126|32542|254 10.10.1.2:20003 100.1.2.3 udp 50004 srlfx 2 4 100|31518|254 10.10.1.2:20004 200.7.8.9 udp 60001 relay 2 8 2|31518|254 200.7.8.9:60001 ICE候補の詳細 後述する無駄な候補を省くために利用
  62. 62. 62 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 1 0※ 126|32542|255 10.10.1.2:20001 100.1.2.3 udp 50002 srlfx 1 4 100|31518|255 10.10.1.2:20002 200.7.8.9 udp 60000 relay 1 8 2|31518|255 200.7.8.9:60000 10.10.1.2 udp 50003 host 2 0※ 126|32542|254 10.10.1.2:20003 100.1.2.3 udp 50004 srlfx 2 4 100|31518|254 10.10.1.2:20004 200.7.8.9 udp 60001 relay 2 8 2|31518|254 200.7.8.9:60001 ICE候補の詳細 後述する無駄な候補を省くために利用
  63. 63. 63 IP Proto Port Type Component Foundation priority base 10.10.1.2 udp 50001 host 1 0※ 126|32542|255 10.10.1.2:20001 100.1.2.3 udp 50002 srlfx 1 4 100|31518|255 10.10.1.2:20002 200.7.8.9 udp 60000 relay 1 8 2|31518|255 200.7.8.9:60000 10.10.1.2 udp 50003 host 2 0※ 126|32542|254 10.10.1.2:20003 100.1.2.3 udp 50004 srlfx 2 4 100|31518|254 10.10.1.2:20004 200.7.8.9 udp 60001 relay 2 8 2|31518|254 200.7.8.9:60001 全部 そろったら
  64. 64. 64 https://www.flickr.com/photos/112931986@N07/11645894595/in/photolist-iK7fJ8-iK7g1R-4VHLyS-4VDvUg-on4f7G-85vph4-4Gf3qe-eiVJYf-sxTLu-4Gjd2Q-aqEiTw-57pb1e-q2cD1t-9cce2F-3aaovf-m3JXZ4-7bTeix-rJbSsy-zFtQB-auHyEc-fp5sj-9WnTF2-e8hKvL- e8hJZG-3GL7F-CUiRW-66NVLJ-Ngx8o-SUXKY-cMaWHS-cMaWTm-cMaWF3-cMaWP9-cMaWRm-cMaWLf-5iVTqa-4W486H-atGuRo-cWA4LG-XAztd-8yxAxg-8ogyfG-9fbbF-4zzX2i-o893on-8743uP-sAMhW-5bQEmS-kLRTZb-8KtxA3 シグナリングで交換
  65. 65. 65 https://www.flickr.com/photos/112931986@N07/11645894595/in/photolist-iK7fJ8-iK7g1R-4VHLyS-4VDvUg-on4f7G-85vph4-4Gf3qe-eiVJYf-sxTLu-4Gjd2Q-aqEiTw-57pb1e-q2cD1t-9cce2F-3aaovf-m3JXZ4-7bTeix-rJbSsy-zFtQB-auHyEc-fp5sj-9WnTF2-e8hKvL- e8hJZG-3GL7F-CUiRW-66NVLJ-Ngx8o-SUXKY-cMaWHS-cMaWTm-cMaWF3-cMaWP9-cMaWRm-cMaWLf-5iVTqa-4W486H-atGuRo-cWA4LG-XAztd-8yxAxg-8ogyfG-9fbbF-4zzX2i-o893on-8743uP-sAMhW-5bQEmS-kLRTZb-8KtxA3 みんな大好きSDPでね!
  66. 66. 66 収集 交換 整頓穴開 終結
  67. 67. 67 IP Proto Port Type 10.10.1.2 udp 5000 1 host … 100.1.2.3 udp 5000 2 srlfx … 200.7.8.9 udp 6000 0 relay … IP Proto Port Type 10.10.9.9 udp 5000 1 host … 100.1.9.9 udp 5000 2 srlfx … 200.7.8.9 udp 6000 2 relay … 自分のリスト 相手からもらったリスト 2種類のリストが手元に揃う
  68. 68. 68 IP Proto Port Type 10.10.1.2 udp 50001 host … 100.1.2.3 udp 50002 srlfx … 200.7.8.9 udp 60000 relay … IP Proto Port Type 10.10.9.9 udp 50001 host … 100.1.9.9 udp 50002 srlfx … 200.7.8.9 udp 60002 relay … 自分のリスト 相手からもらったリスト 組み合わせる(Paring up)
  69. 69. 69 Local IP Remote IP 10.10.1.2 … 10.10.9.9 … 100.1.2.3 … 10.10.9.9 … 200.7.8.9 … 10.10.9.9 … 10.10.1.2 … 100.1.9.9 … … … … … 作成したリストに対して uniq & sort (優先度順)
  70. 70. 70 なぜ重複排除? NAT STUN STUN NAT有 NAT無
  71. 71. 71 なぜ重複排除? NAT STUN STUN NAT有 NAT無 異なる アドレス
  72. 72. 72 なぜ重複排除? NAT STUN STUN NAT有 NAT無
  73. 73. 73 なぜ重複排除? NAT STUN STUN NAT有 NAT無 同一の アドレス (=無駄)
  74. 74. 74 Local IP Remote IP 10.10.1.2 … 10.10.9.9 … 100.1.2.3 … 10.10.9.9 … 200.7.8.9 … 10.10.9.9 … 10.10.1.2 … 100.1.9.9 … … … … … お互いにチェックリストを 持ったらついに… Local IP Remote IP 10.10.1.2 … 10.10.9.9 … 100.1.2.3 … 10.10.9.9 … 200.7.8.9 … 10.10.9.9 … 10.10.1.2 … 100.1.9.9 … … … … … 自分 相手
  75. 75. 75 http://upload.wikimedia.org/wikipedia/commons/b/b3/BattleofLongisland.jpg 開戦!
  76. 76. 76 http://upload.wikimedia.org/wikipedia/commons/b/b3/BattleofLongisland.jpg 注:ただのUDPホールパンチです
  77. 77. 77 http://upload.wikimedia.org/wikipedia/commons/b/b3/BattleofLongisland.jpg ICEはSTUNパケットでUDPホールパンチ STUN STUN
  78. 78. 78 (途中で) 未知との遭遇 NAT NAT List List
  79. 79. 79 (途中で) 未知との遭遇 Symmetric NAT Cone NAT List List 持ってるリストに記載されていない 送信元アドレスからSTUNパケットが届くことがある ⇒ Type: Peer Reflexive 候補の発見
  80. 80. 80 Local IP Remote IP 10.10.1.2 … 10.10.9.9 … 100.1.2.3 … 10.10.9.9 … 200.7.8.9 … 10.10.9.9 … 10.10.1.2 … 100.1.9.9 … … … … … 終わると、成功・失敗がわかる Local IP Remote IP 10.10.1.2 … 10.10.9.9 … 100.1.2.3 … 10.10.9.9 … 200.7.8.9 … 10.10.9.9 … 10.10.1.2 … 100.1.9.9 … … … … … 自分 相手
  81. 81. 81 収集 交換 整頓穴開 終結
  82. 82. 82 使うペアを制御側が Flag付きSTUNで教える USE-CANDIDATE付きSTUN Success Response 以降、DTLS Handshake…
  83. 83. 83 ICE Vanilla Trickle 拡 張
  84. 84. 84 収 集 (初期値) 交換 整頓穴開 終結GETした候補はすぐ送る、すぐ試す! (もしかしたら早くつながるかもしれない) 特に違うところ
  85. 85. 85 https://www.ietf.org/proceedings/86/slides/slides-86-mmusic-8.pdf
  86. 86. 86 https://www.ietf.org/proceedings/86/slides/slides-86-mmusic-8.pdf
  87. 87. 87 ということで
  88. 88. 88 ICE知る = 大事
  89. 89. 89 ICE知る = 大事 といっても、ICEにはまだまだ話せていないことがたくさんある State Machine、Triggered Check、Authentication(ufrag等)
  90. 90. 90 おしまい!

×