/
miniplumber.slide
101 lines (66 loc) · 2.61 KB
/
miniplumber.slide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Introducing miniplumber
David Fritz
7 Feb 2017
Sandia number SAND2017-1449
* Introduction
miniplumber provides uni- and multi-cast experiment communication to VMs, minimega instances, and external programs anywhere in an experiment.
.image miniplumber_content/miniplumber.png
* Motivation
How do we plumb non-network based connectivity?
- Emulytics helps study many network-centric problems
- minimega builds networks easily
- Great support for describing machine-to-machine structure/behavior
- *Not*great* support for describing machine-to-anything-else structure/behavior
* Plumbing the kitchen sink
- Buttons
- Serial connections
- Vehicle radars
- *physics* - sound, heat, light, rabid bunnies
- cyber-physical interactions of all kinds
- measurement data-planes
.image miniplumber_content/bunny.jpg _ 300
* Plumbing
Enter _miniplumber_
- A networkless, out-of-band, inter-process communication layer
- Quick specification of communication pathways (pipelines)
- uni- or multi-cast experiment communication
- Supports any number of clients (scales along with the rest of minimega)
- Similar to unix pipelines (though not limited to linear pipelines)
- Borrows concepts from the plan 9 plumber
- Newline delimited messages (as opposed to unix byte streams)
- Works on host, in minimega, and any miniccc client (ARM, x86-64 / *bsd, linux, windows)
* A quick example
.mega miniplumber_content/example1.mm
* Plumbing objects
- Simple standard I/O based communication
- Easily plumbed to existing unix tools
- Several minimega-supplied tools (minevent, distribution functions, etc.)
- Pipelines are plumbed locally, pipe data is forwarded everywhere
.mega miniplumber_content/external.mm
* Plumbing with CC
.mega miniplumber_content/cc.mm
* minimega distribution
Fully distributed via meshage
.image miniplumber_content/meshage_distribution.png
* Out-of-band communication
- Works over meshage for node-to-node communication
- Uses miniccc/ron for node-to-VM communication
- Fully out-of-band when using miniccc networkless backchannels
* Message scheduling
- Support for most communication use cases
- one-to-many
- one-to-one (round robin, random)
.mega miniplumber_content/scheduling.mm
* vias
- Produce unique output for _every_ reader on a pipe
- Call an external program N times
- Remote readers also get unique values
.mega miniplumber_content/via.mm
* Use cases
- cyber-physical experiments
- training
- data forwarding
* Summary
- _miniplumber_ - simple, out-of-band communication framework
- Growing library of communication primitives, support for any external program
- Bring cyber-physical / simulation layers to emulytics