1 / 53

Ubiquitous Communication Model for Different Network Scenarios

Ubiquitous Communication Model for Different Network Scenarios. Suman Srinivasan PhD Candidacy Talk Feb 23, 2009 Advisor: Dr. Henning Schulzrinne. Introduction. Many different types of networks and connection scenarios exist I will cover the following Traditional networking ←→ Sockets

maguirre
Download Presentation

Ubiquitous Communication Model for Different Network Scenarios

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ubiquitous Communication Model for Different Network Scenarios Suman Srinivasan PhD Candidacy Talk Feb 23, 2009 Advisor: Dr. Henning Schulzrinne

  2. 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?

  3. 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)

  4. Evaluation metrics

  5. Stack diagram Opportunistic N/Ws JXTA/Jini Grid computing SOAP REST XML-RPC MPI PVM Shared mem. Multicast DHTs (and) Overlay N/Ws RPC XML over HTTP Parallel computing Sockets

  6. 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)

  7. END-TO-END NETWORKING • Sockets: Simple, end-to-end communication • socket() • connect() / listen() • send() / recv() • close() • [RFC147] and [RFC2553]

  8. Evaluation metrics

  9. REMOTE EXECUTION • Local function calls • Executed on remote machine • Results returned to caller over network • Communication using sockets • Technologies • Remote Procedure Calls • Remote Method Invocation • OMG CORBA http://msdn.microsoft.com/en-us/library/aa373935.aspx

  10. 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]

  11. 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

  12. 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

  13. 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

  14. OMG CORBA http://en.wikipedia.org/wiki/CORBA

  15. Evaluation metrics

  16. PARALLEL COMPUTING https://computing.llnl.gov/tutorials/parallel_comp/ • Deals with execution or sharing of data across multiple processors • Tightly coupled, physically close nodes • Message Passing Interface (MPI) • Parallel Virtual Machine (PVM) • Shared memory

  17. MPI and PVM • Message Passing Interface [mpi96] • Language independent communications protocol • Communicators connect groups of processes • mpi_send() andmpi_recv() • Parallel Virtual Machine [pvm90] • Software library: allows network of computers to work as though it were one distributed parallel processor • pvm_spawn() andpvm_notify()

  18. Shared Memory Model • [sharedmem07] • Memory that can be accessed by multiple programs • On same processor or multiple processors • OpenMP: API using preprocessor directives • #pragmaomp parallel for • for (i=0;i<N;i++) • a[i]= 2*I;

  19. Evaluation metrics

  20. GRID COMPUTING • Several nodes working on the same problem at the same time • Program divided into portions • Distributed for processing • More loosely coupled, heterogeneous and dispersed than parallel computing • E.g.: Berkley’s BOINC, SETI@home, Folding@home • Javaspaces

  21. Tuple Spaces • [linda85] + [javaspaces] http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/ • Stores distributed system state • Javaspaces: Use Javaspace.write() and Javaspace.read() to put and get objects and results • Javaspaces modeledafter Linda (1985) • Master-worker pattern • Tuple space

  22. Javaspaces code • public static void main(String argv[]) { • try { • MessageEntry msg = new MessageEntry(); • msg.content = "Hello there"; • System.out.println("Searching for a JavaSpace..."); • Lookup finder = new Lookup(JavaSpace.class); • JavaSpace space = (JavaSpace) finder.getService(); • space.write(msg, null, 60*60*1000); • MessageEntry template = new MessageEntry(); • MessageEntry result = (MessageEntry) space.read(template, null, Long.MAX_VALUE); • System.out.println("The message read is: "+result.content); • } catch(Exception e) { • } • }

  23. Evaluation metrics

  24. WEB SERVICES • Remote procedure calls • But using text, not binary objects • Often using XML over HTTP • To build distributed systems over traditional web protocols (XML/HTTP) • Web-based consumer apps • Enterprise apps • XML-RPC • SOAP • REST http://developer.garmin.com/wp-content/uploads/2007/05/picture-5.png

  25. 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>

  26. SOAP • Simple Object Access Protocol • W3C standard • Uses XML for messages • HTTP and HTTPS used for messagenegotiation and transmission • Can use SMTP as well • But HTTP/HTTPS more preferred • SOAP slower than competing RPC technologies because of XML

  27. 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/

  28. 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

  29. 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>

  30. Evaluation metrics

  31. OVERLAY NETWORKS • Built 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 http://www.dynamicobjects.com/papers/w4spot.pdf

  32. 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

  33. DHTs • Well-known DHTs • Chord [Chord01] • CAN [Can01] • Kademilia [Kademilia02] • Pastry [Pastry01] • Partitioned keyspace • Distributed amongst nodes • Deals with churn

  34. Evaluation metrics

  35. Mobile nodes; highly mobile networks No infrastructure OLPC; mesh networks Can be used for ad-hoc, community applications Traditional network apps have to be adapted for oppnets [Opp06] OPPORTUNISTIC NETWORKS

  36. BonAHA Framework for applications running on opportunistic networks Updates on network serviceUpdated() serviceExited() Node properties node.get() node.set() key11 = value11key12 = value12key13 = value13key14 = value14 [1] node1.register() Node 1 [2] node1.get(key13) key21 = value21key22 = value22key23 = value23key24 = value24 [3] data = node1.fileGet( value13); Node 2 [bonaha09]

  37. 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)

  38. 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 Code Application app = new Application(appid); lpconn = new Connection(app); ses = lpconn.CreateSession(); List<Session> sessions = lpconn.GetSessionList(); [Lightpeers07]

  39. Evaluation metrics

  40. ACTIVE NETWORKS • Allows “injection” of customized active code into network core • ANTS, JanOS, Open Multi-Service Router, Netscript, Switchware • All circa 1996-2001 • Why important? • Example of frameworks for executable/active code that change network operations

  41. 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]

  42. 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]

  43. 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]

  44. Evaluation metrics

  45. 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

  46. Backup Slides

  47. RPC http://msdn.microsoft.com/en-us/library/aa373937%28VS.85%29.aspx

  48. 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

  49. MPI Sample code • int main(int argc, char *argv[]) • { • MPI_Status stat; • // Init • MPI_Init(&argc,&argv); /* all MPI programs start with MPI_Init; all 'N' processes exist thereafter */ • MPI_Comm_size(MPI_COMM_WORLD,&numprocs); /* find out how big the SPMD world is */ • MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* and this processes' rank is */ • // Send any number of processses • MPI_Send(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD); • // Receive data • MPI_Recv(buff, BUFSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD, &stat); • // Weak synchronization • MPI_Finalize(); • }

  50. PVM sample code • int main(int argc, char* argv[]) • { • mytid = pvm_mytid(); /* find out my task id number */ • /* find my parent's task id number */ • myparent = pvm_parent(); • /* if i don't have a parent then i am the parent */ • if (myparent == PvmNoParent) { • info = pvm_spawn(argv[0], (char**)0, PvmTaskDebug, (char*)0, • ntask, child); • /* wait for the notification */ • info = pvm_recv(-1, TASKDIED); • pvm_exit(); • return 0; • } • /* i'm a child */ • pvm_exit(); • return 0; • }

More Related