16
11/05/23 1 計算機システム概論 ネットワークとプロトコル、 LANWAN (2) 2011/5/25 門林雄基 NAIST 奈良先端科学技術大学院大学 講義のポイント どのようにしてネットワークを使うのか? ネットワーク利用のモデル ネットワークプログラミングとは? プログラミングのモデル 11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved. 2

計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

1

計算機システム概論 ネットワークとプロトコル、 LANとWAN (2)2011/5/25 門林雄基"NAIST 奈良先端科学技術大学院大学

講義のポイント

¨ どのようにしてネットワークを使うのか?"¤ ネットワーク利用のモデル"

¨ ネットワークプログラミングとは?"¤ プログラミングのモデル

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

2

Page 2: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

2

ネットワーク利用のモデル

ごく簡単に

ネットワーク利用のモデル(1)

¨ サーバ・クライアント

¨ ピアツーピア

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

4

network

A

B C

network

A

B C

Page 3: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

3

ネットワーク利用のモデル(2)

¨ オープン"¤ インターネット等"

"¨  クローズ"

¤ イントラネット (Intranet)"n 構内網としての利用"

¤ VPN (Virtual Private Network)"n オープンなネットワーク上に閉じたネットワークを構成

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

5

プログラミングモデル"網羅的かつ体系的に

Page 4: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

4

プログラミングモデルの分類

¨  1対1通信 ¤ Request-response protocol"¤ Remote procedure call"

¨  1対多通信 ¤ Broadcast/multicast messaging"

¨  多対多通信 ¤ Message passing interface"¤ File sharing"¤ Tuple space"¤ Message-oriented middleware"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

7

1対1通信

¨ 順にみていこう"¨  Request-response protocol"¨  Remote procedure call"

¨ 同期式(基本)"¨ 非同期式(変形) "

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

8

Page 5: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

5

Request-response protocol"

¨ 同期式

¨ 例: HTTP"¤ Hypertext transfer protocol (RFC 2616)"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

9

Hello server

Hello client

Get info

Here is info

client" server"Send() Recv()

Send() Recv()

Recv() Send()

Recv() Send()

Request-response protocol example:HTTP

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

10

GET / HTTP/1.1"

HTTP/1.1 200 OK"Date: Wed, 02 Jun 2010 04:57:17 GMT"Server: Apache-Coyote/1.1"Content-Type: text/html;charset=utf-8"Set-Cookie: JSESSIONID=5619B57CC; Path=/"…"

GET /leaderboard.html HTTP/1.1"Host: www.theserverside.com"Cookie: JSESSIONID=5619B57CC"…"

HTTP/1.1 200 OK …"

HTTP client" HTTP server"

Page 6: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

6

Async request-response protocol"

¨ 非同期式(アプリケーション視点)"¨  AJAX: Asynchronous JavaScript + XML"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

11

GET /test.js HTTP/1.1"

HTTP/1.1 200 OK"Content-type: application/json"…"{" “from”: “hamachi”, “body”: “こんにちはこんにちは”}"

HTTP client" HTTP server"

