Protelis: Practical Aggregate Programming - Symposium on Applied Computing (SAC), 2015
-
Upload
danilo-pianini -
Category
Technology
-
view
121 -
download
0
Transcript of Protelis: Practical Aggregate Programming - Symposium on Applied Computing (SAC), 2015
Protelis: Practical Aggregate Programming
Danilo Pianini, Mirko Viroli{danilo.pianini,mirko.viroli}@unibo.it
Jacob [email protected]
Universita di BolognaItaly
Raytheon BBN TechnologiesUnited States of America
Symposium on Applied Computing 2015Salamanca
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 1 / 37
Outline You’ll soon have your God, and you’ll make it with your hands.
1 Aggregate ProgrammingLocal to GlobalFrom Proto to Field Calculus
2 ProtelisLanguage featuresSimulator and RuntimeExamples
3 Conclusion and Future work
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 2 / 37
Aggregate Programming
Outline
1 Aggregate ProgrammingLocal to GlobalFrom Proto to Field Calculus
2 ProtelisLanguage featuresSimulator and RuntimeExamples
3 Conclusion and Future work
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 3 / 37
Aggregate Programming Local to Global
Our stage
Large number of devices or services
Possibly situated
Capable of sensing, computing, communicating
Behaviour must be coordinated to achieve a global goal
Pervasive Continuum or (pick the one you prefer):
Pervasive computingSmart citiesInternet of things
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 4 / 37
Aggregate Programming Local to Global
Classic approach
Local to global
Complex global behaviour
Simple local behaviour
The whole is more than the sum of the parts
Interaction is key
Nature inspiration
Several systems use nature as inspiration:
physical particles [MZ09]
chemical reactions [ZCF+11]
ants, termites and other social insects [TM03]
Very brief list! There are many more.
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 5 / 37
Aggregate Programming Local to Global
Nice properties and hard challenges
The beauty
High resilience and fault tolerance
Self adaptation
Openness
Self healing
The beast
Local to global is hard to engineer
The desired functionality happens at the aggregate level
It is very difficult to design the local behaviour in such a way that theinteraction of many of them produces the desired global behaviour
Many attempts, but no good engineering processes to safely designsuch systems
Often, development becomes a try-and-simulate loopPianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 6 / 37
Aggregate Programming Local to Global
Collective to local
Device&
Neighborhood&
Manifold&
Device&
Neighborhood&
Network&
Possible solution
Create a language that allows to express collective properties
Create a runtime that can run such programs
Possibly, also create a tool to test programs prior to deployment
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 7 / 37
Aggregate Programming From Proto to Field Calculus
Existing languages
MIT Proto [BB06] is the most known and successful
Developed at MIT and maintained at BBN Technologies
Functional language, LISP-like syntax (I know you hate it too)
All devices run the same program
Computation happens in rounds:
Every device sleeps for some timeProcesses the messages received from the neighboursExecutes its programSends all the neighbours its result
Complex operational semantics
Difficult to maintain and extend
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 8 / 37
Aggregate Programming From Proto to Field Calculus
Field Calculus
A “distillate” of Proto
Provides a lightweight operational semantics [VDB13]
((((LISP-like syntax))))
Still a functional language
Simple enough to formally prove properties, powerful enough to beuniversal (proved!)
Theoretical object, no runtime nor simulation tool provided
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 9 / 37
Protelis
Outline
1 Aggregate ProgrammingLocal to GlobalFrom Proto to Field Calculus
2 ProtelisLanguage featuresSimulator and RuntimeExamples
3 Conclusion and Future work
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 10 / 37
Protelis Language features
Ordinary language features
Functional language
Same operational semantics of the field calculus
C-family syntax with infix operators
Java interoperability: static methods imports and calls, methodinvocation with dynamic binding
Higher order functions (functions as arguments, lambdas)
Dynamic code
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 11 / 37
Protelis Language features
Field calculus operators
rep
defines a locally visible variable
Retains its value at each computation round
Enables stateful computation
nbr
Builds a field
Map device →valueIncludes self
*hood built-in functions summarize the field back to ordinaryexpressions
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 12 / 37
Protelis Language features
Branching
mux / else
Functional inclusive “multiplexing” branching
Evaluates both branches, then returns the correct one
nbrs in branches can “align”
if / else
Exclusive branching: nbrs in different branches do not “align”
Network gets partitioned into two regions
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 13 / 37
Protelis Language features
Code example
def count() {rep(x<-0) { x + 1 }
}
def maxh(field) { maxHood(nbr{field}) }
def distanceTo(source) {rep (d <- Infinity) {
mux (source) { 0 } else { minHood(nbr{d} + nbrRange) }}
}
def distanceToWithObstacle(source, obstacle) {if (obstacle) { Infinity } else { distanceTo(source) }
}
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 14 / 37
Protelis Simulator and Runtime
Architecture
Implementation, distribution
Based on Xtext
Eclipse plugin
Integrated with Alchemist [PMV13]
Stand-alone framework for real devices
Write once, run everywhere — evolved :)
Now distributed through Maven Central a
aartifact: it.unibo.alchemist:alchemist.protelis
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 15 / 37
Protelis Simulator and Runtime
Abstract architecture
Protelis)Parser)
Protelis)Device)
Environment)Variables)
Protelis)Interpreter)
Protelis)Program)
Other&Devices&
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 16 / 37
Protelis Simulator and Runtime
Simulation runtime architecture
Simulated*Device*
Protelis*Parser*
Protelis*Device*
Environment*Variables*
Protelis*Interpreter*
Protelis)Program)
Simulated*Environment*
Simula8on*Builder*
Simula/on)Script)
Alchemist*Simulator*
Simulated*Network*
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 17 / 37
Protelis Simulator and Runtime
Standalone runtime architecture
Daemon'Device'
Protelis'Parser'
Protelis'Device'
Environment'Variables'
Protelis'Interpreter'
Protelis)Program)
Service'Manager'Daemon'
Networked'Service'
Start/Stop'Signals'
Status,'Sockets'
Other&Services&
Other&Managers&
Enterprise&Server&
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 18 / 37
Protelis Examples
Rendezvous at a Mass Event
Problem
Large public event
People want to rendezvous with a companion
Cloud-based services may be unreachable
Possible solution with Protelis
Simple P2P geometric calculation across network
Testbed
Simulated in Alchemist
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 19 / 37
Protelis Examples
Rendezvous at a Mass Event
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 20 / 37
Protelis Examples
Rendezvous at a Mass Event
// Follow the gradient of a potential field down from a sourcedef descend(source, potential) {
rep(path <- source) {let nextStep = minHood(nbr([potential, self.getId()]));
if (nextStep.size() > 1) {let candidates = nbr([nextStep.get(1), path]);
source || anyHood([self.getId(), true] == candidates)
} else {source
}}
}def rendezvous(person1, person2) {
descend (person1 == owner, distanceTo(person2 == owner))
}// Example of using rendezvousrendezvous("Alice", "Bob");
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 21 / 37
Protelis Examples
Rendezvous at a Mass Event
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 22 / 37
Protelis Examples
Rendezvous at a Mass Event
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 23 / 37
Protelis Examples
Rendezvous at a Mass Event
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 24 / 37
Protelis Examples
Rendezvous at a Mass Event
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 25 / 37
Protelis Examples
Rendezvous at a Mass Event
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 26 / 37
Protelis Examples
Rendezvous at a Mass Event
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 27 / 37
Protelis Examples
Network Service Management
Problem
Legacy or poorly coded services do not respond gracefully to thefailure of their dependencies
Risk of inconsistent state and of being unable to resume correctlywhen the failed dependency is back online
Possible solution with Protelis
Attach a Protelis daemon to each service, which watches its statusand communicates with other daemons to coordinate shutdown andrestart
Testbed
Implemented on a network of EmuLab servers
Services are emulated by query-response networking Java programs
they “hang” when triggered or when their queries consistently fail
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 28 / 37
Protelis Examples
Network Service Management
External)Portals)
Supplies)Database)
Financial)Database)
Logis7cs)Server)
Backup)Server)
B2B)Catalog)Server)
Interac(on*Dependency*
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 29 / 37
Protelis Examples
Network Service Management
import it.unibo.alchemist.language.protelis.datatype.Tuple.*
import com.bbn.a3.distributedrestart.DaemonNode.*
// Compare required and available serviceslet nbr_set = unionHood(nbr([serviceID]));
let nbr_missing = dependencies.subtract(nbr_set);
let nbr_required = #contains(dependencies, nbr(serviceID));
let nbr_down = nbr(managedServiceStatus=="hung" || managedServiceStatus=="stop");
// Is service currently safe to run?let problem = anyHood(nbr_down && nbr_required) || !nbr_missing.isEmpty();
// Take managed service up and down accordinglyif (managedServiceStatus == "run" && problem) {
#stopProcess(managedService);
} else {if (managedServiceStatus=="stop" && !problem) {
#startProcess(managedService);
} else {managedServiceStatus
}}
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 30 / 37
Protelis Examples
Network Service Management
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 31 / 37
Conclusion and Future work
Outline
1 Aggregate ProgrammingLocal to GlobalFrom Proto to Field Calculus
2 ProtelisLanguage featuresSimulator and RuntimeExamples
3 Conclusion and Future work
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 32 / 37
Conclusion and Future work
Conclusion and Future Work
Conclusion
Universality and coherence by building atop the field calculus
Accessibility, portability and ease of integration by Javainteroperability
Important component of the toolchain necessary for using aggregateprogramming in practice
Future work
Development is very active
Next step: use Protelis to build a library of reusable, high-levelbuilding blocks for distributed applications.
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 33 / 37
References
References I
Jacob Beal and Jonathan Bachrach.Infrastructure for engineered emergence on sensor/actuator networks.IEEE Intelligent Systems, 21(2):10–19, 2006.
Marco Mamei and Franco Zambonelli.Programming pervasive and mobile computing applications: The tota approach.ACM Trans. Softw. Eng. Methodol., 18(4):1–56, 2009.
Danilo Pianini, Sara Montagna, and Mirko Viroli.Chemical-oriented simulation of computational systems with Alchemist.Journal of Simulation, 2013.
Robert Tolksdorf and Ronaldo Menezes.Using swarm intelligence in linda systems.In Andrea Omicini, Paolo Petta, and Jeremy Pitt, editors, ESAW, volume 3071 of LectureNotes in Computer Science, pages 49–65. Springer, 2003.
Mirko Viroli, Ferruccio Damiani, and Jacob Beal.A calculus of computational fields.In Carlos Canal and Massimo Villari, editors, Advances in Service-Oriented and CloudComputing, volume 393 of Communications in Computer and Information Science, pages114–128. Springer Berlin Heidelberg, 2013.
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 34 / 37
References
References II
Franco Zambonelli, Gabriella Castelli, Laura Ferrari, Marco Mamei, Alberto Rosi, GiovannaDi Marzo, Matteo Risoldi, Akla-Esso Tchao, Simon Dobson, Graeme Stevenson, Yuan Ye,Elena Nardini, Andrea Omicini, Sara Montagna, Mirko Viroli, Alois Ferscha, SaschaMaschek, and Bernhard Wally.Self-aware pervasive service ecosystems.Procedia Computer Science, 7:197–199, December 2011.Proceedings of the 2nd European Future Technologies Conference and Exhibition 2011(FET 11).
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 35 / 37
References
Protelis: Practical Aggregate Programming
Danilo Pianini, Mirko Viroli{danilo.pianini,mirko.viroli}@unibo.it
Jacob [email protected]
Universita di BolognaItaly
Raytheon BBN TechnologiesUnited States of America
Symposium on Applied Computing 2015Salamanca
Pianini, Viroli, Beal (UniBo / BBN) Protelis — Aggregate programming 2015-04-16 SAC/CM 36 / 37