tuesday, december 16, 2008

33
1 Tuesday, December 16, 2008 The practical scientist is trying to solve tomorrow's problem on yesterday's computer. Computer scientists often have it the other way around. - Numerical Recipes, C Edition

Upload: charlotte-schroeder

Post on 01-Jan-2016

23 views

Category:

Documents


0 download

DESCRIPTION

Tuesday, December 16, 2008. The practical scientist is trying to solve tomorrow's problem on yesterday's computer. Computer scientists often have it the other way around. - Numerical Recipes, C Edition. Distributed Computing Class: BSIT-8 Instructor: Raihan Ur Rasool. Chapter 04: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tuesday, December 16, 2008

1

Tuesday, December 16, 2008

The practical scientist is trying to solve tomorrow's

problem on yesterday's computer. Computer

scientists often have it the other way around.

- Numerical Recipes, C Edition

Page 2: Tuesday, December 16, 2008

Distributed ComputingClass: BSIT-8

Instructor: Raihan Ur Rasool

Chapter 04: Chapter 04:

Inter-process CommunicationInter-process Communication

Page 3: Tuesday, December 16, 2008

Chapter 3 Chapter 3 – SELF STUDYSELF STUDY

3

Networking issues for distributed systems

Types of network Network Principles

Protocol layers Internetworking Routing

Internet protocols Case Studies

Ethernet MobileLAN ATM

Page 4: Tuesday, December 16, 2008

Objectives of the lecture

4

To study the general characteristics of interprocess communication and the particular characteristics of both datagram and stream communication in the Internet.

To be able to write Java and C applications that use the Internet protocols and Java serialization.

To be aware of the design issues for Request-Reply protocols and how collections of data objects may be represented in messages (RMI and language integration are left until Chapter 5).

To be able to use the Java API to IP multicast and to consider the main options for reliability and ordering in group communication.

Page 5: Tuesday, December 16, 2008

5

Introduction The API for the Internet protocols External data representation and

marshalling Client-Server communication Group communication Case study: interprocess communication in

UNIX Summary

Chapter 4: Interprocess Communication

Page 6: Tuesday, December 16, 2008

6

Middleware layer TCP ( UDP) from a programmers point of view

TCP : two way stream UDP : datagram, message passing

Java interface, UNIX Socket marshalling and demarshalling

data form translation Client-Server communication

Request-Reply protocols Java RMI, RPC

Group communication

Introduction

Page 7: Tuesday, December 16, 2008

7

Middleware layer (1)

Applications, services

Middlewarelayers

request-reply protocol

marshalling and external data representation

UDP and TCP

Thischapter

RMI and RPC

Page 8: Tuesday, December 16, 2008

Middleware layer (2)

8

An adapted reference model for networked communication.

2-5

Page 9: Tuesday, December 16, 2008

Middleware layer (3)

9

A software layer that masks the heterogeneity of systems provides a convenient programming abstraction provides protocols for providing general-purpose

services to more specific applications, e.g. naming, security, transaction, persistent storage and event notification authentication protocols authorization protocols distributed commit protocols distributed locking protocols high-level communication protocols

remote procedure calls (RPC) remote method invocation (RMI)

Page 10: Tuesday, December 16, 2008

Middleware (4)

10

General structure of a distributed system as middleware.

1-22

Page 11: Tuesday, December 16, 2008

Middleware programming models

11

Remote Calls remote Procedure Calls (RPC) distributed objects and Remote Method Invocation

(RMI) eg. Java RMI

Group multicast protocols Common Object Request Broker Architecture

(CORBA) Other programming models

remote event notification remote SQL access distributed transaction processing

Page 12: Tuesday, December 16, 2008

12

Introduction The API for the Internet protocols External data representation and

marshalling Client-Server communication Group communication Case study: interprocess communication in

UNIX Summary

Where are we ?

Page 13: Tuesday, December 16, 2008

13

Producer—Consumer and waitProducer—Consumer and wait Send and receiveSend and receive Synchronous and asynchronousSynchronous and asynchronous

a queue associated with message destination, Sending process add message to remote queue Receiving process remove message from local queue

Synchronous: send and receive are blocking operations

Asynchronous: send is nonblocking, receive could be blocking or nonblocking

(receive notification by interrupt) Java supports multiple threads in a single process

Non-blocking communication appears to be more efficient, but it involves extra complexity in the receiving process: flow control

The characteristics of inter-process communication (1)

Page 14: Tuesday, December 16, 2008

14

Message destinations:Message destinations: Internet address + local port Port has one receiver but many senders service name: names into server locations at run time location independent resource identifiers, e.g. in Mach

ReliabilityReliability validity: messages are guaranteed to be delivered

despite a reasonable number of packets being dropped or lost

Integrity: messages arrive uncorrupted and without duplication

OrderingOrdering the messages be delivered in sender order

The order in which they were transmitted by the sender. The delivery out of sender’s order is regarded as failure

The characteristics of interprocess communication (2)

Page 15: Tuesday, December 16, 2008

15

Endpoint for communication between processes Both forms of communication (UDP and TCP ) use