$.getJSON("test.js", function(json) { alert("JSON Data: “ + json.users[3].from); });

JavaScript + jQuery

Remote procedure call (RPC)"

¨ 同期式

¨  SunRPC"¨  SOAP, XML-RPC"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

12

Call f()"

f() returned 1"

Call g()"

g() returned 0"

caller" callee"f()""a = 1

g()""b = 0

g()"= 0

f()"= 1

a = f()"

b = g()"

Page 7: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

7

Remote procedure call: SunRPC

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

13

program MESSAGEPROG { version PRINTMESSAGEVERS { int PRINTMESSAGE(string) = 1; } = 1; } = 0x20000001;

Implementation

Stub code

Interface definition rpcgen

Client stub

Client code

Server stub

Server code

clnt = clnt_create(server, MESSAGEPROG, PRINTMESSAGEVERS, ...); result = printmessage_1(&message, clnt);

int *printmessage_1(char **msg, struct svc_req *req) { static int result = 1; return(&result);

Source: rpcgenプログラミングガイド

Remote procedure call: SOAP

¨  HTTP上で RPCを実現"¨ 実装言語を超える

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

14

Apps

SOAP

XML

HTTP

import org.apache.axis.client.Call; import org.apache.axis.client.Service; ... String endpoint = "http://ws.apache.org:5049/axis/services/echo"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); ... String ret = (String) call.invoke( new Object[] { "Hello!" } );

Java

use SOAP::Lite +autodispatch => uri => 'urn:', proxy => 'http://localhost/'; my $p = My::PingPong->new(10); print $p->next, "\n";

Perl

Page 8: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

8

1対多通信

¨  Broadcast messaging"¤ 全員にメッセージを送信"

¨  Multicast messaging"¤ 送信者はグループ宛に送信"¤ 受信者はグループからメッセージを受信"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

15

group

“a”

“a” “a” “a”

“a”

Multicast messaging example: jgroups"

¨ 信頼性のある1対多通信Reliable multicast communication"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

16

JChannel channel=new JChannel("/home/bela/udp.xml"); channel.setReceiver(new ReceiverAdapter() { public void receive(Message msg) { System.out.println("received msg from " + msg.getSrc() + ": " + msg.getObject()); } }); channel.connect("MyCluster"); channel.send(new Message(null, null, "hello world")); channel.close();

Source: www.jgroups.org

Page 9: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

9

マルチキャストにおける多対多通信

¨ 特定の送信者"¤ Source-specific multicast"

¨ 送信者が誰でもよい"¤ Any-source multicast"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

17

group

“a”

“a” “a” “a”

“a”

“a” “a”

多対多通信

¨ 順にみていこう"¨  Message passing interface"¨  File sharing"¨  Tuple space"¨  Message-oriented middleware"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

18

Page 10: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

10

19

Message passing interface"

¨  MPI: Message Passing Interface"¨ 主として超並列計算用途"

¨  Send / receive"¨ グループ内の通信"¨  Scatter / gather"¨  Reduce"¨ バリア同期"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

MPIにおける送受信"20

node

s

data

疎な行列の分散等

MPI_Send MPI_Recv

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

Page 11: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

11

21

同期/非同期での送受信"

¨ 同期 (blocking)"¤ MPI_Send"¤ MPI_Recv"

¨ 非同期 (non-blocking)"¤ MPI_ISend"¤ MPI_IRecv"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

22

グループ内の通信"

data

node

s

MPI_Group_*

同一アルゴリズムを 2つのデータセットに対し 適用するなど

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

Page 12: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

12

23

MPIにおける集合通信(1): Broadcast"

data

node

s

MPI_Bcast 用途例: 初期パラメータの分配など

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

24

MPIにおける集合通信(2):Scatter / gather"

data

node

s

MPI_Scatter MPI_Gather 用途の例: ベクトルのノード群への分割など 行列積の例 (uniprocessor, MPI)

scatter

gather

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

Page 13: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

13

25

Global reduction operations: Reduce"

data

node

s

MPI_Reduce MPI_SUM, MPI_PROD, MPI_MAX, MPI_MIN, …

用途例: ベクトルと行列の積

applies similarly to all columns

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

26

バリア同期"

¨  MPI_Barrier"

¨  全ノードが MPI_Barrier を呼び出すまでブロック"

p0

p1

p2

p3

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

Page 14: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

14

File sharing"

¨ 大規模データセットの簡単なやりとり等"¨ スクリプト言語で充分な場合も多い"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

27

File server

ファイル共有プロトコル NFS, CIFS, WebDAV etc.

Clients

Tuple space"

¨  Linda"¨  JavaSpaces"

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

28

TS

A B

out()!Add tuple in()!

Withdraw tuple C

read()!Read tuple without withdrawing it

import net.jini.space.JavaSpace; ... MessageEntry msg = new MessageEntry(); msg.content = "Hello there"; Lookup finder = new Lookup(JavaSpace.class); JavaSpace space = (JavaSpace) finder.getService(); space.write(msg, null, 60*60*1000);

Page 15: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

15

Message-oriented middleware"

¨ 非同期式

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

29

Source: The Information Bus: Architecture for Extensible Distributed Systems, SIGOPS’93.

MOM example: Java Message Service

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

30

Source: Java Message Service tutorial, Sun microsystems

Page 16: 計算機システム概論 ネットワークとプロトコル、 …shimada/old_lecture/...11/05/23 7 Remote procedure call: SunRPC Copyright(C)2011 Youki Kadobayashi. All rights

11/05/23

16

ネットワークプログラミングの系譜

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

31

The Impact of Research on the Development of Middleware Technology, ACM Trans. on Software Engineering Methodology, August 2008.

ネットワークプログラミング鳥瞰図

¨ 気になったものを調べてみよう

11/05/25 Copyright(C)2011 Youki Kadobayashi. All rights reserved.

32

1対1/多対多

同期/非同期

使用言語

データ型

データサイズ

処理速度