Spatial Approaches to Pervasive Computing Tutorial at IEEE SASO 2008 Jacob Beal (BBN Technologies) Jonathan Bachrach (MIT)

Slides:



Advertisements
Similar presentations
UNIVERSITY OF JYVÄSKYLÄ P2PDisCo – Java Distributed Computing for Workstations Using Chedar Peer-to-Peer Middleware Presentation for 7 th International.
Advertisements

Sensor Network Platforms and Tools
Overview: Chapter 7  Sensor node platforms must contend with many issues  Energy consumption  Sensing environment  Networking  Real-time constraints.
Using DSVM to Implement a Distributed File System Ramon Lawrence Dept. of Computer Science
Introduction to Operating Systems CS-2301 B-term Introduction to Operating Systems CS-2301, System Programming for Non-majors (Slides include materials.
Adapting Asynchronous Messaging Middleware to Ad Hoc Networking Mirco Musolesi Cecilia Mascolo Stephen Hailes Dept. of Computer Science University College.
1 Sensor Networks and Networked Societies of Artifacts Jose Rolim University of Geneva.
Chapter 13 Embedded Systems
1 Self-Routing in Pervasive Computing Environments using Smart Messages Cristian Borcea, Chalermek Intanagonwiwat, Akhilesh Saxena (Rutgers University),
GridFlow: Workflow Management for Grid Computing Kavita Shinde.
Quality of Service in IN-home digital networks Alina Albu 7 November 2003.
Cooperative Computing: A Computing Model for Large Networks of Embedded Systems Cristian Borcea, Phillip Stanley-Marbell, Kiran Nagaraja, Liviu Iftode.
1 ITC242 – Introduction to Data Communications Week 12 Topic 18 Chapter 19 Network Management.
Networking Theory (Part 1). Introduction Overview of the basic concepts of networking Also discusses essential topics of networking theory.
I/O Hardware n Incredible variety of I/O devices n Common concepts: – Port – connection point to the computer – Bus (daisy chain or shared direct access)
3.5 Interprocess Communication Many operating systems provide mechanisms for interprocess communication (IPC) –Processes must communicate with one another.
Outdoor Distributed Computing* Cristian Borcea Department of Computer Science New Jersey Institute of Technology * Work done at Rutgers prior to September.
3.5 Interprocess Communication
Turning Ad Hoc Networks into Distributed Service Providers Cristian Borcea Department of Computer Science New Jersey Institute of Technology.
EEC-681/781 Distributed Computing Systems Lecture 3 Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University
1 Cooperative Computing for Distributed Embedded Systems* Cristian Borcea, Deepa Iyer, Porlin Kang, Akhilesh Saxena, and Liviu Iftode Division of Computer.
Outdoor Distributed Computing Cristian Borcea Department of Computer Science New Jersey Institute of Technology.
Middleware for Cooperative Computing on Large Ad-hoc Networks of Embedded Systems* Cristian Borcea, Deepa Iyer, Porlin Kang, Akhilesh Saxena and Liviu.
Dynamic Medial Axis Based Motion Planning in Sensor Networks Lan Lin and Hyunyoung Lee Department of Computer Science University of Denver
Spatial Programming using Smart Messages: Design and Implementation Cristian Borcea, Chalermek Intanagonwiwat, Porlin Kang, Ulrich Kremer, and Liviu Iftode.
Programming Computers Embedded in the Physical World Liviu Iftode, Andrzej Kochut University of Maryland Cristian Borcea, Chalermek Intanagonwiwat, Ulrich.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
P2P Systems Meet Mobile Computing A Community-Oriented Software Infrastructure for Mobile Social Applications Cristian Borcea *, Adriana Iamnitchi + *
Database System Concepts and Architecture Lecture # 3 22 June 2012 National University of Computer and Emerging Sciences.
HRTC Meeting 12 September 2002, Vienna Smart Sensors Thomas Losert.
Java: Chapter 1 Computer Systems Computer Programming II.
Chapter 6 Operating System Support. This chapter describes how middleware is supported by the operating system facilities at the nodes of a distributed.
Robot Autonomous Perception Model For Internet-Based Intelligent Robotic System By Sriram Sunnam.
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
Rapid Development and Flexible Deployment of Adaptive Wireless Sensor Network Applications Chien-Liang Fok, Gruia-Catalin Roman, Chenyang Lu
1 Heterogeneity in Multi-Hop Wireless Networks Nitin H. Vaidya University of Illinois at Urbana-Champaign © 2003 Vaidya.
PERVASIVE COMPUTING MIDDLEWARE BY SCHIELE, HANDTE, AND BECKER A Presentation by Nancy Shah.
Lecture 3 Process Concepts. What is a Process? A process is the dynamic execution context of an executing program. Several processes may run concurrently,
 2004 Deitel & Associates, Inc. All rights reserved. 1 Chapter 4 – Thread Concepts Outline 4.1 Introduction 4.2Definition of Thread 4.3Motivation for.
Copyright © George Coulouris, Jean Dollimore, Tim Kindberg This material is made available for private study and for direct.
Embedded Runtime Reconfigurable Nodes for wireless sensor networks applications Chris Morales Kaz Onishi 1.
Locating Mobile Agents in Distributed Computing Environment.
Hardware process When the computer is powered up, it begins to execute fetch-execute cycle for the program that is stored in memory at the boot strap entry.
Processes Introduction to Operating Systems: Module 3.
By Teacher Asma Aleisa Year 1433 H.   Goals of memory management  To provide a convenient abstraction for programming.  To allocate scarce memory.
Human Tracking System Using DFP in Wireless Environment 3 rd - Review Batch-09 Project Guide Project Members Mrs.G.Sharmila V.Karunya ( ) AP/CSE.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
1 A Context Discovery Middleware for Context-Aware Applications with Heterogeneous Sensors Yu-Min Tseng.
Lecture 5: Threads process as a unit of scheduling and a unit of resource allocation processes vs. threads what to program with threads why use threads.
Egocentric Context-Aware Programming in Ad Hoc Mobile Environments Christine Julien Gruia-Catalin Roman Mobile Computing Laboratory Department of Computer.
Abstract A Structured Approach for Modular Design: A Plug and Play Middleware for Sensory Modules, Actuation Platforms, Task Descriptions and Implementations.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Department of Computer Science and Software Engineering
Full and Para Virtualization
Internet of Things. IoT Novel paradigm – Rapidly gaining ground in the wireless scenario Basic idea – Pervasive presence around us a variety of things.
Hardware process When the computer is powered up, it begins to execute fetch-execute cycle for the program that is stored in memory at the boot strap entry.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Problem On a regular basis we use: –Java applets –JavaScript –ActiveX –Shockwave Notion of ubiquitous computing.
IHP Im Technologiepark Frankfurt (Oder) Germany IHP Im Technologiepark Frankfurt (Oder) Germany ©
Agent Group Università di Modena e Reggio Emilia Theory and Practice of Field- based Motion Coordination in Multi-Agent Systems Marco Mamei, Franco Zambonelli.
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Software Architecture of Sensors. Hardware - Sensor Nodes Sensing: sensor --a transducer that converts a physical, chemical, or biological parameter into.
On the Evaluation of Space-Time Functions Jacob Beal, Kyle Usbeck Spatial Computing SASO 2011 Work sponsored by DARPA; the views and conclusions.
Introduction to Operating Systems Concepts
Computer System Structures
Chapter 4 – Thread Concepts
Chapter 4 – Thread Concepts
Advanced Operating Systems
Presentation transcript:

Spatial Approaches to Pervasive Computing Tutorial at IEEE SASO 2008 Jacob Beal (BBN Technologies) Jonathan Bachrach (MIT) Cristian Borcea (NJIT) Marco Mamei (Univ. Modena Reggio Emilia) 1

Syllabus Pervasive Computing, Spatial Computing  Example Scenarios Overview of Spatial Approaches Three spatial programming models:  Spatial Programming / Smart Messages  TOTA / Field-based Coordination  Proto / Amorphous Medium abstraction 2

Wireless devices are filling our environment... 3

4

Wireless-enabled embedded systems >3.3B cell phones vs. 600M Internet-connected PC’s in 2007  >600M cell phones with Internet capability, rising rapidly New cars come equipped with navigation systems and will soon have wireless interfaces (WiFi/DSRC, cellular, WiMax) Sensor deployment just starting, but some estimates ~5-10B units by 2015 Military/emergency response wireless robots, unmanned vehicles, unmanned aircraft 5

Networked wireless devices 6

Pervasive computing vision Computing, communication, and sensing anytime, anywhere Wireless embedded systems cooperate to achieve global tasks 7

Outdoor distributed applications 8

Example: intrusion detection Left Hill Right Hill Mobile robot with camera Motion Sensor Intrusion detection across hills using motion sensors and autonomous robots with cameras Number and location of systems are unknown Configuration is not stable over time  Intrusions can appear randomly  Robots can move 9

Example: museum guide I would like to see the Mona Lisa, avoiding the queues… I’ve gotten lost! How can I rejoin my friends? 10

Example: mobile streaming I want Alice to be able to listen in on this great conversation 11

Not Very Close to This Vision Yet  Nomadic computing – Devices: laptops – Internet: intermittent connectivity – Work: typical desktop applications  Mobile communication – Devices: PDAs, mobile phones, Blackberries – Internet: continuous connectivity – Work: read , potentially web  Experimental sensor networks – Devices: Berkeley/Crossbow motes – Internet: Possible through base station – Work: Monitor environment, wildlife 12

Why? Hard to program distributed applications over collections of wireless systems  Systems: distributed across physical space, mobile, heterogeneous hardware and software, resource-constrained (battery, bandwidth, memory)  Networks: large scale volatile (ad hoc topologies, dynamic resources), less secure than wired networks 13

Traditional distributed computing does not work well outdoors End-to-end data transfers may rarely complete Fixed address naming and routing (e.g., IP) are too rigid Difficult to deploy new applications in existing networks Outdoor distributed computing requires novel programming models and system architectures! 14

Spatial computers Robot Swarms Biological Computing Modular Robotics Sensor Networks Reconfigurable Computing Cells during Morphogenesis 15

More formally... A spatial computer is a collection of computational devices distributed through a physical space in which:  the difficulty of moving information between any two devices is strongly dependent on the distance between them, and  the “functional goals” of the system are generally defined in terms of the system's spatial structure 16

More formally... A spatial computer is a collection of computational devices distributed through a physical space in which:  the difficulty of moving information between any two devices is strongly dependent on the distance between them, and  the “functional goals” of the system are generally defined in terms of the system's spatial structure Notice the ambiguities in the definition 17

(w. Dan Yamins) Graphs Crystalline (e.g. CAs) Amorphous/ Continuous Promising Solution: Spatial Computing Approaches 18

(w. Dan Yamins) Graphs Crystalline (e.g. CAs) Amorphous/ Continuous density space complexity jitter grain size Promising Solution: Spatial Computing Approaches 19

(w. Dan Yamins) Graphs Crystalline (e.g. CAs) Amorphous/ Continuous density space complexity jitter grain size spatial computing Promising Solution: Spatial Computing Approaches 20

Desiderata for spatial computing approaches Take advantage of spatial nature of problems Simple, easy to understand code Scalable to potentially vast numbers of devices Robust to errors, adapt to changing environment 21

Syllabus Pervasive Computing, Spatial Computing  Example Scenarios Overview of Spatial Approaches Three spatial programming models:  Spatial Programming / Smart Messages  TOTA / Field-based Coordination  Proto / Amorphous Medium abstraction 22

A taxonomy of approaches Spatial DynamicGeometry UniformViral Non-Spatial Non-Composable 23

A taxonomy of approaches Spatial DynamicGeometry UniformViral Non-Spatial Non-Composable 24

Approaches from local dynamics Primitives describe only actions between devices and the neighbors they communicate with. Advantages: coherent and correct semantics Disadvantages: programmer must figure out how to marshal local dynamics to produce coherent large-area programs 25

Proto: computing with fields Pointwise Restriction FeedbackNeighborhood + restrict delay 48 any-hood nbr 26

TOTA: viral tuples Middleware to create distributed data structures like gradients and fields. Data structures made of tuples injected from a node and virally spread across the network. T = (C,P,M) API to inject/read tuples API to define (C,P,M) Gradient C = value; P = propagate breadth-first increasing value by 1 at every hop; M = maintain gradient despite network reconfiguration; Gradient C = value; P = propagate breadth-first increasing value by 1 at every hop; M = maintain gradient despite network reconfiguration; 27

Other viral approaches Smart Messages (Borcea)  Execution migration to nodes of interest  Nodes of interest discovered using self-routing Paintable Computing (Butera)  Consistent transfer, view of neighbor data  Code for install, uninstall, transfer control and update RGLL (Sutherland)  Code for arrival, tick, collision, departure  Communication via collision 28

Approaches from geometry Primitives describe large-scale geometric regions (e.g. “all devices on the left hill”) Advantages: coherent, easy to specify large- scale programs Disadvantages: generally easy to accidentally specify programs that cannot be executed correctly 29

Regiment Provide a rich set of operators to work with data distributed over time and space. Simple Regions, created from geometric or radio relationships: K-hop-neighborhood K-nearest nodes All nodes within circle (square, etc.) Derived Regions, built from other regions Union, Intersection Map, Filter 30

Spatial programming Left Hill Right Hill Virtual name space over outdoor networks of embedded systems –Systems named by spatial references using their locations and properties –Applications are sequential programs that read/write spatial references (similar to regular variables) –Read/write trigger transparent program migrations on each referenced system {]} {Right_Hill:robot[0]} {Right_Hill:robot[1]} {]} {Right_Hill:motion[0]} 31