the socket abstraction Originated from BSD Unix, present in Linux,

Windows NT and Macintosh OS etc bound to a local port (216 possible port number) and

one of the Internet address a process cannot share socket with other processes

on the same computer

Socket

message

agreed portany port socketsocket

Internet address = 138.37.88.249Internet address = 138.37.94.248

other ports

client server

Page 16: Tuesday, December 16, 2008

Sockets

16

The application level API to TCP & UDP Allows users to write application

“protocol objects” which sit on top of TCP and UDP.

Execution of TCP/UDP/IP are in kernel space. Sockets provide the bridge to user space.

Java provides 3 types of sockets DatagramSocket – for UDP ServerSocket – for TCP server Socket – endpoint of a TCP streamMore on Sockets:More on Sockets:

ttp:::: v :sun: om: o s: oo:s:tutor l:nh a a c d c b iatwor: n :so : ts: n t on: tmle i g ced efi i i h

Page 17: Tuesday, December 16, 2008

17

UDP datagrams are sent without acknowledgement or retries

Issues relating to datagram communication Message size: not bigger than 64k in size, otherwise

truncated on arrival blocking: non-blocking sends (message could be

discarded at destination if there is not a socket bound to the port ) and blocking receives (could be timeout)

Timeout: receiver set on socket –server blocks forever

Receive from any: not specify an origin for messages, but could be set to receive from or send to particular remote port by socket connection operation

UDP datagram communication

Page 18: Tuesday, December 16, 2008

UDP datagram communication

18

Failure model omission failure: message be dropped due

to checksum error or no buffer space at sender side or receiver side (send-omission, receive-omission)

ordering: message be delivered out of sender order

application maintains the reliability of UDP communication channel by itself (ACK)

DNS & VOIP are implemented over UDP UDP datagram do not suffer from overheads

associated with guaranteed message delivery

Page 19: Tuesday, December 16, 2008

19

DatagramPacket DatagramSocket

send and receive : transmit datagram between a pair of sockets

setSoTimeout : receive method will block for the time specified and then throw an InterruptedIOexception

connect: connect to a particular remote port and Internet address

Examples acceptable to services that are liable to

occasional omission failures, e.g. DNS

Java API for UDP datagrams

Page 20: Tuesday, December 16, 2008

Datagram Sockets

20

Creating a datagram socket DatagramSocket soc = new DatagramSocket(port-no.)

Creating a datagram packect DatagramPacket p = new DatagramPacket(byte[] data,

int len, InetAddress dest, int dest-port); Sending a packet

soc.send( p ) Receiving a packet

q = new DatagramPacket(buff, len);soc.receive( q );

Page 21: Tuesday, December 16, 2008

21

UDP client sends a message to the server and gets a reply

import java.net.*;import java.io.*;public class UDPClient{ public static void main(String args[]){

// args give message contents and server hostnameDatagramSocket aSocket = null; try { aSocket = new DatagramSocket(); byte [] m = args[0].getBytes(); InetAddress aHost = InetAddress.getByName(args[1]); int serverPort = 6789; DatagramPacket request = new DatagramPacket(m, args[0].length(), aHost, serverPort); aSocket.send(request); byte[] buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); aSocket.receive(reply); System.out.println("Reply: " + new String(reply.getData())); }catch (SocketException e){System.out.println("Socket: " + e.getMessage()); }catch (IOException e){System.out.println("IO: " + e.getMessage());}}finally {if(aSocket != null) aSocket.close();}

} }

Page 22: Tuesday, December 16, 2008

22

UDP server repeatedly receives a request and sends it back to the client

import java.net.*;import java.io.*;public class UDPServer{

public static void main(String args[]){ DatagramSocket aSocket = null; try{ aSocket = new DatagramSocket(6789);

byte[] buffer = new byte[1000]; while(true){ DatagramPacket request = new DatagramPacket(buffer, buffer.length); aSocket.receive(request); DatagramPacket reply = new DatagramPacket(request.getData(),

request.getLength(), request.getAddress(), request.getPort()); aSocket.send(reply);}

}catch (SocketException e){System.out.println("Socket: " + e.getMessage()); }catch (IOException e) {System.out.println("IO: " + e.getMessage());}}finally {if(aSocket != null) aSocket.close();}

}}

Page 23: Tuesday, December 16, 2008

23

The API to the TCP provide the abstraction of a stream of bytes to which data

may be written and from which data may be read Hidden network characteristics

message sizes (how much data to write/read) (Application) lost messages (ACK) flow control (match the speed) message duplication and ordering (identifier with each IP

Packet) message destinations (establish connection)

Once connection is established, no need of address & ports While connection establishing: client/server

Client Client Connect request, Server Connect request, Server Accept requestAccept request, becomes becomes PeersPeers

Client: creates stream socket, bind to a port, and makes a connect request to server

Server: creates a listening socket, bind to a server port, and waits for clients

TCP stream communication (1)

Page 24: Tuesday, December 16, 2008

24

issues related to stream communication Matching of data items: agree to the contents of the

