blob: a5b26679688259be61b75cbcaa63a22d5b63a601 [file] [log] [blame]
Alexander Afanasyevb1314b12012-11-21 18:23:42 -08001
2Obtaining metrics
3=================
4
5To obtain simulation results, you would need to connect to one or more `trace sources <doxygen/group___trace_source_list.html>`_ provided by ndnSIM classes.
6
Alexander Afanasyevf4a03592012-12-10 16:12:34 -08007It is also possible to use existing trace helpers, which collects and aggregates requested statistical information in text files.
8
Alexander Afanasyev59314802012-11-26 14:56:04 -08009.. _trace classes:
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080010
Alexander Afanasyevf4a03592012-12-10 16:12:34 -080011Packet-level trace helpers
12--------------------------
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080013
14- :ndnsim:`ndn::L3AggregateTracer`
15
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -080016 Tracing the aggregate number of Interests/Data packets forwarded by an NDN node
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080017
18 The following example enables tracing on all simulation nodes:
19
20 .. code-block:: c++
21
22 // the following should be put just before calling Simulator::Run in the scenario
23
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -070024 ndn::L3AggregateTracer::InstallAll ("aggregate-trace.txt", Seconds (1.0));
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -080025
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080026 Simulator::Run ();
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -080027
Alexander Afanasyev59314802012-11-26 14:56:04 -080028 ...
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080029
30
Alexander Afanasyev45977412014-03-11 13:21:46 -070031 Output file format is tab-separated values, with first row specifying names of the columns. Refer to the following table for the description of the columns:
32
33 +------------------+---------------------------------------------------------------------+
34 | Column | Description |
35 +==================+=====================================================================+
36 | ``Time`` | simulation time |
37 +------------------+---------------------------------------------------------------------+
38 | ``Node`` | node id, globally unique |
39 +------------------+---------------------------------------------------------------------+
40 | ``FaceId`` | interface ID (-1 for combined metric) |
41 +------------------+---------------------------------------------------------------------+
42 | ``Type`` | Type of measurements: |
43 | | |
44 | | - ``InInterests`` measurements of incoming Interests |
45 | | - ``OutInterests`` measurements of outgoing Interests |
46 | | - ``DropInterests`` measurements of dropped Interests |
47 | | - ``InData`` measurements of incoming Data |
48 | | - ``OutData`` measurements of outgoing Data |
49 | | - ``DropData`` measurements of dropped Data |
50 | | - ``InNacks`` measurements of incoming NACKs |
51 | | - ``OutNacks`` measurements of outgoing NACKs |
52 | | - ``DropNacks`` measurements of dropped NACKs |
53 | | - ``SatisfiedInterests`` measurements of satisfied Interests |
54 | | - ``TimedOutInterests`` measurements of timed out Interests |
55 +------------------+---------------------------------------------------------------------+
56 | ``Packets`` | absolute number of packets within last averaging period |
57 | | (number of packets). |
58 +------------------+---------------------------------------------------------------------+
59 | ``Kilobytes`` | absolute number of kilobytes transferred within the last averaging |
60 | | period (number of packets). |
61 +------------------+---------------------------------------------------------------------+
62
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080063- :ndnsim:`ndn::L3RateTracer`
64
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -080065 Tracing the rate in bytes and in number of packets of Interest/Data packets forwarded by an NDN node
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080066
67 The following example enables tracing on all simulation nodes:
68
69 .. code-block:: c++
70
71 // the following should be put just before calling Simulator::Run in the scenario
72
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -070073 ndn::L3RateTracer::InstallAll ("rate-trace.txt", Seconds (1.0));
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -080074
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080075 Simulator::Run ();
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -080076
Alexander Afanasyev59314802012-11-26 14:56:04 -080077 ...
Alexander Afanasyevb1314b12012-11-21 18:23:42 -080078
Alexander Afanasyev45977412014-03-11 13:21:46 -070079 Output file format is tab-separated values, with first row specifying names of the columns. Refer to the following table for the description of the columns:
80
81 +------------------+---------------------------------------------------------------------+
82 | Column | Description |
83 +==================+=====================================================================+
84 | ``Time`` | simulation time |
85 +------------------+---------------------------------------------------------------------+
86 | ``Node`` | node id, globally unique |
87 +------------------+---------------------------------------------------------------------+
88 | ``FaceId`` | interface ID (-1 for combined metric) |
89 +------------------+---------------------------------------------------------------------+
90 | ``Type`` | Type of measurements: |
91 | | |
92 | | - ``InInterests`` measurements of incoming Interests |
93 | | - ``OutInterests`` measurements of outgoing Interests |
94 | | - ``DropInterests`` measurements of dropped Interests |
95 | | - ``InData`` measurements of incoming Data |
96 | | - ``OutData`` measurements of outgoing Data |
97 | | - ``DropData`` measurements of dropped Data |
98 | | - ``InNacks`` measurements of incoming NACKs |
99 | | - ``OutNacks`` measurements of outgoing NACKs |
100 | | - ``DropNacks`` measurements of dropped NACKs |
101 | | - ``InSatisfiedInterests`` measurements of incoming satisfied |
102 | | Interests |
103 | | - ``InTimedOutInterests`` measurements of incoming timed out |
104 | | Interests |
105 | | - ``OutSatisfiedInterests`` measurements of outgoing satisfied |
106 | | Interests |
107 | | - ``OutTimedOutInterests`` measurements of outgoing satisfied |
108 | | Interests |
109 +------------------+---------------------------------------------------------------------+
110 | ``Packets`` | estimated rate (EWMA average) of packets within the last averaging |
111 | | period (number of packets/s). |
112 +------------------+---------------------------------------------------------------------+
113 | ``Kilobytes`` | estimated rate (EWMA average) within last averaging |
114 | | period (kilobytes/s) |
115 +------------------+---------------------------------------------------------------------+
116 | ``PacketsRaw`` | absolute number of packets within last averaging period |
117 | | (number of packets). |
118 +------------------+---------------------------------------------------------------------+
119 | ``KilobytesRaw`` | absolute number of kilobytes transferred within the last averaging |
120 | | period (number of packets). |
121 +------------------+---------------------------------------------------------------------+
122
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700123- :ndnsim:`L2Tracer`
Alexander Afanasyevfc9d9e12013-08-10 14:17:49 -0700124
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700125 This tracer is similar in spirit to :ndnsim:`ndn::L3RateTracer`, but it currently traces only packet drop on layer 2 (e.g.,
126 due to transmission queue overflow).
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700127
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700128 The following example enables tracing on all simulation nodes:
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700129
130 .. code-block:: c++
131
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700132 // the following should be put just before calling Simulator::Run in the scenario
133
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700134 L2RateTracer::InstallAll ("drop-trace.txt", Seconds (0.5));
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700135
136 Simulator::Run ();
137
138 ...
Alexander Afanasyevb1314b12012-11-21 18:23:42 -0800139
Alexander Afanasyev45977412014-03-11 13:21:46 -0700140 Output file format is tab-separated values, with first row specifying names of the columns. Refer to the following table for the description of the columns:
141
142 +------------------+---------------------------------------------------------------------+
143 | Column | Description |
144 +==================+=====================================================================+
145 | ``Time`` | simulation time |
146 +------------------+---------------------------------------------------------------------+
147 | ``Node`` | node id, globally unique |
148 +------------------+---------------------------------------------------------------------+
149 | ``Interface`` | interface name (currently only "combined") |
150 +------------------+---------------------------------------------------------------------+
151 | ``Type`` | Type of measurements: |
152 | | |
153 | | - ``Drop`` measurements of dropped packets |
154 +------------------+---------------------------------------------------------------------+
155 | ``Packets`` | estimated rate (EWMA average) of packets within the last averaging |
156 | | period (number of packets/s). |
157 +------------------+---------------------------------------------------------------------+
158 | ``Kilobytes`` | estimated rate (EWMA average) within last averaging |
159 | | period (kilobytes/s) |
160 +------------------+---------------------------------------------------------------------+
161 | ``PacketsRaw`` | absolute number of packets within last averaging period |
162 | | (number of packets). |
163 +------------------+---------------------------------------------------------------------+
164 | ``KilobytesRaw`` | absolute number of kilobytes transferred within the last averaging |
165 | | period (number of packets). |
166 +------------------+---------------------------------------------------------------------+
167
Alexander Afanasyevb1314b12012-11-21 18:23:42 -0800168.. note::
169
170 A number of other tracers are available in ``plugins/tracers-broken`` folder, but they do not yet work with the current code.
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800171 Eventually, we will port most of them to the current code, but it is not our main priority at the moment and would really appreciate help with writing new tracers and porting the old ones.
Alexander Afanasyevb1314b12012-11-21 18:23:42 -0800172
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800173.. _packet trace helper example:
Alexander Afanasyevb1314b12012-11-21 18:23:42 -0800174
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800175Example of packet-level trace helpers
176+++++++++++++++++++++++++++++++++++++
Alexander Afanasyev59314802012-11-26 14:56:04 -0800177
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800178This example (``ndn-tree-tracers.cc``) demonstrates basic usage of :ref:`trace classes`.
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800179
180In this scenario we will use a tree-like topology, where consumers are installed on leaf nodes and producer is in the root of the tree:
181
Alexander Afanasyevfc9d9e12013-08-10 14:17:49 -0700182.. sidebar:: Topology
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800183
Alexander Afanasyevfc9d9e12013-08-10 14:17:49 -0700184 .. aafig::
185 :aspect: 60
186 :scale: 100
187
188 /--------\ /--------\ /--------\ /--------\
189 |"leaf-1"| |"leaf-2"| |"leaf-3"| |"leaf-4"|
190 \--------/ \--------/ \--------/ \--------/
191 ^ ^ ^ ^
192 | | | |
193 \ / \ /
194 \ / \ / 10Mbps / 1ms
195 \ / \ /
196 | | | |
197 v v v v
198 /-------\ /-------\
199 |"rtr-1"| |"rtr-2"|
200 \-------/ \-------/
201 ^ ^
202 | |
203 \ / 10 Mpbs / 1ms
204 +--------\ /--------+
205 | |
206 v v
207 /--------\
208 | "root" |
209 \--------/
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800210
211The corresponding topology file (``topo-tree.txt``):
212
213.. literalinclude:: ../../examples/topologies/topo-tree.txt
214 :language: bash
215 :linenos:
216 :lines: 1-2,27-
217
218Example simulation (``ndn-tree-tracers.cc``) scenario that utilizes trace helpers:
219
220.. literalinclude:: ../../examples/ndn-tree-tracers.cc
221 :language: c++
222 :linenos:
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700223 :lines: 21-28,61-
224 :emphasize-lines: 57-58
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800225
226To run this scenario, use the following command::
227
228 ./waf --run=ndn-tree-tracers
229
230The successful run will create ``rate-trace.txt`` and ``aggregate-trace.txt`` files in the current directly, which can be analyzed manually or used as input to some graph/stats packages.
231
Alexander Afanasyevfc9d9e12013-08-10 14:17:49 -0700232.. sidebar:: Graph build using the `R script <http://www.r-project.org/>`_
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800233
Alexander Afanasyevfc9d9e12013-08-10 14:17:49 -0700234 .. image:: _static/root-rates.png
235 :alt: Interest/Data packet rates at the root node
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800236
Alexander Afanasyevfc9d9e12013-08-10 14:17:49 -0700237 .. image:: _static/root-5sec-counts.png
238 :alt: Interest/Data packet counts at the root node in 5-second intervals
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800239
240.. literalinclude:: ../../examples/graphs/rate-graph.R
241 :language: r
242 :linenos:
243
244For more information about R and ggplot2, please refer to `R language manual <http://cran.r-project.org/manuals.html>`_, `ggplot2 module manual <http://docs.ggplot2.org/current/>`_.
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800245
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700246.. _Example of packet drop tracer (L2Tracer):
247
248Example of packet drop tracer (L2Tracer)
249----------------------------------------
250
Alexander Afanasyevfc9d9e12013-08-10 14:17:49 -0700251.. sidebar:: Topology
252
253 .. image:: _static/topo-tree-25-node.png
254 :alt: 25-node tree topology
255 :width: 550px
256
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700257This example (``ndn-tree-with-l2tracer.cc``) demonstrates basic usage of :ref:`trace classes`.
258
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700259The corresponding topology file (``topo-tree-25-node.txt``):
260
261.. literalinclude:: ../../examples/topologies/topo-tree-25-node.txt
262 :language: bash
263 :linenos:
264 :lines: 2-
265
266Example simulation (``ndn-tree-with-l2tracer.cc``) scenario that utilizes trace helpers:
267
268.. literalinclude:: ../../examples/ndn-tree-with-l2tracer.cc
269 :language: c++
270 :linenos:
271 :lines: 1-
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700272 :emphasize-lines: 16,135
Alexander Afanasyev27370c52013-03-12 13:54:08 -0700273
274To run this scenario, use the following command::
275
276 ./waf --run=ndn-tree-with-l2tracer
277
278The successful run will create ``drop-trace.txt`` file in the current directly, which can be analyzed manually or used as input to some graph/stats packages.
279
280For example, the following `R script <http://www.r-project.org/>`_ will build a number of nice graphs:
281
282.. literalinclude:: ../../examples/graphs/drop-graph.R
283 :language: r
284 :linenos:
285
286.. image:: _static/l2-rate-tracer.png
287 :alt: Packet drop rates on routers
288
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800289.. _cs trace helper:
290
291Content store trace helper
292--------------------------
293
Alexander Afanasyevb1d6b032013-01-18 14:11:11 -0800294- :ndnsim:`ndn::CsTracer`
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800295
Alexander Afanasyevb1d6b032013-01-18 14:11:11 -0800296 With the use of :ndnsim:`ndn::CsTracer` it is possible to obtain statistics of cache hits/cache misses on simulation nodes.
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800297
298 The following code enables content store tracing:
299
300 .. code-block:: c++
301
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800302 // the following should be put just before calling Simulator::Run in the scenario
303
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700304 ndn::CsTracer::InstallAll ("cs-trace.txt", Seconds (1));
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800305
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800306 Simulator::Run ();
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800307
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800308 ...
309
310.. - Tracing lifetime of content store entries
311
312.. Evaluate lifetime of the content store entries can be accomplished using modified version of the content stores.
313.. In particular,
314
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800315.. _cs trace helper example:
316
317Example of content store trace helper
318+++++++++++++++++++++++++++++++++++++
319
320This example (``ndn-tree-cs-tracers.cc``) demonstrates basic usage of content store tracer.
321
322In this scenario we will use the same tree-like topology as in :ref:`previous example <packet trace helper example>`, where consumers are installed on leaf nodes and producer is in the root of the tree.
323The main difference is that each client request data from the same namespace: /root/1, /root/2, ... Another small difference is that in this scenario we start our application not at the same time, but 10 ms apart.
324
325Example simulation (``ndn-tree-cs-tracers.cc``) scenario that utilizes trace helpers:
326
327.. literalinclude:: ../../examples/ndn-tree-cs-tracers.cc
328 :language: c++
329 :linenos:
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700330 :lines: 21-28,61-
331 :emphasize-lines: 59
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800332
333
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800334To run this scenario, use the following command::
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800335
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800336 ./waf --run=ndn-tree-cs-tracers
337
338The successful run will create ``cs-trace.txt``, which similarly to trace file from the :ref:`tracing example <packet trace helper example>` can be analyzed manually or used as input to some graph/stats packages.
339
340
341Application-level trace helper
342------------------------------
343
344- :ndnsim:`ndn::AppDelayTracer`
345
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800346 With the use of :ndnsim:`ndn::AppDelayTracer` it is possible to obtain data about for delays between issuing Interest and receiving corresponding Data packet.
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800347
348 The following code enables application-level Interest-Data delay tracing:
349
350 .. code-block:: c++
351
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800352 // the following should be put just before calling Simulator::Run in the scenario
353
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700354 ndn::AppDelayTracer::InstallAll ("app-delays-trace.txt");
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800355
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800356 Simulator::Run ();
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800357
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800358 ...
359
Alexander Afanasyev29dfb982013-01-18 20:04:15 -0800360 Output file format is tab-separated values, with first row specifying names of the columns. Refer to the following table for the description of the columns:
361
362 +-----------------+---------------------------------------------------------------------+
363 | Column | Description |
364 +=================+=====================================================================+
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800365 | ``Time`` | simulation time when SeqNo was receivied |
366 +-----------------+---------------------------------------------------------------------+
Alexander Afanasyev29dfb982013-01-18 20:04:15 -0800367 | ``Node`` | node id, global unique |
368 +-----------------+---------------------------------------------------------------------+
369 | ``AppId`` | app id, local unique on the node, not global |
370 +-----------------+---------------------------------------------------------------------+
371 | ``SeqNo`` | seq number of the Interest-Data |
372 +-----------------+---------------------------------------------------------------------+
373 | ``Type`` | Type of delay: |
374 | | |
375 | | - ``LastDelay`` means that ``DelayS`` and ``DelayUS`` represent |
376 | | delay between last Interest sent and Data packet received |
377 | | - ``FullDelay`` means that ``DelayS`` and ``DelayUS`` represent |
378 | | delay between first Interest sent and Data packet received |
379 | | (i.e., includes time of Interest retransmissions) |
380 +-----------------+---------------------------------------------------------------------+
381 | ``DelayS`` | delay value, specified in seconds |
382 +-----------------+---------------------------------------------------------------------+
383 | ``DelayUS`` | delay value, specified in microseconds (10^-6) |
384 +-----------------+---------------------------------------------------------------------+
Alexander Afanasyev400aae12013-01-19 13:27:52 -0800385 | ``RetxCount`` | number of Interest retransmissions (for LastDelay always equal to 1)|
386 +-----------------+---------------------------------------------------------------------+
Alexander Afanasyev1a0fff62013-01-19 14:29:51 -0800387 | ``HopCount`` | combined number of number of hops for Interest and Data packet. |
388 | | Note that HopCount is increased anytime somebody calls Send method |
389 | | on a face, including delivery of Interest/Data to application via |
390 | | an AppFace (but not from application to ndn::L3Protocol!). |
391 | | |
392 | | One consequence is that Interests satisfied by an app will have |
393 | | even hop count (min hop count = 2), and Interests satisfied from |
Alexander Afanasyev4e30a8f2013-11-21 19:55:49 -0800394 | | caches will have odd hop count (min hop count = 1) |
Alexander Afanasyev1a0fff62013-01-19 14:29:51 -0800395 +-----------------+---------------------------------------------------------------------+
Alexander Afanasyev29dfb982013-01-18 20:04:15 -0800396
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800397.. _app delay trace helper example:
398
399Example of application-level trace helper
400+++++++++++++++++++++++++++++++++++++++++
401
402This example (``ndn-tree-app-delay-tracer.cc``) demonstrates basic usage of application-level Interest-Data delay tracer.
403
Alexander Afanasyevfc8425c2013-01-31 13:33:49 -0800404In this scenario we will use the same tree-like topology as in :ref:`packet trace helper example <packet trace helper example>`, where consumers are installed on leaf nodes and producer is in the root of the tree and clients request data from the same namespace: /root/1, /root/2, ...
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800405
406Example simulation (``ndn-tree-app-delay-tracer.cc``) scenario that utilizes trace helpers:
407
408.. literalinclude:: ../../examples/ndn-tree-app-delay-tracer.cc
409 :language: c++
410 :linenos:
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700411 :lines: 21-28,61-
412 :emphasize-lines: 59
Alexander Afanasyevdb64ff12013-01-18 16:37:31 -0800413
414
415To run this scenario, use the following command::
416
417 ./waf --run=ndn-tree-app-delay-tracer
418
419The successful run will create ``app-delays-trace.txt``, which similarly to trace file from the :ref:`packet trace helper example <packet trace helper example>` can be analyzed manually or used as input to some graph/stats packages.
420
Alexander Afanasyevf4a03592012-12-10 16:12:34 -0800421
Alexander Afanasyevb5e77d82013-04-10 15:55:26 -0700422Other types of stats
423--------------------
424
425.. _periodic tracing of Pending Interest Table (PIT) size:
426
427Periodic tracing of Pending Interest Table (PIT) size
428+++++++++++++++++++++++++++++++++++++++++++++++++++++
429
430This example (``ndn-simple-with-pit-count-stats.cc``) shows how you can periodically print out current size of PIT on the selected nodes.
431
432.. literalinclude:: ../../examples/ndn-simple-with-pit-count-stats.cc
433 :language: c++
434 :linenos:
435 :lines: 20-26,47-
Alexander Afanasyev3fe94dc2013-08-09 17:12:12 -0700436 :emphasize-lines: 9-20,43-46,59-61
Alexander Afanasyevb5e77d82013-04-10 15:55:26 -0700437
438To run this scenario, use the following command::
439
440 ./waf --run=ndn-simple-with-pit-count-stats