P2Pって何?  P2Pは、あなたのそばにいるIPROS 勉強会 2011/6/22 株式会社イプロス 山口隼也     @junya100
Winny?    不正ダウンロードを     助長する技術?企業や社会の敵?    マニアな人たちの      おもちゃ?
いやいや、    P2Pは、あなたのそばにいます。     そして、  今の、これからのIT社会を支えています。
P2Pが使われている 主なシーンを3つ
iPhone(iPad、Mac)
iPhone4を買った動機は?
マルチタスキング         Retina DisplayApp Store        iBooks操作性/UI
Face Time
junya100   Junya YamaguchiiPhone4 Keynote                    FaceTime      P2P  NAT                        SIP STUN TURN I...
DNS/SIP/STUN/              HTTP/FTP/SMTP   ICE/RTP    UDP           TCP            IP
キーポイント1.NAT トラバーサル  2.UDPとIP網
Online   GamesMO(Multiplayer Online)
オンラインゲーム ネットワーク概念図                                                        プレイヤーC                       220.X.X.X          ...
キーポイント1.NAT トラバーサル2.ノードの参加と離脱
Cloud(分散データベース)
負荷(読込み、書込み)を    分散させて  スケールアウト させる方法・・・
シャーディングデータを複数のサーバで分ける
1.クライアントが、完璧な「サーバ一覧表」をもつ方式クライアント   アクセス   サーバ一覧表       サーバ群                数台∼数十台
問題点・サーバ一覧表のメンテナンスコスト
2.管理サーバが、完璧な「サーバ一覧表」をもつ方式                  管理サーバ                        サーバ一覧表          問い合せ         アクセスクライアント           ...
問題点・サーバ増加による負荷の集中・単一故障点(SPOF)の回避
3.各担当サーバが、それぞれ完璧な「サーバ一覧表」をもつ方式                 サーバ群    問い合せ/アクセスクライアント                数百∼数千台
問題点・「サーバ一覧表」の  同期コスト
4.各担当サーバが、それぞれ不完全な「サーバ一覧表」をもつ方式     問い合せ/アクセス クライアント                 サーバ群                  数万台∼
コンシステント・ハッシング     (Consistent Hashing)          DHT(Distributed Hash Table)         構造化オーバーレイ        (Structured Overlay)
One More Thing...
せっかくなので、「NATトラバーサル」を実装してみました。
UDPだけだとファイル転送とかに   向かないので、TCPの機能(輻輳制御、フロー制御、再送制御)    をUDP上に実装すれば、  万能なP2P通信が可能だよね?
STUN                                  Server                                                            STUN Server       ...
InetSocketAddress remoteEndPoint = null;DatagramChannel socketChannel = (DatagramChannel) channel;if (ConfigUtils.COMMON.g...
以上です。
Upcoming SlideShare
Loading in …5
×

P2Pって何?

982 views

Published on

P2Pについて社内で行った勉強会の資料です

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
982
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • P2Pって何?

    1. 1. P2Pって何? P2Pは、あなたのそばにいるIPROS 勉強会 2011/6/22 株式会社イプロス 山口隼也 @junya100
    2. 2. Winny? 不正ダウンロードを 助長する技術?企業や社会の敵? マニアな人たちの おもちゃ?
    3. 3. いやいや、 P2Pは、あなたのそばにいます。 そして、 今の、これからのIT社会を支えています。
    4. 4. P2Pが使われている 主なシーンを3つ
    5. 5. iPhone(iPad、Mac)
    6. 6. iPhone4を買った動機は?
    7. 7. マルチタスキング Retina DisplayApp Store iBooks操作性/UI
    8. 8. Face Time
    9. 9. junya100 Junya YamaguchiiPhone4 Keynote FaceTime P2P NAT SIP STUN TURN ICE09 6 8
    10. 10. DNS/SIP/STUN/ HTTP/FTP/SMTP ICE/RTP UDP TCP IP
    11. 11. キーポイント1.NAT トラバーサル 2.UDPとIP網
    12. 12. Online GamesMO(Multiplayer Online)
    13. 13. オンラインゲーム ネットワーク概念図 プレイヤーC 220.X.X.X NAT ルータ サーバ 223.X.X.X FTTH 192.168.X.X FTTH FTTH 221.X.X.X 222.X.X.X NATプレイヤーA NAT プレイヤーB 192.168.X.X192.168.X.X
    14. 14. キーポイント1.NAT トラバーサル2.ノードの参加と離脱
    15. 15. Cloud(分散データベース)
    16. 16. 負荷(読込み、書込み)を 分散させて スケールアウト させる方法・・・
    17. 17. シャーディングデータを複数のサーバで分ける
    18. 18. 1.クライアントが、完璧な「サーバ一覧表」をもつ方式クライアント アクセス サーバ一覧表 サーバ群 数台∼数十台
    19. 19. 問題点・サーバ一覧表のメンテナンスコスト
    20. 20. 2.管理サーバが、完璧な「サーバ一覧表」をもつ方式 管理サーバ サーバ一覧表 問い合せ アクセスクライアント サーバ群 数百∼数千台
    21. 21. 問題点・サーバ増加による負荷の集中・単一故障点(SPOF)の回避
    22. 22. 3.各担当サーバが、それぞれ完璧な「サーバ一覧表」をもつ方式 サーバ群 問い合せ/アクセスクライアント 数百∼数千台
    23. 23. 問題点・「サーバ一覧表」の 同期コスト
    24. 24. 4.各担当サーバが、それぞれ不完全な「サーバ一覧表」をもつ方式 問い合せ/アクセス クライアント サーバ群 数万台∼
    25. 25. コンシステント・ハッシング (Consistent Hashing) DHT(Distributed Hash Table) 構造化オーバーレイ (Structured Overlay)
    26. 26. One More Thing...
    27. 27. せっかくなので、「NATトラバーサル」を実装してみました。
    28. 28. UDPだけだとファイル転送とかに 向かないので、TCPの機能(輻輳制御、フロー制御、再送制御) をUDP上に実装すれば、 万能なP2P通信が可能だよね?
    29. 29. STUN Server STUN Server Peer A ( Download Peer B ( Upload Uploader Server ExternalRegist Uploader IP Peers ExternalPort Downloader Uploader PeerRequest Download Server SessionRegist Uploader PeerResponse Uploader Downloader PeerRequest Downloader Peer Downloader Uploader HandShake
    30. 30. InetSocketAddress remoteEndPoint = null;DatagramChannel socketChannel = (DatagramChannel) channel;if (ConfigUtils.COMMON.getBoolean(CommonConfig.KEY_NAT_TRAVERSE_MODE) && remotePeer.isRequiredNatTraverse()) { STUNClient stun_client = new STUNClient(); for (int retried_count = 0; true; retried_count++) { remoteEndPoint = stun_client.handShake(socketChannel, remotePeer.getIp(), remotePeer.getPort(), remotePeer .getInternalPort()), remotePeer.getPeerId()); if (remoteEndPoint != null) { break; } else { if (retried_count >= HANDSHAKE_RETRY_COUNT) { LogUtils.LOG.error("HandShakeが失敗しました"); break; } else { LogUtils.LOG.info("HandShake Timeoutしました"); continue; } } }} else { remoteEndPoint = new InetSocketAddress(remotePeer.getIp(), remotePeer.getPort());}if (remoteEndPoint != null) { setupSocketOptions(socketChannel.socket()); socketChannel.configureBlocking(false); socketChannel.socket().setReuseAddress(true); socketChannel.connect(remoteEndPoint);}
    31. 31. 以上です。

    ×