-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
282 lines (251 loc) · 19.5 KB
/
index.html
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Participatory Networking</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Participatory Networking: an API for SDNs">
<meta name="author" content="Andrew D. Ferguson, et al.">
<link rel="shortcut icon" href="http://www.brown.edu/favicon.ico" />
<link href="pane.css" rel="stylesheet">
<!-- Le styles -->
<link href="bootstrap/css/bootstrap.css" rel="stylesheet">
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
</style>
<link href="bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="bootstrap/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="bootstrap/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="bootstrap/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="bootstrap/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="bootstrap/ico/apple-touch-icon-57-precomposed.png">
<script type="text/javascript">
function bibtexToggle(id) {
e = document.getElementById(id)
if (e.style.display != 'block') {
e.style.display = 'block';
} else {
e.style.display = 'none';
}
}
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-34239545-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Participatory Networking</a>
<div class="nav-collapse">
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#example">Example</a></li>
<li><a href="#papers">Presentations</a></li>
<li><a href="#vm">Demo VM</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#support">Support</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container">
<!-- Main hero unit for a primary marketing message or call to action -->
<div class="hero-unit">
<h1>Participatory Networking</h1>
<h2>A user-level API for SDNs</h2>
<p>Participatory Networking integrates end-users, hosts and applications in network management by supporting resource requests, traffic hints, and status queries.</p>
<p><a class="btn btn-primary btn-large" href="http://github.com/brownsys/pane" target="_blank">Download »</a></p>
</div>
<!-- Example row of columns -->
<div class="row">
<section id="about" class="anchor-dest">
<div class="span12">
<h2>About</h2>
<hr>
<img src="pane-system.png" class="diagram">
<p>PANE is a prototype <a href="http://www.openflow.org" target="_blank">OpenFlow</a> controller which implements Participatory Networking, an API for end-users, hosts and applications to take part in network management. PANE allows these principals to directly contact the network control-plane to place requests for resources, provide hints about future traffic, or query the state of the network. PANE divides and delegates authority for network management using a hierarchy of “shares,” which are also managed by interacting with the PANE server.</p>
<p>Participatory Networking is designed for networks with a single logical administrator, such as datacenters, enterprise or campus networks, and home networks. The system’s broad design is motivated by multiple scenarios in which applications benefit from network re-configuration including smooth video playback, bulk data transfer, in-network service from middleboxes or software routers, and route setup or flow placement. <a href="#papers">Our papers</a> include more detailed descriptions of these examples.</p>
<p>A diagram of PANE’s internals is shown at right. User requests enter at the top, where they are first checked against the <i>share tree</i>, which describes the privileges granted to each user. Valid requests are installed for their requested duration in the <i>policy tree</i>, which is then flattened into a single flow table for an idealized network consisting of a single switch. PANE’s runtime system then converts this <i>Network Flow Table</i> into individual tables for the distributed OpenFlow switches, using data about the network topology maintained in the <i>Network Information Base</i>.</p>
<br />
</div>
</section>
<section id="example" class="anchor-dest">
<div class="span12">
<h2>Example - Isolating Apache ZooKeeper traffic</h2>
<hr>
<img src="zookeeper-experiment.png" class="diagram">
<p>Apache <a href="http://zookeeper.apache.org">ZooKeeper</a> is a coordination service used at Twitter, Yahoo!, Netflix and elsewhere, where it fills a similar role to Google's Chubby service or Paxos quorums. During write operations, servers in the ZooKeeper ensemble must agree to commit each operation, a task which is sensitive to increased network latency. By augmenting ZooKeeper with <a href="https://github.com/brownsys/pane-zookeeper">support for PANE</a>, and granting it the necessary authority, our PANE-enabled ZooKeeper can request guaranteed bandwidth for its traffic, which, in turn, leads to lower latency as flows do not compete in switch queues with other traffic. In the plot on the right, the red line is a CDF of the latency of ZooKeeper CREATE operations when running on an unloaded network, the green line is the increased latency when the links used by ZooKeeper's traffic are heavily loaded, and the blue line represents the return to lower latency when ZooKeeper exercises its authority to isolate its traffic using PANE.</p>
<p>We currently use PANE's <a href="https://github.com/brownsys/pane/tree/master/client-libs">client library for Java applications</a> to create and manage the necessary PANE requests. Implementing complete support for PANE in ZooKeeper, including introducing additional configuration parameters required only <a href="https://github.com/brownsys/pane-zookeeper/compare/trunk...af01e4cb94fba2f6660b5eac608a6ee500e317de">a few hundred lines of code</a>. Further details of this experiment and its setup can be found in our SIGCOMM 2013 paper below, and we make our <a href="http://github.com/brownsys/zookeeper-benchmark">ZooKeeper benchmarking tool</a> available for download.</p>
<br />
</div>
</section>
<section id="papers" class="anchor-dest">
<div class="span12">
<h2>Papers and Presentations</h2>
<hr>
<p>
<li>Jeff Rasley, Brent Stephens, Colin Dixon, Eric Rozner, Wes Felter, Kanak Agarwal, John Carter, and Rodrigo Fonseca. Planck: millisecond-scale monitoring and control for commodity networks. In <em>Proceedings of the 2014 acm conference on sigcomm, SIGCOMM '14</em>, 407--418, New York, NY, USA, 2014. [<a href="http://www.cs.brown.edu/~rfonseca/pubs/rasley14planck.pdf">pdf</a>][<span class="bibtex-btn" onClick="bibtexToggle('rasley14planck')">BibTeX</span>]
<div id="rasley14planck" class="bibtex">
@inproceedings{rasley14planck,
Title = {Planck: Millisecond-scale Monitoring and Control for Commodity Networks},<br />
Author = {Rasley, Jeff and Stephens, Brent and Dixon, Colin and Rozner, Eric and Felter, Wes and Agarwal, Kanak and Carter, John and Fonseca, Rodrigo},<br />
Booktitle = {Proceedings of the 2014 ACM Conference on SIGCOMM},<br />
Location = {Chicago, Illinois, USA},<br />
Numpages = {12},<br />
Pages = {407--418},<br />
Publisher = {ACM},<br />
Series = {SIGCOMM '14},<br />
Address = {New York, NY, USA},<br />
Url = {http://www.cs.brown.edu/~rfonseca/pubs/rasley14planck.pdf},<br />
Year = {2014}}
</div></li><br />
<li>Andrew D. Ferguson, Arjun Guha, Chen Liang, Rodrigo Fonseca, and Shriram Krishnamurthi. Participatory Networking: An API for Application Control of SDNs. In <em>Proc. ACM SIGCOMM 2013</em>, August 2013. [<a href="http://www.cs.brown.edu/~adf/work/SIGCOMM2013-paper.pdf"><tt>Paper (pdf)</tt></a>] [<a href="https://www.youtube.com/watch?v=nyLSJjntK6I&hd=1"><tt>Paper (video)</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/SIGCOMM2013-talk.key"><tt>Talk (key)</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/SIGCOMM2013-talk.pdf"><tt>Talk (pdf)</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/SIGCOMM2013-talk.ppt"><tt>Talk (ppt, converted)</tt></a>] [<span class="bibtex-btn" onClick="bibtexToggle('ferguson2013sigcomm')">BibTeX</span>]
<div id="ferguson2013sigcomm" class="bibtex">
@inproceedings{Ferguson:2013sigcomm,<br />
Author = {Ferguson, Andrew and Guha, Arjun and Liang, Chen and Fonseca, Rodrigo and Krishnamurthi, Shriram},<br />
Title = {{Participatory Networking: An API for Application Control of SDNs}},<br />
Booktitle = {Proc. ACM SIGCOMM '13},<br />
Month = {August},<br />
Year = {2013},<br />
Address = {Hong Kong, China}}
</div></li><br />
<li>Andrew D. Ferguson, Arjun Guha, Chen Liang, Rodrigo Fonseca, and Shriram Krishnamurthi. A Northbound API for Sharing SDNs (Poster). In <em>Open Networking Summit</em>, April 2013. [<a href="http://www.cs.brown.edu/~adf/work/ONS2013-poster.pdf"><tt>Poster</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/ONS2013-proposal.pdf"><tt>Proposal</tt></a>] [<span class="bibtex-btn" onClick="bibtexToggle('ferguson2013ons')">BibTeX</span>]
<div id="ferguson2013ons" class="bibtex">
@inproceedings{Ferguson:2013ons,<br />
Author = {Ferguson, Andrew and Guha, Arjun and Liang, Chen and Fonseca, Rodrigo and Krishnamurthi, Shriram},<br />
Title = {{A Northbound API for Sharing SDNs}},<br />
Booktitle = {Open Networking Summit '13},<br />
Month = {April},<br />
Year = {2013},<br />
Address = {Santa Clara, CA}}
</div>
</li><br />
<li>Andrew D. Ferguson, Arjun Guha, Chen Liang, Rodrigo Fonseca, and Shriram Krishnamurthi. Hierarchical Policies for Software Defined Networks. In <em>Proc. Workshop on Hot Topics in Software Defined Networks (Hot-SDN)</em>, August 2012. [<a href="http://www.cs.brown.edu/~adf/work/HotSDN2012-paper.pdf"><tt>Paper (pdf)</tt></a>] [<a href="https://www.youtube.com/watch?v=MIrCSRjqpnA&hd=1"><tt>Paper (video)</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/HotSDN2012-talk.key"><tt>Talk (key)</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/HotSDN2012-talk.pdf"><tt>Talk (pdf)</tt></a>] [<a href="http://conferences.sigcomm.org/sigcomm/2012/video/HotSDN-II-01-HierarchicalPoliciesForSoftwareDefinedNetworks.mp4"><tt>Talk (video)</tt></a>] [<span class="bibtex-btn" onClick="bibtexToggle('ferguson2012hft')">BibTeX</span>]
<div id="ferguson2012hft" class="bibtex">
@inproceedings{Ferguson:2012hft,<br />
Author = {Ferguson, Andrew and Guha, Arjun and Liang, Chen and Fonseca, Rodrigo and Krishnamurthi, Shriram},<br />
Title = {{Hierarchical Policies for Software Defined Networks}},<br />
Booktitle = {Proc. Hot-SDN '12},<br />
Year = {2012},<br />
Address = {Helsinki, Finland}}
</div>
</li><br />
<li>Rodrigo Fonseca. Participatory Networking. Microsoft Research (Redmond); August 8, 2012.</li><br />
<li>Rodrigo Fonseca. Participatory Networking. Universidade Federal de Minas Gerais; May 25, 2012. [<a href="files/2012PANE-UFMG-port.pdf"><tt>Talk (pdf)</tt></a> <i>(in Portuguese)</i>]</li><br />
<li>Rodrigo Fonseca. Participatory Networking. Boston University; May 10, 2012. [<a href="files/2012CloudTrustWorkshop.pdf"><tt>Talk (pdf)</tt></a>]</li><br />
<li>Andrew D. Ferguson, Arjun Guha, Jordan Place, Rodrigo Fonseca, and Shriram Krishnamurthi. Participatory Networking. In <em>Proc. Workshop on Hot Topics in Management of Internet, Cloud, and Enterprise Networks and Services (Hot-ICE)</em>, April 2012. [<a href="http://www.cs.brown.edu/~adf/work/HotICE2012-paper.pdf"><tt>Paper (pdf)</tt></a>] [<a href="https://www.youtube.com/watch?v=6oVqt5sW6qg&hd=1"><tt>Paper (video)</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/HotICE2012-talk.key"><tt>Talk (key)</tt></a>] [<a href="http://www.cs.brown.edu/~adf/work/HotICE2012-talk.pdf"><tt>Talk (pdf)</tt></a>] [<a href="https://www.usenix.org/conference/hot-ice12/participatory-networking"><tt>Talk (video)</tt></a>] [<span class="bibtex-btn" onClick="bibtexToggle('ferguson2012pane')">BibTeX</span>]
<div id="ferguson2012pane" class="bibtex">
@inproceedings{Ferguson:2012pane,<br />
Author = {Ferguson, Andrew and Guha, Arjun and Place, Jordan and Fonseca, Rodrigo and Krishnamurthi, Shriram},<br />
Title = {{Participatory Networking}},<br />
Booktitle = {Proc. Hot-ICE '12},<br />
Year = {2012},<br />
Address = {San Jose, CA}}
</div>
</li><br />
</p>
<br />
</div>
</section>
<section id="vm" class="anchor-dest">
<div class="span12">
<h2>Demo VM</h2>
<hr>
<img src="vm-screenshot.png" style="border: 0px; padding-top: 0px" class="diagram">
<p>To make exploring PANE and its potential use cases simpler, we are providing this demo virtual machine. The VM uses <a href="http://www.mininet.org">Mininet</a> to create a virtual network topology with PANE functioning as the SDN controller, and can use either <a href="http://www.openvswitch.org">Open vSwitch</a> or the OpenFlow 1.0 <a href="https://github.com/brownsys/openflow">reference switch</a> as the virtual switches. The VM also includes a PANE-enabled <a href="https://github.com/brownsys/pane-zookeeper">version of ZooKeeper</a>, the <a href="https://github.com/brownsys/zookeeper-benchmark">ZooKeeper benchmark</a>, and a <a href="https://github.com/brownsys/pane-demo-vm/blob/master/demos/ZooKeeperDemo.py">script which launches</a> the experiment described above. In addition, all of the tools needed to further develop PANE are also included.</p>
<p>The virtual machine is 64-bit <a href="http://www.xubuntu.org">Xubuntu</a> 12.10, and requires <a href="https://www.virtualbox.org/">Virtual Box</a> to run.</p>
<p>Download link: <a href="files/PANEdemoVM.tar.gz">PANEdemoVM.tar.gz</a> (1.4 GB)</p>
<p>SHA1 checksum for VM download: <tt>2481d078fdb3ecc2ffe6476d8e9d62e9498efb56</tt></p>
<p>Finally, all of the files to create this virtual machine are <a href="https://github.com/brownsys/pane-demo-vm/">avilable on Github</a>. If you would like to create your VM for SDN development, check out the <a href="https://github.com/brownsys/pane-demo-vm/blob/master/INSTALL">INSTALL file</a>.</p>
<br />
</div>
</section>
<section id="contact" class="anchor-dest">
<div class="span12">
<h2>Contact</h2>
<hr>
<p>Members of the Particpatory Networking project include
<a href="http://www.cs.brown.edu/~adf/" target="_blank">Andrew Ferguson</a>,
<a href="http://www.cs.brown.edu/~arjun/" target="_blank">Arjun Guha</a>,
Chen Liang,
<a href="http://www.cs.brown.edu/~betsy/" target="_blank">Betsy Hilliard</a>,
<a href="https://twitter.com/#!/tapman90" target="_blank">Jordan Place</a>,
<a href="http://www.cs.brown.edu/~rfonseca/" target="_blank">Rodrigo Fonseca</a>, and
<a href="http://www.cs.brown.edu/~sk/" target="_blank">Shriram Krishnamurthi</a>.
Please contact Andrew Ferguson (<a href="mailto:adf@cs.brown.edu">adf@cs.brown.edu</a>) with any questions or comments.</p>
<p>The authors wish to thank
<a href="http://www.cs.brown.edu/~cjc/" target="_blank">Carleton Coffrin</a>,
<a href="http://www.cs.brown.edu/~joe/" target="_blank">Joe Politz</a>,
<a href="http://www.cs.princeton.edu/~jrex/" target="_blank">Jennifer Rexford</a>,
<a href="http://www.eecs.berkeley.edu/Faculty/Homepages/shenker.html" target="_blank">Scott Shenker</a>, and
Andreas Voellmy
for helpful discussions, feedback, and assistance with this project.
This work is partially supported by grants from the National Science Foundation,
including NSF Award #1012060.
Andrew Ferguson is supported by an NDSEG fellowship.
</div>
</section>
<section id="support" class="anchor-dest">
<div class="span12">
<h2>Support</h2>
<hr>
</div>
<div class="span2">
<img src="NSF_Logo.PNG"></img>
<img src="DODc.png"></img>
</div>
<div class="span10">
This work is partially supported by grants from the National Science Foundation,
including NSF Awards #1320397 and #1012060.
Andrew Ferguson was supported by an NDSEG fellowship.
</div>
</section>
</div>
<hr>
<footer>
<img src="logo-sm.png"></img>
<p>© Brown University 2012-2014</p>
</footer>
</div> <!-- /container -->
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="bootstrap/js/jquery.js"></script>
<script src="bootstrap/js/bootstrap-transition.js"></script>
<script src="bootstrap/js/bootstrap-alert.js"></script>
<script src="bootstrap/js/bootstrap-modal.js"></script>
<script src="bootstrap/js/bootstrap-dropdown.js"></script>
<script src="bootstrap/js/bootstrap-scrollspy.js"></script>
<script src="bootstrap/js/bootstrap-tab.js"></script>
<script src="bootstrap/js/bootstrap-tooltip.js"></script>
<script src="bootstrap/js/bootstrap-popover.js"></script>
<script src="bootstrap/js/bootstrap-button.js"></script>
<script src="bootstrap/js/bootstrap-collapse.js"></script>
<script src="bootstrap/js/bootstrap-carousel.js"></script>
<script src="bootstrap/js/bootstrap-typeahead.js"></script>
</body>
</html>