Other geometric approaches EgoSpaces SpatialViews Spidey Abstract Regions 32

Non-composable approaches Algorithms and techniques, generally based on geometry, but not part of a system of composable parts Advantages: powerful spatial ideas for that are good for inclusion in code libraries Disadvantages: developed as stand-alone ideas, and may have limited composability 33

Field-based coordination Contextual information is expressed by means of distributed data-structures (i.e. fields) spread by agents. Agent move and act being driven by these fields (feedback cycle) 34

Self-healing gradients 35

Other non-composable approaches Yamins' locally checkable patterns  Family of self-stabilizing CA patterns hood (Whitehouse, et. al.)  nesC library for interacting with neighbors McLurkin's “Stupid Robot Tricks”  Swarm behaviors intended mainly for time-wise multiplexing. Countless one-shot systems... 36

Significant non-spatial approaches “roll-your-own” (e.g. C/C++) TinyDB  Distributed database queries for sensor networks Kairos  Distributed graph algorithms WaveScript  Distributed streaming language  Follow-on to Regiment w/o the spatial primitives 37

Syllabus Pervasive Computing, Spatial Computing  Example Scenarios Overview of Spatial Approaches Three spatial programming models:  Spatial Programming / Smart Messages  TOTA / Field-based Coordination  Proto / Amorphous Medium abstraction 38

