Breaking the Kubernetes Kill Chain: Host Path Mount
Ambient-Oriented Dataflow Programming for Mobile RFID Applications
1. Ambient-Oriented Dataflow Programming for
Mobile RFID-Enabled Applications
Andoni Lombide Carreton
Promotor: Prof. Dr. Wolfgang De Meuter
Copromotor: Prof. Dr. Theo D’Hondt Vrije Universiteit Brussel
Brussels, Belgium
Private PhD Defense, October 11th 2011, Brussels 1
2. Roadmap
Part I: Mobile RFID-Enabled Applications
Part II: Ambient-Oriented Programming for Mobile RFID-
Enabled Applications
Part III: Node-Centric Ambient-Oriented Dataflow
Programming
Part IV: Network-Centric Ambient-Oriented Dataflow
Programming
Part V: Conclusion
2
13. Event-based Decoupling and Inversion of Control
(register-connection-callback
(lambda (tagged-object)
(register-reply-callback
(lambda (reply)
...))
(register-disconnection-callback
(lambda (tagged-object)
...))
...))
8
14. Event-based Decoupling and Inversion of Control
(register-connection-callback
(lambda (tagged-object)
(register-disconnection-callback
(lambda (tagged-object)
...))
(register-reply-callback
(lambda (reply)
...))
...))
8
15. Event-based Decoupling and Inversion of Control
Shared state
?
(register-reply-callback
(lambda (reply)
(set! Shared state ...) ...))
(register-connection-callback
(lambda (tagged-object)
(set! Shared state ...) ...))
(register-disconnection-callback
(lambda (tagged-object)
(set! Shared state ...) ...))
9
16. Event-based Decoupling and Inversion of Control
Shared state
?
(register-reply-callback
(lambda (reply)
(set! Shared state ...) ...))
(register-connection-callback
(lambda (tagged-object)
(set! Shared state ...) ...))
(register-disconnection-callback
(lambda (tagged-object)
(set! Shared state ...) ...))
9
17. Event-based Decoupling and Inversion of Control
Shared state
?
(register-reply-callback
(lambda (reply)
(set! Shared state ...) ...))
(register-connection-callback
(lambda (tagged-object)
(set! Shared state ...) ...))
(register-disconnection-callback
(lambda (tagged-object)
(set! Shared state ...) ...))
9
18. Event-based Decoupling and Inversion of Control
Shared state
? in space
Decoupling
(register-reply-callback
Decoupling in time
(lambda (reply)
(set! Shared state
Decoupling in arity ...) ...))
(register-connection-callback
Rich representation of events
(lambda (tagged-object)
(set! Shared state ...) ...))
No inversion of control
(register-disconnection-callback
(lambda (tagged-object)
Global(set! Shared state ...) ...))
control flow management
9
19. RFID-tagged Things as Objects
book.addReview(“Good book”);
println(book.getReviews());
10
20. RFID-tagged Things as Objects
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
10
21. RFID-tagged Things as Objects
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
10
22. RFID-tagged Things as Objects
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
10
23. RFID-tagged Things as Objects
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
10
24. RFID-tagged Things as Objects
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
10
25. RFID-tagged Things as Objects
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
10
26. Survey of Related Work
Publish/subscribe
systems
Reactive programming
Explicit dataflow
programming
Node-centric sensor-
network programming
Network-centric sensor-
network programming 11
27. Survey of Related Work
Publish/subscribe
systems
Publish/subscribe
Reactive programming +
dataflow programming
Explicit dataflow =
ambient-oriented dataflow
programming
Node-centric sensor-
network programming
Network-centric sensor-
network programming 11
38. Things: Proxies for Tags
deftype Book;
def aBook := thing: {
def isbn := 123;
def title := “My book”;
def reviews := Vector.new();
RFID event loop
def setTitle(newTitle)@Mutator {
title := newTitle;
};
Hardware Abstraction Layer
def addReview(review)@Mutator {
reviews.add(review);
};
} taggedAs: Book;
14
39. Things: Proxies for Tags
deftype Book;
def aBook := thing: {
def isbn := 123;
def title := “My book”;
def reviews := Vector.new();
RFID event loop
def setTitle(newTitle)@Mutator {
title := newTitle;
};
Hardware Abstraction Layer
def addReview(review)@Mutator {
reviews.add(review);
};
} taggedAs: Book;
14
40. Storing Objects on RFID Tags
tag
aBook
RFID event loop
def aBook := thing: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
}
15
41. Storing Objects on RFID Tags
tag
aBook
RFID event loop
def aBook := thing: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
}
15
42. Storing Objects on RFID Tags
tag
aBook
RFID event loop
def aBook := thing: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
}
15
43. Storing Objects on RFID Tags
tag
aBook
bookRe
ference
RFID event loop
def aBook := thing: { ... };
Hardware Abstraction Layer
when: BlankTag discovered: { |tag|
when: tag<-initialize(aBook)
becomes: { |bookReference|
// ...
}
}
15
44. Reactivity to Appearing and Disappearing Things
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
};
whenever: book reconnected: {
// React on reappearance
};
}; 16
45. Reactivity to Appearing and Disappearing Things
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
};
whenever: book reconnected: {
// React on reappearance
};
}; 16
46. Reactivity to Appearing and Disappearing Things
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
};
whenever: book reconnected: {
// React on reappearance
};
}; 16
47. Reactivity to Appearing and Disappearing Things
RFID event loop
whenever: Book discovered: { |book|
// React on appearance
whenever: book disconnected: { Hardware Abstraction Layer
// React on disappearance
};
whenever: book reconnected: {
// React on reappearance
};
}; 16
48. Asynchronous and Fault-tolerant Communication
with Things
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
17
49. Asynchronous and Fault-tolerant Communication
with Things
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
17
50. Asynchronous and Fault-tolerant Communication
with Things
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
17
51. Asynchronous and Fault-tolerant Communication
with Things
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
17
52. Asynchronous and Fault-tolerant Communication
with Things
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
17
53. Asynchronous and Fault-tolerant Communication
with Things
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
17
54. Asynchronous and Fault-tolerant Communication
with Things
RFID event loop
when: book<-getTitle() Hardware Abstraction Layer
becomes: { |title|
system.println(“TITLE: “ + title)
};
system.println(“Here first!”);
17
57. Summary
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
19
58. Summary
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
19
118. Dependency Semantics
Incoming 1 Incoming *
Signal one value to a Signal one value to all
Outgoing 1 single (rebound or fixed) reachable nodes of same
node role
Signal set of values to a Signal set of values to all
Outgoing * single (rebound or fixed) reachable nodes of same
node role
Binding semantics Arity semantics
34
120. Limitations and Avenues for Future Research
• Event-loop based architecture prevents RFID events to be processed in
parallel.
• Security was not considered. For RFID it requires revising the technology
stack down to the hardware level.
• No distributed glitch prevention. It requires consistent distributed message
ordering.
• AmbientTalk/RV needs more tooling (e.g. visual scalability, syntax for content-
based subscriptions...).
36
121. Summarizing the Contributions
1. Addressing physical objects
2. Storing application-specific data on RFID tags
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
37
122. Summarizing the Contributions
1. Addressing physical objects
Ambient-Oriented Programming
2. Storing application-specific data on RFID tags
with Passive RFID
3. Reactivity to appearing and disappearing objects
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
37
123. Summarizing the Contributions
1. Addressing physical objects
Ambient-Oriented Programming
Decoupling in space
2. Storing application-specific data on RFID tags
with Passive RFID
Decoupling in time
3. Reactivity to appearing and disappearing objects
Decoupling in arity
4. Asynchronous, fault-tolerant communication
5. Data consistency
6. Infrastructureless operation
37
124. Summarizing the Contributions
1. Addressing physical objects
Ambient-Oriented Programming
Decoupling in space
2. Storing application-specific data on RFID tags
with Passive RFID
Decoupling in time
3. Reactivity to appearing and disappearing objects
Decoupling in arity
4. Asynchronous, fault-tolerant communication
5. Data consistency
No inversion of control
6. Infrastructureless operation
37
125. Summarizing the Contributions
1. Addressing physical objects
Ambient-Oriented Programming
Decoupling in space
2. Storing application-specific data on RFID tags
with Passive RFID
Decoupling in time
Publish/subscribe
3. Reactivity to appearing and disappearing objects
+ Decoupling in arity
4. Asynchronous, fault-tolerant communication
dataflow programming
=
5. Data consistency
ambient-oriented inversion of control
No dataflow
6. Infrastructureless operation
37
126. Summarizing the Contributions
1. Addressing physical objects
Ambient-Oriented Programming
Decoupling in space
2. Storing application-specific data on RFID tags
Decoupling in time
with Passive RFID
3. Reactivity to appearing and disappearing objects
Decoupling in arity
4. Asynchronous, fault-tolerant communication
Rich representation of events
5. Data consistency
No inversion of control
6. Infrastructureless operation
37
127. Summarizing the Contributions
1. Addressing physical objects
Ambient-Oriented Programming
Decoupling in space
2. Storing application-specific data on RFID tags
Decoupling in time
with Passive RFID
3. Reactivity to appearing and disappearing objects
Decoupling in arity
4. Asynchronous, fault-tolerant communication
Rich representation of events
5. Data consistency
No inversion of control
6. Infrastructureless operation
Global control flow management
37
128. Summarizing the Contributions
1. Addressing physical objects
Ambient-Oriented Programming
Decoupling in space
2. Storing application-specific data on RFID tags
Decoupling in time
with Passive RFID
3. Reactivity to appearing and disappearing objects
Decoupling in arity
4. Asynchronous, fault-tolerant communication
Rich representation of events
5. Data consistency
No inversion of control
6. Infrastructureless operation
Global control flow management
37