Upload
suman-srinivasan
View
1.593
Download
0
Tags:
Embed Size (px)
DESCRIPTION
My PhD candidacy presentation that I gave on Feb 23, 2009. The topic was "Ubiquitous Communication Models for Various Network Models."
Citation preview
1
Ubiquitous Communication Model for Different Network Scenarios
Suman SrinivasanPhD Candidacy TalkFeb 23, 2009Advisor: Dr. Henning Schulzrinne
Introduction
Many different types of networks and connection scenarios exist
I will cover the following Traditional networking ←→ Sockets Remote execution ←→ RPC, RMI, CORBA Parallel computing ←→ MPI, PVM, Shared memory Grid computing ←→ Javaspaces, Linda Web services ←→ XML-RPC, SOAP, REST Overlay networks ←→ DHTs, Bittorrent, JXTA Opportunistic networks ←→ BonAHA, LightPeers, etc Active Networks ←→ ANTS, Janos, etc.
… mainly from the programmer’s perspective … and try to answer the following question Is there a common communication model, or
programming abstraction, for all of the above scenarios?
2
Comparison metrics
API for programmers e.g., send/recv (or) find/get/set (or) remote
procedures Distribution of messages
1-to-1, 1-to-N Processing location
Where processed: node, network (router) Delay Destination known? Message functionality
Active (execution) or passive (data)
3
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
4
Stack diagram
5
Sockets
Multicast DHTs (and) Overlay N/Ws
XML over HTTP
XML-RPC
Parallel computing
RESTSOAP
Shared mem.
PVMMPI RPC
Opportunistic N/Ws
Grid computing
JXTA/Jini
Type of API
Send/Recv (or) Read/Write Sockets, Parallel computing (MPI), Grid
computing (Javaspaces, Linda) Remote Procedures
Remote execution (RPC, RMI, CORBA), Web services (SOAP, XML-RPC)
Get/Set Web services (REST), Overlay networks (DHTs),
Opportunistic networks Process execution
Parallel computing (PVM)
6
7
END-TO-END NETWORKING
Sockets: Simple, end-to-end communicationsocket()connect() / listen()send() / recv()close()
[RFC147] and [RFC2553]
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
8
REMOTE EXECUTIONLocal function calls
Executed on remote machineResults returned to caller over
networkCommunication using sockets
TechnologiesRemote Procedure CallsRemote Method InvocationOMG CORBA
9
http://msdn.microsoft.com/en-us/library/aa373935.aspx
RPC
Remote Procedure Call RFC 707 (1976): A High-Level
Framework for Network-Based Resource Sharing
“… outlines an alternative to the approach that ARPANET system builders have been taking...”
Argues that the "command/response discipline" remains "crude“
[rfc707]
10
RPC
Early versions Xerox Courier (1981), Sun's ONC RPC
(1988, 1995) Microsoft provides RPC APIs
DCOM (1996) built on top of Microsoft RPC Other implementations for Windows
11
RPC and RMI
Sun’s RPC Data serialized using IETF XDR format,
via TCP or UDP Port mapper
Maps RPC program numbers to port numbers on server
[RFC1057] and [RFC1831] Java RMI [javarmi]
Very similar to RPC, can work over CORBA
12
OMG CORBA
Common Object Requesting Broker Architecture
Interface Definition Language (IDL) to specify interfaces Program communicates with ORB
(Object Request Broker), which interacts with other apps on network
Transport protocol: General Inter-ORB protocol (GIOP): IIOP, SSLIOP, HTIOP
13
OMG CORBA
http://en.wikipedia.org/wiki/CORBA 14
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
15
16
PARALLEL COMPUTING
Deals with execution or sharing of data across multiple processors
Tightly coupled, physically close nodesMessage Passing Interface (MPI)Parallel Virtual Machine (PVM)Shared memory
https://computing.llnl.gov/tutorials/parallel_comp/
MPI and PVM
Message Passing Interface [mpi96] Language independent communications
protocol Communicators connect groups of processes mpi_send() and mpi_recv() Parallel Virtual Machine [pvm90] Software library: allows network of
computers to work as though it were one distributed parallel processor
pvm_spawn() and pvm_notify()
17
Shared Memory Model
Memory that can be accessed by multiple programs On same processor or multiple
processors OpenMP: API using preprocessor
directives1. #pragma omp parallel for
2. for (i=0;i<N;i++)
3. a[i]= 2*I;
[sharedmem07]
18
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
19
GRID COMPUTINGSeveral nodes working on the same
problem at the same timeProgram divided into portionsDistributed for processingMore loosely coupled, heterogeneous
and dispersed than parallel computingE.g.: Berkley’s BOINC, SETI@home,
Folding@homeJavaspaces
20
Tuple Spaces
Stores distributed system state Javaspaces: Use Javaspace.write()
and Javaspace.read() to put and get objects and results Javaspaces modeled
after Linda (1985) Master-worker
pattern Tuple space
http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
[linda85] + [javaspaces]
21
Javaspaces code
1. public static void main(String argv[]) {2. try {3. MessageEntry msg = new MessageEntry();4. msg.content = "Hello there";5. System.out.println("Searching for a JavaSpace...");6. Lookup finder = new Lookup(JavaSpace.class);7. JavaSpace space = (JavaSpace) finder.getService();8. 9. space.write(msg, null, 60*60*1000);10. MessageEntry template = new MessageEntry();11. 12. MessageEntry result = (MessageEntry) space.read(template, null,
Long.MAX_VALUE);13. System.out.println("The message read is: "+result.content);14. } catch(Exception e) {15. }16. }
22
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
23
WEB SERVICESRemote procedure callsBut using text, not binary
objectsOften using XML over
HTTPTo build distributed systems
over traditional web protocols (XML/HTTP) Web-based consumer apps Enterprise apps
XML-RPCSOAPREST
24
http://developer.garmin.com/wp-content/uploads/2007/05/picture-5.png
Web Services
XML-RPC Simple protocol, created in 1998 Data types, commands
Example from: http://www.tutorialspoint.com/xml-rpc/xml_rpc_examples.htm Function call
<?xml version="1.0" encoding="ISO-8859-1"?> <methodCall> <methodName>sample.sum</methodName> <params> <param> <value><int>17</int></value> </param> <param> <value><int>13</int></value> </param> </params> </methodCall>
Response <?xml version="1.0" encoding="ISO-8859-1"?> <methodResponse> <params><param> <value><int>30</int></value> </param></params> </methodResponse>
25
SOAP
Simple Object Access Protocol W3C standard
Uses XML for messages HTTP and HTTPS used for message
negotiation and transmission Can use SMTP as well But HTTP/HTTPS more preferred
SOAP slower than competing RPC technologies because of XML
26
SOAP
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> <n:alertcontrol xmlns:n="http://example.org/alertcontrol"> <n:priority>1</n:priority> <n:expires>2001-06-22T14:00:00-05:00</n:expires> </n:alertcontrol> </env:Header> <env:Body> <m:alert xmlns:m="http://example.org/alert"> <m:msg>Pick up Mary at school at 2pm</m:msg> </m:alert> </env:Body> </env:Envelope>
From http://www.w3.org/TR/soap12-part1/
27
REST
Representational State Transfer 2000 PhD Thesis by Roy Fielding
Resources with a identifier Exchange representations of resources Connectors (clients, servers, caches,
tunnels) Instead of calling getData(1), you
would get content from a URN: http://somesite.com/data/1
28
REST
From http://developer.yahoo.com/maps/rest/V1/geocode.html Call a “REST-like” service:
http://local.yahooapis.com/MapsService/V1/geocode?appid=YD-9G7bey8_JXxQP6rxl.fBFGgCdNjoDMACQA--&street=701+First+Ave&city=Sunnyvale&state=CA
Response from Yahoo: <?xml version="1.0" encoding="UTF-8"?> <ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:yahoo:maps" xsi:schemaLocation="urn:yahoo:maps
http://local.yahooapis.com/MapsService/V1/GeocodeResponse.xsd"> <Result precision="address"> <Latitude>37.416384</Latitude>
<Longitude>-122.024853</Longitude> <Address>701 FIRST AVE</Address> <City>SUNNYVALE</City> <State>CA</State>
<Zip>94089-1019</Zip> <Country>US</Country> </Result> </ResultSet>
29
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
30
OVERLAY NETWORKSBuilt on top of always-connected
networks (and others) Form a sub-network with specific
functionality With routing protocol Distributed key-value pairs
Structured overlays Tapestry, CAN, Chord Constrained, structured graph topology Exact-match queries
Unstructured overlays Organized in random graph topology Keyword queries E.g.: Gnutella
31
http://www.dynamicobjects.com/papers/w4spot.pdf
DHT service model
API Example: [OpenDHT] get(), put(), rm() Behind the scenes – [BambooDHT] Running on PlanetLab
Other DHTs use similar APIs Can be extended to usage outside of
DHTs as well
32
DHTs
Well-known DHTs Chord [Chord01] CAN [Can01] Kademilia [Kademilia02] Pastry [Pastry01]
Partitioned keyspace Distributed amongst nodes Deals with churn
33
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
34
OPPORTUNISTIC NETWORKS
35
Mobile nodes; highly mobile networksNo infrastructure
OLPC; mesh networksCan be used for ad-hoc, community
applicationsTraditional network apps have to be
adapted for oppnets[Opp06]
BonAHA
Framework for applications running on opportunistic networks
Updates on network serviceUpdated() serviceExited()
Node properties node.get() node.set() Node 2
Node 1
key21 = value21key22 = value22key23 = value23key24 = value24
key11 = value11key12 = value12key13 = value13key14 = value14
[2] node1.get(key13)
[1] node1.register()
[3] data = node1.fileGet( value13);
[bonaha09]
36
Other OppNet Frameworks
For opportunistic and mobile networks Proem (2001) Peer2Me (2004)
File sharing on BlueTooth Market Contact Protocol (MCP) (2008)
Oppnet commerce LightPeers (2007)
37
LightPeers
Similar model to BonAHA “Application”: Each application has its own GUID that
identifies it “Session”: A group of nodes registered as running the
application
Code1. Application app = new Application(appid);
2. lpconn = new Connection(app);
3. ses = lpconn.CreateSession();
4. List<Session> sessions = lpconn.GetSessionList();
[Lightpeers07]
38
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
39
ACTIVE NETWORKSAllows “injection” of customized active code
into network coreANTS, JanOS, Open Multi-Service Router,
Netscript, SwitchwareAll circa 1996-2001Why important?
Example of frameworks for executable/active code that change network operations
40
ANTS (Active Node Transfer Sys)
New network protocolsautomatically deployedusing mobile code Packets are replaced by
capsules Capsules contain instructions with
executable code Routers (active nodes) execute code
[Ants98]
41
Janos
Janos is a NodeOS (Moab) with: Execution Environment (EE) : similar to
virtual machine Active Applications (AA), which are
injected into the network Written to run on ANTSR runtime Which runs on
top of Janosvirtual machine
[Janos01]
42
Switchware
Active packets, active extensions, active router infrastructure CAML-based Packets contain PLAN
(Programming Language for Active Networks) code
SANE (Secure Active Network Environment)
[Switchware98]
43
Evaluation metricsAPI model
Dist Location Delay Dest IP known
Message function
End-to-end sockets
Message (send/recv)
1-to-1 / 1-to-N
Endpoints /Endpoints + routers
Network Yes Passive
Remote execution
RPC 1-to-1 Remote node
Network + processing
Yes Passive (func+args)
Parallel computing
Message; Process
1-to-N Endpoints (clustered)
Network/bus No Passive
Grid computing
Message (active obj.)
1-to-N Endpoints (distributed)
Network + processing
No Active
Web services
RPC; get/set 1-to-1 Remote node
Network + processing
Yes Passive (XML cmds)
Overlay find/get/set/rm
1-to-N (DHT)
Endpoints (overlay)
Setup time + query process + churn
No Passive
Opportunistic networks
find/get/set/rm
1-to-N Endpoints Delay on wire/wireless
No Passive
Active Networks
Routing 1-to-N (router)
Routers Processing time
No Active
44
Conclusion
Covered the following network topologies, and the associated programming models:
Traditional networking ←→ Sockets Remote execution ←→ RPC, RMI, CORBA Parallel computing ←→ MPI, PVM, Shared memory Grid computing ←→ Javaspaces, Linda Web services ←→ XML-RPC, SOAP, REST Overlay networks ←→ DHTs, Bittorrent, JXTA Opportunistic networks ←→ BonAHA, LightPeers, etc Active Networks ←→ ANTS, Janos, etc.
Question: Is there a common communication model, or abstraction for all of these scenarios?
Answer: Hard to see common ground Perhaps among some sub-groups, e.g., grid and
parallel computing, overlay and opportunistic networks
45
Backup Slides
46
RPC
http://msdn.microsoft.com/en-us/library/aa373937%28VS.85%29.aspx47
Java RMI command
java -cp /home/ann/src:/home/ann/public_html/classes/compute.jar -Djava.rmi.server.codebase=http://zaphod/~ann/classes/compute.jar -Djava.rmi.server.hostname=zaphod.east.sun.com -Djava.security.policy=server.policy engine.ComputeEngine
48
MPI Sample code
1. int main(int argc, char *argv[])2. {3. MPI_Status stat; 4. 5. // Init6. MPI_Init(&argc,&argv); /* all MPI programs start with MPI_Init; all 'N' processes exist
thereafter */7. MPI_Comm_size(MPI_COMM_WORLD,&numprocs); /* find out how big the SPMD world is
*/8. MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* and this processes' rank is */
9. // Send any number of processses 10. MPI_Send(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD);
11. // Receive data12. MPI_Recv(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD, &stat);13. 14. // Weak synchronization15. MPI_Finalize(); 16. }
49
PVM sample code
1. int main(int argc, char* argv[])2. {3. mytid = pvm_mytid(); /* find out my task id number */4. /* find my parent's task id number */5. myparent = pvm_parent();6. /* if i don't have a parent then i am the parent */7. if (myparent == PvmNoParent) {8. info = pvm_spawn(argv[0], (char**)0, PvmTaskDebug, (char*)0,9. ntask, child);10. /* wait for the notification */11. info = pvm_recv(-1, TASKDIED);12. pvm_exit();13. return 0;14. }15. /* i'm a child */16. pvm_exit();17. return 0;18. }
50
ANTS example
51
Netscript
Agents dispatched to remote systems Uses SOS to manage
delegation agents Virtual Network
Engines (VNE) interconnected by Virtual Links (VL) Packet arrives at VNE; headers used to
pass it on executing agent [Netscript96]
52
JXTA
Framework for building P2P apps Peers create a overlay network
Nodes identified by 160-bit SHA-1 URN Different protocols
Peer Resolver, Peer Information, Rendezvous, Peer Membership, Pipe Binding, Endpoint Routing
Peer types: Edge, Super, Rendezvous, Relay
[jxta]
53