39 Outdoor programming example Left Hill Right Hill Mobile robot with camera Motion Sensor Intrusion detection across the hills using motion sensors and autonomous mobile robots with cameras Number and location of systems are unknown Configuration is not stable over time –Intrusions can appear randomly –Robots can move

40 Traditional (indoor) programming Programs access data through variables Variables mapped to physical memory locations Page Table and OS guarantee reference consistency Access time has an (acceptable) upper bound Program Virtual Address Space Page Table + OS Physical Memory Variable access

41 Applications access distributed data through shared variables Runtime system translates variable accesses into message passing (when necessary) Software distributed shared memory Distributed Application Shared virtual address space Page Table + Message Passing Distributed Physical Memory Variable accesses

42 From indoor to outdoor computing Virtual Address Space Space Region Variables Spatial References Variables mapped to physical memory Spatial references mapped to systems embedded in the physical space Reference consistency Bounded access time ? ?

43 Spatial Programming (SP) at a glance Provides a virtual name space over outdoor networks of embedded systems Embedded systems named by their locations and properties Runtime system takes care of name resolution, reference consistency, and networking aspects Implementation on top of Smart Messages: SP applications execute, sequentially, on each system referenced in their code

44 radius Hill = new Space({lat, long}, radius); {lat,long} Space regions Virtual representation of a physical space Similar to a virtual address space in a conventional computer system Defined statically or dynamically