transmitted data (int & double, write/ read, ) Blocking: send blocked until the data is written in the receiver’s

buffer, receive blocked until the data in the local buffer becomes available

Threads: server create a new thread for every connection failure model

integrity and validity have been achieved by checksum, sequence number, timeout and retransmission in TCP protocol

connection could be broken due to unknown failures Can’t distinguish between network failure and the destination

process failure Can’t tell whether its recent messages have been received or

not

TCP stream communication (2)

Page 25: Tuesday, December 16, 2008

TCP byte stream sockets

25

Server socket – waits for connections soc = new ServerSocket( port-no ); Socket newsoc = soc.accept( );

Client socket – connects to server client = new Socket(server-addr, server-port);

When connected, get streams InputStream in = client.getInputStream( );

OutputStream out = client.getOutputStream( )

Page 26: Tuesday, December 16, 2008

26

ServerSocket accept: listen for connect requests from clients

Socket constructor

not only create a socket associated with a local port, but also connect it to the specified remote computer and port number

getInputStream getOutputStream

Java API for TCP Streams

Page 27: Tuesday, December 16, 2008

27

TCP client makes connection to server, sends request and receives reply

import java.net.*;import java.io.*;public class TCPClient {

public static void main (String args[]) {// arguments supply message and hostname of destinationSocket s = null; try{ int serverPort = 7896; s = new Socket(args[1], serverPort);

DataInputStream in = new DataInputStream( s.getInputStream());DataOutputStream out =

new DataOutputStream( s.getOutputStream());out.writeUTF(args[0]); // UTF is a string encoding see Sn 4.3String data = in.readUTF(); System.out.println("Received: "+ data) ;

}catch (UnknownHostException e){System.out.println("Sock:"+e.getMessage());

}catch (EOFException e){System.out.println("EOF:"+e.getMessage()); }catch (IOException e){System.out.println("IO:"+e.getMessage());}

}finally {if(s!=null) try {s.close();}catch (IOException e){System.out.println("close:"+e.getMessage());}} }}

Page 28: Tuesday, December 16, 2008

28

TCP server makes a connection for each client and then echoes the client’s request (1)

import java.net.*;import java.io.*;public class TCPServer { public static void main (String args[]) {

try{int serverPort = 7896; ServerSocket listenSocket = new ServerSocket(serverPort);while(true) {

Socket clientSocket = listenSocket.accept();Connection c = new Connection(clientSocket);Connection c = new Connection(clientSocket);

}} catch(IOException e) {System.out.println("Listen :"+e.getMessage());}

}}

// this figure continues on the next slide

Page 29: Tuesday, December 16, 2008

29

TCP Server (2)

class ConnectionConnection extends Thread {DataInputStream in;DataOutputStream out;Socket clientSocket;public Connection (Socket aClientSocket) { try {

clientSocket = aClientSocket;in = new DataInputStream( clientSocket.getInputStream());out =new DataOutputStream( clientSocket.getOutputStream());this.start();

} catch(IOException e) {System.out.println("Connection:"+e.getMessage());}}public void run(){ try { // an echo server

String data = in.readUTF(); out.writeUTF(data);

} catch(EOFException e) {System.out.println("EOF:"+e.getMessage()); } catch(IOException e) {System.out.println("IO:"+e.getMessage());} } finally{ try {clientSocket.close();}catch (IOException e){/*close failed*/}}}

}

Page 30: Tuesday, December 16, 2008

30

Introduction The API for the Internet protocols External data representation and

marshalling Client-Server communication Group communication Case study: interprocess communication in

UNIX Summary

Where are we ?

Page 31: Tuesday, December 16, 2008

31

Why does the communication data need external data representation and marshalling? [data structures must be flattened]

Different data format on different computers, e.g., big-endian/little-endian integer order, ASCII (Unix) / Unicode character coding

How to enable any two computers to exchange data values?1. The values be converted to an agreed external format

before transmission and converted to the local form on receipt

2. The values are transmitted in the sender’s format, together with an indication of the format used, and the receipt converts the value if necessary

External data representation and marshalling introduction [data structures and a sequence of bytes]

Page 32: Tuesday, December 16, 2008

32

Why does the communication data need external data representation and marshalling?

Different data format on different computers, e.g., big-endian/little-endian integer order, ASCII (Unix) / Unicode character coding

How to enable any two computers to exchange data values?1. The values be converted to an agreed external format before

transmission and converted to the local form on receipt2. The values are transmitted in the sender’s format, together with an

indication of the format used, and the receipt converts the value if necessary

External data representation An agreed standard for the representation of data structures

and primitive values Marshalling

The process of taking a collection of data items and assembling them into a form suitable for transmission in a message

Usage: for data transmission or storing in files Three alternative approaches to EDP

CORBA’s common data representation / Java’s object serialization & XML

External data representation and marshalling introduction

Page 33: Tuesday, December 16, 2008

Reading Assignment CORBA’s Common Data Representation (CDR) Java Object Serialization Extensible Markup language (XML)

Next Time: Recap Client-server communication

33