Codebase list python-nemu / a11c4bff-7ae5-4f9b-a19b-8fd254cf39fc/main
[ Martín Ferrari ] [ Debian Janitor ] New upstream snapshot. Debian Janitor 2 years ago
36 changed file(s) with 38 addition(s) and 3352 deletion(s). Raw diff Collapse all Expand all
+0
-36
.gitignore less more
0 *.py[cod]
1
2 # C extensions
3 *.so
4
5 # Packages
6 *.egg
7 *.egg-info
8 dist
9 build
10 eggs
11 parts
12 bin
13 var
14 sdist
15 develop-eggs
16 .installed.cfg
17 lib
18 lib64
19 __pycache__
20
21 # Installer logs
22 pip-log.txt
23
24 # Unit test / coverage reports
25 .coverage
26 .tox
27 nosetests.xml
28
29 # Translations
30 *.mo
31
32 # Mr Developer
33 .mr.developer.cfg
34 .project
35 .pydevproject
+0
-26
MANIFEST less more
0 BUILDING.md
1 COPYING
2 docs/protocol.txt
3 docs/sample-api.txt
4 docs/X11Forwarding.md
5 examples/sample.py
6 Makefile
7 README.md
8 setup.cfg
9 setup.py
10 src/nemu/environ.py
11 src/nemu/__init__.py
12 src/nemu/interface.py
13 src/nemu/iproute.py
14 src/nemu/node.py
15 src/nemu/protocol.py
16 src/nemu/subprocess_.py
17 test/test_core.py
18 test/test_interfaces.py
19 test/test_node.py
20 test/test_protocol.py
21 test/test_routing.py
22 test/test_subprocess.py
23 test/test_switch.py
24 test/test_util.py
25 TODO.md
0 Metadata-Version: 1.0
1 Name: nemu
2 Version: 0.3.1
3 Summary: A lightweight network emulator embedded in a small python library.
4 Home-page: https://github.com/NightTsarina/nemu
5 Author: Martina Ferrari, Alina Quereilhac
6 Author-email: tina@tina.pm, aquereilhac@gmail.com
7 License: GPLv2
8 Description: UNKNOWN
9 Platform: Linux
+0
-8
benchmarks/Makefile less more
0 CFLAGS = -Wall -g -O3
1
2 all: udp-perf
3
4 clean:
5 rm -f udp-perf *.pyc
6
7 .PHONY: clean all
+0
-171
benchmarks/graph.py less more
0 # vim: ts=4:sw=4:et:ai:sts=4
1
2 import csv, StringIO, subprocess
3
4 class Graph:
5 [LINE, DOT, POINT, LINEPOINT] = range(0, 4)
6 def __init__(self):
7 self._plots = []
8 self._title = None
9 def set_title(self, title):
10 self._title = title
11 def add(self, plot):
12 self._plots.append(plot)
13 def generate(self, output_file):
14 lines = self.gen_output()
15 lines.insert(0, "set terminal postscript")
16 lines.insert(0, "set output '%s'" % filename)
17 gnuplot = subprocess.Popen(['gnuplot', '-'],
18 stdin = subprocess.PIPE,
19 stdout = subprocess.PIPE,
20 stderr = subprocess.STDOUT)
21 gnuplot.communicate(input = "\n".join(lines))
22 def Xplot(self, plotnr):
23 lines = self.gen_output(plotnr)
24 lines.insert(0, "set terminal wxt")
25 lines.append('pause mouse')
26 gnuplot = subprocess.Popen(['gnuplot', '-'], stdin = subprocess.PIPE)
27 gnuplot.communicate(input = "\n".join(lines))
28 def _style_to_str(self, style):
29 d = {Graph.LINE: 'lines', Graph.DOT: 'dots', Graph.POINT: 'points',
30 Graph.LINEPOINT: 'linespoints'}
31 return d[style]
32 def gen_output(self, plots = None):
33 if plots:
34 plots = map(self._plots.__getitem__, plots)
35 else:
36 plots = self._plots
37 lines = []
38 if self._title:
39 lines.append("set title '%s'" % self._title)
40 line = []
41 for plot in plots:
42 line.append("'-' title '%s' with %s" % (plot.title(),
43 self._style_to_str(plot.style())))
44 lines.append('plot ' + ', '.join(line))
45 for plot in plots:
46 for r in plot.data():
47 r = [str(d) for d in r]
48 lines.append(' '.join(r))
49 lines.extend(['e'])
50 return lines
51
52 class Plot:
53 def __init__(self, title, data, style = Graph.LINE):
54 self._title = title
55 self._data = data
56 self._style = style
57 def style(self):
58 return self._style
59 def title(self):
60 return self._title
61 def data(self):
62 return self._data
63
64 class Row:
65 def __init__(self, data, names = None):
66 assert not names or len(names) == len(data)
67 assert not names or all(map(lambda x: isinstance(x, str), names))
68 self._data1 = list(data)
69 if names:
70 self._data2 = dict(zip(names, data))
71 else:
72 self._data2 = dict()
73 def append(self, value, name = None):
74 self._data1.append(value)
75 if self._data2:
76 assert name not in self._data2
77 self._data2[name] = value
78 def __getitem__(self, item):
79 if isinstance(item, int):
80 return self._data1[item]
81 else:
82 return self._data2[item]
83 def __len__(self):
84 return len(self._data1)
85 # def __repr__(self):
86 # return
87
88 class Data:
89 def __init__(self, rows = [], colnames = []):
90 assert not (colnames and rows) or len(colnames) == len(rows[0])
91 self._colnames = colnames
92 self._data = []
93 for r in rows:
94 self.add_row(r)
95 def add_row(self, row):
96 if isinstance(row, Row):
97 self._data.append(row)
98 else:
99 self._data.append(Row(row, self._colnames))
100 def nrows(self):
101 return len(self._data)
102 def ncols(self):
103 return len(self._data[0])
104 def read_csv(self, stream, has_header = False):
105 self._data = []
106 self._colnames = []
107 self._datadict = []
108 n = 0
109 reader = csv.reader(stream)
110 for line in reader:
111 if n and len(line) != n:
112 raise 'Not matching number of columns in different rows'
113 if not n:
114 n = len(line)
115 if has_header:
116 self._colnames = line
117 continue
118 row = []
119 for i in line:
120 try:
121 row.append(float(i))
122 except:
123 row.append(i)
124 self._data.append(row)
125 if has_header:
126 self._gen_data_dict()
127 def write_csv(self, stream):
128 writer = csv.writer(stream)
129 writer.writerows(self._data)
130 def column(self, col):
131 if isinstance(col, int):
132 return [row[col] for row in self._data]
133 else:
134 return [row[col] for row in self._datadict]
135 def row(self, row):
136 return self._data[row]
137 def cell(self, row, col):
138 if isinstance(col, int):
139 return self._data[row][col]
140 else:
141 return self._datadict[row][col]
142 def select(self, cols = None, selectfn = lambda x: True,
143 groupfn = lambda x: None):
144 if cols:
145 cols = list(cols)
146 else:
147 cols = range(self.ncols())
148 groups = {}
149 res = []
150 for row in self._data if isinstance(cols[0], int) else self._datadict:
151 if not selectfn(row):
152 continue
153
154 def add_column(self, fn, colname = None):
155 if self._colnames:
156 assert colname
157 for row in self._data:
158 row.append(fn(row))
159 if colname:
160 self._colname.append(colname)
161 for row in self._datadict:
162 row[colname] = fn(row)
163 return self.ncols() - 1
164
165 def uniq(l):
166 data = []
167 for i in l:
168 if i not in data:
169 data.append(i)
170 return data
+0
-249
benchmarks/linear-raw-throughput.py less more
0 #!/usr/bin/env python
1 # vim: ts=4:sw=4:et:ai:sts=4
2
3 import csv, getopt, nemu, os, os.path, re, select, subprocess, sys
4
5 __doc__ = """Creates a linear network topology, and measures the maximum
6 end-to-end throughput for the specified packet size."""
7
8 def usage(f):
9 f.write("Usage: %s --nodes=NUM [TOPOLOGY_OPTIONS] [TEST_OPTIONS]\n%s\n\n" %
10 (os.path.basename(sys.argv[0]), __doc__))
11
12 f.write("Topology configuration:\n")
13 f.write(" -n, --nodes=NUM Number of nodes to create (mandatory)\n")
14 f.write(" --use-p2p Use P2P links, to avoid bridging\n")
15 f.write(" --delay=SECS Add delay emulation in links\n")
16 f.write(" --jitter=PERCENT Add jitter emulation in links\n")
17 f.write(" --bandwidth=BPS Maximum bandwidth of links\n\n")
18
19 f.write("Test specification:\n")
20 f.write(" Parameters take single values or ranges of falues in the form " +
21 "nnn-NNN, a test\n")
22 f.write(" will be run for each possible combination.\n")
23 f.write(" -s, --pktsize=BYTES Size of packet payload (mandatory)\n")
24 f.write(" --bwlimit=BPS Apply bandwidth limitation in the " +
25 "traffic generator\n\n")
26 # background noise
27 f.write("How long should each test run (defaults to -t 10):\n")
28 f.write(" -t, --time=SECS Stop after SECS seconds\n")
29 f.write(" -p, --packets=NUM Stop after NUM packets\n")
30 f.write(" -b, --bytes=BYTES Stop after BYTES bytes sent\n\n")
31
32 f.write("Output format:\n")
33 f.write(" --format=FMT Valid values are `csv', `brief', " +
34 "and `verbose'\n")
35
36 def main():
37 error = None
38 opts = []
39 try:
40 opts, args = getopt.getopt(sys.argv[1:], "hn:s:t:p:b:", [
41 "help", "nodes=", "pktsize=", "time=", "packets=", "bytes=",
42 "use-p2p", "delay=", "jitter=", "bandwidth=", "format=" ])
43 except getopt.GetoptError, err:
44 error = str(err) # opts will be empty
45
46 pktsize = nr = time = packets = nbytes = None
47 delay = jitter = bandwidth = None
48 use_p2p = False
49 format = "verbose"
50
51 for o, a in opts:
52 if o in ("-h", "--help"):
53 usage(sys.stdout)
54 sys.exit(0)
55 elif o in ("-n", "--nodes"):
56 nr = int(a)
57 if nr > 65:
58 error = "Invalid value for %s: %s" % (o, a)
59 break
60 elif o in ("-s", "--pktsize"):
61 pktsize = int(a)
62 elif o in ("-t", "--time"):
63 time = float(a)
64 elif o in ("-p", "--packets"):
65 packets = int(a)
66 elif o in ("--bytes"):
67 nbytes = int(a)
68 elif o in ("--delay"):
69 delay = float(a)
70 elif o in ("--jitter"):
71 jitter = float(a)
72 elif o in ("--bandwidth"):
73 bandwidth = float(a)
74 elif o in ("--use-p2p"):
75 use_p2p = True
76 continue # avoid the value check
77 elif o == "--format":
78 if a not in ('csv', 'brief', 'verbose'):
79 error = "Invalid value for %s: %s" % (o, a)
80 break
81 format = a
82 continue
83 else:
84 raise RuntimeError("Cannot happen")
85 # In all cases, I take a number
86 if float(a) <= 0:
87 error = "Invalid value for %s: %s" % (o, a)
88
89 if not error:
90 if args:
91 error = "Unknown argument(s): %s" % " ".join(args)
92 elif not nr:
93 error = "Missing mandatory --nodes argument"
94 elif not pktsize:
95 error = "Missing mandatory --pktsize argument"
96 elif use_p2p and (delay or jitter or bandwidth):
97 error = "Cannot use links emulation with P2P links"
98
99 if error:
100 sys.stderr.write("%s: %s\n" % (os.path.basename(sys.argv[0]), error))
101 sys.stderr.write("Try `%s --help' for more information.\n" %
102 os.path.basename(sys.argv[0]))
103 #usage(sys.stderr)
104 sys.exit(2)
105
106 if not (time or nbytes or packets):
107 time = 10
108
109 udp_perf = nemu.environ.find_bin("udp-perf",
110 extra_path = [".", os.path.dirname(sys.argv[0])])
111 if not udp_perf:
112 raise RuntimeError("Cannot find `udp-perf'")
113
114 nodes, interfaces, links = create_topo(nr, use_p2p, delay, jitter,
115 bandwidth)
116
117 cmdline = [udp_perf, "--server"]
118 if time:
119 cmdline.append("--max-time=%d" % time)
120 if packets:
121 cmdline.append("--max-pkts=%d" % packets)
122 if nbytes:
123 cmdline.append("--max-bytes=%d" % nbytes)
124 if format == "verbose":
125 cmdline.append("--verbose")
126
127 srv = nodes[0].Popen(cmdline, stdout = subprocess.PIPE)
128
129 cmdline = [udp_perf, "--client", "--pktsize=%d" % pktsize]
130 if nr > 1:
131 cmdline.append("--host=10.0.0.1")
132 clt = nodes[nr - 1].Popen(cmdline)
133
134 out = ""
135 while(True):
136 ready = select.select([srv.stdout], [], [], 0.1)[0]
137 if ready:
138 r = os.read(srv.stdout.fileno(), 1024)
139 if not r:
140 break
141 out += r
142 if srv.poll() != None or clt.poll() != None:
143 break
144
145 if srv.poll():
146 raise RuntimeError("upd-perf server returned with error.")
147
148 if clt.poll():
149 raise RuntimeError("upd-perf client returned with error.")
150
151 srv.wait()
152 clt.wait()
153
154 out = out.strip()
155
156 if format != "csv":
157 print "Command line: %s" % (" ".join(sys.argv[1:]))
158 print out.strip()
159 return
160
161 data = out.split(" ")
162 data = dict(map(lambda s: s.partition(":")[::2], data))
163 if sorted(data.keys()) != sorted(["brx", "prx", "pksz", "plsz", "err",
164 "mind", "avgd", "maxd", "jit", "time"]):
165 raise RuntimeError("Invalid output from udp-perf")
166 data["nodes"] = nr
167 data["bridge"] = int(not use_p2p)
168 data["cfg_dly"] = delay if delay else ""
169 data["cfg_bw"] = bandwidth if bandwidth else ""
170 data["cfg_jit"] = jitter if jitter else ""
171
172 res = []
173 for i in ["nodes", "bridge", "cfg_dly", "cfg_bw", "cfg_jit",
174 "brx", "prx", "pksz", "plsz", "err", "mind", "avgd",
175 "maxd", "jit", "time"]:
176 res.append(data[i])
177
178 writer = csv.writer(sys.stdout)
179 writer.writerow(res)
180
181 def ip2dec(ip):
182 match = re.search(r'^(\d+)\.(\d+)\.(\d+)\.(\d+)$', ip)
183 assert match
184 return long(match.group(1)) * 2**24 + long(match.group(2)) * 2**16 + \
185 long(match.group(3)) * 2**8 + long(match.group(4))
186
187 def dec2ip(dec):
188 res = [None] * 4
189 for i in range(4):
190 res[3 - i] = dec % 256
191 dec >>= 8
192 return "%d.%d.%d.%d" % tuple(res)
193
194 def create_topo(n, p2p, delay, jitter, bw):
195 nodes = []
196 interfaces = []
197 links = []
198 for i in range(n):
199 nodes.append(nemu.Node())
200 if p2p:
201 interfaces = [[None]]
202 for i in range(n - 1):
203 a, b = nemu.P2PInterface.create_pair(nodes[i], nodes[i + 1])
204 interfaces[i].append(a)
205 interfaces.append([])
206 interfaces[i + 1] = [b]
207 interfaces[n - 1].append(None)
208 else:
209 for i in range(n):
210 if i > 0:
211 left = nodes[i].add_if()
212 else:
213 left = None
214 if i < n - 1:
215 right = nodes[i].add_if()
216 else:
217 right = None
218 interfaces.append((left, right))
219 for i in range(n - 1):
220 links = nemu.Switch(bandwidth = bw, delay = delay,
221 delay_jitter = jitter)
222 links.up = True
223 links.connect(interfaces[i][1])
224 links.connect(interfaces[i + 1][0])
225 links.append(links)
226
227 for i in range(n):
228 for j in (0, 1):
229 if interfaces[i][j]:
230 interfaces[i][j].up = True
231
232 ip = ip2dec("10.0.0.1")
233 for i in range(n - 1):
234 interfaces[i][1].add_v4_address(dec2ip(ip), 30)
235 interfaces[i + 1][0].add_v4_address(dec2ip(ip + 1), 30)
236 ip += 4
237
238 ipbase = ip2dec("10.0.0.0")
239 lastnet = dec2ip(ipbase + 4 * (n - 2))
240 for i in range(n - 2):
241 nodes[i].add_route(prefix = lastnet, prefix_len = 30,
242 nexthop = dec2ip(ipbase + 4 * i + 2))
243 nodes[n - 1 - i].add_route(prefix = "10.0.0.0", prefix_len = 30,
244 nexthop = dec2ip(ipbase + (n - 2 - i) * 4 + 1))
245 return nodes, interfaces, links
246
247 if __name__ == "__main__":
248 main()
+0
-13
benchmarks/preliminar/comparison-bynodes.gnuplot less more
0 set terminal postscript colour enhanced landscape lw 1 10
1 set key box left top width 1 title 'Experiment'
2 set xlabel 'Number of nodes'
3 set ylabel 'Processing cost per packet (10E-6 sec)'
4 set title 'Processing cost for 1000-byte packets'
5 set xrange [0:35]
6 plot \
7 'results-simu.txt' index 0 every 8::1 using 2:3 title "Exp 1" with linespoints, \
8 'results-simu.txt' index 1 every 8::1 using 2:3 title "Exp 2" with linespoints, \
9 'results-simu.txt' index 2 every 8::1 using 2:3 title "Exp 3" with linespoints, \
10 'results.txt' index 0 every 13::11 using 1:($10/$3) title "Exp 4" with linespoints, \
11 'results.txt' index 1 every 13::11 using 1:($10/$3) title "Exp 4bis" with linespoints
12
+0
-810
benchmarks/preliminar/comparison-bynodes.ps less more
0 %!PS-Adobe-2.0
1 %%Creator: gnuplot 4.2 patchlevel 3
2 %%CreationDate: Mon Aug 16 13:02:27 2010
3 %%DocumentFonts: (atend)
4 %%BoundingBox: 50 50 554 770
5 %%Orientation: Landscape
6 %%Pages: (atend)
7 %%EndComments
8 %%BeginProlog
9 /gnudict 256 dict def
10 gnudict begin
11 %
12 % The following 6 true/false flags may be edited by hand if required
13 % The unit line width may also be changed
14 %
15 /Color true def
16 /Blacktext false def
17 /Solid false def
18 /Dashlength 1 def
19 /Landscape true def
20 /Level1 false def
21 /Rounded false def
22 /TransparentPatterns false def
23 /gnulinewidth 5.000 def
24 /userlinewidth gnulinewidth def
25 %
26 /vshift -33 def
27 /dl1 {
28 10.0 Dashlength mul mul
29 Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
30 } def
31 /dl2 {
32 10.0 Dashlength mul mul
33 Rounded { currentlinewidth 0.75 mul add } if
34 } def
35 /hpt_ 31.5 def
36 /vpt_ 31.5 def
37 /hpt hpt_ def
38 /vpt vpt_ def
39 Level1 {} {
40 /SDict 10 dict def
41 systemdict /pdfmark known not {
42 userdict /pdfmark systemdict /cleartomark get put
43 } if
44 SDict begin [
45 /Title ()
46 /Subject (gnuplot plot)
47 /Creator (gnuplot 4.2 patchlevel 3 )
48 /Author (Martin_Hernan Ferrari,L133,2417)
49 % /Producer (gnuplot)
50 % /Keywords ()
51 /CreationDate (Mon Aug 16 13:02:27 2010)
52 /DOCINFO pdfmark
53 end
54 } ifelse
55 %
56 % Gnuplot Prolog Version 4.2 (August 2006)
57 %
58 /M {moveto} bind def
59 /L {lineto} bind def
60 /R {rmoveto} bind def
61 /V {rlineto} bind def
62 /N {newpath moveto} bind def
63 /Z {closepath} bind def
64 /C {setrgbcolor} bind def
65 /f {rlineto fill} bind def
66 /vpt2 vpt 2 mul def
67 /hpt2 hpt 2 mul def
68 /Lshow {currentpoint stroke M 0 vshift R
69 Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
70 /Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
71 Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
72 /Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R
73 Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
74 /UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
75 /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
76 /DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
77 {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
78 /BL {stroke userlinewidth 2 mul setlinewidth
79 Rounded {1 setlinejoin 1 setlinecap} if} def
80 /AL {stroke userlinewidth 2 div setlinewidth
81 Rounded {1 setlinejoin 1 setlinecap} if} def
82 /UL {dup gnulinewidth mul /userlinewidth exch def
83 dup 1 lt {pop 1} if 10 mul /udl exch def} def
84 /PL {stroke userlinewidth setlinewidth
85 Rounded {1 setlinejoin 1 setlinecap} if} def
86 % Default Line colors
87 /LCw {1 1 1} def
88 /LCb {0 0 0} def
89 /LCa {0 0 0} def
90 /LC0 {1 0 0} def
91 /LC1 {0 1 0} def
92 /LC2 {0 0 1} def
93 /LC3 {1 0 1} def
94 /LC4 {0 1 1} def
95 /LC5 {1 1 0} def
96 /LC6 {0 0 0} def
97 /LC7 {1 0.3 0} def
98 /LC8 {0.5 0.5 0.5} def
99 % Default Line Types
100 /LTw {PL [] 1 setgray} def
101 /LTb {BL [] LCb DL} def
102 /LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
103 /LT0 {PL [] LC0 DL} def
104 /LT1 {PL [4 dl1 2 dl2] LC1 DL} def
105 /LT2 {PL [2 dl1 3 dl2] LC2 DL} def
106 /LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
107 /LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
108 /LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
109 /LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
110 /LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
111 /LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
112 /Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
113 /Dia {stroke [] 0 setdash 2 copy vpt add M
114 hpt neg vpt neg V hpt vpt neg V
115 hpt vpt V hpt neg vpt V closepath stroke
116 Pnt} def
117 /Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
118 currentpoint stroke M
119 hpt neg vpt neg R hpt2 0 V stroke
120 } def
121 /Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
122 0 vpt2 neg V hpt2 0 V 0 vpt2 V
123 hpt2 neg 0 V closepath stroke
124 Pnt} def
125 /Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
126 hpt2 vpt2 neg V currentpoint stroke M
127 hpt2 neg 0 R hpt2 vpt2 V stroke} def
128 /TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
129 hpt neg vpt -1.62 mul V
130 hpt 2 mul 0 V
131 hpt neg vpt 1.62 mul V closepath stroke
132 Pnt} def
133 /Star {2 copy Pls Crs} def
134 /BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
135 0 vpt2 neg V hpt2 0 V 0 vpt2 V
136 hpt2 neg 0 V closepath fill} def
137 /TriUF {stroke [] 0 setdash vpt 1.12 mul add M
138 hpt neg vpt -1.62 mul V
139 hpt 2 mul 0 V
140 hpt neg vpt 1.62 mul V closepath fill} def
141 /TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
142 hpt neg vpt 1.62 mul V
143 hpt 2 mul 0 V
144 hpt neg vpt -1.62 mul V closepath stroke
145 Pnt} def
146 /TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
147 hpt neg vpt 1.62 mul V
148 hpt 2 mul 0 V
149 hpt neg vpt -1.62 mul V closepath fill} def
150 /DiaF {stroke [] 0 setdash vpt add M
151 hpt neg vpt neg V hpt vpt neg V
152 hpt vpt V hpt neg vpt V closepath fill} def
153 /Pent {stroke [] 0 setdash 2 copy gsave
154 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
155 closepath stroke grestore Pnt} def
156 /PentF {stroke [] 0 setdash gsave
157 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
158 closepath fill grestore} def
159 /Circle {stroke [] 0 setdash 2 copy
160 hpt 0 360 arc stroke Pnt} def
161 /CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
162 /C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
163 /C1 {BL [] 0 setdash 2 copy moveto
164 2 copy vpt 0 90 arc closepath fill
165 vpt 0 360 arc closepath} bind def
166 /C2 {BL [] 0 setdash 2 copy moveto
167 2 copy vpt 90 180 arc closepath fill
168 vpt 0 360 arc closepath} bind def
169 /C3 {BL [] 0 setdash 2 copy moveto
170 2 copy vpt 0 180 arc closepath fill
171 vpt 0 360 arc closepath} bind def
172 /C4 {BL [] 0 setdash 2 copy moveto
173 2 copy vpt 180 270 arc closepath fill
174 vpt 0 360 arc closepath} bind def
175 /C5 {BL [] 0 setdash 2 copy moveto
176 2 copy vpt 0 90 arc
177 2 copy moveto
178 2 copy vpt 180 270 arc closepath fill
179 vpt 0 360 arc} bind def
180 /C6 {BL [] 0 setdash 2 copy moveto
181 2 copy vpt 90 270 arc closepath fill
182 vpt 0 360 arc closepath} bind def
183 /C7 {BL [] 0 setdash 2 copy moveto
184 2 copy vpt 0 270 arc closepath fill
185 vpt 0 360 arc closepath} bind def
186 /C8 {BL [] 0 setdash 2 copy moveto
187 2 copy vpt 270 360 arc closepath fill
188 vpt 0 360 arc closepath} bind def
189 /C9 {BL [] 0 setdash 2 copy moveto
190 2 copy vpt 270 450 arc closepath fill
191 vpt 0 360 arc closepath} bind def
192 /C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
193 2 copy moveto
194 2 copy vpt 90 180 arc closepath fill
195 vpt 0 360 arc closepath} bind def
196 /C11 {BL [] 0 setdash 2 copy moveto
197 2 copy vpt 0 180 arc closepath fill
198 2 copy moveto
199 2 copy vpt 270 360 arc closepath fill
200 vpt 0 360 arc closepath} bind def
201 /C12 {BL [] 0 setdash 2 copy moveto
202 2 copy vpt 180 360 arc closepath fill
203 vpt 0 360 arc closepath} bind def
204 /C13 {BL [] 0 setdash 2 copy moveto
205 2 copy vpt 0 90 arc closepath fill
206 2 copy moveto
207 2 copy vpt 180 360 arc closepath fill
208 vpt 0 360 arc closepath} bind def
209 /C14 {BL [] 0 setdash 2 copy moveto
210 2 copy vpt 90 360 arc closepath fill
211 vpt 0 360 arc} bind def
212 /C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
213 vpt 0 360 arc closepath} bind def
214 /Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
215 neg 0 rlineto closepath} bind def
216 /Square {dup Rec} bind def
217 /Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
218 /S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
219 /S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
220 /S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
221 /S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
222 /S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
223 /S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
224 exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
225 /S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
226 /S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
227 2 copy vpt Square fill Bsquare} bind def
228 /S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
229 /S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
230 /S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
231 Bsquare} bind def
232 /S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
233 Bsquare} bind def
234 /S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
235 /S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
236 2 copy vpt Square fill Bsquare} bind def
237 /S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
238 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
239 /S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
240 /D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
241 /D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
242 /D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
243 /D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
244 /D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
245 /D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
246 /D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
247 /D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
248 /D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
249 /D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
250 /D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
251 /D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
252 /D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
253 /D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
254 /D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
255 /D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
256 /DiaE {stroke [] 0 setdash vpt add M
257 hpt neg vpt neg V hpt vpt neg V
258 hpt vpt V hpt neg vpt V closepath stroke} def
259 /BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
260 0 vpt2 neg V hpt2 0 V 0 vpt2 V
261 hpt2 neg 0 V closepath stroke} def
262 /TriUE {stroke [] 0 setdash vpt 1.12 mul add M
263 hpt neg vpt -1.62 mul V
264 hpt 2 mul 0 V
265 hpt neg vpt 1.62 mul V closepath stroke} def
266 /TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
267 hpt neg vpt 1.62 mul V
268 hpt 2 mul 0 V
269 hpt neg vpt -1.62 mul V closepath stroke} def
270 /PentE {stroke [] 0 setdash gsave
271 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
272 closepath stroke grestore} def
273 /CircE {stroke [] 0 setdash
274 hpt 0 360 arc stroke} def
275 /Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
276 /DiaW {stroke [] 0 setdash vpt add M
277 hpt neg vpt neg V hpt vpt neg V
278 hpt vpt V hpt neg vpt V Opaque stroke} def
279 /BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
280 0 vpt2 neg V hpt2 0 V 0 vpt2 V
281 hpt2 neg 0 V Opaque stroke} def
282 /TriUW {stroke [] 0 setdash vpt 1.12 mul add M
283 hpt neg vpt -1.62 mul V
284 hpt 2 mul 0 V
285 hpt neg vpt 1.62 mul V Opaque stroke} def
286 /TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
287 hpt neg vpt 1.62 mul V
288 hpt 2 mul 0 V
289 hpt neg vpt -1.62 mul V Opaque stroke} def
290 /PentW {stroke [] 0 setdash gsave
291 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
292 Opaque stroke grestore} def
293 /CircW {stroke [] 0 setdash
294 hpt 0 360 arc Opaque stroke} def
295 /BoxFill {gsave Rec 1 setgray fill grestore} def
296 /Density {
297 /Fillden exch def
298 currentrgbcolor
299 /ColB exch def /ColG exch def /ColR exch def
300 /ColR ColR Fillden mul Fillden sub 1 add def
301 /ColG ColG Fillden mul Fillden sub 1 add def
302 /ColB ColB Fillden mul Fillden sub 1 add def
303 ColR ColG ColB setrgbcolor} def
304 /BoxColFill {gsave Rec PolyFill} def
305 /PolyFill {gsave Density fill grestore grestore} def
306 /h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
307 %
308 % PostScript Level 1 Pattern Fill routine for rectangles
309 % Usage: x y w h s a XX PatternFill
310 % x,y = lower left corner of box to be filled
311 % w,h = width and height of box
312 % a = angle in degrees between lines and x-axis
313 % XX = 0/1 for no/yes cross-hatch
314 %
315 /PatternFill {gsave /PFa [ 9 2 roll ] def
316 PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
317 PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
318 gsave 1 setgray fill grestore clip
319 currentlinewidth 0.5 mul setlinewidth
320 /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
321 0 0 M PFa 5 get rotate PFs -2 div dup translate
322 0 1 PFs PFa 4 get div 1 add floor cvi
323 {PFa 4 get mul 0 M 0 PFs V} for
324 0 PFa 6 get ne {
325 0 1 PFs PFa 4 get div 1 add floor cvi
326 {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
327 } if
328 stroke grestore} def
329 %
330 /languagelevel where
331 {pop languagelevel} {1} ifelse
332 2 lt
333 {/InterpretLevel1 true def}
334 {/InterpretLevel1 Level1 def}
335 ifelse
336 %
337 % PostScript level 2 pattern fill definitions
338 %
339 /Level2PatternFill {
340 /Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
341 bind def
342 /KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
343 << Tile8x8
344 /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke}
345 >> matrix makepattern
346 /Pat1 exch def
347 << Tile8x8
348 /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
349 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
350 >> matrix makepattern
351 /Pat2 exch def
352 << Tile8x8
353 /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
354 8 8 L 8 0 L 0 0 L fill}
355 >> matrix makepattern
356 /Pat3 exch def
357 << Tile8x8
358 /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
359 0 12 M 12 0 L stroke}
360 >> matrix makepattern
361 /Pat4 exch def
362 << Tile8x8
363 /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
364 0 -4 M 12 8 L stroke}
365 >> matrix makepattern
366 /Pat5 exch def
367 << Tile8x8
368 /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
369 0 12 M 8 -4 L 4 12 M 10 0 L stroke}
370 >> matrix makepattern
371 /Pat6 exch def
372 << Tile8x8
373 /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
374 0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
375 >> matrix makepattern
376 /Pat7 exch def
377 << Tile8x8
378 /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
379 12 0 M -4 8 L 12 4 M 0 10 L stroke}
380 >> matrix makepattern
381 /Pat8 exch def
382 << Tile8x8
383 /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
384 -4 0 M 12 8 L -4 4 M 8 10 L stroke}
385 >> matrix makepattern
386 /Pat9 exch def
387 /Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
388 /Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
389 /Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
390 /Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
391 /Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
392 /Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
393 /Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
394 } def
395 %
396 %
397 %End of PostScript Level 2 code
398 %
399 /PatternBgnd {
400 TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
401 } def
402 %
403 % Substitute for Level 2 pattern fill codes with
404 % grayscale if Level 2 support is not selected.
405 %
406 /Level1PatternFill {
407 /Pattern1 {0.250 Density} bind def
408 /Pattern2 {0.500 Density} bind def
409 /Pattern3 {0.750 Density} bind def
410 /Pattern4 {0.125 Density} bind def
411 /Pattern5 {0.375 Density} bind def
412 /Pattern6 {0.625 Density} bind def
413 /Pattern7 {0.875 Density} bind def
414 } def
415 %
416 % Now test for support of Level 2 code
417 %
418 Level1 {Level1PatternFill} {Level2PatternFill} ifelse
419 %
420 /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
421 dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
422 currentdict end definefont pop
423 /MFshow {
424 { dup 5 get 3 ge
425 { 5 get 3 eq {gsave} {grestore} ifelse }
426 {dup dup 0 get findfont exch 1 get scalefont setfont
427 [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
428 get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
429 {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
430 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
431 dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
432 show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
433 pop aload pop M} ifelse }ifelse }ifelse }
434 ifelse }
435 forall} bind def
436 /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
437 {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
438 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def
439 /MLshow { currentpoint stroke M
440 0 exch R
441 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
442 /MRshow { currentpoint stroke M
443 exch dup MFwidth neg 3 -1 roll R
444 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
445 /MCshow { currentpoint stroke M
446 exch dup MFwidth -2 div 3 -1 roll R
447 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
448 /XYsave { [( ) 1 2 true false 3 ()] } bind def
449 /XYrestore { [( ) 1 2 true false 4 ()] } bind def
450 end
451 %%EndProlog
452 %%Page: 1 1
453 gnudict begin
454 gsave
455 50 50 translate
456 0.100 0.100 scale
457 90 rotate
458 0 -5040 translate
459 0 setgray
460 newpath
461 (Helvetica) findfont 100 scalefont setfont
462 1.000 UL
463 LTb
464 510 300 M
465 63 0 V
466 6457 0 R
467 -63 0 V
468 stroke
469 450 300 M
470 [ [(Helvetica) 100.0 0.0 true true 0 ( 0)]
471 ] -33.3 MRshow
472 1.000 UL
473 LTb
474 510 934 M
475 63 0 V
476 6457 0 R
477 -63 0 V
478 stroke
479 450 934 M
480 [ [(Helvetica) 100.0 0.0 true true 0 ( 50)]
481 ] -33.3 MRshow
482 1.000 UL
483 LTb
484 510 1569 M
485 63 0 V
486 6457 0 R
487 -63 0 V
488 stroke
489 450 1569 M
490 [ [(Helvetica) 100.0 0.0 true true 0 ( 100)]
491 ] -33.3 MRshow
492 1.000 UL
493 LTb
494 510 2203 M
495 63 0 V
496 6457 0 R
497 -63 0 V
498 stroke
499 450 2203 M
500 [ [(Helvetica) 100.0 0.0 true true 0 ( 150)]
501 ] -33.3 MRshow
502 1.000 UL
503 LTb
504 510 2837 M
505 63 0 V
506 6457 0 R
507 -63 0 V
508 stroke
509 450 2837 M
510 [ [(Helvetica) 100.0 0.0 true true 0 ( 200)]
511 ] -33.3 MRshow
512 1.000 UL
513 LTb
514 510 3471 M
515 63 0 V
516 6457 0 R
517 -63 0 V
518 stroke
519 450 3471 M
520 [ [(Helvetica) 100.0 0.0 true true 0 ( 250)]
521 ] -33.3 MRshow
522 1.000 UL
523 LTb
524 510 4106 M
525 63 0 V
526 6457 0 R
527 -63 0 V
528 stroke
529 450 4106 M
530 [ [(Helvetica) 100.0 0.0 true true 0 ( 300)]
531 ] -33.3 MRshow
532 1.000 UL
533 LTb
534 510 4740 M
535 63 0 V
536 6457 0 R
537 -63 0 V
538 stroke
539 450 4740 M
540 [ [(Helvetica) 100.0 0.0 true true 0 ( 350)]
541 ] -33.3 MRshow
542 1.000 UL
543 LTb
544 510 300 M
545 0 63 V
546 0 4377 R
547 0 -63 V
548 stroke
549 510 200 M
550 [ [(Helvetica) 100.0 0.0 true true 0 ( 0)]
551 ] -33.3 MCshow
552 1.000 UL
553 LTb
554 1441 300 M
555 0 63 V
556 0 4377 R
557 0 -63 V
558 stroke
559 1441 200 M
560 [ [(Helvetica) 100.0 0.0 true true 0 ( 5)]
561 ] -33.3 MCshow
562 1.000 UL
563 LTb
564 2373 300 M
565 0 63 V
566 0 4377 R
567 0 -63 V
568 stroke
569 2373 200 M
570 [ [(Helvetica) 100.0 0.0 true true 0 ( 10)]
571 ] -33.3 MCshow
572 1.000 UL
573 LTb
574 3304 300 M
575 0 63 V
576 0 4377 R
577 0 -63 V
578 stroke
579 3304 200 M
580 [ [(Helvetica) 100.0 0.0 true true 0 ( 15)]
581 ] -33.3 MCshow
582 1.000 UL
583 LTb
584 4236 300 M
585 0 63 V
586 0 4377 R
587 0 -63 V
588 stroke
589 4236 200 M
590 [ [(Helvetica) 100.0 0.0 true true 0 ( 20)]
591 ] -33.3 MCshow
592 1.000 UL
593 LTb
594 5167 300 M
595 0 63 V
596 0 4377 R
597 0 -63 V
598 stroke
599 5167 200 M
600 [ [(Helvetica) 100.0 0.0 true true 0 ( 25)]
601 ] -33.3 MCshow
602 1.000 UL
603 LTb
604 6099 300 M
605 0 63 V
606 0 4377 R
607 0 -63 V
608 stroke
609 6099 200 M
610 [ [(Helvetica) 100.0 0.0 true true 0 ( 30)]
611 ] -33.3 MCshow
612 1.000 UL
613 LTb
614 7030 300 M
615 0 63 V
616 0 4377 R
617 0 -63 V
618 stroke
619 7030 200 M
620 [ [(Helvetica) 100.0 0.0 true true 0 ( 35)]
621 ] -33.3 MCshow
622 1.000 UL
623 LTb
624 1.000 UL
625 LTb
626 510 4740 N
627 510 300 L
628 6520 0 V
629 0 4440 V
630 -6520 0 V
631 Z stroke
632 LCb setrgbcolor
633 100 2520 M
634 currentpoint gsave translate 90 rotate 0 0 moveto
635 [ [(Helvetica) 100.0 0.0 true true 0 (Processing cost per packet \(10E-6 sec\))]
636 ] -33.3 MCshow
637 grestore
638 LTb
639 LCb setrgbcolor
640 3770 50 M
641 [ [(Helvetica) 100.0 0.0 true true 0 (Number of nodes)]
642 ] -33.3 MCshow
643 LTb
644 3770 4890 M
645 [ [(Helvetica) 100.0 0.0 true true 0 (Processing cost for 1000-byte packets)]
646 ] -33.3 MCshow
647 1.000 UP
648 1.000 UL
649 LTb
650 1051 4627 M
651 [ [(Helvetica) 100.0 0.0 true true 0 (Experiment)]
652 ] -33.3 MCshow
653 1.000 UL
654 LTb
655 570 4077 N
656 0 600 V
657 963 0 V
658 0 -600 V
659 -963 0 V
660 Z stroke
661 570 4577 M
662 963 0 V
663 1.000 UP
664 stroke
665 LT0
666 LTb
667 1110 4527 M
668 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 1)]
669 ] -33.3 MRshow
670 LT0
671 1170 4527 M
672 303 0 V
673 696 442 M
674 187 43 V
675 186 92 V
676 186 82 V
677 1118 526 V
678 1863 865 V
679 696 442 Pls
680 883 485 Pls
681 1069 577 Pls
682 1255 659 Pls
683 2373 1185 Pls
684 4236 2050 Pls
685 1321 4527 Pls
686 1.000 UP
687 1.000 UL
688 LT1
689 LTb
690 1110 4427 M
691 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 2)]
692 ] -33.3 MRshow
693 LT1
694 1170 4427 M
695 303 0 V
696 696 583 M
697 187 77 V
698 186 155 V
699 186 103 V
700 1118 660 V
701 4236 2684 L
702 696 583 Crs
703 883 660 Crs
704 1069 815 Crs
705 1255 918 Crs
706 2373 1578 Crs
707 4236 2684 Crs
708 1321 4427 Crs
709 1.000 UP
710 1.000 UL
711 LT2
712 LTb
713 1110 4327 M
714 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 3)]
715 ] -33.3 MRshow
716 LT2
717 1170 4327 M
718 303 0 V
719 696 521 M
720 883 726 L
721 186 189 V
722 186 188 V
723 2373 2361 L
724 4236 4119 L
725 696 521 Star
726 883 726 Star
727 1069 915 Star
728 1255 1103 Star
729 2373 2361 Star
730 4236 4119 Star
731 1321 4327 Star
732 1.000 UP
733 1.000 UL
734 LT3
735 LTb
736 1110 4227 M
737 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 4)]
738 ] -33.3 MRshow
739 LT3
740 1170 4227 M
741 303 0 V
742 696 456 M
743 187 23 V
744 186 30 V
745 186 28 V
746 373 53 V
747 372 53 V
748 745 129 V
749 746 108 V
750 2980 460 V
751 559 128 V
752 696 456 Box
753 883 479 Box
754 1069 509 Box
755 1255 537 Box
756 1628 590 Box
757 2000 643 Box
758 2745 772 Box
759 3491 880 Box
760 6471 1340 Box
761 1321 4227 Box
762 1.000 UP
763 1.000 UL
764 LT4
765 LTb
766 1110 4127 M
767 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 4bis)]
768 ] -33.3 MRshow
769 LT4
770 1170 4127 M
771 303 0 V
772 696 457 M
773 187 67 V
774 186 69 V
775 186 60 V
776 373 146 V
777 372 99 V
778 745 248 V
779 746 256 V
780 2980 957 V
781 559 198 V
782 696 457 BoxF
783 883 524 BoxF
784 1069 593 BoxF
785 1255 653 BoxF
786 1628 799 BoxF
787 2000 898 BoxF
788 2745 1146 BoxF
789 3491 1402 BoxF
790 6471 2359 BoxF
791 1321 4127 BoxF
792 1.000 UL
793 LTb
794 510 4740 N
795 510 300 L
796 6520 0 V
797 0 4440 V
798 -6520 0 V
799 Z stroke
800 1.000 UP
801 1.000 UL
802 LTb
803 stroke
804 grestore
805 end
806 showpage
807 %%Trailer
808 %%DocumentFonts: Helvetica
809 %%Pages: 1
+0
-13
benchmarks/preliminar/comparison-bypkts.gnuplot less more
0 set terminal postscript colour enhanced landscape lw 1 10
1 set key box left top width 1 title 'Experiment'
2 set xlabel 'Payload size (UDP packet)'
3 set ylabel 'Processing cost per packet (10E-6 sec)'
4 set title 'Processing cost for a 4-node topology'
5 set xrange [0:1500]
6 plot \
7 'results-simu.txt' index 0 every ::24::31 using 1:3 title "Exp 1" with linespoints, \
8 'results-simu.txt' index 1 every ::24::31 using 1:3 title "Exp 2" with linespoints, \
9 'results-simu.txt' index 3 every ::24::31 using 1:3 title "Exp 3" with linespoints, \
10 'results.txt' index 0 every ::39::51 using ($4-42):($10/$3) title "Exp 4" with linespoints, \
11 'results.txt' index 1 every ::39::51 using ($4-42):($10/$3) title "Exp 4bis" with linespoints
12
+0
-826
benchmarks/preliminar/comparison-bypkts.ps less more
0 %!PS-Adobe-2.0
1 %%Creator: gnuplot 4.2 patchlevel 3
2 %%CreationDate: Mon Aug 16 13:02:31 2010
3 %%DocumentFonts: (atend)
4 %%BoundingBox: 50 50 554 770
5 %%Orientation: Landscape
6 %%Pages: (atend)
7 %%EndComments
8 %%BeginProlog
9 /gnudict 256 dict def
10 gnudict begin
11 %
12 % The following 6 true/false flags may be edited by hand if required
13 % The unit line width may also be changed
14 %
15 /Color true def
16 /Blacktext false def
17 /Solid false def
18 /Dashlength 1 def
19 /Landscape true def
20 /Level1 false def
21 /Rounded false def
22 /TransparentPatterns false def
23 /gnulinewidth 5.000 def
24 /userlinewidth gnulinewidth def
25 %
26 /vshift -33 def
27 /dl1 {
28 10.0 Dashlength mul mul
29 Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if
30 } def
31 /dl2 {
32 10.0 Dashlength mul mul
33 Rounded { currentlinewidth 0.75 mul add } if
34 } def
35 /hpt_ 31.5 def
36 /vpt_ 31.5 def
37 /hpt hpt_ def
38 /vpt vpt_ def
39 Level1 {} {
40 /SDict 10 dict def
41 systemdict /pdfmark known not {
42 userdict /pdfmark systemdict /cleartomark get put
43 } if
44 SDict begin [
45 /Title ()
46 /Subject (gnuplot plot)
47 /Creator (gnuplot 4.2 patchlevel 3 )
48 /Author (Martin_Hernan Ferrari,L133,2417)
49 % /Producer (gnuplot)
50 % /Keywords ()
51 /CreationDate (Mon Aug 16 13:02:31 2010)
52 /DOCINFO pdfmark
53 end
54 } ifelse
55 %
56 % Gnuplot Prolog Version 4.2 (August 2006)
57 %
58 /M {moveto} bind def
59 /L {lineto} bind def
60 /R {rmoveto} bind def
61 /V {rlineto} bind def
62 /N {newpath moveto} bind def
63 /Z {closepath} bind def
64 /C {setrgbcolor} bind def
65 /f {rlineto fill} bind def
66 /vpt2 vpt 2 mul def
67 /hpt2 hpt 2 mul def
68 /Lshow {currentpoint stroke M 0 vshift R
69 Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
70 /Rshow {currentpoint stroke M dup stringwidth pop neg vshift R
71 Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
72 /Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R
73 Blacktext {gsave 0 setgray show grestore} {show} ifelse} def
74 /UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
75 /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def
76 /DL {Color {setrgbcolor Solid {pop []} if 0 setdash}
77 {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def
78 /BL {stroke userlinewidth 2 mul setlinewidth
79 Rounded {1 setlinejoin 1 setlinecap} if} def
80 /AL {stroke userlinewidth 2 div setlinewidth
81 Rounded {1 setlinejoin 1 setlinecap} if} def
82 /UL {dup gnulinewidth mul /userlinewidth exch def
83 dup 1 lt {pop 1} if 10 mul /udl exch def} def
84 /PL {stroke userlinewidth setlinewidth
85 Rounded {1 setlinejoin 1 setlinecap} if} def
86 % Default Line colors
87 /LCw {1 1 1} def
88 /LCb {0 0 0} def
89 /LCa {0 0 0} def
90 /LC0 {1 0 0} def
91 /LC1 {0 1 0} def
92 /LC2 {0 0 1} def
93 /LC3 {1 0 1} def
94 /LC4 {0 1 1} def
95 /LC5 {1 1 0} def
96 /LC6 {0 0 0} def
97 /LC7 {1 0.3 0} def
98 /LC8 {0.5 0.5 0.5} def
99 % Default Line Types
100 /LTw {PL [] 1 setgray} def
101 /LTb {BL [] LCb DL} def
102 /LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def
103 /LT0 {PL [] LC0 DL} def
104 /LT1 {PL [4 dl1 2 dl2] LC1 DL} def
105 /LT2 {PL [2 dl1 3 dl2] LC2 DL} def
106 /LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def
107 /LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def
108 /LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def
109 /LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def
110 /LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def
111 /LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def
112 /Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def
113 /Dia {stroke [] 0 setdash 2 copy vpt add M
114 hpt neg vpt neg V hpt vpt neg V
115 hpt vpt V hpt neg vpt V closepath stroke
116 Pnt} def
117 /Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V
118 currentpoint stroke M
119 hpt neg vpt neg R hpt2 0 V stroke
120 } def
121 /Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
122 0 vpt2 neg V hpt2 0 V 0 vpt2 V
123 hpt2 neg 0 V closepath stroke
124 Pnt} def
125 /Crs {stroke [] 0 setdash exch hpt sub exch vpt add M
126 hpt2 vpt2 neg V currentpoint stroke M
127 hpt2 neg 0 R hpt2 vpt2 V stroke} def
128 /TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M
129 hpt neg vpt -1.62 mul V
130 hpt 2 mul 0 V
131 hpt neg vpt 1.62 mul V closepath stroke
132 Pnt} def
133 /Star {2 copy Pls Crs} def
134 /BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M
135 0 vpt2 neg V hpt2 0 V 0 vpt2 V
136 hpt2 neg 0 V closepath fill} def
137 /TriUF {stroke [] 0 setdash vpt 1.12 mul add M
138 hpt neg vpt -1.62 mul V
139 hpt 2 mul 0 V
140 hpt neg vpt 1.62 mul V closepath fill} def
141 /TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
142 hpt neg vpt 1.62 mul V
143 hpt 2 mul 0 V
144 hpt neg vpt -1.62 mul V closepath stroke
145 Pnt} def
146 /TriDF {stroke [] 0 setdash vpt 1.12 mul sub M
147 hpt neg vpt 1.62 mul V
148 hpt 2 mul 0 V
149 hpt neg vpt -1.62 mul V closepath fill} def
150 /DiaF {stroke [] 0 setdash vpt add M
151 hpt neg vpt neg V hpt vpt neg V
152 hpt vpt V hpt neg vpt V closepath fill} def
153 /Pent {stroke [] 0 setdash 2 copy gsave
154 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
155 closepath stroke grestore Pnt} def
156 /PentF {stroke [] 0 setdash gsave
157 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
158 closepath fill grestore} def
159 /Circle {stroke [] 0 setdash 2 copy
160 hpt 0 360 arc stroke Pnt} def
161 /CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def
162 /C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def
163 /C1 {BL [] 0 setdash 2 copy moveto
164 2 copy vpt 0 90 arc closepath fill
165 vpt 0 360 arc closepath} bind def
166 /C2 {BL [] 0 setdash 2 copy moveto
167 2 copy vpt 90 180 arc closepath fill
168 vpt 0 360 arc closepath} bind def
169 /C3 {BL [] 0 setdash 2 copy moveto
170 2 copy vpt 0 180 arc closepath fill
171 vpt 0 360 arc closepath} bind def
172 /C4 {BL [] 0 setdash 2 copy moveto
173 2 copy vpt 180 270 arc closepath fill
174 vpt 0 360 arc closepath} bind def
175 /C5 {BL [] 0 setdash 2 copy moveto
176 2 copy vpt 0 90 arc
177 2 copy moveto
178 2 copy vpt 180 270 arc closepath fill
179 vpt 0 360 arc} bind def
180 /C6 {BL [] 0 setdash 2 copy moveto
181 2 copy vpt 90 270 arc closepath fill
182 vpt 0 360 arc closepath} bind def
183 /C7 {BL [] 0 setdash 2 copy moveto
184 2 copy vpt 0 270 arc closepath fill
185 vpt 0 360 arc closepath} bind def
186 /C8 {BL [] 0 setdash 2 copy moveto
187 2 copy vpt 270 360 arc closepath fill
188 vpt 0 360 arc closepath} bind def
189 /C9 {BL [] 0 setdash 2 copy moveto
190 2 copy vpt 270 450 arc closepath fill
191 vpt 0 360 arc closepath} bind def
192 /C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
193 2 copy moveto
194 2 copy vpt 90 180 arc closepath fill
195 vpt 0 360 arc closepath} bind def
196 /C11 {BL [] 0 setdash 2 copy moveto
197 2 copy vpt 0 180 arc closepath fill
198 2 copy moveto
199 2 copy vpt 270 360 arc closepath fill
200 vpt 0 360 arc closepath} bind def
201 /C12 {BL [] 0 setdash 2 copy moveto
202 2 copy vpt 180 360 arc closepath fill
203 vpt 0 360 arc closepath} bind def
204 /C13 {BL [] 0 setdash 2 copy moveto
205 2 copy vpt 0 90 arc closepath fill
206 2 copy moveto
207 2 copy vpt 180 360 arc closepath fill
208 vpt 0 360 arc closepath} bind def
209 /C14 {BL [] 0 setdash 2 copy moveto
210 2 copy vpt 90 360 arc closepath fill
211 vpt 0 360 arc} bind def
212 /C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
213 vpt 0 360 arc closepath} bind def
214 /Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
215 neg 0 rlineto closepath} bind def
216 /Square {dup Rec} bind def
217 /Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def
218 /S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def
219 /S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def
220 /S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
221 /S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def
222 /S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
223 /S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill
224 exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def
225 /S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def
226 /S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
227 2 copy vpt Square fill Bsquare} bind def
228 /S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def
229 /S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def
230 /S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
231 Bsquare} bind def
232 /S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
233 Bsquare} bind def
234 /S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def
235 /S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
236 2 copy vpt Square fill Bsquare} bind def
237 /S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
238 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def
239 /S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def
240 /D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def
241 /D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def
242 /D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def
243 /D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def
244 /D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def
245 /D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def
246 /D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def
247 /D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def
248 /D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def
249 /D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def
250 /D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def
251 /D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def
252 /D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def
253 /D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def
254 /D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def
255 /D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def
256 /DiaE {stroke [] 0 setdash vpt add M
257 hpt neg vpt neg V hpt vpt neg V
258 hpt vpt V hpt neg vpt V closepath stroke} def
259 /BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M
260 0 vpt2 neg V hpt2 0 V 0 vpt2 V
261 hpt2 neg 0 V closepath stroke} def
262 /TriUE {stroke [] 0 setdash vpt 1.12 mul add M
263 hpt neg vpt -1.62 mul V
264 hpt 2 mul 0 V
265 hpt neg vpt 1.62 mul V closepath stroke} def
266 /TriDE {stroke [] 0 setdash vpt 1.12 mul sub M
267 hpt neg vpt 1.62 mul V
268 hpt 2 mul 0 V
269 hpt neg vpt -1.62 mul V closepath stroke} def
270 /PentE {stroke [] 0 setdash gsave
271 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
272 closepath stroke grestore} def
273 /CircE {stroke [] 0 setdash
274 hpt 0 360 arc stroke} def
275 /Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def
276 /DiaW {stroke [] 0 setdash vpt add M
277 hpt neg vpt neg V hpt vpt neg V
278 hpt vpt V hpt neg vpt V Opaque stroke} def
279 /BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M
280 0 vpt2 neg V hpt2 0 V 0 vpt2 V
281 hpt2 neg 0 V Opaque stroke} def
282 /TriUW {stroke [] 0 setdash vpt 1.12 mul add M
283 hpt neg vpt -1.62 mul V
284 hpt 2 mul 0 V
285 hpt neg vpt 1.62 mul V Opaque stroke} def
286 /TriDW {stroke [] 0 setdash vpt 1.12 mul sub M
287 hpt neg vpt 1.62 mul V
288 hpt 2 mul 0 V
289 hpt neg vpt -1.62 mul V Opaque stroke} def
290 /PentW {stroke [] 0 setdash gsave
291 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
292 Opaque stroke grestore} def
293 /CircW {stroke [] 0 setdash
294 hpt 0 360 arc Opaque stroke} def
295 /BoxFill {gsave Rec 1 setgray fill grestore} def
296 /Density {
297 /Fillden exch def
298 currentrgbcolor
299 /ColB exch def /ColG exch def /ColR exch def
300 /ColR ColR Fillden mul Fillden sub 1 add def
301 /ColG ColG Fillden mul Fillden sub 1 add def
302 /ColB ColB Fillden mul Fillden sub 1 add def
303 ColR ColG ColB setrgbcolor} def
304 /BoxColFill {gsave Rec PolyFill} def
305 /PolyFill {gsave Density fill grestore grestore} def
306 /h {rlineto rlineto rlineto gsave closepath fill grestore} bind def
307 %
308 % PostScript Level 1 Pattern Fill routine for rectangles
309 % Usage: x y w h s a XX PatternFill
310 % x,y = lower left corner of box to be filled
311 % w,h = width and height of box
312 % a = angle in degrees between lines and x-axis
313 % XX = 0/1 for no/yes cross-hatch
314 %
315 /PatternFill {gsave /PFa [ 9 2 roll ] def
316 PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate
317 PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec
318 gsave 1 setgray fill grestore clip
319 currentlinewidth 0.5 mul setlinewidth
320 /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def
321 0 0 M PFa 5 get rotate PFs -2 div dup translate
322 0 1 PFs PFa 4 get div 1 add floor cvi
323 {PFa 4 get mul 0 M 0 PFs V} for
324 0 PFa 6 get ne {
325 0 1 PFs PFa 4 get div 1 add floor cvi
326 {PFa 4 get mul 0 2 1 roll M PFs 0 V} for
327 } if
328 stroke grestore} def
329 %
330 /languagelevel where
331 {pop languagelevel} {1} ifelse
332 2 lt
333 {/InterpretLevel1 true def}
334 {/InterpretLevel1 Level1 def}
335 ifelse
336 %
337 % PostScript level 2 pattern fill definitions
338 %
339 /Level2PatternFill {
340 /Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8}
341 bind def
342 /KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def
343 << Tile8x8
344 /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke}
345 >> matrix makepattern
346 /Pat1 exch def
347 << Tile8x8
348 /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke
349 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke}
350 >> matrix makepattern
351 /Pat2 exch def
352 << Tile8x8
353 /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L
354 8 8 L 8 0 L 0 0 L fill}
355 >> matrix makepattern
356 /Pat3 exch def
357 << Tile8x8
358 /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L
359 0 12 M 12 0 L stroke}
360 >> matrix makepattern
361 /Pat4 exch def
362 << Tile8x8
363 /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L
364 0 -4 M 12 8 L stroke}
365 >> matrix makepattern
366 /Pat5 exch def
367 << Tile8x8
368 /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L
369 0 12 M 8 -4 L 4 12 M 10 0 L stroke}
370 >> matrix makepattern
371 /Pat6 exch def
372 << Tile8x8
373 /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L
374 0 -4 M 8 12 L 4 -4 M 10 8 L stroke}
375 >> matrix makepattern
376 /Pat7 exch def
377 << Tile8x8
378 /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L
379 12 0 M -4 8 L 12 4 M 0 10 L stroke}
380 >> matrix makepattern
381 /Pat8 exch def
382 << Tile8x8
383 /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L
384 -4 0 M 12 8 L -4 4 M 8 10 L stroke}
385 >> matrix makepattern
386 /Pat9 exch def
387 /Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def
388 /Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def
389 /Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def
390 /Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def
391 /Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def
392 /Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def
393 /Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def
394 } def
395 %
396 %
397 %End of PostScript Level 2 code
398 %
399 /PatternBgnd {
400 TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse
401 } def
402 %
403 % Substitute for Level 2 pattern fill codes with
404 % grayscale if Level 2 support is not selected.
405 %
406 /Level1PatternFill {
407 /Pattern1 {0.250 Density} bind def
408 /Pattern2 {0.500 Density} bind def
409 /Pattern3 {0.750 Density} bind def
410 /Pattern4 {0.125 Density} bind def
411 /Pattern5 {0.375 Density} bind def
412 /Pattern6 {0.625 Density} bind def
413 /Pattern7 {0.875 Density} bind def
414 } def
415 %
416 % Now test for support of Level 2 code
417 %
418 Level1 {Level1PatternFill} {Level2PatternFill} ifelse
419 %
420 /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont
421 dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall
422 currentdict end definefont pop
423 /MFshow {
424 { dup 5 get 3 ge
425 { 5 get 3 eq {gsave} {grestore} ifelse }
426 {dup dup 0 get findfont exch 1 get scalefont setfont
427 [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6
428 get exch 4 get {show} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq
429 {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5
430 get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div
431 dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get
432 show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop
433 pop aload pop M} ifelse }ifelse }ifelse }
434 ifelse }
435 forall} bind def
436 /MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse }
437 {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont
438 6 get stringwidth pop add} {pop} ifelse} ifelse} forall} bind def
439 /MLshow { currentpoint stroke M
440 0 exch R
441 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
442 /MRshow { currentpoint stroke M
443 exch dup MFwidth neg 3 -1 roll R
444 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
445 /MCshow { currentpoint stroke M
446 exch dup MFwidth -2 div 3 -1 roll R
447 Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def
448 /XYsave { [( ) 1 2 true false 3 ()] } bind def
449 /XYrestore { [( ) 1 2 true false 4 ()] } bind def
450 end
451 %%EndProlog
452 %%Page: 1 1
453 gnudict begin
454 gsave
455 50 50 translate
456 0.100 0.100 scale
457 90 rotate
458 0 -5040 translate
459 0 setgray
460 newpath
461 (Helvetica) findfont 100 scalefont setfont
462 1.000 UL
463 LTb
464 450 300 M
465 63 0 V
466 6517 0 R
467 -63 0 V
468 stroke
469 390 300 M
470 [ [(Helvetica) 100.0 0.0 true true 0 ( 10)]
471 ] -33.3 MRshow
472 1.000 UL
473 LTb
474 450 1040 M
475 63 0 V
476 6517 0 R
477 -63 0 V
478 stroke
479 390 1040 M
480 [ [(Helvetica) 100.0 0.0 true true 0 ( 20)]
481 ] -33.3 MRshow
482 1.000 UL
483 LTb
484 450 1780 M
485 63 0 V
486 6517 0 R
487 -63 0 V
488 stroke
489 390 1780 M
490 [ [(Helvetica) 100.0 0.0 true true 0 ( 30)]
491 ] -33.3 MRshow
492 1.000 UL
493 LTb
494 450 2520 M
495 63 0 V
496 6517 0 R
497 -63 0 V
498 stroke
499 390 2520 M
500 [ [(Helvetica) 100.0 0.0 true true 0 ( 40)]
501 ] -33.3 MRshow
502 1.000 UL
503 LTb
504 450 3260 M
505 63 0 V
506 6517 0 R
507 -63 0 V
508 stroke
509 390 3260 M
510 [ [(Helvetica) 100.0 0.0 true true 0 ( 50)]
511 ] -33.3 MRshow
512 1.000 UL
513 LTb
514 450 4000 M
515 63 0 V
516 6517 0 R
517 -63 0 V
518 stroke
519 390 4000 M
520 [ [(Helvetica) 100.0 0.0 true true 0 ( 60)]
521 ] -33.3 MRshow
522 1.000 UL
523 LTb
524 450 4740 M
525 63 0 V
526 6517 0 R
527 -63 0 V
528 stroke
529 390 4740 M
530 [ [(Helvetica) 100.0 0.0 true true 0 ( 70)]
531 ] -33.3 MRshow
532 1.000 UL
533 LTb
534 450 300 M
535 0 63 V
536 0 4377 R
537 0 -63 V
538 stroke
539 450 200 M
540 [ [(Helvetica) 100.0 0.0 true true 0 ( 0)]
541 ] -33.3 MCshow
542 1.000 UL
543 LTb
544 1327 300 M
545 0 63 V
546 0 4377 R
547 0 -63 V
548 stroke
549 1327 200 M
550 [ [(Helvetica) 100.0 0.0 true true 0 ( 200)]
551 ] -33.3 MCshow
552 1.000 UL
553 LTb
554 2205 300 M
555 0 63 V
556 0 4377 R
557 0 -63 V
558 stroke
559 2205 200 M
560 [ [(Helvetica) 100.0 0.0 true true 0 ( 400)]
561 ] -33.3 MCshow
562 1.000 UL
563 LTb
564 3082 300 M
565 0 63 V
566 0 4377 R
567 0 -63 V
568 stroke
569 3082 200 M
570 [ [(Helvetica) 100.0 0.0 true true 0 ( 600)]
571 ] -33.3 MCshow
572 1.000 UL
573 LTb
574 3959 300 M
575 0 63 V
576 0 4377 R
577 0 -63 V
578 stroke
579 3959 200 M
580 [ [(Helvetica) 100.0 0.0 true true 0 ( 800)]
581 ] -33.3 MCshow
582 1.000 UL
583 LTb
584 4837 300 M
585 0 63 V
586 0 4377 R
587 0 -63 V
588 stroke
589 4837 200 M
590 [ [(Helvetica) 100.0 0.0 true true 0 ( 1000)]
591 ] -33.3 MCshow
592 1.000 UL
593 LTb
594 5714 300 M
595 0 63 V
596 0 4377 R
597 0 -63 V
598 stroke
599 5714 200 M
600 [ [(Helvetica) 100.0 0.0 true true 0 ( 1200)]
601 ] -33.3 MCshow
602 1.000 UL
603 LTb
604 6591 300 M
605 0 63 V
606 0 4377 R
607 0 -63 V
608 stroke
609 6591 200 M
610 [ [(Helvetica) 100.0 0.0 true true 0 ( 1400)]
611 ] -33.3 MCshow
612 1.000 UL
613 LTb
614 1.000 UL
615 LTb
616 450 4740 N
617 450 300 L
618 6580 0 V
619 0 4440 V
620 -6580 0 V
621 Z stroke
622 LCb setrgbcolor
623 100 2520 M
624 currentpoint gsave translate 90 rotate 0 0 moveto
625 [ [(Helvetica) 100.0 0.0 true true 0 (Processing cost per packet \(10E-6 sec\))]
626 ] -33.3 MCshow
627 grestore
628 LTb
629 LCb setrgbcolor
630 3740 50 M
631 [ [(Helvetica) 100.0 0.0 true true 0 (Payload size \(UDP packet\))]
632 ] -33.3 MCshow
633 LTb
634 3740 4890 M
635 [ [(Helvetica) 100.0 0.0 true true 0 (Processing cost for a 4-node topology)]
636 ] -33.3 MCshow
637 1.000 UP
638 1.000 UL
639 LTb
640 991 4627 M
641 [ [(Helvetica) 100.0 0.0 true true 0 (Experiment)]
642 ] -33.3 MCshow
643 1.000 UL
644 LTb
645 510 4077 N
646 0 600 V
647 963 0 V
648 0 -600 V
649 -963 0 V
650 Z stroke
651 510 4577 M
652 963 0 V
653 1.000 UP
654 stroke
655 LT0
656 LTb
657 1050 4527 M
658 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 1)]
659 ] -33.3 MRshow
660 LT0
661 1110 4527 M
662 303 0 V
663 6591 1727 M
664 4837 1653 L
665 3082 1640 L
666 -877 -31 V
667 889 1587 L
668 -88 -21 V
669 582 1780 L
670 -88 788 V
671 6591 1727 Pls
672 4837 1653 Pls
673 3082 1640 Pls
674 2205 1609 Pls
675 889 1587 Pls
676 801 1566 Pls
677 582 1780 Pls
678 494 2568 Pls
679 1261 4527 Pls
680 1.000 UP
681 1.000 UL
682 LT1
683 LTb
684 1050 4427 M
685 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 2)]
686 ] -33.3 MRshow
687 LT1
688 1110 4427 M
689 303 0 V
690 6591 3321 M
691 4837 3166 L
692 -1755 70 V
693 2205 2635 L
694 889 2623 L
695 801 2523 L
696 582 2485 L
697 -88 778 V
698 6591 3321 Crs
699 4837 3166 Crs
700 3082 3236 Crs
701 2205 2635 Crs
702 889 2623 Crs
703 801 2523 Crs
704 582 2485 Crs
705 494 3263 Crs
706 1261 4427 Crs
707 1.000 UP
708 1.000 UL
709 LT2
710 LTb
711 1050 4327 M
712 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 3)]
713 ] -33.3 MRshow
714 LT2
715 1110 4327 M
716 303 0 V
717 5178 364 R
718 4837 4466 L
719 3082 4124 L
720 2205 3891 L
721 889 3743 L
722 801 3618 L
723 582 3562 L
724 -88 787 V
725 6591 4691 Star
726 4837 4466 Star
727 3082 4124 Star
728 2205 3891 Star
729 889 3743 Star
730 801 3618 Star
731 582 3562 Star
732 494 4349 Star
733 1261 4327 Star
734 1.000 UP
735 1.000 UL
736 LT3
737 LTb
738 1050 4227 M
739 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 4)]
740 ] -33.3 MRshow
741 LT3
742 1110 4227 M
743 303 0 V
744 450 871 M
745 4 44 V
746 5 -25 V
747 9 6 V
748 17 67 V
749 35 -75 V
750 70 13 V
751 731 886 L
752 280 12 V
753 562 5 V
754 1123 22 V
755 2246 17 V
756 1904 48 V
757 450 871 Box
758 454 915 Box
759 459 890 Box
760 468 896 Box
761 485 963 Box
762 520 888 Box
763 590 901 Box
764 731 886 Box
765 1011 898 Box
766 1573 903 Box
767 2696 925 Box
768 4942 942 Box
769 6846 990 Box
770 1261 4227 Box
771 1.000 UP
772 1.000 UL
773 LT4
774 LTb
775 1050 4127 M
776 [ [(Helvetica) 100.0 0.0 true true 0 (Exp 4bis)]
777 ] -33.3 MRshow
778 LT4
779 1110 4127 M
780 303 0 V
781 450 1518 M
782 4 20 V
783 5 9 V
784 9 3 V
785 17 -10 V
786 35 5 V
787 70 -4 V
788 141 8 V
789 280 2 V
790 562 15 V
791 1123 1 V
792 2246 50 V
793 1904 12 V
794 450 1518 BoxF
795 454 1538 BoxF
796 459 1547 BoxF
797 468 1550 BoxF
798 485 1540 BoxF
799 520 1545 BoxF
800 590 1541 BoxF
801 731 1549 BoxF
802 1011 1551 BoxF
803 1573 1566 BoxF
804 2696 1567 BoxF
805 4942 1617 BoxF
806 6846 1629 BoxF
807 1261 4127 BoxF
808 1.000 UL
809 LTb
810 450 4740 N
811 450 300 L
812 6580 0 V
813 0 4440 V
814 -6580 0 V
815 Z stroke
816 1.000 UP
817 1.000 UL
818 LTb
819 stroke
820 grestore
821 end
822 showpage
823 %%Trailer
824 %%DocumentFonts: Helvetica
825 %%Pages: 1
+0
-261
benchmarks/preliminar/linear-raw-throughput.txt less more
0 Nodes,Bytes received,Packets received,Packet size,Payload size,Errors,Min delay,Average delay,Max delay,Jitter,Total time,Link-level bandwidth,Command line
1 1,35958426,856153,42,0,0,-1,0,0,,10000007,28766720,--format=csv -n 1 -s 42 --use-p2p
2 1,36061242,858601,42,0,0,-1,0,0,,10000004,28848982,--format=csv -n 1 -s 42
3 1,36350867,845369,43,1,0,-1,0,0,,10000009,29080667,--format=csv -n 1 -s 43 --use-p2p
4 1,36353920,845440,43,1,0,-1,0,0,,10000007,29083115,--format=csv -n 1 -s 43
5 1,37097060,843115,44,2,0,-1,0,0,,10000005,29677633,--format=csv -n 1 -s 44 --use-p2p
6 1,36964840,840110,44,2,0,-1,0,0,,10000003,29571863,--format=csv -n 1 -s 44
7 1,38149180,829330,46,4,0,-1,0,0,,10000006,30519325,--format=csv -n 1 -s 46 --use-p2p
8 1,38546988,837978,46,4,0,-1,0,0,,10000004,30837578,--format=csv -n 1 -s 46
9 1,41846900,836938,50,8,0,8,8,672,,10000006,33477499,--format=csv -n 1 -s 50 --use-p2p
10 1,41930800,838616,50,8,0,8,8,646,,10000010,33544606,--format=csv -n 1 -s 50
11 1,48969342,844299,58,16,0,8,8,237,,10000002,39175465,--format=csv -n 1 -s 58 --use-p2p
12 1,48604464,838008,58,16,0,8,8,669,,10000001,38883567,--format=csv -n 1 -s 58
13 1,61989578,837697,74,32,0,8,8,644,,10000009,49591617,--format=csv -n 1 -s 74 --use-p2p
14 1,62043820,838430,74,32,0,8,8,197,,10000006,49635026,--format=csv -n 1 -s 74
15 1,89067030,840255,106,64,0,8,8,198,,10000009,71253559,--format=csv -n 1 -s 106 --use-p2p
16 1,88529822,835187,106,64,0,8,8,643,,10000008,70823800,--format=csv -n 1 -s 106
17 1,141704690,833557,170,128,0,8,8,641,,10000002,113363729,--format=csv -n 1 -s 170 --use-p2p
18 1,141857690,834457,170,128,0,8,8,204,,10000005,113486095,--format=csv -n 1 -s 170
19 1,249269550,836475,298,256,0,8,8,197,,10000011,199415420,--format=csv -n 1 -s 298 --use-p2p
20 1,248590706,834197,298,256,0,8,8,199,,10000005,198872465,--format=csv -n 1 -s 298
21 1,454933720,821180,554,512,0,8,9,199,,10000010,363946612,--format=csv -n 1 -s 554 --use-p2p
22 1,457866596,826474,554,512,0,8,8,198,,10000006,366293057,--format=csv -n 1 -s 554
23 1,865598396,812006,1066,1024,0,8,9,269,,10000005,692478370,--format=csv -n 1 -s 1066 --use-p2p
24 1,859640522,806417,1066,1024,0,8,9,658,,10000004,687712142,--format=csv -n 1 -s 1066
25 1,1189230000,792820,1500,1458,0,9,9,199,,10000004,951383619,--format=csv -n 1 -s 1500 --use-p2p
26 1,1191405000,794270,1500,1458,0,9,9,519,,10000010,953123046,--format=csv -n 1 -s 1500
27 2,32702628,778634,42,0,0,-1,0,0,,10000006,26162086,--format=csv -n 2 -s 42 --use-p2p
28 2,25154388,598914,42,0,0,-1,0,0,,10000004,20123502,--format=csv -n 2 -s 42
29 2,32755207,761749,43,1,0,-1,0,0,,10000003,26204157,--format=csv -n 2 -s 43 --use-p2p
30 2,25566725,594575,43,1,0,-1,0,0,,10000004,20453371,--format=csv -n 2 -s 43
31 2,33459712,760448,44,2,0,-1,0,0,,10000006,26767753,--format=csv -n 2 -s 44 --use-p2p
32 2,26056624,592196,44,2,0,-1,0,0,,10000002,20845295,--format=csv -n 2 -s 44
33 2,34714682,754667,46,4,0,-1,0,0,,10000007,27771726,--format=csv -n 2 -s 46 --use-p2p
34 2,27253114,592459,46,4,0,-1,0,0,,10000011,21802467,--format=csv -n 2 -s 46
35 2,37886350,757727,50,8,0,9,9,680,,10000002,30309073,--format=csv -n 2 -s 50 --use-p2p
36 2,29665550,593311,50,8,0,13,13,325,,10000011,23732413,--format=csv -n 2 -s 50
37 2,44028786,759117,58,16,0,9,10,207,,10000006,35223007,--format=csv -n 2 -s 58 --use-p2p
38 2,34419984,593448,58,16,0,13,13,619,,10000015,27535945,--format=csv -n 2 -s 58
39 2,56526676,763874,74,32,0,9,9,211,,10000000,45221340,--format=csv -n 2 -s 74 --use-p2p
40 2,44018826,594849,74,32,0,13,13,290,,10000011,35215022,--format=csv -n 2 -s 74
41 2,80488026,759321,106,64,0,9,9,835,,10000003,64390401,--format=csv -n 2 -s 106 --use-p2p
42 2,62710554,591609,106,64,0,13,13,608,,10000007,50168408,--format=csv -n 2 -s 106
43 2,128596670,756451,170,128,0,9,10,2479,,10000006,102877274,--format=csv -n 2 -s 170 --use-p2p
44 2,100280960,589888,170,128,0,13,13,609,,10000000,80224768,--format=csv -n 2 -s 170
45 2,222942144,748128,298,256,0,9,10,665,,10000008,178353572,--format=csv -n 2 -s 298 --use-p2p
46 2,174893518,586891,298,256,0,13,13,205,,10000005,139914744,--format=csv -n 2 -s 298
47 2,413247436,745934,554,512,0,9,10,3599,,10000011,330597585,--format=csv -n 2 -s 554 --use-p2p
48 2,322896130,582845,554,512,0,13,13,3022,,10000008,258316697,--format=csv -n 2 -s 554
49 2,754548912,707832,1066,1024,0,10,10,2914,,10000010,603638525,--format=csv -n 2 -s 1066 --use-p2p
50 2,603938036,566546,1066,1024,0,13,14,1565,,10000013,483149800,--format=csv -n 2 -s 1066
51 2,1072513500,715009,1500,1458,0,10,10,2476,,10000011,858009856,--format=csv -n 2 -s 1500 --use-p2p
52 2,837000000,558000,1500,1458,0,14,14,610,,10000008,669599464,--format=csv -n 2 -s 1500
53 3,26998440,642820,42,0,0,-1,0,0,,10000009,21598732,--format=csv -n 3 -s 42 --use-p2p
54 3,19445160,462980,42,0,0,-1,0,0,,10000001,15556126,--format=csv -n 3 -s 42
55 3,27304828,634996,43,1,0,-1,0,0,,10000004,21843853,--format=csv -n 3 -s 43 --use-p2p
56 3,19648205,456935,43,1,0,-1,0,0,,10000008,15718551,--format=csv -n 3 -s 43
57 3,27947876,635179,44,2,0,-1,0,0,,10000011,22358276,--format=csv -n 3 -s 44 --use-p2p
58 3,19805412,450123,44,2,0,-1,0,0,,10000001,15844328,--format=csv -n 3 -s 44
59 3,29036120,631220,46,4,0,-1,0,0,,10000011,23228870,--format=csv -n 3 -s 46 --use-p2p
60 3,20852628,453318,46,4,0,-1,0,0,,10000001,16682100,--format=csv -n 3 -s 46
61 3,31800550,636011,50,8,0,12,12,318,,10000000,25440440,--format=csv -n 3 -s 50 --use-p2p
62 3,22827550,456551,50,8,0,18,18,409,,10000015,18262012,--format=csv -n 3 -s 50
63 3,36802392,634524,58,16,0,12,12,6536,,10000007,29441892,--format=csv -n 3 -s 58 --use-p2p
64 3,26451190,456055,58,16,0,18,18,6325,,10000013,21160924,--format=csv -n 3 -s 58
65 3,46947820,634430,74,32,0,12,12,480,,10000007,37558229,--format=csv -n 3 -s 74 --use-p2p
66 3,33574318,453707,74,32,0,18,18,3024,,10000006,26859438,--format=csv -n 3 -s 74
67 3,67244598,634383,106,64,0,12,12,3022,,10000012,53795613,--format=csv -n 3 -s 106 --use-p2p
68 3,48324022,455887,106,64,0,18,18,569,,10000006,38659194,--format=csv -n 3 -s 106
69 3,107662700,633310,170,128,0,12,12,262,,10000014,86130039,--format=csv -n 3 -s 170 --use-p2p
70 3,77066950,453335,170,128,0,18,18,619,,10000014,61653473,--format=csv -n 3 -s 170
71 3,175495478,588911,298,256,0,12,12,2506,,10000007,140396284,--format=csv -n 3 -s 298 --use-p2p
72 3,134931122,452789,298,256,0,18,18,605,,10000011,107944778,--format=csv -n 3 -s 298
73 3,343163666,619429,554,512,0,12,12,303,,10000006,274530768,--format=csv -n 3 -s 554 --use-p2p
74 3,249327700,450050,554,512,0,18,18,3026,,10000013,199461900,--format=csv -n 3 -s 554
75 3,645981076,605986,1066,1024,0,12,13,302,,10000001,516784809,--format=csv -n 3 -s 1066 --use-p2p
76 3,460952258,432413,1066,1024,0,18,19,222,,10000011,368761400,--format=csv -n 3 -s 1066
77 3,892099500,594733,1500,1458,0,13,13,596,,10000005,713679243,--format=csv -n 3 -s 1500 --use-p2p
78 3,653416500,435611,1500,1458,0,18,19,217,,10000002,522733095,--format=csv -n 3 -s 1500
79 4,23705682,564421,42,0,0,-1,0,0,,10000013,18964520,--format=csv -n 4 -s 42 --use-p2p
80 4,15876294,378007,42,0,0,-1,0,0,,10000012,12701019,--format=csv -n 4 -s 42
81 4,23482214,546098,43,1,0,-1,0,0,,10000011,18785750,--format=csv -n 4 -s 43 --use-p2p
82 4,16089009,374163,43,1,0,-1,0,0,,10000012,12871191,--format=csv -n 4 -s 43
83 4,24475396,556259,44,2,0,-1,0,0,,10000010,19580297,--format=csv -n 4 -s 44 --use-p2p
84 4,16384016,372364,44,2,0,-1,0,0,,10000006,13107204,--format=csv -n 4 -s 44
85 4,25477376,553856,46,4,0,-1,0,0,,10000009,20381882,--format=csv -n 4 -s 46 --use-p2p
86 4,17101604,371774,46,4,0,-1,0,0,,10000022,13681253,--format=csv -n 4 -s 46
87 4,26366100,527322,50,8,0,14,14,2328,,10000010,21092858,--format=csv -n 4 -s 50 --use-p2p
88 4,18684800,373696,50,8,0,22,23,266,,10000005,14947832,--format=csv -n 4 -s 50
89 4,32330244,557418,58,16,0,14,14,3020,,10000003,25864187,--format=csv -n 4 -s 58 --use-p2p
90 4,21619152,372744,58,16,0,22,23,621,,10000020,17295287,--format=csv -n 4 -s 58
91 4,40828464,551736,74,32,0,14,14,1992,,10000014,32662725,--format=csv -n 4 -s 74 --use-p2p
92 4,27643662,373563,74,32,0,22,23,619,,10000017,22114892,--format=csv -n 4 -s 74
93 4,59176514,558269,106,64,0,14,14,3022,,10000003,47341196,--format=csv -n 4 -s 106 --use-p2p
94 4,39427442,371957,106,64,0,22,23,2133,,10000019,31541893,--format=csv -n 4 -s 106
95 4,94033630,553139,170,128,0,14,14,2428,,10000010,75226828,--format=csv -n 4 -s 170 --use-p2p
96 4,63178290,371637,170,128,0,22,23,686,,10000018,50542541,--format=csv -n 4 -s 170
97 4,164163134,550883,298,256,0,14,14,1962,,10000015,131330310,--format=csv -n 4 -s 298 --use-p2p
98 4,109951570,368965,298,256,0,22,23,3002,,10000002,87961238,--format=csv -n 4 -s 298
99 4,300400960,542240,554,512,0,14,14,2925,,10000017,240320359,--format=csv -n 4 -s 554 --use-p2p
100 4,204265340,368710,554,512,0,23,23,3023,,10000002,163412239,--format=csv -n 4 -s 554
101 4,570597820,535270,1066,1024,0,14,15,6391,,10000011,456477753,--format=csv -n 4 -s 1066 --use-p2p
102 4,383543602,359797,1066,1024,0,23,24,2667,,10000023,306834175,--format=csv -n 4 -s 1066
103 4,775998000,517332,1500,1458,0,15,15,3719,,10000009,620797841,--format=csv -n 4 -s 1500 --use-p2p
104 4,536488500,357659,1500,1458,0,23,24,2659,,10000017,429190070,--format=csv -n 4 -s 1500
105 6,19315632,459896,42,0,0,-1,0,0,,10000000,15452505,--format=csv -n 6 -s 42 --use-p2p
106 6,11193042,266501,42,0,0,-1,0,0,,10000006,8954428,--format=csv -n 6 -s 42
107 6,18623257,433099,43,1,0,-1,0,0,,10000014,14898584,--format=csv -n 6 -s 43 --use-p2p
108 6,11817819,274833,43,1,0,-1,0,0,,10000007,9454248,--format=csv -n 6 -s 43
109 6,19882412,451873,44,2,0,-1,0,0,,10000010,15905913,--format=csv -n 6 -s 44 --use-p2p
110 6,12089792,274768,44,2,0,-1,0,0,,10000031,9671803,--format=csv -n 6 -s 44
111 6,20776130,451655,46,4,0,-1,0,0,,10000013,16620882,--format=csv -n 6 -s 46 --use-p2p
112 6,12628334,274529,46,4,0,-1,0,0,,10000026,10102640,--format=csv -n 6 -s 46
113 6,22367350,447347,50,8,0,18,19,2467,,10000013,17893856,--format=csv -n 6 -s 50 --use-p2p
114 6,13735350,274707,50,8,0,32,32,673,,10000034,10988242,--format=csv -n 6 -s 50
115 6,26372600,454700,58,16,0,18,18,597,,10000001,21098077,--format=csv -n 6 -s 58 --use-p2p
116 6,15723220,271090,58,16,0,32,32,623,,10000021,12578549,--format=csv -n 6 -s 58
117 6,33213050,448825,74,32,0,18,18,2423,,10000001,26570437,--format=csv -n 6 -s 74 --use-p2p
118 6,20231304,273396,74,32,0,32,33,628,,10000022,16185007,--format=csv -n 6 -s 74
119 6,47678906,449801,106,64,0,18,18,588,,10000010,38143086,--format=csv -n 6 -s 106 --use-p2p
120 6,29065094,274199,106,64,0,32,32,624,,10000029,23252007,--format=csv -n 6 -s 106
121 6,76695160,451148,170,128,0,18,18,346,,10000009,61356072,--format=csv -n 6 -s 170 --use-p2p
122 6,46496870,273511,170,128,0,32,32,2425,,10000003,37197484,--format=csv -n 6 -s 170
123 6,134036526,449787,298,256,0,18,18,810,,10000020,107229006,--format=csv -n 6 -s 298 --use-p2p
124 6,81152254,272323,298,256,0,32,33,623,,10000000,64921803,--format=csv -n 6 -s 298
125 6,247951564,447566,554,512,0,18,19,2903,,10000012,198361013,--format=csv -n 6 -s 554 --use-p2p
126 6,145439958,262527,554,512,0,32,33,956,,10000006,116351896,--format=csv -n 6 -s 554
127 6,466302512,437432,1066,1024,0,18,19,3024,,10000001,373041972,--format=csv -n 6 -s 1066 --use-p2p
128 6,271252228,254458,1066,1024,0,32,33,2727,,10000004,217001695,--format=csv -n 6 -s 1066
129 6,644083500,429389,1500,1458,0,19,19,2389,,10000005,515266542,--format=csv -n 6 -s 1500 --use-p2p
130 6,400338000,266892,1500,1458,0,33,33,625,,10000024,320269631,--format=csv -n 6 -s 1500
131 8,16154670,384635,42,0,0,-1,0,0,,10000001,12923734,--format=csv -n 8 -s 42 --use-p2p
132 8,9139620,217610,42,0,0,-1,0,0,,10000021,7311680,--format=csv -n 8 -s 42
133 8,15563635,361945,43,1,0,-1,0,0,,10000003,12450904,--format=csv -n 8 -s 43 --use-p2p
134 8,9342567,217269,43,1,0,-1,0,0,,10000021,7474037,--format=csv -n 8 -s 43
135 8,16707108,379707,44,2,0,-1,0,0,,10000005,13365679,--format=csv -n 8 -s 44 --use-p2p
136 8,9534712,216698,44,2,0,-1,0,0,,10000000,7627769,--format=csv -n 8 -s 44
137 8,17458288,379528,46,4,0,-1,0,0,,10000000,13966630,--format=csv -n 8 -s 46 --use-p2p
138 8,9972294,216789,46,4,0,-1,0,0,,10000017,7977821,--format=csv -n 8 -s 46
139 8,19030400,380608,50,8,0,22,22,653,,10000018,15224292,--format=csv -n 8 -s 50 --use-p2p
140 8,10814750,216295,50,8,0,41,42,3095,,10000015,8651787,--format=csv -n 8 -s 50
141 8,22049280,380160,58,16,0,22,22,3021,,10000012,17639402,--format=csv -n 8 -s 58 --use-p2p
142 8,12556072,216484,58,16,0,41,42,234,,10000030,10044827,--format=csv -n 8 -s 58
143 8,28167360,380640,74,32,0,22,22,850,,10000020,22533842,--format=csv -n 8 -s 74 --use-p2p
144 8,16076426,217249,74,32,0,41,42,635,,10000006,12861133,--format=csv -n 8 -s 74
145 8,40206330,379305,106,64,0,22,23,7066,,10000018,32165006,--format=csv -n 8 -s 106 --use-p2p
146 8,22943382,216447,106,64,0,41,42,620,,10000035,18354641,--format=csv -n 8 -s 106
147 8,64253370,377961,170,128,0,22,23,1730,,10000019,51402598,--format=csv -n 8 -s 170 --use-p2p
148 8,36731730,216069,170,128,0,41,42,500,,10000021,29385322,--format=csv -n 8 -s 170
149 8,112488742,377479,298,256,0,22,23,601,,10000021,89990804,--format=csv -n 8 -s 298 --use-p2p
150 8,64457102,216299,298,256,0,41,42,491,,10000041,51565470,--format=csv -n 8 -s 298
151 8,208162730,375745,554,512,0,22,23,362,,10000016,166529917,--format=csv -n 8 -s 554 --use-p2p
152 8,119535472,215768,554,512,0,41,42,988,,10000033,95628062,--format=csv -n 8 -s 554
153 8,393959488,369568,1066,1024,0,23,23,6760,,10000013,315167180,--format=csv -n 8 -s 1066 --use-p2p
154 8,226235048,212228,1066,1024,0,42,43,1049,,10000017,180987730,--format=csv -n 8 -s 1066
155 8,547935000,365290,1500,1458,0,23,23,2717,,10000007,438347693,--format=csv -n 8 -s 1500 --use-p2p
156 8,317413500,211609,1500,1458,0,42,43,1088,,10000004,253930698,--format=csv -n 8 -s 1500
157 12,12142116,289098,42,0,0,-1,0,0,,10000007,9713686,--format=csv -n 12 -s 42 --use-p2p
158 12,6481104,154312,42,0,0,-1,0,0,,10000011,5184877,--format=csv -n 12 -s 42
159 12,12338764,286948,43,1,0,-1,0,0,,10000018,9870993,--format=csv -n 12 -s 43 --use-p2p
160 12,6580247,153029,43,1,0,-1,0,0,,10000019,5264187,--format=csv -n 12 -s 43
161 12,12567984,285636,44,2,0,-1,0,0,,10000019,10054368,--format=csv -n 12 -s 44 --use-p2p
162 12,6736620,153105,44,2,0,-1,0,0,,10000043,5389272,--format=csv -n 12 -s 44
163 12,13163498,286163,46,4,0,-1,0,0,,10000005,10530793,--format=csv -n 12 -s 46 --use-p2p
164 12,7046372,153182,46,4,0,-1,0,0,,10000043,5637073,--format=csv -n 12 -s 46
165 12,13963400,279268,50,8,0,30,31,1661,,10000013,11170705,--format=csv -n 12 -s 50 --use-p2p
166 12,7619550,152391,50,8,0,59,61,2668,,10000044,6095613,--format=csv -n 12 -s 50
167 12,16665720,287340,58,16,0,30,31,621,,10000012,13332560,--format=csv -n 12 -s 58 --use-p2p
168 12,8873188,152986,58,16,0,59,61,1263,,10000004,7098547,--format=csv -n 12 -s 58
169 12,21206550,286575,74,32,0,30,31,7075,,10000022,16965202,--format=csv -n 12 -s 74 --use-p2p
170 12,11318818,152957,74,32,0,59,61,618,,10000046,9055012,--format=csv -n 12 -s 74
171 12,30329886,286131,106,64,0,30,31,6473,,10000027,24263843,--format=csv -n 12 -s 106 --use-p2p
172 12,16024762,151177,106,64,0,60,61,2854,,10000046,12819750,--format=csv -n 12 -s 106
173 12,48653150,286195,170,128,0,30,31,1298,,10000022,38922434,--format=csv -n 12 -s 170 --use-p2p
174 12,25947100,152630,170,128,0,60,61,1705,,10000020,20757638,--format=csv -n 12 -s 170
175 12,84861162,284769,298,256,0,30,31,625,,10000020,67888793,--format=csv -n 12 -s 298 --use-p2p
176 12,45321032,152084,298,256,0,59,61,860,,10000034,36256702,--format=csv -n 12 -s 298
177 12,157378658,284077,554,512,0,31,31,1792,,10000027,125902586,--format=csv -n 12 -s 554 --use-p2p
178 12,83980860,151590,554,512,0,60,61,1616,,10000006,67184647,--format=csv -n 12 -s 554
179 12,286565318,268823,1066,1024,0,31,32,1986,,10000018,229251841,--format=csv -n 12 -s 1066 --use-p2p
180 12,159903198,150003,1066,1024,0,60,62,619,,10000028,127922200,--format=csv -n 12 -s 1066
181 12,418357500,278905,1500,1458,0,31,32,635,,10000020,334685330,--format=csv -n 12 -s 1500 --use-p2p
182 12,223633500,149089,1500,1458,0,61,62,618,,10000044,178906012,--format=csv -n 12 -s 1500
183 16,9582594,228157,42,0,0,-1,0,0,,10000035,7666048,--format=csv -n 16 -s 42 --use-p2p
184 16,4931850,117425,42,0,0,-1,0,0,,10000065,3945454,--format=csv -n 16 -s 42
185 16,9784521,227547,43,1,0,-1,0,0,,10000030,7827593,--format=csv -n 16 -s 43 --use-p2p
186 16,5027560,116920,43,1,0,-1,0,0,,10000022,4022039,--format=csv -n 16 -s 43
187 16,10029008,227932,44,2,0,-1,0,0,,10000013,8023195,--format=csv -n 16 -s 44 --use-p2p
188 16,5088688,115652,44,2,0,-1,0,0,,10000008,4070947,--format=csv -n 16 -s 44
189 16,10544764,229234,46,4,0,-1,0,0,,10000016,8435797,--format=csv -n 16 -s 46 --use-p2p
190 16,5343590,116165,46,4,0,-1,0,0,,10000069,4274842,--format=csv -n 16 -s 46
191 16,11156150,223123,50,8,0,39,40,2095,,10000009,8924911,--format=csv -n 16 -s 50 --use-p2p
192 16,5805850,116117,50,8,0,79,81,2000,,10000019,4644671,--format=csv -n 16 -s 50
193 16,13174468,227146,58,16,0,39,40,3043,,10000006,10539568,--format=csv -n 16 -s 58 --use-p2p
194 16,6746618,116321,58,16,0,78,80,2045,,10000027,5397279,--format=csv -n 16 -s 58
195 16,16855572,227778,74,32,0,39,40,299,,10000001,13484456,--format=csv -n 16 -s 74 --use-p2p
196 16,8541228,115422,74,32,0,78,81,1311,,10000008,6832976,--format=csv -n 16 -s 74
197 16,24361980,229830,106,64,0,38,39,362,,10000031,19489523,--format=csv -n 16 -s 106 --use-p2p
198 16,12362568,116628,106,64,0,78,80,2020,,10000008,9890046,--format=csv -n 16 -s 106
199 16,38781250,228125,170,128,0,39,40,2131,,10000039,31024879,--format=csv -n 16 -s 170 --use-p2p
200 16,19882180,116954,170,128,0,78,80,1062,,10000072,15905629,--format=csv -n 16 -s 170
201 16,68188956,228822,298,256,0,39,39,646,,10000012,54551099,--format=csv -n 16 -s 298 --use-p2p
202 16,34508996,115802,298,256,0,78,81,2560,,10000072,27606998,--format=csv -n 16 -s 298
203 16,119657352,215988,554,512,0,39,40,3023,,10000036,95725536,--format=csv -n 16 -s 554 --use-p2p
204 16,63005312,113728,554,512,0,78,80,2676,,10000048,50404007,--format=csv -n 16 -s 554
205 16,233278110,218835,1066,1024,0,39,40,5541,,10000040,186621741,--format=csv -n 16 -s 1066 --use-p2p
206 16,122727514,115129,1066,1024,0,79,81,2908,,10000045,98181569,--format=csv -n 16 -s 1066
207 16,327915000,218610,1500,1458,0,39,40,4895,,10000025,262331344,--format=csv -n 16 -s 1500 --use-p2p
208 16,171390000,114260,1500,1458,0,79,81,635,,10000047,137111355,--format=csv -n 16 -s 1500
209 32,5328162,126861,42,0,0,-1,0,0,,10000043,4262511,--format=csv -n 32 -s 42 --use-p2p
210 32,2586570,61585,42,0,0,-1,0,0,,10000064,2069242,--format=csv -n 32 -s 42
211 32,5343911,124277,43,1,0,-1,0,0,,10000055,4275105,--format=csv -n 32 -s 43 --use-p2p
212 32,2678513,62291,43,1,0,-1,0,0,,10000110,2142786,--format=csv -n 32 -s 43
213 32,5521736,125494,44,2,0,-1,0,0,,10000007,4417385,--format=csv -n 32 -s 44 --use-p2p
214 32,2728484,62011,44,2,0,-1,0,0,,10000073,2182771,--format=csv -n 32 -s 44
215 32,5730588,124578,46,4,0,-1,0,0,,10000012,4584464,--format=csv -n 32 -s 46 --use-p2p
216 32,2860004,62174,46,4,0,-1,0,0,,10000127,2287974,--format=csv -n 32 -s 46
217 32,6203950,124079,50,8,0,72,74,779,,10000018,4963151,--format=csv -n 32 -s 50 --use-p2p
218 32,3092200,61844,50,8,0,153,157,2353,,10000152,2473722,--format=csv -n 32 -s 50
219 32,7210618,124321,58,16,0,72,73,2468,,10000056,5768462,--format=csv -n 32 -s 58 --use-p2p
220 32,3585618,61821,58,16,0,153,157,3066,,10000134,2868455,--format=csv -n 32 -s 58
221 32,9131156,123394,74,32,0,72,74,731,,10000004,7304921,--format=csv -n 32 -s 74 --use-p2p
222 32,4598138,62137,74,32,0,153,157,2098,,10000122,3678465,--format=csv -n 32 -s 74
223 32,13017542,122807,106,64,0,72,74,1982,,10000024,10414008,--format=csv -n 32 -s 106 --use-p2p
224 32,6599136,62256,106,64,0,153,156,715,,10000139,5279235,--format=csv -n 32 -s 106
225 32,21003330,123549,170,128,0,72,73,5149,,10000052,16802576,--format=csv -n 32 -s 170 --use-p2p
226 32,10559380,62114,170,128,0,153,157,1893,,10000060,8447453,--format=csv -n 32 -s 170
227 32,36544038,122631,298,256,0,72,74,1727,,10000061,29235052,--format=csv -n 32 -s 298 --use-p2p
228 32,18435472,61864,298,256,0,154,157,945,,10000044,14748312,--format=csv -n 32 -s 298
229 32,66123224,119356,554,512,0,72,74,2657,,10000053,52898298,--format=csv -n 32 -s 554 --use-p2p
230 32,33541376,60544,554,512,0,154,157,3166,,10000000,26833100,--format=csv -n 32 -s 554
231 32,130040274,121989,1066,1024,0,73,74,2579,,10000103,104031147,--format=csv -n 32 -s 1066 --use-p2p
232 32,65690118,61623,1066,1024,0,154,158,1183,,10000025,52551963,--format=csv -n 32 -s 1066
233 32,181837500,121225,1500,1458,0,73,75,6909,,10000054,145469214,--format=csv -n 32 -s 1500 --use-p2p
234 32,92371500,61581,1500,1458,0,154,158,2651,,10000096,73896490,--format=csv -n 32 -s 1500
235 64,2659860,63330,42,0,0,-1,0,0,,10000020,2127883,--format=csv -n 64 -s 42 --use-p2p
236 64,1298850,30925,42,0,0,-1,0,0,,10000297,1039049,--format=csv -n 64 -s 42
237 64,2617969,60883,43,1,0,-1,0,0,,10000016,2094371,--format=csv -n 64 -s 43 --use-p2p
238 64,1284152,29864,43,1,0,-1,0,0,,10000207,1027300,--format=csv -n 64 -s 43
239 64,2661032,60478,44,2,0,-1,0,0,,10000022,2128820,--format=csv -n 64 -s 44 --use-p2p
240 64,1353220,30755,44,2,0,-1,0,0,,10000271,1082546,--format=csv -n 64 -s 44
241 64,2779550,60425,46,4,0,-1,0,0,,10000061,2223626,--format=csv -n 64 -s 46 --use-p2p
242 64,1412476,30706,46,4,0,-1,0,0,,10000020,1129978,--format=csv -n 64 -s 46
243 64,2966000,59320,50,8,0,145,150,3123,,10000132,2372768,--format=csv -n 64 -s 50 --use-p2p
244 64,1497600,29952,50,8,0,313,322,3161,,10000064,1198072,--format=csv -n 64 -s 50
245 64,3410168,58796,58,16,0,146,150,2262,,10000100,2728107,--format=csv -n 64 -s 58 --use-p2p
246 64,1786632,30804,58,16,0,312,320,1095,,10000072,1429295,--format=csv -n 64 -s 58
247 64,4303544,58156,74,32,0,145,151,1590,,10000149,3442783,--format=csv -n 64 -s 74 --use-p2p
248 64,2254336,30464,74,32,0,315,323,1907,,10000301,1803414,--format=csv -n 64 -s 74
249 64,5980202,56417,106,64,0,147,152,3112,,10000063,4784131,--format=csv -n 64 -s 106 --use-p2p
250 64,3250490,30665,106,64,0,313,321,1081,,10000163,2600349,--format=csv -n 64 -s 106
251 64,9245960,54388,170,128,0,146,151,2991,,10000050,7396731,--format=csv -n 64 -s 170 --use-p2p
252 64,5216450,30685,170,128,0,313,321,2447,,10000028,4173148,--format=csv -n 64 -s 170
253 64,16653134,55883,298,256,0,148,152,1069,,10000129,13322335,--format=csv -n 64 -s 298 --use-p2p
254 64,9130720,30640,298,256,0,314,321,2367,,10000222,7304413,--format=csv -n 64 -s 298
255 64,30402966,54879,554,512,0,148,153,3068,,10000146,24322017,--format=csv -n 64 -s 554 --use-p2p
256 64,16951292,30598,554,512,0,314,322,2139,,10000197,13560766,--format=csv -n 64 -s 554
257 64,56105712,52632,1066,1024,0,148,154,2721,,10000069,44884259,--format=csv -n 64 -s 1066 --use-p2p
258 64,32371222,30367,1066,1024,0,315,324,2221,,10000312,25896169,--format=csv -n 64 -s 1066
259 64,74034000,49356,1500,1458,0,147,153,7388,,10000104,59226584,--format=csv -n 64 -s 1500 --use-p2p
260 64,45405000,30270,1500,1458,0,317,326,1971,,10000323,36322826,--format=csv -n 64 -s 1500
+0
-203
benchmarks/preliminar/results-simu.txt less more
0 # ns3user-ns3kernel
1 # pktsz nodes usec mem
2 1400.0 1.0 11.6054 308000.0 exp1
3 1000.0 1.0 11.1844 308000.0 exp1
4 600.0 1.0 10.3422 308000.0 exp1
5 400.0 1.0 10.2632 308000.0 exp1
6 100.0 1.0 9.82896 308000.0 exp1
7 80.0 1.0 9.85264 308000.0 exp1
8 30.0 1.0 9.63947 308000.0 exp1
9 10.0 1.0 9.63816 308000.0 exp1
10 1400.0 2.0 15.4739 344000.0 exp1
11 1000.0 2.0 14.6055 344000.0 exp1
12 600.0 2.0 14.0527 344000.0 exp1
13 400.0 2.0 13.8948 344000.0 exp1
14 100.0 2.0 13.3948 344000.0 exp1
15 80.0 2.0 13.4211 344000.0 exp1
16 30.0 2.0 16.2884 344000.0 exp1
17 10.0 2.0 27.215 344000.0 exp1
18 1400.0 3.0 22.4744 356000.0 exp1
19 1000.0 3.0 21.8427 356000.0 exp1
20 600.0 3.0 20.8424 356000.0 exp1
21 400.0 3.0 21.0529 356000.0 exp1
22 100.0 3.0 20.4737 356000.0 exp1
23 80.0 3.0 20.3264 356000.0 exp1
24 30.0 3.0 23.3369 356000.0 exp1
25 10.0 3.0 34.38 356000.0 exp1
26 1400.0 4.0 29.2904 364000.0 exp1
27 1000.0 4.0 28.2902 364000.0 exp1
28 600.0 4.0 28.1056 364000.0 exp1
29 400.0 4.0 27.6845 364000.0 exp1
30 100.0 4.0 27.3948 364000.0 exp1
31 80.0 4.0 27.1053 364000.0 exp1
32 30.0 4.0 30.0064 364000.0 exp1
33 10.0 4.0 40.6451 364000.0 exp1
34 1400.0 10.0 69.0849 424000.0 exp1
35 1000.0 10.0 69.7414 424000.0 exp1
36 600.0 10.0 68.6083 424000.0 exp1
37 400.0 10.0 68.5285 424000.0 exp1
38 100.0 10.0 66.027 424000.0 exp1
39 80.0 10.0 66.8427 424000.0 exp1
40 30.0 10.0 69.9604 424000.0 exp1
41 10.0 10.0 80.4004 424000.0 exp1
42 1400.0 20.0 136.711 528000.0 exp1
43 1000.0 20.0 137.915 528000.0 exp1
44 600.0 20.0 138.17 528000.0 exp1
45 400.0 20.0 146.536 528000.0 exp1
46 100.0 20.0 134.371 528000.0 exp1
47 80.0 20.0 136.676 528000.0 exp1
48 30.0 20.0 135.614 528000.0 exp1
49 10.0 20.0 146.406 528000.0 exp1
50
51
52 # posixuser-ns3kernel
53 # pktsz nodes usec mem
54 1400.0 1.0 23.9935 284000.0 exp2
55 1000.0 1.0 22.275 284000.0 exp2
56 600.0 1.0 21.1502 284000.0 exp2
57 400.0 1.0 20.3162 284000.0 exp2
58 100.0 1.0 19.3629 284000.0 exp2
59 80.0 1.0 17.2199 284000.0 exp2
60 30.0 1.0 11.6907 284000.0 exp2
61 10.0 1.0 9.41529 284000.0 exp2
62 1400.0 2.0 29.8507 320000.0 exp2
63 1000.0 2.0 28.3504 320000.0 exp2
64 600.0 2.0 26.4979 320000.0 exp2
65 400.0 2.0 25.6115 320000.0 exp2
66 100.0 2.0 24.1463 320000.0 exp2
67 80.0 2.0 23.0901 320000.0 exp2
68 30.0 2.0 23.7398 320000.0 exp2
69 10.0 2.0 34.3538 320000.0 exp2
70 1400.0 3.0 41.754 332000.0 exp2
71 1000.0 3.0 40.6361 332000.0 exp2
72 600.0 3.0 37.2756 332000.0 exp2
73 400.0 3.0 35.2836 332000.0 exp2
74 100.0 3.0 34.4021 332000.0 exp2
75 80.0 3.0 32.5921 332000.0 exp2
76 30.0 3.0 32.4704 332000.0 exp2
77 10.0 3.0 42.9911 332000.0 exp2
78 1400.0 4.0 50.8228 340000.0 exp2
79 1000.0 4.0 48.7364 340000.0 exp2
80 600.0 4.0 49.6738 340000.0 exp2
81 400.0 4.0 41.5514 340000.0 exp2
82 100.0 4.0 41.3879 340000.0 exp2
83 80.0 4.0 40.0402 340000.0 exp2
84 30.0 4.0 39.5275 340000.0 exp2
85 10.0 4.0 50.0416 340000.0 exp2
86 1400.0 10.0 105.808 400000.0 exp2
87 1000.0 10.0 100.717 400000.0 exp2
88 600.0 10.0 92.6241 400000.0 exp2
89 400.0 10.0 88.9403 400000.0 exp2
90 100.0 10.0 84.3573 400000.0 exp2
91 80.0 10.0 83.9941 400000.0 exp2
92 30.0 10.0 82.3179 400000.0 exp2
93 10.0 10.0 90.7838 400000.0 exp2
94 1400.0 20.0 195.386 500000.0 exp2
95 1000.0 20.0 187.948 500000.0 exp2
96 600.0 20.0 174.074 500000.0 exp2
97 400.0 20.0 161.676 500000.0 exp2
98 100.0 20.0 158.474 500000.0 exp2
99 80.0 20.0 153.947 500000.0 exp2
100 30.0 20.0 149.705 500000.0 exp2
101 10.0 20.0 158.209 500000.0 exp2
102
103
104 # posixuser-linuxkernel
105 1400.0 1.0 18.8925 1804000.0 exp3-nopic
106 1000.0 1.0 17.415 1804000.0 exp3-nopic
107 600.0 1.0 15.4777 1804000.0 exp3-nopic
108 400.0 1.0 14.967 1804000.0 exp3-nopic
109 100.0 1.0 13.9716 1804000.0 exp3-nopic
110 80.0 1.0 11.4151 1804000.0 exp3-nopic
111 30.0 1.0 5.42379 1804000.0 exp3-nopic
112 10.0 1.0 3.0551 1804000.0 exp3-nopic
113 1400.0 2.0 35.1408 2312000.0 exp3-nopic
114 1000.0 2.0 33.6159 2312000.0 exp3-nopic
115 600.0 2.0 30.5503 2312000.0 exp3-nopic
116 400.0 2.0 29.2868 2312000.0 exp3-nopic
117 100.0 2.0 27.6743 2312000.0 exp3-nopic
118 80.0 2.0 25.5777 2312000.0 exp3-nopic
119 30.0 2.0 25.6222 2312000.0 exp3-nopic
120 10.0 2.0 34.1143 2312000.0 exp3-nopic
121 1400.0 3.0 50.8247 3408000.0 exp3-nopic
122 1000.0 3.0 48.469 3408000.0 exp3-nopic
123 600.0 3.0 44.0047 3408000.0 exp3-nopic
124 400.0 3.0 41.6631 3408000.0 exp3-nopic
125 100.0 3.0 39.9732 3408000.0 exp3-nopic
126 80.0 3.0 38.92 3408000.0 exp3-nopic
127 30.0 3.0 38.1046 3408000.0 exp3-nopic
128 10.0 3.0 46.4725 3408000.0 exp3-nopic
129 1400.0 4.0 67.4539 4508000.0 exp3-nopic
130 1000.0 4.0 63.3236 4508000.0 exp3-nopic
131 600.0 4.0 58.0279 4508000.0 exp3-nopic
132 400.0 4.0 55.6078 4508000.0 exp3-nopic
133 100.0 4.0 53.1384 4508000.0 exp3-nopic
134 80.0 4.0 51.3447 4508000.0 exp3-nopic
135 30.0 4.0 50.6402 4508000.0 exp3-nopic
136 10.0 4.0 59.1352 4508000.0 exp3-nopic
137 1400.0 10.0 160.839 11100000.0 exp3-nopic
138 1000.0 10.0 162.478 11100000.0 exp3-nopic
139 600.0 10.0 139.116 11100000.0 exp3-nopic
140 400.0 10.0 136.227 11100000.0 exp3-nopic
141 100.0 10.0 132.659 11100000.0 exp3-nopic
142 80.0 10.0 128.236 11100000.0 exp3-nopic
143 30.0 10.0 122.553 11100000.0 exp3-nopic
144 10.0 10.0 133.47 11100000.0 exp3-nopic
145 1400.0 20.0 311.62 22096000.0 exp3-nopic
146 1000.0 20.0 301.081 22096000.0 exp3-nopic
147 600.0 20.0 276.518 22096000.0 exp3-nopic
148 400.0 20.0 269.517 22096000.0 exp3-nopic
149 100.0 20.0 259.321 22096000.0 exp3-nopic
150 80.0 20.0 258.255 22096000.0 exp3-nopic
151 30.0 20.0 236.266 22096000.0 exp3-nopic
152 10.0 20.0 257.22 22096000.0 exp3-nopic
153
154
155 1400.0 1.0 20.7818 1108000.0 exp3-pic
156 1000.0 1.0 17.685 1108000.0 exp3-pic
157 600.0 1.0 16.4502 1108000.0 exp3-pic
158 400.0 1.0 15.5613 1108000.0 exp3-pic
159 100.0 1.0 14.3905 1108000.0 exp3-pic
160 80.0 1.0 11.9988 1108000.0 exp3-pic
161 30.0 1.0 5.92644 1108000.0 exp3-pic
162 10.0 1.0 3.4402 1108000.0 exp3-pic
163 1400.0 2.0 36.6522 832000.0 exp3-pic
164 1000.0 2.0 34.561 832000.0 exp3-pic
165 600.0 2.0 32.5762 832000.0 exp3-pic
166 400.0 2.0 30.2595 832000.0 exp3-pic
167 100.0 2.0 29.2824 832000.0 exp3-pic
168 80.0 2.0 27.0263 832000.0 exp3-pic
169 30.0 2.0 26.965 832000.0 exp3-pic
170 10.0 2.0 36.4201 832000.0 exp3-pic
171 1400.0 3.0 53.6588 1184000.0 exp3-pic
172 1000.0 3.0 51.5742 1184000.0 exp3-pic
173 600.0 3.0 47.6515 1184000.0 exp3-pic
174 400.0 3.0 44.6892 1184000.0 exp3-pic
175 100.0 3.0 43.6219 1184000.0 exp3-pic
176 80.0 3.0 41.2227 1184000.0 exp3-pic
177 30.0 3.0 40.3945 1184000.0 exp3-pic
178 10.0 3.0 49.6258 1184000.0 exp3-pic
179 1400.0 4.0 69.3434 1536000.0 exp3-pic
180 1000.0 4.0 66.294 1536000.0 exp3-pic
181 600.0 4.0 61.6749 1536000.0 exp3-pic
182 400.0 4.0 58.526 1536000.0 exp3-pic
183 100.0 4.0 56.5305 1536000.0 exp3-pic
184 80.0 4.0 54.8369 1536000.0 exp3-pic
185 30.0 4.0 54.085 1536000.0 exp3-pic
186 10.0 4.0 64.7179 1536000.0 exp3-pic
187 1400.0 10.0 164.997 3668000.0 exp3-pic
188 1000.0 10.0 157.48 3668000.0 exp3-pic
189 600.0 10.0 145.926 3668000.0 exp3-pic
190 400.0 10.0 142.443 3668000.0 exp3-pic
191 100.0 10.0 137.499 3668000.0 exp3-pic
192 80.0 10.0 136.347 3668000.0 exp3-pic
193 30.0 10.0 126.181 3668000.0 exp3-pic
194 10.0 10.0 139.126 3668000.0 exp3-pic
195 1400.0 20.0 321.641 7224000.0 exp3-pic
196 1000.0 20.0 309.865 7224000.0 exp3-pic
197 600.0 20.0 290.551 7224000.0 exp3-pic
198 400.0 20.0 282.715 7224000.0 exp3-pic
199 100.0 20.0 272.982 7224000.0 exp3-pic
200 80.0 20.0 266.403 7224000.0 exp3-pic
201 30.0 20.0 238.415 7224000.0 exp3-pic
202 10.0 20.0 271.268 7224000.0 exp3-pic
+0
-375
benchmarks/udp-perf.c less more
0 /* vim: ts=4:sw=4:et:ai:sts=4
1 */
2 #include <sys/timerfd.h>
3 #include <time.h>
4 #include <sys/time.h>
5 #include <stdbool.h>
6 #include <string.h>
7 #include <stdlib.h>
8 #include <stdio.h>
9 #include <sys/socket.h>
10 #include <stdint.h>
11 #include <netinet/in.h>
12 #include <arpa/inet.h>
13 #include <pthread.h>
14 #include <unistd.h>
15 #include <errno.h>
16 #include <fcntl.h>
17
18 #define HDR_SIZE (14 + 20 + 8) /* eth + ip + udp headers */
19 static uint64_t current_time(void);
20
21 static void fatal(const char *func, const char *detailed) {
22 char *error;
23 if(detailed)
24 fprintf(stderr, "%s\n", detailed);
25 if(func) {
26 error = strerror(errno);
27 fprintf(stderr, "%s: %s (%d)\n", func, error, errno);
28 }
29 exit(1);
30 }
31 static void set_txbuf_size(int fd, int buffer_size) {
32 int msg_size = buffer_size;
33 int status = setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char*)&msg_size,
34 sizeof(msg_size));
35 if(status == -1)
36 fatal("setsockopt", "Unable to set socket buffer size");
37 }
38
39 static void run_client(const char *to_ip, unsigned to_port, unsigned pkt_size) {
40 int status, fd, cfd;
41 uint64_t seq;
42 struct sockaddr_in addr, to;
43 void *buffer;
44
45 if(pkt_size < HDR_SIZE)
46 fatal(NULL, "Cannot send packets that small.");
47 pkt_size -= HDR_SIZE;
48
49 buffer = malloc(pkt_size);
50 if(! buffer)
51 fatal("malloc", NULL);
52 memset(buffer, 0, pkt_size);
53
54 fd = socket(AF_INET, SOCK_DGRAM, 0);
55 if(fd == -1)
56 fatal("socket", "Unable to create udp socket");
57
58 cfd = socket(AF_INET, SOCK_STREAM, 0);
59 if(cfd == -1)
60 fatal("socket", "Unable to create tcp socket");
61
62 #if 0
63 status = fcntl(fd, F_GETFL, 0);
64 if(status == -1)
65 fatal("fcntl", NULL);
66
67 status = fcntl(fd, F_SETFL, status | O_NONBLOCK);
68 if(status == -1)
69 fatal("fcntl", NULL);
70
71 set_txbuf_size(fd, 1<<20);
72 #endif
73
74 addr.sin_family = AF_INET;
75 addr.sin_port = 0;
76 addr.sin_addr.s_addr = htonl(INADDR_ANY);
77
78 to.sin_family = AF_INET;
79 to.sin_port = htons(to_port);
80 to.sin_addr.s_addr = inet_addr(to_ip);
81
82 status = bind(fd, (struct sockaddr*)&addr, sizeof(addr));
83 if(status == -1)
84 fatal("bind", NULL);
85
86 status = connect(cfd, (struct sockaddr*)&to, sizeof(to));
87 if(status == -1)
88 fatal("connect", "Can not connect to server");
89
90 for(seq = 0; ; seq++) {
91 ssize_t written;
92 uint64_t now;
93 fd_set rfds;
94 struct timeval tv;
95
96 /* Check if asked to stop */
97 FD_ZERO(&rfds);
98 FD_SET(cfd, &rfds);
99 tv.tv_sec = 0;
100 tv.tv_usec = 0;
101 status = select(cfd + 1, &rfds, NULL, NULL, &tv);
102 if(status == -1)
103 fatal("select", NULL);
104
105 if(status) {
106 status = recv(cfd, buffer, 8, 0);
107 if(status == -1)
108 fatal("recv", NULL);
109 if(((uint64_t *)buffer)[0] == 0xdeadbeef)
110 break;
111 fatal(NULL, "Received invalid control message");
112 }
113
114 now = current_time();
115 if(pkt_size >= sizeof(uint64_t))
116 ((uint64_t *)buffer)[0] = now;
117 if(pkt_size >= 2 * sizeof(uint64_t))
118 ((uint64_t *)buffer)[1] = seq;
119
120 written = sendto(fd, buffer, pkt_size, 0, (struct sockaddr *)&to,
121 sizeof(to));
122 if(written == -1 && (errno == EWOULDBLOCK || errno == EAGAIN))
123 continue;
124 if(written == -1)
125 fatal("sendto", NULL);
126 }
127 free(buffer);
128 status = close(cfd);
129 if(status == -1)
130 fatal("close", "Unable to close socket");
131 status = close(fd);
132 if(status == -1)
133 fatal("close", "Unable to close socket");
134 }
135
136 static uint64_t current_time(void) {
137 struct timeval tv;
138 uint64_t current_time;
139 int status;
140
141 status = gettimeofday(&tv, 0);
142 if(status == -1)
143 fatal("gettimeofday", "Unable to get current time\n");
144 current_time = tv.tv_sec * 1000000 + tv.tv_usec;
145 return current_time;
146 }
147
148 static void run_server(int port, uint64_t max_time, uint64_t max_pkts,
149 uint64_t max_bytes, bool verbose) {
150 struct sockaddr_in addr;
151 int fd, cfd, serverfd, status;
152 uint64_t now, last_ts, last_seq, preceived, breceived, errors;
153 uint64_t start, tot_delay, max_delay, min_delay, last_delay;
154 double jitter = 0.0L;
155 ssize_t pkt_size = -1, buffer_sz = 1 << 17; /* should be enough */
156 void *buffer;
157 uint64_t magic = 0xdeadbeef;
158
159 buffer = malloc(buffer_sz);
160 if(! buffer)
161 fatal("malloc", NULL);
162
163 fd = socket(AF_INET, SOCK_DGRAM, 0);
164 if(fd == -1)
165 fatal("socket", "Unable to create udp socket");
166
167 serverfd = socket(AF_INET, SOCK_STREAM, 0);
168 if(serverfd == -1)
169 fatal("socket", "Unable to create tcp socket");
170
171 addr.sin_family = AF_INET;
172 addr.sin_port = htons(port);
173 addr.sin_addr.s_addr = htonl(INADDR_ANY);
174
175 status = bind(fd,(struct sockaddr*)&addr, sizeof(addr));
176 if(status == -1)
177 fatal("bind", "Unable to bind to specified port");
178
179 status = 1; /* no need for other var :) */
180 status = setsockopt(serverfd, SOL_SOCKET, SO_REUSEADDR, &status,
181 sizeof(status));
182 if(status == -1)
183 fatal("setsockopt", "Unable to set SO_REUSEADDR");
184
185 status = bind(serverfd,(struct sockaddr*)&addr, sizeof(addr));
186 if(status == -1)
187 fatal("bind", "Unable to bind to specified port");
188
189 status = listen(serverfd, 1);
190 if(status == -1)
191 fatal("listen", "Unable to receive connections");
192
193 cfd = accept(serverfd, NULL, 0);
194 if(cfd == -1)
195 fatal("accept", "Unable to receive connection");
196
197 preceived = breceived = errors = 0;
198 last_ts = last_seq = start = 0;
199 tot_delay = max_delay = 0; last_delay = min_delay = -1;
200 while(true) {
201 uint64_t ts = 0, seq = 0;
202 ssize_t received;
203
204 received = recvfrom(fd, buffer, buffer_sz, 0, 0, 0);
205 now = current_time();
206
207 if(received >= sizeof(uint64_t))
208 ts = ((uint64_t *)buffer)[0];
209 if(received >= 2 * sizeof(uint64_t))
210 seq = ((uint64_t *)buffer)[1];
211
212 if(pkt_size == -1) {
213 /* init: first packet is ignored */
214 pkt_size = received;
215 last_ts = ts;
216 last_seq = seq;
217 start = now;
218 } else {
219 if(pkt_size != received) {
220 errors++;
221 fprintf(stderr, "Received packet of invalid size %ld.\n",
222 received);
223 } else {
224 preceived++;
225 breceived += received;
226 breceived += HDR_SIZE;
227 if(ts) {
228 if(last_delay >= 0) {
229 double delta;
230 if(last_delay > now - ts)
231 delta = last_delay - (now - ts);
232 else
233 delta = (now - ts) - last_delay;
234 jitter += (delta - jitter) / 16.0;
235 }
236 last_delay = now - ts;
237 tot_delay += last_delay;
238 if(last_delay < min_delay)
239 min_delay = last_delay;
240 if(last_delay > max_delay)
241 max_delay = last_delay;
242 }
243 if((ts && ts <= last_ts) || (seq && seq <= last_seq)) {
244 errors++;
245 fprintf(stderr, "Packet received out of order.\n");
246 }
247 last_ts = ts;
248 last_seq = seq;
249 }
250 if((max_pkts && preceived + errors >= max_pkts) ||
251 (max_time && now - start >= max_time) ||
252 (max_bytes && breceived >= max_bytes))
253 break;
254 }
255 }
256 free(buffer);
257
258 /* Tell client to die */
259 send(cfd, &magic, sizeof(magic), 0);
260 status = close(cfd);
261 if(status == -1)
262 fatal("close", "Unable to close socket");
263 status = close(serverfd);
264 if(status == -1)
265 fatal("close", "Unable to close socket");
266
267 if(verbose) {
268 printf("Received: %ld bytes %ld packets (size %ld/%ld) %ld errors.\n",
269 breceived, preceived, pkt_size + HDR_SIZE, pkt_size, errors);
270 printf("Delay: %ld/%ld/%ld (min/avg/max). Jitter: %lf. Time: %ld us\n",
271 min_delay, tot_delay / preceived, max_delay, jitter,
272 now - start);
273 printf("Bandwidth: %ld bit/s.\n",
274 (long)(1.0L * (breceived * 8000000) / (now - start)));
275 } else {
276 printf("brx:%ld prx:%ld pksz:%ld plsz:%ld err:%ld ",
277 breceived, preceived, pkt_size + HDR_SIZE, pkt_size, errors);
278 printf("mind:%ld avgd:%ld maxd:%ld jit:%lf time:%ld ",
279 min_delay, tot_delay / preceived, max_delay, jitter,
280 now - start);
281 }
282
283 status = close(fd);
284 if(status == -1)
285 fatal("close", "Unable to close socket");
286 }
287 #define CHECK_INT_ARG(arg, name, value) \
288 if(strncmp(arg, "--"name"=", strlen("--"name"=")) == 0) { \
289 value = atoi(arg + strlen("--"name"=")); \
290 continue; \
291 }
292 #define CHECK_LLINT_ARG(arg, name, value) \
293 if(strncmp(arg, "--"name"=", strlen("--"name"=")) == 0) { \
294 value = atoll(arg + strlen("--"name"=")); \
295 continue; \
296 }
297 #define CHECK_STR_ARG(arg, name, value) \
298 if(strncmp(arg, "--"name"=", strlen("--"name"=")) == 0) { \
299 value = arg + strlen("--"name"="); \
300 continue; \
301 }
302
303 static char *progname;
304 void usage(FILE *f) {
305 char *filler, *sp = " ";
306 if(strlen(progname) < strlen(sp))
307 filler = sp + strlen(sp) - strlen(progname);
308 else
309 filler = sp;
310
311 fprintf(f, "\n");
312 fprintf(f, "Usage: %s --client [--host=HOST] [--port=PORT] "
313 "[--pktsize=BYTES]\n", progname);
314 fprintf(f, " %s --server [--port=PORT] [--max-time=SECS] "
315 "[--max-pkts=NUM]\n", progname);
316 fprintf(f, " %s [--max-bytes=BYTES] [--verbose]\n", filler);
317 }
318
319 int main(int argc, char *argv[]) {
320 uint64_t max_time = 0, max_pkts = 0, max_bytes = 0;
321 int pkt_size = 1500, port = 5000;
322 const char *to_ip = "127.0.0.1";
323 bool server = false, client = false, verbose = false;
324 char **arg = argv + 1;
325
326 progname = strrchr(argv[0], '/');
327 if(progname)
328 progname++; /* skip over the slash */
329 else
330 progname = argv[0];
331
332 for(; *arg != 0; arg++)
333 {
334 CHECK_INT_ARG(*arg, "pktsize", pkt_size);
335 CHECK_INT_ARG(*arg, "port", port);
336 CHECK_LLINT_ARG(*arg, "max-time", max_time);
337 CHECK_LLINT_ARG(*arg, "max-pkts", max_pkts);
338 CHECK_LLINT_ARG(*arg, "max-bytes", max_bytes);
339 CHECK_STR_ARG(*arg, "host", to_ip);
340 if(strcmp(*arg, "--server") == 0) {
341 server = true;
342 continue;
343 }
344 if(strcmp(*arg, "--client") == 0) {
345 client = true;
346 continue;
347 }
348 if(strcmp(*arg, "--verbose") == 0) {
349 verbose = true;
350 continue;
351 }
352 if(strcmp(*arg, "--help") == 0) {
353 usage(stdout);
354 exit(0);
355 }
356 fprintf(stderr, "Unknown parameter: %s\n", *arg);
357 usage(stderr);
358 exit(1);
359 }
360 if(client == server) {
361 fprintf(stderr,
362 "Exactly one of --client and --server must be specified.\n");
363 usage(stderr);
364 exit(1);
365 }
366 if(!(max_time || max_pkts || max_bytes))
367 max_time = 10;
368 max_time *= 1000000;
369 if(client)
370 run_client(to_ip, port, pkt_size);
371 else
372 run_server(port, max_time, max_pkts, max_bytes, verbose);
373 return 0;
374 }
0 python-nemu (0.3.1-2) UNRELEASED; urgency=medium
0 python-nemu (0.3.1+git20210810.1.3f7c571-1) UNRELEASED; urgency=medium
11
2 [ Martín Ferrari ]
23 * Add examples.
34
4 -- Martín Ferrari <tincho@debian.org> Fri, 02 Dec 2016 11:14:26 +0100
5 [ Debian Janitor ]
6 * New upstream snapshot.
7
8 -- Martín Ferrari <tincho@debian.org> Mon, 15 Nov 2021 01:04:29 -0000
59
610 python-nemu (0.3.1-1) unstable; urgency=medium
711
+0
-34
docs/debconf-talk/Makefile less more
0 IMGS = openlogo.svg
1 PDF_IMGS := $(patsubst %.svg,%.pdf,$(patsubst %.dia,%.pdf,$(IMGS)))
2 DVI_IMGS := $(patsubst %.svg,%.eps,$(patsubst %.dia,%.eps,$(IMGS)))
3
4 ALL = nemu.pdf
5
6 all: $(ALL)
7
8 %.eps: %.dia
9 inkscape -E $@ $<
10
11 %.pdf: %.dia
12 inkscape -A $@ $<
13
14 %.eps: %.svg
15 inkscape -E $@ $<
16
17 %.pdf: %.svg
18 inkscape -A $@ $<
19
20 %.ps: %.dvi
21 dvips $<
22
23 nemu.dvi: nemu.tex $(DVI_IMGS)
24 latex $<
25 latex $<
26
27 nemu.pdf: nemu.tex $(PDF_IMGS)
28 pdflatex $<
29 pdflatex $<
30
31 clean:
32 rm -f $(PDF_IMGS) $(DVI_IMGS) *.aux *.out *.log *.dvi *.nav *.snm \
33 *.toc *.vrb *.bak $(ALL)
+0
-99
docs/debconf-talk/nemu.tex less more
0 % vim:ts=2:sw=2:et:ai:sts=2
1 \documentclass{beamer}
2 \mode<presentation>
3 {
4 \usetheme{Boadilla} % simple
5 \usecolortheme{seahorse}
6 \useinnertheme{rectangles}
7 }
8
9 \usepackage[english]{babel}
10 \usepackage[utf8]{inputenc}
11 \usepackage[normalem]{ulem}
12
13 \DeclareRobustCommand{\hsout}[1]{\texorpdfstring{\sout{#1}}{#1}}
14 \pgfdeclareimage[height=0.5cm]{debian-logo}{openlogo}
15 \pgfdeclareimage[height=2cm]{debian-logo-big}{openlogo}
16
17 \title{Introducing Nemu}
18 \subtitle{Network EMUlator in a \hsout{box} Python library}
19
20 \author{Martín Ferrari}
21 \institute[DebConf 12]{\pgfuseimage{debian-logo-big}}
22
23 \date{July 14, 2012}
24 \subject{Talks}
25 \logo{\pgfuseimage{debian-logo}}
26
27 \begin{document}
28
29 \begin{frame}
30 \titlepage
31 \end{frame}
32
33 \begin{frame}{What is Nemu?}
34 \begin{itemize}
35 \item A \alert{python} library,
36 \item to create \alert{emulated networks},
37 \item and run \alert{tests and experiments}
38 \item that can be \alert{repeated}.
39 \item[]{}
40 \item[] \em{A by-product of research that found a practical use.}
41 \end{itemize}
42 \end{frame}
43
44 \begin{frame}{What can I use it for?}
45 \begin{itemize}
46 \item Test your new peer-to-peer application.
47 \item[] \small{\em{Run 50 instances in your machine!}}
48 \vfill
49 \item Observe behaviour on unreliable networks.
50 \item[] \small{\em{Configure packet loss, delay, throughput...}}
51 \vfill
52 \item Justify your changes with experimental data.
53 \item[] \small{\em{Make your script output nice GNUPlot graphs!}}
54 \vfill
55 \item Verify configuration changes before applying to the production network.
56 \item[] \small{\em{Change iptables and routing configuration with
57 confidence!}}
58 \vfill
59 \item Distribute your experiment/test easily, no configuration needed!
60 \item[] \small{\em{Here, execute this and see for yourself!}}
61 \end{itemize}
62 \end{frame}
63
64 \begin{frame}[fragile]{How does it look like?}
65 \begin{semiverbatim}
66 import nemu
67
68 node0 = nemu.Node()
69 node1 = nemu.Node()
70
71 (if0, if1) = nemu.P2PInterface.create_pair(node0, node1)
72 if0.up = if1.up = True
73
74 if0.add_v4_address(address='10.0.0.1', prefix_len=24)
75 if1.add_v4_address(address='10.0.0.2', prefix_len=24)
76
77 node0.system("ping -c 5 10.0.0.2")
78 \end{semiverbatim}
79 \end{frame}
80
81 \begin{frame}{Resources}
82 Related projects:\\
83 \begin{itemize}
84 \item NEPI: original project that spawned the development of Nemu.\\
85 High-level network description, GUI, multiple back-ends.
86 \item Mininet: similar project from Stanford, developed at the same time.
87 \end{itemize}
88 \hfill
89
90 Links:\\
91 \begin{itemize}
92 \item Nemu homepage: \texttt{http://code.google.com/p/nemu/}
93 \item NEPI homepage: \texttt{http://nepi.pl.sophia.inria.fr/}
94 \item This slides + code:
95 \texttt{\$HOME/source/browse/docs/debconf-talk/}
96 \end{itemize}
97 \end{frame}
98 \end{document}
+0
-122
docs/debconf-talk/openlogo.svg less more
0 <?xml version="1.0" encoding="utf-8"?>
1 <!-- Generator: Adobe Illustrator 10.0, SVG Export Plug-In . SVG Version: 3.0.0 Build 77) -->
2 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
3 <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
4 <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
5 <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
6 <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
7 <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
8 <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
9 <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
10 <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
11 <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
12 <!ENTITY ns_svg "http://www.w3.org/2000/svg">
13 <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
14 ]>
15 <svg
16 xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="251 467" i:rulerOrigin="0 0" i:pageBounds="0 792 612 0"
17 xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
18 width="108.758" height="144.133" viewBox="0 0 108.758 144.133" overflow="visible" enable-background="new 0 0 108.758 144.133"
19 xml:space="preserve">
20 <metadata>
21 <variableSets xmlns="&ns_vars;">
22 <variableSet varSetName="binding1" locked="none">
23 <variables></variables>
24 <v:sampleDataSets xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>
25 </variableSet>
26 </variableSets>
27 <sfw xmlns="&ns_sfw;">
28 <slices></slices>
29 <sliceSourceBounds y="322.867" x="251" width="108.758" height="144.133" bottomLeftOrigin="true"></sliceSourceBounds>
30 </sfw>
31 </metadata>
32 <g id="Layer_1" i:layer="yes" i:dimmedPercent="50" i:rgbTrio="#4F008000FFFF">
33 <g>
34 <path i:knockout="Off" fill="#D70751" d="M60.969,47.645c-1.494,0.02,0.281,0.768,2.232,1.069
35 c0.541-0.422,1.027-0.846,1.463-1.26C63.451,47.751,62.215,47.758,60.969,47.645"/>
36 <path i:knockout="Off" fill="#D70751" d="M68.986,45.646c0.893-1.229,1.541-2.573,1.77-3.963
37 c-0.201,0.99-0.736,1.845-1.244,2.749c-2.793,1.759-0.264-1.044-0.002-2.111C66.508,46.104,69.096,44.589,68.986,45.646"/>
38 <path i:knockout="Off" fill="#D70751" d="M71.949,37.942c0.182-2.691-0.529-1.839-0.768-0.814
39 C71.459,37.274,71.68,39.026,71.949,37.942"/>
40 <path i:knockout="Off" fill="#D70751" d="M55.301,1.163c0.798,0.142,1.724,0.252,1.591,0.443
41 C57.768,1.413,57.965,1.239,55.301,1.163"/>
42 <path i:knockout="Off" fill="#D70751" d="M56.893,1.606l-0.561,0.117l0.523-0.048L56.893,1.606"/>
43 <path i:knockout="Off" fill="#D70751" d="M81.762,38.962c0.09,2.416-0.705,3.59-1.424,5.666l-1.293,0.643
44 c-1.057,2.054,0.105,1.304-0.652,2.937c-1.652,1.467-5.006,4.589-6.08,4.875c-0.785-0.017,0.531-0.926,0.703-1.281
45 c-2.209,1.516-1.773,2.276-5.152,3.199l-0.098-0.221c-8.33,3.92-19.902-3.847-19.75-14.443c-0.088,0.672-0.253,0.504-0.437,0.774
46 c-0.43-5.451,2.518-10.926,7.49-13.165c4.863-2.406,10.564-1.42,14.045,1.829c-1.912-2.506-5.721-5.163-10.232-4.917
47 c-4.421,0.072-8.558,2.881-9.938,5.932c-2.264,1.425-2.528,5.496-3.514,6.242c-1.329,9.76,2.497,13.975,8.97,18.936
48 c1.016,0.686,0.286,0.791,0.422,1.313c-2.15-1.006-4.118-2.526-5.738-4.387c0.86,1.257,1.787,2.479,2.986,3.439
49 c-2.029-0.685-4.738-4.913-5.527-5.085c3.495,6.258,14.178,10.975,19.775,8.634c-2.59,0.096-5.879,0.053-8.787-1.022
50 c-1.225-0.629-2.884-1.93-2.587-2.173c7.636,2.851,15.522,2.158,22.128-3.137c1.682-1.31,3.518-3.537,4.049-3.567
51 c-0.799,1.202,0.137,0.578-0.477,1.639c1.672-2.701-0.729-1.1,1.73-4.664l0.908,1.25c-0.34-2.244,2.785-4.966,2.467-8.512
52 c0.717-1.084,0.799,1.168,0.039,3.662c1.055-2.767,0.279-3.212,0.549-5.496c0.291,0.768,0.678,1.583,0.875,2.394
53 c-0.688-2.675,0.703-4.503,1.049-6.058c-0.342-0.15-1.061,1.182-1.227-1.976c0.025-1.372,0.383-0.719,0.52-1.057
54 c-0.268-0.155-0.975-1.207-1.404-3.224c0.309-0.475,0.832,1.229,1.256,1.298c-0.273-1.603-0.742-2.826-0.762-4.057
55 c-1.24-2.59-0.439,0.346-1.443-1.112c-1.32-4.114,1.094-0.955,1.258-2.823c1.998,2.895,3.137,7.385,3.662,9.244
56 c-0.4-2.267-1.045-4.464-1.834-6.589c0.609,0.257-0.979-4.663,0.791-1.405c-1.889-6.945-8.078-13.435-13.773-16.479
57 c0.695,0.637,1.574,1.437,1.26,1.563c-2.834-1.685-2.336-1.818-2.742-2.53c-2.305-0.939-2.459,0.077-3.984,0.002
58 c-4.35-2.308-5.188-2.063-9.191-3.507l0.182,0.852c-2.881-0.96-3.357,0.362-6.47,0.002c-0.189-0.147,0.998-0.536,1.976-0.677
59 c-2.786,0.368-2.656-0.55-5.382,0.101c0.671-0.471,1.383-0.784,2.099-1.184c-2.271,0.138-5.424,1.322-4.451,0.244
60 c-3.705,1.654-10.286,3.975-13.979,7.438l-0.116-0.776c-1.692,2.031-7.379,6.066-7.832,8.699l-0.453,0.105
61 c-0.879,1.491-1.45,3.18-2.148,4.713c-1.151,1.963-1.688,0.756-1.524,1.064c-2.265,4.592-3.392,8.45-4.363,11.616
62 c0.692,1.035,0.017,6.232,0.278,10.391c-1.136,20.544,14.418,40.489,31.42,45.093c2.492,0.893,6.197,0.861,9.349,0.949
63 c-3.718-1.064-4.198-0.563-7.822-1.826c-2.613-1.232-3.185-2.637-5.037-4.244l0.733,1.295c-3.63-1.285-2.111-1.59-5.065-2.525
64 l0.783-1.021c-1.177-0.09-3.117-1.982-3.647-3.033l-1.288,0.051c-1.546-1.906-2.371-3.283-2.31-4.35l-0.416,0.742
65 c-0.471-0.809-5.691-7.158-2.983-5.68c-0.503-0.458-1.172-0.747-1.897-2.066l0.551-0.629c-1.301-1.677-2.398-3.826-2.314-4.542
66 c0.695,0.938,1.177,1.114,1.655,1.275c-3.291-8.164-3.476-0.449-5.967-8.31l0.526-0.042c-0.403-0.611-0.65-1.27-0.974-1.919
67 l0.23-2.285c-2.368-2.736-0.662-11.645-0.319-16.53c0.235-1.986,1.977-4.101,3.3-7.418l-0.806-0.138
68 c1.542-2.688,8.802-10.799,12.166-10.383c1.629-2.046-0.324-0.008-0.643-0.522c3.579-3.703,4.704-2.616,7.119-3.283
69 c2.603-1.545-2.235,0.604-1.001-0.589c4.503-1.149,3.19-2.614,9.063-3.197c0.62,0.352-1.437,0.544-1.953,1.001
70 c3.75-1.836,11.869-1.417,17.145,1.018c6.117,2.861,12.994,11.314,13.266,19.267l0.309,0.083
71 c-0.156,3.162,0.484,6.819-0.627,10.177L81.762,38.962"/>
72 <path i:knockout="Off" fill="#D70751" d="M44.658,49.695l-0.211,1.047c0.983,1.335,1.763,2.781,3.016,3.821
73 C46.561,52.804,45.892,52.077,44.658,49.695"/>
74 <path i:knockout="Off" fill="#D70751" d="M46.979,49.605c-0.52-0.576-0.826-1.268-1.172-1.956
75 c0.33,1.211,1.006,2.252,1.633,3.312L46.979,49.605"/>
76 <path i:knockout="Off" fill="#D70751" d="M88.063,40.675l-0.219,0.552c-0.402,2.858-1.273,5.686-2.605,8.309
77 C86.711,46.769,87.66,43.742,88.063,40.675"/>
78 <path i:knockout="Off" fill="#D70751" d="M55.598,0.446C56.607,0.077,58.08,0.243,59.154,0c-1.398,0.117-2.789,0.187-4.162,0.362
79 L55.598,0.446"/>
80 <path i:knockout="Off" fill="#D70751" d="M20.127,19.308c0.233,2.154-1.62,2.991,0.41,1.569
81 C21.627,18.423,20.113,20.2,20.127,19.308"/>
82 <path i:knockout="Off" fill="#D70751" d="M17.739,29.282c0.469-1.437,0.553-2.299,0.732-3.132
83 C17.178,27.804,17.875,28.157,17.739,29.282"/>
84 <path i:knockout="Off" d="M13.437,125.506c-0.045,0.047-0.045,7.506-0.138,9.453c-0.092,1.574-0.232,4.957-3.568,4.957
85 c-3.429,0-4.263-3.939-4.541-5.652c-0.324-1.9-0.324-3.477-0.324-4.17c0-2.225,0.139-8.436,5.375-8.436
86 c1.576,0,2.456,0.465,3.151,0.834L13.437,125.506z M0,130.975c0,13.066,6.951,13.066,7.97,13.066
87 c2.873,0,4.727-1.576,5.514-4.309l0.093,4.123c0.881-0.047,1.761-0.139,3.197-0.139c0.51,0,0.926,0,1.298,0.047
88 c0.371,0,0.741,0.045,1.158,0.092c-0.741-1.482-1.297-4.818-1.297-12.049c0-7.043,0-18.951,0.602-22.566
89 c-1.667,0.789-3.105,1.299-6.256,1.576c1.251,1.344,1.251,2.039,1.251,8.154c-0.879-0.277-1.992-0.602-3.892-0.602
90 C1.344,118.369,0,125.598,0,130.975"/>
91 <path i:knockout="Off" d="M25.13,128.609c0.047-3.846,0.835-7.275,4.124-7.275c3.615,0,3.891,3.984,3.799,7.275H25.13z
92 M37.64,129.074c0-5.422-1.065-10.752-7.923-10.752c-9.452,0-9.452,10.475-9.452,12.697c0,9.406,4.216,13.113,11.306,13.113
93 c3.149,0,4.68-0.461,5.514-0.695c-0.046-1.668,0.185-2.734,0.465-4.17c-0.975,0.604-2.226,1.391-5.006,1.391
94 c-7.229,0-7.322-6.582-7.322-8.852H37.55L37.64,129.074"/>
95 <path i:knockout="Off" d="M52.715,131.066c0,4.309-0.787,10.102-6.162,10.102c-0.742,0-1.668-0.141-2.27-0.279
96 c-0.093-1.668-0.093-4.541-0.093-7.877c0-3.986,0.416-6.068,0.742-7.09c0.972-3.289,3.15-3.334,3.566-3.334
97 C52.02,122.588,52.715,127.453,52.715,131.066z M39.417,136.117c0,3.43,0,5.375-0.556,6.857c1.9,0.742,4.262,1.158,7.09,1.158
98 c1.807,0,7.043,0,9.869-5.791c1.344-2.688,1.807-6.303,1.807-9.037c0-1.668-0.186-5.328-1.529-7.646
99 c-1.296-2.176-3.382-3.289-5.605-3.289c-4.449,0-5.746,3.707-6.44,5.607c0-2.363,0.045-10.611,0.415-14.828
100 c-3.011,1.391-4.866,1.621-6.857,1.807c1.807,0.74,1.807,3.801,1.807,13.764V136.117"/>
101 <path i:knockout="Off" d="M66.535,143.855c-0.928-0.139-1.578-0.232-2.922-0.232c-1.48,0-2.502,0.094-3.566,0.232
102 c0.463-0.881,0.648-1.299,0.787-4.309c0.186-4.125,0.232-15.154-0.092-17.471c-0.232-1.762-0.648-2.039-1.297-2.502
103 c3.799-0.371,4.865-0.648,6.625-1.482c-0.369,2.037-0.418,3.059-0.418,6.162C65.561,140.242,65.514,141.955,66.535,143.855"/>
104 <path i:knockout="Off" d="M81.373,130.74c-0.092,2.92-0.139,4.959-0.928,6.58c-0.973,2.086-2.594,2.688-3.799,2.688
105 c-2.783,0-3.383-2.316-3.383-4.586c0-4.355,3.893-4.682,5.652-4.682H81.373z M68.629,136.441c0,2.92,0.881,5.838,3.477,7.09
106 c1.158,0.51,2.316,0.51,2.688,0.51c4.264,0,5.699-3.152,6.58-5.098c-0.047,2.039,0,3.289,0.139,4.912
107 c0.834-0.047,1.668-0.139,3.059-0.139c0.787,0,1.529,0.092,2.316,0.139c-0.51-0.787-0.787-1.252-0.928-3.059
108 c-0.092-1.76-0.092-3.521-0.092-5.977l0.047-9.453c0-3.523-0.928-6.998-7.879-6.998c-4.586,0-7.273,1.391-8.617,2.086
109 c0.557,1.02,1.02,1.898,1.436,3.893c1.809-1.576,4.172-2.41,6.58-2.41c3.848,0,3.848,2.549,3.848,6.162
110 c-0.881-0.045-1.623-0.137-2.875-0.137C72.521,127.963,68.629,130.23,68.629,136.441"/>
111 <path i:knockout="Off" d="M108.063,139.268c0.047,1.576,0.047,3.244,0.695,4.588c-1.021-0.092-1.623-0.232-3.521-0.232
112 c-1.113,0-1.715,0.094-2.596,0.232c0.184-0.602,0.279-0.834,0.371-1.623c0.139-1.064,0.232-4.633,0.232-5.885v-5.004
113 c0-2.178,0-5.33-0.141-6.441c-0.092-0.787-0.322-2.918-3.012-2.918c-2.641,0-3.521,1.945-3.846,3.521
114 c-0.369,1.621-0.369,3.383-0.369,10.24c0.045,5.932,0.045,6.486,0.508,8.109c-0.787-0.092-1.76-0.184-3.15-0.184
115 c-1.113,0-1.854,0.045-2.779,0.184c0.324-0.742,0.51-1.113,0.602-3.707c0.094-2.549,0.279-15.061-0.141-18.025
116 c-0.23-1.809-0.695-2.225-1.203-2.688c3.754-0.186,4.957-0.789,6.117-1.389v4.91c0.555-1.438,1.713-4.635,6.348-4.635
117 c5.793,0,5.838,4.217,5.885,6.996V139.268"/>
118 <path i:knockout="Off" fill="#D70751" d="M66.926,111.533l-3.838,3.836l-3.836-3.836l3.836-3.836L66.926,111.533"/>
119 </g>
120 </g>
121 </svg>
+0
-83
docs/debconf-talk/test-network.py less more
0 #!/usr/bin/env python
1 # vim:ts=4:sw=4:et:ai:sts=4
2 import os, nemu, subprocess, time
3
4 xterm = nemu.environ.find_bin("xterm")
5 mtr = nemu.environ.find_bin("mtr")
6 X = "DISPLAY" in os.environ and xterm
7
8 # Do not use X stuff.
9 X = False
10
11 # each Node is a netns
12 node = []
13 switch = []
14 iface = {}
15 SIZE = 5
16 for i in range(SIZE):
17 node.append(nemu.Node(forward_X11 = X))
18 next_pair = (i, i + 1)
19 prev_pair = (i, i - 1)
20 if i < SIZE - 1:
21 iface[(i, i + 1)] = nemu.NodeInterface(node[i])
22 iface[(i, i + 1)].up = True
23 iface[(i, i + 1)].add_v4_address(address='10.0.%d.1' % i, prefix_len=24)
24 if i > 0:
25 iface[(i, i - 1)] = nemu.NodeInterface(node[i])
26 iface[(i, i - 1)].up = True
27 iface[(i, i - 1)].add_v4_address(address='10.0.%d.2' % (i - 1),
28 prefix_len=24)
29 switch.append(nemu.Switch())
30 switch[-1].connect(iface[(i, i - 1)])
31 switch[-1].connect(iface[(i - 1, i)])
32 switch[-1].up = True
33 # Configure routing
34 for j in range(SIZE - 1):
35 if j in (i, i - 1):
36 continue
37 if j < i:
38 node[i].add_route(prefix='10.0.%d.0' % j, prefix_len=24,
39 nexthop='10.0.%d.1' % (i - 1))
40 else:
41 node[i].add_route(prefix='10.0.%d.0' % j, prefix_len=24,
42 nexthop='10.0.%d.2' % i)
43
44 print "Nodes started with pids: %s" % str([n.pid for n in node])
45
46 #switch0 = nemu.Switch(
47 # bandwidth = 100 * 1024 * 1024,
48 # delay = 0.1, # 100 ms
49 # delay_jitter = 0.01, # 10ms
50 # delay_correlation = 0.25, # 25% correlation
51 # loss = 0.005)
52
53 # Test connectivity first. Run process, hide output and check
54 # return code
55 null = file("/dev/null", "w")
56 app0 = node[0].Popen("ping -c 1 10.0.%d.2" % (SIZE - 2), shell=True,
57 stdout=null)
58 ret = app0.wait()
59 assert ret == 0
60
61 app1 = node[-1].Popen("ping -c 1 10.0.0.1", shell = True, stdout = null)
62 ret = app1.wait()
63 assert ret == 0
64 print "Connectivity IPv4 OK!"
65
66 if X:
67 app = []
68 for i in range(SIZE - 1):
69 height = 102
70 base = 25
71 cmd = "%s -eni %s" % (nemu.environ.TCPDUMP_PATH, iface[(i, i + 1)].name)
72 xtermcmd = "%s -geometry 100x5+0+%d -T %s -e %s" % (
73 xterm, i * height + base, "node%d" % i, cmd)
74 app.append(node[i].Popen(xtermcmd, shell=True))
75
76 app.append(node[-1].Popen("%s -n 10.0.0.1" % mtr, shell=True))
77 app[-1].wait()
78 for i in range(SIZE - 1):
79 app[i].signal()
80 app[i].wait()
81 else:
82 node[-1].system("%s -n --report 10.0.0.1" % mtr)
0 #/usr/bin/env python
0 #/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22 import nemu
33 import signal
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22 import os, nemu, subprocess, time
33
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # -*- coding: utf-8 -*-
22 # vim: ts=4:sw=4:et:ai:sts=4
33
88 version = '0.3.1',
99 description = 'A lightweight network emulator embedded in a small '
1010 'python library.',
11 author = 'Martín Ferrari, Alina Quereilhac',
12 author_email = 'martin.ferrari@gmail.com, aquereilhac@gmail.com',
13 url = 'http://code.google.com/p/nemu/',
11 author = 'Martina Ferrari, Alina Quereilhac',
12 author_email = 'tina@tina.pm, aquereilhac@gmail.com',
13 url = 'https://github.com/NightTsarina/nemu',
1414 license = 'GPLv2',
1515 platforms = 'Linux',
1616 packages = ['nemu'],
17 install_requires = ['python-unshare', 'python-passfd'],
1718 package_dir = {'': 'src'}
1819 )
11 # -*- coding: utf-8 -*-
22
33 # Copyright 2010, 2011 INRIA
4 # Copyright 2011 Martín Ferrari <martin.ferrari@gmail.com>
4 # Copyright 2011 Martina Ferrari <tina@tina.pm>
55 #
66 # This file is part of Nemu.
77 #
11 # -*- coding: utf-8 -*-
22
33 # Copyright 2010, 2011 INRIA
4 # Copyright 2011 Martín Ferrari <martin.ferrari@gmail.com>
4 # Copyright 2011 Martina Ferrari <tina@tina.pm>
55 #
66 # This file is part of Nemu.
77 #
11 # -*- coding: utf-8 -*-
22
33 # Copyright 2010, 2011 INRIA
4 # Copyright 2011 Martín Ferrari <martin.ferrari@gmail.com>
4 # Copyright 2011 Martina Ferrari <tina@tina.pm>
55 #
66 # This file is part of Nemu.
77 #
11 # -*- coding: utf-8 -*-
22
33 # Copyright 2010, 2011 INRIA
4 # Copyright 2011 Martín Ferrari <martin.ferrari@gmail.com>
4 # Copyright 2011 Martina Ferrari <tina@tina.pm>
55 #
66 # This file is part of Nemu.
77 #
11 # -*- coding: utf-8 -*-
22
33 # Copyright 2010, 2011 INRIA
4 # Copyright 2011 Martín Ferrari <martin.ferrari@gmail.com>
4 # Copyright 2011 Martina Ferrari <tina@tina.pm>
55 #
66 # This file is part of Nemu.
77 #
11 # -*- coding: utf-8 -*-
22
33 # Copyright 2010, 2011 INRIA
4 # Copyright 2011 Martín Ferrari <martin.ferrari@gmail.com>
4 # Copyright 2011 Martina Ferrari <tina@tina.pm>
55 #
66 # This file is part of Nemu.
77 #
11 # -*- coding: utf-8 -*-
22
33 # Copyright 2010, 2011 INRIA
4 # Copyright 2011 Martín Ferrari <martin.ferrari@gmail.com>
4 # Copyright 2011 Martina Ferrari <tina@tina.pm>
55 #
66 # This file is part of Nemu.
77 #
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 import grp, os, pwd, select, time, unittest
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 from test_util import get_devs, get_devs_netns
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 import nemu, nemu.environ, test_util
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 import nemu.protocol
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 import nemu, test_util
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 import nemu, test_util
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 import os, unittest
0 #!/usr/bin/env python
0 #!/usr/bin/env python2
11 # vim:ts=4:sw=4:et:ai:sts=4
22
33 import os, re, subprocess, sys