45 Spatial references Defined as {space:property} pairs Virtual names for embedded systems Similar to variables in conventional programming Indexes used to distinguish among similar systems in the same space region {Hill:robot[0]} {Hill:robot[1]} {Hill:motion[0]} Hill r2 r7 m5

46 Relative space regions Left Hill Right Hill {rangeOf({Left_Hill:robot[0]}, radius):robot[0]} {Left_Hill:robot[0]}

47 From indoor to outdoor computing Virtual Address Space Space Region Variables Spatial References Variables mapped to physical memory Spatial references mapped to systems embedded in the physical space Reference consistency Bounded access time ? ?

48 Reference consistency At first access, a spatial reference is mapped to an embedded system located in the specified space Mappings maintained in per-application Mapping Table (MT) – similar to a page table Subsequent accesses to the same spatial reference will reach the same system (using MT) as long as it is located in the same space region {space, property, index} {unique_address, location}

49 Reference consistency example (1) Left Hill Right Hill {Left_Hill:robot[0]}.move = ON; r2 r7 r5

50 Reference consistency example (2) Left Hill Right Hill r2 r7 {Left_Hill:robot[0]}.move = OFF;

51 Space casting (1) {Left_Hill:robot[0]} Left Hill Right Hill r7

52 Space casting (2) Left Hill Right Hill {Right_Hill:(Left_Hill:robot[0])}r7

