-
Notifications
You must be signed in to change notification settings - Fork 0
/
CONTRIBUTING.html
324 lines (216 loc) · 12.7 KB
/
CONTRIBUTING.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
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Contributing — Computer Networks: A Systems Approach Version 6.1 documentation</title>
<link rel="shortcut icon" href="static/bridge.ico"/>
<script type="text/javascript" src="static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="static/documentation_options.js"></script>
<script type="text/javascript" src="static/jquery.js"></script>
<script type="text/javascript" src="static/underscore.js"></script>
<script type="text/javascript" src="static/doctools.js"></script>
<script type="text/javascript" src="static/language_data.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="static/js/theme.js"></script>
<link rel="stylesheet" href="static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="static/pygments.css" type="text/css" />
<link rel="stylesheet" href="static/css/rtd_theme_mods.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Computer Networks: A Systems Approach
</a>
<div class="version">
Version 6.1
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Table of Contents</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="preface.html">Preface</a></li>
<li class="toctree-l1"><a class="reference internal" href="foundation.html">Chapter 1: Foundation</a></li>
<li class="toctree-l1"><a class="reference internal" href="direct.html">Chapter 2: Direct Links</a></li>
<li class="toctree-l1"><a class="reference internal" href="internetworking.html">Chapter 3: Internetworking</a></li>
<li class="toctree-l1"><a class="reference internal" href="scaling.html">Chapter 4: Advanced Internetworking</a></li>
<li class="toctree-l1"><a class="reference internal" href="e2e.html">Chapter 5: End-to-End Protocols</a></li>
<li class="toctree-l1"><a class="reference internal" href="congestion.html">Chapter 6: Congestion Control</a></li>
<li class="toctree-l1"><a class="reference internal" href="data.html">Chapter 7: End-to-End Data</a></li>
<li class="toctree-l1"><a class="reference internal" href="security.html">Chapter 8: Network Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="applications.html">Chapter 9: Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="README.html">About This Book</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Computer Networks: A Systems Approach</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li>Contributing</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/CONTRIBUTING.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="contributing">
<h1>Contributing<a class="headerlink" href="#contributing" title="Permalink to this headline">¶</a></h1>
<p>Contributors are encouraged to discuss major contributions (e.g.,
significant rewrites or new sections/chapters) on the
<code class="docutils literal notranslate"><span class="pre">discuss@systemsapproach.org</span></code> mailing list before putting in a lot of
effort. The first step is to <a class="reference external" href="https://groups.google.com/a/systemsapproach.org/forum/#!forum/discuss">join the
forum</a>.</p>
<p>Also, while GitHub is a great place to archive and track revisions over
time, it is often the case that a shared Google Document is a better
tool for collaboration. This is true not only for from-scratch efforts,
but also as a way to get comments and feedback on a fairly complete
draft. If you’re game, we have a shared <a class="reference external" href="https://drive.google.com/drive/u/2/folders/1diDcXKTyMFyuR7g1M6gTRuCnHXAUYj7C?ths=true">Google Drive
Folder</a>.</p>
<p>If you have new material that doesn’t fit into the current book
organization in an obvious way, check it into one of the following
repositories:</p>
<ul class="simple">
<li><a class="reference external" href="https://github.com/SystemsApproach/sdn">sdn</a>: Sections or
articles related to Software-Defined Networking.</li>
<li><a class="reference external" href="https://github.com/SystemsApproach/cloud">cloud</a>: Sections or
articles related to cloud networking, both how Internet protocols
have been adapted to work in data centers and how the cloud has
impacted the greater Internet.</li>
<li><a class="reference external" href="https://github.com/SystemsApproach/tools">tools</a>: Tutorials or
user guides describing diagnostic, monitoring, visualization, or
analysis tools that can be used to gain insight into the how the
Internet works in practice.</li>
<li><a class="reference external" href="https://github.com/SystemsApproach/advanced-topics">advanced-topics</a>:
Sections or articles on any other advanced topic.</li>
</ul>
<p>This is likely a stop-gap solution. We’ll figure out the best way to
organize material (both old and new) over time.</p>
<p>As for stylistic guidelines, there are only a few things to keep in
mind.</p>
<p>First, try to keep each major topic (what corresponded to a chapter in
the original textbook) self-contained, with minimal forward- or
backward-references to other material. The idea is that each chapter
should be able to stand alone. (Think self-contained software module
with no hard-coded dependencies.)</p>
<p>Second, adhere to best practices using Sphinx. Run <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">lint</span></code> on
any new text you write. This may seem pedantic, but it’s important
that the raw ReStructrued Text be easily read, edited, and compared.</p>
<p>Third, when creating figures, reuse as many of the existing graphical
elements as possible and stick to the current color scheme. Check in
both editable source (currently <code class="docutils literal notranslate"><span class="pre">.eps</span></code> and <code class="docutils literal notranslate"><span class="pre">.pptx</span></code>) and a PNG file
(600 dpi) for each figure.</p>
<p>Finally, keep the <em>Systems Approach</em> in mind as you write. To quote the
Preface in the original book:</p>
<blockquote>
<div><p><strong>Approach</strong></p>
<p>For an area that’s as dynamic and changing as computer networks, the
most important thing a textbook can offer is perspective—to
distinguish between what’s important and what’s not, and between
what’s lasting and what’s superficial. Based on our experience over
the past 25-plus years doing research that has led to new networking
technology, teaching undergraduate and graduate students about the
latest trends in networking, and delivering advanced networking
products to market, we have developed a perspective—which we call the
<em>systems approach</em>—that forms the soul of this book. The systems
approach has several implications:</p>
<ul class="simple">
<li><em>First Principles.</em> Rather than accept existing artifacts as
gospel, we start with first principles and walk you through the
thought process that led to today’s networks. This allows us to
explain <em>why</em> networks look like they do. It is our experience
that once you understand the underlying concepts, any new protocol
that you are confronted with will be relatively easy to digest.</li>
<li><em>Non-layerist.</em> Although the material is loosely organized around
the traditional network layers, starting at the bottom and moving
up the protocol stack, we do not adopt a rigidly layerist
approach. Many topics—congestion control and security are good
examples—have implications up and down the hierarchy, and so we
discuss them outside the traditional layered model. Similarly,
routers and switches have so much in common (and are often
combined as single products) that we discuss them in the same
chapter. In short, we believe layering makes a good servant but a
poor master; it’s more often useful to take an end-to-end
perspective.</li>
<li><em>Real-world Examples.</em> Rather than explain how protocols work in
the abstract, we use the most important protocols in use
today—most of them from the TCP/IP Internet—to illustrate how
networks work in practice. This allows us to include real-world
experiences in the discussion.</li>
<li><em>Software.</em> Although at the lowest levels networks are constructed
from commodity hardware that can be bought from computer vendors
and communication services that can be leased from the phone
company, it is the software that allows networks to provide new
services and adapt quickly to changing circumstances. It is for
this reason that we emphasize how network software is implemented,
rather than stopping with a description of the abstract algorithms
involved. We also include code segments taken from a working
protocol stack to illustrate how you might implement certain
protocols and algorithms.</li>
<li><em>End-to-end Focus.</em> Networks are constructed from many
building-block pieces, and while it is necessary to be able to
abstract away uninteresting elements when solving a particular
problem, it is essential to understand how all the pieces fit
together to form a functioning network. We therefore spend
considerable time explaining the overall end-to-end behavior of
networks, not just the individual components, so that it is
possible to understand how a complete network operates, all the
way from the application to the hardware.</li>
<li><em>Performance.</em> The systems approach implies doing experimental
performance studies, and then using the data you gather both to
quantitatively analyze various design options and to guide you in
optimizing the implementation. This emphasis on empirical analysis
pervades the book.</li>
<li><em>Design Principles.</em> Networks are like other computer systems—for
example, operating systems, processor architectures, distributed
and parallel systems, and so on. They are all large and complex.
To help manage this complexity, system builders often draw on a
collection of design principles. We highlight these design
principles as they are introduced throughout the book,
illustrated, of course, with examples from computer networks.</li>
</ul>
</div></blockquote>
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
© Copyright 2019
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>