53 From indoor to outdoor computing Virtual Address Space Space Region Variables Spatial References Variables mapped to physical memory Spatial references mapped to systems embedded in the physical space Reference consistency Bounded access time Mapping Table ?

54 Bounding the access time How to bound the time to access a spatial reference? –Systems may move, go out of space, or disappear Solution: associate an explicit timeout with each spatial reference access try{ {Hill:robot[0], timeout}.move = ON; }catch(TimeoutException e){ // the programmer decides the next action }

55 for(i=0; i<1000; i++) try{ if ({Left_Hill:motion[i], timeout}.detect > Max_motion) Max_motion = {Left_Hill:motion[i], timeout}.detect; Max_id = i; }catch(TimeoutException e) break; intrusionSpace = rangeOf({Left_Hill:motion[Max_id].location}, Range); {intrusionSpace:robot[0]}.camera = ON; {intrusionSpace:robot[0]}.focus = {Left_Hill:motion[Max_id].location}; Spatial programming example - Find the sensor that detected the “strongest” motion on Left Hill - Turn on a camera in the proximity of this sensor Left Hill Right Hill

56 Spatial Programming implemented on top of Smart Messages Next –Overview of Smart Messages –Few implementation details

57 “Dumb” messages vs. “smart” messages Data migration Lunch: Lunch:AppetizerEntreeDessert Execution migration

58 Smart Messages at a glance User-defined distributed applications Composed of code bricks, data bricks, and execution control state Execute on nodes of interest named by properties Migrate between nodes of interest Self-route at every node in the path during migrations

59 Cooperative node architecture Network SMPlatform AdmissionManagerAdmissionManager Network SMSM Operating System & I/O CodeCacheCodeCache VirtualMachineVirtualMachine TagSpaceTagSpace SM Ready Queue AuthorizationAuthorization

60 SM execution at a node Takes place over a virtual machine Non-preemptive, but time bounded Ends with a migration, or terminates During execution, SMs can –Spawn new SMs –Create smaller SMs out of their code and data bricks –Access the tag space –Block on a tag to be updated (update-based synchronization)

61 Tag space Collection of application tags and I/O tags –Essentially, tags are (name, value) pairs Application tags: persistent memory across SM executions I/O tags: access to operating system and I/O subsystem Tags used for –Content-based naming migrate(tag) –Inter-SM communication write(tag, data), read(tag) –Synchronization block(tag, timeout) –I/O access read(temperature)

62 Protection domains for tag space Owner: SM that creates the tag Family: all SMs having a common ancestor with the SM that owns the tag Origin: all SMs created on the same node as the family originator of the tag owner Code: all SMs carrying a specific code brick Others: all the other SMs Family Code Origin Others Owner

63 Access control example (code-based protection domain) Node5 Node3 Node4 SM2 C2 Cr Node1 Node2 Code Bricks Tag Owner = SM1 [Hash(Cr), RW] SM1 C1 Cr SM1 SM3 C3 C4 Access permission granted for SM2 Access permission denied for SM3 Cr = Same routing used by SM1 and SM2

64 SM admission Ensures progress for all SMs in the network Prevents SMs from migrating to nodes that cannot provide enough resources SMs specify lower bounds for resource requirements (e.g., memory, bandwidth) SMs accepted if the node can satisfy these requirements More resources can be granted according to admission policy –If not granted, SMs are allowed to migrate

65 Application example n=0 while (n<NumTaxis) migrate(Taxi); if (readTag(Available)) writeTag(Available, false); writeTag(Location, myLocation); n++; n=0 Taxi n=0n=0n=1n=1n=2 need 2 taxis data brick application code brick routing code brick SM

66 migrate() – migrates application to next node of interest – names nodes by tags – implements routing algorithm sys_migrate() – one hop migration – used by migrate to implement routing SM migration migrate(Taxi) sys_migrate(2) sys_migrate(3) sys_migrate(4) Taxi 1 234

67 Network Routing example 12i RouteToTaxi = 2 Taxi RouteToTaxi = ? migrate(Taxi){ while(readTag(Taxi) == null) if (readTag(RouteToTaxi)) sys_migrate(readTag(RouteToTaxi)); else create_SM(DiscoverySM, Taxi); createTag(RouteToTaxi, lifetime, null); block_SM(RouteToTaxi, timeout); }

68 Network Routing example 12i RouteToTaxi = 2 Taxi RouteToTaxi = ?RouteToTaxi = j migrate(Taxi){ while(readTag(Taxi) == null) if (readTag(RouteToTaxi)) sys_migrate(readTag(RouteToTaxi)); else create_SM(DiscoverySM, Taxi); createTag(RouteToTaxi, lifetime, null); block_SM(RouteToTaxi, timeout); }

69 Network Routing example 12i RouteToTaxi = 2 Taxi RouteToTaxi = ?RouteToTaxi = j migrate(Taxi){ while(readTag(Taxi) == null) if (readTag(RouteToTaxi)) sys_migrate(readTag(RouteToTaxi)); else create_SM(DiscoverySM, Taxi); createTag(RouteToTaxi, lifetime, null); block_SM(RouteToTaxi, timeout); }

70 SM self-routing SMs carry the routing and execute it at each node Routing information stored in tag space SMs control their routing –Select routing algorithm (migrate primitive) Multiple library implementations Implement a new one –Change routing algorithm during execution in response to Adverse network conditions Application’s requirements

71 Spatial programming using Smart Messages SP application translates into an SM –Spatial reference access translates into an SM migration to the mapped node –Embedded system properties: Tags SM self-routes using geographical routing and content-based routing Reference consistency −Unique addresses (stored in mapping table) are unique tags created at nodes −SM carries the mapping table

72 Max_motion = {Left_Hill:motion[1], timeout}.detect; SP to SM translation: example Spatial Reference Access Smart Message ret = migrate_geo(location, timeout); if (ret == LocationUnreachable) ret = migrate_tag(yU78GH5, timeout); if ((ret == OK) && (location == Left_Hill)) return readTag(detect); else throw TimeoutException {Left_Hill,motion,1}{yU78GH5,location} Mapping Table Code Brick Left Hill Right Hill

73 Prototype implementation SM implemented over modified version of Sun’s Java K Virtual Machine –Small memory footprint (160KB) SM and tag space primitives implemented inside virtual machine as native methods (efficiency) I/O tags: GPS location, neighbor discovery, image capture, light sensor, system status Ad hoc networks of HP iPAQ PDAs running Linux

74 Lightweight migration Traditional process migration difficult –Strong coupling between execution entity and host –Needs to take care of operating system state (e.g., open sockets, file descriptors) Tag space decouples the SM execution state from the operating system state SM migration transfers only –Data bricks explicitly specified by programmer –Minimal execution control state required to resume the SM at the next instruction (e.g., instruction pointer, operand stack pointer)

75 Summary Spatial Programming makes outdoor distributed computing simple –Volatility, mobility, configuration dynamics, ad hoc networking are hidden from programmer Implementation on top of Smart Messages –Easy to deploy new applications in the network –Quick adaptation to highly dynamic network configurations Acknowledgments: Liviu Iftode, Porlin Kang

Syllabus Pervasive Computing, Spatial Computing  Example Scenarios Overview of Spatial Approaches Three spatial programming models:  Spatial Programming / Smart Messages  TOTA / Field-based Coordination  Proto / Amorphous Medium abstraction 76

Museum case study application I would like to see the Monna Lisa, avoiding the queues… I’ve got lost! How can I rejoin my friends? 77

The meeting task A Group a tourist want to meet somewhere within the building. The “classic” solution – general context information –Involve rather complex algorithms to decide what to do –If something changes (e.g. a corridor is closed) the solution has to be recomputed Our proposal –Express context by means of a “red carpet” leading to the meeting room. –How to represent the “red carpet”? 78

The Co-Fields model Contextual information is expressed by means of distributed data- structures spread in the environment (i.e. fields). Agent move and act being driven by these fields Agents’ combine perceived fields in a, so called, coordination field that encodes their actual application task. Then, they act being driven by the resulting values and gradient. The coordination policy is encoded into fields’ waveform, in the way in which agents combine perceived fields and in the way in which they react to the fields. Agent actions change fields Fields drive agent actions Feedback cycle 79

Meeting in Co-Fields Field generated by each single tourist Coordination Field obtained by taking the field with the greatest magnitude – farther agent 80

Benefits Designing the application becomes trivial. Just compute the coordination field and move following the gradient downhill. The solution is adaptive. If a tourist gets trapped somewhere, then the meeting room automatically get closer to the unlucky tourist. Supposing that fields distributed data structures are maintained coherent despite environment dynamism, then the application is robust to closed corridors, etc. 81

Other applications Avoid queues 82

The TOTA middleware Distributed tuples injected and spread in the network implementing the concept of fields. T=(C,P,M) EVENT INTERFACE Application TOTA ENGINE TOTA API Operating System Network STORED TUPLES 83

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T= 84

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T= 2 85

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T=

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T=

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T=

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T=

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T=

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T=

The TOTA scenario C = (value = “2”, color = “green”) P = (propagate to all nodes, decrease “value” for the first 2 hops then increase it, change color at every hop) T=

TOTA main algorithm Propagation is easy –Breadth-first, avoiding backward propagation Maintenance is difficult –We do not want to periodically re-propagate –We wish maintenance is localized near the point where the network changes 93

Self-Maintenance EXAMPLE Given a Hop tuple X, we will call another tuple Y a supporting tuple of X if: 1.Y belongs to the same distributed tuple as X 2.Y is one-hop distant from X 3.the value of Y is equal to the value of X minus one X is in a safe-state if it has at least a supporting tuple 2 is in a safe-state, since it is supported by 1

Self-Maintenance EXAMPLE NOT SAFE!

Self-Maintenance EXAMPLE NOT SAFE!

Self-Maintenance EXAMPLE 1 1

Self-Maintenance EXAMPLE

NOT SAFE!

Self-Maintenance EXAMPLE NOT SAFE!

Self-Maintenance EXAMPLE THERE’S A HOLE!

Self-Maintenance EXAMPLE PROPAGATE!

Coding the meeting example 1/4 public class MeetAgent extends AbstractAgent { private static final int speed = 30; private PeerInterface_ApplicationSide peer; private TotaMiddleware tota; public MeetAgent(PeerInterface_ApplicationSide peer) { this.peer = peer; tota = new TotaMiddleware(peer); } 104

Coding the meeting example 2/4 public void step(int time) { tota.step(time); // inject the meeting tuple if(time == 0) { TotaTuple t = new GradientTuple(); t.setContent(" "); // this notation is mandatory tota.inject(t); } if(time > 0) { int[] dir = getDirection(); if(dir != null) move(dir[0],dir[1]); } 105

Coding the meeting example 3/4 private int[] getDirection() { // read the local tuple space GradientTuple mt = new GradientTuple(); mt.setContent(" "); // read the local tuple space Vector local = tota.read(mt); // look in the local tuple space, the meet tuple with the highest hop counter int maxi = 0; GradientTuple maxt = (GradientTuple)local.get(0); for(int i=1; i<local.size(); i++) { GradientTuple t = (GradientTuple)local.get(i); if(maxt.hop < t.hop) maxt = t; } 106

Coding the meeting example 4/4 // look in the neighbor tuple spaces for neighbor // having a lower value of the max tuple GradientTuple tofollow = null; Vector remote = tota.readOneHop(mt); for(int i=0; i<remote.size(); i++) { GradientTuple t = (GradientTuple)remote.get(i); if(t.id.equals(maxt.id) && t.hop < maxt.hop) { if(tofollow==null || (tofollow.hop > t.hop)) tofollow = t; } return getDirection(tofollow.from); … } 107

108

Summary Field-based data structures are useful to represent context: –in a wide range of scenarios –so that it is easily usable by services TOTA tuples are robust to dynamic spatial computer and can be easily programmed Download and play with TOTA – 109

Syllabus Pervasive Computing, Spatial Computing  Example Scenarios Overview of Spatial Approaches Three spatial programming models:  Spatial Programming / Smart Messages  TOTA / Field-based Coordination  Proto / Amorphous Medium abstraction 110

111 Example: mobile streaming

112 Geometric program: channel Desti- nation Source (cf. Butera)

113 Geometric program: channel Desti- nation Source (cf. Butera)

114 Geometric program: channel Desti- nation Source (cf. Butera)

115 Geometric program: channel Desti- nation Source (cf. Butera)

116 Geometric program: channel Desti- nation Source (cf. Butera)

117 Geometric program: channel Desti- nation Source (cf. Butera)

118 Geometric program: channel Desti- nation Source (cf. Butera)

119 Why use continuous space? Simplicity Scaling & Portability Robustness (we'll come back to this in a bit...)

120 Amorphous medium Continuous space & time Infinite number of devices See neighbors' past state Approximate with: Discrete network of devices Signals transmit state neighborhood device

121 Computing with fields sourcedestination gradientdistancegradient <=<= + dilate width

122 Computing with fields sourcedestination gradientdistancegradient <=<= + dilate width 37 10

123 Diving into the details Let's build this up using the Proto simulator, one piece at a time... (break to work w. simulator)

124 Proto (def gradient (src)...) (def distance (src dst)...) (def dilate (src n) (<= (gradient src) n)) (def channel (src dst width) (let* ((d (distance src dst)) (trail (<= (+ (gradient src) (gradient dst)) d))) (dilate trail width))) neighborhood device Device Kernel evaluation global to local compilation discrete approximation platform specificity & optimization Global Local Discrete

125 Proto's families of primitives Pointwise Restriction FeedbackNeighborhood + restrict delay 48 any-hood nbr

126 Modulation by restriction sourcedestinationcoord channel 10 gradcast 10 (5, 7)

127 In simulation...

128 Why use continuous space? Simplicity Scaling & Portability Robustness 150 devices 2000 devices

129 Example: intrusion detection Left Hill Right Hill Mobile robot with camera Motion Sensor Use channel to stream intruder information

130 Example: museum traffic control

131 Weaknesses Functional programming scares people Programmers can break the abstraction No dynamic allocation of processes No formal proofs available for quality of approximation in a composed program (active research on last two)

132 Summary Amorphous Medium abstraction simplifies programming of space-filling networks Proto has four families of space and time operations, compiles global descriptions into local actions that approximate the global Geometric metaphors allow complex spatial computing problems to be solved with very short programs.

Conclusions New and exciting research area! Many pervasive computing scenarios reflect spatial computers concepts Many research approaches exist to programming pervasive application for spatial computing Still there is a lot of open issues to be addressed: – More software engineering – More real-world applications – Better definition and management of “emergent” behaviors and properties 133

Some References C. Borcea and D. Iyer and P. Kang and A. Saxena and L. Iftode, Spatial programming using smart messages: Design and implementation, IEEE International Conference on Distributed Computing Systems. Tokio, Japan, O. Riva, T. Nadeem, C. Borcea, L. Iftode, Context-aware Migratory Services in Ad Hoc Networks, IEEE Transactions on Mobile Computing 6(12):34-33, M. Mamei, F. Zambonelli, Programming Pervasive and Mobile Computing Applications: the TOTA Approach, ACM Transaction on Software Engineering and Methodology, 2008, to appear M. Mamei, F. Zambonelli, L. Leonardi, Co-Fields: A Physically Inspired Approach to Distributed Motion Coordination, IEEE Pervasive Computing, 3(2):52-61, J. Bachrach, J. Beal, T. Fujiwara, Continuous Space-Time Semantics Allow Adaptive Program Execution. IEEE SASO 2007, Cambridge (MA), USA, J. Beal, J. Bachrach, D. Vickery, M. Tobenkin, Fast Self-Healing Gradients, ACM Symposium on Applied Computing, Fortaleza, Brazil,

Thanks for your attention! 135