Compare commits

...

1750 Commits

Author SHA1 Message Date
Tom Henderson c994aa10d8 rescan remaining bindings 2014-09-15 20:51:08 -07:00
Tom Henderson 47e3b01c82 silence uninitialized variable warning for unused member 2014-09-15 20:50:43 -07:00
Tom Henderson 55501d239e conditional include of fd-net-device for lte module 2014-09-15 20:49:38 -07:00
Peter D. Barnes, Jr. fdfece661a Bug 1972: documentation to clarify the behavior with repeated argument 2014-09-15 14:35:11 -07:00
Tom Henderson 9f77006419 remove outdated reference to statistics chapter 2014-09-15 13:01:31 -07:00
Tom Henderson 52567ff22b fix formatting for CoDel chapter 2014-09-15 13:00:23 -07:00
Tommaso Pecorella d01fcfd9ab update tutorial to describe Simulator::Stop 2014-09-15 11:29:15 -07:00
Tommaso Pecorella 9b1f7c5b4b Bug 1911 - AODV can not work on nodes with more than one NetDevice 2014-09-13 19:23:39 +02:00
Tom Henderson 4ea5aa6f01 update AUTHORS 2014-09-13 09:00:41 -07:00
Tom Henderson 8e781d4d16 update CHANGES.html 2014-09-13 08:50:02 -07:00
Tom Henderson 1bfd17915d update RELEASE_NOTES 2014-09-13 08:47:05 -07:00
Sébastien Deronne a39ea72650 update WiFi documentation 2014-09-12 20:48:46 -07:00
Tom Henderson 1d0b7ff106 temporarily disable two tests failing for OS X 2014-09-12 20:27:47 -07:00
Tom Henderson 9cfe687e4a prevent TcpHeader::Deserialize() from asserting; fix a few small bugs in option code 2014-09-12 18:29:47 -07:00
Tom Henderson 45b1b3daa1 silence compiler warning 2014-09-12 18:19:47 -07:00
Tom Henderson 4394d1d4ba clarify Header::Deserialize documentation 2014-09-12 17:49:06 -07:00
Alexander Afanasyev 5b1096a52a Bug 1673: Config::Set/Connect does not search for attributes in parent classes 2014-09-12 17:34:43 -07:00
Tom Henderson 161c703a1f test case for config path attribute search on parent classes (bug 1673) 2014-09-12 17:42:12 -07:00
Tom Henderson 6674f95bc1 equation formatting for latex 2014-09-12 14:07:32 -07:00
Tommaso Pecorella 066e14f83f Bug 1824 - aodv fixes 2014-09-12 22:51:20 +02:00
Tom Henderson 3d1daf7c5a chapter included multiple times in manual 2014-09-12 13:36:01 -07:00
Peter D. Barnes, Jr. 070e2da241 Bug 1964: GetInteger overflow 2014-09-12 13:03:06 -07:00
Tom Henderson 3048ebcced regression test for bug 1964 2014-09-12 12:55:00 -07:00
Tommaso Pecorella 077579b060 Bug 1824 - L4 protocol sockets should support BindToNetDevice over IPv6 2014-09-12 20:47:17 +02:00
Tom Henderson 2cafbd6dbd repair wscript 2014-09-12 10:18:55 -07:00
Tom Henderson e2f347c513 make openflow-switch peek transport headers based on IPv4 protocol number information 2014-09-11 21:51:29 -07:00
Tom Henderson 884ad61823 adjust ns3tcp-cwnd-test-suite response vector 2014-09-11 20:08:17 -07:00
Tom Henderson 3a872a1d8c update test vector for test ns3-tcp-interoperability 2014-09-11 17:43:37 -07:00
Tom Henderson cc9e4d787b improve printing of window scale option 2014-09-11 17:29:21 -07:00
Tom Henderson 80c9d1e629 update test vectors for test ns3-tcp-loss 2014-09-11 17:22:58 -07:00
Tom Henderson fb59f7982a update test vectors for test ns3-tcp-state 2014-09-11 15:29:42 -07:00
Tom Henderson bc68d4f0e0 new test vectors for devices-mesh-flame-regression 2014-09-11 14:56:06 -07:00
Tom Henderson 9133c72c96 update mesh flame tests to account for wifi random variables 2014-09-11 14:55:42 -07:00
Tom Henderson cbc91604dd new test vectors for devices-mesh-dot11s-regression 2014-09-11 14:20:28 -07:00
Tom Henderson fafad95f72 update mesh tests to account for wifi random variables 2014-09-11 14:06:19 -07:00
Tom Henderson f17bd8c546 Mesh Wifi uses also RegularWifiMac 2014-09-11 13:45:38 -07:00
Tommaso Pecorella 274fcc293a Update RELEASE_NOTES 2014-09-11 22:47:53 +02:00
Kristian A. Hiorth 8d4db65927 Bug 1981 - PyViz shell not compatible with ipython >= 0.11 2014-09-11 20:08:05 +01:00
Tom Henderson f627ad5df2 update regression traces for OLSR 2014-09-11 11:32:09 -07:00
Tom Henderson 9db13b8df4 fix the stream assignment of some additional random variables in OLSR test suite 2014-09-11 11:23:03 -07:00
Tom Henderson 87c3097be5 update AODV regression traces 2014-09-11 10:28:37 -07:00
Tom Henderson bb457316d4 rescan internet bindings 2014-09-10 21:07:04 -07:00
Tom Henderson d4901ad3b0 move unknown TCP option handling with the base class 2014-09-10 17:31:46 -07:00
Tom Henderson bf9893dbf3 add processing for unknown TCP options 2014-09-10 16:58:31 -07:00
Tom Henderson 15333eaf9a calculate send scale factor when sending the SYN-ACK instead of when reading the SYN options 2014-09-10 15:08:30 -07:00
Tom Henderson a80337baab add some logging 2014-09-10 15:06:10 -07:00
Tom Henderson 8443885e88 restore TCP option padding approach that avoids NOPs 2014-09-10 15:05:57 -07:00
Tom Henderson d559ff6c4c remove unsupported option types from enum 2014-09-09 16:15:49 -07:00
Tommaso Pecorella 0950f7f943 TcpOptions Deserialize should return zero if a deserialization error happens 2014-09-09 09:44:37 +02:00
Natale Patriciello b6d33fd296 TCP Options - Valgrind fixes 2014-09-10 19:09:06 +02:00
Daniel Lertpratchya 1857322c43 Bug 1858 - wireless examples not correctly recording packet reception - reported by Scott Carpenter <scarpen_at_ncsu.edu> 2014-09-10 08:27:26 +02:00
Tommaso Pecorella 208fdf2681 Update RELEASE_NOTE 2014-09-10 06:15:01 +02:00
Tommaso Pecorella 65d1ba667b rescan network bindings 2014-09-10 06:09:55 +02:00
Tommaso Pecorella ae9fbb2eaa rescan applications bindings 2014-09-10 05:58:38 +02:00
Tommaso Pecorella b489a41127 Bug 1811 - Basic traffic generator for network module 2014-09-10 06:09:45 +02:00
Tom Henderson 9d2770100d last TCP option should be END, not NOP 2014-09-06 09:40:18 -07:00
Tommaso Pecorella 287bda5b7e Move some tests from src/test to appropriate places 2014-09-06 07:09:08 +02:00
Tommaso Pecorella 98945439e1 Enhancements to SimpleNetDevice and SimpleChannel 2014-09-06 07:08:49 +02:00
Tommaso Pecorella 3ae1348425 Fix clang "errors" about uninitialized variables. 2014-09-06 06:57:27 +02:00
Tom Henderson a0fefe1074 rescan wifi bindings 2014-09-05 18:50:40 -07:00
Tom Henderson 5072f3a3c6 rescan energy bindings 2014-09-05 18:46:15 -07:00
Tom Henderson 68a33cd7ba rescan lte bindings 2014-09-05 18:19:30 -07:00
Tom Henderson f6fc901227 rescan internet bindings 2014-09-05 18:00:05 -07:00
Piotr Gawlowicz 74f0cf7073 GSoC 2014 FFR algorithms - figures 2014-09-05 01:46:10 +02:00
Piotr Gawlowicz a9ef49d196 GSoC 2014 FFR algorithms 2014-09-05 01:12:55 +02:00
Anh Nguyen a64d69ce19 documentation for CoDel queue 2014-09-04 12:33:50 -07:00
Anh Nguyen 07357e4048 examples for CoDel queue 2014-09-04 12:29:36 -07:00
Anh Nguyen 4c20e1b099 test suite for CoDel queue 2014-09-04 12:27:00 -07:00
Anh Nguyen 153479dac9 changes suggested in original code review, and aditional improvements made during 2014 GSoC project 2014-09-04 12:24:07 -07:00
Tom Henderson 16e4f9b004 move CoDel queue model to internet module 2014-09-04 12:18:19 -07:00
Dave Taht 6b05c585d1 Add Codel alogithm support
---
 src/network/utils/codel-queue.cc |  482 ++++++++++++++++++++++++++++++++++++++
 src/network/utils/codel-queue.h  |  130 ++++++++++
 2 files changed, 612 insertions(+), 0 deletions(-)
 create mode 100644 src/network/utils/codel-queue.cc
 create mode 100644 src/network/utils/codel-queue.h
2014-05-22 14:42:47 -05:00
Natale Patriciello 07364f0e31 Support for basic TCP options, window scale, and timestamps, based on original code proposal by Adrian S.-W. Tam 2014-09-05 16:57:11 -07:00
Natale Patriciello b4a48d02b2 GT_OR_EQ and LT_OR_EQ macros for testing 2014-09-04 15:17:22 -07:00
Stefano Avallone bd8c6c8a32 add support for a Wifi sleep mode 2014-09-05 16:33:57 -07:00
Cristiano Tapparello d3ff87aeb2 Energy harvester model 2014-09-05 15:38:55 -07:00
Tom Henderson 47d531fb41 support disabling of NSC by command-line argument 2014-09-05 15:25:10 -07:00
Budiarto Herman 81820dd14f Updated fix for Bug 1762 - UE stuck in IDLE_CONNECTING because RRC CONN REQ is not transmitted 2014-09-04 23:13:41 +03:00
Nicola Baldo c69d0bfe09 fixed Bug 1893 - issue in DoSchedUlTriggerReq with harq 2014-09-03 13:42:12 +02:00
Tommaso Pecorella 07040f354c Improve IPv6 LL multicast interface selection 2014-08-30 18:20:10 +02:00
Tommaso Pecorella 51aa7c22a4 Improve ICMPv6 NS printing 2014-08-30 18:19:25 +02:00
Tommaso Pecorella dda7b43d44 Bug 1967 - LL Multicast is not compressed in the right way in IPHC 2014-08-30 18:25:22 +02:00
Tommaso Pecorella 6d42b5f6c1 lr-wpan: remove dead code and add Doxygen 2014-08-25 19:15:36 +02:00
Tommaso Pecorella 8225948ffd [Doxygen] NetDevice small fix 2014-08-25 09:34:17 +02:00
Tommaso Pecorella be8cd47fc8 [PyBindGen] rescan internet module 2014-08-24 17:29:26 +02:00
Tommaso Pecorella 6ac283a20b [Doxygen] internet module fixes 2014-08-24 17:16:17 +02:00
Tommaso Pecorella 35f32fe073 Bug 1963 - AODV can tag the same packet twice (and raise an assert). 2014-08-23 17:37:24 +02:00
Tommaso Pecorella 62eaf4f7cb [manual] Packet::EnableMetadata doesn't exist anymore 2014-08-23 17:34:17 +02:00
Tom Henderson af37384cff Suppress binding for EmuEpcHelper if EmuFdNetDevice is not enabled 2014-08-19 14:29:52 -07:00
Peter D. Barnes, Jr. 16af384434 [Sphinx] Attributes manual chapter 2014-08-18 17:43:37 -07:00
Peter D. Barnes, Jr. e34b13367b Show default attribute value in command line example - cleanup 2014-08-18 16:00:42 -07:00
Tommaso Pecorella fb985d0860 Show default attibute value in command line example - fix 2014-08-18 23:45:04 +02:00
Peter D. Barnes, Jr. 97f06df836 Show initial values of arguments; show attribute value. 2014-08-18 12:36:07 -07:00
Peter D. Barnes, Jr. 06fe039cd9 Fix misspelled argument name; refactor to use LookupAttributeByName 2014-08-18 12:35:33 -07:00
Vedran Miletić e22f7b5958 Make ordering of member variables in NSC TCP socket implementation header/source consistent 2014-08-18 11:56:15 +02:00
Tommaso Pecorella 27e7935c6c [PyBindGen] Rescan core module 2014-08-15 14:27:15 +02:00
Peter D. Barnes, Jr. b8b676a8d7 CommandLine Attribute shorthand 2014-08-14 12:46:11 -07:00
Peter D. Barnes, Jr. fa19c3d5e3 [doxygen] CommandLine formatting 2014-08-14 12:41:38 -07:00
Peter D. Barnes, Jr. 60505541ec Sort output of the CommandLine::Print functions 2014-08-14 11:31:12 -07:00
Tommaso Pecorella 894e118a3b [PyBindGen] Rescan internet module 2014-08-14 06:34:47 +02:00
Peter D. Barnes, Jr. 49bf6a544f [Doxygen] Fix errors; fix organization of Callback; organize Time. 2014-08-13 17:17:26 -07:00
Tommaso Pecorella 2d79be2427 Improvements to tcp-variants-comparison example 2014-08-13 22:43:18 +02:00
Tommaso Pecorella fbad78fbb4 Bug 1831 - TcpSocket SlowStartThreshold is not a TraceSource 2014-08-13 23:46:16 +02:00
Alina Quereilhac 10269d0a5b Fix for Bug 1961 - planetlab-tap-creator "variable set but not used" 2014-08-06 11:00:06 +02:00
Tommaso Pecorella fe90df6c23 Bug 1960 - Wrong information on index range, about Node::GetDevice 2014-08-03 15:09:19 +02:00
Tom Henderson 9a8bbca8df rescan LTE bindings 2014-08-03 09:55:53 -07:00
Nicola Baldo d762f84977 refined fix for Bug 1762 2014-08-01 14:30:42 +02:00
Budiarto Herman c53882872b fix Bug 1762 - UE stuck in IDLE_CONNECTING because RRC CONN REQ is not transmitted 2014-07-31 14:00:06 +02:00
Tommaso Pecorella 6af34ad829 Bug 1941 - [cont.] Remove unnecessary dependency on Application module in other modules 2014-07-27 23:02:38 +02:00
Tommaso Pecorella e3729362c9 Avoid checking all Link-Local Multicast cases in IPv6 routing 2014-07-26 13:08:33 +02:00
Lynne Salameh 691b9f892f Bug 1955 - The IPv4 identification field should be unique per (source, destination, protocol) tuple 2014-07-20 11:29:28 +02:00
Roman Naumann f0d6341ddf Bug 1951 - AODV does not update nexthop for 1-hop nodes 2014-07-20 10:13:02 +02:00
Peter D. Barnes, Jr. f8bb25d058 Enable explicit setting of the maximum look ahead in distributed simulation. 2014-07-17 15:38:07 -07:00
Peter D. Barnes, Jr. e4f944939c NS_LOG_CONDITION to control logging based on file-local state. 2014-07-17 15:34:57 -07:00
Dmitrii Shakshin 005ea81ecf NetAnim: Support for system id associated with nodes 2014-07-10 08:19:06 -07:00
Sascha Alexander Jopen 9fd85ad079 Add const double& operator[] to SpectrumValue 2014-07-08 08:27:21 +02:00
Tom Henderson b3a080b633 enable emu-related files based on waf configuration check results 2014-07-05 09:51:04 -07:00
Sascha Alexander Jopen 4078d90539 Bug 1943 - Waveform generator signal duration calc error 2014-07-04 20:22:47 +02:00
Nicola Baldo 19653b4a77 updated LTE user docs and RELEASE_NOTES for EmuEpcHelper 2014-07-03 16:43:58 +02:00
Nicola Baldo 057f56133b merge 2014-07-03 15:39:00 +02:00
Nicola Baldo fe5ee0c29b merge 2014-07-03 10:48:41 +02:00
Tom Henderson 4af772ceaa print error message when test.py list printing fails 2014-06-30 11:09:35 -07:00
John Abraham 7ec65a1816 NetAnim: Valgrind fixes 2014-06-29 20:19:00 -07:00
John Abraham b397d2775e NetAnim: Cleanup and support for more built-in counters 2014-06-28 09:59:03 -07:00
Tommaso Pecorella 31f05a6594 Bug 1941 - [cont.] Remove unnecessary dependency on Application module in other modules 2014-06-28 12:35:08 +02:00
Tommaso Pecorella d7731afca3 Bug 1941 - [partial] Remove unnecessary dependency on Application module in other modules 2014-06-28 08:31:24 +02:00
Tommaso Pecorella 16671aa50d Bug 1937 - FlowMonitor fails to track multiplexed packets 2014-06-27 22:28:07 +02:00
Tom Henderson aa3a17d3e5 improve point-to-point-net-device.cc logging 2014-06-26 13:15:49 -07:00
mmiozzo 7716182610 Bug-fix: Bug 1935 - Bug in all Uplink Schedulers regarding HARQ retx handling 2014-06-26 13:44:03 +02:00
Tom Henderson a0be1da4b5 update pybindgen version 2014-06-23 09:52:33 -07:00
Tommaso Pecorella 6bde2bde12 Bug 1921 - Icmpv6L4Protocol::ForgeEchoRequest returns a malformed packet 2014-06-18 19:03:10 +02:00
Tommaso Pecorella b7a3cff456 Bug 1932 - NdiscCache entry is not failsafe on double neighbor probing 2014-06-17 23:31:52 +02:00
Roman Naumann 69d284bc83 Credit for Bug 1930 finding and patch. 2014-06-17 22:44:08 +02:00
Tommaso Pecorella 5a3b3d38e3 Bug 1930 - Use of invalid reference in OLSR RemoveLinkTuple 2014-06-17 22:40:32 +02:00
Tom Henderson 71d0c0f554 start RELEASE_NOTES and CHANGES.html for next version 2014-06-17 10:59:19 -07:00
Tom Henderson 060d270a04 Added tag ns-3.20 for changeset da0eb48df23f 2014-06-16 21:58:35 -07:00
Alina Quereilhac e6fc8c2ad2 update fd-tap-ping.cc instructions 2014-06-15 08:54:48 -07:00
Tom Henderson 14ee3219ae update RELEASE_NOTES 2014-06-12 12:36:44 -07:00
Sascha Jopen 5a00199a04 bug 1924 - sensing radius and CCA 2014-06-12 12:35:32 -07:00
Tom Henderson eac8c0a104 update RELEASE_NOTES 2014-06-11 20:27:12 -07:00
Unknown b9b6bacc5f bug 1923: Patch for disabling active probe requests 2014-06-11 20:26:02 -07:00
Tom Henderson ba584e1ac1 update CHANGES.html 2014-06-06 12:43:03 -07:00
Tom Henderson 2a1014565d update release notes 2014-06-06 12:32:41 -07:00
Tom Henderson 620d770f3c add author 2014-06-06 12:01:56 -07:00
Tom Henderson 15a9d1bb55 rescan wifi bindings 2014-06-06 12:00:58 -07:00
Scott Carpenter 131381a91a bug 1922- GetSsid() should not be fatal 2014-06-06 10:49:03 -07:00
Tom Henderson 50cb988c49 bug 1920 - remove DSR attribute that was conflicting with config store 2014-06-06 10:47:21 -07:00
Scott Carpenter f80a00ba88 bug 1919 - Strip trailing semicolons from mobility trace files 2014-06-06 10:18:10 -07:00
Sébastien Deronne b5f51f5366 Bug 1907- Add IsMcsSupported() 2014-06-06 10:15:54 -07:00
Tom Henderson 243e8a0645 bug 1868: restrict the compiler version for Wstrict-overflow=5 until gcc-4.9 issues are addressed 2014-06-06 10:11:35 -07:00
Tom Henderson b6a990f767 describe bug 1770 issue and workaround 2014-06-06 10:10:51 -07:00
Tom Henderson 0c9e87a440 update CHANGES.html for release 2014-05-30 21:39:15 -07:00
Tom Henderson c9051e4101 update AUTHORS list 2014-05-30 21:38:48 -07:00
Tom Henderson c9c31cce11 update RELEASE_NOTES 2014-05-30 17:38:31 -07:00
Tom Henderson 70f3450c5e update bindings 2014-05-30 10:07:22 -07:00
Unknown b9c2b3087c bug 1913: avoid crash in BlockAckManager::GetNextPacket 2014-05-29 23:00:30 -07:00
Tom Henderson 0cc9e25227 update traces for bug 1912 fix 2014-05-29 22:52:23 -07:00
Unknown 17ef04d50b bug 1912: avoid multiple MacTxMiddle instances 2014-05-29 22:51:05 -07:00
Tommaso Pecorella d1171adee8 Clarify doxygen for [Tcp,Udp]Socket ForwardUp functions 2014-05-29 21:37:33 +02:00
Tom Henderson fe5b9e2242 bug 1868: enable -Wstrict-overflow only for newer gcc versions 2014-05-28 23:03:23 -07:00
Tom Henderson f5b4f0961e remove extra newline 2014-05-28 13:10:59 -07:00
Tom Henderson f32803f7b9 bug 1900: adjust an AODV test to provide consistent traces and avoid floating point differences 2014-05-28 13:00:15 -07:00
Tommaso Pecorella e77f033498 Update RELEASE_NOTES 2014-05-21 21:03:33 +02:00
Tommaso Pecorella e74cb7f6cd Bug 1916 - RandomWalk2dMobilityMode default "Bounds" attribute is not a rectangle 2014-05-21 21:01:41 +02:00
Chris Hood 23a3e5f751 Bug 1915 - BRITE channel delay is rounded to an integer 2014-05-19 21:34:20 +02:00
Peter D. Barnes, Jr. 1164685c68 [doxygen] Fix generation of Time docs 2014-05-15 16:09:51 -07:00
Tommaso Pecorella cd8eaad8cb lr-wpan - Add Enqueue and Dequeue ASCII trace 2014-05-08 22:25:56 +02:00
Tom Henderson 23a41e0e22 add netanim capability to mixed-wireless.cc 2014-05-04 18:46:44 -07:00
Tom Henderson 7867d64876 make mobility and visualization more reasonable for example 2014-05-04 18:37:17 -07:00
Tom Henderson ddd060a1cc re-align mixed-wireless C++ and Python example 2014-05-04 17:59:01 -07:00
Alexander Afanasyev 894699eccf bug 1857: detect location of installed boost libraries 2014-05-03 15:56:25 -07:00
Tom Henderson 2661df4606 make waf smarter about finding BRITE automatically 2014-05-03 10:12:46 -07:00
Tommaso Pecorella 6fcc641c25 Update RELEASE_NOTE 2014-05-02 23:52:36 +02:00
Biljana Bojovic c4269df612 Bug 1894 - CqaFfMacScheduler needs an update 2014-05-02 17:06:37 +02:00
Nicola Baldo c612a2b43a added missing bugs in RELEASE_NOTES 2014-05-02 16:48:50 +02:00
Yufei Cheng ea04312f27 Bug 1872 and 1895 - DSR model improvements (credits also to Tomasz Seweryn <tomasz.seweryn7@gmail.com>) 2014-05-02 16:38:06 +02:00
Tommaso Pecorella d9e06f64fa fix RELEASE_NOTES 2014-05-02 08:58:51 +02:00
Tommaso Pecorella 8604dad16c lr-wpan ascii trace fix 2014-05-02 08:47:44 +02:00
Brian Swenson 7dbc7f63e4 Bug1791 patch reverted 2014-05-01 16:49:11 -04:00
Tommaso Pecorella d746b4a9d9 Add sixlowpan example using lr-wpan 2014-05-01 15:18:41 +02:00
Peter D. Barnes, Jr. a43d770825 [Bug 1868] Optimized builds are sensitive to -fstrict-overflow 2014-04-30 21:32:57 -07:00
Peter D. Barnes, Jr. 84d277bfa3 Disambiguate std::pow 2014-04-30 20:54:05 -07:00
Tom Henderson 08a075ef1d fix lr-wpan documentation build 2014-04-30 13:40:07 -07:00
Tom Henderson ff1f9f9c5f append list of skipped/failed/crashed/valgrined tests to end of test.py output 2014-04-30 13:06:17 -07:00
Tom Henderson 2c89f96f00 add lr-wpan bindings 2014-04-30 13:05:31 -07:00
Tom Henderson e0bb22b2f2 disable another copy constructor 2014-04-30 13:01:22 -07:00
Tom Henderson 20e713630a some fixes to enable Python bindings scanning 2014-04-30 12:19:33 -07:00
Sascha Jopen 022360d1f3 Reverted lr-wpan-error-model "fix", the differences were due to randomness problems. 2014-04-27 10:48:18 +02:00
Tom Henderson 2d87ec3973 update AUTHORS 2014-04-26 23:29:46 -07:00
Tom Henderson 57889369b1 Apply utils/check-style.py script on lr-wpan source code again 2014-04-26 23:27:34 -07:00
Tom Henderson 2d90b21794 more verbose test name for lr-wpan-energy-detection 2014-04-26 23:11:44 -07:00
Sascha Jopen fa763e41c5 Added firing of missing MAC TX trace sources.
Fixed error model test case after changes to the interference handling.
More code cleanup and documentation.
2014-04-26 22:23:25 +02:00
Sascha Jopen 1e7427bab1 More documentation for the PHY. 2014-04-26 09:06:00 +02:00
Margherita Filippetti 74081e597a Add number of CSMA retries to sent packet trace 2014-04-25 23:46:03 +02:00
Tom Henderson 45884e4786 assign fixed random variable streams to lr-wpan tests 2014-04-26 22:21:13 -07:00
Tom Henderson 95b22341a9 enable assignment of lr-wpan random variable stream indices 2014-04-26 22:21:03 -07:00
Tom Henderson 7059e4d396 add TestCase type specifier 2014-04-26 14:09:57 -07:00
Tom Henderson d53f68be0c multiple inclusion of lr-wpan-collision-test.cc 2014-04-26 05:44:11 -07:00
Tom Henderson ce1c08f9a7 restore Start/DoStart change to Initialize/DoInitialize to LrWpanNetDevice 2014-04-26 05:33:42 -07:00
Sascha Jopen cc1ff6ac3b First Doxygen documentation batch and code cleanups.
Moved to new random variable streams.
Use Time class where times are calculated.
Use std::min/max provided by standard library instead of own macros.
Always return a 0 FCS value for MAC trailers without FCS calculation.
2014-04-25 19:02:57 +02:00
Sascha Jopen 2eda1ac2e6 Removed sixlowpan example from scratch folder. This should go to the respective module. 2014-04-25 18:58:47 +02:00
Sascha Jopen 6ded61e205 Bug fixes and test for energy detection code. 2014-04-25 12:51:56 +02:00
Sascha Jopen bdbf0fd6e7 Changed default receiver sensitivity value. 2014-04-24 12:47:09 +02:00
Sascha Jopen 42ccc4e1dc Added log components. 2014-04-24 12:46:33 +02:00
Tom Henderson b5f0ebcab2 add lr-wpan documentation links to model library Makefile 2014-04-25 14:50:39 -07:00
Sascha Jopen e49d50c75a Updated documentation. Added debugging code. 2014-04-24 12:45:49 +02:00
Tommaso Pecorella 9c76f9ff43 Add Trace to measure the number of packet retires (for Etx metric) 2014-04-18 23:32:55 +02:00
Sascha Jopen a6316eb5a3 Make ED and CCA interference aware.
Fix a bug in interference handling.
2014-04-16 15:32:59 +02:00
Sascha Jopen c6f406fe8a Added test for ACK ordering. 2014-04-15 15:41:12 +02:00
Sascha Jopen f9fedcc59e Added LQI calculation as the PER of the complete packet scaled to 255.
Removed debugging outputs.
2014-04-15 15:40:39 +02:00
Tommaso Pecorella c65a263dbd Collision tests, the bug was a shadow 2014-04-08 21:37:23 +02:00
Tommaso Pecorella f6ad02364e Add back debugging code, seems we have a bug in interference handling. 2014-04-08 15:57:59 +02:00
Tommaso Pecorella 1e75a2cb6b Remove logging cout 2014-04-08 15:06:52 +02:00
Tommaso Pecorella 92b2936c5d Tweaks to the collision tests 2014-04-08 14:58:28 +02:00
Tommaso Pecorella d486f26151 Preliminary Collision tests 2014-04-06 23:01:10 +02:00
Sascha Jopen 6c6dcbaf31 Fixed compile errors in examples. 2014-04-06 16:35:15 +02:00
Tommaso Pecorella e0d8349d71 Possible bug fix and sequence number as SequenceNumber8 2014-04-06 12:36:51 +02:00
Tommaso Pecorella 7b51212b96 Bug in receiving a packet. Assert to highlight the problem. 2014-04-06 10:00:58 +02:00
Tommaso Pecorella 65d236b00a Add example script in scratch 2014-04-04 09:50:08 +02:00
Tommaso Pecorella 29e97984bd Tweaks to Rx values 2014-03-27 23:02:43 +01:00
Sascha Jopen 4507193d46 Removed debug output. 2014-03-27 17:25:12 +01:00
Sascha Jopen 62afc9063e First version with interference handling. 2014-03-27 16:56:15 +01:00
Tommaso Pecorella 29f5bd43f3 Align error model test to actual results after bug fixing 2014-03-25 23:21:02 +01:00
Sascha Jopen a32593c948 Relicense lr-wpan-lqi-tag.{cc,h} to GPLv2. 2014-03-25 14:55:27 +01:00
Erwan Livolant 4737871613 Fixed missing FCS calculation for ACKs. 2014-03-20 14:44:10 +01:00
Tommaso Pecorella 74d8c0d6c7 Helper: associate nodes to a PAN 2014-03-16 22:33:50 +01:00
Tommaso Pecorella ff799f5cbd Fix Hel'er's install and add ping6/6LoWPAN example 2014-03-16 20:46:00 +01:00
Tommaso Pecorella 90dc67f344 Set rx sensitivity to -110 dBm (temporary) 2014-03-16 20:45:13 +01:00
Sascha Jopen f4b5e5e4e2 - Fixed error in MAC state machine when sending an ACK and enqueuing a data packet at the same time.
- Fixed error when switching the PHY transceiver while a switch is already in progress.
2014-02-24 12:51:06 +01:00
Tommaso Pecorella 131f31f56a ACK (Sascha Jopen), NetDevice (Tommaso Pecorella and Margherita Filippetti), FCS changes (Erwan Livolant), and clang compliance 2014-02-23 16:24:11 +01:00
Tom Henderson b5d3e81f81 fix LrWpanNetDevice::GetAddress() 2014-04-26 22:42:10 -07:00
Tom Henderson ba22dba981 update lr-wpan wscript format 2014-04-26 22:41:19 -07:00
Nicola Baldo 5084f6a5af minor fix in LTE RRC logging format 2014-01-21 19:57:53 +01:00
Nicola Baldo c162fcb75b other minor fix in LTE user docs 2014-01-21 19:38:34 +01:00
Nicola Baldo b5735684f1 minor fix in LTE user docs 2014-01-21 19:36:55 +01:00
Nicola Baldo b1c73cc5d5 updated LTE standalone docs generation 2014-01-21 15:46:37 +01:00
Nicola Baldo a9c97531cc merge 2014-01-20 11:19:13 +01:00
Daniel Lertpratchya ad4c214b8a Update (most of) IEEE Std 802.11-2007 to IEEE Std 802.11-2012 2014-01-19 12:08:50 -05:00
John Abraham 6c81abe28a NetAnim: Update example to track counters for multiple nodes 2014-01-19 05:58:53 -08:00
John Abraham 39d721981d NetAnim: Add ability to skip all packet tracing 2014-01-18 20:03:20 -08:00
Tommaso Pecorella db23930d21 [mq]: Rescan Python bindings 2014-01-16 19:10:18 +01:00
Tommaso Pecorella 2ce9615e73 Bug 1838 - FlowMonitorHelper must not be copied. 2014-01-16 09:46:21 +01:00
Juan C. Granda 123caf7cf3 Bug 1739 - The endpoint is not deallocated for UDP sockets 2014-01-15 23:35:55 +01:00
John Abraham 9ce6ffeb61 NetAnim: Update version to 3.105 2014-01-15 10:12:52 -08:00
John Abraham 1051191967 NetAnim: Switch default to 3.105 2014-01-15 10:12:07 -08:00
Tommaso Pecorella a4f7e7dc47 Bug 1837 - AODV crashes when using multiple interfaces 2014-01-14 21:27:14 +01:00
John Abraham 97494a63ff NetAnim: Battery visualization for 3.105 2014-01-14 06:59:59 -08:00
John Abraham 50dce179c6 NetAnim: Add sample double counters in the example 2014-01-13 09:01:22 -08:00
Nicola Baldo eae942732d clarified SpectrumSignalParameters usage in model docs 2014-01-13 17:10:49 +01:00
John Abraham cc655b5c49 NetAnim: Implement Node Counter 2014-01-13 05:45:54 -08:00
Hajime Tazaki 341fcd0ce8 rescan bindings 2014-01-13 20:45:55 +09:00
Hajime Tazaki 5894f2b28b Bug 1826 - make ns3::Ipv6Interface independent from ns3::IPv6L3protocol
for DCE usage of ipv6 linux stack helper
2014-01-13 19:04:56 +09:00
John Abraham 63445557bc NetAnim: Demo example must use absolute path 2014-01-12 18:43:41 -08:00
Tom Henderson b5108b031d rescan bindings 2014-01-12 15:03:49 -08:00
Tom Henderson 5df093ae50 remove header dependency 2014-01-10 15:08:04 -08:00
John Abraham 2b72b059ae NetAnim: Provide opacity setting for background 2014-01-12 11:25:42 -08:00
John Abraham b24053a707 NetAnim: Add SetBackgroundImage 2014-01-12 10:06:27 -08:00
John Abraham 7885a9a847 NetAnim: Enable transition to 3.105 2014-01-11 07:35:34 -08:00
John Abraham a8caac4db1 NetAnim: Remove obsolete checks for xml format 2014-01-11 06:26:58 -08:00
Peter D. Barnes, Jr. 22fe0b7120 Update RELEASE_NOTES 2014-01-10 17:26:22 -08:00
Peter D. Barnes, Jr. f593f652a1 [Bug 1786] os << int64x64_t prints un-normalized fractional values 2014-01-10 17:24:06 -08:00
Peter D. Barnes, Jr. 472839ca28 Make Time printer ignore stream flags. 2014-01-10 17:22:45 -08:00
Peter D. Barnes, Jr. 27967f1c68 Test failure should show condition, actual value, *and* expected (limit) value. 2014-01-10 17:21:54 -08:00
Peter D. Barnes, Jr. 926f89eea2 Strip NS3_BUILDDIR from Example path. 2014-01-10 17:20:26 -08:00
Vedran Miletić 6acf41814e Move tests outside ns3 namespace 2014-01-02 18:34:30 +01:00
Tommaso Pecorella 7d415cd3ba Bug 1823 - IPv6 fails to work on NOARP NetDevices (revert changeset 9760) 2014-01-01 17:37:32 +01:00
Tommaso Pecorella e22f63ffe4 Bug 1821 - Setting an interface to Down state will cause various asserts in IPv6 2013-12-31 19:48:09 +01:00
Nicola Baldo 58235a7b39 fixed unused variable + doxygen in cqa-ff-mac-scheduler.h 2013-12-24 18:36:25 +01:00
Nicola Baldo fc244dde4d fixed Bug 1730 - no model library documentation for spectrum module 2013-12-24 18:22:02 +01:00
Nicola Baldo eaa124d2bb fixed latexpdf build of LTE docs 2013-12-24 17:35:24 +01:00
Nicola Baldo ff91dd3e26 fixed Bug 1820 - models library doc: make should not rm -rf figures by default 2013-12-24 17:29:54 +01:00
Nicola Baldo c9e7103635 updated RELEASE_NOTES 2013-12-24 15:48:36 +01:00
Nicola Baldo 7689fdc0de updated lte design docs 2013-12-24 15:48:00 +01:00
Nicola Baldo 6ca7bc423e merge 2013-12-24 15:02:58 +01:00
Tom Henderson 80382ac6db start new version RELEASE_NOTES 2013-12-21 12:30:28 -08:00
Tom Henderson b19046c64a Added tag ns-3.19 for changeset 322102df792e 2013-12-20 14:03:54 -08:00
Tom Henderson 460eea1be5 Update RELEASE_NOTES for release 2013-12-20 09:28:31 -08:00
Tommaso Pecorella 216983828c Preserve packet tags upon IPv4 fragmentation 2013-12-19 21:43:02 -08:00
Tom Henderson ebe45e5924 merge heads 2013-12-18 18:49:26 -08:00
Gustavo Carneiro 4b7cf8f4e4 Add a custom typehandler for std::ios::openmode, fixes #1815 2013-12-18 19:29:25 +00:00
Peter D. Barnes, Jr. 1558d08adf [Doxygen] Enable autobrief, as claimed by the manual.
Clarify manual to state that first *sentence* will be used as the
brief documentation.

Thanks to Budiarto Herman <budiarto.herman@magister.fi> for pointing
out the required configuration.
2013-12-18 11:24:36 -08:00
Tommaso Pecorella 762131e218 Update the video sources link for UdpTraceClient in Doxygen (suggested by Kostantinos Katsaros) 2013-12-17 19:42:18 +01:00
Tom Henderson 88fd0f04eb rescan all bindings 2013-12-16 00:06:41 -08:00
Tom Henderson d0391be1b2 add to notes regarding null message parallel scheduler and new time units 2013-12-15 22:58:10 -08:00
Tom Henderson 16deeeaa4f add some more new authors 2013-12-15 22:50:57 -08:00
Tom Henderson 03d493b128 editing in preparation for release 2013-12-15 22:31:15 -08:00
Tom Henderson 1e81e10718 editing in preparation for release 2013-12-15 22:28:30 -08:00
Tommaso Pecorella 08f30e7815 Rescan Internet bindings 2013-12-15 16:26:18 +01:00
Tommaso Pecorella 96a259dec6 Bug 1796 - Ipv6PacketInfoTag is not filled by UdpSocketImpl::ForwardUp6. 2013-12-15 09:26:02 +01:00
Tommaso Pecorella 4668c18e0d [Doxygen] Stats module doxygen warnings 2013-12-15 09:00:57 +01:00
Tommaso Pecorella 82ba393469 Bug 1592 - Parsing bug in FlowMonitor example script (fix suggested by Eric Hein) 2013-12-15 09:02:28 +01:00
Tommaso Pecorella 63ebe3e674 [Doxygen] Clarify Simulator::Run() 2013-12-14 10:13:57 +01:00
Tom Goff 9852907d33 bug 1767: make UDP sockets return error when binding to address already in use 2013-12-13 22:50:35 -08:00
Brian Swenson 69091e3dbe Fix sixlowpan attribute name in sphinx 2013-12-13 23:16:47 +01:00
Brian Swenson f7fc0542e6 Bug 1560 Fixed with vectors 2013-12-13 16:48:08 -05:00
Daniel Lertpratchya ef51173b0f [doxygen] dsr module (fix only trivial warnings) 2013-12-13 10:28:25 -05:00
Nicola Baldo 013f400365 updated RELEASE_NOTES 2013-12-13 11:21:57 +01:00
Budiarto Herman 54947ecb22 updated RELEASE_NOTES and CHANGES.html with GSoC 2013 LTE details 2013-12-13 10:50:45 +01:00
Peter D. Barnes, Jr. d352331827 [sphinx] fix build error 2013-12-12 15:12:52 -08:00
Peter D. Barnes, Jr. 16219843f0 [sphinx] Use :rfc:6284 to create links to RFCs 2013-12-12 15:12:11 -08:00
Peter D. Barnes, Jr. 8ef0956af1 [Bug 1496] Finish the documentation.
Also amended scratch-simulator so printing the list of log
components works as advertised.
2013-12-12 14:42:43 -08:00
Tommaso Pecorella ad1ef6acc0 Bug 1814 - IPv6 Packets with length not multiple of 8 bytes are fragmented incorrectly. 2013-12-12 23:16:28 +01:00
Tommaso Pecorella e7cfaab44d Clarify the effect of Bug 1810 fix 2013-12-12 21:08:27 +01:00
Daniel Lertpratchya d72152fb05 Changed GetTypeID to GetTypeId in dsr-network-queue.* (plus re-scan binding) 2013-12-12 15:31:11 -05:00
Tommaso Pecorella 6c16817c8c Bug 1810 - IP packets can be sent on NetDevices not respecting the minimum MTU requirements 2013-12-12 19:36:16 +01:00
Nicola Baldo bf7c850715 merge 2013-12-12 18:50:20 +01:00
Nicola Baldo e06996f8a4 Bug 1789 - missing test condition for sigma in buildings-shadowing-test 2013-12-12 18:50:12 +01:00
Daniel Lertpratchya 0ff3f5a861 [doxygen] wifi module 2013-12-12 12:04:31 -05:00
Nicola Baldo 3647146e3c remove unneeded include 2013-12-12 17:00:09 +01:00
Nicola Baldo 509541bc27 reverted change 10436 for src/buildings 2013-12-12 16:55:56 +01:00
Tommaso Pecorella 46f613cb48 Further tweaks to 6LoWPAN sphinx 2013-12-12 11:34:28 +01:00
Tommaso Pecorella 1951adcd6c Fix sixlowpan module documentation (thanks Peter) 2013-12-12 09:12:36 +01:00
Peter D. Barnes, Jr. 8ef28580f8 [doxygen] fix errors 2013-12-11 15:20:29 -08:00
Peter D. Barnes, Jr. 3c2f2a51ca Manual chapter on documentation. 2013-12-11 15:18:55 -08:00
Peter D. Barnes, Jr. e852bd8b8f Fix report count by module. 2013-12-11 11:57:48 -08:00
Tommaso Pecorella e06d00b0ec Furher manual clarification of examples/stats/wifi-example-db.sh script use. 2013-12-11 20:05:10 +01:00
Tommaso Pecorella ef975e2309 Make stats example program immune to MacOS's sed 2013-12-11 19:55:09 +01:00
Marco Miozzo 2937461f0d merge 2013-12-11 11:39:32 +01:00
Marco Miozzo 73744f4af1 Big-fix out_of_range in LTE schedulers when HARQ uses all the RBGs for retransmissions 2013-12-11 11:39:13 +01:00
Tommaso Pecorella 61ad9eedb4 Bug 1812 - example/stats wifi program manual is erroneous 2013-12-11 10:04:51 +01:00
Tommaso Pecorella 06beb889b1 Backed out of changeset 10495:e877c029ed3e 2013-12-11 10:03:06 +01:00
Tommaso Pecorella ef9dc2aadc Bug 1812 - example/stats wifi program manual is erroneous 2013-12-11 10:00:06 +01:00
Tommaso Pecorella 9499558186 Pretty-print IPv6 addresses and routing tables 2013-12-10 19:54:12 +01:00
Tommaso Pecorella 865faaa288 Fix Changes.html - 6LoWPAN is a new API 2013-12-10 19:56:16 +01:00
John Abraham 89c36100ae NetAnim: Update version 2013-12-10 09:01:08 -08:00
Evgeny Kalishenko 26b060e979 Whitespaces added according to the coding standard after review 2013-12-10 09:12:38 +04:00
Evgeny Kalishenko c612fe086a "Contribution" tags added 2013-12-10 09:12:38 +04:00
Evgeny Kalishenko 5cb5bc407f Battery source added for apNode in Wireless-animation example 2013-12-10 09:12:38 +04:00
Evgeny Kalishenko 4251cddf3d Debug: correct string end in case of battery charge serialization 2013-12-10 09:12:38 +04:00
Evgeny Kalishenko 31b66adf3d Remaining energy tracing test simplification: object factories removed 2013-12-10 09:12:38 +04:00
Evgeny Kalishenko ae1c7e1209 Test for NS-3 netanim module added with remaining energy tracing 2013-12-10 09:12:38 +04:00
Evgeny Kalishenko 6ee55d25a2 Added remaining energy tracing (Task #4593) 2013-12-10 09:12:38 +04:00
Peter D. Barnes, Jr. 2a479f198a Add options to filter by module or regular expression. 2013-12-10 08:02:07 -08:00
Daniel Lertpratchya 198b05a384 [doxygen] wifi module 2013-12-10 10:48:51 -05:00
Tom Henderson d2a821bfa7 add sixlowpan bindings 2013-12-09 09:28:17 -08:00
Tom Henderson bafc4932e7 make copy constructors implicit, for bindings generation 2013-12-09 09:27:55 -08:00
biljkus 1f05126531 Added channel and QoS aware (CQA) scheduler. Added test classes and updated the documentation that describes new scheduler, test class and added reference to the literature. Updated wscript with new scheduler and test class. 2013-12-09 02:38:46 +01:00
Tommaso Pecorella a8305cea49 Fix erroneous use of make_pair in sixlowpan 2013-12-07 14:30:03 +01:00
Tommaso Pecorella f27ed705b5 6LoWPAN module 2013-12-07 08:08:53 +01:00
Peter D. Barnes, Jr. 229afd99d0 Fix bug reported by Daniel Lertpratchya <nikkipui@gmail.com>:
On Dec 6, 2013, at 8:28 AM, Daniel Lertpratchya <nikkipui@gmail.com>
 wrote:
I recently ran the doxygen.warnings.report.sh script and I got the
following error. I tried on a fresh copy of ns-3-dev and Brian
also has the same problem.

'build' finished successfully (1.649s)

Rebuilding doxygen docs with full errors...Done.
mv: missing destination file operand after ‘doc/doxygen.log’
Try 'mv --help' for more information.
No filters.

cat: doc/doxygen.warnings.log: No such file or directory
grep: doc/doxygen.warnings.log: No such file or directory
cat: doc/doxygen.warnings.log: No such file or directory

On Dec 6, 2013, at 10:36 AM, Daniel Lertpratchya <nikkipui@gmail.com>
 wrote:
I think doxygen.warnings.report.sh line 150 should be changed from
$log to $LOG. That seems to fix the problem for me.
2013-12-06 13:37:03 -08:00
Tom Henderson c1c272ccef add applications dependency to src/wave (for the test suite) 2013-12-06 12:53:42 -08:00
Steven Smith f780559565 Null message scheduler 2013-12-06 14:57:33 -05:00
Vedran Miletić df005f262e Introduce additional Time units (Year, Day, Hour, Minute) 2013-12-06 19:42:02 +01:00
Tom Henderson c9d57eae6d fix signed/unsigned integer comparison 2013-12-06 07:43:09 -08:00
Peter D. Barnes, Jr. 0e2e602eb6 Remove .sh and .txt from .hgignore 2013-12-05 14:32:59 -08:00
Tom Henderson ed1bf7577e rescan uan bindings 2013-12-05 07:49:33 -08:00
Peter D. Barnes, Jr. ca69a3255e Tweak sorting of files. 2013-12-04 15:52:48 -08:00
Peter D. Barnes, Jr. 43fb06b64c doxygen.warnings.report.sh new functionality.
You can now point to the standard log file, or specific log file.

You can also filter out test and examples.


Usage: doxygen.warnings.report.sh.mod [-eth] [-f <log-file> | -l | -s]

Run doxygen to generate all errors; report error counts
by module and file.

The default behavior is to modify doxygen.conf temporarily to
report all undocumented elements, and to reduce the run time.
The output of this special run is kept in doc/doxygen.warnings.log.
The -f or -l options use alternate log files.

-e  Filter out warnings from */examples/*
-t  Filter out warnings from */test/*

-f  Skip doxygen run; use existing <log-file>.
-s  Skip doxygen run; use existing warnings log doc/doxygen.warnings.log
-l  Skip doxygen run; use the normal doxygen log doc/doxygen.log
Only the first of -f <log-file>, -s, or -l will have effect.

-h  Print this usage message
2013-12-04 15:37:57 -08:00
Peter D. Barnes, Jr. b6b1371fd1 [doxygen] Uan module 2013-12-04 13:29:04 -08:00
Tommaso Pecorella 1cc097b05a Set correct packet size in IPv4 header after reassembly. 2013-12-04 20:56:33 +01:00
Tommaso Pecorella 1cb6b1dc86 Bug 1802 - FlowMon header deserialization problem with IPv4 fragments 2013-12-02 23:05:14 +01:00
Tom Henderson d0a414b7d5 add virtual destructor 2013-12-03 17:06:35 -08:00
Tom Henderson bb98e9ad55 rescan wifi bindings to remove premature TimeUnits bindings 2013-12-03 17:06:13 -08:00
Tommaso Pecorella 668d3df3e5 Fix ErrorChannel Add 2013-12-03 23:04:39 +01:00
Tommaso Pecorella 9106524e8c Fix ErrorChannel Send 2013-12-03 22:49:51 +01:00
Tom Henderson 6c601767c8 add wave bindings 2013-12-03 13:46:53 -08:00
Tom Henderson 82fb571d05 rescan wifi bindings 2013-12-03 13:07:43 -08:00
Tom Henderson 0de0dbca1d improve numerical sorting, and support for analyzing existing file 2013-12-03 11:11:43 -08:00
Junling Bu 044cba4bbd base implementation of the IEEE 802.11p standard 2013-12-03 11:25:59 -08:00
Vedran Miletić f1f6d27091 Fix doxygen errors in src/network, excluding 'is not documented' missing documentation 2013-12-02 23:02:39 +01:00
Tommaso Pecorella bd6c92c79f Bug 1807 - Multiple bugs in Ipv4L3Protocol::LocalDeliver 2013-12-02 19:36:49 +01:00
Tommaso Pecorella de5acedb80 Removed useless class from Internet tests 2013-11-30 12:38:22 +01:00
Tommaso Pecorella 649862bd07 Fix OnOffApplication (clang errors) 2013-11-29 19:33:49 +01:00
Tom Henderson 24c15324a0 rescan lte bindings 2013-11-29 07:43:48 -08:00
Tommaso Pecorella c60bb0e13c Bug 938 - missing Doxygen in ns-3 (applications model + helper) 2013-11-28 22:26:41 +01:00
Tom Henderson ba992c272d fix outdated reference 2013-11-27 21:24:31 -08:00
Nicola Baldo 89ad730710 merge 2013-11-27 13:31:32 +01:00
Marco Miozzo 905ba123eb merge 2013-11-27 13:14:03 +01:00
Brian Swenson d26723ce24 python bindings fix 2013-11-26 10:21:36 -05:00
Marco Miozzo 6c331e9627 merge 2013-11-26 12:18:53 +01:00
Marco Miozzo 70422516a9 fixed Bug 1803 - Lookup /NodeList/4/DeviceList/0/LteEnbRrc/UeMap/0 got no matches 2013-11-26 12:18:33 +01:00
Nicola Baldo 9dd092a374 updated LTE docs for abstract EpcHelper 2013-11-25 12:44:34 +01:00
Nicola Baldo cc5715fc43 merge 2013-11-25 12:16:19 +01:00
Tommaso Pecorella 28906f3245 Bug 983 - missing Doxygen in ns-3 (flow-monitor model + helper) 2013-11-21 20:35:28 +01:00
Tommaso Pecorella dd20c79584 Bug 938 - missing Doxygen in ns-3 (internet model + helper) 2013-11-20 20:15:02 +01:00
Vedran Miletić a3e7cb04e6 Remove unused consts to fix building with Clang 3.4 pre-release versions 2013-11-24 23:48:49 +01:00
Tommaso Pecorella 9d0747d32c Bug 1798 - Changing the rate of onOffApplication might stop transmission 2013-11-23 15:05:28 +01:00
Tommaso Pecorella 331a645768 topology-read doxygen fix 2013-11-20 20:12:13 +01:00
Vedran Miletić ad96327325 Fix optimized build with Clang 3.2+ (remove unused variables from tests) 2013-11-21 13:49:39 +01:00
Nicola Baldo 5a1d345b0e merge 2013-11-20 19:31:46 +01:00
Nicola Baldo aa302c54f5 apply optimization of changeset 9898e56e4372 to LteMiErrorModel::GetPcfichPdcchError () 2013-11-20 19:14:12 +01:00
Tom Henderson c05f78550c postfix bug 1776; add missing files 2013-11-19 09:52:27 -08:00
Tom Henderson 71d515c83d update RELEASE_NOTES and CHANGES.html for TapBridge changes 2013-11-19 09:47:40 -08:00
Nicola Baldo 0c7f5ca3d2 merge 2013-11-19 17:16:22 +01:00
Nicola Baldo 4ce28e76f1 kill dead code in spectrum-error-model.h 2013-11-19 16:46:32 +01:00
Nicola Baldo dd7459606e added missing SpectrumErrorModel::GetTypeId () 2013-11-19 16:44:49 +01:00
Piotr Jurkiewicz ad2239fe80 bug 1778: TapBridge linkUp notification patch (modified by Tom Goff) 2013-11-19 06:52:02 -08:00
Piotr Jurkiewicz adb677eddd bug 1777: TapBridge address learning patch (modified by Tom Goff) 2013-11-19 06:50:18 -08:00
Piotr Jurkiewicz a3f979febf bug 1776: improve Csma CRC performance 2013-11-19 06:36:55 -08:00
Peter D. Barnes, Jr. 0f42e4c34c [doxygen] Rename examples classes "A" 2013-11-18 12:39:40 -08:00
Jared Ivey da4b470778 doxygen warnings for stats module 2013-11-18 09:51:24 -08:00
Nicola Baldo 2290a2beef optimize LteMiErrorModel::Mib () 2013-11-18 18:33:01 +01:00
Budiarto Herman 1f27f3f987 doxygen warnings for lte module 2013-11-18 08:56:54 -08:00
Daniel Lertpratchya c56b925dff doxygen warnings for wifi module 2013-11-18 08:55:45 -08:00
Tom Henderson afdb830d5c update comment to align with ns-3.18.1 2013-11-18 08:53:07 -08:00
Tom Henderson 7315243e84 update RELEASE_NOTES and CHANGES.html for new release 2013-11-18 08:37:37 -08:00
Tom Henderson cc8ccb3cc3 update RELEASE_NOTES and CHANGES.html for ns-3.18.1 release 2013-11-18 08:35:19 -08:00
Nicola Baldo 639d8a219f fixed integer constant too large compilation error with gcc 4.3.2 2013-11-18 15:51:51 +01:00
Nicola Baldo 36d7a434dc merge 2013-11-18 13:28:05 +01:00
Nicola Baldo 66d2f1225c EpcHelper: use pure virtual methods 2013-11-18 13:08:17 +01:00
Tom Henderson 763e433c88 update server hostname 2013-11-16 09:38:53 -08:00
Hajime Tazaki 5bea383284 revert (45c8fceae24e) log printing due to the failure in optimized/static build. 2013-11-16 20:10:58 +09:00
Brian Swenson 4c879da5c3 Network Doxygen warnings start 2013-11-15 16:20:58 -05:00
Tommaso Pecorella 32aba6de7d Reintroduce topology-reader private copy constructors 2013-11-15 21:30:47 +01:00
Jared Ivey 6a1e4a9f17 fix a few mpi documentation warnings 2013-11-15 09:49:46 -08:00
Nicola Baldo 42f5949410 merge 2013-11-15 13:59:34 +01:00
Nicola Baldo 11f6f2330f improvements in lena-simple-epc-emu 2013-11-15 13:04:27 +01:00
Nicola Baldo 2b751f4a2e fixed eNB IP addresses in EmuEpcHelper 2013-11-15 13:04:01 +01:00
Nicola Baldo c7ba3a551e fixed Bug 1793 - Various errors by MacOS compiler 2013-11-15 11:20:38 +01:00
Peter D. Barnes, Jr. e2971f7a72 [doxygen] More suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented" 2013-11-14 17:11:41 -08:00
Peter D. Barnes, Jr. 5a2488e6db [doxygen] Suppress "warning: Member NS_LOG_COMPONENT_DEFINE is not documented" 2013-11-14 16:58:56 -08:00
Peter D. Barnes, Jr. d75ff3559e doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented" 2013-11-14 16:58:28 -08:00
Peter D. Barnes, Jr. cce3b82113 Remove extra ':'s 2013-11-14 16:57:49 -08:00
Peter D. Barnes, Jr. 1c3e6149ab Models source highlighting 2013-11-14 16:57:21 -08:00
Peter D. Barnes, Jr. 578f3a1f04 Fix doxygen module references 2013-11-14 16:52:11 -08:00
Peter D. Barnes, Jr. b0640f8065 Fix compiler warnings and missing std:: 2013-11-14 15:25:33 -08:00
Tommaso Pecorella 2fa1712985 Doxygen fixes to Topology-read, Ipv6, and tcp-socket 2013-11-14 22:43:53 +01:00
Nicola Baldo 4213b79edd fixed Bug 1794 - clang errors on LTE tests 2013-11-14 19:07:55 +01:00
Peter D. Barnes, Jr. ea4c4c364e Unix line endings 2013-11-14 09:22:14 -08:00
Nicola Baldo fb295e22c9 added EmuEpcHelper 2013-11-14 17:41:18 +01:00
S. Deronne 31652e9763 Bug 1799 - Wrong ERP-OFDM PLCP preamble and header values 2013-11-13 16:49:02 -05:00
Daniel Lertpratchya 3cde3fa84b Update ns-3 wiki URL 2013-11-13 16:06:43 -05:00
Tom Henderson df6271a1da rescan bindings 2013-11-13 09:06:10 -08:00
John Abraham 6da37422ba bug 1792: call basic_ostream constructor 2013-11-12 10:36:14 -08:00
Tom Henderson 4e950036c8 bug 1622: make apiscan Task always run 2013-11-12 10:37:52 -08:00
Nicola Baldo 513740a776 make EpcHelper abstract 2013-11-12 13:03:13 +01:00
John Abraham 52f8515147 NetAnim: Some doxygen related fixes 2013-11-10 16:53:04 -08:00
Nicola Baldo 0c7f6ff413 merged lena-dev with ns-3-dev 2013-11-08 17:26:52 +01:00
Budiarto Herman 9fdf10eb97 merge from ns-3-dev branch to GSoC branch 2013-11-08 12:09:58 +01:00
Nicola Baldo 0b57da4bec fixed Bug 1788 - unused private field warning 2013-11-07 19:20:19 +01:00
Tom Henderson faa1fb3db2 update mpi bindings 2013-11-05 13:53:56 -08:00
Tom Henderson b119930437 update buildings bindings 2013-11-05 13:52:45 -08:00
Tom Henderson d930bb83f4 update lte bindings 2013-11-05 13:50:42 -08:00
Tom Henderson ce9e267057 update wifi bindings 2013-11-05 11:50:52 -08:00
Tom Henderson a644406aad update core bindings 2013-11-05 11:50:25 -08:00
Tom Henderson 0aa9708044 Update RELEASE_NOTES 2013-11-05 07:34:29 -08:00
Tom Henderson 55c4718c70 update AUTHORS 2013-11-05 06:55:27 -08:00
Tom Henderson ec958d44bb bug 1782: remove unused boost header 2013-11-05 06:09:47 -08:00
Tom Henderson 5c26030558 bug 1771: silence compiler warning about maybe-uninitialized data 2013-10-28 22:17:57 -07:00
Peter D. Barnes, Jr. 10381f6af1 Print log component list alphabetically. 2013-10-28 15:10:24 -07:00
Peter D. Barnes, Jr. 4e6c8358f8 Logging wildcards: allow "***" as synonym for "*=**" 2013-10-28 15:04:01 -07:00
Peter D. Barnes, Jr. f6e90ca97a [bug 1552] Storing log name inside LogComponent class (NS_LOG) as std::string 2013-10-28 14:50:08 -07:00
John Abraham 8b12936806 Bug 1781 - const and non-const in clang-500.2.79 2013-10-24 09:04:46 -07:00
Nicola Baldo 85b60bc541 more user docs for the buildings module 2013-10-23 19:11:40 +02:00
Biljana Bojovic fe8adfc8f3 added FixedRoomPositionAllocator 2013-10-23 17:55:36 +02:00
Nicola Baldo fa3e0c1f6f removed more unused variables in LTE FfMacScheduler tests 2013-10-23 10:48:05 +02:00
Budiarto Herman 3d17935885 Fix to SetCsgId in LteEnbRrc for not updating SIB1 in PHY 2013-10-22 20:36:56 +03:00
Budiarto Herman ab92594cff Replaced SIB1 setter function with SetCsgId 2013-10-22 19:09:26 +03:00
Nicola Baldo 0cb3414e5a removed unused variables in some LTE tests 2013-10-22 18:06:07 +02:00
Tom Henderson 47b12b8bec update documentation for generating new modules 2013-10-22 08:12:46 -07:00
Budiarto Herman c4c297ad85 Converted Q-RxLevMin to attribute of LteEnbRrc 2013-10-22 17:51:04 +03:00
Budiarto Herman cd7f7154b1 Converted CSG ID and CSG indication as attributes to LTE devices 2013-10-22 17:16:16 +03:00
Tom Henderson bd657c5267 improve help string 2013-10-22 06:38:41 -07:00
Vedran Miletić 32b19bd983 Bug 1779 - NS_UNUSED_GLOBAL not working in attribute test class declaration 2013-10-21 10:38:06 +02:00
Tom Henderson b76e585613 rescan mesh bindings 2013-10-20 16:26:19 -07:00
Vedran Miletić f781366d2e Fix compilation with Clang 3.2 and newer versions, including Apple Clang 5.0
Clang 3.2 requires all class members to be used in the code; this patch either removes class members that are not used or adds NS_UNUSED/NS_UNUSED_GLOBAL around them. Thanks to Andrey Mazo and Tommaso Pecorella for review.
2013-10-20 12:46:27 +02:00
Peter D. Barnes, Jr. 05561c4e71 Fix Time class doxygen. 2013-10-18 16:25:06 -07:00
Budiarto Herman 170467f247 UeMeasure class now inherits from SimpleRefCount 2013-10-17 18:46:50 +03:00
Budiarto Herman 6d96614e35 Moved DoDispose method of handover and ANR classes to protected scope 2013-10-17 17:33:30 +03:00
Budiarto Herman efc6f7e6c8 Correction to copyright notices in some GSoC LTE code 2013-10-17 17:21:14 +03:00
Budiarto Herman 556c5ee911 Added back asserts to EutranMeasurementMapping 2013-10-17 16:47:18 +03:00
Budiarto Herman e57ef0d520 Renamed UE_MEASUREMENTS_DELAY to UE_MEASUREMENT_REPORT_DELAY in LteUeRrc 2013-10-17 16:45:42 +03:00
Nicola Baldo 119acded67 check whether the EPC is used upon adding an X2 interface 2013-10-17 14:24:12 +02:00
Budiarto Herman 4a465e8a9b Additional Doxygen comments for GSoC LTE 2013-10-17 15:16:51 +03:00
Daniel Lertpratchya c2bd12e525 Bug 1691 - RTS/CTS NAV reset prematurely 2013-10-14 10:27:43 -04:00
Gustavo Carneiro b2d76a1887 Add waf option to disable threads in build. 2013-10-13 18:20:40 +01:00
Gustavo Carneiro f0b9a19317 waf --apiscan will no longer try to abort waf build at the end of scanning, to avoid the waf hang. Fixes #1622. 2013-10-13 17:54:19 +01:00
Gustavo Carneiro 4578107371 Upgrade to WAF 1.7.13. 2013-10-13 16:45:11 +01:00
Gustavo Carneiro 2988c8d395 Grab a new bugfix from pybindgen 2013-10-13 16:23:21 +01:00
Daniel Lertpratchya 92f915bd79 Bug 1011 - assert failed. file=../src/devices/wifi/dcf-manager.cc 2013-10-10 12:15:40 -04:00
Nicola Baldo dcd708c846 RadioBearerTag -> EpsBearerTag where appropriate in LTE docs 2013-10-10 14:39:23 +02:00
Karsten Roscher 1f74b54e1d Bug 1616 - WifiPhyStateHelper reports false CCA_BUSY times at State trace source 2013-10-09 16:39:36 -04:00
Nicola Baldo c67bd2b301 lte-rr-ff-mac-scheduler test: consider that RR scheduler does not handle retx properly 2013-10-08 19:09:36 +02:00
Nicola Baldo 9fc8e11e00 added attribute ns3::LteRlcAm::TxOpportunityForRetxAlwaysBigEnough 2013-10-08 19:07:44 +02:00
Tom Henderson cceac0b037 Update RELEASE_NOTES 2013-10-08 11:30:26 -04:00
Juergen Rinas 1485913f48 bug 1766: throughput calculation fix; increase packetSize to 1400 bytes; corrected filenames of log output (?:-operator) 2013-10-08 06:33:02 -07:00
Daniel Lertpratchya 5848465aac Fixed indentation in wifi-remote-station-manager.cc 2013-10-04 10:38:19 -04:00
Tom Henderson ef1281e826 Bug 1722 - beacons transmitted concurrently 2013-10-04 09:40:47 -04:00
Budiarto Herman 7607136792 Removed redundant guards in lte-control-message.h 2013-10-04 10:23:01 +03:00
Budiarto Herman 2a3f610eb9 Added const to some Get functions in LTE module 2013-09-26 13:22:58 +03:00
Budiarto Herman c2317d7c75 Removed unnecessary asserts in EutranMeasurementMapping 2013-09-26 12:28:49 +03:00
Budiarto Herman 04ecaa54cf Added missing NS_LOG_FUNCTION to some LTE module files 2013-09-26 12:21:45 +03:00
Budiarto Herman a435cd4cf5 Fixed missing reference in LTE user documentation 2013-09-25 09:32:47 +03:00
Budiarto Herman 12b08d2185 Removed unused LteHelper::Connect helper function 2013-09-24 21:19:23 +03:00
Budiarto Herman a97e64ba17 Updated some validation on UE measurements 2013-09-23 19:28:12 +03:00
Budiarto Herman 990cf5a7a7 Updated TODO tags to Doxygen format 2013-09-23 17:58:32 +03:00
Tom Henderson 66c7642cb8 rescan wifi bindings 2013-09-22 21:48:33 -07:00
Junling Bu 22923b5758 bug 945: remove deprecated 802.11p code 2013-09-22 20:59:18 -07:00
Junling Bu 5b678ac051 coding style: avoid NULL 2013-09-22 20:00:33 -07:00
Junling Bu abaa48b238 remove unimplemented functions 2013-09-22 19:59:34 -07:00
Junling Bu ff815a368b avoid crash when packets sent by higher layer cause no RTS/CTS operation 2013-09-22 19:56:47 -07:00
Junling Bu 778a19b330 avoid memory leak if called multiple times 2013-09-22 18:02:07 -07:00
Budiarto Herman 41d7f8e590 Updated the 'Handover simulation campaign' section of LTE module user documentation with a figure and averaged results over different RngRun 2013-09-22 20:34:55 +03:00
Budiarto Herman 735a0183a7 New section 'Handover simulation campaign' for LTE module user documentation 2013-09-21 13:01:27 +03:00
Budiarto Herman 336f420bc5 Fixed error when a handover is triggered before the previous one is completed 2013-09-20 14:54:09 +03:00
Budiarto Herman be1cd514a5 Minor fixes to tests 2013-09-20 14:47:16 +03:00
Budiarto Herman 1fab1d96bd Fixed RSRQ measurements not working when initial cell selection is enabled 2013-09-19 18:55:49 +03:00
Nicola Baldo b028c9ef84 clarify SINR units in lte-user docs 2013-09-17 18:03:48 +02:00
Nicola Baldo 1e6493c8ee fixed Bug 1763 - Message 3 should be sent using the UL GRANT in the RAR 2013-09-17 18:02:32 +02:00
Budiarto Herman 397689f94e Renamed LTE initial cell selection figure 2013-09-15 22:43:30 +03:00
Budiarto Herman c1d598d496 Simplified lte-cell-selection test suite 2013-09-15 22:25:15 +03:00
Budiarto Herman 70970ce418 Revamped lte-cell-selection test suite with better success probability 2013-09-15 20:54:03 +03:00
Nicola Baldo d60e59b608 fixed bug 1756 - RLC AM Mode State Variable Bug 2013-09-13 15:30:00 +01:00
Tom Henderson 905cd7ccb8 remove funding attribution from license header 2013-09-13 06:14:27 -07:00
Budiarto Herman 1d0d1555ad Variable statistics starting time in lte-phy-error-model test suite 2013-09-11 22:51:10 +03:00
John Abraham 583968784f NetAnim: Update wireless animation boundary 2013-09-11 08:09:05 -07:00
John Abraham 0784acd280 NetAnim: ASSERT minX, minY conditions in SetBoundary 2013-09-11 08:06:25 -07:00
John Abraham dde6f449c2 NetAnim: Allow the user to set the boundary 2013-09-11 07:53:45 -07:00
Budiarto Herman 6af79bf7df Updated lte-handover-target testing documentation 2013-09-11 14:38:13 +03:00
Budiarto Herman fb55f9a6b3 Revised lte-cell-selection test vector 2013-09-11 13:35:10 +03:00
Nicola Baldo 382fa53396 revised test vector, conditions and scenario of lte-phy-error-model test 2013-09-09 16:03:14 +02:00
Nicola Baldo 47f185eab0 fixed stats parameters in test lte-epc-e2e-data 2013-09-09 16:01:07 +02:00
Tom Henderson 2d06f4dbc8 make wifi tests more robust to random variable perturbations 2013-09-08 09:57:13 -07:00
Budiarto Herman c788e2ff5b Minor fix of variable declaration to lena-dual-stripe 2013-09-07 12:20:22 +03:00
Budiarto Herman ae2fd7e6bd Fix to usage of GetHandoverAlgorithmType function in LteHelper 2013-09-07 12:18:26 +03:00
Tom Henderson c5971345d1 hg root cannot be used on non-mercurial repositories 2013-09-06 18:46:39 -07:00
Brian Swenson 3bcc2c7ebc break circular smart pointer ref in mpi 2013-09-06 15:03:07 -04:00
Budiarto Herman 316ab795a9 Fixed UE measurements from erasing all measId upon update of quantityConfig 2013-09-06 17:34:51 +03:00
Budiarto Herman eb3161e4ac Updated GPL header of GSoC files 2013-09-06 17:32:05 +03:00
Budiarto Herman c16f4fa7c9 Updated the figure of strongest cell handover algorithm 2013-09-06 17:00:23 +03:00
Budiarto Herman e9f60429c1 Rearranged the figure of eNodeB RRC state model 2013-09-06 17:00:08 +03:00
Budiarto Herman b0ce8acbea Fixed timers in the figure of X2 handover procedure 2013-09-06 16:13:45 +03:00
Budiarto Herman 14cf6679c8 Updated LTE module documentation as per comments from GSoC mentors (including renaming legacy handover algorithm to A2-A4-RSRQ handover algorithm) 2013-09-06 15:51:02 +03:00
Peter D. Barnes, Jr. 7f3d01b337 fixed doxygen ff-api group labels in lte module (bug 1499) 2013-09-06 13:07:10 +02:00
Nicola Baldo 142714de02 merge 2013-09-05 19:07:02 +02:00
Budiarto Herman 87fa62c388 Separate file for lte-handover-target test suite 2013-09-05 13:07:29 +03:00
Budiarto Herman 64a768a21e Documentation for lte-handover-target test suite 2013-09-05 11:41:30 +03:00
Budiarto Herman f5131a37c0 Added lte-x2-handover-target test suite 2013-09-04 12:01:31 +03:00
Budiarto Herman 6f6a15457d Merge before push 2013-09-02 09:26:36 +03:00
Budiarto Herman f60d2f14a3 Disabled some logs in LTE module tests 2013-09-01 22:45:00 +03:00
Budiarto Herman 48aabc2171 Fixed a bug where measurement reports with very long time-to-trigger keep repeating after handover 2013-09-01 22:38:34 +03:00
Budiarto Herman d08cdaddde Support for multiple reporting configuration and variable simulation duration in lte-ue-measurements-handover test suite 2013-09-01 21:57:42 +03:00
Budiarto Herman 0ad82ab3b4 Fixed missing UE measurements related action upon handover 2013-09-01 19:28:33 +03:00
Peter D. Barnes, Jr. 41500833ab Fix aliasing bug in optimized static builds with gcc-4.4. 2013-08-30 12:33:03 -07:00
Budiarto Herman 6b68862bbd Updated documentation based on the new UE RRC state model 2013-08-30 10:45:24 +03:00
Tom Henderson a4e2db1b6d update repository to start work on ns-3.19 2013-08-29 23:36:42 -07:00
Tom Henderson 154d5b3ad2 Added tag ns-3.18 for changeset cfbc9491d7e7 2013-08-29 22:30:57 -07:00
Marco Miozzo 623ae3c6b6 Correct typo in DlRsrpSinrFilename trace name in lte user manual 2013-08-29 16:07:34 +02:00
Budiarto Herman 5ee85fd7d0 Added GetHandoverAlgorithmType method to LteHelper 2013-08-29 16:47:31 +03:00
Budiarto Herman bc2465e148 Fixed unused variables in UE measurements test 2013-08-29 15:05:28 +03:00
Tom Henderson fb8816e2e8 add data collection chapter to the tutorial 2013-08-28 20:53:04 -07:00
Tom Henderson f765bcff0f remove trailing whitespace 2013-08-28 18:45:56 -07:00
Tom Henderson b7d694683f update introduction of tutorial 2013-08-28 17:13:51 -07:00
Tom Henderson aa99130b08 update bindings 2013-08-27 19:08:05 -07:00
Budiarto Herman 27a2582c37 Extended UE RRC state model, e.g. with Idle mode cell selection and RRC Connection Re-establishment 2013-08-27 16:47:52 +03:00
Tom Henderson 3a3299d6eb a few tutorial edits 2013-08-25 17:15:53 -07:00
Budiarto Herman 611e124f5c Added notes on LTE handover failure 2013-08-26 02:06:49 +03:00
Budiarto Herman 50e72aaad2 Various minor changes to LTE model documentation 2013-08-26 00:32:40 +03:00
Budiarto Herman 8168cfac18 Updated user documentation of handover 2013-08-25 15:27:45 +03:00
Budiarto Herman 1d8322b8e3 No-op handover algorithm in manual handover test suite and example 2013-08-25 15:27:21 +03:00
Budiarto Herman 0389cc8021 Reverted the draft UE RRC state machine diagram 2013-08-25 11:26:00 +03:00
Budiarto Herman d6288badf4 Updated LTE handover documentation 2013-08-24 19:36:40 +03:00
Tom Henderson f4939928e0 bug 1755: hash test failure for gcc-4.4.3 (workaround) 2013-08-23 14:27:32 -07:00
Budiarto Herman e48f3466b1 Fixed argument Cell ID in ReportUeMeasurements trace source 2013-08-23 19:14:58 +03:00
Budiarto Herman e3bc429a38 Attribute to enable/disable ANR 2013-08-23 15:47:32 +03:00
Peter D. Barnes, Jr. 94507fe6f1 bug 954: eliminate valgrind warnings 2013-08-21 15:27:21 -07:00
Budiarto Herman 11f8a59286 Fixed broken URL to FemtoForum LTE MAC Scheduler API in LTE module documentation 2013-08-20 11:32:22 +03:00
Andrey Mazo 9b73661ef8 bug 1584: Association Request Timeouts not canceled. - Fixed copy-paste error in 831ad8abd1c0. 2013-08-19 18:30:18 +02:00
Tommaso Pecorella 67e43c7ea1 bug 1584: Association Request Timeouts not canceled (reported by Pedro Fortuna, extended by Tommaso Pecorella) 2013-08-18 23:14:50 -07:00
Tom Henderson 11323e4c2c Update AUTHORS file 2013-08-18 23:11:36 -07:00
Budiarto Herman 42935dffca Handover algorithm based on Event A3 and RSRP 2013-08-18 21:03:52 +03:00
Budiarto Herman e83db03597 Additional conversion functions for Hysteresis and A3 Offset 2013-08-18 17:15:58 +03:00
Peter D. Barnes, Jr. 3fb1d11a1e [Bug 954] Protect g_markingTimes with a mutex. 2013-08-16 11:10:19 -07:00
Peter D. Barnes, Jr. eba69d2728 Handle showpos bug in gcc libstc++ 4.2. 2013-08-14 16:55:47 -07:00
Peter D. Barnes, Jr. 39f6b03211 Restore "x.0ns" to result of operator<< (Time) 2013-08-14 16:55:06 -07:00
Peter D. Barnes, Jr. fbf500f9b0 Fix bug affecting conversion of Time::Min/Time::Max during Time::SetResolution 2013-08-14 16:54:22 -07:00
Peter D. Barnes, Jr. ffcfd9de72 Trim trailing whitespace, doxygen comments 2013-08-14 16:53:41 -07:00
Peter D. Barnes, Jr. 85e9ba3b48 bug 954: Changing the simulation time resolution does not work well with attributes
v.3 Responding to code review comments

https://codereview.appspot.com/6821106/
2013-08-14 16:52:06 -07:00
Tom Henderson d1ce1beb67 update RELEASE_NOTES 2013-08-16 10:14:53 -07:00
Tom Henderson 66d87a0340 rescan bindings 2013-08-16 10:13:05 -07:00
Tom Henderson 0945bb9e1b bug 1723: name clash in ipv4-header.h from <termios.h> 2013-08-16 09:50:18 -07:00
Tom Henderson 1e9031deba rescan bindings 2013-08-16 09:49:05 -07:00
Tom Henderson a972f2609b bug 1690: wifi wscript fixes 2013-08-16 09:17:13 -07:00
Tom Henderson eab5416dd9 update CHANGES.html, cleanup some formatting 2013-08-16 09:03:55 -07:00
Tom Henderson 80422e7161 update bindings 2013-08-16 08:36:51 -07:00
Tom Henderson d006cf014f align command-line test suite to recent changes 2013-08-16 08:28:39 -07:00
John Abraham ae9ea26142 update release notes 2013-08-15 22:48:16 -07:00
John Abraham 21e900f3e5 Bug 1629 - Make AODV Default to Disable Hello 2013-08-15 22:39:03 -07:00
John Abraham 9b60ad3617 Update internet-stack-helper API for jitter and CHANGES.html 2013-08-15 21:00:57 -07:00
Tommaso Pecorella 31aac3aea7 Addendum to bug 1522 2013-08-16 02:21:51 +02:00
Peter D. Barnes, Jr. 61903c64b2 Link to RFC num with \RFC{num} 2013-08-15 13:04:01 -07:00
Peter D. Barnes, Jr. 8695d856a1 Link to bug num in bug database with \bugid{num} 2013-08-15 12:01:57 -07:00
Budiarto Herman 20c79bb05e Removed unused variables and includes in LteEnbRrc 2013-08-12 20:12:57 +03:00
Budiarto Herman 06f653f1b5 Renamed A2RsrqHandoverAlgorithm to A2A4RsrqHandoverAlgorithm 2013-08-12 19:48:33 +03:00
Budiarto Herman 2df5bc99df Renamed BareHandoverAlgorithm to NoOpHandoverAlgorithm 2013-08-12 19:01:47 +03:00
Budiarto Herman d90a395329 Using template for forwarding classes and new names for Handover Management SAP 2013-08-12 17:55:06 +03:00
Budiarto Herman c5db2d45ac Fixed a bug with LTE ANR 2013-08-12 15:25:21 +03:00
Budiarto Herman c5d79310d3 LTE Automatic Neighbour Relation (ANR) function 2013-08-12 11:25:23 +03:00
Budiarto Herman a0dc2bf45b Updated UE RRC state machine diagram to include dependency of SIB1 to MIB 2013-08-12 09:29:23 +03:00
Peter D. Barnes, Jr. c0d6f58a71 Include all doc images in doxygen 2013-08-07 11:29:45 -07:00
Peter D. Barnes, Jr. 82525eadf4 Include all examples in doxygen 2013-08-07 11:29:17 -07:00
Peter D. Barnes, Jr. 4a6adc5e51 Make CommandLine print boolean defaults as text.
And
- clarify the documentation
- make example arguments more explicit
- make "--boolArg" toggle the value, not set to true (this enables
    toggle on default true values)
2013-08-07 10:36:45 -07:00
Steven Smith 0e5a67fd20 Bug 1753 Halting Issue with DistributedSimulatorImpl 2013-08-15 14:45:42 -04:00
John Abraham 9bc367b99f Merge 2013-08-15 09:51:32 -07:00
John Abraham 5adb032add Bug 1522 - Hidden node scenario leads to ARP failure 2013-08-15 09:50:34 -07:00
John Abraham 490bd45706 Bug 1190 - Suppress hello if bcast was sent within the last hello interval 2013-08-15 09:49:40 -07:00
John Abraham 08e8705d2b Bug 1190 - Suppress hello if bcast was sent within the last hello interval 2013-08-15 09:48:40 -07:00
Peter D. Barnes, Jr. 9c172a5b81 Fix Bug 1687: wscript features report doesn't respect NOCOLOR 2013-08-14 14:12:38 -07:00
Peter D. Barnes, Jr. ef45e91592 Update RELEASE_NOTES with Bug 1738 2013-08-14 13:31:46 -07:00
Peter D. Barnes, Jr. cb27e3276b Silence erroneous strict alias warning from a gcc 4.4 bug
Casting \c (void*) triggers a strict alias warning bug
in gcc 4.4 (see \bugid{1738}).

In the murmur3 code, data is returned by
\code
  void Function (... , void * out)
  {
    ...
    *(uint32_t *)out = ...
  }
\endcode

which triggers the erroneous warning.

We suppress strict-alias warnings in this compilation unit.
(gcc 4.4 doesn't support the <tt>diagnostic push/pop</tt> pragmas,
so we can't narrow down the suppression any further.)
2013-08-14 12:56:31 -07:00
Vedran Miletić f9f3110086 Remove unused wifiMode variable, fix build 2013-08-14 12:21:20 +02:00
Alexander Afanasyev 47a985c9ca [PATCH] core: Extending public interface of CommandLine class 2013-08-13 23:19:31 -07:00
Alexander Afanasyev a6857b4ec7 bug 1754: add missing GIL lock in generated callback destructor 2013-08-13 22:56:39 -07:00
Tom Henderson b4828adb74 update wifi bindings 2013-08-13 22:54:45 -07:00
Tom Henderson 92b58436dd remove unimplemented declaration 2013-08-13 22:43:08 -07:00
Ghada Badawy 085a0eea39 partial 802.11n support 2013-08-13 22:05:25 -07:00
Tom Henderson 8ae2fe07e2 rescan bindings 2013-08-13 10:37:49 -07:00
Tom Henderson 41f1d3a0f1 avoid use of core-module.h header in src tree 2013-08-13 10:37:41 -07:00
Tommaso Pecorella 81d40b0d40 Add "verbose" command line to IPv6 examples 2013-08-13 17:56:01 +02:00
Tommaso Pecorella 7dea6107f3 Remove obsolete StackHelper from IPv6 examples 2013-08-13 17:56:25 +02:00
Tom Henderson c9e45e84a4 add missing files 2013-08-12 22:51:37 -07:00
Tommaso Pecorella 4674443c4e Fix optimized build 2013-08-12 22:07:12 +02:00
Tom Henderson e90499b800 rescan bindings 2013-08-12 10:19:28 -07:00
Tommaso Pecorella 54564e2fa6 Bug 1702 - A router should't aways add itself as the default router 2013-08-07 23:18:48 +02:00
Tommaso Pecorella 3f302f67cf Missing header in RadvdHelper 2013-08-12 15:54:59 +02:00
Budiarto Herman 3b1c9d0196 Fixed UE measurements tests because of impact from handover algorithm implementation 2013-08-07 15:36:55 +03:00
Budiarto Herman 7fa99399c8 BareHandoverAlgorithm for LTE to simulate absence of handover algorithm 2013-08-07 15:34:24 +03:00
Budiarto Herman d68107aa9d Handover management SAP interface and A2/RSRQ-based handover algorithm 2013-08-07 11:42:53 +03:00
Budiarto Herman 5a3a2f13d5 Draft update to UE RRC state diagram 2013-08-07 11:17:46 +03:00
Budiarto Herman 72471f5f33 Minor code formatting of lena-dual-stripe 2013-08-05 13:47:41 +03:00
Budiarto Herman 9778d30bb8 Added initial cell selection to EPC-enabled simulations in lena-dual-stripe example 2013-08-05 13:40:55 +03:00
Budiarto Herman 698380bda5 Restructured the initiation of cell selection, so that UeNetDevice does not directly interact with PHY 2013-08-02 19:03:01 +03:00
Budiarto Herman 404dd583fa Restrict the CQI generation in UE PHY 2013-08-02 14:39:40 +03:00
Budiarto Herman 7c0d6d1255 Moved LteHelper::Connect functionality into LteHelper::Attach 2013-08-02 14:38:56 +03:00
Nicola Baldo 29e45d8e8a merge 2013-08-02 12:13:34 +02:00
Peter D. Barnes, Jr. 8831c14c0c Handle showpos bug in gcc libstc++ 4.2. 2013-08-01 16:26:07 -07:00
Tom Henderson a8673b52f2 update bindings 2013-08-01 09:35:13 -07:00
Marco Miozzo eab4931585 Adjust test vectors of scheduler extensive tests with new MCS BLER curves 2013-08-01 17:38:25 +02:00
Budiarto Herman 3ad66df568 Separated RSRP and RSRQ calculation in LteUePhy 2013-07-31 23:28:46 +03:00
Budiarto Herman e46947d777 Renamed some variables in LteUePhy 2013-07-31 21:24:45 +03:00
Nicola Baldo 82d158cfc0 fixed bug in buildings-pathloss-profiler example 2013-07-31 19:48:46 +02:00
Nicola Baldo 60031116c0 updated RELEASE_NOTES 2013-07-31 19:33:45 +02:00
Nicola Baldo 40b4dcf18a merged lena-dev with ns-3-dev 2013-07-31 19:18:59 +02:00
Budiarto Herman f6cd092201 Renamed some UE measurements variables 2013-07-31 16:07:30 +03:00
Budiarto Herman 45cba68616 Updated documentation for LteHelper::Attach function family 2013-07-31 14:28:06 +03:00
Budiarto Herman 6d4c290170 Renamed LTE measurement mapping function for consistency 2013-07-31 13:50:46 +03:00
Budiarto Herman abe882ea95 Testing documentation for LTE cell selection 2013-07-30 16:41:23 +03:00
John Abraham bd0dd3aae6 NetAnim: Typo in rp tag 2013-07-30 05:30:15 -07:00
Budiarto Herman dfe28a253f Updated the structure of initial cell selection documentation 2013-07-29 18:24:32 +03:00
Budiarto Herman 9100b307dc SIB2 trace source 2013-07-29 18:23:56 +03:00
Nicola Baldo dbc19eb9f0 addressed the comments in https://codereview.appspot.com/11374043/#msg2 2013-07-29 14:07:42 +02:00
Nicola Baldo a4a7b6b277 addressed the comments in https://codereview.appspot.com/11372043/#msg1 2013-07-29 13:26:01 +02:00
Budiarto Herman 6db0fffd14 Removed PLMN from LTE cell selection criteria 2013-07-29 11:38:13 +03:00
Budiarto Herman dc3ef42bbd Evaluation of cell selection criteria 2013-07-28 08:28:07 +03:00
Budiarto Herman 697755b1fe Updated UE measurements and initial cell selection documentation 2013-07-28 08:17:35 +03:00
Tommaso Pecorella 240004bc54 Bug 1296 - Enhancement in Internet module (fix broken static template functions) 2013-07-28 00:00:49 +02:00
Vedran Miletić e1f1e9a1ad Revert 097891ca7dea (Change upper-bounded TimeChecker to actually do what documentation says) and fix documentation instead 2013-07-26 21:24:35 +02:00
Tom Henderson 42f18e7854 display gcc version in waf configure 2013-07-26 10:55:03 -07:00
Vedran Miletić 19c09725a9 Change upper-bounded TimeChecker to actually do what documentation says 2013-07-26 14:17:48 +02:00
Peter D. Barnes, Jr. d14530f0ca Fix unit conversion of negative Times
Thanks to Vedran for finding this.

Example:

  Time tneg = Seconds (-1);
  NS_LOG_UNCOND ( tneg << ", in s: " << tneg.ToInteger (Time::S));

produces

  -1000000000.0ns, in s: 18446744072

Correct result is

  -1000000000.0ns, in s: -1
2013-07-25 12:17:08 -07:00
Peter D. Barnes, Jr. 0ae8b1cb8d [Doxygen] src/core 2013-07-24 17:15:33 -07:00
Peter D. Barnes, Jr. 6385919add [Doxygen] Organize Core/Random Variables 2013-07-24 17:05:36 -07:00
Peter D. Barnes, Jr. 83e2874283 [Doxygen] Collect Attribute docs into Core/Attributes 2013-07-24 17:03:28 -07:00
Peter D. Barnes, Jr. 53c2bea724 [Doxygen] Move Debugging module to core 2013-07-24 16:42:51 -07:00
Peter D. Barnes, Jr. 3c12e54cb1 [Doxygen] use \internal 2013-07-24 16:31:58 -07:00
Peter D. Barnes, Jr. 5714732a0b Fix check marks in Manual 2013-07-24 15:49:21 -07:00
Peter D. Barnes, Jr. 77e292a965 Fix output of int64x64_t when value is near min
Old:

int64x64_t i = std::numeric_limits<int64_t>::min ();
std::cout << i;

produced:
--9223372036854775808.0

(Note doubled '-' signs)
2013-07-24 11:34:04 -07:00
Budiarto Herman b4c068cfbb Fixed lte-x2-handover-measures test suite by increasing the rate of measurement reports 2013-07-24 18:02:08 +03:00
Marco Miozzo a7c242aba7 merge 2013-07-24 13:20:24 +02:00
Marco Miozzo fbfe7f7838 Bug-fix: update HARQ BLER curves for retransmissions 2013-07-24 13:19:54 +02:00
Peter D. Barnes, Jr. 54f181a609 Label type-id-test-suite TestCases with TestDuration value 2013-07-23 14:08:00 -07:00
Vedran Miletić 17b897750c Add Makefile wrapper for waf, to ease configuration in NetBeans, Eclipse and QtCreator 2013-07-23 10:25:45 +02:00
Peter D. Barnes, Jr. 8196d37bc1 Fix strict aliasing warning. 2013-07-22 16:13:07 -07:00
Budiarto Herman 3439967223 Using ObjectFactory in LteHelper for LteUeNetDevice 2013-07-22 20:41:34 +03:00
Budiarto Herman a3eadefe4b Generic (not eNodeB-specific) helper functions Attach and Connect 2013-07-22 12:39:11 +03:00
Budiarto Herman 880a48f0b9 Moved several cell selection functionality from UE PHY to RRC 2013-07-22 11:20:27 +03:00
Budiarto Herman a7327aa9f0 Reverted position of SetChannel in LteHelper InstallDevice functions 2013-07-22 11:19:31 +03:00
John Abraham 9c58ae0a94 NetAnim: Missing continue statement when Gateway is missing 2013-07-20 07:24:36 -07:00
daniel 01466f3e10 Error on the installation doc 2013-07-19 16:30:36 +02:00
Budiarto Herman cdffe69512 Merged an obsolete branch 2013-07-19 14:34:25 +03:00
Budiarto Herman 3294c71024 Reverted changes from parent revision 9974 2013-07-19 14:32:12 +03:00
Budiarto Herman 6592bc8f58 Several fixed to LTE initial cell selection 2013-07-19 14:23:04 +03:00
Budiarto Herman 0b7929d6b4 Few updates to documentation 2013-07-19 12:49:02 +03:00
Peter D. Barnes, Jr. 4eda3b7ea1 Hashed TypeId
Speed LookupByName with std::map, add LookupByHash
Hash chaining, alphabetized
TypeId test suite
2013-07-18 12:01:05 -07:00
Peter D. Barnes, Jr. baffd79c30 Merge 2013-07-18 12:04:27 -07:00
Alexander D'souza ac7c84ab0b Follow up patch for Click: Bug 760 - IP address removal can be painful 2013-07-18 14:07:56 +02:00
Peter D. Barnes, Jr. 9f77e699cb Manual and Tutorial syntax coloring 2013-07-17 17:09:36 -07:00
Tommaso Pecorella 9659e95a7d Fix address parsing from Mac[16,48.64]Address 2013-07-17 23:34:17 +02:00
Budiarto Herman eddab79fdb DL EARFCN attribute for UE 2013-07-17 15:12:01 +03:00
Nicola Baldo 587cee5600 merge ns-3-lena-dev with ns-3-dev 2013-07-16 18:49:00 +02:00
Tom Henderson 927f09c1cc rescan internet bindings 2013-07-16 07:34:15 -07:00
Tom Henderson 0303e6476b rescan network bindings 2013-07-16 07:16:43 -07:00
Tom Henderson 391d935aee rescan core bindings 2013-07-16 07:14:00 -07:00
Budiarto Herman c1adaa985d Attempt to initial synchronization, cell search, MIB and SIB1 2013-07-16 09:43:01 +03:00
John Abraham c2f53b8cb6 NetAnim: Some RPs want a non-zero Packet for RouteOutput 2013-07-15 19:43:05 -07:00
Peter D. Barnes, Jr. f49c7968a5 Change to Time::Min () and Time::Max ()
This avoids a conflict with a (pending) Time::MIN unit.
2013-07-15 15:08:10 -07:00
Peter D. Barnes, Jr. 9ee33b67ca Fix strict aliasing warning. 2013-07-15 14:19:57 -07:00
Tommaso Pecorella 170901724a IPv6 Multicast link-local address scope is... link-local 2013-07-15 21:26:03 +02:00
Tom Henderson a4d2065f8c add logging to ConstantVelocityHelper 2013-07-15 05:59:34 -07:00
Marco Miozzo 741eb67a6d Bug-fix in LteMiErrorModel on BLER curves of MCS 10, 14, 17 and 18 (bug 1628 of bugzilla) 2013-07-15 13:38:53 +02:00
Tommaso Pecorella cf8ee5fccb Spectrum model documetation placeholder 2013-07-13 15:31:12 +02:00
Tommaso Pecorella d5e3a76b27 Mac16Address added, Mac64Address refactored, and Mac[16,64]Address can be used in IPv6 2013-07-13 12:35:55 +02:00
Peter D. Barnes, Jr. 82e00f603e Tweak Hash docs, fix manual index error 2013-07-11 17:20:11 -07:00
Tommaso Pecorella c8cdd17d4d Bug 1728 - Radvd application is missing an Helper 2013-07-12 00:03:20 +02:00
Tommaso Pecorella 020b61615e Bug 1752 - RadvdInterface m_defaultLifeTime is set to milliseconds instead of seconds 2013-08-12 07:35:18 +02:00
Tommaso Pecorella 17e7d24deb Bug 1721 - Path MTU isn't handled properly 2013-08-12 06:51:18 +02:00
Tom Henderson f2eaddb1c8 add logging to aggregators 2013-08-11 20:53:01 -07:00
Tommaso Pecorella ce46777402 Add IPv6 packet support to data collection 2013-08-11 12:34:17 +02:00
Tom Henderson 164b71ff79 fix typo 2013-08-10 16:55:31 -07:00
Tom Henderson 45df4eb9d0 rescan bindings 2013-08-09 07:03:31 -07:00
Tom Henderson d34a027551 fix module dependency 2013-08-09 06:35:28 -07:00
Tom Henderson 73237d891a fix return type 2013-08-09 06:15:11 -07:00
Tom Henderson 77c6927bbb data collection documentation 2013-08-09 05:22:00 -07:00
Tom Henderson 73a35c8397 update CHANGES.html and RELEASE_NOTES 2013-08-09 04:35:13 -07:00
Tom Henderson 2a08426b17 data collection extensions for stats module 2013-08-08 06:40:41 -07:00
John Abraham fe13017646 Bug 1747 - Openflow traces not triggering on some occasions 2013-08-07 22:33:15 -07:00
Tom Henderson 7bcffef2ad fix optimized build 2013-08-06 21:41:54 -07:00
Peter D. Barnes, Jr. 97646e6481 Fix broken merge of LTE docs with Models 2013-08-06 15:34:43 -07:00
Peter D. Barnes, Jr. 24f144493f Fix quoting error 2013-08-06 15:34:02 -07:00
Peter D. Barnes, Jr. ca0a436d75 Remove duplicate Makefile rules 2013-08-06 15:07:25 -07:00
Francisco Javier Sánchez-Roselly 8614ce3317 Bug 1742 - IPv6 HbH and Dst Extension Header size is not correctly calculated 2013-08-05 19:19:43 +02:00
Tom Henderson 3847257057 update required pybindgen version 2013-08-03 07:56:38 -07:00
Peter D. Barnes, Jr. bc943dd161 Fix check marks in Tutorial 2013-08-02 14:08:36 -07:00
Peter D. Barnes, Jr. c703785f9e Restore original casts, see bug 1738 2013-08-02 12:31:16 -07:00
Peter D. Barnes, Jr. 9e78ee4ac0 Add hash to CHANGES.html and RELEASE_NOTES 2013-07-11 14:45:51 -07:00
Peter D. Barnes, Jr. 8eba44bacb Close branch hash. 2013-07-10 18:26:21 -07:00
Peter D. Barnes, Jr. 0b24f2aa4b Closed branch hash 2013-07-10 18:25:39 -07:00
Peter D. Barnes, Jr. be82a8ad39 Merge hash functions. 2013-07-10 18:24:34 -07:00
Peter D. Barnes, Jr. ea8ef52522 Merge closed branch docs 2013-07-11 14:31:03 -07:00
John Abraham fc07a2195e DSDV: Modify rarely-used keywords to comply with other compilers 2013-07-11 09:27:37 -07:00
Tom Henderson ab023f5a25 rescan internet bindings 2013-07-11 07:34:54 -07:00
Tommaso Pecorella 46415c3ef0 Bug 1682 - ./waf crashes on FC10 2013-07-11 11:56:10 +02:00
Peter D. Barnes, Jr. 0bdefa312e Hash example program which hashes the dictionary. 2013-07-10 18:22:58 -07:00
Budiarto Herman 9f0ba0f883 Attempt to shift MIB closer to Idle mode 2013-07-10 19:17:00 +03:00
Budiarto Herman f25ecbfd4e Updated UE measurements documentation 2013-07-10 14:59:00 +03:00
Tommaso Pecorella 6550570e50 RFC 3849 - IPv6 Address Prefix Reserved for Documentation 2013-07-10 00:06:35 +02:00
Alexander Afanasyev f2cd231aec Bug 1296 - Enhancement in Ipv[4,6]RoutingHelper 2013-07-09 22:49:30 +02:00
Peter D. Barnes, Jr. 4b09ce3268 CommandLine callback example, show user defaults, code cleanup 2013-07-09 13:14:19 -07:00
Junling Bu 546d448cb3 Bug 1675 - Throughput computation error in Wireless examples 2013-07-09 21:13:38 +02:00
Budiarto Herman a604e2d91f UE measurements fixes and tests for reportOnLeave and haveMeasResultNeighCells 2013-07-09 21:35:43 +03:00
Alexander D'souza ( 4d5a2a9be7 Bug 760 - IP address removal can be painful 2013-07-09 19:21:07 +02:00
Tommaso Pecorella 51f3d778ff Update RELEASE_NOTES 2013-07-09 19:15:20 +02:00
Nicola Baldo 33ca445f98 fixed bug 1731 and revised lte-phy-error-model test 2013-07-09 18:39:53 +02:00
Budiarto Herman 03b293375a Time-to-trigger implementation and tests for Event A3, A4, and A5 2013-07-09 17:31:04 +03:00
Junling Bu 0810c53b4e fix typo in attributes section of manual 2013-07-09 06:15:20 -07:00
Tom Henderson f90dfe8259 update release_steps for website 2013-07-09 06:09:38 -07:00
Budiarto Herman 2ffc089b6f UE measurements time-to-trigger tests for Event A1 and A2 2013-07-09 14:55:30 +03:00
Budiarto Herman 5f541bc22f Fixed UE measurements timing issue (when reportInterval > 200 ms, or when time-to-trigger < 200 ms) 2013-07-09 14:53:20 +03:00
Budiarto Herman 7553c905c7 Time-to-trigger implementation and tests for Event A1 2013-07-08 23:11:37 +03:00
Tommaso Pecorella 04ab26cb84 IPv6 manual 2013-07-08 20:21:40 +02:00
Tom Henderson c9459d9ce2 include tutorial-pt-br in documentation build 2013-07-07 14:20:41 -07:00
Tom Henderson 6fdebea333 fix manual Makefile 2013-07-07 14:17:28 -07:00
Tommaso Pecorella a93301ab5f Remove unnecessary private variables from Ipv6AddressHelper 2013-07-07 13:17:12 +02:00
Vedran Miletić b5891dce41 Replace <limits.h> include by <climits> 2013-07-06 16:55:33 +02:00
Budiarto Herman 4051839d03 Recombined UE measurements tests into one file 2013-07-06 15:14:33 +03:00
Tom Henderson d17fd41e3b update click bindings 2013-07-05 14:01:51 -07:00
Vedran Miletić f97431bf10 Clean up core module for building with Clang
This means removing unused private variables in random-variable-stream.{cc,h} and system-thread.h and fixing removing bad static_casts in calendar-scheduler.cc.
2013-07-05 14:35:20 +02:00
Vedran Miletić 80098cdd1c Upgrade waf to 1.7.11. 2013-07-05 13:20:20 +02:00
Vedran Miletić 9659c4528e Fix building with Clang 3.0 without extra CXXFLAGS
Clang identifies as GCC 4.2 to compilers which check for GCC version. This patch adds further check for clang and undefines __DEPRECATED macro in case Clang is detected. Newer versions of Clang are much stricter and still require CXXFLAGS for other warnings.
2013-07-05 13:15:22 +02:00
Mitch Watrous bf886d696f Updatemany modules' Python bindings 2013-07-04 14:27:35 -07:00
Budiarto Herman bd435c4fc7 Refactoring LteUeRrc 2013-07-04 20:46:20 +03:00
Budiarto Herman 9c67c38609 Fixed a bug in UE measurements test 2013-07-04 20:28:30 +03:00
Nicola Baldo 17a86900e0 fixed assert cond in LteUeMac::DoRemoveLc 2013-07-04 16:10:05 +02:00
Vedran Miletić b47d4aac23 Add missing limits.h include to nstime.h and print-introspected-doxygen.cc 2013-07-04 15:57:10 +02:00
Budiarto Herman 585b1ced9e Removed BuildMeasConfig from .h (already removed from .cc before) 2013-07-04 14:22:42 +03:00
Tommaso Pecorella cfbc5a524a Fix Ipv6Forwarding test 2013-07-04 09:44:29 +02:00
Peter D. Barnes, Jr. c35b78f59f Doc tweaks 2013-07-03 15:06:34 -07:00
Peter D. Barnes, Jr. daefbadea4 Doxygenate \internal 2013-07-03 15:05:17 -07:00
Peter D. Barnes, Jr. 12ea93c5a1 Disambiguate test asserts 2013-07-03 14:45:39 -07:00
Peter D. Barnes, Jr. e3611c4078 Doxygenate todo's 2013-07-03 14:43:10 -07:00
Edvin Močibob 7118ff0dc9 Briefly document two and three bound callback 2013-07-03 21:43:05 +02:00
Peter D. Barnes, Jr. 884814cc86 Merge bounded Time attributes 2013-07-03 12:02:06 -07:00
Peter D. Barnes, Jr. a7d87403f6 Time attributes with enforced bounds.
The following stanza in GetTypeId() will restrict the value to

    -5s  <=  m_timeWithBounds  <= 10s

.AddAttribute ("TestTimeWithBounds", "help text",
               TimeValue (Seconds (-2)),
               MakeTimeAccessor (&AttributeObjectTest::m_timeWithBounds),
               MakeTimeChecker (Seconds (-5), Seconds (10)))
2013-07-03 11:19:21 -07:00
Peter D. Barnes, Jr. e468df69c9 Repair Time docs mangled by f0be2daaa38f 2013-07-03 10:53:00 -07:00
Budiarto Herman aca9b556d5 Reduced UE measurements test execution length 2013-07-03 18:18:59 +03:00
Nicola Baldo b58678ee11 fixed EARFCN attribute limits for band 21 2013-07-03 16:58:46 +02:00
Budiarto Herman 63809ba7b9 Added hysteresis tests to UE measurements test suites 2013-07-03 17:30:10 +03:00
Hajime Tazaki 5a238088be log msg instead of fail when non-IPv4 pkt is sent over LteUeNetDevice 2013-07-03 15:46:49 +02:00
Budiarto Herman 7ae10a085b Clarification comments on LTE SI transmission schedule 2013-07-03 15:40:08 +03:00
Budiarto Herman dd59b7acb3 Additional tests for UE measurements handover test suite 2013-07-03 15:10:08 +03:00
Budiarto Herman a0b74cea40 Split UE measurements tests into multiple test suites (still problem with operator redefinition) 2013-07-03 14:09:58 +03:00
Tommaso Pecorella 30fc97d8b2 Revert changeset 9854. Ipv6 forwarding should be off by default 2013-07-02 23:08:26 +02:00
Peter D. Barnes, Jr. 9a9dfcd1ad Bug 1727 - Ping6 should use a proper source address 2013-07-02 21:56:54 +02:00
Budiarto Herman 8a8559d63c Changes based on peer review: typos in documentation, conversion functions for Hysteresis and a3-Offset, separated constructor implementation of ReportConfigEutra, and removed dead code in LteUeRrc. 2013-07-02 22:18:03 +03:00
Budiarto Herman dbe5bad5bd Fixed Event A5 bug 2013-07-02 21:34:14 +03:00
Budiarto Herman 7f81232309 Preliminary design and user documentation of LTE initial cell selection 2013-07-02 10:23:16 +03:00
Peter D. Barnes, Jr. 3e7b4c0636 Revert [Coverity] Logically dead code (DEADCODE)
NS_ASSERT vanishes in optimized builds, so return code check still needed.
2013-07-01 10:08:20 -07:00
Peter D. Barnes, Jr. 9d2bf09460 Backout changeset 581c9b2f52c842a06cd3692c1a043a64b85c0c36 2013-07-01 10:06:39 -07:00
Tom Henderson 512d2c2d9e fix typo from changeset 9881:f6feba3e9942 2013-07-01 09:59:24 -07:00
Tommaso Pecorella a05600515e Bug 1712 - The IP (v4 and v6) forwarding needs a test 2013-06-30 14:10:49 +02:00
Vedran Miletić 172e7aff8f Check for <net/ethernet.h> include before enabling fd-net-device module 2013-06-29 23:51:09 +02:00
Budiarto Herman 46b47877e5 Preliminary UE measurements handover test case 2013-06-28 12:31:30 +03:00
Budiarto Herman 6f4d7a2990 A few fixes to UE measurements test cases 2013-06-28 10:24:33 +03:00
Budiarto Herman 9ef9da1519 Event A5 implementation and test cases 2013-06-27 13:23:02 +03:00
Budiarto Herman 4e208dae3c Fixed conversion of A3 offset 2013-06-27 10:08:32 +03:00
Peter D. Barnes, Jr. 198d9f8ce9 Automated merge with file:///Users/barnes26/Code/netsim/ns3/repos/ns-3-dev 2013-06-26 17:32:03 -07:00
Peter D. Barnes, Jr. 351249c559 [Coverity] "erase" invalidates iterator 2013-06-26 17:26:56 -07:00
Peter D. Barnes, Jr. f14f746227 [Coverity] Logically dead code (DEADCODE) 2013-06-26 17:15:56 -07:00
Peter D. Barnes, Jr. 397b75c1b4 Merge 2013-06-26 16:43:20 -07:00
Biljana Bojovic a6f3de6043 fixed error when setting up the bandwidth value to 6 in LTE module 2013-06-26 18:42:17 +02:00
Budiarto Herman e0d555f72f UE measurements piecewise test case 2 2013-06-26 17:01:46 +03:00
Tommaso Pecorella c49c678cbc Bug 1720 - IPv6 Fragmentation cause crashes (tweak, thanks Peter) 2013-06-26 01:20:11 +02:00
Tommaso Pecorella e4e367ad27 Bug 1720 - IPv6 Fragmentation cause crashes (better fix) 2013-06-25 23:01:41 +02:00
Tommaso Pecorella b589986de5 Bug 1720 - IPv6 Fragmentation cause crashes 2013-06-25 22:46:01 +02:00
Budiarto Herman 6883144780 Constructor for ReportConfigEutra 2013-06-25 17:54:49 +03:00
Budiarto Herman 0948488e79 Fixed typo 2013-06-25 17:06:16 +03:00
Budiarto Herman b9a1aefc2b UE measurements test case for Event A3 and A4 2013-06-25 14:43:12 +03:00
Budiarto Herman 00e9365a2d Event A3 implementation and general update to event-based triggering criteria 2013-06-25 14:43:07 +03:00
Budiarto Herman 994ed53c08 Removed assumption of Event A2 and A4 in LteEnbRrc upon receiving measurement report 2013-06-25 14:41:32 +03:00
Tommaso Pecorella e83e0ee9f8 Bug 1719 - IPv6 default state is set to not forward packets 2013-06-25 00:13:50 +02:00
Tommaso Pecorella f91ad6f841 Bug 1718 - Ipv4StaticRouting log component is misspelled 2013-06-25 00:08:12 +02:00
Budiarto Herman e2032bcc90 Fixed missing UE measurements configuration in lena-x2-handover-measures example 2013-06-24 17:51:15 +03:00
Budiarto Herman 561e156ce3 Copied features between handover examples 2013-06-24 17:49:39 +03:00
Budiarto Herman 7ff45b07d0 UE measurements piecewise test case 1 for Event A2 2013-06-24 17:19:42 +03:00
Budiarto Herman 9a5004d4cd Fixed missing UE measurements configuration in lte-x2-handover-measures test suite 2013-06-24 17:16:07 +03:00
Budiarto Herman 209ecc9f3f Minor coding style fixes in handover examples 2013-06-24 17:13:59 +03:00
Budiarto Herman 0ef013fc85 Updated UE measurements documentation 2013-06-24 00:19:06 +03:00
Budiarto Herman 34558334e8 UE measurements piecewise test case 1 for Event A1 2013-06-21 13:56:54 +03:00
Budiarto Herman 8c205db428 Complete report interval implementation (except the SPARE* options) 2013-06-21 13:46:54 +03:00
Budiarto Herman eb12357011 Removed assert statement rejecting configuration of Event A1 2013-06-21 13:41:59 +03:00
Budiarto Herman 11bbca6467 Attributes for configuring layer 3 filtering 2013-06-21 11:01:06 +03:00
Mitch Watrous 96fe3c2132 Bug 1710 - Examples crash when run like this: ./test.py -e example-name 2013-06-20 10:23:10 -07:00
Mitch Watrous b11234bba3 Make examples again work for nonrelease builds 2013-06-19 13:55:49 -07:00
Mitch Watrous 5f1a54818f Bug 1707 - test.py doesn't work with the release profile 2013-06-19 11:17:17 -07:00
Nicola Baldo 186893dc20 moved stats-related callbacks from LteHelper to the appropriate StatsCalculator 2013-06-19 17:52:18 +02:00
Nicola Baldo 818c0aa6e1 avoid re-assigning the last freed RNTI 2013-06-19 17:10:13 +02:00
Budiarto Herman cde30ab205 Added the original A2 and A4 configuration to UE measurements test case 2013-06-19 17:31:00 +03:00
Budiarto Herman 662f996003 Removed Event A2 and A4 threshold attributes from eNodeB RRC 2013-06-19 17:21:22 +03:00
Budiarto Herman b9eafb57e3 Removed preset UE measurement configuration and made it configurable 2013-06-19 16:56:36 +03:00
Budiarto Herman 3d8b10622a Event A1 implementation 2013-06-19 14:46:09 +03:00
Budiarto Herman 9c99b5e988 Preliminary framework for testing UE measurements in piecewise configuration 2013-06-19 13:55:58 +03:00
Guowang Shi 727abcda3e Bug 1697 - ICMPv6 Redirect trigger contains multiple bugs 2013-06-19 09:21:39 +02:00
Guowang Shi 70f2ea6e92 Bug 1688 - Routers should advertise themselves from the link-local address 2013-06-19 09:10:31 +02:00
Tom Henderson ffd2a5f0b1 build the manual in the same way as model library documentation, in a temporary directory 2013-06-18 21:49:35 -07:00
Tom Henderson 8159a8ec39 rescan bindings 2013-06-18 15:29:09 -07:00
Tom Henderson 0f657f5a6a update CHANGES.html to reflect the removal of tools module 2013-06-18 14:18:57 -07:00
Tom Henderson 63606febe2 remove tools module 2013-06-18 13:47:15 -07:00
Tom Henderson 2180f8ad5d move average.h from tools to stats module 2013-06-18 13:42:57 -07:00
Tom Henderson 7477fb5d43 move delay-jitter-estimation to stats/helper 2013-06-18 13:21:35 -07:00
Tom Henderson 5b536a7932 add license to files 2013-06-18 13:18:19 -07:00
Tom Henderson 1071fd3d46 move gnuplot support from src/tools to src/stats 2013-06-18 13:16:51 -07:00
Tom Henderson 201f7e084a move event-garbage-collector from tools module to core/helper 2013-06-18 10:05:15 -07:00
Tom Henderson eb8227f290 make core/helper directory; move random-stream helper code there 2013-06-18 09:46:32 -07:00
Nicola Baldo 3d8c969762 minor fixes for lena-dual-stripe with macro UE mobility 2013-06-18 14:28:29 +02:00
Marco Miozzo ebd5e131a2 Bug-fix: OhBuildingsPropagationLossModel::GetLoss() move from DynamicCast to GetObject 2013-06-17 13:35:16 +02:00
Marco Miozzo 3d834776de merge 2013-06-17 13:03:33 +02:00
Marco Miozzo 0048098e04 Update error message in OhBuildingsPropagationLossModel with new MobilityBuildingInfo 2013-06-17 13:02:58 +02:00
Nicola Baldo 1937502efe made attribute ns3::LteHelper::SchedulerType gettable 2013-06-17 12:21:22 +02:00
Guowang Shi 0292598490 Bug 1703 - Nodes don't react to a DAD 2013-06-16 13:30:41 +02:00
Tommaso Pecorella 7f9ede9841 Bug 1701 - Ipv6StaticRouting: the source address should match the destination scope 2013-06-16 09:34:36 +02:00
Tommaso Pecorella 8fcd718f03 Bug 1700 - Ipv6RawSocket does not honor the bound address when sending packets 2013-06-16 08:58:39 +02:00
Tom Henderson 88e80b4b9f rescan internet bindings 2013-06-15 15:34:38 -07:00
Guowang Shi 4c6280072c bug 1646 - ICMPv6 Redirect are sent from global address instead of link-local 2013-06-15 10:56:55 +02:00
Mitch Watrous dc9c9f08f4 Bug 1695 - improve test.py output when -g selected without valgrind 2013-06-14 16:31:10 -07:00
Peter D. Barnes, Jr. 38a03c2802 Refactor utils/bench-simulator to use CommandLine, RandomVariableStream 2013-06-14 14:12:56 -07:00
Peter D. Barnes, Jr. 2b4ec72110 CommandLine: correct license.
Sorry Mathieu ;)
2013-06-14 14:01:19 -07:00
Peter D. Barnes, Jr. 744b0617a5 CommandLine: add Usage message, simplify bool args
Accept obvious bool arguments:  --arg --arg=t --arg=true
Get program name from argv[0]
Example program
Doxygenate
2013-06-14 13:54:39 -07:00
Tom Henderson 42c055f11b bugfix: add TcpSocket to the SocketList vector, to make each socket accessible through the Config subsystem 2013-06-14 08:08:29 -07:00
Marco Miozzo 5c2c064772 Update lena-dual-stripe for including SteadyStateRandomWaypointMobilityModel for outdoor macro UEs 2013-06-14 16:13:56 +02:00
Marco Miozzo 0c979225db Update SteadyStateRandomWaypointMobilityModel with fixed z axis values 2013-06-14 16:13:07 +02:00
Mitch Watrous 54805f0915 Back out Bug 1695 fix 2013-06-13 14:27:04 -07:00
Mitch Watrous e7475e5552 Bug 1695 - improve test.py output when -g selected without valgrind 2013-06-13 11:29:15 -07:00
Budiarto Herman 176d7dfdb5 Dia file for UE measurement testing documentation 2013-06-13 08:24:35 +03:00
Budiarto Herman 694f70284d Table titles for UE measurement documentation 2013-06-13 07:45:15 +03:00
Morten V. Pedersen 71e266473d bug 1693: missing include 2013-06-12 08:43:51 -07:00
Alexander D'souza 66120cc3fc bug 1694: documentation fix 2013-06-12 06:22:36 -07:00
Alexander D'souza f195e9a146 bug 1305: remove list of modules at end of waf clean 2013-06-12 06:20:14 -07:00
Peter D. Barnes, Jr. c55d9ac5a9 Show defaults for global values. 2013-06-11 17:41:37 -07:00
Peter D. Barnes, Jr. 39ff2c926b Use a common portable pdf rescaling script. 2013-06-11 17:28:15 -07:00
Peter D. Barnes, Jr. 433a24d419 [Doxygen] use \deprecated 2013-06-11 17:27:05 -07:00
Peter D. Barnes, Jr. 1bca805862 [Doxygen] use \todo 2013-06-11 17:02:23 -07:00
Peter D. Barnes, Jr. 51550a9e39 doxygenate type-traits 2013-06-11 16:48:13 -07:00
Peter D. Barnes, Jr. bc13311955 doxygenate simulator group 2013-06-11 16:45:49 -07:00
Peter D. Barnes, Jr. 881223720e doxygenate callbacks 2013-06-11 16:45:01 -07:00
Peter D. Barnes, Jr. 6b39f62563 Run introspection before doing doxygen warnings report 2013-06-11 16:43:36 -07:00
Budiarto Herman c1fe8b8558 Initial draft of documentation on UE measurements 2013-06-09 23:07:23 +03:00
Marco Miozzo 8805d8bd46 merge with lena-pem for moving from BuildingsMobilityModel to MobilityBuildingInfo 2013-06-04 17:20:40 +02:00
Marco Miozzo 18269c91d6 Minor updates to documentation on building mobility info in lte section 2013-06-04 16:57:16 +02:00
Marco Miozzo bce8b491aa Update building module documentation with MobilityBuildingInfo 2013-06-04 16:30:14 +02:00
Marco Miozzo 9f88fcc217 Remove Install method with building from the BuildingsHelper 2013-06-04 16:29:06 +02:00
Nicola Baldo 67fe1d4001 corrected test vector of lte-pss-ff-mac-scheduler test suite 2013-06-04 12:41:52 +02:00
Marco Miozzo efd46793d4 Renaming of file buildings-mobility-model in mobility-building-info 2013-06-04 12:11:39 +02:00
Marco Miozzo 58b5a3b10b Move from BuildingsMobilityModel to BuildingMobilityInfo source, tests and examples 2013-06-03 17:01:52 +02:00
Nicola Baldo 205297a4dd indicate allowed object types for LteHelper attributes 2013-06-03 16:12:09 +02:00
Nicola Baldo 7fade6a4c8 new test vector for fragmentation test case of lte-epc-e2e-data to account for new default LteRlcUm::MaxTxBufferSize 2013-06-03 15:35:35 +02:00
Mitch Watrous 4f20392af0 rescan DSR bindings 2013-06-02 09:27:51 -07:00
Mitch Watrous 54d457f233 bug 1595: remove unimplemented function declarations 2013-06-02 09:27:30 -07:00
Peter D. Barnes, Jr. 4998f46162 Allow oxygen grouping using /**@{*/, etc. 2013-05-31 14:37:49 -07:00
Peter D. Barnes, Jr. 5cd2be069a Use a common portable pdf rescaling script. 2013-05-31 12:03:40 -07:00
Peter D. Barnes, Jr. 6eab23c955 Show files with doxygen warnings in numerical order 2013-05-31 12:01:51 -07:00
Nicola Baldo 2494bfbda4 merge 2013-05-31 16:44:58 +02:00
Nicola Baldo 4984b6d7df changed default params of some lte examples to make them run faster 2013-05-31 16:25:32 +02:00
Nicola Baldo e2d75baa53 merge 2013-05-31 16:24:49 +02:00
Nicola Baldo 956fe90da4 fixed Bug 1630 - spurious RX packets in DlRlcStats 2013-05-31 15:54:42 +02:00
Peter D. Barnes, Jr. ab18b7e466 Fix document building errors 2013-05-30 13:53:56 -07:00
Peter D. Barnes, Jr. 7750a2adc5 Create the sphinx _static output directories 2013-05-29 15:36:21 -07:00
Peter D. Barnes, Jr. c02c9173cb Closed branch docs 2013-05-29 14:44:21 -07:00
Peter D. Barnes, Jr. 74542bd5f5 Relabel test classes. 2013-05-29 14:43:59 -07:00
Peter D. Barnes, Jr. dac21f5413 [Coverity] Not restoring ostream format (STREAM_FORMAT_STATE) 2013-05-28 17:39:46 -07:00
Peter D. Barnes, Jr. ab03dfed2a [Coverity] Out-of-bounds read (OVERRUN) 2013-05-28 17:29:48 -07:00
Peter D. Barnes, Jr. 069d7a8a46 [Coverity] Structurally dead code (UNREACHABLE) 2013-05-28 16:53:09 -07:00
Nicola Baldo 5712203a80 minor correction in AM RLC section of LTE design doc 2013-05-28 11:53:33 +02:00
Nicola Baldo 2d8ec2bcb8 updated description of lte-rrc test suite 2013-05-27 17:50:03 +02:00
Junling Bu 9c68edd4a7 fixed Bug 1677 - The annotation of YansWifiPhy needs correction 2013-05-27 13:45:39 +02:00
Nicola Baldo 2872697f37 corrected script path in LTE docs 2013-05-27 10:34:36 +02:00
Tommaso Pecorella d7e61e2f49 Bug 1689 - IPv6 shouldn't add a default gateway without checking the Router lifetime 2013-05-25 21:36:10 +02:00
Vedran Miletić c0e64dac61 Fix Bug 1669 - ns-3 should support binding two and three (possibly more) arguments 2013-05-25 18:18:00 +02:00
Tommaso Pecorella 6ed5900d07 Update the RELEASE_NOTE (track fixed bugs) 2013-05-25 14:48:30 +02:00
Tommaso Pecorella 2ba351d305 Bug 1678 - C++11 compliance problem with std::pair 2013-05-25 14:45:37 +02:00
Tommaso Pecorella 15ada60263 imported patch make_pair.patch 2013-05-25 12:56:26 +02:00
Peter D. Barnes, Jr. 86109ec9b5 Fix vector index range. 2013-05-24 12:50:44 -07:00
Peter D. Barnes, Jr. d8a560820b Revert ed82eb2702d0 on wifi/model/wifi-mad-header.cc to diagnose valgrind error. 2013-05-24 12:50:02 -07:00
John Abraham e220b67e28 NetAnim:Some RPs need non-null packets for RouteOutput 2013-05-24 08:09:18 -07:00
Marco Miozzo 3d801cc939 merge 2013-05-24 12:30:59 +02:00
Marco Miozzo 6e29432524 Bug-fix DoSchedUlTriggerReq of all schedulers: remove UEs discared for CQI=0 from the allocation map used to retrieve info when processing PUSCH CQIs 2013-05-24 12:30:04 +02:00
Peter D. Barnes, Jr. 78b9cd962b Use the *right* explicit value, cast to the right size, instead of C++11 constant. 2013-05-23 17:10:09 -07:00
Peter D. Barnes, Jr. 01136df80f Use the *right* explicit value, instead of C++11 constant. 2013-05-23 12:39:56 -07:00
Peter D. Barnes, Jr. a76c71b970 Use explicit value, instead of C++11 constant. 2013-05-23 09:55:58 -07:00
Peter D. Barnes, Jr. 2ec593d861 Merge closed branch Coverity 2013-05-22 18:10:13 -07:00
Peter D. Barnes, Jr. 3721bcf588 Merge close extra default branch 2013-05-22 18:09:49 -07:00
Peter D. Barnes, Jr. 428db68f40 Merge close branch ptl 2013-05-22 18:09:27 -07:00
Peter D. Barnes, Jr. 957d41063d Closed branch coverity 2013-05-22 17:59:10 -07:00
Peter D. Barnes, Jr. 666bcc699f Merge Coverity fixes 2013-05-22 17:58:58 -07:00
Peter D. Barnes, Jr. 79b5c59706 Closed branch default 2013-05-22 17:49:39 -07:00
Peter D. Barnes, Jr. 62e7de83a2 Coverity static checking script 2013-05-22 17:48:15 -07:00
Peter D. Barnes, Jr. 258eba0cf3 Add duration to test cases. 2013-05-22 17:22:49 -07:00
Peter D. Barnes, Jr. f8bd5c208f Closed branch ptl 2013-05-22 15:04:15 -07:00
Peter D. Barnes, Jr. 423b193696 Merge packet-tag-list refactoring 2013-05-22 15:04:04 -07:00
Peter D. Barnes, Jr. 4fc79291b9 Use PacketTagList::TagData::MAX_SIZE in DeviceNameTag 2013-05-22 12:57:58 -07:00
Peter D. Barnes, Jr. 686bd41f4a Defer null pointer check to Packet class. 2013-05-22 10:11:39 -07:00
Nicola Baldo 1a8c217c9a removed obsolete LOG_ERROR in several LTE schedulers 2013-05-22 13:30:12 +02:00
Peter D. Barnes, Jr. 8ffa0f7c30 [Coverity] Structurally dead code (UNREACHABLE) 2013-05-21 15:11:10 -07:00
Marco Miozzo 448c32aeec Bug-fix TraceFadingLossModel::GetTypeId, mismatching name of attribute of RngStreamSetSize 2013-05-21 17:48:08 +02:00
Nicola Baldo d99b767e7f fixed TraceFadingLossModel::AssignStreams() 2013-05-21 17:24:06 +02:00
Peter D. Barnes, Jr. 5920bdc24d [Coverity] Dead default in switch (DEADCODE) 2013-05-20 15:56:47 -07:00
Peter D. Barnes, Jr. 84126f97be [Coverity] Untrusted loop bound (TAINTED_SCALAR) 2013-05-20 15:50:00 -07:00
Peter D. Barnes, Jr. 9ef6072262 [Coverity] Unintended sign extension (SIGN_EXTENSION) 2013-05-20 15:37:04 -07:00
Tommaso Pecorella bcfcc5a3f4 Better fix for bug 1643 2013-05-20 22:57:37 +02:00
Tommaso Pecorella 9ae3e7d5db bug 1662 - m_type not set for Ipv6OptionRouterAlertHeader (by Francisco <fnavarro@ujaen.es>) 2013-05-17 13:46:25 +02:00
Peter D. Barnes, Jr. 74a3079c12 [Coverity] Better document why regions are unreachable 2013-05-16 12:30:44 -04:00
Peter D. Barnes, Jr. 2516df45bb [Coverity] Explicit null dereferenced (FORWARD_NULL) 2013-05-16 11:25:29 -04:00
Peter D. Barnes, Jr. 572eaccd20 [Coverity] Unchecked return value from library (CHECKED_RETURN) 2013-05-16 11:18:20 -04:00
Peter D. Barnes, Jr. 403d97e6f3 Document deliberate case fall through. 2013-05-16 11:06:52 -04:00
Peter D. Barnes, Jr. 9ee67412c4 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO) 2013-05-16 10:57:10 -04:00
Peter D. Barnes, Jr. 3bc4f0efd0 [Coverity] Overflowed return value (INTEGER_OVERFLOW) 2013-05-16 10:52:29 -04:00
Peter D. Barnes, Jr. 87819c2734 [Coverity] Division or modulo by zero (DIVIDE_BY_ZERO) 2013-05-16 02:06:55 -04:00
Peter D. Barnes, Jr. beb2763dd1 [Coverity] Logically dead code (DEADCODE) 2013-05-15 17:18:23 -04:00
Peter D. Barnes, Jr. 138d242a9d [Coverity] Operands don't affect result (CONSTANT_EXPRESSION_RESULT) 2013-05-15 16:37:31 -04:00
Peter D. Barnes, Jr. 80b15ea83f [Coverity] Unchecked return value (CHECKED_RETURN) 2013-05-15 16:26:46 -04:00
Peter D. Barnes, Jr. 764cedd639 [Coverity] Unchecked dynamic_cast (FORWARD_NULL) 2013-05-15 15:47:58 -04:00
Peter D. Barnes, Jr. 6d84519cc7 [Coverity] Missing break in switch (MISSING_BREAK) 2013-05-15 15:17:20 -04:00
Peter D. Barnes, Jr. 8ce493fd02 [Coverity] Structurally dead code (UNREACHABLE) 2013-05-15 14:45:28 -04:00
Peter D. Barnes, Jr. 2af3c22d07 [Coverity] Dereference before null check (REVERSE_INULL) 2013-05-15 14:00:06 -04:00
Peter D. Barnes, Jr. a4917e8935 [Coverity] Out-of-bounds access (OVERRUN) 2013-05-15 11:16:59 -04:00
Peter D. Barnes, Jr. a8745360c4 [Coverity] Overflowed return value (INTEGER_OVERFLOW) 2013-05-15 10:10:26 -04:00
Peter D. Barnes, Jr. 51eb08677b [Coverity] Not restoring ostream format (STREAM_FORMAT_STATE) 2013-05-15 10:09:33 -04:00
Peter D. Barnes, Jr. 4a1b70f220 [Coverity] Unused pointer value (UNUSED_VALUE) 2013-05-15 09:57:26 -04:00
Peter D. Barnes, Jr. 426f22be0c [Coverity] Copy into fixed size buffer (STRING_OVERFLOW) 2013-05-15 09:56:21 -04:00
Peter D. Barnes, Jr. 71f388c000 [Coverity] Failed to override method (BAD_OVERRIDE) 2013-05-15 09:55:22 -04:00
Peter D. Barnes, Jr. 263ea7bc9b [Coverity] Missing varargs init or cleanup (VARARGS) 2013-05-15 09:54:01 -04:00
Manuel Requena 332bea261e merge 2013-05-09 02:22:00 +02:00
Nicola Baldo 2adafe2e40 merge lena-dev with ns-3-dev 2013-05-14 13:29:16 +02:00
Tom Henderson 15058e8967 more tutorial updates 2013-05-09 22:38:09 -07:00
Tom Henderson 76c91ed1f4 update CHANGES.html 2013-05-09 16:17:01 -07:00
Yufei Cheng 3b0c201a73 update DSR routing documentation 2013-05-09 14:50:43 -07:00
Manuel Requena 0aef09f336 Change default MaxTxBufferSize in RLC-UM to 10KBytes 2013-05-09 02:08:33 +02:00
Manuel Requena 9633b4aa3f Change default maxTxBufferSize to 10KBytes 2013-05-09 02:07:43 +02:00
Nicola Baldo 6a67bed074 added reference octave script for lte-x2-handover-measures test 2013-05-08 18:45:16 +02:00
Tom Henderson 71614226c9 rescan bindings 2013-05-08 07:00:47 -07:00
Manuel Requena e34dbfd8bd Accelate testsuite (increase speed from 100 to 150 m/s) 2013-05-08 12:53:46 +02:00
Nicola Baldo 568cd20be1 fixed bug 1421 - Frequency dependent propagation loss models need uniform Frequency / Lambda attribute 2013-05-07 18:57:51 +02:00
Marco Miozzo 96df08adc5 merge 2013-05-07 12:35:17 +02:00
Marco Miozzo 60f6a47e55 Add filtering of attached UE in LteControlMessage received by LteEnbPhy::ReceiveLteControlMessageList 2013-05-07 12:34:39 +02:00
Mitch Watrous 81a807237d Update LTE Python bindings 2013-05-06 09:53:23 -07:00
Nicola Baldo b00e7d6290 Bug 1674 : removed unimplemented methods in LTE module 2013-05-06 18:03:54 +02:00
Nicola Baldo 13378fbc3a re-fixed valgrind error in LteUeRrc 2013-05-06 17:42:37 +02:00
Manuel Requena 0b58e7b0b6 Check state of the UE 2013-05-06 11:02:15 +02:00
Manuel Requena d9d8ea3ee4 merge 2013-05-06 10:57:01 +02:00
Marco Miozzo 3db7072e29 merge 2013-05-06 11:29:00 +02:00
Marco Miozzo 34f2c03726 Bug-fix RrFfMacScheduler::DoSchedDlTriggerReq adjust allocation of RLC PDUs in presence of empty LCs 2013-05-06 11:28:10 +02:00
Manuel Requena 4171a6801c Check state of the UE 2013-05-06 10:49:57 +02:00
Tom Henderson 804ff9b528 update tutorial for bake usage 2013-05-05 22:42:12 -07:00
Tom Henderson bbb631cb98 update CHANGES.html 2013-05-05 22:41:07 -07:00
Alina Quereilhac b1f05f2a33 fixed Bug 1649 - bindings scanning for fd-net-device (adding --force-planetlab option to force PlanetLab support) 2013-05-06 00:50:09 +02:00
Alina Quereilhac 0e8b81cd09 fixed Bug 1649 - bindings scanning for fd-net-device 2013-05-04 22:38:49 +02:00
Manuel Requena 7f9e7150fc Add checkings for the best neighbour 2013-05-03 11:04:28 +02:00
Budiarto Herman 6c4218520a fixed Bug 1660 - Handover at certain subframe produces longer delay 2013-05-03 00:40:28 -04:00
Nicola Baldo 1cc284f597 fixed Bug 1667 - models library doc does not build 2013-05-03 00:24:58 -04:00
Nicola Baldo 45da88b852 updated CHANGES.html and RELEASE_NOTES for LTE module 2013-05-01 22:58:07 -04:00
Tom Henderson a6f30c16a6 assign streams to burst error model test case 2013-05-01 06:29:57 -07:00
Tom Henderson 7d87d6b3cf burst error model uses two random variables 2013-05-01 06:14:51 -07:00
Nicola Baldo 14ae4b6072 merge 2013-04-30 14:03:44 +01:00
Daniel Lertpratchya fddee3b927 bug 1659: WifiTest call Stop() before Run() (bug fix due to linlinjavaer@gmail.com) 2013-04-30 08:56:18 -04:00
Brian Swenson f50c6fe33a tcp doc update 2013-04-29 15:23:15 -04:00
Tom Henderson 345421623c finish off changeset cb763839fc18; handle case where flow monitor is unused by simulation 2013-04-29 12:07:49 -07:00
Tommaso Pecorella 1cd5127d1c bug 1661 - Variable ub1 defined but not used in ipv6-address.cc 2013-04-29 19:52:58 +02:00
Tom Henderson 9d2ec5d5ea update bindings 2013-04-29 08:40:50 -07:00
Brian Swenson 15504bc3b5 Updated bug fixes in RELEASE_NOTES 2013-04-29 11:25:07 -04:00
Nicola Baldo c630cbbc76 minor updates to LTE doc 2013-04-29 12:32:38 +02:00
Tom Henderson e39173ac22 bug 1644: dispose of flow monitor objects from FlowMonitorHelper 2013-04-29 01:29:08 -07:00
Tom Henderson 40f6318eea fix optimized build 2013-04-28 23:22:34 -07:00
Mitch Watrous a7ae0c3b86 Update release notes 2013-04-26 14:06:06 -07:00
Mitch Watrous b615a67055 Bug 1632 - Prepend bake build directory to the guessed locations that waf will look to find libraries 2013-04-26 13:55:02 -07:00
Tom Henderson 72b4166e2c Update fd-net-device bindings for Object::Initialize change 2013-04-26 11:36:33 -07:00
Tom Henderson a8065eb589 rescan DSR bindings 2013-04-26 11:13:21 -07:00
Alexander Afanasyev f81e8ee7fd bug 1562: waf upgrade, patch to launch apiscan task 2013-04-26 11:13:12 -07:00
Mitch Watrous 6b5386116e Look for click in bake's build directory first (Bug 1632 partial fix) 2013-04-26 10:09:32 -07:00
Yufei Cheng a84f02b031 Fix DSR bug 1608/1609. 2013-04-26 10:43:20 -04:00
Alina Quereilhac 8070ec10a6 Fixed compilation problem on the PlanetLabFdNetDeviceHelper and improved documentation for the fd-net-device module. 2013-04-26 02:00:09 +02:00
Lalith Suresh c2122bd624 Update Click build instructions to point to Click github repository 2013-04-25 22:08:40 +02:00
Mitch Watrous f81f265cbd Look for nsc in bake's build directory first (Bug 1632 partial fix) 2013-04-24 15:54:13 -07:00
Daniel Lertpratchya 7ef4ed658a Bug 1579 - edca-txop-n fragmentation causes segfault 2013-04-23 10:29:16 -04:00
Brian Swenson cd6f68ba0a Documentation 2013-04-22 15:57:07 -04:00
Marco Miozzo e59ba1eb4e Bug-fix: RrFfMacScheduler::DoSchedDlTriggerReq update check with rbgAllocatedNum 2013-04-22 18:10:27 +02:00
Marco Miozzo 1c9cc57989 Remove txMode parameter from UlRxPhyStats 2013-04-22 11:55:23 +02:00
Marco Miozzo 1515ac2016 merge 2013-04-22 11:51:32 +02:00
Marco Miozzo 9f5b066d04 Correct PhyTxStatsCalculator::DlPhyTransmission file legend 2013-04-22 11:50:55 +02:00
Tom Henderson 87928cdfcd fix valgrind error 2013-04-21 21:04:29 -07:00
Nicola Baldo a1ca5ae43b more meaninfgul default parameters for the adhoc-aloha-ideal-phy-matrix-propagation-loss-model example 2013-04-21 21:44:54 +02:00
Edvin Močibob aff43b376b Further work on cleaning up function logging of wifi module. 2013-04-20 16:56:38 +02:00
Kristijan Lenković 32e9fe59bd Further work on cleaning up function logging of internet module. 2013-04-20 16:49:31 +02:00
Tommaso Pecorella 1c0d6edb8d bug 1635 - wifi-phy-test missing Simulator::Destroy 2013-04-20 14:57:59 +02:00
Mitch Watrous b72c268305 Update Python bindings 2013-04-19 17:17:35 -07:00
Vedran Miletić 5b6db3ec12 Update manual with Start/DoStart to Initialize/DoInitialize change 2013-04-20 00:39:11 +02:00
Vedran Miletić 59d75a4686 Update tutorial with Start/DoStart to Initialize/DoInitialize change 2013-04-20 00:36:39 +02:00
Edvin Močibob 1962e78524 Partially clean up function logging of wifi module. 2013-04-20 00:30:06 +02:00
Kristijan Lenković 7e79ae8c71 Partially clean up function logging of internet module. 2013-04-20 00:29:36 +02:00
Tommaso Pecorella 32f00291e7 bug 1643 - NdiscCache creation and existence checks 2013-04-20 00:11:33 +02:00
Tommaso Pecorella 77b0af3971 bug 1683 - IPv6 autoconfigured don't use *infinite* lifetimes 2013-05-17 13:11:22 +02:00
Tom Henderson 6ad306b66c prepare for next release 2013-05-14 08:01:34 -07:00
Tom Henderson 077b8e3e02 Added tag ns-3.17 for changeset b4a70b99171a 2013-05-14 07:54:21 -07:00
Tom Henderson f07d1611be update RELEASE_NOTES for availability 2013-05-14 07:51:26 -07:00
Tom Henderson 4d0b8b05d8 clarify statement in tutorial 2013-05-12 11:46:51 -07:00
Tom Henderson b77fb7f40c update emulation section to deprecate EmuNetDevice and add FdNetDevice 2013-05-11 13:27:05 -07:00
Tom Henderson 2e20d86a39 add FdNetDevice descriptor 2013-05-11 11:24:37 -07:00
Tom Henderson 3a8d684c9e update changes.html and release notes for FdNetDevice changes 2013-05-11 11:08:52 -07:00
Tom Henderson 49eb8e5a9f improve formatting 2013-05-11 10:50:48 -07:00
Tom Henderson 21f96dc635 update RELEASE_NOTES 2013-05-09 22:43:52 -07:00
Vedran Miletić 53ec6a479e Rename Start and DoStart methods to Initialize and DoInitialize
The goal of this patch is to allows us to differentiate the Start/Stop
functionality present in some classes from Initialize/Dispose functionality.
2013-04-19 22:39:55 +02:00
Anh Nguyen 14506d5d6e Add BurstErrorModel class 2013-04-19 12:58:25 -07:00
Brian Swenson 0dc496c3bf RTT Estimator Test Code 2013-04-19 14:52:17 -04:00
Nicola Baldo 31bbdfaa06 fixed TCP app start time in lena-dual-stripe 2013-04-19 19:36:20 +02:00
Nicola Baldo 898e505917 fixed another module dependency in examples/tcp/wscript 2013-04-19 19:35:23 +02:00
Tommaso Pecorella f195a9749f Bug 1601 RttEstimator doesn't set m_currentEstimatedRtt fix 2013-04-19 12:18:00 -04:00
Manuel Requena 1441720339 merge 2013-04-19 17:58:16 +02:00
Manuel Requena 4f16a0636a Add automatic handover documentation 2013-04-19 17:51:58 +02:00
Anh Nguyen 0ea5de1d3d Westwood and Westwood+ test response vectors 2013-04-19 11:50:31 -04:00
Marco Miozzo f032b50b75 Update figures in the documentation on BLER for standard MCS 1..29 2013-04-19 13:37:11 +02:00
Anh Nguyen 2000b34287 Westwood and Westwood+ 2013-04-18 15:57:07 -04:00
Tommaso Pecorella dfc8ac57cc Bug 1626 - Ipv6-only network can't use UDP or TCP 2013-04-18 21:14:10 +02:00
Nicola Baldo a0c2d78fcf minor changes to PHY UE measurement docs 2013-04-18 16:21:59 +02:00
Nicola Baldo d1db79ea46 moved LTE UE PHY measurement docs into LTE PHY section 2013-04-18 16:17:08 +02:00
Marco Miozzo eeba9f6f46 Fix a typo in UE Measurements design section 2013-04-16 16:13:11 +02:00
Marco Miozzo a150788e36 merge 2013-04-15 16:25:46 +02:00
Marco Miozzo b1d109aa4d Refine PHY support for UE measurements design documentation 2013-04-15 16:25:09 +02:00
Manuel Requena 72b1b7d471 Fix tests parameters after changes in phy measurements 2013-04-15 15:36:25 +02:00
Tom Henderson b26bf2f89c add virtual destructor 2013-04-14 21:23:56 -07:00
Andrew Stanton e06ea97140 Bug 1615 - Adjusting OLSR HelloInterval Attribute Results in No Links 2013-04-14 22:32:21 +02:00
Vedran Miletić 6919cef0b3 Backed out changeset e1e45baa7046, adding comment to log.cc to prevent confusion 2013-04-13 14:33:02 +02:00
Vedran Miletić e5cd4dbd4e Remove extra whitespace in some LogLevel labels 2013-04-13 13:44:13 +02:00
Tom Henderson bc8f57b261 rescan lte bindings 2013-04-12 14:58:45 -07:00
Tom Henderson b915879b60 merge lena head with ns-3-dev head 2013-04-12 11:42:20 -07:00
Nicola Baldo 07d9e5d834 documented UE RRC measurements support 2013-04-12 18:42:22 +02:00
Hajime Tazaki 705e004083 update RELEASE_NOTES for pybindgen update 2013-04-13 00:04:21 +09:00
Hajime Tazaki e950cf14c4 Bug 1623 - pybindgen rev809 is not able to build after Ubuntu 1210
update pybindgen version to rev825:
https://code.launchpad.net/~gjc/pybindgen/trunk
2013-04-12 21:36:45 +09:00
Nicola Baldo 25e4cdd44a merge 2013-04-09 11:21:32 +02:00
Marco Miozzo 1e522e9f35 Bug-fix valgrind error in lte-downlink-sinr test, introduce missing initialization of LteSpectrumSignalParametersDlCtrlFrame::pss attribute 2013-04-09 11:11:36 +02:00
Tom Henderson 89e67bbb33 update python bindings 2013-04-08 12:48:36 -07:00
mmiozzo e3c761946f merge with lena-dev changeset: 9433 (RSRP and SINR bugs) 2013-04-08 17:41:53 +02:00
Marco Miozzo b0f38b1426 merge 2013-04-08 16:31:35 +02:00
Marco Miozzo 5e3ea98a77 Bug-fix: missing conversion from PSD to linear power of RS in RSRP PHY traces evaluation 2013-04-08 16:30:55 +02:00
Marco Miozzo e3314476d3 Bug-fix: initialization missing for evaluating SINR in PHY Traces 2013-04-08 16:27:42 +02:00
Yufei Cheng 5ed895c05b bug 1608: DSR network ack and bug 1609: DSR route request table 2013-04-08 07:26:20 -07:00
Marco Miozzo ea9118adf9 Bug-fix: initialization missing for evaluating SINR in PHY Traces 2013-04-08 16:25:35 +02:00
Nicola Baldo ea6468786d fixed Bug 1576 - Frequency units HERTZ & MEGAHERTZ mix up 2013-04-08 11:54:22 +02:00
Nicola Baldo f51e3a6502 merge 2013-04-07 23:15:04 +02:00
Dizhi Zhou 900e65959d Solve FDTBFQ, TDTBFQ uninitialized variables 2013-04-07 17:51:56 -03:00
Nicola Baldo b2b1bdaad6 merge 2013-04-06 18:58:56 +02:00
Nicola Baldo 86fad498bd minor update to antenna docs 2013-04-06 18:51:08 +02:00
Nicola Baldo 01c8b6d832 merge 2013-04-06 18:32:53 +02:00
Nicola Baldo c7aaebd977 re-applied variable test scope for PSS, TDTBFQ and FDTBFQ LTE scheduler tests 2013-04-06 18:31:04 +02:00
Nicola Baldo 744f1fbcf3 re-applied again fix for bug 1532 - unimplemented LTE Scheduler methods 2013-04-06 18:15:27 +02:00
Nicola Baldo 77db8bedb8 fix again #include <ns3/math.h> in updated GSoC 2012 LTE schedulers 2013-04-06 18:10:56 +02:00
Vedran Miletić 44e8b40ac9 Rename SequenceNumber TestSuite to sequence-number for consistency 2013-04-06 17:54:20 +02:00
Hajime Tazaki 4c6177b671 update release note for Bug 1409 and Bug 1612 2013-04-06 23:24:25 +09:00
Hajime Tazaki 792e59bf38 Bug 1409: Add an attribute "SystemId" to configure the ID for MPI 2013-04-06 23:08:13 +09:00
Hajime Tazaki 346a725240 Bug 1612 - pyviz (visualizer) will not be installed 2013-04-06 23:08:12 +09:00
Vedran Miletić 41cc7abc1e Update release notes about Waf and create-module.py changes 2013-04-06 15:05:18 +02:00
Vedran Miletić b656a0cab7 Introduce compound name for static TestSuite declaration and be stricter about allowed module name 2013-04-06 14:58:48 +02:00
Dizhi Zhou 103cf1e732 Update PSS, FDTBFQ, TDTBFQ's code and testcases 2013-04-05 21:05:55 -03:00
Nicola Baldo d99210342f limited sim time in some LTE examples-to-run 2013-04-05 19:05:31 +02:00
Nicola Baldo c7a138ec2a revised variable test scope for LTE tests 2013-04-05 18:55:46 +02:00
Nicola Baldo e556466860 merge 2013-04-05 17:59:48 +02:00
Nicola Baldo 768ffadde6 merge 2013-04-05 17:59:11 +02:00
Nicola Baldo d0f70a008d fixed a module dependency in examples/tcp/wscript 2013-04-05 17:31:44 +02:00
Nicola Baldo 643d8361e0 merge 2013-04-05 16:50:37 +02:00
Nicola Baldo de87e87a8b use #include <ns3/math.h> in updated GSoC 2012 LTE schedulers 2013-04-05 16:39:16 +02:00
Nicola Baldo 9f21cd9786 re-applied fix for bug 1532 - unimplemented LTE Scheduler methods 2013-04-05 16:32:20 +02:00
Dizhi Zhou e3746a4ae9 fixed MBR and GBR setting for TDTBFQ and FDTBFQ LTE schedulers 2013-04-05 16:13:49 +02:00
Vedran Miletić f90477b203 Fix INCLUDE_GUARD for helper in create-module.py 2013-04-05 13:54:36 +02:00
Vedran Miletić ec787b2d61 Fix capitalize in create-module.py for module name containing dash 2013-04-05 13:47:01 +02:00
Marco Miozzo a21e1e18ae Bug-fix in UE measurements: introduce a factor of 2 in RSSI evaluation for considering all the power of RS over the symbol 2013-04-05 12:26:57 +02:00
Vedran Miletić 4acc107d97 Clean up function logging of energy module. 2013-04-04 22:25:44 +02:00
Vedran Miletić 3f41bbf326 Add proper license header to simple-device-energy-model.{h,cc} 2013-04-04 21:35:09 +02:00
Nicola Baldo 4b9945b8f1 updated PSS, TDTBFQ and FDTBFQ scheduler tests 2013-04-04 19:33:42 +02:00
Nicola Baldo 72c10bfaba merge 2013-04-04 18:58:49 +02:00
Nicola Baldo c9db3544f0 updated figure generation in lte_ue_measurements.m 2013-04-04 18:50:19 +02:00
Marco Miozzo 81b51a81ef Update UE Measurements design Doc 2013-04-04 18:19:32 +02:00
Marco Miozzo 73ae780748 Bug-fix RSRP/RSRQ measurements: moved to RE basis and update test accordingly 2013-04-04 16:53:48 +02:00
Nicola Baldo b63880e127 merge 2013-04-04 13:41:55 +02:00
Nicola Baldo 9f271d4aad revised lte ue measurement octave script 2013-04-04 13:40:56 +02:00
Lluís Parcerisa 604ffbe4c4 Capitalize constants in enums, according to ns3 coding style. 2013-04-04 11:49:19 +02:00
Nicola Baldo f869e06975 new structure of handover section in lte-user.rst 2013-04-04 10:40:19 +02:00
Alina Quereilhac fad8e79116 add documentation for fd-net-device module 2013-04-02 22:16:05 +02:00
Dizhi Zhou 453b8d5ece updated GSoC 2012 schedulers to LENA M5 version 2013-04-02 19:58:36 +02:00
Manuel Requena 86139b9470 Uncomment failing testcase 2013-04-02 13:18:37 +02:00
Alexander Afanasyev 0e169c157f Fix Python bindings and openflow for waf 1.7.10 upgrade and take care about boost requirements globally 2013-04-01 22:34:50 +02:00
Vedran Miletić bbdb4231b3 Upgrade waf to 1.7.10 and fix included wscripts
This is a massive upgrade removing almost all pre-waf 1.6 script code. In addition, this does away with custom pkgconfig.py script for making .pc files and replaces it with waf's builtin mechanism.

Massive thanks to Alex Afanasyev for ideas and bugfixing, to Alina Quereilhac for bugfixing and testing, and to Tom Henderson for thorough testing.
2013-04-01 22:33:46 +02:00
Vedran Miletić df67c9c116 Improve logging of InetTopologyReader 2013-04-01 21:56:36 +02:00
Mitch Watrous bf393eb7d7 Bug 1563 - reduce valgrind test scope 2013-04-01 11:34:43 -07:00
Alina Quereilhac 64eb45017f Bug #1613 - Can't build ns-3-dev with g++ 4.7.2 & Bug FdNetDevice can't build in OS X 2013-03-29 16:10:12 +01:00
Brian Swenson d2f222fb91 new ns3 nsc tcp comparison example. Updated tcp documentation 2013-03-29 10:27:53 -04:00
Nicola Baldo eabfc6f5e2 safer RLC overhead estimation for SRB1 2013-03-28 13:44:27 +01:00
Vedran Miletić c9152825c2 Fix INCLUDE_GUARD in create-module.py
This patch fixes two separate issues: first, it replaces "-" by "_" in addition to capitalizing module name when creating include guards, second, it names it consistently with the rest of ns-3.
2013-03-28 10:31:56 +01:00
Lluis Parcerisa 0355008a71 Fix valgrind error reported on Task #983 2013-03-27 17:10:58 +01:00
alina b3b3fa9e22 Merge fd-net-device into ns-3-dev 2013-03-27 02:14:57 +01:00
Vedran Miletić 80fe6e05ba Remove C headers and replace them by C++ headers if actually used 2013-03-26 22:11:05 +01:00
Nicola Baldo 9aeb7bbe5b refactored timeouts in LteEnbRrc 2013-03-26 19:22:41 +01:00
Manuel Requena c1c08b45a7 Merge 2013-03-26 10:45:41 +01:00
Manuel Requena a5ea699a83 Add testcase for the automatic HO triger 2013-03-26 10:42:22 +01:00
Manuel Requena 3eb95d8366 Add automatic triger of the HO based on the RSRQ measures 2013-03-26 10:41:49 +01:00
Manuel Requena dc48a27426 Fix log display error 2013-03-26 10:29:03 +01:00
Nicola Baldo a9b63c88da merge 2013-03-25 19:53:54 +01:00
Tom Henderson e2e83a7090 Postfix bug 1607 patch; OnOffApplication uses packet sockets too 2013-03-24 16:18:56 -07:00
Tommaso Pecorella 0d14fd57b6 Bug 1607 - OnOff Application over TCP with IPv6 (fixed bulk-send too) 2013-03-23 18:58:03 +01:00
Tom Henderson a4ac0f8915 update figure reference 2013-03-22 16:16:53 -07:00
Nicola Baldo a54c1bac4c applied variable test scope to LTE tests 2013-03-22 16:55:43 +01:00
Nicola Baldo b69928a648 bug 1563: get rid of default argument value in AddTestCase 2013-03-22 13:14:38 +01:00
Marco Miozzo 4a169e73cd Add lte-ue-measurements test documentation 2013-03-21 17:07:04 +01:00
Marco Miozzo f4f7c705c7 merge 2013-03-20 12:27:26 +01:00
Marco Miozzo 6a44c41e2a Update PHY Support ofr UE Measurement design doc 2013-03-20 12:26:43 +01:00
Mitch Watrous ae7af15b04 Allow three speeds of test cases to be skipped 2013-03-19 13:14:12 -07:00
Nicola Baldo f44692549a fixed buggy CheckStatsAWhileAfterHandover in lte-x2-handover test 2013-03-19 17:11:46 +01:00
Tom Henderson d999b6f255 add documentation for error models 2013-03-18 22:29:43 -07:00
Tom Henderson 676215d236 move error model test suite to network module 2013-03-18 22:24:11 -07:00
Nicola Baldo 4cd736f4b3 fixed bug in LteEnbRrc about when to use RLC AM for a DRB 2013-03-18 18:30:23 +01:00
Tom Henderson f6ddb71154 refer to replace.txt in the documentation template 2013-03-09 00:53:01 -08:00
Tom Henderson b27c56347a bug 1602: do not include directory above in gcc include path 2013-03-17 23:04:59 -07:00
Tom Henderson 5d2eb34994 bug 1603: fix logging in static function 2013-03-17 22:10:16 -07:00
mirko 6a483a34d0 Bug #1503 - Fix invalid iterators on erase operations on retry queue (thanks to Ghada Badawy). 2013-03-15 14:28:56 +01:00
Brian Swenson 949bd26ebc bug 1502 Shutdown on tcp socket seems to misbehave 2013-03-15 11:33:30 -04:00
Mitch Watrous 602ad906c4 Fix typo 2013-03-14 16:20:54 -07:00
Mitch Watrous e040356d56 Allow very slow test cases to be skipped 2013-03-14 14:54:45 -07:00
Tommaso Pecorella e23676c7ab Bug #1318 (Reopened) - Ipv6L3Protocol::LocalDeliver can get stuck in an infinite loop trying to decode a malformed packet 2013-03-14 21:21:04 +01:00
Mitch Watrous 218f51e7bd Update dsr's Python bindings 2013-03-11 16:39:13 -07:00
Mitch Watrous 58b1557ea8 Bug 1595 - Function declarations without implentations cause problems with the dsr module's Python bindings 2013-03-11 16:10:47 -07:00
Tommaso Pecorella 5e2d3e7604 Bug 1568 - Deserialized Addresses are implicitly marked as Mac48Address 2013-03-11 23:06:41 +01:00
Tommaso Pecorella 67735b8043 Bug 1600 - Icmpv6OptionLinkLayerAddress can only carry 48 bits addresses correctly 2013-03-09 22:51:49 +01:00
Tom Henderson e817303424 remove invalid argument 2013-03-08 10:11:13 -08:00
Marco Miozzo 9e0d8380b2 Update lte-ue-measurements test with test on RSRP/RSRQ reception at LteEnbRrc 2013-03-08 16:18:10 +01:00
Nicola Baldo 05339df83c merge 2013-03-08 12:32:23 +01:00
Nicola Baldo 6e8ad06814 lena-x2-handover-measures now defaults to IdealRrc 2013-03-08 12:31:46 +01:00
Nicola Baldo ed39332ff9 fixed bug in LteUeRrc::SendMeasurementReport 2013-03-08 12:30:42 +01:00
Manuel Requena 8d85a0a3fe Add trace callback when MeasurementReport is received 2013-03-08 10:56:13 +01:00
Manuel Requena 220fcb9fb0 Add some code in the reception of the MeasurementReport message 2013-03-07 15:56:25 +01:00
Manuel Requena 78edd57c3a Add example for X2 handover based on the RSRQ measures 2013-03-07 15:45:12 +01:00
Manuel Requena 384b5764ea Events A2 and A4 trigger with all RSRQ values 2013-03-07 12:25:38 +01:00
Marco Miozzo 81154d2ede polishing of lte-ue-measurements test 2013-03-06 18:25:23 +01:00
Marco Miozzo ee6d9ad3c6 Update test-vector for lte-ue-measurements: tests passes 2013-03-06 18:09:54 +01:00
Marco Miozzo aae622cc21 Bug-fix in LteUePhy::GenerateCtrlCqiReport in evaluating RSRP/RSRQ 2013-03-06 18:08:19 +01:00
Marco Miozzo 5cd08ae49e Bug-fix LteUePhy:ReceivePss introduce PSD to linear power conversion 2013-03-06 16:08:55 +01:00
Tommaso Pecorella 33f5e0a7a8 Bug #1556 - Error uses of htonl making OpenFlow‘s match field error. 2013-03-06 15:44:49 +01:00
Marco Miozzo 0a38e28ee4 merge 2013-03-06 12:02:10 +01:00
Marco Miozzo 34ef42a780 Add TestSuite for UE Measurements: on-going work, test does not pass 2013-03-06 11:58:54 +01:00
Marco Miozzo c5350bf3a6 Bug-fix on timing for UE measurements generation 2013-03-06 11:58:11 +01:00
Manuel Requena caee1492b9 Set event A4 threshold to the maximum allowed 2013-03-05 10:14:02 +01:00
Marco Miozzo 2a11e10b41 merge 2013-03-04 12:32:39 +01:00
Marco Miozzo 1fcca9ad52 Bug-fix LteUePhy UE Measurements PSS storage by introducing PssElement struct 2013-03-04 11:50:24 +01:00
Nicola Baldo 4435ace673 added support for measurements in LteUeRrc 2013-03-01 20:53:54 +01:00
Marco Miozzo ba34b20cbe merge 2013-03-01 09:33:18 +01:00
Marco Miozzo e6fb446261 Update documentation on PHY support to UE measurements 2013-03-01 09:31:26 +01:00
Marco Miozzo c597e76303 Update doxygen doc of ReportUeMeasurements C-PHY primitive 2013-03-01 09:30:59 +01:00
John Abraham 9f75484b4e NetAnim: Handle special case for deferred routes 2013-02-28 14:48:50 -08:00
John Abraham 6df8802b63 NetAnim: Implement route path element XML tag 2013-02-28 08:51:25 -08:00
Manuel Requena 176377ae10 Add MeasConfig IE in the RRC Connection Reconfiguration message 2013-02-28 17:15:53 +01:00
Manuel Requena 9b7b867d6d Merge 2013-02-28 11:51:39 +01:00
Manuel Requena c6dd7d36b2 Fix print of the MeasConfig IE 2013-02-28 11:45:30 +01:00
Manuel Requena 1994e334db Add const values in RRC SAP 2013-02-28 11:44:56 +01:00
John Abraham c925e214bb NetAnim: Missing Ipv4 Addresses when Ptr<Channel> is unavailable 2013-02-27 11:23:48 -08:00
John Abraham fb072bec6e NetAnim: Add an ipv4 address to node Id table 2013-02-27 06:07:20 -08:00
Tommaso Pecorella a30f26fe74 Bug #1596 - Inet TopologyReader is skipping one link and duplicating another one 2013-02-22 23:42:12 +01:00
Nicola Baldo 764063bcfb fixed Bug 1587 - PDCP logs are always created (even if not requested) 2013-02-22 13:30:50 +01:00
Nicola Baldo a726e18f04 merge 2013-02-22 11:26:41 +01:00
Nicola Baldo 51a2984059 fixed valgrind errors in lte-x2-handover 2013-02-22 11:11:17 +01:00
Vedran Miletić d9f638d211 Simplify topology-read example code a bit 2013-02-21 17:23:17 +01:00
Marco Miozzo fabd3bf731 Update Phy support for Ue Measurements with time filtering and c-phy-sap measurements grouping 2013-02-21 17:22:42 +01:00
Marco Miozzo a209590c80 Add units of RSRP and RSRQ in doxygen documentation of LteUeCphySapUser::ReportUeMeasurements 2013-02-20 17:46:58 +01:00
Marco Miozzo ca77250693 merge 2013-02-20 16:51:26 +01:00
Marco Miozzo 1468df1fdb Add RSRP-RSRQ UE measurement and correspondent c-phy primitive for reporting them to LteUeRrr 2013-02-20 16:35:51 +01:00
Lluis Parcerisa b694b18c55 Merge with dev repo 2013-02-20 14:05:14 +01:00
Lluis Parcerisa 7c4275b5a9 Finish MeasConfig test. Fix serialization/deserialization bugs. 2013-02-20 13:59:58 +01:00
Nicola Baldo 5621b104a7 whitespace change in lte-design.rst 2013-02-20 13:05:19 +01:00
Lluis Parcerisa 9b1edab9ab merge 2013-02-20 12:05:44 +01:00
lluis 0e4a2fc5d4 Fix valgrind errors 2013-02-20 10:33:53 +01:00
Tommaso Pecorella 0b4876ca1d Bug #1588 - UdpEchoServer::HandleRead logs fail when using IPv6 2013-02-19 20:20:45 +01:00
lluis 870ac2024e ns3 formatting 2013-02-19 19:42:02 +01:00
lluis ef2f84ea71 Test MeasConfig IE 2013-02-19 19:40:15 +01:00
lluis 168e87360a Add deserialization code for MeasConfig IE. 2013-02-19 18:32:57 +01:00
lluis cbbeb1f8af Serialization of MeasConfig IE, tiny modification in ThresholdEutra SAP. 2013-02-19 14:13:39 +01:00
Andreas Nilsson 0442d2b3ae fix typo in AODV example 2013-02-18 21:03:26 -08:00
Timo Lindhorst 48fef4ba27 bug 1586: building documentation fails if make runs in parallel 2013-02-18 21:01:50 -08:00
Tom Henderson 5fce672663 bug 1517: waf clean/distclean doesn't remove the doc/html directory 2013-02-18 20:22:50 -08:00
Daniel Lertpratchya 585a88c9cc Prevent EndTxNoAck after sending a Block ACK response 2013-02-18 10:35:03 -05:00
Daniel Lertpratchya ebb86d9604 Bug 1585 - Length field of A-MSDU subframe header endianness 2013-02-15 15:38:05 -05:00
Hajime Tazaki 3aa5c40945 Bug 1582 - IPv6 raw socket return value is not like Linux socket
fix broken return value of IPv6 Raw socket (size, from address)
2013-02-12 12:44:25 +09:00
Konstantinos Katsaros 9f8d43efab Update RELEASE_NOTES 2013-02-10 13:41:33 -05:00
Konstantinos Katsaros 00b1f30b73 Bug 1566 - WiFi SNR tag improvements 2013-02-10 13:38:35 -05:00
Tom Henderson aeea8540ea fix RELEASE_NOTES 2013-02-09 11:23:11 -08:00
Nicola Baldo 99861b69c9 updated doxygen of RadioBearerStatsCalculator 2013-02-08 19:07:39 +01:00
Nicola Baldo d75875fd28 fixed valgrind errors in LteEnbRrc 2013-02-08 15:42:30 +01:00
Lalith Suresh 240345a0c6 Update CHANGES.html and release notes to reflect ns-3-click defines and random number API additions 2013-02-07 11:15:44 +01:00
Sascha Alexander Jopen ddfd9131e8 Allow Click defines to be handled from ns-3 2013-02-07 10:47:31 +01:00
Sascha Alexander Jopen 6f03fdaf7e Allow Click to pull random numbers from ns-3 2013-02-07 10:47:08 +01:00
Nicola Baldo 7cb986ad35 merged lena-dev with ns-3-dev 2013-02-04 18:47:25 +01:00
Nicola Baldo 35f0e489aa fixed bug in handling of RrcConnectionReject msg 2013-02-04 15:42:10 +01:00
Nicola Baldo 75e31957da fixed PacketSink ports in lena-simple-epc 2013-02-01 17:31:38 +01:00
Brian Swenson 80ca7c14a3 bug 1569 droptail_vs_red example fix 2013-02-01 10:57:36 -05:00
Lluis Parcerisa 1e1afdfb9e Assume the value in the struct antennaInfo.transmissionMode is the enum index. 2013-01-31 14:07:07 +01:00
Lluis Parcerisa a58d3c49f1 Add extension marker flag to Serialize/Deserialize Choice 2013-01-31 13:48:32 +01:00
Lluis Parcerisa 0ce765ba95 Fix bug in sprintPacketContentsHex 2013-01-30 16:29:18 +01:00
Lluis Parcerisa c5ec6accb4 Oxygen documentation of lte-rrc-header.h, implementation of some extra RRC IE's 2013-01-30 13:24:23 +01:00
Lluis Parcerisa c71b134f76 Implement Nicola's review comments 2013-01-29 19:03:22 +01:00
Nicola Baldo b06db11580 merge 2013-01-29 15:46:05 +01:00
Lluis Parcerisa 7ddb24742e From "new" to "Create"... 2013-01-28 18:17:21 +01:00
Lluis Parcerisa f2a3afcc2c Change pointer creation to avoid valgrind errors. 2013-01-28 17:25:12 +01:00
John Abraham ceda10db66 NetAnim: Prevent closing the routing trace when splitting files 2013-01-27 15:56:34 -08:00
Nicola Baldo fd1052e567 added sanity check in LteEnbMac::ReceiveDlCqiLteControlMessage () 2013-01-25 15:57:13 +01:00
Marco Miozzo e036dd6f52 Avoid generation of DL-CQI with RNTI = 0 when UEs are not connected 2013-01-25 15:32:33 +01:00
Nicola Baldo d1ba713861 merge 2013-01-25 13:58:23 +01:00
Marco Miozzo 0830e733f4 merge 2013-01-24 13:58:26 +01:00
Marco Miozzo 639c3d2931 Bug-fix in LteAmc::CreateCqiFeedbacks Vienna model and correspondent update of the RR and PF scheduler tests 2013-01-24 13:57:59 +01:00
Nicola Baldo c27057c920 fixed too large integer constant error in test-asn1-encoding that showed up on 32bit systems 2013-01-23 18:54:03 +01:00
Nicola Baldo ac9541236d make Dl/UlSpectrumPhy attributes in LteUe/EnbPhy use getter instead of member variable to fix compilation issue with gcc 4.4.3 2013-01-23 17:17:16 +01:00
Lluis Parcerisa dc04201844 Move packet creation to DoRun methods. 2013-01-23 13:55:47 +01:00
Lluis Parcerisa 23a1ef0817 Reduce valgrind errors 2013-01-22 17:57:12 +01:00
Lluis Parcerisa 6c6466134b Instead to print debug messages to stdout, use ns3 log functions. 2013-01-22 17:43:57 +01:00
Andrey Mazo ec4007ca27 make non-static global debugging-only functions static inline (bug 1170).
Compilers shouldn't warn on unused static inline function and just don't emit code for
them in optimized builds.
Also debugging-only functions don't pollute symbol tables.
2013-01-21 17:19:00 +04:00
Vedran Miletić 343c15bfd3 Fix encoding in wimax-iipv4.cc example 2013-01-25 19:05:30 +01:00
Tom Henderson cb5875e24b rescan bindings 2013-01-22 10:14:50 -08:00
Nicola Baldo de65d3dbce fixed typo in eps-bearer.h 2013-01-21 17:10:14 +01:00
Marco Miozzo b0466cd2f9 Introduced forced HARQ pkt buffer emtying in DL for inhibiting PDUs duplication when harq feedback has been lost for channel errors 2013-01-21 13:59:06 +01:00
Marco Miozzo 40e4b9fda5 Introduced forced HARQ pkt buffer emtying in UL for inhibiting PDUs duplication when harq feedback has been lost for channel errors 2013-01-21 13:03:58 +01:00
Nicola Baldo 6e7a49b984 merge 2013-01-18 18:10:10 +01:00
Nicola Baldo 338ceea7e5 fixed some RRC valgrind errors 2013-01-18 18:02:09 +01:00
Marco Miozzo 7eb7baca61 merge 2013-01-18 16:42:31 +01:00
Marco Miozzo 1ae438fd32 Update lte-pf-ff-mac-scheduler test for working with Vienna AMC, error model and HARQ 2013-01-18 16:41:53 +01:00
Manuel Requena 838e2ccbb7 Assert when bad type of PDU type 2013-01-18 12:31:51 +01:00
Marco Miozzo e5b2e517e4 merge 2013-01-18 12:10:00 +01:00
Marco Miozzo 94d537dda4 Update lte-rr-ff-mac-scheduler test for working with Vienna AMC, error model and HARQ 2013-01-18 12:09:19 +01:00
Marco Miozzo 1b4ce07e04 Update HARQ Timer reinitialization when doing reset in RR and PF schedulers 2013-01-18 11:57:06 +01:00
Marco Miozzo 68014c1c6b Update LteUeMac scheduler for avoiding data blocks of less than 7 bytes according to RLC constraints 2013-01-18 11:53:59 +01:00
Nicola Baldo 06dee432a9 added logging of packet size in EpcEnbApplication 2013-01-16 19:43:42 +01:00
Nicola Baldo 3ac4705a4b removed obsolete LteUeRrcSap::Reestablish () 2013-01-16 19:03:13 +01:00
Nicola Baldo ac07c73d9a minor corrections to LTE docs 2013-01-16 18:57:57 +01:00
Nicola Baldo fbf4d13579 better log statements in RadioBearerStatsCalculator 2013-01-16 18:57:29 +01:00
Lluis Parcerisa 4d0275a34a Fix rrc header code for optimized build 2013-01-08 13:25:40 +01:00
Nicola Baldo de78d418b4 fix compilation warnings in optimized mode 2013-01-08 12:57:51 +01:00
Nicola Baldo 59400fdb59 fixed unused variable warning for optimized build in lte-test-harq.cc 2013-01-08 13:45:31 +01:00
Nicola Baldo f19b3a61d8 RLC and PDCP stats for SRBs 2013-01-07 20:02:22 +01:00
Nicola Baldo 616cf16c19 RadioBearerStatsCalculator: handle end epoch via scheduled event 2013-01-07 20:01:49 +01:00
Nicola Baldo 9b51ed90df added example code for X2 SON primitives to LTE docs; documented RRC admission control 2013-01-04 14:14:56 +01:00
Nicola Baldo 6c9e2f50cb improve documentation of LTE-EPC attributes 2013-01-03 19:19:40 +01:00
Nicola Baldo 1dc35c48b6 use consistent iterators for LteEnbMac::m_rapIdRntiMap 2013-01-03 18:04:53 +01:00
Nicola Baldo bb4959adab enforce at least 3RBs per UE in UL of RR scheduler 2013-01-03 16:34:21 +01:00
Manuel Requena 8d617c69ba Fix some memory leaks 2012-12-21 17:50:19 +01:00
Lluis Parcerisa 26626f2c2b Add test case to check MeasurementReport message. 2012-12-21 14:27:27 +01:00
Lluis Parcerisa d5f21cb323 Serialization/Deserialization function for measResults 2012-12-21 12:37:51 +01:00
Manuel Requena 1a130c541c Remove logs 2012-12-20 18:17:14 +01:00
Manuel Requena 865cee1deb merge 2012-12-20 18:09:40 +01:00
Manuel Requena 180c87d084 Change txopp size in rlc-am tests 2012-12-20 18:09:04 +01:00
Manuel Requena 85dd7bcf63 Add some sanity checks in RLC-AM 2012-12-20 18:06:54 +01:00
Lluis Parcerisa 2aaa84294a Serialize RRC MeasResults IE 2012-12-20 16:25:30 +01:00
Lluis Parcerisa 72c7e17ee8 Add MeasurementReport to Send/Rcv functions in real and ideal protocol. 2012-12-20 12:45:16 +01:00
Nicola Baldo f7a995ac7e enforce at least 3RBs per UE in UL of PF scheduler 2012-12-20 12:33:19 +01:00
Nicola Baldo 7c2327c313 LteEnbRrc forwarding data over X2-U during handover 2012-12-19 20:27:46 +01:00
Manuel Requena d73d21489e Back rlc limit 2012-12-19 21:21:35 +01:00
Manuel Requena 69165f3125 Clean some buffers 2012-12-19 18:54:47 +01:00
Manuel Requena bbb11b6e74 Add Dispose to LteRlc 2012-12-19 18:54:13 +01:00
Lluis Parcerisa 1ab6cd616f Definition of RRC SAP structures for RRC protocol measurement support 2012-12-19 18:33:02 +01:00
Nicola Baldo 1d1815ed2d initialize member variables of EpsBearer upon construction 2012-12-19 17:34:54 +01:00
Mitch Watrous 1bf68e5219 Bug 1520 - config paths not documented in Doxygen for CsmaChannel 2013-01-18 13:03:18 -08:00
Tom Henderson 9ec98809da update documentation to point to new openflow repo 2013-01-18 11:49:53 -08:00
Mitch Watrous f986dff488 Add shell script that runs all examples with full logging turned on 2013-01-14 09:39:06 -08:00
Tom Henderson df0417a5df bug 1563: reduce valgrind test scope 2013-01-13 21:12:00 -08:00
frederic. b936760604 fix bug on previous commit 2013-01-10 18:29:32 +01:00
frederic. b808e7b856 Ipv4Endpoint: Add 2 tests to verify the existence of the callback before calling it. 2013-01-09 14:13:15 +01:00
frederic. 81e8199503 Add some tags to packets passing through PacketSocket. 2013-01-09 13:45:23 +01:00
Nicola Baldo 8f44f09636 remove explicit scheduler setting from lena-simple-epc 2013-01-04 18:50:04 +01:00
Vedran Miletić e99b43d230 Minor fixes and improvements to logging chapter in manual. 2012-12-28 04:22:19 +01:00
Tom Henderson d1532d5a25 start the logging chapter of the manual 2012-12-24 08:27:19 -08:00
Tom Henderson 3a1b1e3698 start CHANGES.html and RELEASE_NOTES for next ns-3 version 2012-12-24 06:25:22 -08:00
Tom Henderson 94d3648767 update release steps documentation 2012-12-24 06:17:58 -08:00
Vedran Miletić ac157ff4ba Fix indentation in comment in ILP32 Python bindings. 2012-12-23 22:16:02 +01:00
Vedran Miletić 928431b698 Do not install LTE scheduler test headers in ns3/ directory. 2012-12-23 22:12:39 +01:00
Tom Henderson 683af560b1 workaround for bug 1561: doxygen for optional modules 2012-12-21 15:50:25 -08:00
Tom Henderson 2ab956e17c Added tag ns-3.16 for changeset 49d343e55cae 2012-12-21 14:42:54 -08:00
Nicola Baldo e0a4b32640 initialize member variables of EpsBearer upon construction 2012-12-19 17:34:54 +01:00
Nicola Baldo d43adf4f17 added CONNECTION_REJECTED state at LteEnbRrc 2012-12-19 13:59:51 +01:00
Nicola Baldo 9ad7e663fb handle case of No info find in HARQ buffer for UE 2012-12-19 12:20:08 +01:00
Nicola Baldo 439e1f1707 hardcode ideal RRC setting in some lte tests 2012-12-19 12:07:02 +01:00
mmiozzo 956f3254dc merge 2012-12-18 18:37:51 +01:00
mmiozzo 955a923b72 merge 2012-12-18 18:36:10 +01:00
Lluis Parcerisa da4b1fc992 merge 2012-12-18 18:31:47 +01:00
Lluis Parcerisa 56b94c41a1 upon rx of RRC CONN REJECT, the LteUeRrc notifies the NAS, resets the MAC, SwitchToState (IDLE_CAMPED_NORMALLY) 2012-12-18 18:31:13 +01:00
mmiozzo 9eacfbcbed merge 2012-12-18 18:28:27 +01:00
Nicola Baldo 2cfe27f9a7 minor changes to lte-x2-handover test 2012-12-18 18:24:18 +01:00
Nicola Baldo 93596c5ba8 discard packets for which UE context is not found 2012-12-18 18:23:50 +01:00
mmiozzo 9d82db382e Bug-fix LteSpectrumPhy send HARQ feedback per TB basis 2012-12-18 18:20:20 +01:00
Nicola Baldo 444648d7ff increase test time in lte-link-adaptation test 2012-12-18 17:26:59 +01:00
Nicola Baldo 7622a4cebd added missing reinitializations to LteSpectrumPhy::Reset () 2012-12-18 17:16:48 +01:00
Nicola Baldo 1e05dd7f5d LteRrcSap now scheduling DoRecvXxx methods instead of direct call 2012-12-18 17:12:19 +01:00
Nicola Baldo 758c0a6786 added method LteSpectrumPhy::Reset () 2012-12-18 16:13:03 +01:00
Nicola Baldo 12b19fe028 put lte-x2-handover test case that fails as first of the list 2012-12-18 12:26:39 +01:00
Nicola Baldo 2cce4ea3f1 increased expected RRC connection establisment duration in lte-x2-handover test 2012-12-18 12:25:32 +01:00
Nicola Baldo f1124227b6 allow removing UE Context when UE has no active EPS Bearer 2012-12-18 12:08:36 +01:00
Nicola Baldo bfee17058a merge 2012-12-18 11:32:38 +01:00
Lluis Parcerisa a86c5d54ca Ns-3 formatting... 2012-12-18 11:30:06 +01:00
Nicola Baldo 69d650520e dispose SRB1 in a separate event rather than in LteUeRrc::DoRecvRrcConnectionReconfiguration 2012-12-18 11:28:48 +01:00
Lluis Parcerisa 8b8d9e8e84 Change encoding of ulBandwith, dlBandwith on m_mobilityControlInfo.carrierBandwidth. 2012-12-18 11:20:44 +01:00
Marco Miozzo c9d6773fda Introduced high priority to status PDU trasmission in case of reduced resource at LteUeMac 2012-12-18 10:32:08 +01:00
Marco Miozzo 93c679efdc Introduce srsPeriodicity parameter in lena-dual-stripe 2012-12-18 10:31:08 +01:00
Nicola Baldo 0629f3dce2 zero SRS guard time since we use static SRS periodicity now 2012-12-17 20:03:07 +01:00
Nicola Baldo 1b02f7a968 make SRS periodicity static to avoid excessive RRC overhead of dynamic one 2012-12-17 19:52:41 +01:00
Nicola Baldo 93b7f13da1 remove context at eNB after UE connection timeout 2012-12-17 18:50:15 +01:00
Marco Miozzo 5260aa0805 merge 2012-12-17 17:40:33 +01:00
Marco Miozzo 54a49137d5 Update HARQ_DL_TIMEOUT to 11 both in RR and PF schedulers 2012-12-17 17:31:09 +01:00
Lluis Parcerisa 96f313e16c Set hpi.asConfig.sourceSystemInformationBlockType1 correct values. 2012-12-17 16:49:07 +01:00
Nicola Baldo 52687b8806 merge 2012-12-17 16:02:18 +01:00
Nicola Baldo 62293b230e merge 2012-12-17 16:01:08 +01:00
Manuel Requena c9162a6697 Add attribute for PollRetransmit timer 2012-12-17 15:51:26 +01:00
Marco Miozzo dd0776b9e4 Update Lte Design documentation on UL CQIs and their management 2012-12-17 14:00:52 +01:00
Nicola Baldo 36399f6722 updated lte doc 2012-12-17 13:26:23 +01:00
Lluis Parcerisa e63700a6f8 Fix valgrind errors in real RRC protocol implementation due to unitialized RRC struct. 2012-12-17 11:08:05 +01:00
Manuel Requena f85d20d953 merge 2012-12-17 09:55:59 +01:00
Nicola Baldo 7da6dba082 fixed subsection levels in LTE design PHY section 2012-12-15 01:15:41 +01:00
Nicola Baldo f6f329f3db documented lte-x2-handover test suite 2012-12-15 00:13:21 +01:00
mmiozzo 0c747045f8 RR and PF scheduler tests updated with flag for real RRC 2012-12-14 18:02:45 +01:00
Manuel Requena e408d02eab merge 2012-12-14 16:54:29 +01:00
Manuel Requena 2706cf9190 Add initial support for UE data forwarding in RRC 2012-12-14 16:51:34 +01:00
Manuel Requena 7aed1c665a Remove X2-related sockets from EpcHelper 2012-12-14 16:50:39 +01:00
Manuel Requena a7c6503563 Add X2-U interface 2012-12-14 16:25:38 +01:00
Nicola Baldo 15057b0a4e documented lte-rrc test suite 2012-12-14 14:52:40 +01:00
Nicola Baldo 9b5ceb07af use max SRS periodicity only for > 20UEs to avoid too long transient in existing tests 2012-12-14 14:52:08 +01:00
Nicola Baldo af16e80727 merge 2012-12-14 14:15:53 +01:00
Nicola Baldo 741dea259d always use max SRS periodicity with more than 10 UEs 2012-12-14 14:15:23 +01:00
mmiozzo 11018e6f9b merge 2012-12-14 13:55:28 +01:00
mmiozzo f52da012a0 Update documentation on HARQ test 2012-12-14 13:54:22 +01:00
Manuel Requena f06fe492e5 Add X2 primitive for UE data forwarding 2012-12-14 13:22:47 +01:00
Nicola Baldo 5a58dd7269 merge 2012-12-14 13:02:51 +01:00
Nicola Baldo ec7fac9f5c postpone eNB TX mode reconf to rx of RRC CONN RECONF COMPLETED 2012-12-14 13:02:17 +01:00
Lluis Parcerisa 63ed77709e merge 2012-12-14 11:31:43 +01:00
Lluis Parcerisa 6876438790 Switch to OFF state in NAS, not in RRC. 2012-12-14 11:31:08 +01:00
Nicola Baldo 2f0f5a7d72 updated tests for RRC real/ideal: interference antenna mimo harq 2012-12-14 10:54:12 +01:00
Nicola Baldo 2c43de144e moved LteGlobalPathlossDatabase from example program to separate helper 2012-12-14 10:26:01 +01:00
Marco Miozzo 8a093dff2d merge 2012-12-14 09:48:02 +01:00
Marco Miozzo b540d0e815 Bug-fix LteEnbMac and LteUeMac on HARQ packets buffer in managing several LCs 2012-12-14 09:33:46 +01:00
Manuel Requena 6f55741bf7 Fix name of the testcase 2012-12-13 19:44:50 +01:00
Manuel Requena 2fa9d9a22c Process txedBuffer as the retxBuffer if retxBuffer is empty 2012-12-13 19:44:33 +01:00
mmiozzo 6ed1582bed merge 2012-12-13 18:46:05 +01:00
mmiozzo db39e9df6f Update PF and RR schedulers for working with RRC attachment procedures 2012-12-13 18:45:27 +01:00
mmiozzo 5d1c0bf64f Bug-fix LteUeMac:DoReceiveLteControlMessage erroneous NotifyTxOpportunity 2012-12-13 18:44:34 +01:00
Lluis Parcerisa a059f89a8b Add OFF state for Ue (switched to this state upon connection reject). Remove assert against connection failed. 2012-12-13 18:27:24 +01:00
Lluis Parcerisa ac1081f276 Add implementation of RRC Connection Reject in Ue Recv. 2012-12-13 16:52:15 +01:00
Marco Miozzo b8cf3ebefa merge 2012-12-13 15:07:02 +01:00
Marco Miozzo 874a1d2a4c Bug-fix TB information erroneus order of initializion in LteSpectrumPhy::AddExpectedTb 2012-12-13 15:06:22 +01:00
Nicola Baldo cca38b6b18 increased SRS start time to 20ms to cope with RRC message delays 2012-12-13 14:31:36 +01:00
Nicola Baldo c7a3efd93e enable traces correctly in lena-simple 2012-12-13 13:19:57 +01:00
Nicola Baldo 82e2613d41 LteEnbRrc: start only bearers in previous RRC connection setup/reconfiguration msg 2012-12-13 12:50:50 +01:00
Marco Miozzo 2fb9b625a4 merge 2012-12-13 12:23:50 +01:00
Marco Miozzo aa7f2b22ef merge 2012-12-13 12:22:43 +01:00
Nicola Baldo 6f1dca9a6a minor update to lte-design doc 2012-12-13 12:11:35 +01:00
Marco Miozzo 4af4de9b5e Add Phy Traces documentation in lte-user doc 2012-12-13 12:10:31 +01:00
Marco Miozzo 2fe903ea7b Add DL and UL PHY traces on transmission and reception statistics 2012-12-13 11:45:59 +01:00
Nicola Baldo 401ce63113 updated and reorganized LTE design docs 2012-12-13 03:16:10 +01:00
Nicola Baldo 940f18c6ac reorganized design doc 2012-12-12 20:08:28 +01:00
Manuel Requena beb48e14c6 Merge 2012-12-12 20:18:29 +01:00
Manuel Requena 96acc58160 Send RBS in the PollRetransmit Timer 2012-12-12 20:16:39 +01:00
Lluis Parcerisa fbc7386719 Add functions in SAP's to send/receive ConnRej msg. 2012-12-12 18:48:24 +01:00
Lluis Parcerisa 8109e25f97 Add structure and rrc headers for RrcConnectionReject. 2012-12-12 18:17:10 +01:00
Manuel Requena 1ae09e8998 Merge 2012-12-12 17:30:55 +01:00
Lluis Parcerisa 29af8761f1 Add default cases in serializating RlcConfig.choice and SoundingRsUlConfigCommon.type 2012-12-12 17:24:54 +01:00
Manuel Requena 833e74f87d merge 2012-12-12 16:45:34 +01:00
Lluis Parcerisa b0e4d03781 Fix bug in UE phy with m_srsPeriodicity == 0 2012-12-12 16:43:05 +01:00
mmiozzo 188befaa56 Bug-fix in UpdateDlRlcBufferInfo of RR and PF schedulers: the 2 bytes of RLC overhead affects only new tx queue and not status and retx ones 2012-12-12 14:00:23 +01:00
mmiozzo 633f099ac0 Split Tx Opportunities in LteUeMac for status, retx and tx buffers 2012-12-12 13:47:53 +01:00
Manuel Requena d6ae2a3e6f Reset statusPduRequested flag 2012-12-12 10:45:49 +01:00
mmiozzo d70da38592 Bug-fix UpdateDlRlcBufferInfo of PF and RR schedulers mutual exclusivity of the status and retx queues 2012-12-11 18:32:51 +01:00
Nicola Baldo 8719871e90 fixed compilation error in lte-rrc-header.cc on 32 bit systems 2012-12-11 13:28:25 +01:00
Manuel Requena 8d73a3c194 Fix header length of the HandoverRequestAck message 2012-12-10 18:19:51 +01:00
Nicola Baldo 51579f69d2 check admittedBearers upon handover 2012-12-10 11:42:07 +01:00
Nicola Baldo b312048df0 LteEnbRrc send/recv X2 sn status transfer 2012-12-07 19:57:21 +01:00
Nicola Baldo 9348f7aa57 added lte-x2-handover test cases with real RRC 2012-12-07 15:47:15 +01:00
Nicola Baldo 95c0e1c605 merge 2012-12-07 15:06:48 +01:00
Lluis Parcerisa 384c2ca9b1 Implement RrcConnectionReestablishmentReject and RrcConnectionRelease in lte-rrc-header and lte-rrc-protocol-real. 2012-12-07 14:54:35 +01:00
Nicola Baldo 7829a4fb34 really defer DRB activation to rx of RRC connection setup/reconfiguration completed 2012-12-07 13:34:53 +01:00
Lluis Parcerisa 40c367e613 Ns3 formatting 2012-12-07 13:29:07 +01:00
Lluis Parcerisa 5962ee0c9e Create RealProtocolRlcSapUser to store RNTI as a member when constructing the object. 2012-12-07 13:25:32 +01:00
Lluis Parcerisa 277c47cd3f Remove RealHandoverCommandHeader and use RrcConnectionReconfigurationHeader instead. 2012-12-07 12:56:54 +01:00
Lluis Parcerisa ef7397eee6 Remove RealHandoverPreparationInfoHeader and use HandoverPreparationInfoHeader instead 2012-12-07 12:41:12 +01:00
Lluis Parcerisa 52f2039d48 Merge 2012-12-07 12:09:09 +01:00
Lluis Parcerisa 28d3ba7507 Implementation of real RrcConnectionRequest and RrcConnectionReconfiguration 2012-12-07 12:08:26 +01:00
Manuel Requena 321f1489ed merge 2012-12-07 11:58:56 +01:00
Manuel Requena 2b27fb15df Add parameters and default values of the X2 links 2012-12-07 11:56:53 +01:00
Nicola Baldo 3a4b83030a merge 2012-12-05 19:41:34 +01:00
Lluis Parcerisa 7cfd221841 Fix Serialization when list size=0 in rrcConnectionSetup, check rb1 set before sending setup complete. 2012-12-05 19:32:56 +01:00
Nicola Baldo 40aefa653c reset LteUePhy upon handover 2012-12-05 19:32:37 +01:00
Nicola Baldo 983311d972 improvements to test-lte-x2-handover 2012-12-05 19:32:23 +01:00
Nicola Baldo afcd6d74e5 initialize SRB0 saps at startup 2012-12-05 17:19:28 +01:00
Lluis Parcerisa 34ce8277e5 Implement real RrcConnectionSetup and RrcConnectionReestablishment. Also, associtate rrc header with their direction (UL/DL) and channel (CCCH / BCCH) used, so message type can be discriminated. 2012-12-05 16:50:14 +01:00
Lluis Parcerisa d841a9b664 Real implementation of ReestablishmentRequest, ReconfigurationCompleteHeader and ReestablishmentComplete 2012-12-05 15:12:19 +01:00
Manuel Requena 9d174b6fa6 merge 2012-12-05 13:52:42 +01:00
Manuel Requena 9bf3316f0b Add support of SnStatusTransfer in RRC 2012-12-05 13:50:50 +01:00
Manuel Requena 55699e9154 Add SnStatusTransfer X2 message header 2012-12-05 13:50:22 +01:00
Manuel Requena 4fbbbb2750 Add SnStatusTransfer message 2012-12-05 13:49:49 +01:00
Manuel Requena ce7b08f209 Add UeContextRelease primitive to X2 SAP 2012-12-05 13:48:57 +01:00
Nicola Baldo 4c352d887e reestablish DRBs at UE upon handover 2012-12-05 13:43:21 +01:00
Nicola Baldo 44a25859e1 defer DRB activation to rx of RRC connection setup completed 2012-12-05 13:29:38 +01:00
Nicola Baldo 3d1f13b075 reset MAC and reinitialize SRBs upon handover 2012-12-05 13:14:39 +01:00
Nicola Baldo 4db1640e60 merge 2012-12-04 19:52:04 +01:00
Lluis Parcerisa 0b1f06e91a Implement real DoSendRrcConnectionSetupCompleted 2012-12-04 19:37:58 +01:00
Nicola Baldo f8b7a5b24c removed spurious LteUePhy::m_enbCellId; fixed bug in LteEnbRrc::GetNewSrsConfigurationIndex () 2012-12-04 19:22:26 +01:00
Manuel Requena 52bca77b0c Remove Start method with a RBS. This is only needed in the RlcSm 2012-12-04 19:18:35 +01:00
Marco Miozzo e7740eb238 Bug fix release info on RR allocation memory and remove NS_FATAL_ERROR on HARQ when HO 2012-12-04 13:16:20 +01:00
Marco Miozzo 679e032516 merge and correct merge bug on test-lte-rrc 2012-12-04 13:15:27 +01:00
Marco Miozzo e97639893e merge 2012-12-04 11:20:31 +01:00
Marco Miozzo 081da74f0f UeRelease support at LteEnbMac and schedulers (PF and RR) 2012-12-04 11:19:32 +01:00
Nicola Baldo c4cdda1917 added LteEnbRrc::AdmitHandoverRequest attribute; implemented handling of X2 HO prep failure 2012-12-04 11:12:39 +01:00
Nicola Baldo b2c617b0d9 fixed compilation error due to previous merge 2012-12-03 19:26:13 +01:00
Marco Miozzo 3ce181f277 merge 2012-12-03 18:48:23 +01:00
Nicola Baldo 97ac9478c0 added missing files 2012-12-03 18:44:17 +01:00
Marco Miozzo e6638c76ac merge 2012-12-03 18:24:42 +01:00
Marco Miozzo edf61b954e Introduces RACH procedures in the schedulers and UL grant at PHY layer 2012-12-03 18:18:12 +01:00
Nicola Baldo ff88dd3a93 merge 2012-12-03 17:49:23 +01:00
Nicola Baldo d71c34afdb dynamic connection of RadioBearerStatsCalculator so it works properly with handover 2012-12-03 17:48:23 +01:00
Nicola Baldo ef2a1a7260 cancel pending events upon RLC disposal 2012-12-03 17:46:35 +01:00
Manuel Requena 4783d8a152 merge 2012-11-30 17:23:13 +01:00
Manuel Requena 6ee55e3435 Add support of HandoverPreparationFailure primitive in RRC 2012-11-30 17:18:36 +01:00
Manuel Requena 7f4ee87795 Add HandoverPreparationFailure X2 message header 2012-11-30 17:18:02 +01:00
Manuel Requena 02b3453180 Add HandoverPreparationFailure message 2012-11-30 17:17:30 +01:00
Manuel Requena bf9786aeb8 Add HandoverPreparationFailure primitive to X2 SAP 2012-11-30 17:16:44 +01:00
Nicola Baldo b4c0f917fb merge 2012-11-30 17:08:35 +01:00
Nicola Baldo a34efdbbba added LteUeRrcSapProvider::CompleteSetup () 2012-11-30 17:07:46 +01:00
Lluis Parcerisa d830fc0dc3 Rrc header: implementation of RrcConnectionReestablishment, RrcConnectionReestablishmentRequest, RrcConnectionReestablishmentComplete. 2012-11-30 16:14:07 +01:00
Lluis Parcerisa 172ba04824 Document ASN.1 encoding of RRC IE's 2012-11-30 16:09:38 +01:00
Nicola Baldo 35e62e96c9 added stub of LteRrcProtocolReal with corresponding tests 2012-11-30 15:37:55 +01:00
Nicola Baldo 31a6582f0a remove MacSapProvider instances in LteEnbMac upon RemoveUe() 2012-11-29 19:50:06 +01:00
Nicola Baldo 3416d79248 merge 2012-11-29 18:57:48 +01:00
Nicola Baldo 89180e5eae release UE context at EpcEnbApplication upon X2 UE CONTEXT RELEASE 2012-11-29 18:57:08 +01:00
Lluis Parcerisa 01298fe6d9 Development of RRC headers based on the RRC SAP 2012-11-29 17:18:51 +01:00
Nicola Baldo 56926b4864 added more test cases to lte-x2-handover test 2012-11-29 15:21:32 +01:00
Nicola Baldo 1e27ee0a90 fixed regression in lte-epc-e2e-data test 2012-11-29 12:44:23 +01:00
Nicola Baldo 5103399d47 added S1 path switch + S11 modify bearer for X2 handover 2012-11-29 12:00:06 +01:00
Nicola Baldo b5d82e8d98 merge 2012-11-28 15:46:27 +01:00
Nicola Baldo 9d2c04d44c removed obsolete S1BearerSetupRequest method from EpcEnbS1Sap 2012-11-28 12:21:56 +01:00
Nicola Baldo 8b173f7c1c added MME with simulated S1AP and S11 interfaces 2012-11-28 11:37:28 +01:00
Marco Miozzo 204ddb280d Introduced HARQ processes timers in RR and PF schedulers 2012-11-28 11:18:20 +01:00
Manuel Requena 2d37cbfb0b Add support for MME UE S1AP ID in HandoverRequest X2 primitive 2012-11-27 23:55:25 +01:00
Manuel Requena c33ceaad3d merge 2012-11-27 19:06:57 +01:00
Manuel Requena 26dc6705de Add support of ResourceStatusUpdate X2 primitive in RRC 2012-11-27 19:00:38 +01:00
Manuel Requena bd460539c8 Add ResourceStatusUpdate X2 message header 2012-11-27 18:58:04 +01:00
Manuel Requena 68f9b57370 Add ResourceStatusUpdate message 2012-11-27 18:42:08 +01:00
Manuel Requena 0d781f8967 Add ResourceStatusUpdate primitive to X2 SAP 2012-11-27 18:33:45 +01:00
Marco Miozzo 89596e6f53 Update User Documentation on the DL RSRP/SINR traces 2012-11-27 14:51:35 +01:00
mmiozzo 760237b0e5 Bug-fix lena-profiler update to HybridBuildingsPropagationLossModel 2012-11-27 13:31:30 +01:00
mmiozzo 6839492433 merge 2012-11-27 13:15:16 +01:00
Marco Miozzo 1c95b22c76 Change RSRQ stats for average SINR ones 2012-11-27 11:54:29 +01:00
Marco Miozzo f7e0c5f083 merge 2012-11-27 10:48:00 +01:00
Marco Miozzo c188625885 Refine test vector values in lena-harq test 2012-11-27 10:47:00 +01:00
Marco Miozzo 49e60955f3 Bug-fix LCs management with new transmission in RrFfMacScheduler::DoSchedDlTriggerReq and BSR report in RrFfMacScheduler::UpdateDlRlcBufferInfo 2012-11-27 10:46:36 +01:00
Nicola Baldo 98749fc6a6 added data plane test conditions to lte-x2-handover test 2012-11-26 16:25:28 +01:00
Nicola Baldo 5c4da02bdd added lte-x2-handover test suite 2012-11-23 17:24:02 +01:00
Nicola Baldo 7d77353f24 merge 2012-11-23 12:47:26 +01:00
Nicola Baldo 0b9a42ce27 check bearer structs in lte-rrc test 2012-11-23 12:47:04 +01:00
Nicola Baldo 82ef00ebaa fix compilation error with gcc-4.7 2012-11-23 11:51:09 +01:00
Nicola Baldo d8e3ee222e fixed positions in lena-x2-handover 2012-11-22 19:06:15 +01:00
Nicola Baldo c7b3881aab X2 handover working on the control plane 2012-11-22 18:35:05 +01:00
Nicola Baldo 6baa8583c2 merge 2012-11-22 13:57:54 +01:00
Nicola Baldo 7b0d6c3dc8 merged lena-dev and lena-epc 2012-11-22 12:05:46 +01:00
Manuel Requena 4465aaf27b Fix new building api 2012-11-21 13:20:53 +01:00
Manuel Requena 44395ab630 Add support of Load Information primitive in RRC 2012-11-20 22:04:08 +01:00
Manuel Requena 7ce8782ecd Add Load Informatin X2 message header 2012-11-20 22:03:30 +01:00
Manuel Requena 5d913a43a5 Add Load Information X2 message 2012-11-20 21:25:54 +01:00
Manuel Requena 4f07e0b56e Add Load Information primitive to X2 SAP 2012-11-20 18:56:24 +01:00
Nicola Baldo 4dac132281 improved LTE Random Access model 2012-11-20 18:18:01 +01:00
Peter D. Barnes, Jr. ed7a9704d8 Relabel test classes. 2012-11-15 09:35:39 -08:00
Jaume Nin eaed29f033 first draft of the documentation for the PHY traces 2012-11-15 16:55:57 +01:00
Manuel Requena 113226d190 Fix some errors 2012-11-14 16:33:04 +01:00
Manuel Requena f0f647b9b5 Simplify handover management for multiple eNBs (i.e. different cellIds) 2012-11-14 16:05:54 +01:00
Jaume Nin 7639d631a6 Fix JIRA LENA-284, cellId was not being reported in some callbacks and in some situations cellId was being reported 0, now fixed and reporting always correct cellId 2012-11-14 15:42:40 +01:00
Jaume Nin 18c3badd05 Profiling scripts updated and documentation fixed 2012-11-14 14:12:48 +01:00
Peter D. Barnes, Jr. a1a1c6d36d Delete _fp suffix, per code review 2012-11-14 00:07:50 -08:00
Peter D. Barnes, Jr. 6a0691f121 Undo whitespace-only changes, to ease review 2012-11-14 00:03:41 -08:00
Peter D. Barnes, Jr. 8a5e56e414 Measure micro-benchmark timing. 2012-11-13 23:56:26 -08:00
Peter D. Barnes, Jr. b26e2d5fb2 Add benchmark documentation, run timing. 2012-11-13 23:53:08 -08:00
Peter D. Barnes, Jr. 06addb49e0 Minor doc corrections 2012-11-13 23:52:34 -08:00
Peter D. Barnes, Jr. a10b29e1fd Remove free list from PacketTagList. 2012-11-13 23:51:56 -08:00
Peter D. Barnes, Jr. 2ecedb3e87 Trim excess copies from PacketTagList::Remove, add PacketTagList::Replace, documentation. 2012-11-13 23:44:58 -08:00
Peter D. Barnes, Jr. 8243868539 Remove obsolete typedef. 2012-11-13 16:44:26 -08:00
Peter D. Barnes, Jr. 83ccafd97d Document cached hash state, used for incremental hashing. 2012-11-13 16:42:50 -08:00
Peter D. Barnes, Jr. 4b9a304277 Delete obsolete comment. 2012-11-13 16:42:22 -08:00
Peter D. Barnes, Jr. efe21f7763 Use uint32/64/_t instead of Hash32/64_t 2012-11-13 16:41:46 -08:00
Peter D. Barnes, Jr. 71f5e2d9ea Document origin of FNV1a code; fix type. 2012-11-13 16:41:15 -08:00
Peter D. Barnes, Jr. 6a6b5699b8 Incremental hashing, fix hash function ptr, additional test cases, check-style. 2012-11-13 16:40:29 -08:00
Peter D. Barnes, Jr. c7c2e78add Add missing links to manual page. 2012-11-13 16:39:44 -08:00
Peter D. Barnes, Jr. 705906ef5e Refactor namespaces 2012-11-13 16:38:48 -08:00
Peter D. Barnes, Jr. 00ae7f99a0 Change clear() to return Hash & instead of Hash * 2012-11-13 16:35:51 -08:00
Peter D. Barnes, Jr. 674f613678 Add Hash::clear() to restore initial internal state of hasher 2012-11-13 16:35:21 -08:00
Peter D. Barnes, Jr. 94d417c60f Refactor to make include order explicit, without guards. 2012-11-13 16:34:34 -08:00
Peter D. Barnes, Jr. 62fd21d15a Fix Hash (Ptr<HashFunc>) implementation, check for null m_impl, add test cases 2012-11-13 16:32:31 -08:00
Peter D. Barnes, Jr. fe70b486a9 Fix FNV1_32A_INIT, FNV1A_64_INIT defines to include full namespace qualification. 2012-11-13 16:31:48 -08:00
Peter D. Barnes, Jr. a2019b566f Add FNV1a, manual documentation. 2012-11-13 16:30:38 -08:00
Peter D. Barnes, Jr. 0564f7e024 Use Hash32_t, Hash64_t typedefs to indicate that hashes are opaque. 2012-11-13 16:26:07 -08:00
Peter D. Barnes, Jr. 1b09cf3092 General hash interface, with replaceable hash functions, defaults to murmur3. 2012-11-13 16:24:59 -08:00
Marco Miozzo a45d3cfa70 Update RSRP and RSRQ evaluation (RSRQ as average SINR) 2012-11-13 17:54:50 +01:00
Nicola Baldo c955dd2101 merge 2012-11-12 19:28:40 +01:00
Nicola Baldo dd46aa3d5f minor fixes on Rsrp and interference traces 2012-11-12 18:47:35 +01:00
Nicola Baldo ba16796cd8 fixed valgrind error in EpcEnbApplication 2012-11-09 12:23:27 +01:00
Marco Miozzo 38c7bd4375 Introduce sanity checks on DoSchedUlTriggerReq of RR and PF schedulers 2012-11-08 16:51:47 +01:00
Marco Miozzo 5409383519 merge 2012-11-08 15:57:05 +01:00
Marco Miozzo 6a3fb438df Update HARQ documentation (design and test) 2012-11-08 15:56:52 +01:00
Marco Miozzo fbe2271ac4 Bug-fix solvin desynchronization of UL HARQ processes during retransmissions 2012-11-08 13:45:38 +01:00
Nicola Baldo 86d2f3bd08 fixed valgrind error in LteUeRrc 2012-11-07 16:38:12 +01:00
Marco Miozzo 690fb3f7b6 Run check-style and polish logs on RR and PF schedulers 2012-11-06 17:42:40 +01:00
Marco Miozzo 105c20e26c merge 2012-11-06 16:40:04 +01:00
Marco Miozzo b37a8d7002 Bugs-fix: avoid multiple retransmission attempts per UE and reorder the RLC PDUs list for retrasmission both in RR and PF schedulers 2012-11-06 16:38:49 +01:00
Jaume Nin 4a6e736f65 PhyStats calculator implementation. All code needed added to LteHelper. Prototype order changed in order to respect cellId,IMSI, rnti 2012-11-06 15:13:36 +01:00
Nicola Baldo 41b604adff minor update to lte-user docs 2012-11-06 11:45:12 +01:00
Nicola Baldo 9d7a6988d2 Dispose EpcUeNas within LteUeNetDevice 2012-11-06 11:32:51 +01:00
Nicola Baldo 44f861089e merge 2012-11-05 19:12:44 +01:00
Nicola Baldo 6d5c0a319a more LTE RRC test cases 2012-11-05 18:32:22 +01:00
mmiozzo 83969274e3 Updates on LCs and BSRs management on RR and PF schedulers 2012-11-05 17:35:49 +01:00
mmiozzo 086d6adb62 Merge with lena-pem 9124:b4fcfc26791f (HARQ) 2012-11-05 17:05:30 +01:00
Nicola Baldo 333e48f897 implemented UeManager::GetErabList () 2012-11-02 19:34:18 +01:00
Nicola Baldo e7faf1b3a6 merge 2012-11-02 18:31:08 +01:00
Marco Miozzo 2458fcab71 Add lte-harq test suite and polishing of code 2012-11-02 17:12:55 +01:00
Nicola Baldo 3927f5fd92 minor update to lte-user docs 2012-11-02 16:12:04 +01:00
Manuel Requena 17b6ce6fc5 management of the bearers in the X2 messages 2012-10-31 19:05:40 +01:00
Marco Miozzo 625525258c Remove redundant tbSize set in PfFfMacScheduler::DoSchedUlTriggerReq 2012-10-31 16:38:48 +01:00
Marco Miozzo e8cbb95ab2 Bug-fix: Update DoSchedUlTriggerReq of both RR and PF for avoiding allocation of resources to UEs with no data to send 2012-10-31 12:06:26 +01:00
Marco Miozzo 113aabd54d Update PfFfMacScheduler::DoSchedDlTriggerReq for maintaining rbgMap internal variable up-to-date 2012-10-30 17:34:23 +01:00
Marco Miozzo e32530995a Add LteHarq test case, draft version (work in progress) 2012-10-30 17:02:53 +01:00
Marco Miozzo 144067b9e0 LteMiErrorModel update tables of MI vs SINR for considering retx cases with low SINR 2012-10-30 17:01:28 +01:00
Marco Miozzo 9c48c4df9d Bug-fix LteHarqPhy::UpdateHarqProcessInfo sizes in bits instead of bytes 2012-10-30 16:59:23 +01:00
Nicola Baldo d50f0ff13a new LTE RRC model 2012-10-30 16:02:07 +01:00
Marco Miozzo cd3c9b9b98 Bug-fix in RR and PF: update RV field in different harq retx 2012-10-29 10:32:26 +01:00
Marco Miozzo b1418abe84 Update RR and PF schedulers for avoiding the allocation of UEs that do not have HARQ processes available for transmitting 2012-10-26 15:57:59 +02:00
Marco Miozzo e73397daaf Bug-fix DoSchedDlTriggerReq:startRbg both in RR and PR erroneous initialization 2012-10-25 17:45:02 +02:00
Marco Miozzo 0510ed8e43 Add trace sources for DL RSRP/RSRQ (dummy values, TBD), UL SRS and interference power traces 2012-10-25 17:32:22 +02:00
Marco Miozzo 6117f884d3 Update HARQ Design documentation with final implementation issues 2012-10-19 12:09:01 +02:00
Marco Miozzo 1d9bdcf611 Limit HARQ buffers in LteHarqPhy (in order to limit buffers size in no HARQ mode) 2012-10-19 12:08:25 +02:00
Marco Miozzo 1958299bef Bug-fix coded bit computation in LteSpectrumPhy 2012-10-18 18:25:07 +02:00
Marco Miozzo 79230ab8ee Update LteMiErrorModel with BLER curves for HARQ retx ( MCS0 rv2 and rv3 still lacks) 2012-10-18 13:58:10 +02:00
Nicola Baldo 740a78acfe lena-dual-stripe: desynchronize apps and support multiple bearers per UE 2012-10-10 11:45:24 +02:00
mmiozzo f3ddd077d9 Bug-fix inhibit Error Model when receiving data frame with only control messages in LteSpectrumPhy::EndRxData 2012-10-09 17:02:40 +02:00
mmiozzo b88c66e594 HARQ included in PF Scheduler 2012-10-09 14:19:32 +02:00
Manuel Requena acdf683569 Add UE Context Release primitive to X2 SAP 2012-10-08 23:23:24 +02:00
Manuel Requena 5f548622a3 Add UE Context Release X2 message 2012-10-08 23:22:57 +02:00
mmiozzo c212d885fc HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going 2012-10-08 17:18:22 +02:00
mmiozzo 547378d4b7 Bug-fix add m_layer to serialization-deserialization and dimension in LteRadioBearerTag 2012-10-04 14:09:20 +02:00
mmiozzo 904ec5856d Change PUCCH fake signal in LteUePhy from full bandwidth to null bandwidth 2012-10-03 14:23:41 +02:00
Manuel Requena 72b1d8e21f merge 2012-09-29 20:23:43 +02:00
Marco Miozzo 9241d89dc1 Reorder RLC PDU list generation in DoSchedDlTriggerReq for both RR and PF schedulers for having them organized per LC and layer basis 2012-09-13 17:10:01 +02:00
Marco Miozzo 44d63447e8 Bug-fix: new UEs created with LteEnbRrc::m_defaultTransmissionMode instead of txMode 0 2012-09-13 16:55:37 +02:00
Nicola Baldo c05484e4fa minor update to antenna and lte docs 2012-09-12 11:35:00 +02:00
Marco Miozzo 449bffe6c6 Add missing layer parameter settings of TransmitPduParameters struct in LteRlcAm::DoNotifyTxOpportunity method 2012-09-06 15:37:21 +02:00
mmiozzo d046808859 Merge with lena-dev 2012-08-31 16:49:46 +02:00
Marco Miozzo 4e9a707464 Add missing HARQ design doc figures 2012-08-30 16:04:57 +02:00
Marco Miozzo f91e248194 HARQ design documentation 1st draft 2012-08-30 15:34:40 +02:00
Nicola Baldo fdd4db0624 fixed doxygen in lte-as-sap.h 2012-08-28 15:46:47 +02:00
Manuel Requena 93ca4beb8f merge 2012-08-01 13:23:37 +02:00
Manuel Requena 0cd22f5536 Add some IEs to the X2 message headers 2012-08-01 13:21:02 +02:00
Manuel Requena 10703d8f90 Add some IEs to the X2 message headers 2012-08-01 12:40:15 +02:00
Manuel Requena 680d4d0664 merge 2012-08-01 11:16:56 +02:00
Nicola Baldo 0c1fd6c65c merge 2012-07-31 19:31:14 +02:00
Nicola Baldo 2617931f84 merge lena-dev and lena-epc 2012-07-31 19:18:23 +02:00
Manuel Requena f78dd67e5f merge 2012-07-30 13:15:52 +02:00
Nicola Baldo 76731b5135 add/remove UEs and bearers upon handover 2012-07-29 14:29:41 +02:00
Manuel Requena 68f2ff0c84 merge 2012-07-20 18:57:57 +02:00
Manuel Requena 790109a67a Use new parameters of the X2 SAP 2012-07-20 18:55:47 +02:00
Manuel Requena e71b192082 merge 2012-07-20 18:24:23 +02:00
Manuel Requena e4ed803ad5 merge 2012-07-20 18:23:47 +02:00
Manuel Requena a81a4848b3 Add doxygen documentation to the X2 SAP 2012-07-20 18:22:13 +02:00
Manuel Requena a030fb77d2 Use the new X2 SAP parameters 2012-07-20 17:35:08 +02:00
Manuel Requena 2ea6e56956 Add parameters of the X2 SAP 2012-07-20 17:34:18 +02:00
Manuel Requena e260786566 Some typos 2012-07-17 12:12:34 +02:00
Tom Henderson 8d895fc3c3 enable pcap on a lr-wpan example 2012-07-04 21:34:18 -07:00
Tom Henderson e9dc5fbd4c remove comparison that is always true due to limited range of data type 2012-07-04 21:29:55 -07:00
Tom Henderson 8f70c1a43f align with SpectrumPhy antenna model changes for ns-3.14 2012-07-04 21:26:40 -07:00
Nicola Baldo a2530396bc merge 2012-07-02 19:24:52 +02:00
Nicola Baldo b7fcb225c0 revised LTE protocol stack for new RRC model 2012-07-02 18:25:11 +02:00
Nicola Baldo de76eadb10 fixed src/lte/doc/Makefile 2012-07-02 18:24:06 +02:00
Nicola Baldo 3550c2b524 updated docs with revised LTE radio protocol stack architecture 2012-07-02 18:17:43 +02:00
Nicola Baldo df701c4acd merge 2012-07-02 11:55:43 +02:00
Manuel Requena bf33d1ef47 merge 2012-06-28 13:47:39 +02:00
Manuel Requena 40464355bf Add draft of X2 handover example 2012-06-28 13:40:58 +02:00
Manuel Requena 4390e6d3f6 Add draft of X2AP protocol 2012-06-28 13:40:41 +02:00
Manuel Requena a058791ec8 Add X2 entity 2012-06-28 11:40:56 +02:00
Manuel Requena 7dac9eb96a merge 2012-06-27 18:06:50 +02:00
Manuel Requena c0df618b61 Remove old code 2012-06-27 17:26:44 +02:00
Manuel Requena 9984ad30f3 Add CellId info to X2 SAP 2012-06-27 17:02:45 +02:00
Manuel Requena 333f9a9b87 Add support for X2 handover in LTE Helper 2012-06-27 16:58:33 +02:00
Manuel Requena 52f8eeff77 merge 2012-06-19 14:02:09 +02:00
Manuel Requena c1594a2345 merge 2012-06-19 14:01:38 +02:00
Manuel Requena 13fd77fafe Add support for X2 SAP 2012-06-19 13:58:18 +02:00
Manuel Requena 019e83b145 first version of the X2 SAP definition 2012-06-19 12:05:28 +02:00
Nicola Baldo cd84b395ea further revised NAS sequence diagrams 2012-06-15 19:00:33 +02:00
Nicola Baldo 30f340ccb8 revised NAS sequence diagrams 2012-06-15 17:24:42 +02:00
Nicola Baldo 295a14554a merge 2012-06-15 17:02:22 +02:00
Nicola Baldo 3d88eb402e merge 2012-06-15 12:10:06 +02:00
Nicola Baldo ef0d1a5874 merge 2012-06-14 18:40:02 +02:00
Nicola Baldo d979a890ab updated RRC design 2012-06-05 11:57:00 +02:00
Nicola Baldo 12eb37ce81 RRC/NAS design clarifications for M5 2012-06-04 16:35:13 +02:00
Nicola Baldo 70724a71c7 merge 2012-06-04 13:57:55 +02:00
Manuel Requena 7d6b1c0f45 Modifs to X2 handover design doc 2012-05-22 13:45:19 +02:00
Nicola Baldo 836554566a draft design docs for RRC + NAS + MAC RA procedure 2012-05-14 19:54:40 +02:00
Manuel Requena c22af97eaa Add files to the build system for x2 design document 2012-05-08 12:48:26 +02:00
Manuel Requena 9dda9d4e4f Add text of the X2 handover design doc 2012-05-08 12:48:06 +02:00
Manuel Requena 291e4fe17e Add references of the X2 handover design doc 2012-05-08 12:47:42 +02:00
Manuel Requena 6683fd2808 Add figures of the X2 handover design document 2012-05-08 12:47:29 +02:00
Manuel Requena 8d8ddb4357 merge ns-3-lena-dev and ns-3-lena-epc 2012-05-07 18:23:42 +02:00
Manuel Requena 815135981d merge with ns-3-lena-dev 2012-04-02 11:19:09 +02:00
Gary Pei f74b34aac2 align lr-wpan with ns-3.13 spectrum API changes 2012-03-29 19:31:11 -07:00
Tom Henderson 1acbf3eb64 roll-up of many updates to models, tests, examples 2011-11-16 22:01:06 -08:00
Tom Henderson 9a66307754 Initial lr-wpan checkin 2011-05-29 14:38:53 -07:00
Mitch Watrous d7bd267c7e Bug 1717 - Detect unsettable attributes 2014-04-29 22:38:13 +02:00
Christopher Kosecki a15640d10e Bug 1876 - enable OLSR HNA table access 2014-04-29 20:35:34 +02:00
Tommaso Pecorella b314b544e5 [Python bindings] refresh OLSR module 2014-04-29 10:54:16 +02:00
Tommaso Pecorella 1c8972af9d Bug 1817 - IPv4 Identification field should consider protocol as well. 2014-04-29 10:07:25 +02:00
Tommaso Pecorella ae5d2c7131 Bug 1276 - optimize NistErrorRateModel 2014-04-29 10:01:47 +02:00
Konstantinos Katsaros 058c71d944 Bug 1903 - Namespace usage in olsr-state.cc/h 2014-04-29 09:50:21 +02:00
Tommaso Pecorella c75d24d0d3 RIPng - avoid spaces in ConfigStore names 2014-04-28 22:14:15 +02:00
Tom Henderson f30b671683 clarify some points about the ConfigStore 2014-04-28 10:50:25 -07:00
Tom Henderson 3588837aa6 fix typo 2014-04-28 10:38:37 -07:00
Tomasz Seweryn f7e18f35b4 Bug 1873 - Energy source checked to be aggregated to the node 2014-04-26 23:01:09 +02:00
Tom Henderson af31d858d2 add missing include 2014-04-24 17:38:36 -07:00
John Abraham 16187bdb69 NetAnim: Remove obsolete functionalities 2014-04-23 08:30:00 -07:00
Tommaso Pecorella f7769e0ea0 Update RELEASE_NOTES 2014-04-22 21:42:28 +02:00
Tommaso Pecorella 2834944fc2 Bug1829 2014-04-22 14:43:02 -04:00
Brian Swenson 2f07ece0bb Bug 1850 update tests 2014-04-22 14:16:48 -04:00
Unknown 9d815d019d Bug 1850 2014-04-22 13:58:22 -04:00
Brian Swenson 6fc2de6382 Bug 1791 2014-04-22 11:52:55 -04:00
Tommaso Pecorella aa5b099870 FlowMonitor manual 2014-01-25 13:48:44 +01:00
Tommaso Pecorella ae5bc1b527 Bug 1818: FlowMonitor needs IPv6 support 2014-04-21 11:32:45 +02:00
Peter D. Barnes, Jr. 9193ac9dd7 r10652 inadvertently undid part of these earlier commits:
r10646 src/internet/model/ipv4-l3-protocol.cc
r10636 src/dsr/model/dsr-options.cc
r10636 src/internet/model/icmpv6-header.cc
r10636 src/internet/model/ipv4-header.cc
2014-04-08 14:07:33 -07:00
Tommaso Pecorella 1abd142de9 [Python bindings] rescan core module 2014-04-05 07:53:58 +02:00
Tommaso Pecorella f3a3fb85b1 RIPng implementation 2014-03-17 20:01:49 +01:00
Peter D. Barnes, Jr. 45530120f2 Simplify output of Times in a specific unit; see Time::As () 2014-04-02 18:47:04 -07:00
Andrey Mazo 210aefc777 Bug 1170: Formulate best practices for dealing with unused debug variables.
Fixed clang-3.4 unused function warnings in optimized builds like the following:
"""
../examples/energy/energy-model-example.cc:39:1: error: unused function
'PrintReceivedPacket' [-Werror,-Wunused-function]
PrintReceivedPacket (Address& from)
^
1 error generated.
"""

Implemented "if (false)" trick inside NS_LOG* macros for optimized builds.

"sizeof()" trick might be a little better but it produces the following
warning with clang-3.4:
"""
../examples/energy/energy-model-example.cc:39:1: error: function
'PrintReceivedPacket' is not needed and will not be emitted
[-Werror,-Wunneeded-internal-declaration]
PrintReceivedPacket (Address& from)
^
1 error generated.
"""


Macros from log.h, that depend on NS3_LOG_ENABLE, were moved to log-macros-enabled.h and log-macros-disabled.h to make log.h smaller.
2014-03-23 19:08:54 +04:00
Scott Carpenter de004b4c7d Bug 1877 - constructor missing for <something>PropagationLossModels 2014-03-29 18:16:59 +01:00
Andrey Mazo afb50f1c25 whitespace fix after 20ce79766233. 2014-03-27 16:31:06 +04:00
Biljana Bojović f625c86e22 Bug 1888 - COST231 propagation loss model: corrections 2014-03-26 23:47:30 +01:00
Eugene Chemeritskiy 7feb0b73c8 Bug 1889 - PointToPointNetDevive: In some cases MacTxDrop trace is not called 2014-03-26 23:39:32 +01:00
Eugene Chemeritskiy a88ee6e269 Bug 1890 - UdpClientTrace: MPEG frame size is squeezed into (insufficient) 16 bit integer 2014-03-26 23:20:13 +01:00
Tommaso Pecorella 9b31bc95cb Bug 1891 - UdpSocketImpl::GetSockName doesn't return the IPv6 address 2014-03-26 23:08:28 +01:00
Andrey Mazo 9afed6b932 make various implementation-specific tables static const.
This should prevent possible name collisions, clean up ns3 namespace a little
and allow compiler to place them in a sharable read-only data section.
Also make various global variables static not to pollute ns3 namespace and to
force use of Attribute framework where appropriate.
2014-03-26 14:51:14 +04:00
Andrey Mazo 226c9005c3 hgignore LTE *Stats.txt 2014-03-26 02:35:34 +04:00
Eugene Chemeritskiy edc382137b Bug 1887 - Point-to-point traces should contain PPP headers 2014-03-25 21:46:09 +01:00
Andrey Mazo cb9eeb2af2 NS3_LOG_ENABLE shouldn't be forced.
Moreover, there is no NS_LOG* usage in these files.
2014-03-23 16:56:59 +04:00
Andrey Mazo be090649a2 mark private global variables as static in log.cc 2014-03-23 16:51:32 +04:00
Nicola Baldo cb1f9a0c9f merge 2014-03-21 16:57:41 +01:00
Biljana Bojovic d25133fd5e default value of ns3::RadioEnvironmentMapHelper::NoisePower is in W, not mW 2014-03-21 13:51:41 +01:00
mmiozzo efccb54a60 Add back forgotten rng testsuite (attibution: Peter Barnes noticed it) 2014-03-20 23:37:16 +01:00
mmiozzo c6ccba38d4 Bug-fix LTE UL Schedulers (all): add lacking allocationMap storage with only HARQ retransmissions 2014-03-18 13:17:12 +01:00
Tommaso Pecorella 0a3856e45c [Python Bindings] - rebuild internet and flow-monitor modules 2014-03-17 20:23:44 +01:00
Tommaso Pecorella c04ebb1c5f Bug 1845 - FlowMonitor should discard any broadcast/multicast packet 2014-03-17 19:44:36 +01:00
Tommaso Pecorella 7c6b38c6f4 Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace 2014-03-17 19:43:11 +01:00
Tommaso Pecorella 1ff598b75c Bug 1842 - FlowMonitor SerializeToXml<Something> should be called by the helper 2014-03-17 19:34:43 +01:00
Nicola Baldo 19e595c09f fixed Bug 1885 - WifiSpectrumValue5MhzFactory::CreateRfFilter does not align with the used 5Mhz SpectrumModel 2014-03-17 13:55:12 +01:00
Tommaso Pecorella 03d268196b [Manual] Calrify IPv6 address assignement 2014-03-15 21:44:06 +01:00
Tommaso Pecorella 384eb5a622 Add 6LoWPAN uncompressed IPv6 header support 2014-03-15 19:18:53 +01:00
Tommaso Pecorella d9a09ae2f3 Move SourceAddressSelection to Ipv6L3Protocol 2014-03-15 17:04:02 +01:00
Tommaso Pecorella a2e81e7341 Bug 1883 - IPv6 don't consider the prefix and network when choosing output address 2014-03-15 15:35:58 +01:00
Peter D. Barnes, Jr. fa320437c0 [Bug 1882] update RELEASE_NOTES 2014-03-14 15:33:49 -07:00
Peter D. Barnes, Jr. 72cea610f0 [Bug 1882] int64x64 tests trigger valgrind bug 2014-03-14 15:31:15 -07:00
Gustavo Carneiro 36368b6db9 fixes for Python 2.6 compatibility 2014-03-13 07:53:32 -07:00
Tom Henderson 701d152d37 remove unnecessary forward declaration 2014-03-13 06:37:41 -07:00
Tom Henderson 1b4424dbcc bug 1869: append local build directory before recursing into modules 2014-03-13 06:37:04 -07:00
Tommaso Pecorella 19db0e31cb [Doxygen] network module 2014-03-13 09:29:47 +01:00
Tommaso Pecorella 4517c16fe7 Fix valgrind errors in ipv[4,6]-fragmentation tests 2014-03-11 21:50:41 +01:00
Peter D. Barnes, Jr. cf7605fafc [doxygen] Clarify doxygen.conf PREDEFINED variable. 2014-03-10 12:52:16 -07:00
Peter D. Barnes, Jr. a274c8ea37 [doxygen] Make introspected lists more visible, various other doxy 2014-03-10 10:57:50 -07:00
Peter D. Barnes, Jr. 5469adc1a4 [doxygen] Fix warning 2014-03-05 17:08:10 -08:00
Peter D. Barnes, Jr. cd3da7143d [doxygen] Revert r10410, r10411, r10412 2014-03-05 17:06:59 -08:00
Peter D. Barnes, Jr. 104ff32b23 [doxygen] Stop warnings from NS_LOG_COMPONENT_DEFINE and NS_OBJECT_ENSURE_REGISTERED 2014-03-05 16:55:49 -08:00
Peter D. Barnes, Jr. bfeb265434 [doxygen] Preserve modified doxygen.conf during doxygen.warnings.report.sh run 2014-03-05 16:35:00 -08:00
Peter D. Barnes, Jr. f647edb0e5 [Bug 1856] Remove duplicate definition 2014-03-03 21:49:54 -08:00
Tom Henderson 57ccecc74d additional NSC documentation updates 2014-03-03 13:28:26 -08:00
Tom Henderson 661b5c9144 update NSC documentation 2014-03-03 06:49:11 -08:00
Gustavo Carneiro ff3054b592 Fixes to support Python >= 3.3 in ns3 python bindings 2014-03-02 23:48:27 +00:00
Gustavo Carneiro 60e2a6c117 Require new pybindgen version to handle the new Time type changes (int64_t) 2014-03-02 20:44:58 +00:00
Gustavo Carneiro 89b3183f65 Enable more pybindgen logging 2014-03-02 20:44:20 +00:00
Gustavo Carneiro cb559e2947 Add option to disable scanning for 32-bit bindings on 64-bit platforms 2014-03-02 12:24:39 +00:00
Peter D. Barnes, Jr. 851b2f961c [Bug [Bug 1856] int64x64_t double conversions: update reference data 2014-03-02 01:03:04 -08:00
Peter D. Barnes, Jr. b43ee31622 [Bug 1856] int64x64_t double conversions 2014-03-02 01:02:23 -08:00
Peter D. Barnes, Jr. 3c032987f0 [Bug 1868] Optimized builds are sensitive to -fstrict-overflow 2014-03-02 00:42:05 -08:00
Daniel Lertpratchya 94a4233910 [docs] update wifi.rst and mobility.rst (minor) 2014-02-27 09:45:55 -05:00
Tom Henderson 52da92bf5b add DSR to the list of routing protocols 2014-02-27 06:35:58 -08:00
Tom Henderson 3e16d73f38 add release step for documentation 2014-02-27 06:34:42 -08:00
Brian Swenson 50317fc036 Bug 1859 clang unused variable 2014-02-25 12:27:05 -05:00
Tom Henderson 727fa3f326 bindings rescan (another try) 2014-02-23 13:49:13 -08:00
Tom Henderson 0ba37f72a9 rescan bindings 2014-02-23 11:40:20 -08:00
Tom Henderson 44e6ff72b0 update pybindgen version 2014-02-23 11:40:12 -08:00
Tommaso Pecorella b24df55aa8 [Python Bindings] rescan bindings 2014-02-23 08:45:57 +01:00
Vedran Miletić 8a5d58beda Clean up function logging for non-DCF part of stats module 2014-02-22 22:56:14 +01:00
Peter D. Barnes, Jr. 3ec3b6a878 [Bug 1862] NS_LOG="Time=*|prefix_time" causes stack overflow 2014-02-21 16:27:43 -08:00
Peter D. Barnes, Jr. 22e31f0c68 [Bug 1792] [Bug 1853] Remove inheritance from std::stream in ParameterLogger 2014-02-21 16:25:43 -08:00
Alexander Afanasyev 7daf507a80 Bug 1294 - New PeekU8 () and Read (Buffer::Iterator start, uint32_t size) methods in Buffer::Iterator 2014-02-21 09:12:38 +01:00
Daniel Lertpratchya 1bc5e2265a [propagation] rescan Python binding 2014-02-21 11:50:18 -05:00
Nicola Baldo 9ce5538ff4 fix for Bug 1443 - m_minDistance in FriisPropagationLossModel 2014-02-21 13:43:17 +01:00
Peter D. Barnes, Jr. 28ac4c7f40 [Bug 1653] Extension of CommandLine interface
Restore operator << (std::ostream, CommandLine) erroneously removed
in rev 10155.
2014-02-20 22:00:09 -08:00
Tommaso Pecorella 98ec76d941 IPv[4,6] fragmentation tests include tag tests 2014-02-20 22:41:33 +01:00
Tom Goff 410b30f6fd Bug 1787 - Runtime error when using AnimationInterface::EnablePacketMetadata() to fetch metadata of CSMA packet 2014-02-20 22:35:51 +01:00
Daniel Lertpratchya 65bf9d35e8 [wifi] reformat wifi-tx-vector.cc 2014-02-17 08:43:58 -05:00
Tommaso Pecorella 4faabb5898 Bug 1855 - SixLowPanNetDevice is not correctly indexed 2014-02-13 22:53:39 +01:00
Peter D. Barnes, Jr. 73ceda8109 [Bug 1852] Restore missing config header 2014-02-11 14:38:25 -08:00
Peter D. Barnes, Jr. 13176beb94 Ignore introduction of rogue waf scripts. 2014-02-10 14:03:59 -08:00
Tommaso Pecorella 63d8c0f509 Update RELEASE_NOTES 2014-03-08 17:50:26 +01:00
Tommaso Pecorella 4f03cb0b56 Bug 1870 - Remove unnecessary AsInt functions 2014-03-08 17:43:28 +01:00
Rubén Martínez bee049436d Bug 1874 - Ipv4L3Protocol::ProcessFragment: addressCombination and idProto identifiers not properly computed 2014-03-07 22:22:31 +01:00
John Abraham 7b9f3873da NetAnim: Add figures 2014-02-09 19:49:31 -08:00
John Abraham 208294924d NetAnim: Update Documentation 2014-02-09 19:49:01 -08:00
John Abraham 8181d545fd NetAnim: Allow metadata as default in the examples 2014-02-09 11:25:35 -08:00
Peter D. Barnes, Jr. 4a5acb6109 One waf to rule them all. 2014-02-07 17:00:28 -08:00
Peter D. Barnes, Jr. eba6d81509 [Bug 1786] Fix undeclared identifiers cairo_impl64 and cairo_impl128 in int128 builds. 2014-02-05 10:58:19 -08:00
Peter D. Barnes, Jr. 1a54ac7031 [Bug 1786] Make cairo implementation type accessible. 2014-02-04 16:09:23 -08:00
Peter D. Barnes, Jr. 8d73d7448e [tutorial] Introduce more waf options and best work practices. 2014-02-04 16:14:44 -08:00
Daniel Lertpratchya 900d3ace25 [wifi] rescan Python binding 2014-02-04 14:04:01 -05:00
Daniel Lertpratchya 1b2b22150b [wifi] moved IsModeSupported to WifiPhy 2014-02-04 13:56:32 -05:00
Peter D. Barnes, Jr. 03fe7f5b3a Extend overeager signed comparison optimization to gcc-4.6 2014-02-04 09:38:42 -08:00
Tom Henderson 4ef03c0719 update click bindings 2014-02-02 11:03:06 -08:00
Peter D. Barnes, Jr. 1e4e8e1a11 Repeat the build output directory and the build profile in the configure report. 2014-01-31 14:57:58 -08:00
Peter D. Barnes, Jr. 3de55e7d5e [doxygen] Attempt to fix tooltip issue distorting some pages.
These configs have been tested with doxygen 1.8.1.1 through 1.8.6
2014-01-31 13:11:18 -08:00
Peter D. Barnes, Jr. e367628f60 [doxygen] Fix some minor doxygen errors. 2014-01-31 13:09:46 -08:00
Daniel Lertpratchya f3631afcf7 [wifi] rescan Python binding 2014-01-31 15:05:17 -05:00
Daniel Lertpratchya 7d8eea6cce Bug 1848 - yans-wifi-phy can receive frames sent using unsupported mode 2014-01-31 12:00:31 -05:00
Peter D. Barnes, Jr. a6eea770e2 Fix overeager signed comparison optimization in gcc-4.4 2014-01-30 12:18:29 -08:00
Tommaso Pecorella 7ed263378e Fix int64x64 test (clang errors) 2014-01-30 18:23:54 +01:00
Peter D. Barnes, Jr. 8f6bcf630c [Bug 1786] Fix for os << (int64x64_t) and fractional arithmetic
Arithmetic with fractions was never tested and it had lots of bugs.
This patch set:

- Defines many more tests, giving complete coverage of all operations
  (signed/unsigned, integer, fractions, mixed)

- Replaces over-generous #define creation of functions with minimal
  set of C++ functions.

- Minimizes differences between implementations.

- Documents all functions.

int128 and cairo implementations agree exactly on all int64x64 tests,
and pass all ns-3 tests.

long double implementation agrees with the other two on most int64x64
tests; failures have to do with less precision in long doubles.
The prior double implementation failed five ns-3 tests:
	devices-mesh-dot11s-regression
	devices-mesh-flame-regression
	int64x64
	routing-aodv-regression
	routing-olsr-regression
This implementation fails routing-olsr-regression because of single
bit differences in the pcap files.
2014-01-29 19:09:35 -08:00
Peter D. Barnes, Jr. 7fe84f050c Allow doxygen to find generated include files, such as ns3/core-config.h 2014-01-29 18:58:31 -08:00
Peter D. Barnes, Jr. f332b3cc2e Fix typos causing missing functions in cairo. 2014-01-29 17:47:09 -08:00
Peter D. Barnes, Jr. dd3118a745 Update Time scaling usage to use new functions.
With out this patch these locations will become
broken by the upcoming fix to bug 1768.
2014-01-29 17:46:21 -08:00
Peter D. Barnes, Jr. 0d2691af8b Enable minimal scaling and ratios with Time 2014-01-29 17:44:18 -08:00
Peter D. Barnes, Jr. 9e3bec943f Emacs mode line. 2014-01-29 17:41:03 -08:00
Peter D. Barnes, Jr. 678da4f186 Mixing signed and unsigned types can lead to misleading results in NS_TEST macros. 2014-01-28 13:34:46 -08:00
Peter D. Barnes, Jr. 022f3ad024 Enable selection of high precision int64x64 implementation at configure time. 2014-01-28 12:51:47 -08:00
Tommaso Pecorella d8d337c3d4 Updated RELEASE_NOTES 2014-01-26 18:22:04 +01:00
Tommaso Pecorella ffba6c64ee Bug 1846 - IPv6 should send Destination Unreachable if no route is available 2014-01-26 18:19:03 +01:00
Peter D. Barnes, Jr. 3a447bbcc0 Enable tests to get the name of the parent suite. 2014-01-23 11:45:36 -08:00
Tommaso Pecorella bbb25ddb08 Bug 1808: FlowMon relies on IPv4's Identification field to trace packets 2014-01-23 19:31:42 +01:00
Tommaso Pecorella 32a11da551 Update RELEASE_NOTES 2014-01-21 23:06:22 +01:00
Tommaso Pecorella 281f06e639 Bug 1841 - FlowMonitor fails to install if IPv4 is not installed in the node 2014-01-21 22:52:52 +01:00
2083 changed files with 358121 additions and 63563 deletions
+9
View File
@@ -20,10 +20,13 @@
\.pcap$
\.mob$
\.routes$
^seventh-packet-byte-count.png
\.cwnd
^doc/doxygen.log$
^doc/doxygen.warnings.log$
^doc/(manual|models|tutorial|tutorial-pt-br)/build
^doc/(manual|models|tutorial|tutorial-pt-br)/figures/.*\.(eps|pdf|png)$
^doc/manual/source-temp
^doc/models/source-temp
^doc/ns3_html_theme/static/ns3_version.js$
^src/.*/doc/build
@@ -35,5 +38,11 @@ massif.*
\.patch$
\.diff$
\.tr$
\.dat$
\.plt$
\#[^\#/]+\#$
^coverity
^(D|U)l[A-Z][a-z]*Stats.txt$
syntax: glob
TAGS
waf
+5
View File
@@ -63,3 +63,8 @@ e48ed3aabca6ad71c8c49e4604c0f83345eda6a8 ns-3.11-RC3
9007193fbb8d18b69a1feb6aec16501dcf138b6f ns-3.13
ae540de68a2534213342c5e0b12afb47d7518a90 ns-3.14
26a511d6dbad7284e66de0f3b2ad5bebe6b76405 ns-3.15
49d343e55caec257bb01e400eef6c14522f37e1b ns-3.16
b4a70b99171ade6e9628a87780994238950a1df1 ns-3.17
cfbc9491d7e7c9d346cc042fd35b8afb8836e81f ns-3.18
322102df792e2be6c74df74f776b3470fb1db795 ns-3.19
da0eb48df23f96335f32a37f047a6bc27e197c8d ns-3.20
+55 -1
View File
@@ -2,6 +2,8 @@ Alexander Afanasyev (alexander.afanasyev@ucla.edu)
Rohit Agarwal (mindprince@gmail.com)
Kirill Andreev (andreev@iitp.ru)
Dean Armstrong (deanarm@gmail.com)
Stefano Avallone (stefano.avallone@unina.it)
Ghada Badawy (gbadawy@gmail.com)
Nicola Baldo (nbaldo@cttc.es)
Mirko Banchi (mk.banchi@gmail.com)
Peter D. Barnes, Jr. (barnes26@llnl.gov)
@@ -10,28 +12,42 @@ Mehdi Benamor (mehdi.benamor@telecom-bretagne.eu)
Raj Bhattacharjea (raj.b@gatech.edu)
Timo Bingmann (timo.bingmann@student.kit.edu)
Julien Boite (juboite@gmail.com)
Biljana Bojovic (bbojovic@cttc.es)
Elena Borovkova (borokovaes@iitp.ru)
Pavel Boyko (boyko@iitp.ru)
Dan Broyles (muxman@sbcglobal.net)
Jonathan Brugge (j.d.brugge@student.utwente.nl)
Junling Bu (linlinjavaer@gmail.com)
Elena Buchatskaia (borovkovaes@iitp.ru)
Gustavo Carneiro (gjc@inescporto.pt, gjcarneiro@gmail.com)
Scott Carpenter (scarpen@ncsu.edu)
Egemen K. Cetinkaya (ekc@iitc.ku.edu)
Angelos Chatzipapas (chatzipa@ceid.upatras.gr)
Eugene Chemeritskiy (echemeritskiy@arccn.ru)
Yufei Cheng (yfcheng@ittc.ku.edu)
Andrey Churin (aachurin@gmail.com)
Salva Climent (jocliba@gmail.com)
Luis Cortes (cortes@gatech.edu)
Luca Costantino (luca.costantino@gmail.com)
Alexander D'souza (moijes12@gmail.com)
Sébastien Deronne (sebastien.deronne@gmail.com)
Craig Dowell (craigdo@ee.washington.edu)
Gilaras Drakeson (gilaras@gmail.com)
Christian Facchini (c.facchini@gmail.com)
Denis Fakhriev (fakhriev@iitp.ru)
Jahanzeb Farooq (Jahanzeb.Farooq@inria.fr, Jahanzeb.Farooq@gmail.com)
Luca Favatella (slackydeb@gmail.com)
Margherita Filippetti (morag87@gmail.com)
Pedro Fortuna (pedro.fortuna@inescporto.pt)
Juliana Freitag Borin (juliana.freitag@gmail.com)
Piotr Gawlowicz (gawlowicz.p@gmail.com)
Eric Gamess (egamess@gmail.com)
Yida Gao (yidapb@gmail.com)
Thomas Geithner (thomas.geithner@dai-labor.de)
Ashim Ghosh (ashim.atiit@gmail.com)
Martin Giachino (martin.giachino@gmail.com,giachino@fing.edu.uy)
Tom Goff (tgoff@tgoff.net)
Juan C. Granda (jcgranda@uniovi.es)
David Gross (gdavid.devel@gmail.com)
Maja Grubišić (maja.grubisic@live.com)
Charline Taibi Guguen (charline.guguen@gmail.com)
@@ -39,39 +55,65 @@ Daniel Halperin (daniel@halper.in)
Bruno Haick (bghaick@hotmail.com)
Frank Helbert (frank@ime.usp.br)
Tom Henderson (tomhend@u.washington.edu)
Budiarto Herman (budiarto.herman@magister.fi)
Tom Hewer (tomhewer@mac.com)
Kristian A. Hiorth (kristahi@ifi.uio.no)
Kim Højgaard-Hansen (kimrhh@gmail.com)
Chris Hood (chood8@gatech.edu)
Blake Hurd (naimorai@gmail.com)
ishan (ishan.chhabra@gmail.com)
Mohamed Amine Ismail (amine.ismail@inria.fr, iamine@udcast.com)
Jared Ivey (j.ivey@gatech.edu)
Atishay Jain (atishayjain25@gmail.com)
Sascha Alexander Jopen (jopen@informatik.uni-bonn.de)
Sam Jansen (sam.jansen@gmail.com)
Liu Jian (liujatp@gmail.com)
Joe Kopena (tjkopena@cs.drexel.edu)
Piotr Jurkiewicz (piotr.jerzy.jurkiewicz@gmail.com)
Evgeny Kalishenko (ydginster@gmail.com)
Konstantinos Katsaros (dinos.katsaros@gmail.com)
Morteza Kheirkhah (m.kheirkhah@sussex.ac.uk)
Flavio Kobuta (flaviokubota@gmail.com)
Joe Kopena (tjkopena@cs.drexel.edu)
Christopher Kosecki (christopher.l.kosecki.ctr@mail.mil)
Aleksey Kovalenko (kovalenko@iitp.ru)
Mathieu Lacage (mathieu.lacage@inria.fr)
Emmanuelle Laprise (emmmanuelle.laprise@bluekazoo.ca)
Kristijan Lenković (k.lenkovic@me.com)
Daniel Lertpratchya (nikkipui@gmail.com)
Björn Lichtblau (lichtbla@informatik.hu-berlin.de)
Timo Lindhorst (tlnd@online.de)
Erwan Livolant (erwan.livolant@inria.fr)
Keith Ma (keith.nwsuaf@gmail.com)
Federico Maguolo (maguolof@dei.unipd.it)
Antti Makela (zarhan@cc.hut.fi)
Francesco Malandrino (francesco.malandrino@gmail.com)
Rubén Martínez (rmartinez@deic.uab.cat)
Fabian Mauchle (f1mauchl@hsr.ch)
Andrey Mazo (mazo@iitp.ru)
Jonathan McCrohan (jmccroha@tcd.ie)
Andrew McGregor (andrewmcgr@gmail.com)
Vedran Miletić (rivanvx@gmail.com)
Jens Mittag (jens.mittag@kit.edu)
Marco Miozzo (mmiozzo@cttc.es)
Faker Moatamri (faker.moatamri@inria.fr)
Edvin Močibob (edvin.mocibob@gmail.com)
Mike Moreton (mjvm_ns@hotmail.com)
Michele Muccio (michelemuccio@virgilio.it)
Sidharth Nabar (snabar@uw.edu)
Hemanth Narra (hemanth@ittc.ku.edu)
Roman Naumann (naumann@informatik.hu-berlin.de)
Andreas Nilsson (andrnils@gmail.com)
Jaume Nin (jnin@cttc.es)
Michael Nowatkowski (nowatkom@gmail.com)
Anh Nguyen (annguyen@ittc.ku.edu)
Duy Nguyen (duy@soe.ucsc.edu)
Lluís Parcerisa (parcerisa@gmail.com)
Natale Patriciello (natale.patriciello@gmail.com)
Tommaso Pecorella (tommaso.pecorella@unifi.it)
Vikas Pushkar (vikaskupushkar@gmail.com)
Josh Pelkey (jpelkey@gatech.edu)
Per (per_e_lists@rocketmail.com)
Fernando Pereira (ferdonfeup@gmail.com)
Colin Perkins (csp@csperkins.org)
Giuseppe Piro (g.piro@poliba.it)
Yana Podkosova (yanapdk@rambler.ru)
@@ -81,21 +123,33 @@ Bruno Ranieri (Yrrsinn@googlemail.com)
Ken Renard (kenneth.renard@arl.army.mil)
Manuel Requena (mrequena@cttc.es)
George F. Riley (riley@ece.gatech.edu)
Juergen Rinas (jrinas@gmx.de)
Sebastian Rohde (sebastian.rohde@tu-dortmund.de)
Karsten Roscher (sfx@rocktale.de)
Bill Roome (wdr@bell-labs.com)
David (david.rua@gmail.com)
Andrea Sacco (andrea.sacco85@gmail.com)
Lynne Salameh (l.salameh@cs.ucl.ac.uk)
Providence Salumu Munga (Providence.Salumu@gmail.com, Providence.Salumu_Munga@it-sudparis.eu)
Francisco Javier Sánchez-Roselly (fnavarro@ujaen.es)
Florian Schmidt (Florian.Schmidt@cs.rwth-aachen.de)
Guillaume Seguin (guillaume.seguin@inria.fr)
Tomasz Seweryn (tomasz.seweryn7@gmail.com)
Dmitrii Shakshin (d.shakshin@gmail.com)
Kulin Shah (m.kulin@gmail.com)
Guowang Shi (shiguowang2007@gmail.com)
Phillip Sitbon (phillip.sitbon@gmail.com)
Anirudh Sivaraman (sk.anirudh@gmail.com)
Steven Smith (smith84@llnl.gov)
Andrew Stanton (acstanton515@gmail.com)
Ewgenij Starostin (estar@cs.tu-berlin.de)
YunQiang Su (wzssyqa@gmail.com)
Brian Swenson (bswenson3@gatech.edu)
Lalith Suresh (suresh.lalith@gmail.com)
Dave Taht (dave.taht@bufferbloat.net)
Marcos Talau (talau@users.sourceforge.net)
Adrian S. W. Tam (adrian.sw.tam@gmail.com)
Cristiano Tapparello (cristiano.tapparello@rochester.edu)
Hajime Tazaki (tazaki@sfc.wide.ad.jp)
Wilson Thong (wilsonwk@ee.cityu.edu.hk)
Mauro Tortonesi (mauro.tortonesi@unife.it)
+572 -11
View File
@@ -23,6 +23,13 @@ the impact of these changes on users by documenting these changes in a
single place (this file), and not by providing a temporary or permanent
backward-compatibility software layer. </p>
<p>
A related file is the RELEASE_NOTES file in the top level directory.
This file complements RELEASE_NOTES by focusing on API and behavioral
changes that users upgrading from one release to the next may encounter.
RELEASE_NOTES attempts to comprehensively list all of the changes
that were made. There is generally some overlap in the information
contained in RELEASE_NOTES and this file. </p>
<p>
The goal is that users who encounter a problem when trying to use older
code with newer code should be able to consult this file to find
guidance as to how to fix the problem. For instance, if a method name
@@ -43,6 +50,560 @@ the cracks, unfortunately. If you, as a user, can suggest improvements
to this file based on your experience, please contribute a patch or drop
us a note on ns-developers mailing list.</p>
<hr>
<h1>Changes from ns-3.20 to ns-3.21</h1>
<h2>New API:</h2>
<ul>
<li> New "const double& SpectrumValue:: operator[] (size_t index) const".
</li>
<li> A new TraceSource has been added to TCP sockets: SlowStartThreshold.
</li>
<li> New method CommmandLine::AddValue (name, attibutePath) to provide a
shorthand argument "name" for the Attribute "path". This also has
the effect of including the help string for the Attribute in the
Usage message.
</li>
<li> The GSoC 2014 project in the LTE module has brought some additional APIs:
<ul>
<li>a new abstract class LteFfrAlgorithm, which every future
implementation of frequency reuse algorithm should inherit from</li>
<li>a new SAPs: one between MAC Scheduler and FrAlgorithm, one between
RRC and FrAlgorithm</li>
<li>new attribute to enable Uplink Power Control in LteUePhy</li>
<li>new LteUePowerControl class, an implementation of Uplink Power Control, which is
configurable by attributes. ReferenceSignalPower is sent by eNB in SIB2.
Uplink Power Control in Closed Loop Accumulative Mode is enabled by default</li>
<li>seven different Frequency Reuse Algorithms (each has its own attributes): </li>
<ul>
<li>LteFrNoOpAlgorithm</li>
<li>LteFrHardAlgorithm</li>
<li>LteFrStrictAlgorithm</li>
<li>LteFrSoftAlgorithm</li>
<li>LteFfrSoftAlgorithm</li>
<li>LteFfrEnhancedAlgorithm</li>
<li>LteFfrDistributedAlgorithm</li>
</ul>
<li>attribute in LteFfrAlgorithm to set FrCellTypeId which is used in automatic
Frequency Reuse algorithm configuration</li>
<li>LteHelper has been updated with new methods related to frequency reuse algorithm:
SetFfrAlgorithmType and SetFfrAlgorithmAttribute</li>
</ul>
</li>
<li> A new SimpleNetDeviceHelper can now be used to install SimpleNetDevices.
</li>
<li> New PacketSocketServer and PacketSocketClient apps, meant to be used in tests.
</li>
<li> Tcp Timestamps and Window Scale options have been added and are enabled by default (controllable by attribute).
</li>
<li> A new CoDel queue model has been added to the 'internet' module.
</li>
</ul>
<h2>Changes to existing API:</h2>
<ul>
<li> "Icmpv6L4Protocol::ForgeEchoRequest" is now returning a packet with the proper IPv6 header.
</li>
<li> The TCP socket Attribute "SlowStartThreshold" has been renamed "InitialSlowStartThreshold" to
clarify that the effect is only on the initial value.
</li>
<li> all schedulers were updated to interact with FR entity via FFR-SAP. Only PF, PSS, CQA,
FD-TBFQ, TD-TBFQ schedulers supports Frequency Reuse functionality. In the beginning
of scheduling process, schedulers ask FR entity for avaiable RBGs and then ask if UE
can be scheduled on RB</li>
<li> eNB RRC interacts with FFR entity via RRC-FFR SAP</li>
<li> new DL-CQI generation approach was implemented. Now DL-CQI is computed from control channel as signal
and data channel (if received) as interference. New attribute in LteHelper was added to specify
DL-CQI generation approach. New approach is default one in LteHelper </li>
<li> RadioEnvironmentMap can be generated for Data or Control channel and for specified RbId;
Data or Control channel and RbId can be configured by new attributes in RadioEnvironmentMapHelper </li>
<li> lte-sinr-chunk-processor refactored to lte-chunk-processor. Removed all lte-xxx-chunk-processor
implementations</li>
<li> BindToNetDevice affects also sockets using IPv6.</li>
<li> BindToNetDevice now calls implicitly Bind (). To bind a socket to a NetDevice and to a specific address,
the correct sequence is Bind (address) - BindToNetDevice (device). The opposite will raise an error.</li>
</ul>
<h2>Changes to build system:</h2>
<ul>
<li> None for this release. </li>
</ul>
<h2>Changed behavior:</h2>
<ul>
<li> Behavior will be changed due to the list of bugs fixed (listed in RELEASE_NOTES); users are requested to review that list as well.
</ul>
<hr>
<h1>Changes from ns-3.19 to ns-3.20</h1>
<h2>New API:</h2>
<ul>
<li> Models have been added for low-rate, wireless personal area networks
(LR-WPAN) as specified by IEEE standard 802.15.4 (2006). The current
emphasis is on the unslotted mode of 802.15.4 operation for use in Zigbee,
and the scope is limited to enabling a single mode (CSMA/CA) with basic
data transfer capabilities. Association with PAN coordinators is not yet
supported, nor the use of extended addressing. Interference is modeled as
AWGN but this is currently not thoroughly tested. The NetDevice Tx queue
is not limited, i.e., packets are never dropped due to queue becoming full.
They may be dropped due to excessive transmission retries or channel access
failure. </li>
<li> A new IPv6 routing protocol has been added: RIPng. This protocol is
an Interior Gateway Protocol and it is available in the Internet module. </li>
<li> A new LTE MAC downlink scheduling algorithm named Channel and QoS
Aware (CQA) Scheduler is provided by the new "ns3::CqaFfMacScheduler" object.
</li>
<li> Units may be attached to Time objects, to facilitate specific output
formats (see Time::As()) </li>
<li> FlowMonitor "SerializeToXml" functions are now directly available
from the helper. </li>
<li> Access to OLSR's HNA table has been enabled </li>
</ul>
<h2>Changes to existing API:</h2>
<ul>
<li> The SixLowPan model can now use uncompressed IPv6 headers. An option to
define the minimum compressed packet size has been added. </li>
<li> MinDistance wsa replaced by MinLoss in FriisPropagationLossModel, to
better handle conditions outside of the assumed far field region. </li>
<li> In the DSR model, the attribute DsrOptionRerrHeader::ErrorType" has
been removed. </li>
</ul>
<h2>Changes to build system:</h2>
<ul>
<li> Python 3.3 is now supported for Python bindings for ns-3. Python 3.3
support for API scanning is not supported. Python 3.2 is not supported.</li>
<li> Enable selection of high precision int64x64_t implementation
at configure time, for debugging purposes.</li>
<li> Optimized builds are now enabling signed overflow optimization
(-fstrict-overflow) and for gcc 4.8.2 and greater, also warning for cases
where an optimizization may occur due to compiler assumption that
overflow will not occur. </li>
</ul>
<h2>Changed behavior:</h2>
<ul>
<li> The Internet FlowMonitor can now track IPv6 packets. </li>
<li> Ipv6Extension::m_dropTrace has been removed. Ipv6L3Protocol::m_dropTrace
is now fired when appropriate. </li>
<li> IPv4 identification field value is now dependent on the protocol
field. </li>
<li> Point-to-point trace sources now contain PPP headers </li>
</ul>
<hr>
<h1>Changes from ns-3.18.1 to ns-3.19</h1>
<h2>New API:</h2>
<ul>
<li> A new wifi extension for vehicular simulation support is available in the
src/wave directory. The current code represents an interim capability to
realize an IEEE 802.11p-compliant device, but without the WAVE extensions
(which are planned for a later patch). The WaveNetDevice modelled herein
enforces that a WAVE-compliant physical layer (at 5.9 GHz) is selected, and
does not require any association between devices (similar to an adhoc WiFi
MAC), but is otherwise similar (at this time) to a WifiNetDevice. WAVE
capabililties of switching between control and service channels, or using
multiple radios, are not yet modelled.
</li>
<li>New SixLowPanNetDevice class providing a shim between
IPv6 and real NetDevices. The new module implements 6LoWPAN:
"Transmission of IPv6 Packets over IEEE 802.15.4 Networks" (see
<a href="http://www.ietf.org/rfc/rfc4944.txt">RFC 4944</a> and
<a href="http://www.ietf.org/rfc/rfc6262.txt">RFC 6262</a>),
resulting in a heavy header compression for IPv6 packets.
The module is intended to be used on 802.15.4 NetDevices, but
it can be used over other NetDevices. See the manual for
further discussion.
</li>
<li> LteHelper has been updated with some new APIs:
<ul>
<li>new overloaded Attach methods to enable UE to automatically determine
the eNodeB to attach to (using initial cell selection);</li>
<li>new methods related to handover algorithm: SetHandoverAlgorithmType
and SetHandoverAlgorithmAttribute;</li>
<li>a new attribute AnrEnabled to activate/deactivate Automatic Neighbour
Relation (ANR) function; and</li>
<li>a new method SetUeDeviceAttribute for configuring LteUeNetDevice.</li>
</ul>
</li>
<li> The GSoC 2013 project in the LTE module has brought some additional APIs:
<ul>
<li>a new abstract class LteHandoverAlgorithm, which every future
implementation of automatic handover trigger should inherit from;</li>
<li>new classes LteHandoverAlgorithm and LteAnr as sub-modules of
LteEnbNetDevice class; both interfacing with the LteEnbRrc sub-module
through Handover Management SAP and ANR SAP;</li>
<li>new attributes in LteEnbNetDevice and LteUeNetDevice classes related
to Closed Subscriber Group (CSG) functionality in initial cell
selection;</li>
<li>new attributes in LteEnbRrc for configuring UE measurements' filtering
coefficient (i.e., quantity configuration);</li>
<li>a new public method AddUeMeasReportConfig in LteEnbRrc for setting up
custom UE measurements' reporting configuration; measurement reports
can then be captured from the RecvMeasurementReport trace source;
and</li>
<li>new trace sources in LteUeRrc to capture more events, such as System
Information messages (MIB, SIB1, SIB2), initial cell selection, random
access, and handover.</li>
</ul>
</li>
<li>A new parallel scheduling algorithm based on null messages, a common
parallel DES scheduling algorithm, has been added. The null message
scheduler has better scaling properties when running on some scenarios
with large numbers of nodes since it does not require a global
communication.
</li>
</ul>
<h2>Changes to existing API:</h2>
<ul>
<li> It is now possible to use Ipv6PacketInfoTag from UDP applications in the
same way as with Ipv4PacketInfoTag. See Doxygen for current limitations in
using Ipv[4,6]PacketInfoTag to set IP properties.</li>
<li>A change is introduced for the usage of the EpcHelper
class. Previously, the EpcHelper class included both the API
definition and its (only) implementation; as such, users would
instantiate and use the EpcHelper class directly in their
simulation programs. From now on,
EpcHelper is just the base class defining the API, and the
implementation has been moved to derived classes; as such,
users are now expected to use one of the derived classes in
their simulation program. The implementation previously
provided by the EpcHelper class has been moved to the new
derived class PointToPointEpcHelper.</li>
<li> The automatic handover trigger and ANR functions in LTE module have been
moved from LteEnbRrc class to separate classes. As a result, the related
attributes, e.g., ServingCellHandoverThreshold, NeighbourCellHandoverOffset,
EventA2Threshold, and EventA4Threshold have been removed from LteEnbRrc
class. The equivalent attributes are now in A2A4RsrqHandoverAlgorithm and
LteAnr classes.</li>
<li> Master Information Block (MIB) and System Information Block Type 1 (SIB1)
are now transmitted as LTE control messages, so they are no longer part of
RRC protocol.</li>
<li> UE RRC state model in LTE module has been considerably modified and is
not backward compatible with the previous state model.</li>
<li> Additional time units (Year, Day, Hour, Minute) were added to the time
value class that represents simulation time; the largest unit prior to
this addition was Second.
</li>
<li> SimpleNetDevice and SimpleChannel are not so simple anymore. SimpleNetDevice can be now a
Broadcast or PointToPoint NetDevice, it can have a limited bandwidth and it uses an output
queue.
</li>
</ul>
<h2>Changes to build system:</h2>
<h2>Changed behavior:</h2>
<ul>
<li> For the TapBridge device, in UseLocal mode there is a MAC learning function. TapBridge has been waiting for the first packet received from tap interface to set the address of the bridged device to the source address of the first packet. This has caused problems with WiFi. The new behavior is that after connection to the tap interface, ns-3 learns the MAC address of that interface with a system call and immediately sets the address of the bridged device to the learned one. See <a href="https://www.nsnam.org/bugzilla/show_bug.cgi?id=1777">bug 1777</a> for more details.</li>
<li> TapBridge device now correctly implements IsLinkUp() method.</li>
<li> IPv6 addresses and routing tables are printed like in Linux "route -A inet6" command.</li>
<li> A change in Ipv[4,6]Interface enforces the correct behaviour of IP
when a device do not support the minimum MTU requirements.
This is set to 68 and 1280 octects respectively. IP simulations that
may have run over devices with smaller MTUs than 68 or 1280, respectively,
will no longer be able to use such devices.</li>
</ul>
<hr>
<h1>Changes from ns-3.18 to ns-3.18.1</h1>
<h2>New API:</h2>
<ul>
<li> It is now possible to randomize the time of the first beacon from an
access point. Use an attribute "EnableBeaconJitter" to enable/disable
this feature.
</li>
<li> A new FixedRoomPositionAllocator helper class is available; it
allows one to generate a random position uniformly distributed in the
volume of a chosen room inside a chosen building.
</li>
</ul>
<h2>Changes to existing API:</h2>
<ul>
<li> Logging wildcards: allow "***" as synonym for "*=**" to turn on all logging.
</li>
<li> The log component list ("NS_LOG=print-list") is now printed alphabetically.
</li>
<li> Some deprecated IEEE 802.11p code has been removed from the wifi module
</li>
</ul>
<h2>Changes to build system:</h2>
<ul>
<li> The Python API scanning system (./waf --apiscan) has been fixed (bug 1622)
</li>
<li> Waf has been upgraded from 1.7.11 to 1.7.13
</li>
</ul>
<h2>Changed behavior:</h2>
<ul>
<li> Wifi simulations have additional jitter on AP beaconing (see above) and some bug fixes have been applied to wifi module (see RELEASE_NOTES)
</li>
</ul>
<hr>
<h1>Changes from ns-3.17 to ns-3.18</h1>
<h2>New API:</h2>
<ul>
<li>New features have been added to the LTE module:
<ul>
<li>PHY support for UE measurements (RSRP and RSRQ)</li>
<li>RRC support for UE measurements (configuration, execution, reporting)</li>
<li>Automatic Handover trigger based on RRC UE measurement reports</li>
</ul>
<li>Data collection components have been added in the 'src/stats' module.
Data collection includes a Probe class that attaches to ns-3 trace
sources to filter their output, and two Aggregator classes for
marshaling probed data into text files or gnuplot plots. The ns-3
tutorial has been extended to illustrate basic functionality. </li>
<li>In 'src/wifi', several changes were made to enable partial 802.11n support:
<ul>
<li>A new helper (HtWifiMacHelper) was added to set up a high throughput (HT) MAC entity</li>
<li>New attributes were added to help the user setup a high throughpt (HT) PHY entity. These attributes can be set using the YansWifiPhyHelper</li>
<li>A new standard value has been added that enables the new 11n data rates.</li>
<li>New 11n preambles has been added (Mixed format and greenfield). To be able to change Tx duration according to the preamble used, a new class TxVector has been added to carry the transmission parameters (mode, preamble, stbc,..). Several functions have been updated to allow the passage of TxVector instead of WifiMode in MacLow, WifiRemoteStationManager, WifiPhy, YansWifiPhy,.. </li>
<li>A new information element has been added: HTCapabilities. This information element is added to the MAC frame header if the node is an HT node. This HTCapabilites information element is used to advertise the HT capabilites of the node to other nodes in the network</li>
</ul>
<li>InternetStackHelper has two new functions:<tt>SetIpv4ArpJitter (bool enable)</tt>
and <tt>SetIpv6NsRsJitter (bool enable)</tt> to enable/disable
the random jitter on the tranmission of IPv4 ARP Request and IPv6 NS/RS. </li>
<li>Bounds on valid time inputs for time attributes can now be enabled.
See <tt>attribute-test-suite.cc</tt> for an example.</li>
<li>New generic hash function interface provided in the simulation core.
Two hash functions are provided: murmur3 (default), and the venerable
FNV1a. See the Hash Functions section in the ns-3 manual.</li>
<li>New Mac16Address has been added. It can be used with IPv6 to make
an Autoconfigured address.</li>
<li>Mac64Address support has been extended. It can now be used with
IPv6 to make an Autoconfigured address.</li>
<li>IPv6 can now detect and use Path-MTU. See
<tt>examples/ipv6/fragmentation-ipv6-two-MTU.cc</tt> for an example.</li>
<li>Radvd application has a new Helper. See the updated
<tt>examples/ipv6/radvd.cc</tt> for an example.</li>
</ul>
<h2>Changes to existing API:</h2>
<ul>
<li> The Ipv6InterfaceContainer functions to set a node in forwarding state (i.e., a router)
and to install a default router in a group of nodes have been extensively changed.
The old function <tt>void Ipv6InterfaceContainer::SetRouter (uint32_t i, bool router)</tt>
is now DEPRECATED.
</li>
<li> The documentation's IPv6 addresses (2001:db8::/32, RFC 3849) are now
dropped by routers.
</li>
<li> The 'src/tools' module has been removed, and most files migrated to
'src/stats'. For users of these programs (the statistics-processing
in average.h, or the gnuplot support), the main change is likely to be
replacing the inclusion of "tools-module.h" with "stats-module.h".
Users of the event garbage collector, previously in tools, will now
include it from the core module.
</li>
<li> The Ipv6 UnicastForwardCallback and MulticastForwardCallback
have a new parameter, the NetDevice the packet has been received from.
Existing Ipv6RoutingProtocols should update their RouteInput function
accordingly, e.g., from <tt>ucb (rtentry, p, header);</tt> to <tt>ucb (idev, rtentry, p, header);</tt>
</li>
<li> The previous buildings module relied on a specific MobilityModel called
BuildingsMobilityModel, which supported buildings but only allowed
static positions. This mobility model has been removed. Now, the
Buildings module instead relies on a new class called
MobilityBuildingInfo which can be aggregated to any MobilityModel. This
allows having moving nodes in presence of buildings with any of
the existing MobilityModels.
</li>
<li>All functions in WifiRemoteStationManager named GetXxxMode have been changed to GetXxxTxVector </li>
</ul>
<h2>Changes to build system:</h2>
<ul>
<li> Make references to bug id's in doxygen comments with
<tt>\bugid{num}</tt>, where <tt>num</tt> is the bug id number. This
form will generate a link to the bug in the bug database.
</li>
</ul>
<h2>Changed behavior:</h2>
<ul>
<li> Now it is possible to request printing command line arguments to the
desired output stream using PrintHelp or operator &lt;&lt;
<pre>
CommandLine cmd;
cmd.Parse (argc, argv);
...
std::cerr << cmd;
</pre>
or
<pre>
cmd.PrintHelp (std::cerr);
</pre>
</li>
<li>Command line boolean arguments specified with no integer value (e.g. <tt>"--boolArg"</tt>) will toggle the value from the default, instead of always setting the value to true.
</li>
<li>IPv4's ARP Request and IPv6's NS/RS are now transmitted with a random delay.
The delay is, by default, a uniform random variable in time between 0 and 10ms.
This is aimed at preventing reception errors due to collisions during wifi broadcasts when the sending behavior is synchronized (e.g. due to applications starting at the same time on several different nodes).
This behaviour can be modified by using ArpL3Protocol's
<tt>RequestJitter</tt> and Icmpv6L4Protocol's <tt>SolicitationJitter</tt>
attributes or by using the new InternetStackHelper functions.
</li>
<li>AODV Hellos are disabled by default. The performance with Hellos enabled and disabled are almost identical. With Hellos enabled, AODV will suppress hellos from transmission, if any recent broadcast such as RREQ was transmitted. The attribute <tt>ns3::aodv::RoutingProtocol::EnableHello</tt> can be used to enable/disable Hellos.
</ul>
<hr>
<h1>Changes from ns-3.16 to ns-3.17</h1>
<h2>New API:</h2>
<ul>
<li>New TCP Westwood and Westwood+ models
<li>New FdNetDevice class providing a special NetDevice that is able to read
and write traffic from a file descriptor. Three helpers are provided
to associate the file descriptor with different underlying devices:
<ul>
<li> EmuFdNetDeviceHelper (to associate the |ns3| device with a physical
device in the host machine). This helper is intended to
eventually replace the EmuNetDevice in src/emu. </li>
<li> TapFdNetDeviceHelper (to associate the ns-3 device with the file
descriptor from a tap device in the host machine) </li>
<li> PlanteLabFdNetDeviceHelper (to automate the creation of tap devices
in PlanetLab nodes, enabling |ns3| simulations that can send and
receive traffic though the Internet using PlanetLab resource.</li>
</ul>
</li>
<li>In Ipv4ClickRouting, the following APIs were added:
<ul>
<li>Ipv4ClickRouting::SetDefines(), accessible through ClickInternetStackHelper::SetDefines(), for the user to set Click defines from the ns-3 simulation file.</li>
<li>SIMCLICK_GET_RANDOM_INT click-to-simulator command for ns-3 to drive Click's random number generation.</li>
</ul>
</li>
<li>LTE module
<ul>
<li> New user-visible LTE API
<ul>
<li>Two new methods have been added to LteHelper to enable the X2-based handover functionality: AddX2Interface, which setups the X2 interface between two eNBs, and HandoverRequest, which is a convenience method that schedules an explicit handover event to be executed at a given point in the simulation. </li>
<li>the new LteHelper method EnablePhyTraces can now be used to enable the new PHY traces</li>
</ul>
</li>
<li> New internal LTE API
<ul>
<li>New LTE control message classes DlHarqFeedbackLteControlMessage,
RachPreambleLteControlMessage, RarLteControlMessage, MibLteControlMessage</li>
<li>New class UeManager
<li>New LteRadioBearerInfo subclasses LteSignalingRadioBearerInfo,
LteDataRadioBearerInfo</li>
<li>New LteSinrChunkProcessor subclasses LteRsReceivedPowerChunkProcessor,
LteInterferencePowerChunkProcessor</li>
</ul>
</li>
</ul>
</li>
<li>New DSR API
<ul>
<li>Added PassiveBuffer class to save maintenance packet entry for passive acknowledgment option</li>
<li>Added FindSourceEntry function in RreqTable class to keep track of route request entry received from same source node</li>
<li>Added NotifyDataReciept function in DsrRouting class to notify the data receipt of the next hop from link layer. This is used for the link layer acknowledgment.</li>
</ul>
</li>
<li>New Tag, PacketSocketTag, to carry the destination address of a packet and the packet type</li>
<li>New Tag, DeviceNameTag, to carry the ns3 device name from where a packet is coming</li>
<li>New Error Model, BurstError model, to determine which bursts of packets are errored corresponding to an underlying distribution, burst rate, and burst size</li>
</ul>
<h2>Changes to existing API:</h2>
<ul>
<li>ns3::Object and subclasses DoStart has been renamed to DoInitialize</li>
<li>ns3::Object and subclasses Start has been renamed to Initialize</li>
<li>EnergySource StartDeviceModels renamed to InitializeDeviceModels</li>
<li>A typo was fixed in an LTE variable name. The variable ns3::AllocationRetentionPriority::preemprionVulnerability was changed to preemptionVulnerability.</li>
<li>Changes in TestCase API
<ul>
<li>TestCase has new enumeration TestDuration containing QUICK, EXTENSIVE, TAKES_FOREVER</li>
<li>TestCase constructor now requires TestDuration, old constructor marked deprecated</li>
</ul>
</li>
<li>Changes in LTE API
<ul>
<li> User-visible LTE API
<ul>
<li>The previous LteHelper method ActivateEpsBearer has been now replaced by two alternative methods: ActivateDataRadioBearer (to be used when the EPC model is not used) and ActivateDedicatedEpsBearer (to be used when the EPC model is used). In the case where the EPC model is used, the default EPS bearer is not automatically activated without the need for a specific method to be called.</li>
</ul>
</li>
<li> Internal LTE API
<ul>
<li>EpcHelper added methods AddUe, AddX2Interface. Method AddEnb now requires a cellId. Signature of ActivateEpsBearer changed to void ActivateEpsBearer (Ptr<NetDevice> ueLteDevice, uint64_t imsi, Ptr<EpcTft> tft, EpsBearer bearer)</li>
<li>LteHelper added methods EnableDlPhyTraces, EnableUlPhyTraces, EnableDlTxPhyTraces, EnableUlTxPhyTraces, EnableDlRxPhyTraces, EnableUlRxPhyTraces</li>
<li>LteHelper removed methods EnableDlRlcTraces, EnableUlRlcTraces, EnableDlPdcpTraces, EnableUlPdcpTraces</li>
<li>RadioBearerStatsCalculator added methods (Set/Get)StartTime, (Set/Get)Epoch, RescheduleEndEpoch, EndEpoch</li>
<li>RadioBearerStatsCalculator removed methods StartEpoch, CheckEpoch</li>
<li>RadioBearerStatsCalculator methods UlTxPdu, DlRxPdu now require a cellId</li>
<li>EpcEnbApplication constructor now requires Ipv4Addresses enbS1uAddress and sgwS1uAddress as well as cellId</li>
<li>EpcEnbApplication added methods SetS1SapUser, GetS1SapProvider, SetS1apSapMme and GetS1apSapEnb</li>
<li>EpcEnbApplication removed method ErabSetupRequest</li>
<li>EpcSgwPgwApplication added methods SetS11SapMme, GetS11SapSgw, AddEnb, AddUe, SetUeAddress</li>
<li>lte-common.h new structs PhyTransmissionStatParameters and PhyReceptionStatParameters used in TracedCallbacks</li>
<li>LteControlMessage new message types DL_HARQ, RACH_PREAMBLE, RAR, MIB</li>
<li>LteEnbCmacSapProvider new methods RemoveUe, GetRachConfig, AllocateNcRaPreamble, AllocateTemporaryCellRnti</li>
<li>LteEnbPhy new methods GetLteEnbCphySapProvider, SetLteEnbCphySapUser, GetDlSpectrumPhy, GetUlSpectrumPhy, CreateSrsReport</li>
<li>LteEnbPhy methods DoSendMacPdu, DoSetTransmissionMode, DoSetSrsConfigurationIndex, DoGetMacChTtiDelay, DoSendLteControlMessage, AddUePhy, DeleteUePhy made private</li>
<li>LteEnbPhySapProvider removed methods SetBandwidth, SetTransmissionMode, SetSrsConfigurationIndex, SetCellId</li>
<li>LteEnbPhySapUser added methods ReceiveRachPreamble, UlInfoListElementHarqFeeback, DlInfoListElementHarqFeeback</li>
<li>LtePdcp added methods (Set/Get)Status</li>
<li>LtePdcp DoTransmitRrcPdu renamed DoTransmitPdcpSdu</li>
<li>LteUeRrc new enum State. New methods SetLteUeCphySapProvider, GetLteUeCphySapUser, SetLteUeRrcSapUser, GetLteUeRrcSapProvider, GetState, GetDlEarfcn, GetDlBandwidth, GetUlBandwidth, GetCellId, SetUseRlcSm . GetRnti made const.</li>
<li>LteUeRrc removed methods ReleaseRadioBearer, GetLcIdVector, SetForwardUpCallback, DoRrcConfigurationUpdateInd</li>
<li>LtePdcpSapProvider struct TransmitRrcPduParameters renamed TransmitPdcpSduParameters. Method TransmitRrcPdu renamed TransmitPdcpSdu </li>
<li>LtePdcpSapUser struct ReceiveRrcPduParameters renamed ReceivePdcpSduParameters. Method ReceiveRrcPdu renamed TransmitPdcpSdu</li>
<li>LtePdcpSpecificLtePdcpSapProvider method TransmitRrcPdu renamed TransmitPdcpSdu</li>
<li>LtePdcpSpecificLtePdcpSapUser method ReceiveRrcPdu renamed ReceivePdcpSdu. Method ReceiveRrcPdu renamed ReceivePdcpSdu</li>
<li>LtePhy removed methods DoSetBandwidth and DoSetEarfcn</li>
<li>LtePhy added methods ReportInterference and ReportRsReceivedPower</li>
<li>LteSpectrumPhy added methods SetHarqPhyModule, Reset, SetLtePhyDlHarqFeedbackCallback, SetLtePhyUlHarqFeedbackCallback, AddRsPowerChunkProcessor, AddInterferenceChunkProcessor</li>
<li>LteUeCphySapProvider removed methods ConfigureRach, StartContentionBasedRandomAccessProcedure, StartNonContentionBasedRandomAccessProcedure</li>
<li>LteUeMac added method AssignStreams</li>
<li>LteUeNetDevice methods GetMac, GetRrc, GetImsi made const</li>
<li>LteUeNetDevice new method GetNas</li>
<li>LteUePhy new methods GetLteUeCphySapProvider, SetLteUeCphySapUser, GetDlSpectrumPhy, GetUlSpectrumPhy, ReportInterference, ReportRsReceivedPower, ReceiveLteDlHarqFeedback</li>
<li>LteUePhy DoSendMacPdu, DoSendLteControlMessage, DoSetTransmissionMode, DoSetSrsConfigurationIndex made private</li>
<li>LteUePhySapProvider removed methods SetBandwidth, SetTransmissionMode, SetSrsConfigurationIndex</li>
<li>LteUePhySapProvider added method SendRachPreamble</li>
</ul>
</li>
</ul>
<li>AnimationInterface method EnableIpv4RouteTracking returns reference to calling AnimationInterface object</li>
<li>To make the API more uniform across the various
PropagationLossModel classes, the Set/GetLambda methods of the
FriisPropagationLossModel and TwoRayGroundPropagationLossModel
classes have been changed to Set/GetFrequency, and now a Frequency
attribute is exported which replaces the pre-existing Lambda
attribute. Any previous user code setting a value for Lambda should
be changed to set instead a value of Frequency = C / Lambda, with C
= 299792458.0. </li>
</ul>
<h2>Changes to build system:</h2>
<ul>
<li>Waf shipped with ns-3 has been upgraded to version 1.7.10 and custom
pkg-config generator has been replaced by Waf's builtin tool.
</li>
</ul>
<h2>Changed behavior:</h2>
<ul>
<li>DSR link layer notification has changed. The model originally used
"TxErrHeader" in Ptr<WifiMac> to indicate the transmission
error of a specific packet in link layer; however, it was not working
correctly. The model now uses a different path to implement
the link layer notification mechanism; specifically, looking into the
trace file to find packet receive events. If the model finds one
receive event for the data packet, it is used as the indicator for
successful data delivery.</li>
</ul>
<hr>
<h1>Changes from ns-3.15 to ns-3.16</h1>
@@ -58,7 +619,7 @@ us a note on ns-developers mailing list.</p>
<li>(Set/Is)Ipv6RecvTclass - tells the socket to pass information about IPv6 TCLASS up the stack (by adding SocketIpv6TclassTag to the packet).</li>
<li>(Set/Get)Ipv6HopLimit - sets Hop Limit field in the IPv6 headers.</li>
<li>(Set/Is)Ipv6RecvHopLimit - tells the socket to pass information about IPv6 HOPLIMIT up the stack (by adding SocketIpv6HoplimitTag to the packet).</li>
</ul>
</ul>
A user can call these functions to set/get the corresponding socket option. See examples/socket/socket-options-ipv4.cc and examples/socket/socket-options-ipv6.cc for examples.
</ul>
@@ -912,16 +1473,16 @@ For example, before:
<pre>
void
SimpleChannel::Send (Ptr&lt;Packet&gt; p, uint16_t protocol,
Mac48Address to, Mac48Address from,
Ptr&lt;SimpleNetDevice&gt; sender)
Mac48Address to, Mac48Address from,
Ptr&lt;SimpleNetDevice&gt; sender)
{
for (std::vector&lt;Ptr&lt;SimpleNetDevice&gt; &gt;::const_iterator i = m_devices.begin (); i != m_devices.end (); ++i)
{
Ptr&lt;SimpleNetDevice&gt; tmp = *i;
if (tmp == sender)
{
continue;
}
{
continue;
}
Simulator::ScheduleNow (&SimpleNetDevice::Receive, tmp, p->Copy (), protocol, to, from);
}
}
@@ -930,16 +1491,16 @@ After:
<pre>
void
SimpleChannel::Send (Ptr&lt;Packet&gt; p, uint16_t protocol,
Mac48Address to, Mac48Address from,
Ptr&lt;SimpleNetDevice&gt; sender)
Mac48Address to, Mac48Address from,
Ptr&lt;SimpleNetDevice&gt; sender)
{
for (std::vector&lt;Ptr&lt;SimpleNetDevice&gt; &gt;::const_iterator i = m_devices.begin (); i != m_devices.end (); ++i)
{
Ptr&lt;SimpleNetDevice&gt; tmp = *i;
if (tmp == sender)
{
continue;
}
{
continue;
}
Simulator::ScheduleWithContext (tmp->GetNode ()->GetId (), Seconds (0),
&SimpleNetDevice::Receive, tmp, p->Copy (), protocol, to, from);
}
+20
View File
@@ -0,0 +1,20 @@
# Makefile wrapper for waf
all:
./waf
# free free to change this part to suit your requirements
configure:
./waf configure --enable-examples --enable-tests
build:
./waf build
install:
./waf install
clean:
./waf clean
distclean:
./waf distclean
+565 -9
View File
@@ -9,6 +9,562 @@ http://www.nsnam.org including tutorials: http://www.nsnam.org/tutorials.html
Consult the file CHANGES.html for more detailed information about changed
API and behavior across ns-3 releases.
Release 3.21
============
Availability
------------
This release is not yet available.
Supported platforms
-------------------
- Fedora Core 20 (32/64 bit) with g++-4.8.2
- Ubuntu 14.04 (32/64 bit) with g++-4.8.2
- Ubuntu 12.04.4 (64 bit) with g++-4.6.3
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
- CentOS/RHEL 6.5 (64-bit) with g++-4.4.7
- OS X Mavericks 10.9 with Xcode 5.1.1 and clang-503.0.40
- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
New user-visible features
-------------------------
- The LTE module now supports the transport of the S1-U, X2-U and X2-C
interfaces over emulated links via the new helper class EmuEpcHelper.
- CommandLine can now provide a shorthand argument name for any
Attribute.
- Implemented support for Frequency Reuse algorithms in LTE module, as the
outcome of GSoC 2014 project.
The project also includes several sub-features, such as:
- implementation of Downlink Power Control
- implementation of Uplink Power Control
- new DL-CQI generation approach, which increases throughput if FR algorithms
are used
- seven options of Frequency Reuse algorithms: LteFrNoOpAlgorithm,
LteFrHardAlgorithm, LteFrStrictAlgorithm, LteFrSoftAlgorithm,
LteFfrSoftAlgorithm, LteFfrEnhancedAlgorithm, LteFfrDistributedAlgorithm
- updated RadioEnvironmentMapHelper. Now RadioEnvironmentMap can be generated
for Data or Control channel and for specified RbId, what is helpful when
using FR algorithms
- Added a CoDel queue model. CoDel queues measure and control the queue
traversal delay. The ns-3 implementation is a port of the Linux
implementation.
- Added support for TCP timestamp and window scale options, and added
ability to trace the TCP slow start threshold value.
- SimpleNetDevice and SimpleChannel (used for adding basic link effects
for testing of higher-layer protocols) have been extended to support
the option of broadcast or PointToPoint link semantics. The bandwidth
and link delay can be constrained, and it uses an output queue.
- SimpleNetDevice and SimpleChannel can be installed in a node through
a new helper: SimpleNetDeviceHelper.
- Implemented new PacketSocketServer and PacketSocketClient applications.
The primary use is in tests, to avoid using the ones from the
application module that also bring in a dependency on the internet module.
Bugs fixed
----------
- Bug 1673 - Config::Set/Connect does not search for attributes in parent class
- Bug 1762 - UE stuck in IDLE_CONNECTING because RRC CONN REQ is not transmitted
- Bug 1811 - basic traffic generator for network module
- Bug 1824 - L4 protocol sockets should support BindToNetDevice over IPv6
- Bug 1831 - TcpSocket SlowStartThreshold is not a TraceSource
- Bug 1851 - WifiRadioEnergyModel energy consumption values are taken from a 802.15.4 chip
- Bug 1854 - std::out_of_range Problem
- Bug 1858 - wireless examples not correctly recording packet reception
- Bug 1860 - TCP needs the Window Scale option
- Bug 1893 - issue in DoSchedUlTriggerReq with harq
- Bug 1911 - AODV cannot work on nodes with more than one netdevice
- Bug 1921 - Icmpv6L4Protocol::ForgeEchoRequest returns a malformed packet
- Bug 1930 - Use of invalid reference in OLSR RemoveLinkTuple
- Bug 1932 - NdiscCache entry is not failsafe on double neighbor probing.
- Bug 1937 - FlowMonitor fails to track multiplexed packets
- Bug 1942 - refactoring of lte-sinr-chunk-processor -> lte-chunk-processor
- Bug 1943 - Waveform generator signal duration calc error
- Bug 1951 - AODV does not update nexthop for 1-hop nodes
- Bug 1955 - The IPv4 identification field should be unique per (source, destination, protocol) tuple
- Bug 1960 - Wrong information on index range, about Node::GetDevice
- Bug 1961 - planetlab-tap-creator "variable set but not used"
- Bug 1963 - AODV can tag the same packet twice (and raise an assert)
- Bug 1964 - Integer overflow on UniformRandomVariable::GetInteger()
- Bug 1967 - LL Multicast is not compressed in the right way in IPHC
- Bug 1981 - PyViz shell not compatible with ipython >= 0.11
Known issues
------------
- Bug 1770 - The mesh module will crash if used for g++ version >= 4.8.1
in optimized mode, on a 32-bit Linux machine. Lowering the optimization
level to -O1 in this case can be used as a workaround.
Release 3.20
=============
Availability
------------
This release is available from:
http://www.nsnam.org/release/ns-allinone-3.20.tar.bz2
Supported platforms
-------------------
- Fedora Core 20 (32/64 bit) with g++-4.8.2
- Ubuntu 14.04 (32/64 bit) with g++-4.8.2
- Ubuntu 12.04.4 (64 bit) with g++-4.6.3
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
- CentOS/RHEL 6.5 (64-bit) with g++-4.4.7
- OS X Mavericks 10.9 with Xcode 5.1.1 and clang-503.0.40
- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
New user-visible features
-------------------------
- A new LrWpan model, providing initial support for IEEE 802.15.4 networks
- A new IPv6 routing protocol has been added: RIPng. This protocol is
an Interior Gateway Protocol and it is available in the Internet module.
- A new LTE MAC downlink scheduling algorithm named Channel and QoS Aware (CQA)
Scheduler is provided by the new ``ns3::CqaFfMacScheduler`` object.
- The Internet FlowMonitor can now track IPv6 packets.
- FlowMonitor no longer tracks multicast/broadcast packets, reflecting
its original design.
- FlowMonitor "SerializeToXml" functions are now directly available
from the helper.
- The SixLowPan model can now use uncompressed IPv6 headers. An option to
define the minimum compressed packet size has been added.
- Simplify output of Times in a specific unit; see Time::As ()
- Ipv6Extension::m_dropTrace has been removed. Ipv6L3Protocol::m_dropTrace
is now fired when appropriate.
- IPv4 identification field value is now dependent on the protocol field.
- Fixes to support Python >= 3.3 in ns3 Python bindings
- Enable selection of high precision int64x64_t implementation
at configure time, for debugging purposes.
Bugs fixed
----------
- Bug 1276 - optimize NistErrorRateModel
- Bug 1294 - New PeekU8 () and Read (Buffer::Iterator start, uint32_t size) methods in Buffer::Iterator
- Bug 1443 - MinDistance replaced by MinLoss in FriisPropagationLossModel, to
better handle conditions outside of the assumed far field region.
- Bug 1653 - Extension of CommandLine interface: restored operator << (CommandLine)
- Bug 1717 - Detect unsettable attributes
- Bug 1730 - no model library documentation for spectrum module
- Bug 1739 - The endpoint is not deallocated for UDP sockets
- Bug 1786 - os << int64x64_t prints un-normalized fractional values
- Bug 1787 - Runtime error when using AnimationInterface::EnablePacketMetadata() to fetch metadata of CSMA packet
- Bug 1792 - Parameter logger constructor
- Bug 1808 - FlowMon relies on IPv4's Identification field to trace packets
- Bug 1817 - IPv4 Identification field should consider protocol as well.
- Bug 1818 - FlowMonitor needs IPv6 support
- Bug 1820 - models library doc: make should not rm -rf figures
- Bug 1821 - Setting an interface to Down state will cause various asserts in IPv6
- Bug 1829 - Multiple TCP socket entries
- Bug 1837 - AODV crashes when using multiple interfaces
- Bug 1838 - FlowMonitorHelper must not be copied.
- Bug 1841 - FlowMonitor fails to install if IPv4 is not installed in the node
- Bug 1842 - FlowMonitor SerializeToXml<Something> should be called by the helper
- Bug 1843 - IPv6 extensions dropped packets do not fire L3 drop trace
- Bug 1845 - FlowMonitor should discard any broadcast/multicast packet
- Bug 1846 - IPv6 should send Destination Unreachable if no route is available
- Bug 1850 - TCP NewReno loss behavior
- Bug 1852 - cairo-wideint-private.h error cannot find definitions for fixed-width integral types
- Bug 1853 - NS_LOG_FUNCTION broken on OSX 10.9
- Bug 1855 - SixLowPanNetDevice is not correctly indexed
- Bug 1857 - Detect location of installed boost libraries
- Bug 1862 - NS_LOG="Time=*|prefix_time" causes stack overflow
- Bug 1868 - Optimized builds are sensitive to -fstrict-overflow
- Bug 1870 - Remove unnecessary AsInt functions
- Bug 1872 - Inside RREQ processing, in case of IP duplication, packet dropped instead of being forwarded
- Bug 1873 - Energy source checked to be aggregated to the node
- Bug 1874 - Ipv4L3Protocol::ProcessFragment: addressCombination and idProto identifiers not properly computed
- Bug 1876 - enable OLSR HNA table access
- Bug 1877 - constructors missing for PropagationLossModels
- Bug 1882 - int64x64 tests trigger valgrind bug
- Bug 1883 - IPv6 don't consider the prefix and network when choosing output address
- Bug 1885 - WifiSpectrumValue5MhzFactory::CreateRfFilter does not align with the used 5Mhz SpectrumModel
- Bug 1887 - Point-to-point traces should contain PPP headers
- Bug 1888 - COST231 propagation loss model: corrections
- Bug 1889 - PointToPointNetDevice: In some cases MacTxDrop trace is not called
- Bug 1890 - UdpClientTrace: MPEG frame size is squeezed into (insufficient) 16 bit integer
- Bug 1891 - UdpSocketImpl::GetSockName doesn't return the IPv6 address
- Bug 1894 - CqaFfMacScheduler needs an update
- Bug 1895 - IP header Source Address changed while forwarding RREQ
- Bug 1900 - Avoid floating point differences across platforms in test outputs
- Bug 1903 - Namespace usage in olsr-state.cc/h
- Bug 1907 - Add IsSupportedMcs method in YansWifiPhy
- Bug 1912 - Avoid multiple Wifi MacTxMiddle instances
- Bug 1913 - Avoid crash in Wifi BlockAckManager::GetNextPacket()
- Bug 1915 - BRITE channel delay is rounded to an integer
- Bug 1916 - RandomWalk2dMobilityMode default "Bounds" attribute is not a rectangle
- Bug 1919 - Strip trailing semi-colons from mobility trace files
- Bug 1920 - Remove DSR attributes so file can be re-loaded by config-store
- Bug 1922 - WAVE GetSsid should not be fatal
- Bug 1923 - Setting Active Probing to false in Wifi Sta has no effect
- Bug 1924 - sensing radius and CCA
Known issues
------------
- Bug 1770 - The mesh module will crash if used for g++ version >= 4.8.1
in optimized mode, on a 32-bit Linux machine. Lowering the optimization
level to -O1 in this case can be used as a workaround.
Release 3.19
=============
Availability
------------
This release is available from:
http://www.nsnam.org/release/ns-allinone-3.19.tar.bz2
Supported platforms
-------------------
These platforms have been tested; others may work also:
- Fedora Core 20 (32 bit) with g++-4.8.2
- Fedora Core 19 (32/64 bit) with g++-4.8.1
- Ubuntu 13.10 (64 bit) with g++-4.8.1
- Ubuntu 12.04.3 (32/64 bit) with g++-4.6.3
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
- OS X Mavericks 10.9 with Xcode 5.0.1 and clang-500.2.79
- OS X Mountain Lion 10.8.5 with Xcode 5 and g++-4.2.1
- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
New user-visible features
-------------------------
- Extension to UE measurements and improved handover algorithm models in LTE
module, as the outcome of GSoC 2013 project. The project also includes several
sub-features, such as:
- implementation of System Information Block Type 1 (SIB1);
- a new option for automatic UE attachment using Idle mode cell selection
procedure;
- improved configurability of UE measurements; and
- two options of handover algorithms for enabling automatic handover trigger
in LTE simulation: A2-A4-RSRQ and strongest cell (A3-RSRP).
- A new FixedRoomPositionAllocator has been added to the buildings
module. It allows one to generate a random position uniformly
distributed in the volume of a chosen room inside a chosen building.
- A new attribute ns3::LteRlcAm::TxOpportunityForRetxAlwaysBigEnough
allows to overcome the lack for re-segmentation in the RLC AM
implementation by assuming that the size of a TxOpportunity is
always big enough for the RLC AM PDU to be retransmitted.
- After some profiling, the code of LteMiErrorModel has been optimized
for speed, resulting in a significantly lower execution time of the
LTE model when used with the error model enabled.
- A new WiFi extension for vehicular simulation support is available in
the src/wave directory. The current code represents an interim capability
to realize an IEEE 802.11p-compliant device, but without the WAVE
extensions (which are planned for a later patch). The WaveNetDevice
modelled herein enforces that a WAVE-compliant physical layer (at 5.9 GHz)
is selected, and does not require any association between devices (similar
to an adhoc WiFi MAC), but is otherwise similar (at this time) to a
WifiNetDevice. WAVE capabililties of switching between control and
service channels, or using multiple radios, are not yet modelled.
- A new IPv6 over Low power Wireless Personal Area Networks (6LoWPAN) model
is available. Using ns-3's naming convention, the acronym is expanded
to SixLowPanNetDevice. The SixLowPanNetDevice is able to act as a
shim between IPv6 and a NetDevice, compressing IPv6 headers according
to RFCs 4944 and 6262. The SixLowPanNetDevice is meant to be used over
IEEE 802.15.4 NetDevices, but it can be used on other NetDevices as
well (see the manual for full details). This model precedes the
general availability of an 802.15.4 model, so must be run in conjunction
with a wired NetDevice model for now, or with experimental versions of
802.15.4 models.
- It is now possible to use Ipv6PacketInfoTag from UDP applications in the
same way as with Ipv4PacketInfoTag. See Doxygen for current limitations in
using Ipv[4,6]PacketInfoTag to set IP properties.
- Ipv[4,6]Interfaces not respecting the minimum MTU requirements (68 octects
for IPv4 and 1280 octects for IPv6) will be automatically set as Down.
- IPv6 addresses and routing tables are printed in a more conventional way,
closely matching the Linux "route -A inet6" command.
- Additional time units (Year, Day, Hour, Minute) were added to the time
value class that represents simulation time; the largest unit prior to
this addition was Second.
- A new parallel scheduling algorithm based on null messages, a common
parallel DES scheduling algorithm, has been added. The null message
scheduler has better scaling properties when running on some scenarios
with large numbers of nodes since it does not require a global
communication.
Bugs fixed
----------
- Bug 1496 - Option to print log level in NS_LOG messages, and documentation.
- Bug 1592 - Parsing bug in FlowMonitor example script
- Bug 1756 - RLC AM Mode State Variable Bug
- Bug 1763 - Message 3 should be sent using the UL GRANT in the RAR
- Bug 1778 - Implement TapBridge::IsLinkUp() function
- Bug 1777 - Implement the more direct way of "using" configuration of existing tap interface
- Bug 1776 - Improve CRC performance for CsmaNetDevice in emulation modes
- Bug 1788 - unused private field warning
- Bug 1789 - missing test condition for sigma in buildings-shadowing-test
- Bug 1796 - Ipv6PacketInfoTag is not filled by UdpSocketImpl::ForwardUp6
- Bug 1798 - Changing the rate of onOffApplication might stop transmission
- Bug 1802 - FlowMon header deserialization problem with IPv4 fragments
- Bug 1803 - Lookup /NodeList/4/DeviceList/0/LteEnbRrc/UeMap/0 got no matches
- Bug 1807 - Multiple bugs in Ipv4L3Protocol::LocalDeliver
- Bug 1810 - IP packets can be sent on NetDevices not respecting the minimum MTU requirements
- Bug 1814 - IPv6 Packet with length not multiple of 8 bytes are fragmented incorrectly.
- Bug 1815 - Python bindings compilation with clang compiler toolchain
- Bug 1816 - IPv4 fragmentation loses Packet tags
- Bug 1877 - constructor missing for <something>PropagationLossModels
Release 3.18.2
==============
ns-allinone-3.18.2 was released to include a bake configuration file update
for Direct Code Execution. The ns-3 code in this release was unchanged
from that of ns-3.18.1.
Release 3.18.1
==============
This release is mainly to provide updated compiler support (clang/LLVM)
and fix the Python API scanning facility. A few additional bug fixes
and new features are described below.
Availability
------------
This release is available from:
http://www.nsnam.org/release/ns-allinone-3.18.1.tar.bz2
Supported platforms
-------------------
These platforms have been tested; others may work also:
- Fedora Core 19 (32/64 bit) with g++-4.8.1
- Ubuntu 13.10 (64 bit) with g++-4.8.1
- Ubuntu 12.04.3 (32/64 bit) with g++-4.6.3
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
- OS X Mavericks 10.9 with Xcode 5.0.1 and clang-500.2.79
- OS X Mountain Lion 10.8.5 with Xcode 5 and g++-4.2.1
- FreeBSD 9.2-RELEASE (64 bit) with clang-3.3
New user-visible features
-------------------------
- It is now possible to randomize the time of the first beacon from an
access point. Use an attribute "EnableBeaconJitter" to enable/disable
this feature.
- A new FixedRoomPositionAllocator helper class is available; it
allows one to generate a random position uniformly distributed in the
volume of a chosen room inside a chosen building.
- Logging wildcards: allow "***" as synonym for "*=**" to turn on all logging.
- The log component list ("NS_LOG=print-list") is now printed alphabetically.
Bugs fixed
----------
- Bug 1779 - NS_UNUSED_GLOBAL not working in attribute test class declaration
- Bug 1766 - Fixes to wifi-hidden-terminal.cc example
- Bug 1722 - Avoid transmitting beacons concurrently
- Bug 1691 - RTS/CTS NAV reset prematurely
- Bug 1622 - Avoid waf hanging during apiscan
- Bug 1616 - WifiPhyStateHelper reports false CCA_BUSY times at State trace source
- Bug 1552 - Storing log name inside LogComponent class (NS_LOG) as std::string
- Bug 1011 - assert failed. file=../src/devices/wifi/dcf-manager.cc
- bug 945 - remove deprecated IEEE 802.11p code from wifi module
- Fix aliasing bug in optimized static builds
- Fix memory leak due to circular reference in MPI module
- Make wifi tests more robust to random variable perturbations
- Fix Time class doxygen
- Fix compilation with Clang 3.2 and newer versions, including Apple Xcode 5
- Miscellaneous NetAnim fixes
Release 3.18
=============
Availability
------------
This release is available from:
http://www.nsnam.org/release/ns-allinone-3.18.tar.bz2
Supported platforms
-------------------
These platforms have been tested; others may work also:
- Fedora Core 18 (32/64 bit) with g++-4.7.2
- Fedora Core 17 (32/64 bit) with g++-4.7.0
- Ubuntu 13.04 (32/64 bit) with g++-4.7.3
- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
- OS X Mountain Lion 10.8.3 with g++-4.2.1
- FreeBSD 9.1-RELEASE (64 bit) with g++-4.2.1
New user-visible features
-------------------------
- Time attributes can now be bounded. See attribute-test-suite.cc for an
example.
- Data collection components have been added to the stats module. These
components can be used to generate time series data in files and plots.
- IPv6 address class 2001:db8::/32 is now dropped by routers (RFC 3849).
- New generic hash function interface. Two hash functions are provided:
murmur3 (default), and the venerable FNV1a. See the Hash Functions
section in the Manual.
- New Mac16Address has been added, Mac64Address is now in-line with
Mac48Address and all the three can be used in IPv6 autoconfigure.
- Previously, the use of Building models was limited to the use of the
companion BuildingsMobilityModel. Now, any MobilityModel can be
used with Building models.
- The latest LTE module code by the LENA project has been merged,
including the following new features:
- PHY support for UE measurements (RSRP and RSRQ)
- RRC support for UE measurements (configuration, execution, reporting)
- Automatic Handover trigger based on RRC UE measurement reports
- IPv6 can now detect and use Path-MTU. See
examples/ipv6/fragmentation-ipv6-two-MTU.cc for an example.
- Radvd application have a new Helper. See the updated
examples/ipv6/radvd.cc for an example.
- 11n- It is now possible to create a high throughput (HT) node that used the new 11n data rates and preambles.
- It is now possible to request printing command line arguments to the
desired output stream using PrintHelp or operator <<
Bugs fixed
----------
- Bug 760 - IP address removal can be painful
- Bug 1190 - Suppress hello if bcast was sent within the last hello interval
- Bug 1296 - Enhancement in Ipv[4,6]RoutingHelper
- Bug 1390 - ICMPv6 Redirect are handled correctly only for /64 networks
- Bug 1522 - Hidden node scenario leads to ARP failure
- Bug 1584 - Old Association Request Timeouts are not canceled
- Bug 1629 - Make AODV Default to Disable Hello
- Bug 1643 - NdiscCache creation and existence checks
- Bug 1646 - ICMPv6 Redirect are sent from global address instead of link-local
- Bug 1662 - m_type not set for Ipv6OptionRouterAlertHeader
- Bug 1678 - C++11 compliance problem with std::pair"
- Bug 1682 - ./waf crashes on FC10
- Bug 1683 - IPv6 autoconfigured don't use *infinite* lifetimes
- Bug 1669 - ns-3 should support binding two and three (possibly more) arguments
- Bug 1675 - Throughput computation error in Wireless examples
- Bug 1687 - wscript features report doesn't respect NOCOLOR
- Bug 1688 - Routers should advertise themselves from the link-local address
- Bug 1689 - IPv6 shouldn't add a default gateway without checking the Router lifetime
- Bug 1690 - missing header files from wifi wscript
- Bug 1697 - ICMPv6 Redirect trigger contains multiple bugs
- Bug 1698 - mobility.SetPositionAllocator misses prefix "ns3::"
- Bug 1700 - Ipv6RawSocket does not honor the bound address when sending packets
- Bug 1701 - Ipv6StaticRouting: the source address should match the destination scope
- Bug 1702 - Ipv6InterfaceContainer::SetRouter should not always add the router as the default router.
- Bug 1703 - Nodes don't react to a DAD
- Bug 1712 - The IP (v4 and v6) forwarding needs a test
- Bug 1718 - Ipv4StaticRouting log component is misspelled
- Bug 1720 - IPv6 Fragmentation cause crashes
- Bug 1721 - Path MTU isn't handled properly
- Bug 1723 - name clash in ipv4-header.h with <termios.h>
- Bug 1727 - Ping6 should use a proper source address
- Bug 1728 - Radvd application is missing an Helper
- Bug 1731 - lte-phy-error-model passes unexpectedly
- Bug 1738 - strict aliasing compiler bug
- Bug 1742 - IPv6 HbH and Dst Extension Header size is not correctly calculated
- Bug 1752 - RadvdInterface m_defaultLifeTime is set to milliseconds instead of seconds
- Bug 1753 - Halting Issue with DistributedSimulatorImpl
- Bug 1754 - Missing GIL lock in generated callback destructor
Known issues
------------
In general, known issues are tracked on the project tracker available
at http://www.nsnam.org/bugzilla/
Release 3.17
============
Availability
------------
This release is available from:
http://www.nsnam.org/release/ns-allinone-3.17.tar.bz2
Supported platforms
-------------------
These platforms have been tested; others may work also:
- Fedora Core 18 (32/64 bit) with g++-4.7.2
- Fedora Core 17 (32/64 bit) with g++-4.7.0
- Ubuntu 13.04 (32/64 bit) with g++-4.7.3
- Ubuntu 12.10 (32/64 bit) with g++-4.6.3
- Ubuntu 12.04 (32/64 bit) with g++-4.6.3
- Ubuntu 10.04.4 LTS (64 bit) with g++-4.4.3
- OS X Mountain Lion 10.8.3 with g++-4.2.1
- FreeBSD 9.1-RELEASE (64 bit) with g++-4.2.1
New user-visible features
-------------------------
- new TCP Westwood and Westwood+ models
- new FdNetDevice model and associated helpers. The FdNetDevice is able
to read and write from a file descriptor. Various helpers are provided
to associate this descriptor with underlying devices or sockets on the
host operating system, including a packet socket for emulation, and
tap devices including a version specialized for use on PlanetLab.
- ns-3-click: it's now possible to (i) have Click pull random numbers from
ns-3 and (ii) have ns-3 set "defines" in Click via the simulation file
(see src/click/examples/nsclick-defines.cc).
- Waf shipped with ns-3 has been upgraded to version 1.7.10 and custom
pkg-config generator has been replaced by Waf's builtin tool.
- create-module.py script has been updated to work with waf 1.7 and support
for creating modules with names containing dashes has been added.
- the M5 release of the LTE module by the LENA project has been
merged; please see src/lte/RELEASE_NOTES for more detailed info
Bugs fixed
----------
- bug 1256 - Unnecessary SND.NXT advance, missing ACK for Out of Order segments
- bug 1318 - Ipv6L3Protocol::LocalDeliver can get stuck in an infinte loop
- bug 1409 - Add an attribute "SystemId" to configure the ID for MPI
- bug 1421 - Frequency dependent propagation loss models need uniform Frequency / Lambda attribute
- bug 1434 - DSR throughput not comparable to other protocols for manet example
- bug 1502 - Shutdown on tcp socket seems to misbehave
- bug 1503 - BlockAckManager infine loop
- bug 1517 - Waf clean/distclean doesn't remove the doc/html directory
- bug 1540 - Waf not finding click libraries
- bug 1549 - Test for NS_LOG
- bug 1556 - Uses of htonl making OpenFlow's match field error
- bug 1563 - Reduce valgrind test scope
- bug 1564 - Packet meta data isn't shown in dumbbell-animation.xml
- bug 1566 - WiFi SNR tag improvements
- bug 1568 - Deserialized addresses are implicity marked as Mac48Address
- bug 1569 - droptail_vs_red example doesn't run
- bug 1570 - Valgrind errors in new test examples
- bug 1574 - Node color overwritten, by mobility updates in netanim
- bug 1575 - Invert the y-axis in netanim
- bug 1576 - Frequency units HERTZ and MEGAHERTZ mix up
- bug 1577 - Typo in ascii picture in example aodv script
- bug 1579 - edca-txop-n fragmentation causes segfault
- bug 1582 - IPv6 raw socket return value is not like Linux socket
- bug 1585 - Length field of A-MSDU subframe header endianness
- bug 1586 - Building documentation fails if make runs in parallel
- bug 1588 - UdpEchoServer::HandleRead logs fail when using Ipv6
- bug 1589 - Bake - support pre-2.7 version of python
- bug 1590 - Bake - more autotools version support
- bug 1595 - Function declarations without implementations cause problems with dsr module's python bindings
- bug 1596 - Inet TopologyReader is skipping one link and duplicating another one
- bug 1600 - Icmpv6OptionLinkLayerAddress can only carry 48 bit addresses correctly
- bug 1601 - RttEstimator doesn't set the m_currentEstimatedRtt to m_initialEstimatedRtt on creation
- bug 1602 - waf build can break due to file collisions in higher-level directory
- bug 1603 - random-variable-stream-helper - this unavalable for static member functions
- bug 1607 - OnOffApplication over TCP with IPv6 support
- bug 1608 - DSR Network ACK is not handled correctly
- bug 1609 - Route Request table is needed
- bug 1612 - pyviz (visualizer) will not be installed
- bug 1613 - Can't build ns-3-dev with g++ 4.7.2
- bug 1615 - Adjusting OLSR HelloInterval Attribute results in no links
- bug 1618 - bake.py not detecting install of libxml2-dev on ubuntu
- bug 1623 - pybindgen rev809 is not able to build after Ubuntu 1210
- bug 1625 - ns-3-dev fails to build on Debian wheezy amd64
- bug 1626 - ipv6-only network can't use UDP or TCP
- bug 1632 - Prepend bake build directory to the guessed locations
that waf will look to find libraries
- bug 1633 - Bake - should not report that it is downloading qt4 when it is already installed
- bug 1635 - Small bug without Simulator::Destroy()
- bug 1636 - Compilation error flagged as unmet dependency
- bug 1637 - Bake calling apt-get for unpriviledged user
- bug 1639 - bake.py support for linux mint
- bug 1640 - bake needs to test for g++
- bug 1641 - bake reports autotools dependency, but needs automake
- bug 1661 - Variable ub1 defined but not used in ipv6-address.cc
Known issues
------------
In general, known issues are tracked on the project tracker available
at http://www.nsnam.org/bugzilla/
Release 3.16
============
@@ -761,7 +1317,7 @@ ns-3.9 has been tested on the following platforms:
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -918,7 +1474,7 @@ ns-3.8 has been tested on the following platforms:
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1062,7 +1618,7 @@ Unofficially supported platform
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1182,7 +1738,7 @@ ns-3.6 has been tested on the following platforms:
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1259,7 +1815,7 @@ ns-3.5 has been tested on the following platforms:
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1317,7 +1873,7 @@ ns-3.4 has been tested on the following platforms:
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1381,7 +1937,7 @@ ns-3.3 has been tested on the following platforms:
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1448,7 +2004,7 @@ ns-3.2 has been tested on the following platforms:
Not all ns-3 options are available on all platforms; consult the
wiki for more information:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
New user-visible features
-------------------------
@@ -1476,7 +2032,7 @@ New user-visible features
keep track of simulation data in persistent storage across multiple
runs (database and ascii file backends are available).
More information on the wiki:
http://www.nsnam.org/wiki/index.php/Statistical_Framework_for_Network_Simulation
http://www.nsnam.org/wiki/Statistical_Framework_for_Network_Simulation
API changes from ns-3.1
-----------------------
+9 -3
View File
@@ -1,3 +1,4 @@
from __future__ import print_function
import warnings
import sys
import os
@@ -6,6 +7,8 @@ from pybindgen import Module, FileCodeSink, param, retval, cppclass, typehandler
from pybindgen.module import MultiSectionFactory
import ns3modulegen_core_customizations
import logging
pybindgen.settings.wrapper_registry = pybindgen.settings.StdMapWrapperRegistry
import traceback
@@ -55,6 +58,9 @@ class MyMultiSectionFactory(MultiSectionFactory):
def main(argv):
logging.basicConfig()
logging.getLogger("pybindgen.typehandlers").setLevel(logging.DEBUG)
module_abs_src_path, target, extension_name, output_cc_file_name = argv[1:]
module_name = os.path.basename(module_abs_src_path)
out = MyMultiSectionFactory(output_cc_file_name)
@@ -71,11 +77,11 @@ def main(argv):
try:
from callbacks_list import callback_classes
except ImportError, ex:
print >> sys.stderr, "***************", repr(ex)
except ImportError as ex:
print("***************", repr(ex), file=sys.stderr)
callback_classes = []
else:
print >> sys.stderr, ">>>>>>>>>>>>>>>>", repr(callback_classes)
print(">>>>>>>>>>>>>>>>", repr(callback_classes), file=sys.stderr)
finally:
sys.path.pop(0)
@@ -1,3 +1,5 @@
from __future__ import print_function
import sys
import re
from pybindgen.typehandlers import base as typehandlers
@@ -5,6 +7,7 @@ from pybindgen import ReturnValue, Parameter
from pybindgen.cppmethod import CustomCppMethodWrapper, CustomCppConstructorWrapper
from pybindgen.typehandlers.codesink import MemoryCodeSink
from pybindgen.typehandlers import ctypeparser
from pybindgen.typehandlers.base import ForwardWrapperBase
from pybindgen import cppclass
import warnings
@@ -25,11 +28,13 @@ class SmartPointerTransformation(typehandlers.TypeTransformation):
def __init__(self):
super(SmartPointerTransformation, self).__init__()
self.rx = re.compile(r'(ns3::|::ns3::|)Ptr<([^>]+)>\s*$')
print("{0!r}".format(self), file=sys.stderr)
def _get_untransformed_type_traits(self, name):
m = self.rx.match(name)
is_const = False
if m is None:
print("{0!r} did not match".format(name), file=sys.stderr)
return None, False
else:
name1 = m.group(2).strip()
@@ -60,9 +65,9 @@ class SmartPointerTransformation(typehandlers.TypeTransformation):
## fix the ctype, add ns3:: namespace
orig_ctype, is_const = self._get_untransformed_type_traits(args[0])
if is_const:
correct_ctype = 'ns3::Ptr< %s const >' % orig_ctype[:-2]
correct_ctype = 'ns3::Ptr< {0} const >'.format(orig_ctype[:-2])
else:
correct_ctype = 'ns3::Ptr< %s >' % orig_ctype[:-2]
correct_ctype = 'ns3::Ptr< {0} >'.format(orig_ctype[:-2])
args = tuple([correct_ctype] + list(args[1:]))
handler = type_handler(*args, **kwargs)
@@ -83,58 +88,6 @@ typehandlers.param_type_matcher.register_transformation(transf)
del transf
class ArgvParam(Parameter):
"""
Converts a python list-of-strings argument to a pair of 'int argc,
char *argv[]' arguments to pass into C.
One Python argument becomes two C function arguments -> it's a miracle!
Note: this parameter type handler is not registered by any name;
must be used explicitly.
"""
DIRECTIONS = [Parameter.DIRECTION_IN]
CTYPES = []
def convert_c_to_python(self, wrapper):
raise NotImplementedError
def convert_python_to_c(self, wrapper):
py_name = wrapper.declarations.declare_variable('PyObject*', 'py_' + self.name)
argc_var = wrapper.declarations.declare_variable('int', 'argc')
name = wrapper.declarations.declare_variable('char**', self.name)
idx = wrapper.declarations.declare_variable('Py_ssize_t', 'idx')
wrapper.parse_params.add_parameter('O!', ['&PyList_Type', '&'+py_name], self.name)
#wrapper.before_call.write_error_check('!PyList_Check(%s)' % py_name) # XXX
wrapper.before_call.write_code("%s = (char **) malloc(sizeof(char*)*PyList_Size(%s));"
% (name, py_name))
wrapper.before_call.add_cleanup_code('free(%s);' % name)
wrapper.before_call.write_code('''
for (%(idx)s = 0; %(idx)s < PyList_Size(%(py_name)s); %(idx)s++)
{
''' % vars())
wrapper.before_call.sink.indent()
wrapper.before_call.write_code('''
PyObject *item = PyList_GET_ITEM(%(py_name)s, %(idx)s);
''' % vars())
#wrapper.before_call.write_error_check('item == NULL')
wrapper.before_call.write_error_check(
'!PyString_Check(item)',
failure_cleanup=('PyErr_SetString(PyExc_TypeError, '
'"argument %s must be a list of strings");') % self.name)
wrapper.before_call.write_code(
'%s[%s] = PyString_AsString(item);' % (name, idx))
wrapper.before_call.sink.unindent()
wrapper.before_call.write_code('}')
wrapper.before_call.write_code('%s = PyList_Size(%s);' % (argc_var, py_name))
wrapper.call_params.append(argc_var)
wrapper.call_params.append(name)
class CallbackImplProxyMethod(typehandlers.ReverseWrapperBase):
"""
Class that generates a proxy virtual method that calls a similarly named python method.
@@ -177,8 +130,11 @@ public:
}
virtual ~%s()
{
PyGILState_STATE __py_gil_state;
__py_gil_state = (PyEval_ThreadsInitialized() ? PyGILState_Ensure() : (PyGILState_STATE) 0);
Py_DECREF(m_callback);
m_callback = NULL;
PyGILState_Release(__py_gil_state);
}
virtual bool IsEqual(ns3::Ptr<const ns3::CallbackImplBase> other_base) const
@@ -200,7 +156,7 @@ public:
kwargs = {}
try:
return_type = ReturnValue.new(str(return_ctype), **kwargs)
except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError) as ex:
warnings.warn("***** Unable to register callback; Return value '%s' error (used in %s): %r"
% (callback_return, cls_name, ex),
Warning)
@@ -219,7 +175,7 @@ public:
kwargs = {}
try:
arguments.append(Parameter.new(str(param_ctype), arg_name, **kwargs))
except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError), ex:
except (typehandlers.TypeLookupError, typehandlers.TypeConfigurationError) as ex:
warnings.warn("***** Unable to register callback; parameter '%s %s' error (used in %s): %r"
% (arg_type, arg_name, cls_name, ex),
Warning)
@@ -237,7 +193,7 @@ public:
class PythonCallbackParameter(Parameter):
"Class handlers"
CTYPES = [cls_name]
print >> sys.stderr, "***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name)
print("***** registering callback handler: %r" % ctypeparser.normalize_type_string(cls_name), file=sys.stderr)
DIRECTIONS = [Parameter.DIRECTION_IN]
PYTHON_CALLBACK_IMPL_NAME = class_name
TEMPLATE_ARGS = template_parameters
@@ -422,11 +378,24 @@ def add_std_ofstream(module):
add_std_ios_openmode(module)
def add_std_ios_openmode(module):
import pybindgen.typehandlers.base
for alias in "std::_Ios_Openmode", "std::ios::openmode":
pybindgen.typehandlers.base.param_type_matcher.add_type_alias(alias, "int")
class IosOpenmodeParam(Parameter):
DIRECTIONS = [Parameter.DIRECTION_IN]
CTYPES = ['std::ios::openmode', 'std::_Ios_Openmode']
def convert_c_to_python(self, wrapper):
assert isinstance(wrapper, ReverseWrapperBase)
wrapper.build_params.add_parameter('i', [self.value])
def convert_python_to_c(self, wrapper):
assert isinstance(wrapper, ForwardWrapperBase)
name = wrapper.declarations.declare_variable("std::ios::openmode", self.name, self.default_value)
wrapper.parse_params.add_parameter('i', ['&'+name], self.name, optional=bool(self.default_value))
wrapper.call_params.append(name)
def add_std_ios_openmode(module):
for flag in 'in', 'out', 'ate', 'app', 'trunc', 'binary':
module.after_init.write_code('PyModule_AddIntConstant(m, (char *) "STD_IOS_%s", std::ios::%s);'
% (flag.upper(), flag))
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"
+49 -60
View File
@@ -6,25 +6,17 @@ import subprocess
import shutil
import sys
import Task
import Options
import Configure
import TaskGen
import Logs
import Build
import Utils
from waflib import Task, Options, Configure, TaskGen, Logs, Build, Utils, Errors
from waflib.Errors import WafError
# feature = TaskGen.feature
# after = TaskGen.after
## https://launchpad.net/pybindgen/
REQUIRED_PYBINDGEN_VERSION = (0, 15, 0, 809)
REQUIRED_PYBINDGEN_VERSION = (0, 17, 0, 876)
REQUIRED_PYGCCXML_VERSION = (0, 9, 5)
from TaskGen import feature, after
import Task
RUN_ME=-3
def add_to_python_path(path):
if os.environ.get('PYTHONPATH', ''):
@@ -38,7 +30,7 @@ def set_pybindgen_pythonpath(env):
def options(opt):
opt.tool_options('python')
opt.load('python')
opt.add_option('--disable-python',
help=("Don't build Python bindings."),
action="store_true", default=False,
@@ -55,6 +47,10 @@ def options(opt):
opt.add_option('--with-python',
help=('Path to the Python interpreter to use.'),
default=None, dest='with_python', type="string")
opt.add_option('--no32bit-scan',
help=("Don't scan for the 32-bit variant of the bindings on 64-bit platforms."),
action="store_true", default=False,
dest='no32bit_scan')
def configure(conf):
@@ -76,7 +72,7 @@ def configure(conf):
available_modules.sort()
all_modules_enabled = (enabled_modules == available_modules)
conf.check_tool('misc', tooldir=['waf-tools'])
conf.load('misc', tooldir=['waf-tools'])
if sys.platform == 'cygwin':
conf.report_optional_feature("python", "Python Bindings", False,
@@ -91,20 +87,20 @@ def configure(conf):
conf.env.PYTHON = Options.options.with_python
try:
conf.check_tool('python')
except Configure.ConfigurationError, ex:
conf.load('python')
except Errors.ConfigurationError, ex:
conf.report_optional_feature("python", "Python Bindings", False,
"The python interpreter was not found")
return
try:
conf.check_python_version((2,3))
except Configure.ConfigurationError, ex:
except Errors.ConfigurationError, ex:
conf.report_optional_feature("python", "Python Bindings", False,
"The python found version is too low (2.3 required)")
return
try:
conf.check_python_headers()
except Configure.ConfigurationError, ex:
except Errors.ConfigurationError, ex:
conf.report_optional_feature("python", "Python Bindings", False,
"Python library or headers missing")
return
@@ -161,7 +157,7 @@ def configure(conf):
try:
conf.check_python_module('pybindgen')
except Configure.ConfigurationError:
except Errors.ConfigurationError:
Logs.warn("pybindgen missing => no python bindings")
conf.report_optional_feature("python", "Python Bindings", False,
"PyBindGen missing")
@@ -169,7 +165,7 @@ def configure(conf):
else:
out = subprocess.Popen([conf.env['PYTHON'][0], "-c",
"import pybindgen.version; "
"print '.'.join([str(x) for x in pybindgen.version.__version__])"],
"print('.'.join([str(x) for x in pybindgen.version.__version__]))"],
stdout=subprocess.PIPE).communicate()[0]
pybindgen_version_str = out.strip()
pybindgen_version = tuple([int(x) for x in pybindgen_version_str.split('.')])
@@ -197,9 +193,9 @@ int main ()
try:
ret = conf.run_c_code(code=test_program,
env=conf.env.copy(), compile_filename='test.cc',
env=conf.env.derive(), compile_filename='test.cc',
features='cxx cprogram', execute=False)
except Configure.ConfigurationError:
except Errors.ConfigurationError:
ret = 1
conf.msg('Checking for types %s and %s equivalence' % (t1, t2), (ret and 'no' or 'yes'))
return not ret
@@ -250,7 +246,7 @@ int main ()
## Check for pygccxml
try:
conf.check_python_module('pygccxml')
except Configure.ConfigurationError:
except Errors.ConfigurationError:
conf.report_optional_feature("pygccxml", "Python API Scanning Support", False,
"Missing 'pygccxml' Python module")
return
@@ -318,15 +314,15 @@ def get_module_path(bld, module):
raise ValueError("Module %r not found" % module)
return ns3headers.path.abspath()
class apiscan_task(Task.TaskBase):
class apiscan_task(Task.Task):
"""Uses gccxml to scan the file 'everything.h' and extract API definitions.
"""
after = 'gen_ns3_module_header ns3header'
before = 'cc cxx command'
before = 'cxx command'
color = "BLUE"
def __init__(self, curdirnode, env, bld, target, cflags, module):
self.bld = bld
super(apiscan_task, self).__init__(generator=self)
super(apiscan_task, self).__init__(generator=self, env=env)
self.curdirnode = curdirnode
self.env = env
self.target = target
@@ -336,7 +332,21 @@ class apiscan_task(Task.TaskBase):
def display(self):
return 'api-scan-%s\n' % (self.target,)
def uid(self):
try:
return self.uid_
except AttributeError:
m = Utils.md5()
up = m.update
up(self.__class__.__name__.encode())
up(self.curdirnode.abspath().encode())
up(self.target)
self.uid_ = m.digest()
return self.uid_
def run(self):
self.inputs = [self.bld.bldnode.find_resource("ns3/{0}-module.h".format(self.module))]
self.outputs = [self.bld.srcnode.find_resource("src/{}/bindings/modulegen__{}.py".format(self.module, self.target))]
top_builddir = self.bld.bldnode.abspath()
module_path = get_module_path(self.bld, self.module)
headers_map = get_headers_map(self.bld)
@@ -359,6 +369,12 @@ class apiscan_task(Task.TaskBase):
retval = scan.wait()
return retval
def runnable_status(self):
# By default, Waf Task will skip running a task if the signature of
# the build has not changed. We want this task to always run if
# invoked by the user, particularly since --apiscan=all will require
# invoking this task many times, once per module.
return RUN_ME
def get_modules_and_headers(bld):
"""
@@ -389,33 +405,9 @@ def get_modules_and_headers(bld):
class python_scan_task_collector(Task.TaskBase):
"""Tasks that waits for the python-scan-* tasks to complete and then signals WAF to exit
"""
after = 'apiscan'
before = 'cc cxx'
color = "BLUE"
def __init__(self, curdirnode, env, bld):
self.bld = bld
super(python_scan_task_collector, self).__init__(generator=self)
self.curdirnode = curdirnode
self.env = env
def display(self):
return 'python-scan-collector\n'
def run(self):
# signal stop (we generated files into the source dir and WAF
# can't cope with it, so we have to force the user to restart
# WAF)
self.bld.producer.stop = 1
return 0
class gen_ns3_compat_pymod_task(Task.Task):
"""Generates a 'ns3.py' compatibility module."""
before = 'cc cxx'
before = 'cxx'
color = 'BLUE'
def run(self):
@@ -437,8 +429,6 @@ def build(bld):
return
env = bld.env
curdir = bld.path.abspath()
set_pybindgen_pythonpath(env)
if Options.options.apiscan:
@@ -450,7 +440,9 @@ def build(bld):
else:
import struct
if struct.calcsize('I') == 4 and struct.calcsize('L') == 8 and struct.calcsize('P') == 8:
scan_targets.extend([('gcc_ILP32', '-m32'), ('gcc_LP64', '-m64')])
if not Options.options.no32bit_scan:
scan_targets.append(('gcc_ILP32', '-m32'))
scan_targets.append(('gcc_LP64', '-m64'))
elif struct.calcsize('I') == 4 and struct.calcsize('L') == 4 and struct.calcsize('P') == 4:
scan_targets.append(('gcc_ILP32', ''))
else:
@@ -477,7 +469,6 @@ def build(bld):
group = bld.get_group(bld.current_group)
for module in scan_modules:
group.append(apiscan_task(bld.path, env, bld, target, cflags, module))
group.append(python_scan_task_collector(bld.path, env, bld))
return
@@ -489,9 +480,7 @@ def build(bld):
grp = bld.get_group(bld.current_group)
grp.append(task)
bld.new_task_gen(features='copy',
source="ns__init__.py",
target='ns/__init__.py')
bld(features='copy', source="ns__init__.py", target='ns/__init__.py')
bld.install_as('${PYTHONARCHDIR}/ns/__init__.py', 'ns__init__.py')
+1 -1
View File
@@ -3,7 +3,7 @@ build system (http://www.freehackers.org/~tnagy/waf.html)
Note: We've added a wiki page with more complete build instructions
than the quick ones you find below:
http://www.nsnam.org/wiki/index.php/Installation
http://www.nsnam.org/wiki/Installation
=== Installing Waf ===
+161 -45
View File
@@ -1,4 +1,6 @@
# Doxyfile 1.8.1.1
# -*-sh-*-
# Doxyfile 1.8.3.1
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
@@ -126,7 +128,9 @@ FULL_PATH_NAMES = YES
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
# path to strip.
# path to strip. Note that you specify absolute paths here, but also
# relative paths, which will be relative from the directory where doxygen is
# started.
STRIP_FROM_PATH =
@@ -151,7 +155,7 @@ SHORT_NAMES = NO
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
JAVADOC_AUTOBRIEF = NO
JAVADOC_AUTOBRIEF = YES
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
@@ -159,7 +163,7 @@ JAVADOC_AUTOBRIEF = NO
# will behave just like regular Qt-style comments (thus requiring
# an explicit \brief command for a brief description.)
QT_AUTOBRIEF = NO
QT_AUTOBRIEF = YES
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
# treat a multi-line C++ special comment block (i.e. a block of //! or ///
@@ -193,9 +197,20 @@ TAB_SIZE = 4
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
ALIASES = \
"intern=\internal \par \b Internal:" \
"pname{1}=<span class=\"params\"><span class=\"paramname\">\1</span></span>"
ALIASES =
# Link to bug tracker
ALIASES += bugid{1}="<a href=\"http://www.nsnam.org/bugzilla/show_bug.cgi?id=\1\">Bug \1</a>"
# Set off \internal docs
ALIASES += internal="\par \b Internal:"
# Typeset parameter name in docs as in the "Parameters:" list
# Usage: /** \param [in/out] tag If found, \pname{tag} is ... */
ALIASES += pname{1}="<span class=\"params\"><span class=\"paramname\">\1</span></span>"
# Link to RFC's
ALIASES += RFC{1}="<a href=\"http://datatracker.ietf.org/doc/rfc\1/\">RFC \1</a>"
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding
@@ -231,14 +246,15 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this
# tag. The format is ext=language, where ext is a file extension, and language
# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension,
# and language is one of the parsers supported by doxygen: IDL, Java,
# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
# C++. For instance to make doxygen treat .inc files as Fortran files (default
# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
# that for custom extensions you also need to set FILE_PATTERNS otherwise the
# files are not read by doxygen.
EXTENSION_MAPPING =
@@ -251,6 +267,13 @@ EXTENSION_MAPPING =
MARKDOWN_SUPPORT = YES
# When enabled doxygen tries to link words that correspond to documented classes,
# or namespaces to their corresponding documentation. Such a link can be
# prevented in individual cases by by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
@@ -271,10 +294,10 @@ CPP_CLI_SUPPORT = NO
SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate getter
# and setter methods for a property. Setting this option to YES (the default)
# will make doxygen replace the get and set methods by a property in the
# documentation. This will only work if the methods are indeed getting or
# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES (the
# default) will make doxygen replace the get and set methods by a property in
# the documentation. This will only work if the methods are indeed getting or
# setting a simple type. If this is not the case, or you want to show the
# methods anyway, you should set this option to NO.
@@ -285,7 +308,7 @@ IDL_PROPERTY_SUPPORT = YES
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
DISTRIBUTE_GROUP_DOC = NO
DISTRIBUTE_GROUP_DOC = YES
# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
# the same type (for instance a group of public functions) to be put as a
@@ -335,7 +358,7 @@ TYPEDEF_HIDES_STRUCT = YES
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
# corresponding to a cache size of 2^16 = 65536 symbols.
SYMBOL_CACHE_SIZE = 0
SYMBOL_CACHE_SIZE = 1
# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
@@ -364,7 +387,8 @@ EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
# scope will be included in the documentation.
EXTRACT_PACKAGE = NO
@@ -535,7 +559,8 @@ GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
# documentation sections, marked by \if section-label ... \endif
# and \cond section-label ... \endcond blocks.
ENABLED_SECTIONS =
@@ -593,7 +618,8 @@ LAYOUT_FILE =
# requires the bibtex tool to be installed. See also
# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
# feature you need bibtex and perl available in the search path.
# feature you need bibtex and perl available in the search path. Do not use
# file names with spaces, bibtex cannot handle them.
CITE_BIB_FILES =
@@ -660,6 +686,7 @@ WARN_LOGFILE = doc/doxygen.log
INPUT = doc/modules \
doc/main.h \
doc/introspected-doxygen.h \
examples \
utils \
src
@@ -727,14 +754,18 @@ EXCLUDE_SYMBOLS =
EXAMPLE_PATH = src/aodv/examples \
src/bridge/examples \
src/brite/examples \
src/buildings/examples \
src/click/examples \
src/config-store/examples \
src/core/examples \
src/csma/examples \
src/csma-layout/examples \
src/dsdv/examples \
src/dsr/examples \
src/emu/examples \
src/energy/examples \
src/fd-net-device/examples \
src/flow-monitor/examples \
src/internet/examples \
src/lte/examples \
@@ -749,8 +780,8 @@ EXAMPLE_PATH = src/aodv/examples \
src/point-to-point/examples \
src/propagation/examples \
src/spectrum/examples \
src/stats/examples \
src/tap-bridge/examples \
src/tools/examples \
src/topology-read/examples \
src/uan/examples \
src/virtual-net-device/examples \
@@ -777,7 +808,12 @@ EXAMPLE_RECURSIVE = NO
# the \image command).
IMAGE_PATH = doc/ns3_html_theme/static \
src/mesh/doc/
src/lte/doc/source/figures \
src/lte/test/reference \
src/mesh/doc \
src/netanim/doc/figures \
src/stats/doc \
src/visualizer/visualizer/resource
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
@@ -815,6 +851,13 @@ FILTER_SOURCE_FILES = NO
FILTER_SOURCE_PATTERNS =
# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page (index.html).
# This can be useful if you have a project on for instance GitHub and want reuse
# the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE =
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
@@ -936,12 +979,22 @@ HTML_FOOTER = doc/ns3_html_theme/ns3_doxy_footer.html
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
# will generate a default style sheet. Note that doxygen will try to copy
# the style sheet file to the HTML output directory, so don't put your own
# style sheet in the HTML output directory as well, or it will be erased!
# fine-tune the look of the HTML output. If left blank doxygen will
# generate a default style sheet. Note that it is recommended to use
# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
# tag will in the future become obsolete.
HTML_STYLESHEET = doc/ns3_html_theme/static/ns3_stylesheet.css
HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
# user-defined cascading style sheet that is included after the standard
# style sheets created by doxygen. Using this option one can overrule
# certain style aspects. This is preferred over using HTML_STYLESHEET
# since it does not replace the standard style sheet and is therefor more
# robust against future updates. Doxygen will copy the style sheet file to
# the output directory.
HTML_EXTRA_STYLESHEET = doc/ns3_html_theme/static/ns3_stylesheet.css
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
@@ -950,8 +1003,7 @@ HTML_STYLESHEET = doc/ns3_html_theme/static/ns3_stylesheet.css
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
# the files will be copied as-is; there are no commands or markers available.
HTML_EXTRA_FILES = doc/ns3_html_theme/static/doxygen.css \
doc/ns3_html_theme/static/bar-top.png \
HTML_EXTRA_FILES = doc/ns3_html_theme/static/bar-top.png \
doc/ns3_html_theme/static/drop-down-menu.js \
doc/ns3_html_theme/static/favicon.ico \
doc/ns3_html_theme/static/menu-bgr-400.png \
@@ -1034,9 +1086,9 @@ DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.nsnam.ns3
# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
# identify the documentation publisher. This should be a reverse domain-name
# style string, e.g. com.mycompany.MyDocSet.documentation.
DOCSET_PUBLISHER_ID = org.nsnam.ns3
@@ -1221,6 +1273,13 @@ FORMULA_TRANSPARENT = YES
USE_MATHJAX = NO
# When MathJax is enabled you can set the default output format to be used for
# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
# SVG. The default value is HTML-CSS, which is slower, but has the best
# compatibility.
MATHJAX_FORMAT = HTML-CSS
# When MathJax is enabled you need to specify the location relative to the
# HTML output directory using the MATHJAX_RELPATH option. The destination
# directory should contain the MathJax.js script. For instance, if the mathjax
@@ -1231,7 +1290,7 @@ USE_MATHJAX = NO
# However, it is strongly recommended to install a local
# copy of MathJax from http://www.mathjax.org before deployment.
MATHJAX_RELPATH = http://www.mathjax.org/mathjax
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
# names that should be enabled during MathJax rendering.
@@ -1249,15 +1308,55 @@ MATHJAX_EXTENSIONS =
SEARCHENGINE = YES
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a PHP enabled web server instead of at the web client
# using Javascript. Doxygen will generate the search PHP script and index
# file to put on the web server. The advantage of the server
# based approach is that it scales better to large projects and allows
# full text search. The disadvantages are that it is more difficult to setup
# and does not have live searching capabilities.
# implemented using a web server instead of a web client using Javascript.
# There are two flavours of web server based search depending on the
# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
# searching and an index file used by the script. When EXTERNAL_SEARCH is
# enabled the indexing and searching needs to be provided by external tools.
# See the manual for details.
SERVER_BASED_SEARCH = NO
# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
# which needs to be processed by an external indexer. Doxygen will invoke an
# external search engine pointed to by the SEARCHENGINE_URL option to obtain
# the search results. Doxygen ships with an example indexer (doxyindexer) and
# search engine (doxysearch.cgi) which are based on the open source search engine
# library Xapian. See the manual for configuration details.
EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will returned the search results when EXTERNAL_SEARCH is enabled.
# Doxygen ships with an example search engine (doxysearch) which is based on
# the open source search engine library Xapian. See the manual for configuration
# details.
SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
# SEARCHDATA_FILE tag the name of this file can be specified.
SEARCHDATA_FILE = searchdata.xml
# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
# projects and redirect the results back to the right project.
EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
# all added to the same external search index. Each project needs to have a
# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
# of to a relative location where the documentation can be found.
# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
@@ -1543,6 +1642,9 @@ SEARCH_INCLUDES = YES
INCLUDE_PATH =
# Allow doxygen to find generated include files, such as ns3/core-config.h
INCLUDE_PATH += build
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
@@ -1558,8 +1660,22 @@ INCLUDE_FILE_PATTERNS =
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED = NS3_ASSERT_ENABLE \
NS3_LOG_ENABLE
# ns-3:
#
# We predefine NS3_ASSERT_ENABLE and NS3_LOG_ENABLE so doxygen sees
# the working definitions. (These are normally defined by waf
# in ns3/core-config.h)
#
# Function like macros at file global scope typically need to be here,
# since doxygen confuses invocations of these macros for function
# definitions.
PREDEFINED = \
NS3_ASSERT_ENABLE \
NS3_LOG_ENABLE \
NS_LOG_COMPONENT_DEFINE()=1 \
NS_LOG_COMPONENT_DEFINE_MASK()=1 \
NS_OBJECT_ENSURE_REGISTERED()=1 \
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
+226 -32
View File
@@ -1,59 +1,221 @@
#!/bin/bash
# Process doxygen.warnings.log to generate sorted list of top offenders
# Process doxygen log to generate sorted list of top offenders.
#
# Flag to skip running doxygen
skipdoxy=${1:-""}
me=$(basename $0)
DIR="$(dirname $0)"
ROOT="$(hg root)"
DIR=`dirname $0`
ROOT=`hg root`
# Final resting place for the log file
log=$DIR/doxygen.warnings.log
# Known log files
STANDARDLOGFILE=doxygen.log
WARNINGSLOGFILE=doxygen.warnings.log
# Default choice: generate it
LOG="$DIR/$WARNINGSLOGFILE"
# First, we have to modify doxygen.conf to generate all the warnings
# (We also suppress dot graphs, so shorten the run time.)
# Options ------------------------------
#
if [ "$skipdoxy" == "" ]; then
function usage
{
cat <<-EOF
Usage: $me [-eth] [-f <log-file> | -l | -s] [-m <module> | -F <regex>]
Run doxygen to generate all errors; report error counts
by module and file.
The default behavior is to modify doxygen.conf temporarily to
report all undocumented elements, and to reduce the run time.
The output of this special run is kept in doc/$WARNINGSLOGFILE.
The -e and -t options exclude examples and test directories
from the counts. The -m option only includes a specific module.
The -F option only includes files (or warnings) matching the <regex>.
The -m and -F options append the relevant warnings after the
numerical report. These can be used in any combination.
-e Filter out warnings from */examples/*
-t Filter out warnings from */test/*
-m Only include files matching src/<module>
-F Only include files matching the <regex>
The -f, -l, and -s options skip the doxygen run altogether.
The first two use a specified or the standard log file;
the -s option uses the warnings log from a prior run.
Only the first of -f <log-file>, -s, or -l will have effect.
-f Skip doxygen run; use existing <log-file>.
-s Skip doxygen run; use existing warnings log doc/$WARNINGSLOGFILE
-l Skip doxygen run; use the normal doxygen log doc/$STANDARDLOGFILE
-h Print this usage message
EOF
exit 1
}
# Argument processing ------------------
#
# -f argument
usefilearg=0
logfilearg=
# -l
usestandard=0
# skip doxygen run; using existing log file
SKIPDOXY=0
# Filtering flags
filter_examples=0
filter_test=0
filter_module=""
filter_regex=""
while getopts :etm:F:lF:sh option ; do
case $option in
(e) filter_examples=1 ;;
(t) filter_test=1 ;;
(m) filter_module="$OPTARG" ;;
(F) filter_regex="$OPTARG" ;;
(l) usestandard=1 ;;
(f) usefilearg=1
logfilearg="$OPTARG"
;;
(s) usefilearg=1
logfilearg="$DIR/$WARNINGSLOGFILE"
;;
(h) usage ;;
(:) echo "$me: Missing argument to -$OPTARG" ; usage ;;
(\?) echo "$me: Invalid option: -$OPTARG" ; usage ;;
esac
done
function checklogfile
{
if [ -e "$1" ] ; then
SKIPDOXY=1
LOG="$1"
else
echo "$me: log file $1 does not exist."
exit 1
fi
}
# Which log file
if [[ $usefilearg -eq 1 && "${logfilearg:-}" != "" ]] ; then
checklogfile "$logfilearg"
elif [ $usestandard -eq 1 ]; then
checklogfile "$DIR/$STANDARDLOGFILE"
fi
# Run doxygen -------------------------
#
if [ $SKIPDOXY -eq 1 ]; then
echo
echo "Skipping doxygen run, using existing log file $LOG"
else
# Run introspection, which may require a build
(cd "$ROOT" && ./waf --run print-introspected-doxygen >doc/introspected-doxygen.h)
# Modify doxygen.conf to generate all the warnings
# (We also suppress dot graphs, so shorten the run time.)
conf=$DIR/doxygen.conf
sed -i.bak -E '/^EXTRACT_ALL |^HAVE_DOT |^WARNINGS /s/YES/no/' $conf
rm -f $conf.bak
echo
echo -n "Rebuilding doxygen docs with full errors..."
(cd $ROOT && ./waf --doxygen >/dev/null 2>&1)
(cd "$ROOT" && ./waf --doxygen >/dev/null 2>&1)
status=$?
hg revert $conf
rm -f $conf
mv -f $conf.bak $conf
if [ "$status" = "0" ]; then
if [ $status -eq 0 ]; then
echo "Done."
else
echo "FAILED."
exit 1
fi
mv $DIR/doxygen.log $log
cp -f "$DIR/$STANDARDLOGFILE" "$DIR/$WARNINGSLOGFILE"
else
echo "Skipping doxygen run, using existing log file $log"
fi
# Log filters --------------------------
#
# Analyze the log
# Filter regular expression for -m and -F
filter_inRE=""
if [ "$filter_module" != "" ] ; then
filter_inRE="src/$filter_module"
fi
if [ "$filter_regex" != "" ] ; then
filter_inRE="${filter_inRE:-}${filter_inRE:+\\|}$filter_regex"
fi
# Filter regular expression for -e and -t
filter_outRE=""
if [ $filter_examples -eq 1 ]; then
filter_outRE="/examples/"
fi
if [ $filter_test -eq 1 ]; then
filter_outRE="${filter_outRE:-}${filter_outRE:+\\|}/test/"
fi
if [ "${filter_inRE:-}" != "" ] ; then
echo "Filtering in \"$filter_inRE\""
fi
if [ "${filter_outRE:-}" != "" ] ; then
echo "Filtering out \"$filter_outRE\""
fi
echo
# Filter log file
function filter_log
{
local flog;
flog=$( cat "$LOG" | grep "^$ROOT" )
if [ "${filter_inRE:-}" != "" ] ; then
flog=$( echo "$flog" | grep "$filter_inRE" )
fi
if [ "${filter_outRE:-}" != "" ] ; then
flog=$( echo "$flog" | grep -v "$filter_outRE" )
fi
echo "$flog"
}
# Analyze the log ----------------------
#
# List of module directories (e.g, "src/core/model")
undocmods=$( \
grep "^$ROOT" "$log" | \
filter_log | \
cut -d ':' -f 1 | \
sed "s|$ROOT||g" | \
cut -d '/' -f 2-4 | \
sed "s|$ROOT/||g" | \
cut -d '/' -f 1-3 | \
sort | \
uniq -c | \
sort -nr \
)
# Number of directories
modcount=$( \
@@ -65,24 +227,24 @@ modcount=$( \
# For a function with multiple undocumented parameters,
# Doxygen prints the additional parameters on separate lines,
# so they don't show up in the totals above.
# Rather than work too hard to get the exact number,
# Rather than work too hard to get the exact number for each file,
# we just list the total here.
addlparam=$( \
grep -v "^$ROOT" $log | \
grep -v "not generated, too many nodes" | \
grep "^ parameter '" $log | \
grep "^ parameter '" "$LOG" | \
wc -l | \
sed 's/^[ \t]*//;s/[ \t]*$//' \
)
# Total number of warnings
warncount=$(echo "$undocmods" | \
awk '{total += $1}; END {print total}' )
warncount=$( \
echo "$undocmods" | \
awk '{total += $1}; END {print total}' \
)
warncount=$((warncount + addlparam))
# List of files appearing in the log
undocfiles=$( \
grep "^$ROOT" "$log" | \
undocfiles=$( \
filter_log | \
cut -d ':' -f 1 | \
sed "s|$ROOT||g" | \
cut -d '/' -f 2- | \
@@ -91,6 +253,9 @@ undocfiles=$( \
sort -k 2 \
)
# Sorted by number, decreasing
undocsort=$(echo "$undocfiles" | sort -k1nr,2 )
# Total number of files
filecount=$( \
echo "$undocfiles" | \
@@ -98,7 +263,19 @@ filecount=$( \
sed 's/^[ \t]*//;s/[ \t]*$//' \
)
# Now we're ready to summarize the log
# Filtered in warnings
filterin=
if [ "${filter_inRE:-}" != "" ] ; then
filterin=$( \
filter_log | \
sed "s|$ROOT/||g" \
)
fi
# Summarize the log --------------------
#
echo
echo "Report of Doxygen warnings"
@@ -117,7 +294,7 @@ printf "%6d total warnings\n" $warncount
printf "%6d directories with warnings\n" $modcount
echo
echo
echo "Warnings by file"
echo "Warnings by file (alphabetical)"
echo
echo "Count File"
echo "----- ----------------------------------"
@@ -126,8 +303,25 @@ echo "----------------------------------------"
printf "%6d files with warnings\n" $filecount
echo
echo
echo "Warnings by file (numerical)"
echo
echo "Count File"
echo "----- ----------------------------------"
echo "$undocsort"
echo "----------------------------------------"
printf "%6d files with warnings\n" $filecount
echo
echo
echo "Doxygen Warnings Summary"
echo "----------------------------------------"
printf "%6d directories\n" $modcount
printf "%6d files\n" $filecount
printf "%6d warnings\n" $warncount
if [ "$filterin" != "" ] ; then
echo
echo
echo "Filtered Warnings"
echo "========================================"
echo "$filterin"
fi
+25 -1
View File
@@ -57,7 +57,6 @@
* - stats
* - tap-bridge
* - test
* - tools
* - topology-read
* - uan
* - virtual-net-device
@@ -72,3 +71,28 @@
* ns3 namespace.
*/
// Macros defined by the build system.
//
// These have to be visible for doxygen to document them,
// so we put them here in a file only seen by doxygen, not the compiler.
/**
* \ingroup assert
*
* \def NS3_ASSERT_ENABLE
*
* Enable asserts at compile time.
*
* This is normally set by `./waf configure --build-profile=debug`.
*/
#define NS3_ASSERT_ENABLE
/**
* \ingroup logging
*
* \def NS3_LOG_ENABLE
*
* Enable logging at compile time.
*
* This is normally set by `./waf configure --build-profile=debug`.
*/
#define NS3_LOG_ENABLE
+103 -32
View File
@@ -2,38 +2,100 @@ EPSTOPDF = epstopdf
DIA = dia
CONVERT = convert
FIGURES = figures
VPATH = $(FIGURES)
SRC = ../../src
# Temporary source directory, for build
SOURCETEMP = source-temp
FIGURES = $(SOURCETEMP)/figures
#VPATH = $(FIGURES)
# list all manual .rst files that need to be copied to $SOURCETEMP
SOURCES = \
source/conf.py \
source/_static \
source/index.rst \
source/replace.txt \
source/attributes.rst \
source/callbacks.rst \
source/documentation.rst \
source/enable-modules.rst \
source/enable-tests.rst \
source/events.rst \
source/gnuplot.rst \
source/hash-functions.rst \
source/helpers.rst \
source/how-to-write-tests.rst \
source/logging.rst \
source/new-models.rst \
source/new-modules.rst \
source/object-model.rst \
source/object-names.rst \
source/organization.rst \
source/python.rst \
source/random-variables.rst \
source/realtime.rst \
source/support.rst \
source/test-background.rst \
source/test-framework.rst \
source/test-overview.rst \
source/tests.rst \
source/tracing.rst \
source/troubleshoot.rst \
${SRC}/stats/doc/data-collection.rst \
${SRC}/stats/doc/data-collection-overview.rst \
${SRC}/stats/doc/statistics.rst \
${SRC}/stats/doc/data-collection-helpers.rst \
${SRC}/stats/doc/probe.rst \
${SRC}/stats/doc/collector.rst \
${SRC}/stats/doc/aggregator.rst \
${SRC}/stats/doc/adaptor.rst \
${SRC}/stats/doc/scope-and-limitations.rst \
# list all manual figure files that need to be copied to
# $SOURCETEMP/figures. For each figure to be included in all
# documentation formats (html, latex...) the following formats are supported:
# 1) a single .dia file (preferred option, because it can be edited)
# 2) a single .eps file
# 3) both a .pdf and .png file
SOURCEFIGS = \
figures/software-organization.dia \
figures/plot-2d.png \
figures/plot-2d-with-error-bars.png \
figures/plot-3d.png \
${SRC}/stats/doc/Stat-framework-arch.png \
${SRC}/stats/doc/Wifi-default.png \
${SRC}/stats/doc/dcf-overview.dia \
${SRC}/stats/doc/dcf-overview-with-aggregation.dia \
${SRC}/stats/doc/gnuplot-example.png \
${SRC}/stats/doc/file-example.png \
${SRC}/stats/doc/seventh-packet-byte-count.png \
${SRC}/stats/doc/gnuplot-helper-example.png \
${SRC}/stats/doc/gnuplot-aggregator.png \
# specify figures from which .png and .pdf figures need to be
# generated (all dia and eps figures)
IMAGES_EPS = \
$(FIGURES)/software-organization.eps \
$(FIGURES)/dcf-overview.eps \
$(FIGURES)/dcf-overview-with-aggregation.eps \
# rescale pdf figures as necessary
$(FIGURES)/software-organization.pdf_width = 5in
# Do not delete/clean these png images upon make clean
IMAGES_PNG_SAVED = \
$(FIGURES)/plot-2d.png \
$(FIGURES)/plot-2d-with-error-bars.png \
$(FIGURES)/plot-3d.png \
IMAGES_PNG_CONVERTED = \
${IMAGES_EPS:.eps=.png}
IMAGES_PNG = $(IMAGES_PNG_SAVED) $(IMAGES_PNG_CONVERTED)
IMAGES_PNG = $(IMAGES_EPS:.eps=.png)
IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf}
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
IMAGES_TO_CLEAN = $(IMAGES_PNG_CONVERTED) $(IMAGES_PDF) $(IMAGES_EPS)
RESCALE = ../../utils/rescale-pdf.sh
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
%.png : %.eps; $(CONVERT) $< $@
%.pdf : %.eps;
$(EPSTOPDF) $< -o=$@
if test x$($@_width) != x; then ./rescale-pdf.sh $($@_width) $@ ; fi
if test x$($@_width) != x; then $(RESCALE) $($@_width) $@ ; fi
# You can set these variables from the command line.
@@ -45,10 +107,12 @@ BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(SOURCETEMP)
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
.NOTPARALLEL:
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@@ -68,47 +132,54 @@ help:
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
copy-sources: $(SOURCES)
@rm -rf $(SOURCETEMP)
@mkdir -p $(SOURCETEMP)
@mkdir -p $(FIGURES)
@cp -r $(SOURCES) $(SOURCETEMP)
@cp -r $(SOURCEFIGS) $(FIGURES)
clean:
-rm -rf $(BUILDDIR)
-rm -rf $(IMAGES_TO_CLEAN)
-rm -rf $(SOURCETEMP)
frag: pickle
@if test ! -d $(BUILDDIR)/frag; then mkdir $(BUILDDIR)/frag; fi
pushd $(BUILDDIR)/frag && ../../pickle-to-xml.py ../pickle/index.fpickle > navigation.xml && popd
cp -r $(BUILDDIR)/pickle/_images $(BUILDDIR)/frag
html: $(IMAGES)
html: copy-sources $(IMAGES)
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml: $(IMAGES)
dirhtml: copy-sources $(IMAGES)
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml: $(IMAGES)
singlehtml: copy-sources $(IMAGES)
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle: $(IMAGES)
pickle: copy-sources $(IMAGES)
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json: $(IMAGES)
json: copy-sources $(IMAGES)
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp: $(IMAGES)
htmlhelp: copy-sources $(IMAGES)
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp: $(IMAGES)
qthelp: copy-sources $(IMAGES)
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
@@ -117,7 +188,7 @@ qthelp: $(IMAGES)
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ns-3.qhc"
devhelp: $(IMAGES)
devhelp: copy-sources $(IMAGES)
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@@ -126,46 +197,46 @@ devhelp: $(IMAGES)
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ns-3"
@echo "# devhelp"
epub: $(IMAGES)
epub: copy-sources $(IMAGES)
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex: $(IMAGES)
latex: copy-sources $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf: $(IMAGES)
latexpdf: copy-sources $(IMAGES)
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
make -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text: $(IMAGES)
text: copy-sources $(IMAGES)
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man: $(IMAGES)
man: copy-sources $(IMAGES)
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
changes: $(IMAGES)
changes: copy-sources $(IMAGES)
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck: $(IMAGEs)
linkcheck: copy-sources $(IMAGES)
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest: $(IMAGES)
doctest: copy-sources $(IMAGES)
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env bash
TMPDIR=/tmp
TMPFILE=`mktemp`
echo "\documentclass{book}
\usepackage{pdfpages}
\begin{document}
\includepdf[width=${1},fitpaper]{${2}}
\end{document}" >${TMPFILE}.tex
pdflatex -output-directory /tmp ${TMPFILE}.tex >/dev/null 2>/dev/null
cp ${TMPFILE}.pdf ${2}
rm -f ${TMPFILE}{,.{tex,aux,log,pdf}}
File diff suppressed because it is too large Load Diff
+30 -5
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Callbacks
---------
@@ -364,11 +365,11 @@ Now, we need to tie together this callback instance and the actual target functi
callback-- this is important. We can pass in any such properly-typed function
to this callback. Let's look at this more closely::
static double CbOne (double a, double b) {}
^ ^ ^
| ---| ------|
| | |
Callback<double, double, double> one;
static double CbOne (double a, double b) {}
^ ^ ^
| | |
| | |
Callback<double, double, double> one;
You can only bind a function to a callback if they have the matching signature.
The first template argument is the return type, and the additional template
@@ -537,6 +538,30 @@ function call::
(*m_p.*m_pmi)(m_boundArg, arg);
It's possible to bind two or three arguments as well. Say we have a function with
signature::
static void NotifyEvent (Ptr<A> a, Ptr<B> b, MyEventType e);
One can create bound callback binding first two arguments like::
MakeBoundCallback (&NotifyEvent, a1, b1);
assuming `a1` and `b1` are objects of type `A` and `B` respectively. Similarly for
three arguments one would have function with a signature::
static void NotifyEvent (Ptr<A> a, Ptr<B> b, MyEventType e);
Binding three arguments in done with::
MakeBoundCallback (&NotifyEvent, a1, b1, c1);
again assuming `a1`, `b1` and `c1` are objects of type `A`, `B` and `C` respectively.
This kind of binding can be used for exchanging information between objects in
simulation; specifically, bound callbacks can be used as traced callbacks, which will
be described in the next section.
Traced Callbacks
****************
*Placeholder subsection*
+1 -1
View File
@@ -197,7 +197,7 @@ latex_logo = '../../ns3_html_theme/static/ns-3.png'
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
latex_preamble = '\usepackage{amssymb}'
# Documents to append as an appendix to all manuals.
#latex_appendices = []
+569
View File
@@ -0,0 +1,569 @@
.. include:: replace.txt
.. highlight:: cpp
Creating Documentation
----------------------
|ns3| supplies two kinds of documentation: expository "user-guide"-style
chapters, and source code API documentation.
The "user-guide" chapters are written by hand in reStructuredText_
format (``.rst``), which is processed by the Python documentation
system Sphinx_ to generate web pages and pdf files.
The API documentation is generated from the source code itself,
using Doxygen_, to generate cross-linked web pages.
Both of these are important: the Sphinx chapters explain the *why*
and overview of using a model; the API documentation explains the
*how* details.
This chapter gives a quick overview of these
tools, emphasizing preferred usage and customizations for |ns3|.
To build all the standard documentation:
.. sourcecode:: bash
$ ./waf docs
For more specialized options, read on.
.. _reStructuredText: http://sphinx-doc.org/rest.html
.. _sphinx: http://sphinx-doc.org/
.. _doxygen: http://www.doxygen.org/
Documenting with Sphinx
***********************
We use Sphinx_ to generate expository chapters describing
the design and usage of each module. Right now you are reading the
:doc:`Documentation <documentation>` Chapter.
The `Show Source <_sources/documentation.txt>`_ link in the sidebar
will show you the reStructuredText source for this chapter.
Adding New Chapters
===================
Adding a new chapter takes three steps (described in more detail below):
#. Choose `Where?`_ the documentation file(s) will live.
#. `Link`_ from an existing page to the new documentation.
#. Add the new file to the `Makefile`_.
Where?
######
Documentation for a specific module, ``foo``, should normally go in
``src/foo/doc/``. For example ``src/foo/doc/foo.rst`` would be the
top-level document for the module. The ``src/create-module.py`` script
will create this file for you.
Some models require several ``.rst`` files, and figures; these should
all go in the ``src/foo/doc/`` directory. The docs are actually build
by a Sphinx Makefile. For especially involved
documentation, it may be helpful to have a local ``Makefile``
in the ``src/foo/doc/`` directory to
simplify building the documentation for this module
(`Antenna`_ is an example). Setting this up
is not particularly hard, but is beyond the scope of this chapter.
In some cases, documentation spans multiple models; the
`Network`_ chapter is an example. In these cases
adding the ``.rst`` files directly to ``doc/models/source/`` might
be appropriate.
.. _antenna: http://www.nsnam.org/docs/models/html/antenna.html
.. _network: http://www.nsnam.org/docs/models/html/network.html
Link
####
Sphinx has to know *where* your new chapter should appear. In most
cases, a new model chapter should appear the in `Models` book.
To add your chapter there, edit ``doc/models/source/index.rst``
.. sourcecode:: rest
.. toctree::
:maxdepth: 1
organization
animation
antenna
aodv
applications
...
Add the name of your document (without the ``.rst`` extension) to
this list. Please keep the Model chapters in alphabetical order,
to ease visual scanning for specific chapters.
Makefile
########
You also have to add your document to the appropriate ``Makefile``,
so ``make`` knows to check it for updates. The Models book Makefile
is ``doc/models/Makefile``, the Manual book Makefile is
``doc/manual/Makefile``.
.. sourcecode:: make
# list all model library .rst files that need to be copied to $SOURCETEMP
SOURCES = \
source/conf.py \
source/_static \
source/index.rst \
source/replace.txt \
source/organization.rst \
...
$(SRC)/antenna/doc/source/antenna.rst \
...
You add your ``.rst`` files to the ``SOURCES`` variable. To add figures,
read the comments in the ``Makefile`` to see which variable should contain
your image files. Again, please keep these in alphabetical order.
Building Sphinx Docs
====================
Building the Sphinx documentation is pretty simple.
To build all the Sphinx documentation:
.. sourcecode:: bash
$ ./waf sphinx
To build just the Models documentation:
.. sourcecode:: bash
$ make -C doc/models
To see the generated documentation point your browser at
``doc/models/build/html``.
As you can see, Sphinx uses Make to guide the process.
The default target builds all enabled output forms, which in
|ns3| are the multi-page ``html``, single-page ``singlehtml``, and pdf
(``latex``). To build just the multi-page html, you add the ``html`` target:
.. sourcecode:: bash
$ make -C doc/models html
This can be helpful to reduce the build time (and the size of the
build chatter) as you are writing your chapter.
Before committing your documentation to the repo, please check
that it builds without errors or warnings. The build process
generates lots of output (mostly normal chatter from LaTeX),
which can make it difficult to see if there are any Sphinx
warnings or errors. To find important warnings and errors
build just the ``html`` version, then search the build log
for ``warning`` or ``error``.
|ns3| Specifics
===============
The Sphinx documentation_ and tutorial_ are pretty good. We won't duplicate
the basics here, instead focusing on preferred usage for |ns3|.
.. _documentation: http://sphinx-doc.org/contents.html
.. _tutorial: http://sphinx-doc.org/tutorial.html
* Start documents with these two lines:
.. sourcecode:: rest
.. include:: replace.txt
.. highlight:: cpp
The first line enables some simple replacements. For example,
typing ``|ns3|`` renders as |ns3|.
The second sets the default source code highlighting language explicitly
for the file, since the parser guess isn't always accurate.
(It's also possible to set the language explicitly for a single code block,
see below.)
* Sections:
Sphinx is pretty liberal about marking section headings. By convention,
we prefer this hierarchy:
.. sourcecode:: rest
.. heading hierarchy:
------------- Chapter
************* Section (#.#)
============= Subsection (#.#.#)
############# Sub-subsection
* Syntax Highlighting:
To use the default syntax highlighter, simply start a sourcecode block:
+--------------------------------------+------------------------------------+
| Sphinx Source | Rendered Output |
+======================================+====================================+
| .. sourcecode:: rest | |
| | |
| The ``Frobnitz`` is accessed by:: | The ``Frobnitz`` is accessed by:: |
| | |
| Foo::Frobnitz frob; | Foo::Frobnitz frob; |
| frob.Set (...); | frob.Set (...); |
+--------------------------------------+------------------------------------+
To use a specific syntax highlighter, for example, ``bash`` shell commands:
+--------------------------------------+------------------------------------+
| Sphinx Source | Rendered Output |
+======================================+====================================+
| .. sourcecode:: rest | |
| | |
| .. sourcecode:: bash | .. sourcecode:: bash |
| | |
| $ ls | $ ls |
+--------------------------------------+------------------------------------+
* Shorthand Notations:
These shorthands are defined:
+--------------------------------------+------------------------------------+
| Sphinx Source | Rendered Output |
+======================================+====================================+
| .. sourcecode:: rest | |
| | |
| |ns3| | |ns3| |
+--------------------------------------+------------------------------------+
| .. sourcecode:: rest | |
| | |
| |ns2| | |ns2| |
+--------------------------------------+------------------------------------+
| .. sourcecode:: rest | |
| | |
| |check| | |check| |
+--------------------------------------+------------------------------------+
| .. sourcecode:: rest | |
| | |
| :rfc:`6282` | :rfc:`6282` |
+--------------------------------------+------------------------------------+
Documenting with Doxygen
************************
We use Doxygen_ to generate browsable_ API documentation. Doxygen
provides a number of useful features:
* Summary table of all class members.
* Graphs of inheritance and collaboration for all classes.
* Links to the source code imlementing each function.
* Links to every place a member is used.
* Links to every object used in implementing a function.
* Grouping of related classes, such as all the classes related to
a specific protocol.
In addition, we use the ``TypeId`` system to add to the documentation
for every class
* The ``Config`` paths by which such objects can be reached.
* Documentation for any ``Attributes``, including ``Attributes``
defined in parent classes.
* Documentation for any ``Trace`` sources defined by the class.
Doxygen operates by scaning the source code, looking for
specially marked comments. It also creates a cross reference,
indicating *where* each file, class, method, and variable is used.
.. _browsable: https://www.nsnam.org/docs/doxygen
Preferred Style
===============
The preferred style for Doxygen comments is the JavaDoc style::
/**
* Brief description of this class or method.
* Adjacent lines become a single paragraph.
*
* Longer description, with lots of details.
*
* Blank lines separate paragraphs.
*
* Explain what the class or method does, using what algorithm.
* Explain the units of arguments and return values.
*
* \note Note any limitations or gotchas.
*
* (For functions with arguments or return valued:)
* \param foo Brief noun phrase describing this argument.
* \param bar Note Sentence case, and terminating period.
* \return Brief noun phrase describing the value.
*
* \internal
*
* You can also discuss internal implementation details.
* Understanding this material shouldn't be necessary to using
* the class or method.
*/
class Example
In this style the Doxygen comment block begins with two \`*' characters:
``/**``, and precedes the item being documented.
For items needing only a brief description, either of these short forms
is appropriate::
/** Destructor implementation. */
void DoDispose ();
int m_count; //!< Count of ...
Note the special form of the end of line comment, ``//!<``, indicating
that it refers to the *preceding* item.
Some items to note:
* Use sentence case, including the initial capital.
* Use punctuation, especially \`.'s at the end of sentences or phrases.
* The ``\brief`` tag is not needed; the first sentence will be
used as the brief description.
Every class, method, typedef, member variable, function argument
and return value should be documented in all source code files
which form the formal API and implementation for |ns3|, such as
``src/<module>/model/*``, ``src/<module>/helper/*`` and
``src/<module>/utils/*``. Documentation for items in ``src/<module>/test/*``
and ``src/<module>/examples/*`` is preferred, but not required.
Useful Features
===============
* Inherited members will automatically inherit docs from the parent,
(but can be replaced by local documentation).
#. Document the base class.
#. In the sub class mark inherited functions with an ordinary comment::
// Inherited methods
virtual void FooBar (void);
virtual int BarFoo (double baz);
Note that the signatures have to match exactly, so include the formal
argument ``(void)``
This doesn't work for static functions; see ``GetTypeId``, below, for an
example.
Building Doxygen Docs
=====================
Building the Doxygen documentation is pretty simple:
.. sourcecode:: bash
$ ./waf doxygen
This builds using the default configuration, which generates documentation
sections for *all* items, even if they do not have explicit comment
documentation blocks. This has the effect of suppressing warnings for
undocumented items, but makes sure everything appears in the generated
output.
When writing documentation, it's often more useful to see which items
are generating warnings, typically about missing documentation.
To see the full warnings list, use the ``doc/doxygen.warnings.report.sh``
script:
.. sourcecode:: bash
$ doc/doxygen.warnings.report.sh
Waf: Entering directory `build'
...
Waf: Leaving directory `build'
'build' finished successfully (3m24.094s)
Rebuilding doxygen docs with full errors...Done.
Report of Doxygen warnings
----------------------------------------
(All counts are lower bounds.)
Warnings by module/directory:
Count Directory
----- ----------------------------------
3844 src/lte/model
1718 src/wimax/model
1423 src/core/model
....
138 additional undocumented parameters.
----------------------------------------
15765 total warnings
126 directories with warnings
Warnings by file (alphabetical)
Count File
----- ----------------------------------
17 doc/introspected-doxygen.h
15 examples/routing/manet-routing-compare.cc
26 examples/stats/wifi-example-apps.h
....
----------------------------------------
967 files with warnings
Warnings by file (numerical)
Count File
----- ----------------------------------
374 src/lte/model/lte-asn1-header.h
280 src/lte/model/lte-rrc-sap.h
262 src/lte/model/lte-rrc-header.h
....
----------------------------------------
967 files with warnings
Doxygen Warnings Summary
----------------------------------------
126 directories
967 files
15765 warnings
The script modifies the configuration to show all warnings, and
to shorten the run time. As you can see, at this writing we have
*a lot* of undocumented items. The report summarizes warnings
by module ``src/*/*``, and by file, in alphabetically and numerical
order.
The script has a few options to pare things down and make this more
manageable. For help, use the ``-h`` option. Having run it once
to do the Doxygen build and generate the full warnings log,
you can reprocess the log file with various "filters,"
without having to do the full Doxygen build by,
again using the ``-s`` option. You can exclude warnings
from ``*/examples/*`` files (``-e`` option), and/or ``*/test/*`` files
(``-t``).
Perhaps the most useful option when writing documentation comments
is ``-m <module>``, which will limit the report to just files matching
``src/<module>/*``, and follow the report with the actual warning lines.
Combine with ``-et`` and you can focus on the warnings that are most
urgent in a single module:
.. sourcecode:: bash
$ doc/doxygen.warnings.report.sh -m mesh/helper
...
Doxygen Warnings Summary
----------------------------------------
1 directories
3 files
149 warnings
Filtered Warnings
========================================
src/mesh/helper/dot11s/dot11s-installer.h:72: warning: Member m_root (variable) of class ns3::Dot11sStack is not documented.
src/mesh/helper/dot11s/dot11s-installer.h:35: warning: return type of member ns3::Dot11sStack::GetTypeId is not documented
src/mesh/helper/dot11s/dot11s-installer.h:56: warning: return type of member ns3::Dot11sStack::InstallStack is not documented
src/mesh/helper/flame/flame-installer.h:40: warning: Member GetTypeId() (function) of class ns3::FlameStack is not documented.
src/mesh/helper/flame/flame-installer.h:60: warning: return type of member ns3::FlameStack::InstallStack is not documented
src/mesh/helper/mesh-helper.h:213: warning: Member m_nInterfaces (variable) of class ns3::MeshHelper is not documented.
src/mesh/helper/mesh-helper.h:214: warning: Member m_spreadChannelPolicy (variable) of class ns3::MeshHelper is not documented.
src/mesh/helper/mesh-helper.h:215: warning: Member m_stack (variable) of class ns3::MeshHelper is not documented.
src/mesh/helper/mesh-helper.h:216: warning: Member m_stackFactory (variable) of class ns3::MeshHelper is not documented.
src/mesh/helper/mesh-helper.h:209: warning: parameters of member ns3::MeshHelper::CreateInterface are not (all) documented
src/mesh/helper/mesh-helper.h:119: warning: parameters of member ns3::MeshHelper::SetStandard are not (all) documented
Now it's just a matter of understanding the code, and writing some
docs!
|ns3| Specifics
===============
As for Sphinx, the Doxygen docs_ and reference_ are pretty good.
We won't duplicate the basics here, instead focusing on preferred
usage for |ns3|.
.. _docs: http://www.stack.nl/~dimitri/doxygen/index.html
.. _reference: http://www.stack.nl/~dimitri/doxygen/manual/commands.html
* Use Doxygen ``Modules`` to group related items.
In the main header for a module, create a Doxgyen group::
/**
* \defgroup foo Foo protocol.
*/
Mark each associated class as belonging to the group::
/**
* \ingroup foo
*
* Foo packet type.
*/
class Foo
* Copy the ``Attribute`` help strings from the ``GetTypeId`` method to use
as the brief descriptions of associated members.
* ``\bugid{298}`` will create a link to bug 298 in our Bugzilla.
* ``\pname{foo}`` in a description will format ``foo``
as a ``\param foo`` parameter, making it clear that you
are referring to an actual argument.
* ``\RFC{301}`` will create a link to RFC 301.
* ``\internal`` should be used only to set off a discussion of implementation
details, not to mark ``private`` functions (they are already marked,
as ``private``!)
* Don't create classes with trivial names, such as ``class A``,
even in test suites. These cause all instances of the class name
literal \`A' to be rendered as links.
As noted above, static functions don't inherit the documentation
of the same functions in the parent class. |ns3| uses a few static
functions ubiquitously; the suggested documentation block for these
cases is:
* Default constructor/destructor::
MyClass (); //!< Default constructor
~MyClass (); //!< Destructor
* Dummy destructor and DoDispose::
/** Dummy destructor, see DoDispose. */
~MyClass ();
/** Destructor implementation */
virtual void DoDispose ();
* GetTypeId::
/**
* Register this type.
* \return The object TypeId.
*/
static TypeId GetTypeId (void);
+48 -23
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: bash
Enabling Subsets of |ns3| Modules
---------------------------------
@@ -10,11 +11,15 @@ This chapter discusses how to enable only the |ns3| modules that you are interst
How to enable a subset of |ns3|'s modules
*****************************************
If shared libraries are being built, then enabling a module will cause at least one library to be built: ::
If shared libraries are being built, then enabling a module will cause at least one library to be built:
.. sourcecode:: text
libns3-modulename.so
If the module has a test library and test libraries are being built, then ::
If the module has a test library and test libraries are being built, then
.. sourcecode:: text
libns3-modulename-test.so
@@ -31,29 +36,37 @@ Enable modules using waf's --enable-modules option
To enable only the core module with example and tests, for example,
try these commands: ::
./waf clean
./waf configure --enable-examples --enable-tests --enable-modules=core
./waf build
cd build/debug/
ls
$ ./waf clean
$ ./waf configure --enable-examples --enable-tests --enable-modules=core
$ ./waf build
$ cd build/debug/
$ ls
and the following libraries should be present: ::
and the following libraries should be present:
.. sourcecode:: text
bindings libns3-core.so ns3 scratch utils
examples libns3-core-test.so samples src
Note the ``./waf clean`` step is done here only to make it more obvious which module libraries were built. You don't have to do ``./waf clean`` in order to enable subsets of modules.
Running test.py will cause only those tests that depend on module core to be run: ::
Running test.py will cause only those tests that depend on module core to be run:
.. sourcecode:: text
24 of 24 tests passed (24 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Repeat the above steps for the "network" module instead of the "core" module, and the following will be built, since network depends on core: ::
Repeat the above steps for the "network" module instead of the "core" module, and the following will be built, since network depends on core:
.. sourcecode:: text
bindings libns3-core.so libns3-network.so ns3 scratch utils
examples libns3-core-test.so libns3-network-test.so samples src
Running test.py will cause those tests that depend on only the core and network modules to be run: ::
Running test.py will cause those tests that depend on only the core and network modules to be run:
.. sourcecode:: text
31 of 31 tests passed (31 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
@@ -74,9 +87,11 @@ The maintained version of the .ns3rc file in the |ns3| source code repository re
Assuming that you are in the top level |ns3| directory, you can get a copy of the .ns3rc file that is in the ``utils`` directory as follows: ::
cp utils/.ns3rc .
$ cp utils/.ns3rc .
The .ns3rc file should now be in your top level |ns3| directory, and it contains the following: ::
The .ns3rc file should now be in your top level |ns3| directory, and it contains the following:
.. sourcecode:: python
#! /usr/bin/env python
@@ -92,7 +107,9 @@ The .ns3rc file should now be in your top level |ns3| directory, and it contains
# Set this equal to true if you want tests to be run.
tests_enabled = False
Use your favorite editor to modify the .ns3rc file to only enable the core module with examples and tests like this: ::
Use your favorite editor to modify the .ns3rc file to only enable the core module with examples and tests like this:
.. sourcecode:: python
#! /usr/bin/env python
@@ -110,28 +127,36 @@ Use your favorite editor to modify the .ns3rc file to only enable the core modul
Only the core module will be enabled now if you try these commands: ::
./waf clean
./waf configure
./waf build
cd build/debug/
ls
$ ./waf clean
$ ./waf configure
$ ./waf build
$ cd build/debug/
$ ls
and the following libraries should be present: ::
and the following libraries should be present:
.. sourcecode:: text
bindings libns3-core.so ns3 scratch utils
examples libns3-core-test.so samples src
Note the ``./waf clean`` step is done here only to make it more obvious which module libraries were built. You don't have to do ``./waf clean`` in order to enable subsets of modules.
Running test.py will cause only those tests that depend on module core to be run: ::
Running test.py will cause only those tests that depend on module core to be run:
.. sourcecode:: text
24 of 24 tests passed (24 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Repeat the above steps for the "network" module instead of the "core" module, and the following will be built, since network depends on core: ::
Repeat the above steps for the "network" module instead of the "core" module, and the following will be built, since network depends on core:
.. sourcecode:: text
bindings libns3-core.so libns3-network.so ns3 scratch utils
examples libns3-core-test.so libns3-network-test.so samples src
Running test.py will cause those tests that depend on only the core and network modules to be run: ::
Running test.py will cause those tests that depend on only the core and network modules to be run:
.. sourcecode:: text
31 of 31 tests passed (31 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
+37 -19
View File
@@ -1,4 +1,6 @@
.. include:: replace.txt
.. highlight:: bash
Enabling/disabling |ns3| Tests and Examples
-------------------------------------------
@@ -26,18 +28,22 @@ By default, examples and tests are not built in |ns3|.
From the ns-3-allinone directory, you can build |ns3| without any
examples or tests simply by doing: ::
./build.py
$ ./build.py
Running test.py in the top level |ns3| directory now will cause no examples or tests to be run: ::
Running test.py in the top level |ns3| directory now will cause no examples or tests to be run:
.. sourcecode:: text
0 of 0 tests passed (0 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
If you would like build |ns3| with examples and tests, then do the following from the ns-3-allinone directory: ::
./build.py --enable-examples --enable-tests
$ ./build.py --enable-examples --enable-tests
Running test.py in the top level |ns3| directory will cause all of the examples and tests to be run: ::
Running test.py in the top level |ns3| directory will cause all of the examples and tests to be run:
.. sourcecode:: text
170 of 170 tests passed (170 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Enable/disable examples and tests using waf
@@ -50,20 +56,24 @@ By default, examples and tests are not built in |ns3|.
From the top level |ns3| directory, you can build |ns3| without any
examples or tests simply by doing: ::
./waf configure
./waf build
$ ./waf configure
$ ./waf build
Running test.py now will cause no examples or tests to be run: ::
Running test.py now will cause no examples or tests to be run:
.. sourcecode:: text
0 of 0 tests passed (0 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
If you would like build |ns3| with examples and tests, then do the following from the top level |ns3| directory: ::
./waf configure --enable-examples --enable-tests
./waf build
$ ./waf configure --enable-examples --enable-tests
$ ./waf build
Running test.py will cause all of the examples and tests to be run: ::
Running test.py will cause all of the examples and tests to be run:
.. sourcecode:: text
170 of 170 tests passed (170 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
Enable/disable examples and tests using the |ns3| configuration file
@@ -84,9 +94,11 @@ The maintained version of the .ns3rc file in the |ns3| source code repository re
Assuming that you are in the top level |ns3| directory, you can get a copy of the .ns3rc file that is in the ``utils`` directory as follows: ::
cp utils/.ns3rc .
$ cp utils/.ns3rc .
The .ns3rc file should now be in your top level |ns3| directory, and it contains the following: ::
The .ns3rc file should now be in your top level |ns3| directory, and it contains the following:
.. sourcecode:: python
#! /usr/bin/env python
@@ -105,16 +117,20 @@ The .ns3rc file should now be in your top level |ns3| directory, and it contains
From the top level |ns3| directory, you can build |ns3| without any
examples or tests simply by doing: ::
./waf configure
./waf build
$ ./waf configure
$ ./waf build
Running test.py now will cause no examples or tests to be run: ::
Running test.py now will cause no examples or tests to be run:
.. sourcecode:: text
0 of 0 tests passed (0 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
If you would like build |ns3| with examples and tests, use your
favorite editor to change the values in the .ns3rc file for
examples_enabled and tests_enabled file to be True: ::
examples_enabled and tests_enabled file to be True:
.. sourcecode:: python
#! /usr/bin/env python
@@ -133,9 +149,11 @@ examples_enabled and tests_enabled file to be True: ::
From the top level |ns3| directory, you can build |ns3| with examples
and tests simply by doing: ::
./waf configure
./waf build
$ ./waf configure
$ ./waf build
Running test.py will cause all of the examples and tests to be run: ::
Running test.py will cause all of the examples and tests to be run:
.. sourcecode:: text
170 of 170 tests passed (170 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
+10 -8
View File
@@ -1,4 +1,6 @@
.. include:: replace.txt
.. highlight:: cpp
.. heading hierarchy:
------------- Chapter
@@ -42,7 +44,7 @@ Simulator
The Simulator class is the public entry point to access event scheduling
facilities. Once a couple of events have been scheduled to start the
simulation, the user can start to execute them by entering the simulator
main loop (call Simulator::Run). Once the main loop starts running, it
main loop (call ``Simulator::Run``). Once the main loop starts running, it
will sequentially execute all scheduled events in order from oldest to
most recent until there are either no more events left in the event
queue or Simulator::Stop has been called.
@@ -70,7 +72,7 @@ might write this:
Which will output:
::
.. sourcecode:: text
handler called with argument arg0=10 and arg1=5
@@ -153,11 +155,11 @@ In some very rare cases, developers might need to modify or understand
how the context (node id) of the first event is set to that of its
associated node. This is accomplished by the NodeList class: whenever a
new node is created, the NodeList class uses ScheduleWithContext to
schedule a 'start' event for this node. The 'start' event thus executes
schedule a 'initialize' event for this node. The 'initialize' event thus executes
with a context set to that of the node id and can use the normal variety
of Schedule methods. It invokes the Node::Start method which propagates
the 'start' event by calling the DoStart method for each object
associated with the node. The DoStart method overridden in some of these
of Schedule methods. It invokes the Node::Initialize method which propagates
the 'initialize' event by calling the DoInitialize method for each object
associated with the node. The DoInitialize method overridden in some of these
objects (most notably in the Application base class) will schedule some
events (most notably Application::StartApplication) which will in turn
scheduling traffic generation events which will in turn schedule
@@ -165,8 +167,8 @@ network-level events.
Notes:
* Users need to be careful to propagate DoStart methods across objects
by calling Start explicitely on their member objects
* Users need to be careful to propagate DoInitialize methods across objects
by calling Initialize explicitely on their member objects
* The context id associated with each ScheduleWithContext method has
other uses beyond logging: it is used by an experimental branch of ns-3
to perform parallel simulation on multicore systems using
+30 -17
View File
@@ -1,5 +1,6 @@
.. include:: replace.txt
.. highlight:: cpp
Making Plots using the Gnuplot Class
------------------------------------
@@ -25,39 +26,51 @@ See the code from the example plots that are discussed below for details on step
An Example Program that Uses the Gnuplot Class
**********************************************
An example program that uses |ns3|'s Gnuplot class can be found here: ::
An example program that uses |ns3|'s Gnuplot class can be found here:
src/tools/examples/gnuplot-example.cc
.. sourcecode:: bash
In order to run this example, do the following: ::
src/stats/examples/gnuplot-example.cc
./waf shell
cd build/debug/src/tools/examples
./gnuplot-example
In order to run this example, do the following:
This should produce the following gnuplot control files in the directory where the example is located: ::
.. sourcecode:: bash
$ ./waf shell
$ cd build/debug/src/stats/examples
$ ./gnuplot-example
This should produce the following gnuplot control files in the directory where the example is located:
.. sourcecode:: text
plot-2d.plt
plot-2d-with-error-bars.plt
plot-3d.plt
In order to process these gnuplot control files, do the following: ::
In order to process these gnuplot control files, do the following:
gnuplot plot-2d.plt
gnuplot plot-2d-with-error-bars.plt
gnuplot plot-3d.plt
.. sourcecode:: bash
This should produce the following graphics files in the directory where the example is located: ::
$ gnuplot plot-2d.plt
$ gnuplot plot-2d-with-error-bars.plt
$ gnuplot plot-3d.plt
This should produce the following graphics files in the directory where the example is located:
.. sourcecode:: text
plot-2d.png
plot-2d-with-error-bars.png
plot-3d.png
You can view these graphics files in your favorite graphics viewer. If you have gimp installed on your machine, for example, you can do this: ::
You can view these graphics files in your favorite graphics viewer. If you have gimp installed on your machine, for example, you can do this:
gimp plot-2d.png
gimp plot-2d-with-error-bars.png
gimp plot-3d.png
.. sourcecode:: bash
$ gimp plot-2d.png
$ gimp plot-2d-with-error-bars.png
$ gimp plot-3d.png
An Example 2-Dimensional Plot
*****************************
+118
View File
@@ -0,0 +1,118 @@
.. include:: replace.txt
.. highlight:: cpp
Hash Functions
----------------
|ns3| provides a generic interface to general purpose hash functions.
In the simplest usage, the hash function returns the 32-bit or 64-bit
hash of a data buffer or string. The default underlying hash function
is murmur3_, chosen because it has good hash function properties and
offers a 64-bit version. The venerable FNV1a_ hash is also available.
There is a straight-forward mechanism to
add (or provide at run time) alternative hash function implementations.
.. _murmur3: http://code.google.com/p/smhasher/wiki/MurmurHash3
.. _FNV1a: http://isthe.com/chongo/tech/comp/fnv/
Basic Usage
***********
The simplest way to get a hash value of a data buffer or string is just::
#include "ns3/hash.h"
using namespace ns3;
char * buffer = ...
size_t buffer_size = ...
uint32_t buffer_hash = Hash32 ( buffer, buffer_size);
std::string s;
uint32_t string_hash = Hash32 (s);
Equivalent functions are defined for 64-bit hash values.
Incremental Hashing
*******************
In some situations it's useful to compute the hash of multiple buffers,
as if they had been joined together. (For example, you might want
the hash of a packet stream, but not want to assemble a single buffer
with the combined contents of all the packets.)
This is almost as straight-forward as the first example::
#include "ns3/hash.h"
using namespace ns3;
char * buffer;
size_t buffer_size;
Hasher hasher; // Use default hash function
for (<every buffer>)
{
buffer = get_next_buffer ();
hasher (buffer, buffer_size);
}
uint32_t combined_hash = hasher.GetHash32 ();
By default ``Hasher`` preserves internal state to enable incremental
hashing. If you want to reuse a ``Hasher`` object (for example
because it's configured with a non-default hash function), but don't
want to add to the previously computed hash, you need to ``clear()``
first::
hasher.clear ().GetHash32 (buffer, buffer_size);
This reinitializes the internal state before hashing the buffer.
Using an Alternative Hash Function
**********************************
The default hash function is murmur3_. FNV1a_ is also available. To specify
the hash function explicitly, use this contructor::
Hasher hasher = Hasher ( Create<Hash::Function::Fnv1a> () );
Adding New Hash Function Implementations
****************************************
To add the hash function ``foo``, follow the ``hash-murmur3.h``/``.cc`` pattern:
* Create a class declaration (``.h``) and definition (``.cc``) inheriting
from ``Hash::Implementation``.
* ``include`` the declaration in ``hash.h`` (at the point where
``hash-murmur3.h`` is included.
* In your own code, instantiate a ``Hasher`` object via the constructor
``Hasher (Ptr<Hash::Function::Foo> ())``
If your hash function is a single function, e.g. ``hashf``, you don't
even need to create a new class derived from HashImplementation::
Hasher hasher =
Hasher ( Create<Hash::Function::Hash32> (&hashf) );
For this to compile, your ``hashf`` has to match one of the function pointer
signatures::
typedef uint32_t (*Hash32Function_ptr) (const char *, const size_t);
typedef uint64_t (*Hash64Function_ptr) (const char *, const size_t);
Sources for Hash Functions
**************************
Sources for other hash function implementations include:
* Peter Kankowski: http://www.strchr.com
* Arash Partow: http://www.partow.net/programming/hashfunctions/index.html
* SMHasher: http://code.google.com/p/smhasher/
* Sanmayce: http://www.sanmayce.com/Fastest_Hash/index.html
+1
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Helpers
-------
+5 -4
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
How to write tests
------------------
@@ -46,7 +47,7 @@ more descriptive test case name.
You also need to add a block into your wscript to get this test to
compile:
::
.. sourcecode:: python
module_test.source = [
'test/router-test-suite.cc',
@@ -64,13 +65,13 @@ is called "router" such as here:
Try this command:
::
.. sourcecode:: bash
./test.py -s router
$ ./test.py -s router
Output such as below should be produced:
::
.. sourcecode:: text
PASS: TestSuite router
1 of 1 tests passed (1 passed, 0 skipped, 0 failed, 0 crashed, 0 valgrind errors)
+4 -1
View File
@@ -8,7 +8,7 @@ available in five forms:
* `ns-3 Doxygen <http://www.nsnam.org/doxygen/index.html>`_: Documentation of the public APIs of the simulator
* Tutorial, Manual *(this document)*, and Model Library for the `latest release <http://www.nsnam.org/documentation/latest/>`_ and `development tree <http://www.nsnam.org/ns-3-dev/documentation/>`_
* `ns-3 wiki <http://www.nsnam.org/wiki/index.php/Main_Page>`_
* `ns-3 wiki <http://www.nsnam.org/wiki/Main_Page>`_
This document is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ for `Sphinx <http://sphinx.pocoo.org/>`_ and is maintained in the
``doc/manual`` directory of ns-3's source code.
@@ -18,6 +18,7 @@ This document is written in `reStructuredText <http://docutils.sourceforge.net/r
organization
random-variables
hash-functions
events
callbacks
object-model
@@ -25,6 +26,8 @@ This document is written in `reStructuredText <http://docutils.sourceforge.net/r
object-names
logging
tracing
data-collection
statistics
realtime
helpers
gnuplot
+424 -2
View File
@@ -1,7 +1,429 @@
.. include:: replace.txt
.. highlight:: cpp
.. heading hierarchy:
------------- Chapter
************* Section (#.#)
============= Subsection (#.#.#)
############# Paragraph (no number)
Logging
-------
*This chapter not yet written. For now, the ns-3 tutorial contains logging
information.*
The |ns3| logging facility can be used to monitor or debug the progress
of simulation programs. Logging output can be enabled by program statements
in your ``main()`` program or by the use of the ``NS_LOG`` environment variable.
Logging statements are not compiled into optimized builds of |ns3|. To use
logging, one must build the (default) debug build of |ns3|.
The project makes no guarantee about whether logging output will remain
the same over time. Users are cautioned against building simulation output
frameworks on top of logging code, as the output and the way the output
is enabled may change over time.
Overview
********
|ns3| logging statements are typically used to log various program
execution events, such as the occurrence of simulation events or the
use of a particular function.
For example, this code snippet is from ``Ipv4L3Protocol::IsDestinationAddress()``::
if (address == iaddr.GetBroadcast ())
{
NS_LOG_LOGIC ("For me (interface broadcast address)");
return true;
}
If logging has been enabled for the ``Ipv4L3Protocol`` component at a severity
of ``LOGIC`` or above (see below about log severity), the statement
will be printed out; otherwise, it will be suppressed.
Enabling Output
===============
There are two ways that users typically control log output. The
first is by setting the ``NS_LOG`` environment variable; e.g.:
.. sourcecode:: bash
$ NS_LOG="*" ./waf --run first
will run the ``first`` tutorial program with all logging output. (The
specifics of the ``NS_LOG`` format will be discussed below.)
This can be made more granular by selecting individual components:
.. sourcecode:: bash
$ NS_LOG="Ipv4L3Protocol" ./waf --run first
The output can be further tailored with prefix options.
The second way to enable logging is to use explicit statements in your
program, such as in the ``first`` tutorial program::
int
main (int argc, char *argv[])
{
LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);
...
(The meaning of ``LOG_LEVEL_INFO``, and other possible values,
will be discussed below.)
``NS_LOG`` Syntax
=================
The ``NS_LOG`` environment variable contains a list of log components
and options. Log components are separated by \`:' characters:
.. sourcecode:: bash
$ NS_LOG="<log-component>:<log-component>..."
Options for each log component are given as flags after
each log component:
.. sourcecode:: bash
$ NS_LOG="<log-component>=<option>|<option>...:<log-component>..."
Options control the severity and level for that component,
and whether optional information should be included, such as the
simulation time, simulation node, function name, and the symbolic severity.
Log Components
==============
Generally a log component refers to a single source code ``.cc`` file,
and encompasses the entire file.
Some helpers have special methods to enable the logging of all components
in a module, spanning different compilation units, but logically grouped
together, such as the |ns3| wifi code::
WifiHelper wifiHelper;
wifiHelper.EnableLogComponents ();
The ``NS_LOG`` log component wildcard \`*' will enable all components.
To see what log components are defined, any of these will work:
.. sourcecode:: bash
$ NS_LOG="print-list" ./waf --run ...
$ NS_LOG="foo" # a token not matching any log-component
The first form will print the name and enabled flags for all log components
which are linked in; try it with ``scratch-simulator``.
The second form prints all registered log components,
then exit with an error.
Severity and Level Options
==========================
Individual messages belong to a single "severity class," set by the macro
creating the message. In the example above,
``NS_LOG_LOGIC(..)`` creates the message in the ``LOG_LOGIC`` severity class.
The following severity classes are defined as ``enum`` constants:
================ =====================================
Severity Class Meaning
================ =====================================
``LOG_NONE`` The default, no logging
``LOG_ERROR`` Serious error messages only
``LOG_WARN`` Warning messages
``LOG_DEBUG`` For use in debugging
``LOG_INFO`` Informational
``LOG_FUNCTION`` Function tracing
``LOG_LOGIC`` Control flow tracing within functions
================ =====================================
Typically one wants to see messages at a given severity class *and higher*.
This is done by defining inclusive logging "levels":
====================== ===========================================
Level Meaning
====================== ===========================================
``LOG_LEVEL_ERROR`` Only ``LOG_ERROR`` severity class messages.
``LOG_LEVEL_WARN`` ``LOG_WARN`` and above.
``LOG_LEVEL_DEBUG`` ``LOG_DEBUG`` and above.
``LOG_LEVEL_INFO`` ``LOG_INFO`` and above.
``LOG_LEVEL_FUNCTION`` ``LOG_FUNCTION`` and above.
``LOG_LEVEL_LOGIC`` ``LOG_LOGIC`` and above.
``LOG_LEVEL_ALL`` All severity classes.
``LOG_ALL`` Synonym for ``LOG_LEVEL_ALL``
====================== ===========================================
The severity class and level options can be given in the ``NS_LOG``
environment variable by these tokens:
============ =================
Class Level
============ =================
``error`` ``level_error``
``warn`` ``level_warn``
``debug`` ``level_debug``
``info`` ``level_info``
``function`` ``level_function``
``logic`` ``level_logic``
.. | ``level_all``
| ``all``
| ``*``
============ =================
Using a severity class token enables log messages at that severity only.
For example, ``NS_LOG="*=warn"`` won't output messages with severity ``error``.
``NS_LOG="*=level_debug"`` will output messages at severity levels
``debug`` and above.
Severity classes and levels can be combined with the \`|' operator:
``NS_LOG="*=level_warn|logic"`` will output messages at severity levels
``error``, ``warn`` and ``logic``.
The ``NS_LOG`` severity level wildcard \`*' and ``all``
are synonyms for ``level_all``.
For log components merely mentioned in ``NS_LOG``
.. sourcecode:: bash
$ NS_LOG="<log-component>:..."
the default severity is ``LOG_LEVEL_ALL``.
Prefix Options
==============
A number of prefixes can help identify
where and when a message originated, and at what severity.
The available prefix options (as ``enum`` constants) are
====================== ===========================================
Prefix Symbol Meaning
====================== ===========================================
``LOG_PREFIX_FUNC`` Prefix the name of the calling function.
``LOG_PREFIX_TIME`` Prefix the simulation time.
``LOG_PREFIX_NODE`` Prefix the node id.
``LOG_PREFIX_LEVEL`` Prefix the severity level.
``LOG_PREFIX_ALL`` Enable all prefixes.
====================== ===========================================
The prefix options are described briefly below.
The options can be given in the ``NS_LOG``
environment variable by these tokens:
================ =========
Token Alternate
================ =========
``prefix_func`` ``func``
``prefix_time`` ``time``
``prefix_node`` ``node``
``prefix_level`` ``level``
``prefix_all`` | ``all``
| ``*``
================ =========
For log components merely mentioned in ``NS_LOG``
.. sourcecode:: bash
$ NS_LOG="<log-component>:..."
the default prefix options are ``LOG_PREFIX_ALL``.
Severity Prefix
###############
The severity class of a message can be included with the options
``prefix_level`` or ``level``. For example, this value of ``NS_LOG``
enables logging for all log components (\`*') and all severity
classes (``=all``), and prefixes the message with the severity
class (``|prefix_level``).
.. sourcecode:: bash
$ NS_LOG="*=all|prefix_level" ./waf --run scratch-simulator
Scratch Simulator
[ERROR] error message
[WARN] warn message
[DEBUG] debug message
[INFO] info message
[FUNCT] function message
[LOGIC] logic message
Time Prefix
###########
The simulation time can be included with the options
``prefix_time`` or ``time``. This prints the simulation time in seconds.
Node Prefix
###########
The simulation node id can be included with the options
``prefix_node`` or ``node``.
Function Prefix
###############
The name of the calling function can be included with the options
``prefix_func`` or ``func``.
``NS_LOG`` Wildcards
####################
The log component wildcard \`*' will enable all components. To
enable all components at a specific severity level
use ``*=<severity>``.
The severity level option wildcard \`*' is a synonym for ``all``.
This must occur before any \`|' characters separating options.
To enable all severity classes, use ``<log-component>=*``,
or ``<log-component>=*|<options>``.
The option wildcard \`*' or token ``all`` enables all prefix options,
but must occur *after* a \`|' character. To enable a specific
severity class or level, and all prefixes, use
``<log-component>=<severity>|*``.
The combined option wildcard ``**`` enables all severities and all prefixes;
for example, ``<log-component>=**``.
The uber-wildcard ``***`` enables all severities and all prefixes
for all log components. These are all equivalent:
.. sourcecode:: bash
$ NS_LOG="***" ... $ NS_LOG="*=all|*" ... $ NS_LOG="*=*|all" ...
$ NS_LOG="*=**" ... $ NS_LOG="*=level_all|*" ... $ NS_LOG="*=*|prefix_all" ...
$ NS_LOG="*=*|*" ...
Be advised: even the trivial ``scratch-simulator`` produces over
46K lines of output with ``NS_LOG="***"``!
How to add logging to your code
*******************************
Adding logging to your code is very simple:
1. Invoke the ``NS_LOG_COMPONENT_DEFINE (...);`` macro
outside of ``namespace ns3``.
Create a unique string identifier (usually based on the name of the file
and/or class defined within the file) and register it with a macro call
such as follows:
::
NS_LOG_COMPONENT_DEFINE ("Ipv4L3Protocol");
namespace ns3 {
...
This registers ``Ipv4L3Protocol`` as a log component.
(The macro was carefully written to permit inclusion either within or
outside of namespace ``ns3``, and usage will vary across the codebase, but
the original intent was to register this *outside* of namespace ``ns3``
at file global scope.)
2. Add logging statements (macro calls) to your functions and function bodies.
Logging Macros
==============
The logging macros and associated severity levels are
================ ==========================
Severity Class Macro
================ ==========================
``LOG_NONE`` (none needed)
``LOG_ERROR`` ``NS_LOG_ERROR (...);``
``LOG_WARN`` ``NS_LOG_WARN (...);``
``LOG_DEBUG`` ``NS_LOG_DEBUG (...);``
``LOG_INFO`` ``NS_LOG_INFO (...);``
``LOG_FUNCTION`` ``NS_LOG_FUNCTION (...);``
``LOG_LOGIC`` ``NS_LOG_LOGIC (...);``
================ ==========================
The macros function as output streamers, so anything you can send to
``std::cout``, joined by ``<<`` operators, is allowed::
void MyClass::Check (int value, char * item)
{
NS_LOG_FUNCTION (this << arg << item);
if (arg > 10)
{
NS_LOG_ERROR ("encountered bad value " << value <<
" while checking " << name << "!");
}
...
}
Note that ``NS_LOG_FUNCTION`` automatically inserts a \`\ :literal:`,\ `'
(comma-space) separator between each of its arguments.
This simplifies logging of function arguments;
just concatenate them with ``<<`` as in the example above.
Unconditional Logging
=====================
As a convenience, the ``NS_LOG_UNCOND (...);`` macro will always log its
arguments, even if the associated log-component is not enabled at any
severity. This macro does not use any of the prefix options. Note that
logging is only enabled in debug builds; this macro won't produce
output in optimized builds.
Guidelines
==========
* Start every class method with ``NS_LOG_FUNCTION (this << args...);``
This enables easy function call tracing.
* Except: don't log operators or explicit copy constructors,
since these will cause infinite recursion and stack overflow.
* For methods without arguments use the same form:
``NS_LOG_FUNCTION (this);``
* For static functions:
* With arguments use ``NS_LOG_FUNCTION (...);`` as normal.
* Without arguments use ``NS_LOG_FUNCTION_NOARGS ();``
* Use ``NS_LOG_ERROR`` for serious error conditions that probably
invalidate the simulation execution.
* Use ``NS_LOG_WARN`` for unusual conditions that may be correctable.
Please give some hints as to the nature of the problem and how
it might be corrected.
* ``NS_LOG_DEBUG`` is usually used in an *ad hoc* way to understand
the execution of a model.
* Use ``NS_LOG_INFO`` for additional information about the execution,
such as the size of a data structure when adding/removing from it.
* Use ``NS_LOG_LOGIC`` to trace important logic branches within a function.
* Test that your logging changes do not break the code.
Run some example programs with all log components turned on (e.g.
``NS_LOG="***"``).
+52 -42
View File
@@ -1,7 +1,8 @@
.. include:: replace.txt
.. highlight:: cpp
Creating a new ns-3 model
-------------------------
Creating a new |ns3| model
--------------------------
This chapter walks through the design process of an |ns3| model. In many
research cases, users will not be satisfied to merely adapt existing models, but
@@ -10,7 +11,16 @@ example of adding an ErrorModel to a simple |ns3| link as a motivating example
of how one might approach this problem and proceed through a design and
implementation.
Design-approach
.. note:: Documentation
Here we focus on the process of creating new models
and new modules, and some of the design choices involved.
For the sake of clarity, we defer discussion of the
*mechanics* of documenting models and source code to the
:doc:`Documentation <documentation>` chapter.
Design Approach
***************
Consider how you want it to work; what should it do. Think about these things:
@@ -25,13 +35,13 @@ Consider how you want it to work; what should it do. Think about these things:
should I avoid any dependence on IPv4 if I want it to also be used by IPv6?
Should I avoid any dependency on IP at all?
Do not be hesitant to contact the ns-3-users or ns-developers list if you have
Do not be hesitant to contact the `ns-3-users` or `ns-developers` list if you have
questions. In particular, it is important to think about the public API of your
new model and ask for feedback. It also helps to let others know of your work in
case you are interested in collaborators.
Example: ErrorModel
+++++++++++++++++++
Example: `ErrorModel`
+++++++++++++++++++++
An error model exists in |ns2|. It allows packets to be passed to a stateful
object that determines, based on a random variable, whether the packet is
@@ -43,7 +53,7 @@ return value of this function is a boolean that tells the caller whether any
corruption occurred. Note that depending on the error model, the packet data
buffer may or may not be corrupted. Let's call this function "IsCorrupt()".
So far, in our design, we have:::
So far, in our design, we have::
class ErrorModel
{
@@ -94,7 +104,7 @@ a user to force errors on otherwise successful packet transmissions, at the
NetDevice level.
After some thinking and looking at existing |ns2| code, here is a sample API of
a base class and first subclass that could be posted for initial review:::
a base class and first subclass that could be posted for initial review::
class ErrorModel
{
@@ -157,16 +167,16 @@ your model since if you follow the error model verbatim, the code you produce
will collide with the existing error model. The below is just an outline of how
ErrorModel was built that you can adapt to other models.
Review the ns-3 coding style document
+++++++++++++++++++++++++++++++++++++
Review the |ns3| Coding Style Document
++++++++++++++++++++++++++++++++++++++
At this point, you may want to pause and read the |ns3| coding style document,
especially if you are considering to contribute your code back to the project.
The coding style document is linked off the main project page: `ns-3 coding
style <http://www.nsnam.org/developers/contributing-code/coding-style/>`_.
Decide where in the source tree the model will reside in
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Decide Where in the Source Tree the Model Should Reside
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
All of the |ns3| model source code is in the directory ``src/``. You will need
to choose which subdirectory it resides in. If it is new model code of some
@@ -177,8 +187,8 @@ In the case of the error model, it is very related to the packet class, so it
makes sense to implement this in the ``src/network/`` module where |ns3|
packets are implemented.
waf and wscript
+++++++++++++++
`waf` and `wscript`
+++++++++++++++++++
|ns3| uses the `Waf <http://www.freehackers.org/~tnagy/waf.html>`_ build system.
You will want to integrate your new |ns3| uses the Waf build system. You will
@@ -192,7 +202,7 @@ rest of the source files, and the .h file to the list of the header files.
Now, pop up to the top level directory and type "./test.py". You
shouldn't have broken anything by this operation.
include guards
Include Guards
++++++++++++++
Next, let's add some `include guards
@@ -203,8 +213,8 @@ Next, let's add some `include guards
...
#endif
namespace ns3
+++++++++++++
`namespace ns3`
+++++++++++++++
|ns3| uses the |ns3| `namespace
<http://en.wikipedia.org/wiki/Namespace_(computer_science)#Use_in_common_languages>`_
@@ -216,7 +226,7 @@ an |ns3| namespace block in both the cc and h file.::
}
At this point, we have some skeletal files in which we can start defining
our new classes. The header file looks like this:::
our new classes. The header file looks like this::
#ifndef ERROR_MODEL_H
#define ERROR_MODEL_H
@@ -226,7 +236,7 @@ our new classes. The header file looks like this:::
} // namespace ns3
#endif
while the ``error-model.cc`` file simply looks like this:::
while the ``error-model.cc`` file simply looks like this::
#include "error-model.h"
@@ -243,8 +253,8 @@ Initial Implementation
At this point, we're still working on some scaffolding, but we can begin to
define our classes, with the functionality to be added later.
use of class Object?
++++++++++++++++++++
Inherit from the `Object` Class?
++++++++++++++++++++++++++++++++
This is an important design step; whether to use class :cpp:class:`Object` as a
base class for your new classes.
@@ -267,7 +277,7 @@ In our case, we want to make use of the attribute system, and we will be passing
instances of this object across the |ns3| public API, so class
:cpp:class:`Object` is appropriate for us.
initial classes
Initial Classes
+++++++++++++++
One way to proceed is to start by defining the bare minimum functions and see if
@@ -373,28 +383,28 @@ every class that defines a new GetTypeId method, and it does the actual
registration of the class into the system. The :ref:`Object-model` chapter
discusses this in more detail.
how to include files from elsewhere
+++++++++++++++++++++++++++++++++++
Including External Files
++++++++++++++++++++++++
log component
+++++++++++++
Logging Support
+++++++++++++++
*Here, write a bit about adding |ns3| logging macros. Note that
LOG_COMPONENT_DEFINE is done outside the namespace ns3*
constructor, empty function prototypes
Constructor, Empty Function Prototypes
++++++++++++++++++++++++++++++++++++++
key variables (default values, attributes)
Key Variables (Default Values, Attributes)
++++++++++++++++++++++++++++++++++++++++++
test program 1
Test Program 1
++++++++++++++
Object Framework
++++++++++++++++
Adding-a-sample-script
Adding a Sample Script
**********************
At this point, one may want to try to take the basic scaffolding defined above
@@ -403,12 +413,12 @@ model when plumbing into the system and may also reveal whether any design or
API modifications need to be made. Once this is done, we will return to building
out the functionality of the ErrorModels themselves.
Add basic support in the class
Add Basic Support in the Class
++++++++++++++++++++++++++++++
::
point-to-point-net-device.h
/* point-to-point-net-device.h */
class ErrorModel;
/**
@@ -434,7 +444,7 @@ Add Accessor
MakePointerAccessor (&PointToPointNetDevice::m_receiveErrorModel),
MakePointerChecker<ErrorModel> ())
Plumb into the system
Plumb Into the System
+++++++++++++++++++++
::
@@ -468,12 +478,12 @@ Plumb into the system
}
}
Create null functional script
Create Null Functional Script
+++++++++++++++++++++++++++++
::
simple-error-model.cc
/* simple-error-model.cc */
// Error model
// We want to add an error model to node 3's NetDevice
@@ -498,8 +508,8 @@ the receive path of the PointToPointNetDevice. It prints out the string
"Corrupt!" for each packet received at node n3. Next, we return to the error
model to add in a subclass that performs more interesting error modeling.
Add subclass
************
Add a Subclass
**************
The trivial base class ErrorModel does not do anything interesting, but it
provides a useful base class interface (Corrupt () and Reset ()), forwarded to
@@ -522,7 +532,7 @@ Here are a few simple requirements we will consider:
of granularity.
* Ability to enable/disable (default is enabled)
How to subclass
How to Subclass
+++++++++++++++
We declare BasicErrorModel to be a subclass of ErrorModel as follows,::
@@ -540,7 +550,7 @@ We declare BasicErrorModel to be a subclass of ErrorModel as follows,::
}
and configure the subclass GetTypeId function by setting a unique TypeId string
and setting the Parent to ErrorModel:::
and setting the Parent to ErrorModel::
TypeId RateErrorModel::GetTypeId (void)
{
@@ -549,12 +559,12 @@ and setting the Parent to ErrorModel:::
.AddConstructor<RateErrorModel> ()
...
Build-core-functions-and-unit-tests
Build Core Functions and Unit Tests
***********************************
assert macros
Assert Macros
+++++++++++++
Writing unit tests
Writing Unit Tests
++++++++++++++++++
+107 -34
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Adding a New Module to |ns3|
----------------------------
@@ -20,7 +21,9 @@ example, the spectrum module can be found here: ::
src/spectrum
A prototypical module has the following directory structure and
required files: ::
required files:
.. sourcecode:: text
src/
module-name/
@@ -39,29 +42,39 @@ Not all directories will be present in each module.
Step 2 - Create your new module based on the template module
************************************************************
A python program is provided in the source directory that will create a skeleton for a new module ::
A python program is provided in the source directory that will create a skeleton for a new module
src/create-module.py
.. sourcecode:: bash
For the purposes of this discussion we will assume that your new module is called "new-module". From the ``src`` directory, do the following to create the new module: ::
$ src/create-module.py
./create-module.py new-module
For the purposes of this discussion we will assume that your new module is called "new-module". From the ``src`` directory, do the following to create the new module:
Next, cd into ``new-module``; you will find this directory layout: ::
.. sourcecode:: bash
examples helper model test wscript
$ ./create-module.py new-module
Next, cd into ``new-module``; you will find this directory layout:
.. sourcecode:: text
$ examples helper model test wscript
We next walk through how to customize this module. All |ns3| modules
depend on the 'core' module and usually on other modules. This
dependency is specified in the wscript file.
Let's assume that 'new-module' depends on the internet,
mobility, and aodv modules. Then the call to the function that will
create this module should look like this before editing: ::
create this module should look like this before editing:
.. sourcecode:: python
def build(bld):
module = bld.create_ns3_module('new-module', ['core'])
and after editing: ::
and after editing:
.. sourcecode:: python
def build(bld):
module = bld.create_ns3_module('new-module', ['internet', 'mobility', 'aodv'])
@@ -82,18 +95,24 @@ Step 3 - Adding to your module's source files
*********************************************
If your new module has model and/or helper source files, then they
must be specified in your ::
must be specified in your
.. sourcecode:: text
src/new-module/wscript
file by modifying it with your text editor.
As an example, the source files for the spectrum module are specified
in ::
in
.. sourcecode:: text
src/spectrum/wscript
with the following list of source files: ::
with the following list of source files:
.. sourcecode:: python
module.source = [
'model/spectrum-model.cc',
@@ -112,22 +131,28 @@ Step 4 - Specify your module's header files
*******************************************
If your new module has model and/or helper header files, then they
must be specified in your ::
must be specified in your
.. sourcecode:: text
src/new-module/wscript
file by modifying it with your text editor.
As an example, the header files for the spectrum module are specified
in ::
in
.. sourcecode:: text
src/spectrum/wscript
with the following function call, module name, and list of header
files. Note that the argument for the function new_task_gen() tells
waf to install this module's headers with the other |ns3| headers: ::
waf to install this module's headers with the other |ns3| headers:
headers = bld.new_task_gen(features=['ns3header'])
.. sourcecode:: python
headers = bld(features='ns3header')
headers.module = 'spectrum'
@@ -147,17 +172,23 @@ waf to install this module's headers with the other |ns3| headers: ::
Step 5 - Specify your module's tests
************************************
If your new module has tests, then they must be specified in your ::
If your new module has tests, then they must be specified in your
.. sourcecode:: text
src/new-module/wscript
file by modifying it with your text editor.
As an example, the tests for the spectrum module are specified in ::
As an example, the tests for the spectrum module are specified in
.. sourcecode:: text
src/spectrum/wscript
with the following function call and list of test suites: ::
with the following function call and list of test suites:
.. sourcecode:: python
module_test = bld.create_ns3_module_test_library('spectrum')
@@ -170,20 +201,26 @@ with the following function call and list of test suites: ::
Step 6 - Specify your module's examples
***************************************
If your new module has examples, then they must be specified in your ::
If your new module has examples, then they must be specified in your
.. sourcecode:: text
src/new-module/examples/wscript
file by modifying it with your text editor.
As an example, the examples for the core module are specified in ::
As an example, the examples for the core module are specified in
.. sourcecode:: text
src/core/examples/wscript
The core module's C++ examples are specified using the following
function calls and source file names. Note that the second argument
for the function ``create_ns3_program()`` is the list of modules that the
program being created depends on: ::
program being created depends on:
.. sourcecode:: python
obj = bld.create_ns3_program('main-callback', ['core'])
obj.source = 'main-callback.cc'
@@ -194,7 +231,9 @@ program being created depends on: ::
The core module's Python examples are specified using the following
function call. Note that the second argument for the function
register_ns3_script() is the list of modules that the Python example
depends on: ::
depends on:
.. sourcecode:: python
bld.register_ns3_script('sample-simulator.py', ['core'])
@@ -207,11 +246,15 @@ are suitable for regression tests. A file called ``examples-to-run.py``
that exists in each module's test directory can control the invocation
of the examples when the test framework runs.
As an example, the examples that are run by ``test.py`` for the core module are specified in ::
As an example, the examples that are run by ``test.py`` for the core module are specified in
.. sourcecode:: text
src/core/test/examples-to-run.py
using the following two lists of C++ and Python examples: ::
using the following two lists of C++ and Python examples:
.. sourcecode:: python
# A list of C++ examples to run in order to ensure that they remain
# buildable and runnable over time. Each tuple in the list contains
@@ -238,7 +281,9 @@ using the following two lists of C++ and Python examples: ::
("sample-simulator.py", "True"),
]
Each tuple in the C++ list of examples to run contains ::
Each tuple in the C++ list of examples to run contains
.. sourcecode:: python
(example_name, do_run, do_valgrind_run)
@@ -249,11 +294,15 @@ is needed because NSC causes illegal instruction crashes with
some tests when they are run under valgrind.
Note that the two conditions are Python statements that
can depend on waf configuration variables. For example, ::
can depend on waf configuration variables. For example,
.. sourcecode:: python
("tcp-nsc-lfn", "NSC_ENABLED == True", "NSC_ENABLED == False"),
Each tuple in the Python list of examples to run contains ::
Each tuple in the Python list of examples to run contains
.. sourcecode:: python
(example_name, do_run)
@@ -261,12 +310,16 @@ where example_name is the Python script to be run and
do_run is a condition under which to run the example.
Note that the condition is a Python statement that can
depend on waf configuration variables. For example, ::
depend on waf configuration variables. For example,
.. sourcecode:: python
("realtime-udp-echo.py", "ENABLE_REAL_TIME == False"),
If your new module has examples, then you must specify which of them
should be run in your ::
should be run in your
.. sourcecode:: text
src/new-module/test/examples-to-run.py
@@ -276,10 +329,30 @@ test.py.
Step 8 - Build and test your new module
***************************************
You can now build and test your module as normal: ::
You can now build and test your module as normal. You must reconfigure
the project as a first step or else your new module will not be included
in the build.
./waf configure --enable-examples --enable-tests
./waf build
./test.py
.. sourcecode:: bash
$ ./waf configure --enable-examples --enable-tests
$ ./waf build
$ ./test.py
and look for your new module's test suite (and example programs, if enabled) in the test output.
Step 9 - Python bindings
************************
Adding Python bindings to your module is optional, and the step is
commented out by default in the ``create-module.py`` script.
.. sourcecode:: python
# bld.ns3_python_bindings()
If you want to include Python bindings (needed only if you want
to write Python ns-3 programs instead of C++ ns-3 programs), you
should uncomment the above and install the Python API scanning
system (covered elsewhere in this manual) and scan your module to
generate new bindings.
+7 -6
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
.. _Object-model:
@@ -26,7 +27,7 @@ Object-oriented behavior
C++ objects, in general, provide common object-oriented capabilities
(abstraction, encapsulation, inheritance, and polymorphism) that are part
of classic object-oriented design. |ns3| objects make use of these
properties; for instance:::
properties; for instance::
class Address
{
@@ -129,7 +130,7 @@ holds true for |ns3| also, but some objects in the system have some additional
frameworks available. Specifically, reference counted objects are usually
allocated using a templated Create or CreateObject method, as follows.
For objects deriving from class :cpp:class:`Object`:::
For objects deriving from class :cpp:class:`Object`::
Ptr<WifiNetDevice> device = CreateObject<WifiNetDevice> ();
@@ -138,7 +139,7 @@ Please do not create such objects using ``operator new``; create them using
For objects deriving from class :cpp:class:`SimpleRefCount`, or other objects
that support usage of the smart pointer class, a templated helper function is
available and recommended to be used:::
available and recommended to be used::
Ptr<B> b = Create<B> ();
@@ -175,7 +176,7 @@ problems. This design is based on elements of the `Component Object Model
binary-level compatibility of replaceable components is not supported and we
have tried to simplify the syntax and impact on model developers.
Exmaples
Examples
********
Aggregation example
@@ -217,7 +218,7 @@ Consider a node pointer ``m_node`` that points to a Node object that has an
implementation of IPv4 previously aggregated to it. The client code wishes to
configure a default route. To do so, it must access an object within the node
that has an interface to the IP forwarding configuration. It performs the
following:::
following::
Ptr<Ipv4> ipv4 = m_node->GetObject<Ipv4> ();
@@ -280,7 +281,7 @@ to the subclass API?"
The answer to this is that in many situations, both techniques will work.
|ns3| provides a templated function for making the syntax of Object
dynamic casting much more user friendly:::
dynamic casting much more user friendly::
template <typename T1, typename T2>
Ptr<T1>
+1
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
.. _Object-names:
+1
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Organization
+25 -25
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: python
Using Python to Run |ns3|
-------------------------
@@ -74,30 +75,30 @@ Running Python Scripts
waf contains some options that automatically update the python path to find the ns3 module. To run example programs, there are two ways to use waf to take care of this. One is to run a waf shell; e.g.:
::
.. sourcecode:: bash
./waf --shell
python examples/mixed-wireless.py
$ ./waf --shell
$ python examples/wireless/mixed-wireless.py
and the other is to use the --pyrun option to waf:
::
.. sourcecode:: bash
./waf --pyrun examples/mixed-wireless.py
$ ./waf --pyrun examples/wireless/mixed-wireless.py
To run a python script under the C debugger:
::
.. sourcecode:: bash
./waf --shell
gdb --args python examples/mixed-wireless.py
$ ./waf --shell
$ gdb --args python examples/wireless/mixed-wireless.py
To run your own Python script that calls |ns3| and that has this path, ``/path/to/your/example/my-script.py``, do the following:
::
.. sourcecode:: bash
./waf --shell
python /path/to/your/example/my-script.py
$ ./waf --shell
$ python /path/to/your/example/my-script.py
Caveats
*******
@@ -118,9 +119,9 @@ Most of the missing APIs can be wrapped, given enough time, patience, and expert
Conversion Constructors
+++++++++++++++++++++++
Conversion constructors (http://publib.boulder.ibm.com/infocenter/compbgpl/v9v111/topic/com.ibm.xlcpp9.bg.doc/language_ref/cplr384.htm) are not fully supported yet by PyBindGen, and they always act as explicit constructors when translating an API into Python. For example, in C++ you can do this:
`Conversion constructors <http://publib.boulder.ibm.com/infocenter/compbgpl/v9v111/topic/com.ibm.xlcpp9.bg.doc/language_ref/cplr384.htm>`_ are not fully supported yet by PyBindGen, and they always act as explicit constructors when translating an API into Python. For example, in C++ you can do this:
::
.. sourcecode:: cpp
Ipv4AddressHelper ipAddrs;
ipAddrs.SetBase ("192.168.0.0", "255.255.255.0");
@@ -188,9 +189,9 @@ will probably have to be that we disable python bindings in CygWin.
If you really care about Python bindings on Windows, try building with mingw and native
python instead. Or else, to build without python bindings, disable python bindings in the configuration stage:
::
.. sourcecode:: bash
./waf configure --disable-python
$ ./waf configure --disable-python
Working with Python Bindings
****************************
@@ -211,9 +212,9 @@ The process by which Python bindings are handled is the following:
If something goes wrong with compiling Python bindings and you just want to ignore them and move on with C++, you can disable Python with:
::
.. sourcecode:: bash
./waf --disable-python
$ ./waf --disable-python
Instructions for Handling New Files or Changed API's
****************************************************
@@ -230,9 +231,9 @@ Scanning the Monolithic Python Bindings
To scan the monolithic Python bindings do the following:
::
.. sourcecode:: bash
./waf --python-scan
$ ./waf --python-scan
Organization of the Monolithic Python Bindings
++++++++++++++++++++++++++++++++++++++++++++++
@@ -269,15 +270,15 @@ Scanning the Modular Python Bindings
To scan the modular Python bindings for the core module, for example, do the following:
::
.. sourcecode:: bash
./waf --apiscan=core
$ ./waf --apiscan=core
To scan the modular Python bindings for all of the modules, do the following:
::
.. sourcecode:: bash
./waf --apiscan=all
$ ./waf --apiscan=all
Creating a New Module
+++++++++++++++++++++
@@ -311,5 +312,4 @@ The ``src/<module>/bindings`` directory may contain the following files, some of
More Information for Developers
*******************************
If you are a developer and need more information on |ns3|'s Python bindings, please see the Python Bindings wiki page at
`<http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings>`_.
If you are a developer and need more information on |ns3|'s Python bindings, please see the `Python Bindings wiki page <http://www.nsnam.org/wiki/NS-3_Python_Bindings>`_.
+26 -17
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Random Variables
----------------
@@ -125,7 +126,7 @@ run number behavior. This seeding and substream state setting must be called
before any random variables are created; e.g::
RngSeedManager::SetSeed (3); // Changes seed from default of 1 to 3
RngSeedManager::SetRun (7); // Changes run number from default of 1 to 7
RngSeedManager::SetRun (7); // Changes run number from default of 1 to 7
// Now, create random variables
Ptr<UniformRandomVariable> x = CreateObject<UniformRandomVariable> ();
Ptr<ExponentialRandomVariable> y = CreateObject<ExponentialRandomVarlable> ();
@@ -143,18 +144,24 @@ independent replications using the substreams.
For ease of use, it is not necessary to control the seed and run number from
within the program; the user can set the ``NS_GLOBAL_VALUE`` environment
variable as follows::
variable as follows:
NS_GLOBAL_VALUE="RngRun=3" ./waf --run program-name
.. sourcecode:: bash
$ NS_GLOBAL_VALUE="RngRun=3" ./waf --run program-name
Another way to control this is by passing a command-line argument; since this is
an |ns3| GlobalValue instance, it is equivalently done such as follows::
an |ns3| GlobalValue instance, it is equivalently done such as follows:
./waf --command-template="%s --RngRun=3" --run program-name
.. sourcecode:: bash
or, if you are running programs directly outside of waf::
$ ./waf --command-template="%s --RngRun=3" --run program-name
./build/optimized/scratch/program-name --RngRun=3
or, if you are running programs directly outside of waf:
.. sourcecode:: bash
$ ./build/optimized/scratch/program-name --RngRun=3
The above command-line variants make it easy to run lots of different
runs from a shell script by just passing a different RngRun index.
@@ -177,7 +184,9 @@ Base class public API
*********************
Below are excerpted a few public methods of class :cpp:class:`RandomVariableStream`
that access the next value in the substream.::
that access the next value in the substream.
::
/**
* \brief Returns a random double from the underlying distribution
@@ -226,7 +235,7 @@ handled by smart pointers.
RandomVariableStream instances can also be used in |ns3| attributes, which means
that values can be set for them through the |ns3| attribute system.
An example is in the propagation models for WifiNetDevice:::
An example is in the propagation models for WifiNetDevice::
TypeId
RandomPropagationDelayModel::GetTypeId (void)
@@ -278,20 +287,20 @@ of the base class RandomVariableStream.
By partitioning the existing sequence of streams from before:
::
.. sourcecode:: text
<-------------------------------------------------------------------------->
stream 0 stream (2^64 - 1)
stream 0 stream (2^64 - 1)
into two equal-sized sets:
::
.. sourcecode:: text
<--------------------------------------------------------------------------->
^ ^^ ^
| || |
stream 0 stream (2^63 - 1) stream 2^63 stream (2^64 - 1)
<- automatically assigned -----><-------- assigned by user----------->
<-------------------------------------------------------------------------->
^ ^^ ^
| || |
stream 0 stream (2^63 - 1) stream 2^63 stream (2^64 - 1)
<- automatically assigned -----------><- assigned by user ----------------->
The first 2^63 streams continue to be automatically assigned, while
the last 2^63 are given stream indices starting with zero up to
+5 -2
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
RealTime
--------
@@ -61,9 +62,11 @@ perspective. Users just need to set the attribute
StringValue ("ns3::RealtimeSimulatorImpl"));
There is a script in ``examples/realtime/realtime-udp-echo.cc`` that
has an example of how to configure the realtime behavior. Try: ::
has an example of how to configure the realtime behavior. Try:
./waf --run realtime-udp-echo
.. sourcecode:: bash
$ ./waf --run realtime-udp-echo
Whether the simulator will work in a best effort or hard limit policy fashion is
governed by the attributes explained in the previous section.
+2
View File
@@ -1,3 +1,5 @@
.. |ns3| replace:: *ns-3*
.. |ns2| replace:: *ns-2*
.. |check| replace:: :math:`\checkmark`
+1
View File
@@ -5,6 +5,7 @@ Support
new-models
new-modules
documentation
enable-modules
enable-tests
troubleshoot
+60 -46
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: bash
Testing framework
-----------------
@@ -27,7 +28,9 @@ properly on all of its supported systems.
Users (and developers) typically will not interact with the buildbot system other
than to read its messages regarding test results. If a failure is detected in
one of the automated build and test jobs, the buildbot will send an email to the
*ns-developers* mailing list. This email will look something like::
*ns-developers* mailing list. This email will look something like
.. sourcecode: text
The Buildbot has detected a new failure of osx-ppc-g++-4.2 on NsNam.
Full details are available at:
@@ -69,20 +72,20 @@ have been built by doing the following
::
./waf configure --enable-examples --enable-tests
./waf
$ ./waf configure --enable-examples --enable-tests
$ ./waf
By default, ``test.py`` will run all available tests and report status
back in a very concise form. Running the command
::
./test.py
$ ./test.py
will result in a number of ``PASS``, ``FAIL``, ``CRASH`` or ``SKIP``
indications followed by the kind of test that was run and its display name.
::
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
@@ -103,7 +106,7 @@ in determining if changes they have made have caused any regressions.
There are a number of options available to control the behavior of ``test.py``.
if you run ``test.py --help`` you should see a command summary like:
::
.. sourcecode:: text
Usage: test.py [options]
@@ -145,7 +148,7 @@ nightly builds using
::
./test.py --html=nightly.html
$ ./test.py --html=nightly.html
In this case, an HTML file named ''nightly.html'' would be created with a pretty
summary of the testing done. A ''human readable'' format is available for users
@@ -153,7 +156,7 @@ interested in the details.
::
./test.py --text=results.txt
$ ./test.py --text=results.txt
In the example above, the test suite checking the |ns3| wireless
device propagation loss models failed. By default no further information is
@@ -164,17 +167,17 @@ to be specified. Running the command
::
./test.py --suite=ns3-wifi-propagation-loss-models
$ ./test.py --suite=ns3-wifi-propagation-loss-models
or equivalently
::
./test.py -s ns3-wifi-propagation-loss-models
$ ./test.py -s ns3-wifi-propagation-loss-models
results in that single test suite being run.
::
.. sourcecode:: text
FAIL: TestSuite ns3-wifi-propagation-loss-models
@@ -182,13 +185,14 @@ To find detailed information regarding the failure, one must specify the kind
of output desired. For example, most people will probably be interested in
a text file::
./test.py --suite=ns3-wifi-propagation-loss-models --text=results.txt
$ ./test.py --suite=ns3-wifi-propagation-loss-models --text=results.txt
This will result in that single test suite being run with the test status written to
the file ''results.txt''.
You should find something similar to the following in that file::
You should find something similar to the following in that file
.. sourcecode:: text
FAIL: Test Suite ''ns3-wifi-propagation-loss-models'' (real 0.02 user 0.01 system 0.00)
PASS: Test Case "Check ... Friis ... model ..." (real 0.01 user 0.00 system 0.00)
@@ -222,21 +226,23 @@ changes to a repository. In this case, ``test.py`` can be told to constrain
the types of tests being run to a particular class of tests. The following
command will result in only the unit tests being run::
./test.py --constrain=unit
$ ./test.py --constrain=unit
Similarly, the following command will result in only the example smoke tests
being run::
./test.py --constrain=unit
$ ./test.py --constrain=unit
To see a quick list of the legal kinds of constraints, you can ask for them
to be listed. The following command
::
./test.py --kinds
$ ./test.py --kinds
will result in the following list being displayed::
will result in the following list being displayed:
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
@@ -256,9 +262,11 @@ to be listed. The following command,
::
./test.py --list
$ ./test.py --list
will result in a list of the test suite being displayed, similar to::
will result in a list of the test suite being displayed, similar to
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
@@ -291,11 +299,11 @@ for C++ examples do not have extensions. Entering
::
./test.py --example=udp-echo
$ ./test.py --example=udp-echo
results in that single example being run.
::
.. sourcecode:: text
PASS: Example examples/udp/udp-echo
@@ -304,7 +312,7 @@ You can specify the directory where ns-3 was built using the
::
./test.py --buildpath=/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build/debug --example=wifi-simple-adhoc
$ ./test.py --buildpath=/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build/debug --example=wifi-simple-adhoc
One can run a single Python example program using the ``--pyexample``
option. Note that the relative path for the example must be included
@@ -312,11 +320,11 @@ and that Python examples do need their extensions. Entering
::
./test.py --pyexample=examples/tutorial/first.py
$ ./test.py --pyexample=examples/tutorial/first.py
results in that single example being run.
::
.. sourcecode:: text
PASS: Example examples/tutorial/first.py
@@ -344,9 +352,11 @@ option.
::
./test.py --list --nowaf
$ ./test.py --list --nowaf
will result in a list of the currently built test suites being displayed, similar to::
will result in a list of the currently built test suites being displayed, similar to:
.. sourcecode:: text
ns3-wifi-propagation-loss-models
ns3-tcp-cwnd
@@ -366,7 +376,7 @@ leaks. This can be selected by using the ``--grind`` option.
::
./test.py --grind
$ ./test.py --grind
As it runs, ``test.py`` and the programs that it runs indirectly, generate large
numbers of temporary files. Usually, the content of these files is not interesting,
@@ -378,7 +388,7 @@ Universal Time (also known as Greenwich Mean Time).
::
./test.py --retain
$ ./test.py --retain
Finally, ``test.py`` provides a ``--verbose`` option which will print
large amounts of information about its progress. It is not expected that this
@@ -386,13 +396,13 @@ will be terribly useful unless there is an error. In this case, you can get
access to the standard output and standard error reported by running test suites
and examples. Select verbose in the following way::
./test.py --verbose
$ ./test.py --verbose
All of these options can be mixed and matched. For example, to run all of the
ns-3 core test suites under valgrind, in verbose mode, while generating an HTML
output file, one would do::
./test.py --verbose --grind --constrain=core --html=results.html
$ ./test.py --verbose --grind --constrain=core --html=results.html
TestTaxonomy
************
@@ -480,7 +490,7 @@ stage, and also (optionally) examples if examples are to be checked:
::
./waf --configure --enable-examples --enable-tests
$ ./waf --configure --enable-examples --enable-tests
Then, build ns-3, and after it is built, just run ``test.py``. ``test.py -h``
will show a number of configuration options that modify the behavior
@@ -501,9 +511,11 @@ The main reason why ``test.py`` is not suitable for debugging is that it is not
In order to execute the test-runner, you run it like any other ns-3 executable
-- using ``waf``. To get a list of available options, you can type::
./waf --run "test-runner --help"
$ ./waf --run "test-runner --help"
You should see something like the following::
You should see something like the following
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-test/ns-3-dev/build'
@@ -537,10 +549,10 @@ option something like,
::
./waf shell
cd build/debug/utils
gdb test-runner
run --suite=global-value --assert
$ ./waf shell
$ cd build/debug/utils
$ gdb test-runner
$ run --suite=global-value --assert
If an error is then found in the global-value test suite, a segfault would be
generated and the (source level) debugger would stop at the ``NS_TEST_ASSERT_MSG``
@@ -556,7 +568,7 @@ option for you. To run one of the tests directly from the test-runner
using ``waf``, you will need to specify the test suite to run along with
the base directory. So you could use the shell and do::
./waf --run "test-runner --basedir=`pwd` --suite=pcap-file-object"
$ ./waf --run "test-runner --basedir=`pwd` --suite=pcap-file-object"
Note the ''backward'' quotation marks on the ``pwd`` command.
@@ -601,7 +613,7 @@ output, run ``test.py`` with the "retain" option:
::
./test.py -r
$ ./test.py -r
and test output can be found in the ``testpy-output/`` directory.
@@ -619,11 +631,11 @@ Try,
::
./waf --run "test-runner --basedir=`pwd` --suite=pcap-file-object --out=myfile.xml"
$ ./waf --run "test-runner --basedir=`pwd` --suite=pcap-file-object --out=myfile.xml"
If you look at the file ``myfile.xml`` you should see something like,
::
.. sourcecode:: xml
<TestSuite>
<SuiteName>pcap-file-object</SuiteName>
@@ -669,7 +681,9 @@ section.
Debugging test suite failures
+++++++++++++++++++++++++++++
To debug test crashes, such as::
To debug test crashes, such as
.. sourcecode:: text
CRASH: TestSuite ns3-wifi-interference
@@ -677,7 +691,7 @@ You can access the underlying test-runner program via gdb as follows, and
then pass the "--basedir=`pwd`" argument to run (you can also pass other
arguments as needed, but basedir is the minimum needed)::
./waf --command-template="gdb %s" --run "test-runner"
$ ./waf --command-template="gdb %s" --run "test-runner"
Waf: Entering directory `/home/tomh/hg/sep09/ns-3-allinone/ns-3-dev-678/build'
Waf: Leaving directory `/home/tomh/hg/sep09/ns-3-allinone/ns-3-dev-678/build'
'build' finished successfully (0.380s)
@@ -699,7 +713,7 @@ such as::
VALGR: TestSuite devices-mesh-dot11s-regression
./waf --command-template="valgrind %s --basedir=`pwd` --suite=devices-mesh-dot11s-regression" --run test-runner
$ ./waf --command-template="valgrind %s --basedir=`pwd` --suite=devices-mesh-dot11s-regression" --run test-runner
Class TestRunner
****************
@@ -736,7 +750,7 @@ and perform these two duties.
The following code will define a new class that can be run by ``test.py``
as a ''unit'' test with the display name, ``my-test-suite-name``.
::
.. sourcecode:: cpp
class MySuite : public TestSuite
{
@@ -766,7 +780,7 @@ In order to create a new test case in the system, all one has to do is to inheri
from the ``TestCase`` base class, override the constructor to give the test
case a name and override the ``DoRun`` method to run the test.
::
.. sourcecode:: cpp
class MyTestCase : public TestCase
{
+30 -23
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Tracing
-------
@@ -243,7 +244,7 @@ provided.
The first thing to do is to read the path backward. The last segment of the path
must be an ``Attribute`` of an ``Object``. In fact, if you had a pointer to the
``Object`` that has the "CongestionWindow" ``Attribute`` handy (call it
``theObject``), you could write this just like the previous example:::
``theObject``), you could write this just like the previous example::
void CwndTracer (uint32_t oldval, uint32_t newval) {}
@@ -269,7 +270,7 @@ aggregation model. The next path segment begins with the "$" character which
indicates a ``GetObject`` call should be made looking for the type that follows.
When a node is initialized by an ``InternetStackHelper`` a number of interfaces
are aggregated to the node. One of these is the TCP level four protocol. The
runtime type of this protocol object is "ns3::TcpL4Protocol". When the
runtime type of this protocol object is ``ns3::TcpL4Protocol''. When the
``GetObject`` is executed, it returns a pointer to the object of this type.
The ``TcpL4Protocol`` class defines an Attribute called "SocketList" which is a
@@ -313,7 +314,7 @@ different trace events and writing them to files. In previous sections,
primarily "Building Topologies," we have seen several varieties of the trace
helper methods designed for use inside other (device) helpers.
Perhaps you will recall seeing some of these variations:::
Perhaps you will recall seeing some of these variations::
pointToPoint.EnablePcapAll ("second");
pointToPoint.EnablePcap ("second", p2pNodes.Get (0)->GetId (), 0);
@@ -342,14 +343,15 @@ stack helpers. Naturally, the trace files should follow a
The trace helpers therefore fall naturally into a two-dimensional taxonomy.
There are subtleties that prevent all four classes from behaving identically,
but we do strive to make them all work as similarly as possible; and whenever
possible there are analogs for all methods in all classes.::
possible there are analogs for all methods in all classes.
| pcap | ascii |
-----------------+------+-------|
Device Helper | | |
-----------------+------+-------|
Protocol Helper | | |
-----------------+------+-------|
+-----------------+---------+---------+
| | pcap | ascii |
+=================+=========+=========+
| Device Helper | |check| | |check| |
+-----------------+---------+---------+
| Protocol Helper | |check| | |check| |
+-----------------+---------+---------+
We use an approach called a ``mixin`` to add tracing functionality to our helper
classes. A ``mixin`` is a class that provides functionality to that is
@@ -393,11 +395,16 @@ Pcap Tracing Device Helper Methods
::
void EnablePcap (std::string prefix, Ptr<NetDevice> nd, bool promiscuous = false, bool explicitFilename = false);
void EnablePcap (std::string prefix, std::string ndName, bool promiscuous = false, bool explicitFilename = false);
void EnablePcap (std::string prefix, NetDeviceContainer d, bool promiscuous = false);
void EnablePcap (std::string prefix, NodeContainer n, bool promiscuous = false);
void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid, bool promiscuous = false);
void EnablePcap (std::string prefix, Ptr<NetDevice> nd,
bool promiscuous = false, bool explicitFilename = false);
void EnablePcap (std::string prefix, std::string ndName,
bool promiscuous = false, bool explicitFilename = false);
void EnablePcap (std::string prefix, NetDeviceContainer d,
bool promiscuous = false);
void EnablePcap (std::string prefix, NodeContainer n,
bool promiscuous = false);
void EnablePcap (std::string prefix, uint32_t nodeid, uint32_t deviceid,
bool promiscuous = false);
void EnablePcapAll (std::string prefix, bool promiscuous = false);
In each of the methods shown above, there is a default parameter called
@@ -502,7 +509,7 @@ enable pcap tracing on a single device.
For example, in order to arrange for a device helper to create a single
promiscuous pcap capture file of a specific name (``my-pcap-file.pcap``) on a
given device, one could:::
given device, one could::
Ptr<NetDevice> nd;
...
@@ -593,7 +600,7 @@ suffix ".tr" instead of ".pcap".
If you want to enable ascii tracing on more than one net device and have all
traces sent to a single file, you can do that as well by using an object to
refer to a single file:::
refer to a single file::
Ptr<NetDevice> nd1;
Ptr<NetDevice> nd2;
@@ -625,7 +632,7 @@ belong to exactly one ``Node``. For example,::
This would result in two files named ``prefix-client-eth0.tr`` and
``prefix-server-eth0.tr`` with traces for each device in the respective trace
file. Since all of the EnableAscii functions are overloaded to take a stream
wrapper, you can use that form as well:::
wrapper, you can use that form as well::
Names::Add ("client" ...);
Names::Add ("client/eth0" ...);
@@ -653,7 +660,7 @@ since the found net device must belong to exactly one ``Node``. For example,::
This would result in a number of ascii trace files being created, each of which
follows the <prefix>-<node id>-<device id>.tr convention. Combining all of the
traces into a single file is accomplished similarly to the examples above:::
traces into a single file is accomplished similarly to the examples above::
NetDeviceContainer d = ...;
...
@@ -761,7 +768,7 @@ and ``NetDevice``- centric versions of the device versions. Instead of
``Node`` and ``NetDevice`` pair constraints, we use protocol and interface
constraints.
Note that just like in the device version, there are six methods:::
Note that just like in the device version, there are six methods::
void EnablePcapIpv4 (std::string prefix, Ptr<Ipv4> ipv4, uint32_t interface);
void EnablePcapIpv4 (std::string prefix, std::string ipv4Name, uint32_t interface);
@@ -941,7 +948,7 @@ suffix ".tr" instead of ".pcap".
If you want to enable ascii tracing on more than one interface and have all
traces sent to a single file, you can do that as well by using an object to
refer to a single file. We have already something similar to this in the "cwnd"
example above:::
example above::
Ptr<Ipv4> protocol1 = node1->GetObject<Ipv4> ();
Ptr<Ipv4> protocol2 = node2->GetObject<Ipv4> ();
@@ -971,7 +978,7 @@ between protocol instances and nodes, For example,::
This would result in two files named "prefix-nnode1Ipv4-i1.tr" and
"prefix-nnode2Ipv4-i1.tr" with traces for each interface in the respective
trace file. Since all of the EnableAscii functions are overloaded to take a
stream wrapper, you can use that form as well:::
stream wrapper, you can use that form as well::
Names::Add ("node1Ipv4" ...);
Names::Add ("node2Ipv4" ...);
@@ -1004,7 +1011,7 @@ one-to-one correspondence between each protocol and its node. For example,::
This would result in a number of ascii trace files being created, each of which
follows the <prefix>-n<node id>-i<interface>.tr convention. Combining all of the
traces into a single file is accomplished similarly to the examples above:::
traces into a single file is accomplished similarly to the examples above::
NodeContainer nodes;
...
+15 -10
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: bash
Troubleshooting
---------------
@@ -7,7 +8,7 @@ This chapter posts some information about possibly common errors in building
or running |ns3| programs.
Please note that the wiki
(`<http://www.nsnam.org/wiki/index.php/Troubleshooting>`_) may have contributed
(`<http://www.nsnam.org/wiki/Troubleshooting>`_) may have contributed
items.
Build errors
@@ -20,20 +21,22 @@ Sometimes, errors can occur with a program after a successful build. These are
run-time errors, and can commonly occur when memory is corrupted or pointer
values are unexpectedly null.
Here is an example of what might occur:::
Here is an example of what might occur::
ns-old:~/ns-3-nsc$ ./waf --run tcp-point-to-point
Entering directory `/home/tomh/ns-3-nsc/build'
$ ./waf --run tcp-point-to-point
Entering directory '/home/tomh/ns-3-nsc/build'
Compilation finished successfully
Command ['/home/tomh/ns-3-nsc/build/debug/examples/tcp-point-to-point'] exited with code -11
The error message says that the program terminated unsuccessfully, but it is
not clear from this information what might be wrong. To examine more
closely, try running it under the `gdb debugger
<http://sources.redhat.com/gdb/>`_:::
<http://sources.redhat.com/gdb/>`_:
ns-old:~/ns-3-nsc$ ./waf --run tcp-point-to-point --command-template="gdb %s"
Entering directory `/home/tomh/ns-3-nsc/build'
.. sourcecode:: bash
$ ./waf --run tcp-point-to-point --command-template="gdb %s"
Entering directory '/home/tomh/ns-3-nsc/build'
Compilation finished successfully
GNU gdb Red Hat Linux (6.3.0.0-1.134.fc5rh)
Copyright 2004 Free Software Foundation, Inc.
@@ -66,7 +69,9 @@ argument to the command template "gdb %s".
This tells us that there was an attempt to dereference a null pointer
socketFactory.
Let's look around line 136 of tcp-point-to-point, as gdb suggests:::
Let's look around line 136 of tcp-point-to-point, as gdb suggests:
.. sourcecode:: cpp
Ptr<SocketFactory> socketFactory = n2->GetObject<SocketFactory> (Tcp::iid);
Ptr<Socket> localSocket = socketFactory->CreateSocket ();
@@ -77,6 +82,6 @@ may be null.
Sometimes you may need to use the `valgrind memory checker
<http://valgrind.org>`_ for more subtle errors. Again, you invoke the use of
valgrind similarly:::
valgrind similarly::
ns-old:~/ns-3-nsc$ ./waf --run tcp-point-to-point --command-template="valgrind %s"
$ ./waf --run tcp-point-to-point --command-template="valgrind %s"
+170 -40
View File
@@ -34,9 +34,10 @@ SOURCES = \
$(SRC)/csma/doc/csma.rst \
$(SRC)/dsdv/doc/dsdv.rst \
$(SRC)/dsr/doc/dsr.rst \
$(SRC)/emu/doc/emu.rst \
$(SRC)/mpi/doc/distributed.rst \
$(SRC)/energy/doc/energy.rst \
$(SRC)/emu/doc/emu.rst \
$(SRC)/fd-net-device/doc/fd-net-device.rst \
$(SRC)/tap-bridge/doc/tap.rst \
$(SRC)/mesh/doc/mesh.rst \
$(SRC)/lte/doc/source/lte.rst \
@@ -48,6 +49,7 @@ SOURCES = \
$(SRC)/propagation/doc/propagation.rst \
$(SRC)/network/doc/network-overview.rst \
$(SRC)/network/doc/packets.rst \
$(SRC)/network/doc/error-model.rst \
$(SRC)/network/doc/sockets-api.rst \
$(SRC)/network/doc/simple.rst \
$(SRC)/network/doc/queue.rst \
@@ -56,6 +58,7 @@ SOURCES = \
$(SRC)/internet/doc/ipv6.rst \
$(SRC)/internet/doc/routing-overview.rst \
$(SRC)/internet/doc/tcp.rst \
$(SRC)/internet/doc/codel.rst \
$(SRC)/mobility/doc/mobility.rst \
$(SRC)/olsr/doc/olsr.rst \
$(SRC)/openflow/doc/openflow-switch.rst \
@@ -64,9 +67,20 @@ SOURCES = \
$(SRC)/wimax/doc/wimax.rst \
$(SRC)/uan/doc/uan.rst \
$(SRC)/topology-read/doc/topology.rst \
$(SRC)/stats/doc/statistics.rst \
$(SRC)/spectrum/doc/spectrum.rst \
$(SRC)/stats/doc/adaptor.rst \
$(SRC)/stats/doc/aggregator.rst \
$(SRC)/stats/doc/collector.rst \
$(SRC)/stats/doc/data-collection-helpers.rst \
$(SRC)/stats/doc/data-collection-overview.rst \
$(SRC)/stats/doc/data-collection.rst \
$(SRC)/stats/doc/probe.rst \
$(SRC)/stats/doc/scope-and-limitations.rst \
$(SRC)/netanim/doc/animation.rst \
$(SRC)/flow-monitor/doc/flow-monitor.rst \
$(SRC)/wave/doc/wave.rst \
$(SRC)/sixlowpan/doc/sixlowpan.rst \
$(SRC)/lr-wpan/doc/lr-wpan.rst \
# list all model library figure files that need to be copied to
# $SOURCETEMP/figures. For each figure to be included in all
@@ -89,19 +103,35 @@ SOURCEFIGS = \
$(SRC)/wifi/doc/WifiArchitecture.dia \
$(SRC)/wifi/doc/snir.dia \
$(SRC)/wimax/doc/WimaxArchitecture.dia \
$(SRC)/lte/doc/source/figures/epc-ctrl-arch.dia \
$(SRC)/lte/doc/source/figures/epc-data-flow-dl.dia \
$(SRC)/lte/doc/source/figures/epc-data-flow-ul.dia \
$(SRC)/lte/doc/source/figures/epc-profiling-scenario.dia \
$(SRC)/lte/doc/source/figures/epc-topology.dia \
$(SRC)/lte/doc/source/figures/epc-topology-x2-enhanced.dia \
$(SRC)/lte/doc/source/figures/eutran-profiling-scenario.dia \
$(SRC)/lte/doc/source/figures/ff-example.dia \
$(SRC)/lte/doc/source/figures/ff-mac-saps.dia \
$(SRC)/lte/doc/source/figures/lte-arch-data-rrc-pdcp-rlc.dia \
$(SRC)/lte/doc/source/figures/lte-enb-architecture.dia \
$(SRC)/lte/doc/source/figures/lte-arch-enb-data.dia \
$(SRC)/lte/doc/source/figures/lte-arch-enb-ctrl.dia \
$(SRC)/lte/doc/source/figures/lte-arch-ue-data.dia \
$(SRC)/lte/doc/source/figures/lte-arch-ue-ctrl.dia \
$(SRC)/lte/doc/source/figures/lte-enb-phy.dia \
$(SRC)/lte/doc/source/figures/lte-ue-phy.dia \
$(SRC)/lte/doc/source/figures/lte-epc-x2-handover-seq-diagram.dia \
$(SRC)/lte/doc/source/figures/lte-epc-e2e-data-protocol-stack.dia \
$(SRC)/lte/doc/source/figures/lte-interference-test-scenario.dia \
$(SRC)/lte/doc/source/figures/lte-ue-architecture.dia \
$(SRC)/lte/doc/source/figures/lte-subframe-structure.dia \
$(SRC)/lte/doc/source/figures/lte-epc-x2-interface.dia \
$(SRC)/lte/doc/source/figures/lte-harq-architecture.dia \
$(SRC)/lte/doc/source/figures/lte-harq-processes-scheme.dia \
$(SRC)/lte/doc/source/figures/ue-meas-consumer.dia \
$(SRC)/lte/doc/source/figures/ue-meas-piecewise-motion.dia \
$(SRC)/lte/doc/source/figures/ue-meas-piecewise-a1.dia \
$(SRC)/lte/doc/source/figures/ue-meas-piecewise-a1-hys.dia \
$(SRC)/lte/doc/source/figures/lte-cell-selection-timeline.dia \
$(SRC)/lte/doc/source/figures/lte-cell-selection-scenario.dia \
$(SRC)/lte/doc/source/figures/lte-handover-target-scenario.dia \
$(SRC)/lte/doc/source/figures/lena-dual-stripe.eps \
$(SRC)/lte/doc/source/figures/lte-mcs-index.eps \
$(SRC)/lte/doc/source/figures/lenaThrTestCase1.eps \
@@ -118,12 +148,60 @@ SOURCEFIGS = \
$(SRC)/lte/doc/source/figures/lte-rlc-data-retx-dl.eps \
$(SRC)/lte/doc/source/figures/lte-rlc-data-txon-ul.eps \
$(SRC)/lte/doc/source/figures/lte-rlc-data-retx-ul.eps \
$(SRC)/lte/doc/source/figures/fading_pedestrian.png \
$(SRC)/lte/doc/source/figures/fading_vehicular.png \
$(SRC)/lte/doc/source/figures/fading_urban_3kmph.png \
$(SRC)/lte/doc/source/figures/lte-epc-x2-entity-saps.eps \
$(SRC)/lte/doc/source/figures/lte-strongest-cell-handover-algorithm.eps \
$(SRC)/lte/doc/source/figures/lte-phy-interference.pdf \
$(SRC)/lte/doc/source/figures/lte-phy-interference.png \
$(SRC)/lte/doc/source/figures/helpers.pdf \
$(SRC)/lte/doc/source/figures/helpers.png \
$(SRC)/lte/doc/source/figures/mac-random-access-contention.pdf \
$(SRC)/lte/doc/source/figures/mac-random-access-contention.png \
$(SRC)/lte/doc/source/figures/mac-random-access-noncontention.pdf \
$(SRC)/lte/doc/source/figures/mac-random-access-noncontention.png \
$(SRC)/lte/doc/source/figures/rrc-connection-establishment.pdf \
$(SRC)/lte/doc/source/figures/rrc-connection-establishment.png \
$(SRC)/lte/doc/source/figures/rrc-connection-reconfiguration.pdf \
$(SRC)/lte/doc/source/figures/rrc-connection-reconfiguration.png \
$(SRC)/lte/doc/source/figures/rrc-connection-reconfiguration-handover.pdf \
$(SRC)/lte/doc/source/figures/rrc-connection-reconfiguration-handover.png \
$(SRC)/lte/doc/source/figures/nas-attach.pdf \
$(SRC)/lte/doc/source/figures/nas-attach.png \
$(SRC)/lte/doc/source/figures/lte-enb-rrc-states.pdf \
$(SRC)/lte/doc/source/figures/lte-enb-rrc-states.png \
$(SRC)/lte/doc/source/figures/lte-ue-rrc-states.pdf \
$(SRC)/lte/doc/source/figures/lte-ue-rrc-states.png \
$(SRC)/lte/doc/source/figures/fading_pedestrian.pdf \
$(SRC)/lte/doc/source/figures/fading_pedestrian.png \
$(SRC)/lte/doc/source/figures/fading_vehicular.pdf \
$(SRC)/lte/doc/source/figures/fading_vehicular.png \
$(SRC)/lte/doc/source/figures/fading_urban_3kmph.pdf \
$(SRC)/lte/doc/source/figures/fading_urban_3kmph.png \
$(SRC)/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.png \
$(SRC)/lte/doc/source/figures/fr-enhanced-fractional-frequency-reuse-scheme.pdf \
$(SRC)/lte/doc/source/figures/fr-full-frequency-reuse-scheme.png \
$(SRC)/lte/doc/source/figures/fr-full-frequency-reuse-scheme.pdf \
$(SRC)/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.png \
$(SRC)/lte/doc/source/figures/fr-hard-frequency-reuse-scheme.pdf \
$(SRC)/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.png \
$(SRC)/lte/doc/source/figures/fr-soft-fractional-frequency-reuse-scheme.pdf \
$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.png \
$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v1.pdf \
$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.png \
$(SRC)/lte/doc/source/figures/fr-soft-frequency-reuse-scheme-v2.pdf \
$(SRC)/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.png \
$(SRC)/lte/doc/source/figures/fr-strict-frequency-reuse-scheme.pdf \
$(SRC)/lte/doc/source/figures/ffr-distributed-scheme.png \
$(SRC)/lte/doc/source/figures/ffr-distributed-scheme.pdf \
$(SRC)/lte/doc/source/figures/lte-fr-soft-1-rem.png \
$(SRC)/lte/doc/source/figures/lte-fr-soft-1-rem.pdf \
$(SRC)/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.png \
$(SRC)/lte/doc/source/figures/lte-ffr-soft-2-spectrum-trace.pdf \
$(SRC)/lte/doc/source/figures/lte-fr-hard-1-rem.png \
$(SRC)/lte/doc/source/figures/lte-fr-hard-1-rem.pdf \
$(SRC)/lte/doc/source/figures/lte-fr-hard-2-rem.png \
$(SRC)/lte/doc/source/figures/lte-fr-hard-2-rem.pdf \
$(SRC)/lte/doc/source/figures/lte-fr-hard-3-rem.png \
$(SRC)/lte/doc/source/figures/lte-fr-hard-3-rem.pdf \
$(SRC)/lte/doc/source/figures/MCS_1_4.pdf \
$(SRC)/lte/doc/source/figures/MCS_1_4.png \
$(SRC)/lte/doc/source/figures/MCS_5_8.pdf \
@@ -146,50 +224,60 @@ SOURCEFIGS = \
$(SRC)/lte/doc/source/figures/MCS_12_test.pdf \
$(SRC)/lte/doc/source/figures/MCS_16_test.png \
$(SRC)/lte/doc/source/figures/MCS_16_test.pdf \
$(SRC)/lte/doc/source/figures/lte-phy-interference.png \
$(SRC)/lte/doc/source/figures/lte-phy-interference.pdf \
$(SRC)/lte/doc/source/figures/helpers.png \
$(SRC)/lte/doc/source/figures/helpers.pdf \
$(SRC)/lte/doc/source/figures/miesm_scheme.pdf \
$(SRC)/lte/doc/source/figures/miesm_scheme.png \
$(SRC)/lte/doc/source/figures/lte-phy-interference.seqdiag \
$(SRC)/lte/doc/source/figures/helpers.seqdiag \
$(SRC)/lte/doc/source/figures/lte-dl-power-control.png \
$(SRC)/lte/doc/source/figures/lte-dl-power-control.pdf \
$(SRC)/lte/doc/source/figures/lte-ffr-scheduling.png \
$(SRC)/lte/doc/source/figures/lte-ffr-scheduling.pdf \
$(SRC)/lte/doc/source/figures/lte-handover-campaign-rem.pdf \
$(SRC)/lte/doc/source/figures/lte-handover-campaign-rem.png \
$(SRC)/lte/doc/source/figures/lte-legacy-handover-algorithm.pdf \
$(SRC)/lte/doc/source/figures/lte-legacy-handover-algorithm.png \
$(SRC)/uan/doc/auvmobility-classes.dia \
$(SRC)/stats/doc/Stat-framework-arch.png \
$(SRC)/stats/doc/Wifi-default.png \
$(SRC)/netanim/doc/figures/Dumbbell.png \
$(SRC)/netanim/doc/figures/Dumbbell.pdf \
$(SRC)/stats/doc/dcf-overview.dia \
$(SRC)/stats/doc/dcf-overview-with-aggregation.dia \
$(SRC)/stats/doc/file-example.png \
$(SRC)/stats/doc/gnuplot-aggregator.png \
$(SRC)/stats/doc/gnuplot-example.png \
$(SRC)/stats/doc/gnuplot-helper-example.png \
$(SRC)/stats/doc/seventh-packet-byte-count.png \
$(SRC)/netanim/doc/figures/PacketStatistics.png \
$(SRC)/netanim/doc/figures/PacketStatistics.pdf \
$(SRC)/netanim/doc/figures/FastForward.png \
$(SRC)/netanim/doc/figures/FastForward.pdf \
$(SRC)/netanim/doc/figures/Wireless.png \
$(SRC)/netanim/doc/figures/Wireless.pdf \
$(SRC)/netanim/doc/figures/Precision.png \
$(SRC)/netanim/doc/figures/Precision.pdf \
$(SRC)/netanim/doc/figures/Persist.png \
$(SRC)/netanim/doc/figures/Persist.pdf \
$(SRC)/netanim/doc/figures/SimTime.png \
$(SRC)/netanim/doc/figures/SimTime.pdf \
$(SRC)/netanim/doc/figures/NetAnim_3_105.png \
$(SRC)/netanim/doc/figures/NetAnim_3_105.pdf \
$(SRC)/netanim/doc/figures/Trajectory.png \
$(SRC)/netanim/doc/figures/Trajectory.pdf \
$(SRC)/netanim/doc/figures/UpdateRateInterval.png \
$(SRC)/netanim/doc/figures/UpdateRateInterval.pdf \
$(SRC)/netanim/doc/figures/WithoutPrecision.png \
$(SRC)/netanim/doc/figures/WithoutPrecision.pdf \
$(SRC)/netanim/doc/figures/WithPrecision.png \
$(SRC)/netanim/doc/figures/WithPrecision.pdf \
$(SRC)/netanim/doc/figures/NodeCountersChart.png \
$(SRC)/netanim/doc/figures/NodeCountersChart.pdf \
$(SRC)/netanim/doc/figures/NodeCountersTable.png \
$(SRC)/netanim/doc/figures/NodeCountersTable.pdf \
$(SRC)/netanim/doc/figures/RoutingTables.png \
$(SRC)/netanim/doc/figures/RoutingTables.pdf \
$(SRC)/netanim/doc/figures/PacketTimeline.png \
$(SRC)/netanim/doc/figures/PacketTimeline.pdf \
$(SRC)/spectrum/doc/spectrum-channel-phy-interface.png \
$(SRC)/spectrum/doc/spectrum-channel-phy-interface.pdf \
$(SRC)/spectrum/doc/spectrum-analyzer-example.eps \
$(SRC)/lr-wpan/doc/lr-wpan-arch.dia \
$(SRC)/lr-wpan/doc/lr-wpan-data-example.dia \
$(SRC)/lr-wpan/doc/lr-wpan-primitives.dia \
$(SRC)/lr-wpan/doc/802-15-4-ber.eps \
$(SRC)/lr-wpan/doc/802-15-4-per-sens.eps \
$(SRC)/lr-wpan/doc/802-15-4-psr-distance.eps
# specify figures from which .png and .pdf figures need to be
# generated (all dia and eps figures)
IMAGES_EPS = \
$(FIGURES)/testbed.eps \
$(FIGURES)/emulated-channel.eps \
$(FIGURES)/antenna-coordinate-system.eps \
$(FIGURES)/packet.eps \
$(FIGURES)/node.eps \
$(FIGURES)/buffer.eps \
$(FIGURES)/sockets-overview.eps \
$(FIGURES)/antenna-coordinate-system.eps \
$(FIGURES)/internet-node-send.eps \
$(FIGURES)/internet-node-recv.eps \
$(FIGURES)/routing.eps \
@@ -197,19 +285,36 @@ IMAGES_EPS = \
$(FIGURES)/WifiArchitecture.eps \
$(FIGURES)/snir.eps \
$(FIGURES)/WimaxArchitecture.eps \
$(FIGURES)/dcf-overview.eps \
$(FIGURES)/dcf-overview-with-aggregation.eps \
$(FIGURES)/epc-ctrl-arch.eps \
$(FIGURES)/epc-data-flow-dl.eps \
$(FIGURES)/epc-data-flow-ul.eps \
$(FIGURES)/epc-profiling-scenario.eps \
$(FIGURES)/epc-topology.eps \
$(FIGURES)/epc-topology-x2-enhanced.eps \
$(FIGURES)/eutran-profiling-scenario.eps \
$(FIGURES)/ff-example.eps \
$(FIGURES)/ff-mac-saps.eps \
$(FIGURES)/lte-arch-data-rrc-pdcp-rlc.eps \
$(FIGURES)/lte-enb-architecture.eps \
$(FIGURES)/lte-arch-enb-data.eps \
$(FIGURES)/lte-arch-enb-ctrl.eps \
$(FIGURES)/lte-arch-ue-data.eps \
$(FIGURES)/lte-arch-ue-ctrl.eps \
$(FIGURES)/lte-enb-phy.eps \
$(FIGURES)/lte-ue-phy.eps \
$(FIGURES)/lte-epc-e2e-data-protocol-stack.eps \
$(FIGURES)/lte-interference-test-scenario.eps \
$(FIGURES)/lte-ue-architecture.eps \
$(FIGURES)/lte-subframe-structure.eps \
$(FIGURES)/lte-epc-x2-interface.eps \
$(FIGURES)/lte-harq-architecture.eps \
$(FIGURES)/lte-harq-processes-scheme.eps \
$(FIGURES)/ue-meas-consumer.eps \
$(FIGURES)/ue-meas-piecewise-motion.eps \
$(FIGURES)/ue-meas-piecewise-a1.eps \
$(FIGURES)/ue-meas-piecewise-a1-hys.eps \
$(FIGURES)/lte-cell-selection-timeline.eps \
$(FIGURES)/lte-cell-selection-scenario.eps \
$(FIGURES)/lte-handover-target-scenario.eps \
$(FIGURES)/lena-dual-stripe.eps \
$(FIGURES)/lte-mcs-index.eps \
$(FIGURES)/lenaThrTestCase1.eps \
@@ -226,7 +331,17 @@ IMAGES_EPS = \
$(FIGURES)/lte-rlc-data-retx-dl.eps \
$(FIGURES)/lte-rlc-data-txon-ul.eps \
$(FIGURES)/lte-rlc-data-retx-ul.eps \
$(FIGURES)/lte-epc-x2-handover-seq-diagram.eps \
$(FIGURES)/lte-epc-x2-entity-saps.eps \
$(FIGURES)/lte-strongest-cell-handover-algorithm.eps \
$(FIGURES)/auvmobility-classes.eps \
$(FIGURES)/spectrum-analyzer-example.eps \
$(FIGURES)/lr-wpan-primitives.eps \
$(FIGURES)/lr-wpan-data-example.eps \
$(FIGURES)/lr-wpan-arch.eps \
$(FIGURES)/802-15-4-ber.eps \
$(FIGURES)/802-15-4-per-sens.eps \
$(FIGURES)/802-15-4-psr-distance.eps
# rescale pdf figures as necessary
$(FIGURES)/testbed.pdf_width = 5in
@@ -242,30 +357,44 @@ $(FIGURES)/routing.pdf_width = 6in
$(FIGURES)/routing-specialization.pdf_width = 5in
$(FIGURES)/snir.pdf_width = 3in
$(FIGURES)/lte-interference-test-scenario.pdf_width = 3in
$(FIGURES)/epc-ctrl-arch.pdf_width = 8cm
$(FIGURES)/epc-topology.pdf_width = 4in
$(FIGURES)/epc-topology-x2-enhanced.pdf_width = 14cm
$(FIGURES)/lte-arch-data-rrc-pdcp-rlc.pdf_width = 3in
$(FIGURES)/lte-epc-e2e-data-protocol-stack.pdf_width = 15cm
$(FIGURES)/ff-mac-saps.pdf_width = 5in
$(FIGURES)/ff-example.pdf_width = 5in
$(FIGURES)/lte-arch-enb-data.pdf_width = 6cm
$(FIGURES)/lte-arch-enb-ctrl.pdf_width = 10cm
$(FIGURES)/lte-arch-ue-data.pdf_width = 6cm
$(FIGURES)/lte-arch-ue-ctrl.pdf_width = 10cm
$(FIGURES)/lte-rlc-implementation-model.pdf_width = 20in
$(FIGURES)/lte-rlc-data-txon-dl.pdf_width = 10cm
$(FIGURES)/lte-rlc-data-txon-ul.pdf_width = 10cm
$(FIGURES)/lte-rlc-data-retx-ul.pdf_width = 10cm
$(FIGURES)/lte-phy-interference.pdf_width = 12cm
$(FIGURES)/lte-subframe-structure.pdf_width = 2in
$(FIGURES)/mac-random-access-contention.pdf_width = 10cm
$(FIGURES)/mac-random-access-noncontention.pdf_width = 15cm
$(FIGURES)/helpers.pdf_width = 8cm
$(FIGURES)/auvmobility-classes.pdf_width = 10cm
$(FIGURES)/spectrum-analyzer-example.pdf_width = 15cm
$(FIGURES)/lr-wpan-primitives.pdf_width = 3in
$(FIGURES)/lr-wpan-arch.pdf_width = 2in
IMAGES_PNG = ${IMAGES_EPS:.eps=.png}
IMAGES_PDF = ${IMAGES_EPS:.eps=.pdf}
IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
RESCALE = ../../utils/rescale-pdf.sh
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
%.png : %.eps; $(CONVERT) $< $@
%.pdf : %.eps
$(EPSTOPDF) $< -o=$@
if test x$($@_width) != x; then ./rescale-pdf.sh $($@_width) $@ ; fi
@if test x$($@_width) != x; then $(RESCALE) $($@_width) $@ ; fi
# You can set these variables from the command line.
SPHINXOPTS =
@@ -280,6 +409,8 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(S
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
.NOTPARALLEL:
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@@ -300,11 +431,10 @@ help:
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
copy-sources: $(SOURCES)
@rm -rf $(SOURCETEMP)
@mkdir -p $(SOURCETEMP)
@mkdir -p $(FIGURES)
@cp -r $(SOURCES) $(SOURCETEMP)
@cp -r $(SOURCEFIGS) $(FIGURES)
@cp -r -p $(SOURCES) $(SOURCETEMP)
@cp -r -p $(SOURCEFIGS) $(FIGURES)
clean:
-rm -rf $(BUILDDIR)/*
Binary file not shown.
-14
View File
@@ -1,14 +0,0 @@
#!/usr/bin/env bash
TMPDIR=/tmp
TMPFILE=`mktemp`
echo "\documentclass{book}
\usepackage{pdfpages}
\begin{document}
\includepdf[width=${1},fitpaper]{${2}}
\end{document}" >${TMPFILE}.tex
pdflatex -output-directory /tmp ${TMPFILE}.tex >/dev/null 2>/dev/null
cp ${TMPFILE}.pdf ${2}
rm -f ${TMPFILE}{,.{tex,aux,log,pdf}}
+15 -3
View File
@@ -5,17 +5,28 @@ Emulation Overview
|ns3| has been designed for integration into testbed and virtual machine
environments. We have addressed this need by providing two kinds of net devices.
The first kind, which we call an ``Emu`` ``NetDevice`` allows |ns3| simulations
The first kind of device is a file descriptor net device (``FdNetDevice``),
which is a generic device type that can read and write from a file descriptor.
By associating this file descriptor with different things on the host
system, different capabilities can be provided. For instance, the
FdNetDevice can be associated with an underlying packet socket to provide
emulation capabilities. This allows |ns3| simulations
to send data on a "real" network. The second kind, called a ``Tap``
``NetDevice`` allows a "real" host to participate in an |ns3| simulation as if
it were one of the simulated nodes. An |ns3| simulation may be constructed with
any combination of simulated, ``Emu``, or ``Tap`` devices.
any combination of simulated or emulated devices.
**Note:** Prior to ns-3.17, the emulation capability was provided by a
special device called an ``Emu`` NetDevice; the ``Emu`` NetDevice has
been superseded by the ``FdNetDevice``, and will be deprecated and removed
in future revisions of |ns3|.
One of the use-cases we want to support is that of a testbed. A concrete example
of an environment of this kind is the ORBIT testbed. ORBIT is a laboratory
emulator/field trial network arranged as a two dimensional grid of 400 802.11
radio nodes. We integrate with ORBIT by using their "imaging" process to load
and run |ns3| simulations on the ORBIT array. We use our ``Emu`` ``NetDevice``
and run |ns3| simulations on the ORBIT array. We can use our
``EmuFdNetDevice``
to drive the hardware in the testbed and we can accumulate results either using
the |ns3| tracing and logging functions, or the native ORBIT data gathering
techniques. See `<http://www.orbit-lab.org/>`_ for details on the ORBIT
@@ -73,4 +84,5 @@ simulated |ns3| networks.
.. toctree::
emu
fd-net-device
tap
+7 -3
View File
@@ -8,13 +8,13 @@ available in five forms:
* `ns-3 Doxygen <http://www.nsnam.org/doxygen/index.html>`_: Documentation of the public APIs of the simulator
* Tutorial, Manual, and Model Library *(this document)* for the `latest release <http://www.nsnam.org/documentation/latest/>`_ and `development tree <http://www.nsnam.org/ns-3-dev/documentation/>`_
* `ns-3 wiki <http://www.nsnam.org/wiki/index.php/Main_Page>`_
* `ns-3 wiki <http://www.nsnam.org/wiki>`_
This document is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ for `Sphinx <http://sphinx.pocoo.org/>`_ and is maintained in the
``doc/models`` directory of ns-3's source code.
.. toctree::
:maxdepth: 2
:maxdepth: 1
organization
animation
@@ -26,12 +26,14 @@ This document is written in `reStructuredText <http://docutils.sourceforge.net/r
buildings
click
csma
data-collection
dsdv
dsr
emulation-overview
energy
flow-monitor
internet-models
lr-wpan
lte
mesh
distributed
@@ -41,8 +43,10 @@ This document is written in `reStructuredText <http://docutils.sourceforge.net/r
openflow-switch
point-to-point
propagation
statistics
spectrum
sixlowpan
topology
uan
wave
wifi
wimax
+1
View File
@@ -8,3 +8,4 @@ Internet Models
ipv6
routing-overview
tcp
codel
+1
View File
@@ -4,6 +4,7 @@ Network Module
.. toctree::
packets
error-model
network-overview
sockets-api
simple
+7 -1
View File
@@ -34,7 +34,13 @@ Finally, additional documentation about various aspects of |ns3| may
exist on the `project wiki <http://www.nsnam.org/wiki>`_.
A sample outline of how to write model library documentation can be
found in :mod:`src/template/doc`.
found by executing the ``create-module.py`` program and looking at the
template created in the file ``new-module/doc/new-module.rst``.
.. sourcecode:: bash
$ cd src
$ ./create-module.py new-module
The remainder of this document is organized alphabetically by module name.
+25 -16
View File
@@ -1,33 +1,42 @@
/**
* @anchor modules_anchor
*
* @defgroup constructs C++ Constructs Used by All Modules
* \brief These are C++ constructs defined by the modules.
*
* @defgroup constants Constants
* @brief Constants you can change
*
* @defgroup utils Utils
* @brief The utils directory is for various programs and scripts related
* to code coverage, test suites, style checking, and benchmarking.
*
*/
/**
* @defgroup core Core
* \brief The "core" module contains:
* - a time management class to hold a time and convert between various time units: ns3::Time
* - a scheduler base class used to implement new simulation event schedulers:
* - a time management class to hold a time and convert between various
* time units: ns3::Time
* - a scheduler base class used to implement new simulation event
* schedulers:
* ns3::Scheduler and ns3::SchedulerFactory
* - a simulator class used to create, schedule and cancel events: ns3::Simulator
* - a simulator class used to create, schedule and cancel events:
* ns3::Simulator
* - a Functor class: ns3::Callback
* - an os-independent interface to get access to the elapsed wall clock time: ns3::SystemWallClockMs
* - a class to register regression tests with the test manager: ns3::Test and ns3::TestManager
* - debugging facilities: \ref logging, \ref assert
* - an os-independent interface to get access to the elapsed wall clock
* time: ns3::SystemWallClockMs
* - a class to register regression tests with the test manager: ns3::Test
* and ns3::TestManager
* - debugging facilities: \ref debugging
* - \ref randomvariable
* - a base class for objects which need to support per-instance "attributes" and
* trace sources: ns3::ObjectBase
* - a base class for objects which need to support per-instance
* "attributes" and trace sources: ns3::ObjectBase
* - a base class for objects which need to support reference counting
* and dynamic object aggregation: ns3::Object
* - a smart-pointer class ns3::Ptr designed to work together with ns3::Object
* - a configuration class used to set and control all attributes and trace sources
* in a simulation: ns3::Config.
*
* - a smart-pointer class ns3::Ptr designed to work together with
* ns3::Object
* - a configuration class used to set and control all attributes and
* trace sources in a simulation: ns3::Config.
*/
/**
* @ingroup core
* @defgroup debugging Debugging tools
*
* @brief Assertions, breakpoints, logging, and abnormal program termination
*/
+8 -6
View File
@@ -21,7 +21,7 @@
# to force us into the public case.)
#
# The approach to identify cases 1 & 2 is to test:
# a. We're on nsnam.org (actually, nsnam.ece.gatech.edu), and
# a. We're on nsnam.org (actually, nsnam-www.coe-hosted.gatech.edu), and
# b. We're in the tmp build directory, /tmp/daily-nsnam/
# (This is the directory used by the update-* scripts
# run by cron jobs.)
@@ -71,6 +71,7 @@ EOF
# script arguments
say
say using doxygen: $(which doxygen) $(doxygen --version)
public=0
nsnam=0
daily=0
@@ -91,9 +92,9 @@ while getopts :pndth option ; do
esac
done
# Hostname, fully qualified, e.g. nsnam.ece.gatech.edu
# Hostname, fully qualified, e.g. nsnam-www.coe-hosted.gatech.edu
HOST=`hostname`
NSNAM="nsnam.ece.gatech.edu"
NSNAM="nsnam-www.coe-hosted.gatech.edu"
# Build directory
DAILY="^/tmp/daily-nsnam/"
@@ -201,8 +202,9 @@ fi
# by Sphinx when rebuilding
cd doc 2>&1 >/dev/null
for d in {manual,models,tutorial{,-pt-br}}/build/{single,}html/_static/ ; do
# expect the copy to fail if the destination dir
# hasn't been created by a prior doc build
if [ ! -d $d ]; then
mkdir -p $d
fi
cp ns3_html_theme/static/ns3_version.js $d
done
cd - 2>&1 >/dev/null
@@ -211,4 +213,4 @@ cd - 2>&1 >/dev/null
say
say "outf = $outf:"
cat -n $outf
say Done.
say Done.
+4
View File
@@ -1,3 +1,7 @@
<!-- ns-3 doxygen header, based on
HTML header for doxygen 1.8.3.1
Verified compatible with 1.8.6
-->
<!-- start footer part -->
<!--BEGIN GENERATE_TREEVIEW-->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+16 -11
View File
@@ -1,18 +1,23 @@
<!-- ns-3 doxygen header, based on
HTML header for doxygen 1.8.3.1
Verified compatible with 1.8.6
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"></meta>
<meta http-equiv="X-UA-Compatible" content="IE=9"></meta>
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"></link>
<script type="text/javascript" src="$relpath$jquery.js"></script>
<script type="text/javascript" src="$relpath$dynsections.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen $doxygenversion"/>
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="$relpath^jquery.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script>
$treeview
$search
$mathjax
<link href="$relpath$doxygen.css" rel="stylesheet" type="text/css"></link>
<link href="$relpath$ns3_stylesheet.css" rel="stylesheet" type="text/css"></link>
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
$extrastylesheet
<link href="$relpath$favicon.ico" rel="shortcut icon" type="image/ico"></link>
<script type="text/javascript" src="$relpath$drop-down-menu.js"></script>
<script type="text/javascript" src="$relpath$ns3_version.js"></script>
@@ -99,7 +104,7 @@ $mathjax
</tr>
</tbody>
</table>
<script type="text/javascript">ns3_write_links()</script>
<script type="text/javascript">ns3_write_links();</script>
</div>
<!--END TITLEAREA-->
<!-- end header part -->
File diff suppressed because it is too large Load Diff
+6 -1
View File
@@ -25,6 +25,11 @@ div.body h6 {
background-image: url('nav_f.png');
}
/* Sphinx figure captions */
p.caption {
font-weight: bold;
}
/* Doxygen side bar */
#nav-tree {
font-size: 12px;
@@ -185,7 +190,7 @@ div.sphinxsidebar a {
#ns3-menu .menu div {
background: #94A901;
background-size: 100%; 100%
background-size: 100%;
color:#ffffff;
position: absolute;
visibility: hidden;
+11 -6
View File
@@ -31,7 +31,7 @@ and/or the buildbots have been testing
-- ./waf --pyrun src/flow-monitor/examples/wifi-olsr-flowmon.py --vis
- ensure that tests pass (./test.py -g) and make sure that the buildbots
are reporting blue based on the tip of the repository
- revise and check in AUTHORS, RELEASE_NOTES, and CHANGES>html
- revise and check in AUTHORS, RELEASE_NOTES, and CHANGES.html
- required versions for related libraries (nsc, netanim, pybindgen)
are correct
- confirm that Doxygen builds cleanly (./waf doxygen),
@@ -102,7 +102,7 @@ do not plan to further touch ns-3-dev, tag ns-3-dev
- change the string 3-dev in the VERSION file to the real version
(e.g. 3.14) This must agree with the version name you chose in the clone.
- change the version and release string for the documentation in
doc/manual/source, doc/tutorial/source, doc/tutorial-pt/source,
doc/manual/source, doc/tutorial/source, doc/tutorial-pt-br/source,
and doc/models/source conf.py files
This should hopefully be updated in the future to simply pull from the
VERSION file.
@@ -140,12 +140,13 @@ preparing the documentation
1. If final release, build release documentation
- sudo bash; su nsnam; cd /home/nsnam/bin
./update-doxygen-release ns-3.x
./update-manual-release ns-3.x
./update-tutorial-release ns-3.x
./update-docs -r http://code.nsnam.org/ns-3.x -R
2. Check if these new files are available on the website
3. In ns-3-dev, edit the tutorial "Getting Started" page to
update the release version numbers.
preparing the Wordpress-based main website
------------------------------------------
@@ -157,6 +158,7 @@ http://www.nsnam.org/ns-3.x
- Documentation
2. Repoint http://www.nsnam.org/releases/latest to the new page
Repoint http://www.nsnam.org/documentation/latest to the new page
Repoint /var/www/html/doxygen-release to the new release doxygen.
3. Update the Older Releases page to create an entry for the previous
@@ -166,7 +168,10 @@ Documentation)
4. The main page http://www.nsnam.org should point to
ns-3.x in the "Download" and "Documentation" boxes
5. Create a blog entry to announce release
5. The releases page http://www.nsnam.org must be updated (including
source tarball link)
6. Create a blog entry to announce release
ns-3 wiki edits
---------------
+2
View File
@@ -25,6 +25,8 @@ IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
.NOTPARALLEL:
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
%.pdf : %.eps; $(EPSTOPDF) $< -o=$@
@@ -30,9 +30,9 @@ Baixando o ns-3
present on your system before proceeding. |ns3| provides a wiki
for your reading pleasure that includes pages with many useful hints and tips.
One such page is the "Installation" page,
http://www.nsnam.org/wiki/index.php/Installation.
http://www.nsnam.org/wiki/Installation.
O |ns3|, como um todo, é bastante complexo e possui várias dependências. Isto também é verdade para as ferramentas que fornecem suporte ao |ns3| (exemplos, `"GNU toolchain"`, Mercurial e um editor para a programação), desta forma é necessário assegurar que várias bibliotecas estejam presentes no sistema. O |ns3| fornece um Wiki com várias dicas sobre o sistema. Uma das páginas do Wiki é a página de instalação (`"Installation"`) que está disponível em: http://www.nsnam.org/wiki/index.php/Installation.
O |ns3|, como um todo, é bastante complexo e possui várias dependências. Isto também é verdade para as ferramentas que fornecem suporte ao |ns3| (exemplos, `"GNU toolchain"`, Mercurial e um editor para a programação), desta forma é necessário assegurar que várias bibliotecas estejam presentes no sistema. O |ns3| fornece um Wiki com várias dicas sobre o sistema. Uma das páginas do Wiki é a página de instalação (`"Installation"`) que está disponível em: http://www.nsnam.org/wiki/Installation.
..
The "Prerequisites" section of this wiki page explains which packages are
@@ -740,7 +740,7 @@ Agora, ao executar o programa ``hello-simulator`` devemos ter a seguinte a sa
..
If you want to run programs under another tool such as gdb or valgrind,
see this `wiki entry
<http://www.nsnam.org/wiki/index.php/User_FAQ#How_to_run_NS-3_programs_under_another_tool>`_.
<http://www.nsnam.org/wiki/User_FAQ#How_to_run_NS-3_programs_under_another_tool>`_.
Se o leitor for executar seus programas sob outras ferramentas, tais como Gdb ou Valgrind, é recomendável que leia a seguinte `entrada no Wiki <http://www.nsnam.org/wiki/index.php/User_FAQ#How_to_run_NS-3_programs_under_another_tool>`_.
Se o leitor for executar seus programas sob outras ferramentas, tais como Gdb ou Valgrind, é recomendável que leia a seguinte `entrada no Wiki <http://www.nsnam.org/wiki/User_FAQ#How_to_run_NS-3_programs_under_another_tool>`_.
+1 -1
View File
@@ -30,7 +30,7 @@ Este
* Tutorial *(este documento)*, manual, modelos de bibliotecas para a `última release <http://www.nsnam.org/documentation/latest/>`_ e `árvore de desenvolvimento <http://www.nsnam.org/ns-3-dev/documentation/>`_;
* `ns-3 wiki <http://www.nsnam.org/wiki/index.php/Main_Page>`_.
* `ns-3 wiki <http://www.nsnam.org/wiki/Main_Page>`_.
..
This document is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ for `Sphinx <http://sphinx.pocoo.org/>`_ and is maintained in the
+3 -3
View File
@@ -132,15 +132,15 @@ O |ns3|
* Licença de código aberto compatível com GNU GPLv2;
* `Wiki <http://www.nsnam.org/wiki/index.php>`_;
* `Wiki <http://www.nsnam.org/wiki>`_;
..
* `Contributed Code
<http://www.nsnam.org/wiki/index.php/Contributed_Code>`_ page, similar to ns-2's popular Contributed Code
<http://www.nsnam.org/wiki/Contributed_Code>`_ page, similar to ns-2's popular Contributed Code
`page
<http://nsnam.isi.edu/nsnam/index.php/Contributed_Code>`_
* Página para `contribuição com o código <http://www.nsnam.org/wiki/index.php/Contributed_Code>`_, similar a página de contribuição do `ns-2 <http://nsnam.isi.edu/nsnam/index.php/Contributed_Code>`_;
* Página para `contribuição com o código <http://www.nsnam.org/wiki/Contributed_Code>`_, similar a página de contribuição do `ns-2 <http://nsnam.isi.edu/nsnam/index.php/Contributed_Code>`_;
..
* Open `bug tracker
+2
View File
@@ -25,6 +25,8 @@ IMAGES = $(IMAGES_EPS) $(IMAGES_PNG) $(IMAGES_PDF)
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
.NOTPARALLEL:
%.eps : %.dia; $(DIA) -t eps $< -e $@
%.png : %.dia; $(DIA) -t png $< -e $@
%.pdf : %.eps; $(EPSTOPDF) $< -o=$@
+66 -64
View File
@@ -1,5 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Building Topologies
-------------------
@@ -337,10 +337,10 @@ the scratch directory and use waf to build just as you did with
the ``first.cc`` example. If you are in the top-level directory of the
repository you just type,
::
.. sourcecode:: bash
cp examples/tutorial/second.cc scratch/mysecond.cc
./waf
$ cp examples/tutorial/second.cc scratch/mysecond.cc
$ ./waf
Warning: We use the file ``second.cc`` as one of our regression tests to
verify that it works exactly as we think it should in order to make your
@@ -353,15 +353,15 @@ If you are following the tutorial religiously (you are, aren't you) you will
still have the NS_LOG variable set, so go ahead and clear that variable and
run the program.
::
.. sourcecode:: bash
export NS_LOG=
./waf --run scratch/mysecond
$ export NS_LOG=
$ ./waf --run scratch/mysecond
Since we have set up the UDP echo applications to log just as we did in
``first.cc``, you will see similar output when you run the script.
::
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -381,7 +381,7 @@ the server.
If you now go and look in the top level directory, you will find three trace
files:
::
.. sourcecode:: text
second-0-0.pcap second-1-0.pcap second-2-0.pcap
@@ -403,13 +403,13 @@ promiscuous-mode trace.
Now, let's follow the echo packet through the internetwork. First, do a
tcpdump of the trace file for the leftmost point-to-point node --- node zero.
::
.. sourcecode:: bash
tcpdump -nn -tt -r second-0-0.pcap
$ tcpdump -nn -tt -r second-0-0.pcap
You should see the contents of the pcap file displayed:
::
.. sourcecode:: text
reading from file second-0-0.pcap, link-type PPP (PPP)
2.000000 IP 10.1.1.1.49153 > 10.1.2.4.9: UDP, length 1024
@@ -422,14 +422,14 @@ device associated with IP address 10.1.1.1 headed for IP address
point-to-point link and be received by the point-to-point net device on node
one. Let's take a look:
::
.. sourcecode:: bash
tcpdump -nn -tt -r second-1-0.pcap
$ tcpdump -nn -tt -r second-1-0.pcap
You should now see the pcap trace output of the other side of the point-to-point
link:
::
.. sourcecode:: text
reading from file second-1-0.pcap, link-type PPP (PPP)
2.003686 IP 10.1.1.1.49153 > 10.1.2.4.9: UDP, length 1024
@@ -444,13 +444,13 @@ pop out on that device headed for its ultimate destination.
Remember that we selected node 2 as the promiscuous sniffer node for the CSMA
network so let's then look at second-2-0.pcap and see if its there.
::
.. sourcecode:: bash
tcpdump -nn -tt -r second-2-0.pcap
$ tcpdump -nn -tt -r second-2-0.pcap
You should now see the promiscuous dump of node two, device zero:
::
.. sourcecode:: text
reading from file second-2-0.pcap, link-type EN10MB (Ethernet)
2.003696 arp who-has 10.1.2.4 (ff:ff:ff:ff:ff:ff) tell 10.1.2.1
@@ -471,7 +471,7 @@ exchange, but is sniffing the network and reporting all of the traffic it sees.
This exchange is seen in the following lines,
::
.. sourcecode:: text
2.003696 arp who-has 10.1.2.4 (ff:ff:ff:ff:ff:ff) tell 10.1.2.1
2.003707 arp reply 10.1.2.4 is-at 00:00:00:00:00:06
@@ -479,7 +479,7 @@ This exchange is seen in the following lines,
Then node one, device one goes ahead and sends the echo packet to the UDP echo
server at IP address 10.1.2.4.
::
.. sourcecode:: text
2.003801 IP 10.1.1.1.49153 > 10.1.2.4.9: UDP, length 1024
@@ -490,40 +490,41 @@ routing and it has figured all of this out for us. But, the echo server node
doesn't know the MAC address of the first CSMA node, so it has to ARP for it
just like the first CSMA node had to do.
::
.. sourcecode:: text
2.003811 arp who-has 10.1.2.1 (ff:ff:ff:ff:ff:ff) tell 10.1.2.4
2.003822 arp reply 10.1.2.1 is-at 00:00:00:00:00:03
The server then sends the echo back to the forwarding node.
::
.. sourcecode:: text
2.003915 IP 10.1.2.4.9 > 10.1.1.1.49153: UDP, length 1024
Looking back at the rightmost node of the point-to-point link,
::
.. sourcecode:: bash
tcpdump -nn -tt -r second-1-0.pcap
$ tcpdump -nn -tt -r second-1-0.pcap
You can now see the echoed packet coming back onto the point-to-point link as
the last line of the trace dump.
::
.. sourcecode:: text
reading from file second-1-0.pcap, link-type PPP (PPP)
2.003686 IP 10.1.1.1.49153 > 10.1.2.4.9: UDP, length 1024
2.003915 IP 10.1.2.4.9 > 10.1.1.1.49153: UDP, length 1024
Lastly, you can look back at the node that originated the echo
::
tcpdump -nn -tt -r second-0-0.pcap
.. sourcecode:: bash
$ tcpdump -nn -tt -r second-0-0.pcap
and see that the echoed packet arrives back at the source at 2.007602 seconds,
::
.. sourcecode:: text
reading from file second-0-0.pcap, link-type PPP (PPP)
2.000000 IP 10.1.1.1.49153 > 10.1.2.4.9: UDP, length 1024
@@ -535,13 +536,13 @@ the same way as when we looked at changing the number of packets echoed in the
``first.cc`` example. Try running the program with the number of "extra"
devices set to four:
::
.. sourcecode:: bash
./waf --run "scratch/mysecond --nCsma=4"
$ ./waf --run "scratch/mysecond --nCsma=4"
You should now see,
::
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -602,20 +603,20 @@ determining node numbers much easier in complex topologies.
Let's clear the old trace files out of the top-level directory to avoid confusion
about what is going on,
::
.. sourcecode:: bash
rm *.pcap
rm *.tr
$ rm *.pcap
$ rm *.tr
If you build the new script and run the simulation setting ``nCsma`` to 100,
::
.. sourcecode:: bash
./waf --run "scratch/mysecond --nCsma=100"
$ ./waf --run "scratch/mysecond --nCsma=100"
you will see the following output:
::
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -628,7 +629,7 @@ Note that the echo server is now located at 10.1.2.101 which corresponds to
having 100 "extra" CSMA nodes with the echo server on the last one. If you
list the pcap files in the top level directory you will see,
::
.. sourcecode:: text
second-0-0.pcap second-100-0.pcap second-101-0.pcap
@@ -643,15 +644,15 @@ To illustrate the difference between promiscuous and non-promiscuous traces, we
also requested a non-promiscuous trace for the next-to-last node. Go ahead and
take a look at the ``tcpdump`` for ``second-100-0.pcap``.
::
.. sourcecode:: bash
tcpdump -nn -tt -r second-100-0.pcap
$ tcpdump -nn -tt -r second-100-0.pcap
You can now see that node 100 is really a bystander in the echo exchange. The
only packets that it receives are the ARP requests which are broadcast to the
entire CSMA network.
::
.. sourcecode:: text
reading from file second-100-0.pcap, link-type EN10MB (Ethernet)
2.003696 arp who-has 10.1.2.101 (ff:ff:ff:ff:ff:ff) tell 10.1.2.1
@@ -659,13 +660,13 @@ entire CSMA network.
Now take a look at the ``tcpdump`` for ``second-101-0.pcap``.
::
.. sourcecode:: bash
tcpdump -nn -tt -r second-101-0.pcap
$ tcpdump -nn -tt -r second-101-0.pcap
You can now see that node 101 is really the participant in the echo exchange.
::
.. sourcecode:: text
reading from file second-101-0.pcap, link-type EN10MB (Ethernet)
2.003696 arp who-has 10.1.2.101 (ff:ff:ff:ff:ff:ff) tell 10.1.2.1
@@ -1180,16 +1181,16 @@ script into the scratch directory and use Waf to build just as you did with
the ``second.cc`` example. If you are in the top-level directory of the
repository you would type,
::
.. sourcecode:: bash
cp examples/third.cc scratch/mythird.cc
./waf
./waf --run scratch/mythird
$ cp examples/third.cc scratch/mythird.cc
$ ./waf
$ ./waf --run scratch/mythird
Again, since we have set up the UDP echo applications just as we did in the
``second.cc`` script, you will see similar output.
::
.. sourcecode:: text
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -1209,7 +1210,7 @@ that it has received its echo back from the server.
If you now go and look in the top level directory, you will find four trace
files from this simulation, two from node zero and two from node one:
::
.. sourcecode:: text
third-0-0.pcap third-0-1.pcap third-1-0.pcap third-1-1.pcap
@@ -1224,13 +1225,13 @@ the code?
Since the echo client is on the Wifi network, let's start there. Let's take
a look at the promiscuous (monitor mode) trace we captured on that network.
::
.. sourcecode:: bash
tcpdump -nn -tt -r third-0-1.pcap
$ tcpdump -nn -tt -r third-0-1.pcap
You should see some wifi-looking contents you haven't seen here before:
::
.. sourcecode:: text
reading from file third-0-1.pcap, link-type IEEE802_11 (802.11)
0.000025 Beacon (ns-3-ssid) [6.0* 9.0 12.0 18.0 24.0 36.0 48.0 54.0 Mbit] IBSS
@@ -1258,13 +1259,13 @@ trace dump.
Now, look at the pcap file of the right side of the point-to-point link,
::
.. sourcecode:: bash
tcpdump -nn -tt -r third-0-0.pcap
$ tcpdump -nn -tt -r third-0-0.pcap
Again, you should see some familiar looking contents:
::
.. sourcecode:: text
reading from file third-0-0.pcap, link-type PPP (PPP)
2.002160 IP 10.1.3.3.49153 > 10.1.2.4.9: UDP, length 1024
@@ -1275,13 +1276,13 @@ again across the point-to-point link.
Now, look at the pcap file of the right side of the point-to-point link,
::
.. sourcecode:: bash
tcpdump -nn -tt -r third-1-0.pcap
$ tcpdump -nn -tt -r third-1-0.pcap
Again, you should see some familiar looking contents:
::
.. sourcecode:: text
reading from file third-1-0.pcap, link-type PPP (PPP)
2.005846 IP 10.1.3.3.49153 > 10.1.2.4.9: UDP, length 1024
@@ -1294,13 +1295,13 @@ as you might expect.
The echo server is on the CSMA network, let's look at the promiscuous trace
there:
::
.. sourcecode:: bash
tcpdump -nn -tt -r third-1-1.pcap
$ tcpdump -nn -tt -r third-1-1.pcap
You should see some familiar looking contents:
::
.. sourcecode:: text
reading from file third-1-1.pcap, link-type EN10MB (Ethernet)
2.005846 ARP, Request who-has 10.1.2.4 (ff:ff:ff:ff:ff:ff) tell 10.1.2.1, length 50
@@ -1326,7 +1327,8 @@ connect the two. We will use the mobility model predefined course change
trace source to originate the trace events. We will need to write a trace
sink to connect to that source that will display some pretty information for
us. Despite its reputation as being difficult, it's really quite simple.
Just before the main program of the ``scratch/mythird.cc`` script, add the
Just before the main program of the ``scratch/mythird.cc`` script (i.e.,
just after the ``NS_LOG_COMPONENT_DEFINE`` statement), add the
following function:
::
@@ -1381,7 +1383,7 @@ trace sink, which will in turn print out the new position.
If you now run the simulation, you will see the course changes displayed as
they happen.
::
.. sourcecode:: text
Build finished successfully (00:00:01)
/NodeList/7/$ns3::MobilityModel/CourseChange x = 10, y = 0
+95 -17
View File
@@ -1,5 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Conceptual Overview
-------------------
@@ -153,7 +153,7 @@ of |ns3| in a directory called ``repos`` under your home
directory. Change into that release directory, and you should find a
directory structure something like the following:
::
.. sourcecode:: bash
AUTHORS examples scratch utils waf.bat*
bindings LICENSE src utils.py waf-tools
@@ -250,16 +250,16 @@ load all of the public header files.
Since you are, of course, following this tutorial religiously, you will
already have done a
::
.. sourcecode:: bash
./waf -d debug --enable-examples --enable-tests configure
$ ./waf -d debug --enable-examples --enable-tests configure
in order to configure the project to perform debug builds that include
examples and tests. You will also have done a
::
.. sourcecode:: bash
./waf
$ ./waf
to build the project. So now if you look in the directory
``../../build/debug/ns3`` you will find the four module include files shown
@@ -340,6 +340,21 @@ Just as in any C++ program, you need to define a main function that will be
the first function run. There is nothing at all special here. Your
|ns3| script is just a C++ program.
The next line sets the time resolution to one nanosecond, which happens
to be the default value:
::
Time::SetResolution (Time::NS);
The resolution is the smallest time value that can be represented (as well as
the smallest representable difference between two time values).
You can change the resolution exactly once. The mechanism enabling this
flexibility is somewhat memory hungry, so once the resolution has been
set explicitly we release the memory, preventing further updates. (If
you don't set the resolution explicitly, it will default to one nanosecond,
and the memory will be released when the simulation starts.)
The next two lines of the script are used to enable two logging components that
are built into the Echo Client and Echo Server applications:
@@ -728,6 +743,69 @@ took care of the hard part for you. The remaining lines of our first
return 0;
}
When the simulator will stop?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|ns3| is a Discrete Event (DE) simulator. In such a simulator, each event is
associated with its execution time, and the simulation proceeds by executing
events in the temporal order of simulation time. Events may cause future
events to be scheduled (for example, a timer may reschedule itself to
expire at the next interval).
The initial events are usually triggered by each object, e.g., IPv6 will
schedule Router Advertisements, Neighbor Solicitations, etc.,
an Application schedule the first packet sending event, etc.
When an event is processed, it may generate zero, one or more events.
As a simulation executes, events are consumed, but more events may (or may
not) be generated.
The simulation will stop automatically when no further events are in the
event queue, or when a special Stop event is found. The Stop event is
created through the
``Simulator::Stop (stopTime);`` function.
There is a typical case where ``Simulator::Stop`` is absolutely necessary
to stop the simulation: when there is a self-sustaining event.
Self-sustaining (or recurring) events are events that always reschedule
themselves. As a consequence, they always keep the event queue non-empty.
There are many protocols and modules containing recurring events, e.g.:
* FlowMonitor - periodic check for lost packets
* RIPng - periodic broadcast of routing tables update
* etc.
In these cases, ``Simulator::Stop`` is necessary to gracefully stop the
simulation. In addition, when |ns3| is in emulation mode, the
``RealtimeSimulator`` is used to keep the simulation clock aligned with
the machine clock, and ``Simulator::Stop`` is necessary to stop the
process.
Many of the simulation programs in the tutorial do not explicitly call
``Simulator::Stop``, since the event queue will automatically run out
of events. However, these programs will also accept a call to
``Simulator::Stop``. For example, the following additional statement
in the first example program will schedule an explicit stop at 11 seconds:
::
+ Simulator::Stop (Seconds (11.0));
Simulator::Run ();
Simulator::Destroy ();
return 0;
}
The above wil not actually change the behavior of this program, since
this particular simulation naturally ends after 10 seconds. But if you
were to change the stop time in the above statement from 11 seconds to 1
second, you would notice that the simulation stops before any output is
printed to the screen (since the output occurs around time 2 seconds of
simulation time).
It is important to call ``Simulator::Stop`` *before* calling
``Simulator::Run``; otherwise, ``Simulator::Run`` may never return control
to the main program to execute the stop!
Building Your Script
++++++++++++++++++++
We have made it trivial to build your simple scripts. All you have to do is
@@ -735,21 +813,21 @@ to drop your script into the scratch directory and it will automatically be
built if you run Waf. Let's try it. Copy ``examples/tutorial/first.cc`` into
the ``scratch`` directory after changing back into the top level directory.
::
.. sourcecode:: bash
cd ../..
cp examples/tutorial/first.cc scratch/myfirst.cc
$ cd ../..
$ cp examples/tutorial/first.cc scratch/myfirst.cc
Now build your first example script using waf:
::
.. sourcecode:: bash
./waf
$ ./waf
You should see messages reporting that your ``myfirst`` example was built
successfully.
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
[614/708] cxx: scratch/myfirst.cc -> build/debug/scratch/myfirst_3.o
@@ -760,13 +838,13 @@ successfully.
You can now run the example (note that if you build your program in the scratch
directory you must run it out of the scratch directory):
::
.. sourcecode:: bash
./waf --run scratch/myfirst
$ ./waf --run scratch/myfirst
You should see some output:
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -794,14 +872,14 @@ summary page for our |ns3| development tree.
At the top of the page, you will see a number of links,
::
.. sourcecode:: text
summary | shortlog | changelog | graph | tags | files
Go ahead and select the ``files`` link. This is what the top-level of
most of our *repositories* will look:
::
.. sourcecode:: text
drwxr-xr-x [up]
drwxr-xr-x bindings python files
+1 -1
View File
@@ -197,7 +197,7 @@ latex_logo = '../../ns3_html_theme/static/ns-3.png'
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
latex_preamble = '\usepackage{amssymb}'
# Documents to append as an appendix to all manuals.
#latex_appendices = []
+446
View File
@@ -0,0 +1,446 @@
.. include:: replace.txt
.. highlight:: cpp
.. role:: raw-role(raw)
:format: html latex
Data Collection
---------------
Our final tutorial chapter introduces some components that were added
to |ns3| in version 3.18, and that are still under development. This
tutorial section is also a work-in-progress.
Motivation
**********
One of the main points of running simulations is to generate output data,
either for research purposes or simply to learn about the system.
In the previous chapter, we introduced the tracing subsystem and
the example ``sixth.cc``. from which PCAP or ASCII trace files are
generated. These traces are valuable for data analysis using a
variety of external tools, and for many users, such output data is
a preferred means of gathering data (for analysis by external tools).
However, there are also use cases for more than trace file generation,
including the following:
* generation of data that does not map well to PCAP or ASCII traces, such
as non-packet data (e.g. protocol state machine transitions),
* large simulations for which the disk I/O requirements for generating
trace files is prohibitive or cumbersome, and
* the need for *online* data reduction or computation, during the course
of the simulation. A good example of this is to define a termination
condition for the simulation, to tell it when to stop when it has
received enough data to form a narrow-enough confidence interval around
the estimate of some parameter.
The |ns3| data collection framework is designed to provide these
additional capabilities beyond trace-based output. We recommend
that the reader interested in this topic consult the |ns3| Manual
for a more detailed treatment of this framework; here, we summarize
with an example program some of the developing capabilities.
Example Code
************
The tutorial example ``examples/tutorial/seventh.cc`` resembles the
``sixth.cc`` example we previously reviewed, except for a few changes.
First, it has been enabled for IPv6 support with a command-line option:
::
CommandLine cmd;
cmd.AddValue ("useIpv6", "Use Ipv6", useV6);
cmd.Parse (argc, argv);
If the user specifies ``useIpv6``, option, the program will be run
using IPv6 instead of IPv4. The ``help`` option, available on all |ns3|
programs that support the CommandLine object as shown above, can
be invoked as follows (please note the use of double quotes):
::
./waf --run "seventh --help"
which produces:
::
ns3-dev-seventh-debug [Program Arguments] [General Arguments]
Program Arguments:
--useIpv6: Use Ipv6 [false]
General Arguments:
--PrintGlobals: Print the list of globals.
--PrintGroups: Print the list of groups.
--PrintGroup=[group]: Print all TypeIds of group.
--PrintTypeIds: Print all TypeIds.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintHelp: Print this help message.
This default (use of IPv4, since useIpv6 is false) can be changed by
toggling the boolean value as follows:
::
./waf --run "seventh --useIpv6=1"
and have a look at the pcap generated, such as with ``tcpdump``:
::
tcpdump -r seventh.pcap -nn -tt
This has been a short digression into IPv6 support and the command line,
which was also introduced earlier in this tutorial. For a dedicated
example of command line usage, please see
``src/core/examples/command-line-example.cc``.
Now back to data collection. In the ``examples/tutorial/`` directory,
type the following command: ``diff -u sixth.cc seventh.cc``, and examine
some of the new lines of this diff:
::
+ std::string probeName;
+ std::string probeTrace;
+ if (useV6 == false)
+ {
...
+ probeName = "ns3::Ipv4PacketProbe";
+ probeTrace = "/NodeList/*/$ns3::Ipv4L3Protocol/Tx";
+ }
+ else
+ {
...
+ probeName = "ns3::Ipv6PacketProbe";
+ probeTrace = "/NodeList/*/$ns3::Ipv6L3Protocol/Tx";
+ }
...
+ // Use GnuplotHelper to plot the packet byte count over time
+ GnuplotHelper plotHelper;
+
+ // Configure the plot. The first argument is the file name prefix
+ // for the output files generated. The second, third, and fourth
+ // arguments are, respectively, the plot title, x-axis, and y-axis labels
+ plotHelper.ConfigurePlot ("seventh-packet-byte-count",
+ "Packet Byte Count vs. Time",
+ "Time (Seconds)",
+ "Packet Byte Count");
+
+ // Specify the probe type, probe path (in configuration namespace), and
+ // probe output trace source ("OutputBytes") to plot. The fourth argument
+ // specifies the name of the data series label on the plot. The last
+ // argument formats the plot by specifying where the key should be placed.
+ plotHelper.PlotProbe (probeName,
+ probeTrace,
+ "OutputBytes",
+ "Packet Byte Count",
+ GnuplotAggregator::KEY_BELOW);
+
+ // Use FileHelper to write out the packet byte count over time
+ FileHelper fileHelper;
+
+ // Configure the file to be written, and the formatting of output data.
+ fileHelper.ConfigureFile ("seventh-packet-byte-count",
+ FileAggregator::FORMATTED);
+
+ // Set the labels for this formatted output file.
+ fileHelper.Set2dFormat ("Time (Seconds) = %.3e\tPacket Byte Count = %.0f");
+
+ // Specify the probe type, probe path (in configuration namespace), and
+ // probe output trace source ("OutputBytes") to write.
+ fileHelper.WriteProbe (probeName,
+ probeTrace,
+ "OutputBytes");
+
Simulator::Stop (Seconds (20));
Simulator::Run ();
Simulator::Destroy ();
The careful reader will have noticed, when testing the IPv6 command
line attribute, that ``seventh.cc`` had created a number of new output files:
::
seventh-packet-byte-count-0.txt
seventh-packet-byte-count-1.txt
seventh-packet-byte-count.dat
seventh-packet-byte-count.plt
seventh-packet-byte-count.png
seventh-packet-byte-count.sh
These were created by the additional statements introduced above; in
particular, by a GnuplotHelper and a FileHelper. This data was produced
by hooking the data collection components to |ns3| trace sources, and
marshaling the data into a formatted ``gnuplot`` and into a formatted
text file. In the next sections, we'll review each of these.
GnuplotHelper
*************
The GnuplotHelper is an |ns3| helper object aimed at the production of
``gnuplot`` plots with as few statements as possible, for common cases.
It hooks |ns3| trace sources with data types supported by the
data collection system. Not all |ns3| trace sources data types are
supported, but many of the common trace types are, including TracedValues
with plain old data (POD) types.
Let's look at the output produced by this helper:
::
seventh-packet-byte-count.dat
seventh-packet-byte-count.plt
seventh-packet-byte-count.sh
The first is a gnuplot data file with a series of space-delimited
timestamps and packet byte counts. We'll cover how this particular
data output was configured below, but let's continue with the output
files. The file ``seventh-packet-byte-count.plt`` is a gnuplot plot file,
that can be opened from within gnuplot. Readers who understand gnuplot
syntax can see that this will produce a formatted output PNG file named
``seventh-packet-byte-count.png``. Finally, a small shell script
``seventh-packet-byte-count.sh`` runs this plot file through gnuplot
to produce the desired PNG (which can be viewed in an image editor); that
is, the command:
::
sh seventh-packet-byte-count.sh
will yield ``seventh-packet-byte-count.png``. Why wasn't this PNG
produced in the first place? The answer is that by providing the
plt file, the user can hand-configure the result if desired, before
producing the PNG.
The PNG image title states that this plot is a plot of
"Packet Byte Count vs. Time", and that it is plotting the probed data
corresponding to the trace source path:
::
/NodeList/*/$ns3::Ipv6L3Protocol/Tx
Note the wild-card in the trace path. In summary, what this plot is
capturing is the plot of packet bytes observed at the transmit trace
source of the Ipv6L3Protocol object; largely 596-byte TCP segments
in one direction, and 60-byte TCP acks in the other (two node
trace sources were matched by this trace source).
How was this configured? A few statements need to be provided. First,
the GnuplotHelper object must be declared and configured:
::
+ // Use GnuplotHelper to plot the packet byte count over time
+ GnuplotHelper plotHelper;
+
+ // Configure the plot. The first argument is the file name prefix
+ // for the output files generated. The second, third, and fourth
+ // arguments are, respectively, the plot title, x-axis, and y-axis labels
+ plotHelper.ConfigurePlot ("seventh-packet-byte-count",
+ "Packet Byte Count vs. Time",
+ "Time (Seconds)",
+ "Packet Byte Count");
To this point, an empty plot has been configured. The filename prefix
is the first argument, the plot title is the second, the x-axis label
the third, and the y-axis label the fourth argument.
The next step is to configure the data, and here is where the trace
source is hooked. First, note above in the program we declared a few
variables for later use:
::
+ std::string probeName;
+ std::string probeTrace;
+ probeName = "ns3::Ipv6PacketProbe";
+ probeTrace = "/NodeList/*/$ns3::Ipv6L3Protocol/Tx";
We use them here:
::
+ // Specify the probe type, probe path (in configuration namespace), and
+ // probe output trace source ("OutputBytes") to plot. The fourth argument
+ // specifies the name of the data series label on the plot. The last
+ // argument formats the plot by specifying where the key should be placed.
+ plotHelper.PlotProbe (probeName,
+ probeTrace,
+ "OutputBytes",
+ "Packet Byte Count",
+ GnuplotAggregator::KEY_BELOW);
The first two arguments are the name of the probe type and the probe trace.
These two are probably the hardest to determine when you try to use
this framework to plot other traces. The probe trace here is the ``Tx``
trace source of class ``Ipv6L3Protocol``. When we examine this class
implementation (``src/internet/model/ipv6-l3-protocol.cc``) we can
observe:
::
.AddTraceSource ("Tx", "Send IPv6 packet to outgoing interface.",
MakeTraceSourceAccessor (&Ipv6L3Protocol::m_txTrace))
This says that ``Tx`` is a name for variable ``m_txTrace``, which has
a declaration of:
::
/**
* \brief Callback to trace TX (transmission) packets.
*/
TracedCallback<Ptr<const Packet>, Ptr<Ipv6>, uint32_t> m_txTrace;
It turns out that this specific trace source signature is supported
by a Probe class (what we need here) of class Ipv6PacketProbe.
See the files ``src/internet/model/ipv6-packet-probe.{h,cc}``.
So, in the PlotProbe statement above, we see that the statement is
hooking the trace source (identified by path string) with a matching
|ns3| Probe type of ``Ipv6PacketProbe``. If we did not support
this probe type (matching trace source signature), we could have not
used this statement (although some more complicated lower-level statements
could have been used, as described in the manual).
The Ipv6PacketProbe exports, itself, some trace sources that extract
the data out of the probed Packet object:
::
TypeId
Ipv6PacketProbe::GetTypeId ()
{
static TypeId tid = TypeId ("ns3::Ipv6PacketProbe")
.SetParent<Probe> ()
.AddConstructor<Ipv6PacketProbe> ()
.AddTraceSource ( "Output",
"The packet plus its IPv6 object and interface that serve as the output for this probe",
MakeTraceSourceAccessor (&Ipv6PacketProbe::m_output))
.AddTraceSource ( "OutputBytes",
"The number of bytes in the packet",
MakeTraceSourceAccessor (&Ipv6PacketProbe::m_outputBytes))
;
return tid;
}
The third argument of our PlotProbe statement specifies that we are
interested in the number of bytes in this packet; specifically, the
"OutputBytes" trace source of Ipv6PacketProbe.
Finally, the last two arguments of the statement provide the plot
legend for this data series ("Packet Byte Count"), and an optional
gnuplot formatting statement (GnuplotAggregator::KEY_BELOW) that we want
the plot key to be inserted below the plot. Other options include
NO_KEY, KEY_INSIDE, and KEY_ABOVE.
Supported Trace Types
*********************
The following traced values are supported with Probes as of this writing:
+------------------+-------------------+------------------------------------+
| TracedValue type | Probe type | File |
+==================+=========+=========+====================================+
| double | DoubleProbe | stats/model/double-probe.h |
+------------------+-------------------+------------------------------------+
| uint8_t | Uinteger8Probe | stats/model/uinteger-8-probe.h |
+------------------+-------------------+------------------------------------+
| uint16_t | Uinteger16Probe | stats/model/uinteger-16-probe.h |
+------------------+-------------------+------------------------------------+
| uint32_t | Uinteger32Probe | stats/model/uinteger-32-probe.h |
+------------------+-------------------+------------------------------------+
| bool | BooleanProbe | stats/model/uinteger-16-probe.h |
+------------------+-------------------+------------------------------------+
The following TraceSource types are supported by Probes as of this writing:
+------------------------------------------+------------------------+---------------+----------------------------------------------------+
| TracedSource type | Probe type | Probe outputs | File |
+==========================================+========================+===============+====================================================+
| Ptr<const Packet> | PacketProbe | OutputBytes | network/utils/packet-probe.h |
+------------------------------------------+------------------------+---------------+----------------------------------------------------+
| Ptr<const Packet>, Ptr<Ipv4>, uint32_t | Ipv4PacketProbe | OutputBytes | internet/model/ipv4-packet-probe.h |
+------------------------------------------+------------------------+---------------+----------------------------------------------------+
| Ptr<const Packet>, Ptr<Ipv6>, uint32_t | Ipv6PacketProbe | OutputBytes | internet/model/ipv6-packet-probe.h |
+------------------------------------------+------------------------+---------------+----------------------------------------------------+
| Ptr<const Packet>, Ptr<Ipv6>, uint32_t | Ipv6PacketProbe | OutputBytes | internet/model/ipv6-packet-probe.h |
+------------------------------------------+------------------------+---------------+----------------------------------------------------+
| Ptr<const Packet>, const Address& | ApplicationPacketProbe | OutputBytes | applications/model/application-packet-probe.h |
+------------------------------------------+------------------------+---------------+----------------------------------------------------+
As can be seen, only a few trace sources are supported, and they are all
oriented towards outputting the Packet size (in bytes). However,
most of the fundamental data types available as TracedValues can be
supported with these helpers.
FileHelper
**********
The FileHelper class is just a variation of the previous GnuplotHelper
example. The example program provides formatted output of the
same timestamped data, such as follows:
::
Time (Seconds) = 9.312e+00 Packet Byte Count = 596
Time (Seconds) = 9.312e+00 Packet Byte Count = 564
Two files are provided, one for node "0" and one for node "1" as can
be seen in the filenames. Let's look at the code piece-by-piece:
::
+ // Use FileHelper to write out the packet byte count over time
+ FileHelper fileHelper;
+
+ // Configure the file to be written, and the formatting of output data.
+ fileHelper.ConfigureFile ("seventh-packet-byte-count",
+ FileAggregator::FORMATTED);
The file helper file prefix is the first argument, and a format specifier
is next.
Some other options for formatting include SPACE_SEPARATED, COMMA_SEPARATED,
and TAB_SEPARATED. Users are able to change the formatting (if
FORMATTED is specified) with a format string such as follows:
::
+
+ // Set the labels for this formatted output file.
+ fileHelper.Set2dFormat ("Time (Seconds) = %.3e\tPacket Byte Count = %.0f");
Finally, the probe of interest must be hooked. Again, the probeName and
probeTrace variables in this example are used, and the probe's output
trace source "OutputBytes" is hooked:
::
+
+ // Specify the probe type, probe path (in configuration namespace), and
+ // probe output trace source ("OutputBytes") to write.
+ fileHelper.WriteProbe (probeName,
+ probeTrace,
+ "OutputBytes");
+
The wildcard fields in this trace source specifier match two trace sources.
Unlike the GnuplotHelper example, in which two data series were overlaid
on the same plot, here, two separate files are written to disk.
Summary
*******
Data collection support is new as of ns-3.18, and basic support for
providing time series output has been added. The basic pattern described
above may be replicated within the scope of support of the existing
probes and trace sources. More capabilities including statistics
processing will be added in future releases.
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -8,7 +8,7 @@ available in five forms:
* `ns-3 Doxygen <http://www.nsnam.org/doxygen/index.html>`_: Documentation of the public APIs of the simulator
* Tutorial *(this document)*, Manual, and Model Library for the `latest release <http://www.nsnam.org/documentation/latest/>`_ and `development tree <http://www.nsnam.org/ns-3-dev/documentation/>`_
* `ns-3 wiki <http://www.nsnam.org/wiki/index.php/Main_Page>`_
* `ns-3 wiki <http://www.nsnam.org/wiki/Main_Page>`_
This document is written in `reStructuredText <http://docutils.sourceforge.net/rst.html>`_ for `Sphinx <http://sphinx.pocoo.org/>`_ and is maintained in the
``doc/tutorial`` directory of ns-3's source code.
@@ -23,4 +23,5 @@ This document is written in `reStructuredText <http://docutils.sourceforge.net/r
tweaking
building-topologies
tracing
data-collection
conclusion
+72 -17
View File
@@ -22,21 +22,55 @@ into the workings of the system.
A few key points are worth noting at the onset:
* Ns-3 is not an extension of `ns-2
* |ns3| is open-source, and the project strives to maintain an
open environment for researchers to contribute and share their software.
* |ns3| is not a backwards-compatible extension of `ns-2
<http://www.isi.edu/nsnam/ns>`_;
it is a new simulator. The two simulators are both written in C++ but
|ns3| is a new simulator that does not support the |ns2| APIs. Some
models from |ns2| have already been ported from |ns2| to |ns3|. The
project will continue to maintain |ns2| while |ns3| is being built,
and will study transition and integration mechanisms.
* |ns3| is open-source, and the project strives to maintain an
open environment for researchers to contribute and share their software.
About |ns3|
***********
|ns3| has been developed to provide an open, extensible network simulation
platform, for networking research and education. In brief, |ns3| provides
models of how packet data networks work and perform, and provides a
simulation engine for users to conduct simulation experiments. Some of the
reasons to use |ns3| include to perform studies that are more difficult
or not possible to perform with real systems, to study system behavior in
a highly controllled, reproducible environment, and to learn about how
networks work. Users will note that the available model set in |ns3|
focuses on modeling how Internet protocols and networks work, but
|ns3| is not limited to Internet systems; several users are using
|ns3| to model non-Internet-based systems.
Many simulation tools exist for network simulation studies. Below are
a few distinguishing features of |ns3| in contrast to other tools.
* |ns3| is designed as a set of libraries that can be combined together
and also with other external software libraries. While some simulation
platforms provide users with a single, integrated graphical user
interface environment in which all tasks are carried out, |ns3| is
more modular in this regard. Several external animators and
data analysis and visualization tools can be used with |ns3|. However,
users should expect to work at the command line and with C++ and/or
Python software development tools.
* |ns3| is primarily used on Linux systems, although support exists
for FreeBSD, Cygwin (for Windows), and native Windows Visual Studio
support is in the process of being developed.
* |ns3| is not an officially supported software product of any company.
Support for |ns3| is done on a best-effort basis on the
ns-3-users mailing list.
For |ns2| Users
***************
For those familiar with |ns2|, the most visible outward change when moving to
For those familiar with |ns2| (a popular tool that preceded |ns3|),
the most visible outward change when moving to
|ns3| is the choice of scripting language. Programs in |ns2| are
scripted in OTcl and results of simulations can be visualized using the
Network Animator nam. It is not possible to run a simulation
@@ -57,17 +91,38 @@ We will try to highlight differences between |ns2| and |ns3|
as we proceed in this tutorial.
A question that we often hear is "Should I still use |ns2| or move to
|ns3|?" The answer is that it depends. |ns3| does not have
all of the models that |ns2| currently has, but on the other hand, |ns3|
does have new capabilities (such as handling multiple interfaces on nodes
correctly, use of IP addressing and more alignment with Internet
protocols and designs, more detailed 802.11 models, etc.). |ns2|
models can sometimes be ported to |ns3| (a porting guide is under
development). The support available on the user mailing list, and the
developer and maintainer activity, is higher for |ns3|. A good guideline
would be to look at both simulators, and in particular the models available
for your research, but when in doubt or when starting new simulation
projects, choose the tool that is under more active development (|ns3|).
|ns3|?" In this author's opinion, unless the user is somehow vested
in |ns2| (either based on existing personal comfort with and knowledge
of |ns2|, or based on a specific simulation model that is only available
in |ns2|), a user will be more productive with |ns3| for the following
reasons:
* |ns3| is actively maintained with an active, responsive users mailing
list, while |ns2| is only lightly maintained and has not seen
significant development in its main code tree for over a decade.
* |ns3| provides features not available in |ns2|, such as a implementation
code execution environment (allowing users to run real implementation
code in the simulator)
* |ns3| provides a lower base level of abstraction compared with |ns2|,
allowing it to align better with how real systems are put together.
Some limitations found in |ns2| (such as supporting multiple types of
interfaces on nodes correctly) have been remedied in |ns3|.
|ns2| has a more diverse set of contributed modules than does |ns3|, owing to
its long history. However, |ns3| has more detailed models in several
popular areas of research (including sophisticated LTE and WiFi models),
and its support of implementation code admits a very wide spectrum
of high-fidelity models. Users may be surprised to learn that the
whole Linux networking stack can be encapsulated in an |ns3| node,
using the Direct Code Execution (DCE) framework. |ns2|
models can sometimes be ported to |ns3|, particularly if they have been
implemented in C++.
If in doubt, a good guideline would be to look at both simulators (as
well as other simulators), and in particular the models available
for your research, but keep in mind that your experience may be better
in using the tool that is being actively developed and
maintained (|ns3|).
Contributing
************
@@ -80,9 +135,9 @@ contribute to |ns3| like they have for |ns2|:
* Open source licensing based on GNU GPLv2 compatibility
* `wiki
<http://www.nsnam.org/wiki/index.php>`_
<http://www.nsnam.org/wiki>`_
* `Contributed Code
<http://www.nsnam.org/wiki/index.php/Contributed_Code>`_ page, similar to |ns2|'s popular Contributed Code
<http://www.nsnam.org/wiki/Contributed_Code>`_ page, similar to |ns2|'s popular Contributed Code
`page
<http://nsnam.isi.edu/nsnam/index.php/Contributed_Code>`_
* Open `bug tracker
+2
View File
@@ -1,3 +1,5 @@
.. |ns3| replace:: *ns-3*
.. |ns2| replace:: *ns-2*
.. |check| replace:: :math:`\checkmark`
+70 -67
View File
@@ -1,5 +1,7 @@
.. include:: replace.txt
.. highlight:: cpp
.. role:: raw-role(raw)
:format: html latex
Tracing
-------
@@ -15,12 +17,13 @@ somehow developing an output mechanism that conveys exactly (and perhaps only)
the information wanted.
Using pre-defined bulk output mechanisms has the advantage of not requiring any
changes to |ns3|, but it does require programming. Often, pcap or NS_LOG
changes to |ns3|, but it may require writing scripts to parse and filter
for data of interest. Often, pcap or NS_LOG
output messages are gathered during simulation runs and separately run through
scripts that use grep, sed or awk to parse the messages and reduce and transform
the data to a manageable form. Programs must be written to do the
transformation, so this does not come for free. Of course, if the information
of interest in does not exist in any of the pre-defined output mechanisms,
of interest does not exist in any of the pre-defined output mechanisms,
this approach fails.
If you need to add some tidbit of information to the pre-defined bulk mechanisms,
@@ -256,11 +259,11 @@ trace source invokes its ``operator()`` providing zero or more parameters.
The ``operator()`` eventually wanders down into the system and does something
remarkably like the indirect call you just saw. It provides zero or more
parameters (the call to "pfi" above passed one parameter to the target function
``MyFunction``.
``MyFunction``).
The important difference that the tracing system adds is that for each trace
source there is an internal list of Callbacks. Instead of just making one
indirect call, a trace source may invoke any number of Callbacks. When a trace
indirect call, a trace source may invoke multiple. When a trace
sink expresses interest in notifications from a trace source, it basically just
arranges to add its own function to the callback list.
@@ -309,7 +312,8 @@ illustrates how simple this all really is.
The file, ``traced-value.h`` brings in the required declarations for tracing
of data that obeys value semantics. In general, value semantics just means that
you can pass the object around, not an address. In order to use value semantics
you can pass the object itself around, rather than passing the address of the
object. In order to use value semantics
at all you have to have an object with an associated copy constructor and
assignment operator available. We extend the requirements to talk about the set
of operators that are pre-defined for plain-old-data (POD) types. Operator=,
@@ -426,21 +430,20 @@ called with the parameters provided by the source.
If you now build and run this example,
::
.. sourcecode:: bash
./waf --run fourth
$ ./waf --run fourth
you will see the output from the ``IntTrace`` function execute as soon as the
trace source is hit:
::
.. sourcecode:: bash
Traced 0 to 1234
When we executed the code, ``myObject->m_myInt = 1234;``, the trace source
fired and automatically provided the before and after values to the trace sink.
The function ``IntTrace`` then printed this to the standard output. No
problem.
The function ``IntTrace`` then printed this to the standard output.
Using the Config Subsystem to Connect to Trace Sources
++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -449,7 +452,7 @@ The ``TraceConnectWithoutContext`` call shown above in the simple example is
actually very rarely used in the system. More typically, the ``Config``
subsystem is used to allow selecting a trace source in the system using what is
called a *config path*. We saw an example of this in the previous section
where we hooked the "CourseChange" event when we were playing with
where we hooked the "CourseChange" event when we were experimenting with
``third.cc``.
Recall that we defined a trace sink to print course change information from the
@@ -679,9 +682,9 @@ The easiest way to do this is to grep around in the |ns3| codebase for someone
who has already figured it out, You should always try to copy someone else's
working code before you start to write your own. Try something like:
::
.. sourcecode:: bash
find . -name '*.cc' | xargs grep CourseChange | grep Connect
$ find . -name '*.cc' | xargs grep CourseChange | grep Connect
and you may find your answer along with working code. For example, in this
case, ``./ns-3-dev/examples/wireless/mixed-wireless.cc`` has something
@@ -732,7 +735,7 @@ connect.
You are looking at the same information for the RandomWalk2dMobilityModel; and
the information you want is now right there in front of you in the Doxygen:
::
.. sourcecode:: bash
This object is accessible through the following paths with Config::Set and Config::Connect:
@@ -756,7 +759,7 @@ going to be looking for is found in the base class as we have seen.
Look further down in the ``GetTypeId`` doxygen. You will find,
::
.. sourcecode:: bash
No TraceSources defined for this type.
TraceSources defined in parent class ns3::MobilityModel:
@@ -788,9 +791,9 @@ The easiest way to do this is to grep around in the |ns3| codebase for someone
who has already figured it out, You should always try to copy someone else's
working code. Try something like:
::
.. sourcecode:: bash
find . -name '*.cc' | xargs grep CourseChange | grep Connect
$ find . -name '*.cc' | xargs grep CourseChange | grep Connect
and you may find your answer along with working code. For example, in this
case, ``./ns-3-dev/examples/wireless/mixed-wireless.cc`` has something
@@ -812,7 +815,7 @@ there is a callback function there which you can use. Sure enough, there is:
...
}
Take my Word for It
Take My Word for It
~~~~~~~~~~~~~~~~~~~
If there are no examples to work from, this can be, well, challenging to
@@ -899,9 +902,9 @@ We are probably going to be interested in some kind of declaration in the
we know this declaration is going to have to be in some kind of header file,
so just grep for it using:
::
.. sourcecode:: bash
find . -name '*.h' | xargs grep TracedCallback
$ find . -name '*.h' | xargs grep TracedCallback
You'll see 124 lines fly by (I piped this through wc to see how bad it was).
Although that may seem like it, that's not really a lot. Just pipe the output
@@ -943,7 +946,7 @@ in your favorite editor to see what is happening.
You will see a comment at the top of the file that should be comforting:
::
.. sourcecode:: text
An ns3::TracedCallback has almost exactly the same API as a normal ns3::Callback but
instead of forwarding calls to a single function (as an ns3::Callback normally does),
@@ -1019,7 +1022,7 @@ If you look down through the file, you will see a lot of probably almost
incomprehensible template code. You will eventually come to some Doxygen for
the Callback template class, though. Fortunately, there is some English:
::
.. sourcecode:: text
This class template implements the Functor Design Pattern.
It is used to declare the type of a Callback:
@@ -1179,7 +1182,7 @@ trace sources" to see what we have to work with. Recall that this is found
in the |ns3| Doxygen in the "C++ Constructs Used by All Modules" Module section. If you scroll
through the list, you will eventually find:
::
.. sourcecode:: bash
ns3::TcpNewReno
CongestionWindow: The TCP connection's congestion window
@@ -1189,9 +1192,9 @@ file ``src/internet/model/tcp-socket-base.cc`` while congestion control
variants are in files such as ``src/internet/model/tcp-newreno.cc``.
If you don't know this a priori, you can use the recursive grep trick:
::
.. sourcecode:: bash
find . -name '*.cc' | xargs grep -i tcp
$ find . -name '*.cc' | xargs grep -i tcp
You will find page after page of instances of tcp pointing you to that file.
@@ -1247,9 +1250,9 @@ modify, rather than starting from scratch. So the first order of business now
is to find some code that already hooks the "CongestionWindow" trace source
and see if we can modify it. As usual, grep is your friend:
::
.. sourcecode:: bash
find . -name '*.cc' | xargs grep CongestionWindow
$ find . -name '*.cc' | xargs grep CongestionWindow
This will point out a couple of promising candidates:
``examples/tcp/tcp-large-transfer.cc`` and
@@ -1507,57 +1510,57 @@ you will find,
::
Simulator::ScheduleWithContext (index, TimeStep (0), &Node::Start, node);
Simulator::ScheduleWithContext (index, TimeStep (0), &Node::Initialize, node);
This tells you that whenever a ``Node`` is created in a simulation, as
a side-effect, a call to that node's ``Start`` method is scheduled for
a side-effect, a call to that node's ``Initialize`` method is scheduled for
you that happens at time zero. Don't read too much into that name, yet.
It doesn't mean that the node is going to start doing anything, it can be
interpreted as an informational call into the ``Node`` telling it that
the simulation has started, not a call for action telling the ``Node``
to start doing something.
So, ``NodeList::Add`` indirectly schedules a call to ``Node::Start``
So, ``NodeList::Add`` indirectly schedules a call to ``Node::Initialize``
at time zero to advise a new node that the simulation has started. If you
look in ``src/network/model/node.h`` you will, however, not find a method called
``Node::Start``. It turns out that the ``Start`` method is inherited
``Node::Initialize``. It turns out that the ``Initialize`` method is inherited
from class ``Object``. All objects in the system can be notified when
the simulation starts, and objects of class ``Node`` are just one kind
of those objects.
Take a look at ``src/core/model/object.cc`` next and search for ``Object::Start``.
Take a look at ``src/core/model/object.cc`` next and search for ``Object::Initialize``.
This code is not as straightforward as you might have expected since
|ns3| ``Objects`` support aggregation. The code in
``Object::Start`` then loops through all of the objects that have been
aggregated together and calls their ``DoStart`` method. This is another
``Object::Initialize`` then loops through all of the objects that have been
aggregated together and calls their ``DoInitialize`` method. This is another
idiom that is very common in |ns3|. There is a public API method,
that stays constant across implementations, that calls a private implementation
method that is inherited and implemented by subclasses. The names are typically
something like ``MethodName`` for the public API and ``DoMethodName`` for
the private API.
This tells us that we should look for a ``Node::DoStart`` method in
This tells us that we should look for a ``Node::DoInitialize`` method in
``src/network/model/node.cc`` for the method that will continue our trail. If you
locate the code, you will find a method that loops through all of the devices
in the node and then all of the applications in the node calling
``device->Start`` and ``application->Start`` respectively.
``device->Initialize`` and ``application->Initialize`` respectively.
You may already know that classes ``Device`` and ``Application`` both
inherit from class ``Object`` and so the next step will be to look at
what happens when ``Application::DoStart`` is called. Take a look at
what happens when ``Application::DoInitialize`` is called. Take a look at
``src/network/model/application.cc`` and you will find:
::
void
Application::DoStart (void)
Application::DoInitialize (void)
{
m_startEvent = Simulator::Schedule (m_startTime, &Application::StartApplication, this);
if (m_stopTime != TimeStep (0))
{
m_stopEvent = Simulator::Schedule (m_stopTime, &Application::StopApplication, this);
}
Object::DoStart ();
Object::DoInitialize ();
}
Here, we finally come to the end of the trail. If you have kept it all straight,
@@ -1567,16 +1570,16 @@ and ``StopApplication`` methods and provide mechanisms for starting and
stopping the flow of data out of your new ``Application``. When a ``Node``
is created in the simulation, it is added to a global ``NodeList``. The act
of adding a node to this ``NodeList`` causes a simulator event to be scheduled
for time zero which calls the ``Node::Start`` method of the newly added
for time zero which calls the ``Node::Initialize`` method of the newly added
``Node`` to be called when the simulation starts. Since a ``Node`` inherits
from ``Object``, this calls the ``Object::Start`` method on the ``Node``
which, in turn, calls the ``DoStart`` methods on all of the ``Objects``
from ``Object``, this calls the ``Object::Initialize`` method on the ``Node``
which, in turn, calls the ``DoInitialize`` methods on all of the ``Objects``
aggregated to the ``Node`` (think mobility models). Since the ``Node``
``Object`` has overridden ``DoStart``, that method is called when the
simulation starts. The ``Node::DoStart`` method calls the ``Start`` methods
``Object`` has overridden ``DoInitialize``, that method is called when the
simulation starts. The ``Node::DoInitialize`` method calls the ``Initialize`` methods
of all of the ``Applications`` on the node. Since ``Applications`` are
also ``Objects``, this causes ``Application::DoStart`` to be called. When
``Application::DoStart`` is called, it schedules events for the
also ``Objects``, this causes ``Application::DoInitialize`` to be called. When
``Application::DoInitialize`` is called, it schedules events for the
``StartApplication`` and ``StopApplication`` calls on the ``Application``.
These calls are designed to start and stop the flow of data from the
``Application``
@@ -1954,10 +1957,10 @@ Since we have provided the file ``fifth.cc`` for you, if you have built
your distribution (in debug mode since it uses NS_LOG -- recall that optimized
builds optimize out NS_LOGs) it will be waiting for you to run.
::
.. sourcecode:: bash
./waf --run fifth
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build
$ ./waf --run fifth
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone-dev/ns-3-dev/build'
'build' finished successfully (0.684s)
1.20919 1072
@@ -1976,9 +1979,9 @@ information along with those RxDrop messages. We will remedy that soon, but I'm
sure you can't wait to see the results of all of this work. Let's redirect that
output to a file called ``cwnd.dat``:
::
.. sourcecode:: bash
./waf --run fifth > cwnd.dat 2>&1
$ ./waf --run fifth > cwnd.dat 2>&1
Now edit up "cwnd.dat" in your favorite editor and remove the waf build status
and drop lines, leaving only the traced data (you could also comment out the
@@ -1988,8 +1991,9 @@ script to get rid of the drop prints just as easily.
You can now run gnuplot (if you have it installed) and tell it to generate some
pretty pictures:
::
.. sourcecode:: bash
$ gnuplot
gnuplot> set terminal png size 640,480
gnuplot> set output "cwnd.png"
gnuplot> plot "cwnd.dat" using 1:2 title 'Congestion Window' with linespoints
@@ -2140,7 +2144,7 @@ is going to contain packets prefixed with point to point headers. This is true
since the packets are coming from our point-to-point device driver. Other
common data link types are DLT_EN10MB (10 MB Ethernet) appropriate for csma
devices and DLT_IEEE802_11 (IEEE 802.11) appropriate for wifi devices. These
are defined in ``src/network/helper/trace-helper.h"`` if you are interested in seeing
are defined in ``src/network/helper/trace-helper.h`` if you are interested in seeing
the list. The entries in the list match those in ``bpf.h`` but we duplicate
them to avoid a pcap source dependence.
@@ -2187,21 +2191,21 @@ mean that "something" is an |ns3| Object on which you can hang |ns3|
Now, back to the example. If you now build and run this example,
::
.. sourcecode:: bash
./waf --run sixth
$ ./waf --run sixth
you will see the same messages appear as when you ran "fifth", but two new
files will appear in the top-level directory of your |ns3| distribution.
::
.. sourcecode:: bash
sixth.cwnd sixth.pcap
Since "sixth.cwnd" is an ASCII text file, you can view it with ``cat``
or your favorite file viewer.
::
.. sourcecode:: bash
1.20919 536 1072
1.21511 1072 1608
@@ -2215,7 +2219,7 @@ There are no extraneous prints in the file, no parsing or editing is required.
Since "sixth.pcap" is a pcap file, you can fiew it with ``tcpdump``.
::
.. sourcecode:: bash
reading from file ../../sixth.pcap, link-type PPP (PPP)
1.251507 IP 10.1.1.1.49153 > 10.1.1.2.8080: . 17689:18225(536) ack 1 win 65535
@@ -2305,14 +2309,13 @@ There are subtleties that prevent all four classes from behaving identically,
but we do strive to make them all work as similarly as possible; and whenever
possible there are analogs for all methods in all classes.
::
| pcap | ascii |
-----------------+------+-------|
Device Helper | | |
-----------------+------+-------|
Protocol Helper | | |
-----------------+------+-------|
+-----------------+---------+---------+
| | pcap | ascii |
+=================+=========+=========+
| Device Helper | |check| | |check| |
+-----------------+---------+---------+
| Protocol Helper | |check| | |check| |
+-----------------+---------+---------+
We use an approach called a ``mixin`` to add tracing functionality to our
helper classes. A ``mixin`` is a class that provides functionality to that
+94 -91
View File
@@ -1,4 +1,5 @@
.. include:: replace.txt
.. highlight:: cpp
Tweaking
@@ -80,16 +81,16 @@ Let's use the NS_LOG environment variable to turn on some more logging, but
first, just to get our bearings, go ahead and run the last script just as you
did previously,
::
.. sourcecode:: bash
./waf --run scratch/myfirst
$ ./waf --run scratch/myfirst
You should see the now familiar output of the first |ns3| example
program
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
$ Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.413s)
Sent 1024 bytes to 10.1.1.2
@@ -121,13 +122,13 @@ all lower levels. In this case, we have enabled ``NS_LOG_INFO``,
increase the logging level and get more information without changing the
script and recompiling by setting the NS_LOG environment variable like this:
::
.. sourcecode:: bash
export NS_LOG=UdpEchoClientApplication=level_all
$ export NS_LOG=UdpEchoClientApplication=level_all
This sets the shell environment variable ``NS_LOG`` to the string,
::
.. sourcecode:: bash
UdpEchoClientApplication=level_all
@@ -137,9 +138,9 @@ we are going to turn on all of the debugging levels for the application. If
you run the script with NS_LOG set this way, the |ns3| logging
system will pick up the change and you should see the following output:
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
'build' finished successfully (0.404s)
UdpEchoClientApplication:UdpEchoClient()
@@ -183,9 +184,9 @@ wonder where the string "``Received 1024 bytes from 10.1.1.2``" comes
from. You can resolve this by OR'ing the ``prefix_func`` level into the
``NS_LOG`` environment variable. Try doing the following,
::
.. sourcecode:: bash
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'
$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func'
Note that the quotes are required since the vertical bar we use to indicate an
OR operation is also a Unix pipe connector.
@@ -194,7 +195,7 @@ Now, if you run the script you will see that the logging system makes sure
that every message from the given log component is prefixed with the component
name.
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -219,9 +220,9 @@ remaining message must be coming from the UDP echo server application. We
can enable that component by entering a colon separated list of components in
the NS_LOG environment variable.
::
.. sourcecode:: bash
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func:
UdpEchoServerApplication=level_all|prefix_func'
Warning: You will need to remove the newline after the ``:`` in the
@@ -231,7 +232,7 @@ Now, if you run the script you will see all of the log messages from both the
echo client and server applications. You may see that this can be very useful
in debugging problems.
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -258,15 +259,15 @@ in debugging problems.
It is also sometimes useful to be able to see the simulation time at which a
log message is generated. You can do this by ORing in the prefix_time bit.
::
.. sourcecode:: bash
export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time:
$ export 'NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time:
UdpEchoServerApplication=level_all|prefix_func|prefix_time'
Again, you will have to remove the newline above. If you run the script now,
you should see the following output:
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -314,9 +315,9 @@ are not seeing as well. You can very easily follow the entire process by
turning on all of the logging components in the system. Try setting the
``NS_LOG`` variable to the following,
::
.. sourcecode:: bash
export 'NS_LOG=*=level_all|prefix_func|prefix_time'
$ export 'NS_LOG=*=level_all|prefix_func|prefix_time'
The asterisk above is the logging component wildcard. This will turn on all
of the logging in all of the components used in the simulation. I won't
@@ -324,9 +325,9 @@ reproduce the output here (as of this writing it produces 1265 lines of output
for the single packet echo) but you can redirect this information into a file
and look through it with your favorite editor if you like,
::
.. sourcecode:: bash
./waf --run scratch/myfirst > log.out 2>&1
$ ./waf --run scratch/myfirst > log.out 2>&1
I personally use this extremely verbose version of logging when I am presented
with a problem and I have no idea where things are going wrong. I can follow the
@@ -374,16 +375,16 @@ right before the lines,
Now build the script using waf and clear the ``NS_LOG`` variable to turn
off the torrent of logging we previously enabled:
::
.. sourcecode:: bash
./waf
export NS_LOG=
$ ./waf
$ export NS_LOG=
Now, if you run the script,
::
.. sourcecode:: bash
./waf --run scratch/myfirst
$ ./waf --run scratch/myfirst
you will ``not`` see your new message since its associated logging
component (``FirstScriptExample``) has not been enabled. In order to see your
@@ -391,14 +392,14 @@ message you will have to enable the ``FirstScriptExample`` logging component
with a level greater than or equal to ``NS_LOG_INFO``. If you just want to
see this particular level of logging, you can enable it by,
::
.. sourcecode:: bash
export NS_LOG=FirstScriptExample=info
$ export NS_LOG=FirstScriptExample=info
If you now run the script you will see your new "Creating Topology" log
message,
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -441,16 +442,16 @@ ahead and add that two lines of code to the ``scratch/myfirst.cc`` script at
the start of ``main``. Go ahead and build the script and run it, but ask
the script for help in the following way,
::
.. sourcecode:: bash
./waf --run "scratch/myfirst --PrintHelp"
$ ./waf --run "scratch/myfirst --PrintHelp"
This will ask Waf to run the ``scratch/myfirst`` script and pass the command
line argument ``--PrintHelp`` to the script. The quotes are required to
sort out which program gets which argument. The command line parser will
now see the ``--PrintHelp`` argument and respond with,
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -481,14 +482,14 @@ listing says that we should provide a ``TypeId``. This corresponds to the
class name of the class to which the ``Attributes`` belong. In this case it
will be ``ns3::PointToPointNetDevice``. Let's go ahead and type in,
::
.. sourcecode:: bash
./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"
$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"
The system will print out all of the ``Attributes`` of this kind of net device.
Among the ``Attributes`` you will see listed is,
::
.. sourcecode:: bash
--ns3::PointToPointNetDevice::DataRate=[32768bps]:
The default data rate for point to point links
@@ -521,13 +522,13 @@ Go ahead and build the new script with Waf (``./waf``) and let's go back
and enable some logging from the UDP echo server application and turn on the
time prefix.
::
.. sourcecode:: bash
export 'NS_LOG=UdpEchoServerApplication=level_all|prefix_time'
$ export 'NS_LOG=UdpEchoServerApplication=level_all|prefix_time'
If you run the script, you should now see the following output,
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -545,7 +546,7 @@ If you run the script, you should now see the following output,
Recall that the last time we looked at the simulation time at which the packet
was received by the echo server, it was at 2.00369 seconds.
::
.. sourcecode:: bash
2.00369s UdpEchoServerApplication:HandleRead(): Received 1024 bytes from 10.1.1.1
@@ -557,9 +558,9 @@ If we were to provide a new ``DataRate`` using the command line, we could
speed our simulation up again. We do this in the following way, according to
the formula implied by the help item:
::
.. sourcecode:: bash
./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"
$ ./waf --run "scratch/myfirst --ns3::PointToPointNetDevice::DataRate=5Mbps"
This will set the default value of the ``DataRate`` ``Attribute`` back to
five megabits per second. Are you surprised by the result? It turns out that
@@ -568,30 +569,30 @@ the speed-of-light delay of the channel as well. We can ask the command line
system to print out the ``Attributes`` of the channel just like we did for
the net device:
::
.. sourcecode:: bash
./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointChannel"
$ ./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointChannel"
We discover the ``Delay`` ``Attribute`` of the channel is set in the following
way:
::
.. sourcecode:: bash
--ns3::PointToPointChannel::Delay=[0ns]:
Transmission delay through the channel
We can then set both of these default values through the command line system,
::
.. sourcecode:: bash
./waf --run "scratch/myfirst
$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms"
in which case we recover the timing we had when we explicitly set the
``DataRate`` and ``Delay`` in the script:
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -620,9 +621,9 @@ you should be able to control the number of packets echoed from the command
line. Since we're nice folks, we'll tell you that your command line should
end up looking something like,
::
.. sourcecode:: bash
./waf --run "scratch/myfirst
$ ./waf --run "scratch/myfirst
--ns3::PointToPointNetDevice::DataRate=5Mbps
--ns3::PointToPointChannel::Delay=2ms
--ns3::UdpEchoClient::MaxPackets=2"
@@ -666,11 +667,11 @@ should see your new ``User Argument`` listed in the help display.
Try,
::
.. sourcecode:: bash
./waf --run "scratch/myfirst --PrintHelp"
$ ./waf --run "scratch/myfirst --PrintHelp"
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -687,13 +688,13 @@ Try,
If you want to specify the number of packets to echo, you can now do so by
setting the ``--nPackets`` argument in the command line,
::
.. sourcecode:: bash
./waf --run "scratch/myfirst --nPackets=2"
$ ./waf --run "scratch/myfirst --nPackets=2"
You should now see
::
.. sourcecode:: bash
Waf: Entering directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
Waf: Leaving directory `/home/craigdo/repos/ns-3-allinone/ns-3-dev/build'
@@ -821,9 +822,9 @@ the popular trace points that log "+", "-", "d", and "r" events.
You can now build the script and run it from the command line:
::
.. sourcecode:: bash
./waf --run scratch/myfirst
$ ./waf --run scratch/myfirst
Just as you have seen many times before, you will see some messages from Waf and then
"'build' finished successfully" with some number of messages from
@@ -856,31 +857,32 @@ space after it). This character will have the following meaning:
* ``r``: A packet was received by the net device.
Let's take a more detailed view of the first line in the trace file. I'll
break it down into sections (indented for clarity) with a two digit reference
break it down into sections (indented for clarity) with a reference
number on the left side:
::
.. sourcecode:: text
:linenos:
00 +
01 2
02 /NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
03 ns3::PppHeader (
04 Point-to-Point Protocol: IP (0x0021))
05 ns3::Ipv4Header (
06 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
07 length: 1052 10.1.1.1 > 10.1.1.2)
08 ns3::UdpHeader (
09 length: 1032 49153 > 9)
10 Payload (size=1024)
+
2
/NodeList/0/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Enqueue
ns3::PppHeader (
Point-to-Point Protocol: IP (0x0021))
ns3::Ipv4Header (
tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
length: 1052 10.1.1.1 > 10.1.1.2)
ns3::UdpHeader (
length: 1032 49153 > 9)
Payload (size=1024)
The first line of this expanded trace event (reference number 00) is the
The first section of this expanded trace event (reference number 0) is the
operation. We have a ``+`` character, so this corresponds to an
*enqueue* operation on the transmit queue. The second line (reference 01)
*enqueue* operation on the transmit queue. The second section (reference 1)
is the simulation time expressed in seconds. You may recall that we asked the
``UdpEchoClientApplication`` to start sending packets at two seconds. Here
we see confirmation that this is, indeed, happening.
The next line of the example trace (reference 02) tell us which trace source
The next section of the example trace (reference 2) tell us which trace source
originated this event (expressed in the tracing namespace). You can think
of the tracing namespace somewhat like you would a filesystem namespace. The
root of the namespace is the ``NodeList``. This corresponds to a container
@@ -899,11 +901,11 @@ Recall that the operation ``+`` found at reference 00 meant that an enqueue
operation happened on the transmit queue of the device. This is reflected in
the final segments of the "trace path" which are ``TxQueue/Enqueue``.
The remaining lines in the trace should be fairly intuitive. References 03-04
The remaining sections in the trace should be fairly intuitive. References 3-4
indicate that the packet is encapsulated in the point-to-point protocol.
References 05-07 show that the packet has an IP version four header and has
References 5-7 show that the packet has an IP version four header and has
originated from IP address 10.1.1.1 and is destined for 10.1.1.2. References
08-09 show that this packet has a UDP header and, finally, reference 10 shows
8-9 show that this packet has a UDP header and, finally, reference 10 shows
that the payload is the expected 1024 bytes.
The next line in the trace file shows the same packet being dequeued from the
@@ -912,17 +914,18 @@ transmit queue on the same node.
The Third line in the trace file shows the packet being received by the net
device on the node with the echo server. I have reproduced that event below.
::
.. sourcecode:: text
:linenos:
00 r
01 2.25732
02 /NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/MacRx
03 ns3::Ipv4Header (
04 tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
05 length: 1052 10.1.1.1 > 10.1.1.2)
06 ns3::UdpHeader (
07 length: 1032 49153 > 9)
08 Payload (size=1024)
r
2.25732
/NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/MacRx
ns3::Ipv4Header (
tos 0x0 ttl 64 id 0 protocol 17 offset 0 flags [none]
length: 1052 10.1.1.1 > 10.1.1.2)
ns3::UdpHeader (
length: 1032 49153 > 9)
Payload (size=1024)
Notice that the trace operation is now ``r`` and the simulation time has
increased to 2.25732 seconds. If you have been following the tutorial steps
@@ -968,9 +971,9 @@ node 1-device 0, respectively.
Once you have added the line of code to enable pcap tracing, you can run the
script in the usual way:
::
.. sourcecode:: bash
./waf --run scratch/myfirst
$ ./waf --run scratch/myfirst
If you look at the top level directory of your distribution, you should now
see three log files: ``myfirst.tr`` is the ASCII trace file we have
@@ -982,9 +985,9 @@ Reading output with tcpdump
The easiest thing to do at this point will be to use ``tcpdump`` to look
at the ``pcap`` files.
::
.. sourcecode:: bash
tcpdump -nn -tt -r myfirst-0-0.pcap
$ tcpdump -nn -tt -r myfirst-0-0.pcap
reading from file myfirst-0-0.pcap, link-type PPP (PPP)
2.000000 IP 10.1.1.1.49153 > 10.1.1.2.9: UDP, length 1024
2.514648 IP 10.1.1.2.9 > 10.1.1.1.49153: UDP, length 1024
+1 -1
View File
@@ -35,7 +35,7 @@ NS_LOG_COMPONENT_DEFINE ("EnergyExample");
using namespace ns3;
std::string
static inline std::string
PrintReceivedPacket (Address& from)
{
InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (from);
@@ -0,0 +1,337 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2014 Wireless Communications and Networking Group (WCNG),
* University of Rochester, Rochester, NY, USA.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Cristiano Tapparello <cristiano.tapparello@rochester.edu>
*/
/**
*
* This example extends the energy model example by connecting a basic energy
* harvester to the nodes.
*
* The example considers a simple communication link between a source and a
* destination node, where the source node sends a packet to the destination
* every 1 second. Each node is powered by a BasiEnergySource, which is recharged
* by a BasicEnergyHarvester, and the WiFi radio consumes energy for the transmission/
* reception of the packets.
*
* For the receiver node, the example prints the energy consumption of the WiFi radio,
* the power harvested by the energy harvester and the residual energy in the
* energy source.
*
* The nodes initial energy is set to 1.0 J, the transmission and reception entail a
* current consumption of 0.0174 A and 0.0197 A, respectively (default values in
* WifiRadioEnergyModel). The energy harvester provides an amount of power that varies
* according to a random variable uniformly distributed in [0 0.1] W, and is updated
* every 1 s. The energy source voltage is 3 V (default value in BasicEnergySource) and
* the residual energy level is updated every 1 second (default value).
*
* The simulation start at time 0 and it is hard stopped at time 10 seconds. Given the
* packet size and the distance between the nodes, each transmission lasts 0.0023s.
* As a result, the destination node receives 10 messages.
*
*/
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/mobility-module.h"
#include "ns3/config-store-module.h"
#include "ns3/wifi-module.h"
#include "ns3/energy-module.h"
#include "ns3/internet-module.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
NS_LOG_COMPONENT_DEFINE ("EnergyWithHarvestingExample");
using namespace ns3;
static inline std::string
PrintReceivedPacket (Address& from)
{
InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (from);
std::ostringstream oss;
oss << "--\nReceived one packet! Socket: " << iaddr.GetIpv4 ()
<< " port: " << iaddr.GetPort ()
<< " at time = " << Simulator::Now ().GetSeconds ()
<< "\n--";
return oss.str ();
}
/**
* \param socket Pointer to socket.
*
* Packet receiving sink.
*/
void
ReceivePacket (Ptr<Socket> socket)
{
Ptr<Packet> packet;
Address from;
while ((packet = socket->RecvFrom (from)))
{
if (packet->GetSize () > 0)
{
NS_LOG_UNCOND (PrintReceivedPacket (from));
}
}
}
/**
* \param socket Pointer to socket.
* \param pktSize Packet size.
* \param n Pointer to node.
* \param pktCount Number of packets to generate.
* \param pktInterval Packet sending interval.
*
* Traffic generator.
*/
static void
GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, Ptr<Node> n,
uint32_t pktCount, Time pktInterval)
{
if (pktCount > 0)
{
socket->Send (Create<Packet> (pktSize));
Simulator::Schedule (pktInterval, &GenerateTraffic, socket, pktSize, n,
pktCount - 1, pktInterval);
}
else
{
socket->Close ();
}
}
/// Trace function for remaining energy at node.
void
RemainingEnergy (double oldValue, double remainingEnergy)
{
std::cout << Simulator::Now ().GetSeconds ()
<< "s Current remaining energy = " << remainingEnergy << "J" << std::endl;
}
/// Trace function for total energy consumption at node.
void
TotalEnergy (double oldValue, double totalEnergy)
{
std::cout << Simulator::Now ().GetSeconds ()
<< "s Total energy consumed by radio = " << totalEnergy << "J" << std::endl;
}
/// Trace function for the power harvested by the energy harvester.
void
HarvestedPower (double oldValue, double harvestedPower)
{
std::cout << Simulator::Now ().GetSeconds ()
<< "s Current harvested power = " << harvestedPower << " W" << std::endl;
}
/// Trace function for the total energy harvested by the node.
void
TotalEnergyHarvested (double oldValue, double TotalEnergyHarvested)
{
std::cout << Simulator::Now ().GetSeconds ()
<< "s Total energy harvested by harvester = "
<< TotalEnergyHarvested << " J" << std::endl;
}
int
main (int argc, char *argv[])
{
/*
LogComponentEnable ("EnergySource", LOG_LEVEL_DEBUG);
LogComponentEnable ("BasicEnergySource", LOG_LEVEL_DEBUG);
LogComponentEnable ("DeviceEnergyModel", LOG_LEVEL_DEBUG);
LogComponentEnable ("WifiRadioEnergyModel", LOG_LEVEL_DEBUG);
LogComponentEnable ("EnergyHarvester", LOG_LEVEL_DEBUG);
LogComponentEnable ("BasicEnergyHarvester", LOG_LEVEL_DEBUG);
*/
std::string phyMode ("DsssRate1Mbps");
double Prss = -80; // dBm
uint32_t PpacketSize = 200; // bytes
bool verbose = false;
// simulation parameters
uint32_t numPackets = 10000; // number of packets to send
double interval = 1; // seconds
double startTime = 0.0; // seconds
double distanceToRx = 100.0; // meters
/*
* This is a magic number used to set the transmit power, based on other
* configuration.
*/
double offset = 81;
// Energy Harvester variables
double harvestingUpdateInterval = 1; // seconds
CommandLine cmd;
cmd.AddValue ("phyMode", "Wifi Phy mode", phyMode);
cmd.AddValue ("Prss", "Intended primary RSS (dBm)", Prss);
cmd.AddValue ("PpacketSize", "size of application packet sent", PpacketSize);
cmd.AddValue ("numPackets", "Total number of packets to send", numPackets);
cmd.AddValue ("startTime", "Simulation start time", startTime);
cmd.AddValue ("distanceToRx", "X-Axis distance between nodes", distanceToRx);
cmd.AddValue ("verbose", "Turn on all device log components", verbose);
cmd.Parse (argc, argv);
// Convert to time object
Time interPacketInterval = Seconds (interval);
// disable fragmentation for frames below 2200 bytes
Config::SetDefault ("ns3::WifiRemoteStationManager::FragmentationThreshold",
StringValue ("2200"));
// turn off RTS/CTS for frames below 2200 bytes
Config::SetDefault ("ns3::WifiRemoteStationManager::RtsCtsThreshold",
StringValue ("2200"));
// Fix non-unicast data rate to be the same as that of unicast
Config::SetDefault ("ns3::WifiRemoteStationManager::NonUnicastMode",
StringValue (phyMode));
NodeContainer c;
c.Create (2); // create 2 nodes
NodeContainer networkNodes;
networkNodes.Add (c.Get (0));
networkNodes.Add (c.Get (1));
// The below set of helpers will help us to put together the wifi NICs we want
WifiHelper wifi;
if (verbose)
{
wifi.EnableLogComponents ();
}
wifi.SetStandard (WIFI_PHY_STANDARD_80211b);
/** Wifi PHY **/
/***************************************************************************/
YansWifiPhyHelper wifiPhy = YansWifiPhyHelper::Default ();
wifiPhy.Set ("RxGain", DoubleValue (-10));
wifiPhy.Set ("TxGain", DoubleValue (offset + Prss));
wifiPhy.Set ("CcaMode1Threshold", DoubleValue (0.0));
/***************************************************************************/
/** wifi channel **/
YansWifiChannelHelper wifiChannel;
wifiChannel.SetPropagationDelay ("ns3::ConstantSpeedPropagationDelayModel");
wifiChannel.AddPropagationLoss ("ns3::FriisPropagationLossModel");
// create wifi channel
Ptr<YansWifiChannel> wifiChannelPtr = wifiChannel.Create ();
wifiPhy.SetChannel (wifiChannelPtr);
/** MAC layer **/
// Add a non-QoS upper MAC, and disable rate control
NqosWifiMacHelper wifiMac = NqosWifiMacHelper::Default ();
wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode",
StringValue (phyMode), "ControlMode",
StringValue (phyMode));
// Set it to ad-hoc mode
wifiMac.SetType ("ns3::AdhocWifiMac");
/** install PHY + MAC **/
NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, networkNodes);
/** mobility **/
MobilityHelper mobility;
Ptr<ListPositionAllocator> positionAlloc = CreateObject<ListPositionAllocator> ();
positionAlloc->Add (Vector (0.0, 0.0, 0.0));
positionAlloc->Add (Vector (2 * distanceToRx, 0.0, 0.0));
mobility.SetPositionAllocator (positionAlloc);
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
mobility.Install (c);
/** Energy Model **/
/***************************************************************************/
/* energy source */
BasicEnergySourceHelper basicSourceHelper;
// configure energy source
basicSourceHelper.Set ("BasicEnergySourceInitialEnergyJ", DoubleValue (1.0));
// install source
EnergySourceContainer sources = basicSourceHelper.Install (c);
/* device energy model */
WifiRadioEnergyModelHelper radioEnergyHelper;
// configure radio energy model
radioEnergyHelper.Set ("TxCurrentA", DoubleValue (0.0174));
radioEnergyHelper.Set ("RxCurrentA", DoubleValue (0.0197));
// install device model
DeviceEnergyModelContainer deviceModels = radioEnergyHelper.Install (devices, sources);
/* energy harvester */
BasicEnergyHarvesterHelper basicHarvesterHelper;
// configure energy harvester
basicHarvesterHelper.Set ("PeriodicHarvestedPowerUpdateInterval", TimeValue (Seconds (harvestingUpdateInterval)));
basicHarvesterHelper.Set ("HarvestablePower", StringValue ("ns3::UniformRandomVariable[Min=0.0|Max=0.1]"));
// install harvester on all energy sources
EnergyHarvesterContainer harvesters = basicHarvesterHelper.Install (sources);
/***************************************************************************/
/** Internet stack **/
InternetStackHelper internet;
internet.Install (networkNodes);
Ipv4AddressHelper ipv4;
NS_LOG_INFO ("Assign IP Addresses.");
ipv4.SetBase ("10.1.1.0", "255.255.255.0");
Ipv4InterfaceContainer i = ipv4.Assign (devices);
TypeId tid = TypeId::LookupByName ("ns3::UdpSocketFactory");
Ptr<Socket> recvSink = Socket::CreateSocket (networkNodes.Get (1), tid); // node 1, Destination
InetSocketAddress local = InetSocketAddress (Ipv4Address::GetAny (), 80);
recvSink->Bind (local);
recvSink->SetRecvCallback (MakeCallback (&ReceivePacket));
Ptr<Socket> source = Socket::CreateSocket (networkNodes.Get (0), tid); // node 0, Source
InetSocketAddress remote = InetSocketAddress (Ipv4Address::GetBroadcast (), 80);
source->SetAllowBroadcast (true);
source->Connect (remote);
/** connect trace sources **/
/***************************************************************************/
// all traces are connected to node 1 (Destination)
// energy source
Ptr<BasicEnergySource> basicSourcePtr = DynamicCast<BasicEnergySource> (sources.Get (1));
basicSourcePtr->TraceConnectWithoutContext ("RemainingEnergy", MakeCallback (&RemainingEnergy));
// device energy model
Ptr<DeviceEnergyModel> basicRadioModelPtr =
basicSourcePtr->FindDeviceEnergyModels ("ns3::WifiRadioEnergyModel").Get (0);
NS_ASSERT (basicRadioModelPtr != 0);
basicRadioModelPtr->TraceConnectWithoutContext ("TotalEnergyConsumption", MakeCallback (&TotalEnergy));
// energy harvester
Ptr<BasicEnergyHarvester> basicHarvesterPtr = DynamicCast<BasicEnergyHarvester> (harvesters.Get (1));
basicHarvesterPtr->TraceConnectWithoutContext ("HarvestedPower", MakeCallback (&HarvestedPower));
basicHarvesterPtr->TraceConnectWithoutContext ("TotalEnergyHarvested", MakeCallback (&TotalEnergyHarvested));
/***************************************************************************/
/** simulation setup **/
// start traffic
Simulator::Schedule (Seconds (startTime), &GenerateTraffic, source, PpacketSize,
networkNodes.Get (0), numPackets, interPacketInterval);
Simulator::Stop (Seconds (10.0));
Simulator::Run ();
Simulator::Destroy ();
return 0;
}
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"
+2
View File
@@ -3,3 +3,5 @@
def build(bld):
obj = bld.create_ns3_program('energy-model-example', ['core', 'mobility', 'wifi', 'energy', 'internet'])
obj.source = 'energy-model-example.cc'
obj = bld.create_ns3_program('energy-model-with-harvesting-example', ['core', 'mobility', 'wifi', 'energy', 'internet'])
obj.source = 'energy-model-with-harvesting-example.cc'
+11 -4
View File
@@ -57,16 +57,21 @@ main (int argc, char *argv[])
// Set a few attributes
Config::SetDefault ("ns3::RateErrorModel::ErrorRate", DoubleValue (0.01));
Config::SetDefault ("ns3::RateErrorModel::ErrorRate", DoubleValue (0.001));
Config::SetDefault ("ns3::RateErrorModel::ErrorUnit", StringValue ("ERROR_UNIT_PACKET"));
Config::SetDefault ("ns3::BurstErrorModel::ErrorRate", DoubleValue (0.01));
Config::SetDefault ("ns3::BurstErrorModel::BurstSize", StringValue ("ns3::UniformRandomVariable[Min=1|Max=3]"));
Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (210));
Config::SetDefault ("ns3::OnOffApplication::DataRate", DataRateValue (DataRate ("448kb/s")));
std::string errorModelType = "ns3::RateErrorModel";
// Allow the user to override any of the defaults and the above
// Bind()s at run-time, via command-line arguments
CommandLine cmd;
cmd.AddValue("errorModelType", "TypeId of the error model to use", errorModelType);
cmd.Parse (argc, argv);
// Here, we will explicitly create four nodes. In more sophisticated
@@ -146,9 +151,11 @@ main (int argc, char *argv[])
// Error model
//
// Create an ErrorModel based on the implementation (constructor)
// specified by the default classId
Ptr<RateErrorModel> em = CreateObject<RateErrorModel> ();
em->SetAttribute ("ErrorRate", DoubleValue (0.001));
// specified by the default TypeId
ObjectFactory factory;
factory.SetTypeId (errorModelType);
Ptr<ErrorModel> em = factory.Create<ErrorModel> ();
d3d2.Get (0)->SetAttribute ("ReceiveErrorModel", PointerValue (em));
// Now, let's use the ListErrorModel and explicitly force a loss
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"
+124
View File
@@ -0,0 +1,124 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2008-2009 Strasbourg University
* Copyright (c) 2013 Universita' di Firenze
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: David Gross <gdavid.devel@gmail.com>
* Sebastien Vincent <vincent@clarinet.u-strasbg.fr>
* Modified by Tommaso Pecorella <tommaso.pecorella@unifi.it>
*/
// Network topology
// //
// // Src n0 r n1 Dst
// // | _ |
// // MTU ====|_|==== MTU
// // 5000 router 1500
// //
// // - Tracing of queues and packet receptions to file "fragmentation-ipv6-two-mtu.tr"
#include <fstream>
#include "ns3/core-module.h"
#include "ns3/internet-module.h"
#include "ns3/csma-module.h"
#include "ns3/applications-module.h"
#include "ns3/ipv6-static-routing-helper.h"
#include "ns3/ipv6-routing-table-entry.h"
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("FragmentationIpv6TwoMtuExample");
int main (int argc, char** argv)
{
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
Ptr<Node> n0 = CreateObject<Node> ();
Ptr<Node> r = CreateObject<Node> ();
Ptr<Node> n1 = CreateObject<Node> ();
NodeContainer net1 (n0, r);
NodeContainer net2 (r, n1);
NodeContainer all (n0, r, n1);
NS_LOG_INFO ("Create IPv6 Internet Stack");
InternetStackHelper internetv6;
internetv6.Install (all);
NS_LOG_INFO ("Create channels.");
CsmaHelper csma;
csma.SetChannelAttribute ("DataRate", DataRateValue (5000000));
csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
NetDeviceContainer d2 = csma.Install (net2);
csma.SetDeviceAttribute ("Mtu", UintegerValue (5000));
NetDeviceContainer d1 = csma.Install (net1);
NS_LOG_INFO ("Create networks and assign IPv6 Addresses.");
Ipv6AddressHelper ipv6;
ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i1 = ipv6.Assign (d1);
i1.SetForwarding (1, true);
i1.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i2 = ipv6.Assign (d2);
i2.SetForwarding (0, true);
i2.SetDefaultRouteInAllNodes (0);
Ipv6StaticRoutingHelper routingHelper;
Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> (&std::cout);
routingHelper.PrintRoutingTableAt (Seconds (0), n0, routingStream);
/* Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via r */
uint32_t packetSize = 4096;
uint32_t maxPacketCount = 5;
Time interPacketInterval = Seconds (1.0);
Ping6Helper ping6;
ping6.SetLocal (i1.GetAddress (0, 1));
ping6.SetRemote (i2.GetAddress (1, 1));
ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
ApplicationContainer apps = ping6.Install (net1.Get (0));
apps.Start (Seconds (2.0));
apps.Stop (Seconds (20.0));
AsciiTraceHelper ascii;
csma.EnableAsciiAll (ascii.CreateFileStream ("fragmentation-ipv6-two-mtu.tr"));
csma.EnablePcapAll (std::string ("fragmentation-ipv6-two-mtu"), true);
NS_LOG_INFO ("Run Simulation.");
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");
}
+17 -59
View File
@@ -41,69 +41,23 @@ using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("FragmentationIpv6Example");
/**
* \class StackHelper
* \brief Helper to set or get some IPv6 information about nodes.
*/
class StackHelper
{
public:
/**
* \brief Add an address to a IPv6 node.
* \param n node
* \param interface interface index
* \param address IPv6 address to add
*/
inline void AddAddress (Ptr<Node>& n, uint32_t interface, Ipv6Address address)
{
Ptr<Ipv6> ipv6 = n->GetObject<Ipv6> ();
ipv6->AddAddress (interface, address);
}
/**
* \brief Print the routing table.
* \param n the node
*/
inline void PrintRoutingTable (Ptr<Node>& n)
{
Ptr<Ipv6StaticRouting> routing = 0;
Ipv6StaticRoutingHelper routingHelper;
Ptr<Ipv6> ipv6 = n->GetObject<Ipv6> ();
uint32_t nbRoutes = 0;
Ipv6RoutingTableEntry route;
routing = routingHelper.GetStaticRouting (ipv6);
std::cout << "Routing table of " << n << " : " << std::endl;
std::cout << "Destination\t\t\t\t" << "Gateway\t\t\t\t\t" << "Interface\t" << "Prefix to use" << std::endl;
nbRoutes = routing->GetNRoutes ();
for (uint32_t i = 0; i < nbRoutes; i++)
{
route = routing->GetRoute (i);
std::cout << route.GetDest () << "\t"
<< route.GetGateway () << "\t"
<< route.GetInterface () << "\t"
<< route.GetPrefixToUse () << "\t"
<< std::endl;
}
}
};
int main (int argc, char** argv)
{
#if 0
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
#endif
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
StackHelper stackHelper;
if (verbose)
{
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
Ptr<Node> n0 = CreateObject<Node> ();
@@ -129,12 +83,16 @@ int main (int argc, char** argv)
Ipv6AddressHelper ipv6;
ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i1 = ipv6.Assign (d1);
i1.SetRouter (1, true);
i1.SetForwarding (1, true);
i1.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i2 = ipv6.Assign (d2);
i2.SetRouter (0, true);
i2.SetForwarding (0, true);
i2.SetDefaultRouteInAllNodes (0);
stackHelper.PrintRoutingTable (n0);
Ipv6StaticRoutingHelper routingHelper;
Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> (&std::cout);
routingHelper.PrintRoutingTableAt (Seconds (0), n0, routingStream);
/* Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via r */
uint32_t packetSize = 4096;
+26 -71
View File
@@ -53,75 +53,25 @@ using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("Icmpv6RedirectExample");
/**
* \class StackHelper
* \brief Helper to set or get some IPv6 information about nodes.
*/
class StackHelper
{
public:
/**
* \brief Print the routing table.
* \param n the node
*/
inline void PrintRoutingTable (Ptr<Node>& n)
{
Ptr<Ipv6StaticRouting> routing = 0;
Ipv6StaticRoutingHelper routingHelper;
Ptr<Ipv6> ipv6 = n->GetObject<Ipv6> ();
uint32_t nbRoutes = 0;
Ipv6RoutingTableEntry route;
routing = routingHelper.GetStaticRouting (ipv6);
std::cout << "Routing table of " << n << " : " << std::endl;
std::cout << "Destination\t\t\t\t" << "Gateway\t\t\t\t\t" << "Interface\t" << "Prefix to use" << std::endl;
nbRoutes = routing->GetNRoutes ();
for(uint32_t i = 0; i < nbRoutes; i++)
{
route = routing->GetRoute (i);
std::cout << route.GetDest () << "\t"
<< route.GetGateway () << "\t"
<< route.GetInterface () << "\t"
<< route.GetPrefixToUse () << "\t"
<< std::endl;
}
}
/**
* \brief Add an host route.
* \param n node
* \param dst destination address
* \param nextHop next hop for destination
* \param interface output interface
*/
inline void AddHostRouteTo (Ptr<Node>& n, Ipv6Address dst, Ipv6Address nextHop, uint32_t interface)
{
Ptr<Ipv6StaticRouting> routing = 0;
Ipv6StaticRoutingHelper routingHelper;
Ptr<Ipv6> ipv6 = n->GetObject<Ipv6> ();
routing = routingHelper.GetStaticRouting (ipv6);
routing->AddHostRouteTo (dst, nextHop, interface);
}
};
int main (int argc, char **argv)
{
#if 0
LogComponentEnable ("Icmpv6RedirectExample", LOG_LEVEL_INFO);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_INFO);
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
#endif
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("Icmpv6RedirectExample", LOG_LEVEL_INFO);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_INFO);
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
Ptr<Node> sta1 = CreateObject<Node> ();
Ptr<Node> r1 = CreateObject<Node> ();
@@ -131,8 +81,6 @@ int main (int argc, char **argv)
NodeContainer net2 (r2, sta2);
NodeContainer all (sta1, r1, r2, sta2);
StackHelper stackHelper;
InternetStackHelper internetv6;
internetv6.Install (all);
@@ -148,17 +96,24 @@ int main (int argc, char **argv)
ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic1 = ipv6.Assign (ndc1);
iic1.SetRouter (2, true);
iic1.SetRouter (1, true);
iic1.SetForwarding (2, true);
iic1.SetForwarding (1, true);
iic1.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic2 = ipv6.Assign (ndc2);
iic2.SetRouter (0, true);
iic2.SetForwarding (0, true);
iic2.SetDefaultRouteInAllNodes (0);
stackHelper.AddHostRouteTo (r1, iic2.GetAddress (1, 1), iic1.GetAddress (2, 1), iic1.GetInterfaceIndex (1));
Ipv6StaticRoutingHelper routingHelper;
Simulator::Schedule (Seconds (0.0), &StackHelper::PrintRoutingTable, &stackHelper, r1);
Simulator::Schedule (Seconds (3.0), &StackHelper::PrintRoutingTable, &stackHelper, sta1);
// manually inject a static route to the second router.
Ptr<Ipv6StaticRouting> routing = routingHelper.GetStaticRouting (r1->GetObject<Ipv6> ());
routing->AddHostRouteTo (iic2.GetAddress (1, 1), iic1.GetAddress (2, 0), iic1.GetInterfaceIndex (1));
Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> (&std::cout);
routingHelper.PrintRoutingTableAt (Seconds (0.0), r1, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (3.0), sta1, routingStream);
NS_LOG_INFO ("Create Applications.");
uint32_t packetSize = 1024;
+33 -19
View File
@@ -50,19 +50,23 @@ NS_LOG_COMPONENT_DEFINE ("LooseRoutingIpv6Example");
int main (int argc, char **argv)
{
#if 0
LogComponentEnable ("Ipv6ExtensionLooseRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Extension", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
#endif
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("Ipv6ExtensionLooseRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Extension", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
Ptr<Node> h0 = CreateObject<Node> ();
Ptr<Node> h1 = CreateObject<Node> ();
@@ -106,31 +110,41 @@ int main (int argc, char **argv)
ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i1 = ipv6.Assign (d1);
i1.SetRouter (1, true);
i1.SetForwarding (1, true);
i1.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i2 = ipv6.Assign (d2);
i2.SetRouter (1, true);
i2.SetForwarding (1, true);
i2.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:3::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i3 = ipv6.Assign (d3);
i3.SetRouter (0, true);
i3.SetRouter (1, true);
i3.SetForwarding (0, true);
i3.SetDefaultRouteInAllNodes (0);
i3.SetForwarding (1, true);
i3.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:4::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i4 = ipv6.Assign (d4);
i4.SetRouter (0, true);
i4.SetRouter (1, true);
i4.SetForwarding (0, true);
i4.SetDefaultRouteInAllNodes (0);
i4.SetForwarding (1, true);
i4.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:5::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i5 = ipv6.Assign (d5);
i5.SetRouter (0, true);
i5.SetRouter (1, true);
i5.SetForwarding (0, true);
i5.SetDefaultRouteInAllNodes (0);
i5.SetForwarding (1, true);
i5.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:6::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i6 = ipv6.Assign (d6);
i6.SetRouter (0, true);
i6.SetRouter (1, true);
i6.SetForwarding (0, true);
i6.SetDefaultRouteInAllNodes (0);
i6.SetForwarding (1, true);
i6.SetDefaultRouteInAllNodes (1);
NS_LOG_INFO ("Create Applications.");
+15 -11
View File
@@ -41,21 +41,25 @@ NS_LOG_COMPONENT_DEFINE ("Ping6Example");
int main (int argc, char **argv)
{
#if 0
LogComponentEnable ("Ping6Example", LOG_LEVEL_INFO);
LogComponentEnable ("Ipv6EndPointDemux", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6ListRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
#endif
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("Ping6Example", LOG_LEVEL_INFO);
LogComponentEnable ("Ipv6EndPointDemux", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6ListRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
NodeContainer n;
n.Create (4);
+74 -69
View File
@@ -49,69 +49,56 @@ using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("RadvdTwoPrefixExample");
/**
* \class StackHelper
* \brief Helper to set or get some IPv6 information about nodes.
* \class IpAddressHelper
* \brief Helper to print a node's IP addresses.
*/
class StackHelper
class IpAddressHelper
{
public:
/**
* \brief Add an address to a IPv6 node.
* \param n node
* \param interface interface index
* \param address IPv6 address to add
*/
inline void AddAddress (Ptr<Node>& n, uint32_t interface, Ipv6Address address)
{
Ptr<Ipv6> ipv6 = n->GetObject<Ipv6> ();
ipv6->AddAddress (interface, address);
}
/**
* \brief Print the routing table.
* \brief Print the node's IP addresses.
* \param n the node
*/
inline void PrintRoutingTable (Ptr<Node>& n)
inline void PrintIpAddresses (Ptr<Node>& n)
{
Ptr<Ipv6StaticRouting> routing = 0;
Ipv6StaticRoutingHelper routingHelper;
Ptr<Ipv6> ipv6 = n->GetObject<Ipv6> ();
uint32_t nbRoutes = 0;
Ipv6RoutingTableEntry route;
uint32_t nInterfaces = ipv6->GetNInterfaces();
routing = routingHelper.GetStaticRouting (ipv6);
std::cout << "Node: " << ipv6->GetObject<Node> ()->GetId ()
<< " Time: " << Simulator::Now ().GetSeconds () << "s "
<< "IPv6 addresses" << std::endl;
std::cout << "(Interface index, Address index)\t" << "IPv6 Address" << std::endl;
std::cout << "Routing table of " << n << " : " << std::endl;
std::cout << "Destination\t\t\t\t" << "Gateway\t\t\t\t\t" << "Interface\t" << "Prefix to use" << std::endl;
nbRoutes = routing->GetNRoutes ();
for (uint32_t i = 0; i < nbRoutes; i++)
for (uint32_t i = 0; i < nInterfaces; i++)
{
route = routing->GetRoute (i);
std::cout << route.GetDest () << "\t"
<< route.GetGateway () << "\t"
<< route.GetInterface () << "\t"
<< route.GetPrefixToUse () << "\t"
<< std::endl;
for (uint32_t j = 0; j < ipv6->GetNAddresses(i); j++)
{
std::cout << "(" << int(i) << "," << int(j) << ")\t" << ipv6->GetAddress(i,j) << std::endl;
}
}
std::cout << std::endl;
}
};
int main (int argc, char** argv)
{
#if 0
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6RawSocketImpl", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("RadvdApplication", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
#endif
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6RawSocketImpl", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("RadvdApplication", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
Ptr<Node> n0 = CreateObject<Node> ();
Ptr<Node> r = CreateObject<Node> ();
@@ -120,7 +107,6 @@ int main (int argc, char** argv)
NodeContainer net1 (n0, r);
NodeContainer net2 (r, n1);
NodeContainer all (n0, r, n1);
StackHelper stackHelper;
NS_LOG_INFO ("Create IPv6 Internet Stack");
InternetStackHelper internetv6;
@@ -145,18 +131,21 @@ int main (int argc, char** argv)
NetDeviceContainer tmp2;
tmp2.Add (d1.Get (1)); /* R */
Ipv6InterfaceContainer iicr1 = ipv6.Assign (tmp2); /* R interface to the first subnet is just statically assigned */
iicr1.SetRouter (0, true);
iicr1.SetForwarding (0, true);
iicr1.SetDefaultRouteInAllNodes (0);
iic1.Add (iicr1);
/* add another IPv6 address for second prefix advertised on first subnet */
stackHelper.AddAddress (r, iic1.GetInterfaceIndex (1), Ipv6Address ("2001:ABCD::2"));
ipv6.SetBase (Ipv6Address ("2001:ABCD::2"), Ipv6Prefix (64));
ipv6.Assign (tmp2);
/* second subnet R - n1 */
ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
NetDeviceContainer tmp3;
tmp3.Add (d2.Get (0)); /* R */
Ipv6InterfaceContainer iicr2 = ipv6.Assign (tmp3); /* R interface */
iicr2.SetRouter (0, true);
iicr2.SetForwarding (0, true);
iicr2.SetDefaultRouteInAllNodes (0);
NetDeviceContainer tmp4;
tmp4.Add (d2.Get (1)); /* n1 */
@@ -164,29 +153,39 @@ int main (int argc, char** argv)
iic2.Add (iicr2);
/* radvd configuration */
Ipv6Address prefix ("2001:ABCD::0"); /* create the prefix */
Ipv6Address prefixBis ("2001:1::0"); /* create the prefix */
Ipv6Address prefix2 ("2001:2::0"); /* create the prefix */
uint32_t indexRouter = iic1.GetInterfaceIndex (1); /* R interface (n0 - R) */
uint32_t indexRouter2 = iic2.GetInterfaceIndex (1); /* R interface (R - n1) */
Ptr<Radvd> radvd = CreateObject<Radvd> ();
Ptr<RadvdInterface> routerInterface = Create<RadvdInterface> (indexRouter, 2000, 1000);
Ptr<RadvdPrefix> routerPrefix = Create<RadvdPrefix> (prefix, 64, 3, 5);
Ptr<RadvdPrefix> routerPrefixBis = Create<RadvdPrefix> (prefixBis, 64, 3, 5);
Ptr<RadvdInterface> routerInterface2 = Create<RadvdInterface> (indexRouter2, 2000, 1000);
Ptr<RadvdPrefix> routerPrefix2 = Create<RadvdPrefix> (prefix2, 64, 3, 5);
RadvdHelper radvdHelper;
/* R interface (n0 - R) */
radvdHelper.AddAnnouncedPrefix(iic1.GetInterfaceIndex (1), Ipv6Address("2001:ABCD::0"), 64);
radvdHelper.AddAnnouncedPrefix(iic1.GetInterfaceIndex (1), Ipv6Address("2001:1::0"), 64);
/* first interface advertise two prefixes (2001:1::/64 and 2001:ABCD::/64) */
/* prefix is added in the inverse order in packet */
routerInterface->AddPrefix (routerPrefix);
routerInterface->AddPrefix (routerPrefixBis);
routerInterface2->AddPrefix (routerPrefix2);
radvd->AddConfiguration (routerInterface);
radvd->AddConfiguration (routerInterface2);
// Set some non-standard timers so the simulation is not taking ages
Ptr<RadvdInterface> routerInterface = radvdHelper.GetRadvdInterface(iic1.GetInterfaceIndex (1));
routerInterface->SetMaxRtrAdvInterval (2000);
routerInterface->SetMinRtrAdvInterval (1000);
RadvdInterface::RadvdPrefixList prefixList = routerInterface->GetPrefixes ();
for (RadvdInterface::RadvdPrefixListI iter = prefixList.begin(); iter != prefixList.end(); iter++)
{
(*iter)->SetPreferredLifeTime (3);
(*iter)->SetValidLifeTime (5);
}
r->AddApplication (radvd);
radvd->SetStartTime (Seconds (1.0));
radvd->SetStopTime (Seconds (2.0));
/* R interface (R - n1) */
radvdHelper.AddAnnouncedPrefix(iic2.GetInterfaceIndex (1), Ipv6Address("2001:2::0"), 64);
// Set some non-standard timers so the simulation is not taking ages
routerInterface = radvdHelper.GetRadvdInterface(iic2.GetInterfaceIndex (1));
routerInterface->SetMaxRtrAdvInterval (2000);
routerInterface->SetMinRtrAdvInterval (1000);
prefixList = routerInterface->GetPrefixes ();
for (RadvdInterface::RadvdPrefixListI iter = prefixList.begin(); iter != prefixList.end(); iter++)
{
(*iter)->SetPreferredLifeTime (3);
(*iter)->SetValidLifeTime (5);
}
ApplicationContainer radvdApps = radvdHelper.Install(r);
radvdApps.Start (Seconds (1.0));
radvdApps.Stop (Seconds (2.0));
/* Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via R */
uint32_t packetSize = 1024;
@@ -205,10 +204,16 @@ int main (int argc, char** argv)
apps.Start (Seconds (2.0));
apps.Stop (Seconds (9.0));
Ipv6StaticRoutingHelper routingHelper;
Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> (&std::cout);
routingHelper.PrintRoutingTableAt (Seconds (2.0), n0, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (10.0), n0, routingStream);
IpAddressHelper ipAddressHelper;
/* RA should be received, two prefixes + routes + default route should be present */
Simulator::Schedule (Seconds (2.0), &StackHelper::PrintRoutingTable, &stackHelper, n0);
Simulator::Schedule (Seconds (2.0), &IpAddressHelper::PrintIpAddresses, &ipAddressHelper, n0);
/* at the end, RA addresses and routes should be cleared */
Simulator::Schedule (Seconds (10.0), &StackHelper::PrintRoutingTable, &stackHelper, n0);
Simulator::Schedule (Seconds (10.0), &IpAddressHelper::PrintIpAddresses, &ipAddressHelper, n0);
AsciiTraceHelper ascii;
csma.EnableAsciiAll (ascii.CreateFileStream ("radvd-two-prefix.tr"));
+25 -28
View File
@@ -47,19 +47,23 @@ NS_LOG_COMPONENT_DEFINE ("RadvdExample");
int main (int argc, char** argv)
{
#if 0
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6RawSocketImpl", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("RadvdApplication", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
#endif
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6RawSocketImpl", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("RadvdApplication", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
Ptr<Node> n0 = CreateObject<Node> ();
Ptr<Node> r = CreateObject<Node> ();
@@ -92,7 +96,8 @@ int main (int argc, char** argv)
NetDeviceContainer tmp2;
tmp2.Add (d1.Get (1)); /* R */
Ipv6InterfaceContainer iicr1 = ipv6.Assign (tmp2); /* R interface to the first subnet is just statically assigned */
iicr1.SetRouter (0, true);
iicr1.SetForwarding (0, true);
iicr1.SetDefaultRouteInAllNodes (0);
iic1.Add (iicr1);
/* second subnet R - n1 */
@@ -100,7 +105,8 @@ int main (int argc, char** argv)
NetDeviceContainer tmp3;
tmp3.Add (d2.Get (0)); /* R */
Ipv6InterfaceContainer iicr2 = ipv6.Assign (tmp3); /* R interface */
iicr2.SetRouter (0, true);
iicr2.SetForwarding (0, true);
iicr2.SetDefaultRouteInAllNodes (0);
NetDeviceContainer tmp4;
tmp4.Add (d2.Get (1)); /* n1 */
@@ -108,24 +114,15 @@ int main (int argc, char** argv)
iic2.Add (iicr2);
/* radvd configuration */
Ipv6Address prefix ("2001:1::0"); /* create the prefix */
Ipv6Address prefix2 ("2001:2::0"); /* create the prefix */
uint32_t indexRouter = iic1.GetInterfaceIndex (1); /* R interface (n0 - R) */
uint32_t indexRouter2 = iic2.GetInterfaceIndex (1); /* R interface (R - n1) */
Ptr<Radvd> radvd = CreateObject<Radvd> ();
Ptr<RadvdInterface> routerInterface = Create<RadvdInterface> (indexRouter, 5000, 1000);
Ptr<RadvdPrefix> routerPrefix = Create<RadvdPrefix> (prefix, 64, 3, 5);
Ptr<RadvdInterface> routerInterface2 = Create<RadvdInterface> (indexRouter2, 5000, 1000);
Ptr<RadvdPrefix> routerPrefix2 = Create<RadvdPrefix> (prefix2, 64, 3, 5);
RadvdHelper radvdHelper;
/* R interface (n0 - R) */
radvdHelper.AddAnnouncedPrefix(iic1.GetInterfaceIndex (1), Ipv6Address("2001:1::0"), 64);
/* R interface (R - n1) */
radvdHelper.AddAnnouncedPrefix(iic2.GetInterfaceIndex (1), Ipv6Address("2001:2::0"), 64);
routerInterface->AddPrefix (routerPrefix);
routerInterface2->AddPrefix (routerPrefix2);
radvd->AddConfiguration (routerInterface);
radvd->AddConfiguration (routerInterface2);
r->AddApplication (radvd);
radvd->SetStartTime (Seconds (1.0));
radvd->SetStopTime (Seconds (10.0));
ApplicationContainer radvdApps = radvdHelper.Install (r);
radvdApps.Start (Seconds (1.0));
radvdApps.Stop (Seconds (10.0));
/* Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via R */
uint32_t packetSize = 1024;
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"
+11 -5
View File
@@ -1,13 +1,13 @@
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
def build(bld):
obj = bld.create_ns3_program('icmpv6-redirect', ['csma', 'internet'])
obj = bld.create_ns3_program('icmpv6-redirect', ['csma', 'internet', 'applications'])
obj.source = 'icmpv6-redirect.cc'
obj = bld.create_ns3_program('ping6', ['csma', 'internet'])
obj = bld.create_ns3_program('ping6', ['csma', 'internet', 'applications'])
obj.source = 'ping6.cc'
obj = bld.create_ns3_program('radvd', ['csma', 'internet'])
obj = bld.create_ns3_program('radvd', ['csma', 'internet', 'applications'])
obj.source = 'radvd.cc'
obj = bld.create_ns3_program('radvd-two-prefix', ['csma', 'internet', 'applications'])
@@ -16,9 +16,15 @@ def build(bld):
obj = bld.create_ns3_program('test-ipv6', ['point-to-point', 'internet'])
obj.source = 'test-ipv6.cc'
obj = bld.create_ns3_program('fragmentation-ipv6', ['csma', 'internet'])
obj = bld.create_ns3_program('fragmentation-ipv6', ['csma', 'internet', 'applications'])
obj.source = 'fragmentation-ipv6.cc'
obj = bld.create_ns3_program('fragmentation-ipv6-two-MTU', ['csma', 'internet', 'applications'])
obj.source = 'fragmentation-ipv6-two-MTU.cc'
obj = bld.create_ns3_program('loose-routing-ipv6', ['csma', 'internet'])
obj = bld.create_ns3_program('loose-routing-ipv6', ['csma', 'internet', 'applications'])
obj.source = 'loose-routing-ipv6.cc'
obj = bld.create_ns3_program('wsn-ping6', ['lr-wpan', 'internet', 'sixlowpan', 'mobility', 'applications'])
obj.source = 'wsn-ping6.cc'
+141
View File
@@ -0,0 +1,141 @@
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2014 Universita' di Firenze
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
*/
// Network topology
//
// n0 n1
// | |
// =================
// WSN (802.15.4)
//
// - ICMPv6 echo request flows from n0 to n1 and back with ICMPv6 echo reply
// - DropTail queues
// - Tracing of queues and packet receptions to file "wsn-ping6.tr"
//
// This example is based on the "ping6.cc" example.
#include <fstream>
#include "ns3/core-module.h"
#include "ns3/internet-module.h"
#include "ns3/sixlowpan-module.h"
#include "ns3/lr-wpan-module.h"
#include "ns3/applications-module.h"
#include "ns3/mobility-module.h"
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("Ping6WsnExample");
int main (int argc, char **argv)
{
bool verbose = false;
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("Ping6WsnExample", LOG_LEVEL_INFO);
LogComponentEnable ("Ipv6EndPointDemux", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6L3Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6StaticRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6ListRouting", LOG_LEVEL_ALL);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
LogComponentEnable ("SixLowPanNetDevice", LOG_LEVEL_ALL);
}
NS_LOG_INFO ("Create nodes.");
NodeContainer nodes;
nodes.Create (2);
// Set seed for random numbers
SeedManager::SetSeed (167);
// Install mobility
MobilityHelper mobility;
mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
Ptr<ListPositionAllocator> nodesPositionAlloc = CreateObject<ListPositionAllocator> ();
nodesPositionAlloc->Add (Vector (0.0, 0.0, 0.0));
nodesPositionAlloc->Add (Vector (50.0, 0.0, 0.0));
mobility.SetPositionAllocator (nodesPositionAlloc);
mobility.Install (nodes);
NS_LOG_INFO ("Create channels.");
LrWpanHelper lrWpanHelper;
// Add and install the LrWpanNetDevice for each node
// lrWpanHelper.EnableLogComponents();
NetDeviceContainer devContainer = lrWpanHelper.Install(nodes);
lrWpanHelper.AssociateToPan (devContainer, 10);
std::cout << "Created " << devContainer.GetN() << " devices" << std::endl;
std::cout << "There are " << nodes.GetN() << " nodes" << std::endl;
/* Install IPv4/IPv6 stack */
NS_LOG_INFO ("Install Internet stack.");
InternetStackHelper internetv6;
internetv6.SetIpv4StackInstall (false);
internetv6.Install (nodes);
// Install 6LowPan layer
NS_LOG_INFO ("Install 6LoWPAN.");
SixLowPanHelper sixlowpan;
NetDeviceContainer six1 = sixlowpan.Install (devContainer);
NS_LOG_INFO ("Assign addresses.");
Ipv6AddressHelper ipv6;
ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i = ipv6.Assign (six1);
NS_LOG_INFO ("Create Applications.");
/* Create a Ping6 application to send ICMPv6 echo request from node zero to
* all-nodes (ff02::1).
*/
uint32_t packetSize = 10;
uint32_t maxPacketCount = 5;
Time interPacketInterval = Seconds (1.);
Ping6Helper ping6;
ping6.SetLocal (i.GetAddress (0, 1));
ping6.SetRemote (i.GetAddress (1, 1));
// ping6.SetRemote (Ipv6Address::GetAllNodesMulticast ());
ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
ApplicationContainer apps = ping6.Install (nodes.Get (0));
apps.Start (Seconds (2.0));
apps.Stop (Seconds (10.0));
AsciiTraceHelper ascii;
lrWpanHelper.EnableAsciiAll (ascii.CreateFileStream ("ping6wsn.tr"));
lrWpanHelper.EnablePcapAll (std::string ("ping6wsn"), true);
NS_LOG_INFO ("Run Simulation.");
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");
}
@@ -44,7 +44,6 @@
#include <string>
#include <vector>
#include <cstdlib>
#include <time.h>
#include "ns3/core-module.h"
#include "ns3/network-module.h"
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"
+1 -1
View File
@@ -1,5 +1,5 @@
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
def build(bld):
obj = bld.create_ns3_program('object-names', ['core', 'csma', 'internet'])
obj = bld.create_ns3_program('object-names', ['core', 'csma', 'internet', 'applications'])
obj.source = 'object-names.cc'
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"
+1 -1
View File
@@ -1,7 +1,7 @@
## -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
def build(bld):
obj = bld.create_ns3_program('realtime-udp-echo', ['csma', 'internet'])
obj = bld.create_ns3_program('realtime-udp-echo', ['csma', 'internet', 'applications'])
obj.source = 'realtime-udp-echo.cc'
bld.register_ns3_script('realtime-udp-echo.py', ['csma', 'internet', 'applications'])
+2 -2
View File
@@ -119,7 +119,7 @@ RoutingExperiment::RoutingExperiment ()
{
}
std::string
static inline std::string
PrintReceivedPacket (Ptr<Socket> socket, Ptr<Packet> packet)
{
SocketAddressTag tag;
@@ -343,7 +343,7 @@ RoutingExperiment::Run (int nSinks, double txp, std::string CSVfileName)
onoff1.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1.0]"));
onoff1.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
for (int i = 0; i <= nSinks - 1; i++)
for (int i = 0; i < nSinks; i++)
{
Ptr<Socket> sink = SetupPacketReceive (adhocInterfaces.GetAddress (i), adhocNodes.Get (i));
+268
View File
@@ -0,0 +1,268 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
* Copyright (c) 2014 Universita' di Firenze, Italy
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Author: Tommaso Pecorella <tommaso.pecorella@unifi.it>
*/
// Network topology
//
// SRC
// |<=== source network
// A-----B
// \ / \ all networks have cost 1, except
// \ / | for the direct link from C to D, which
// C / has cost 10
// | /
// |/
// D
// |<=== target network
// DST
//
//
// A, B, C and D are RIPng routers.
// A and D are configured with static addresses.
// SRC and DST will exchange packets.
//
// After about 3 seconds, the topology is built, and Echo Reply will be received.
// After 40 seconds, the link between B and D will break, causing a route failure.
// After 44 seconds from the failure, the routers will recovery from the failure.
// Split Horizoning should affect the recovery time, but it is not. See the manual
// for an explanation of this effect.
//
// If "showPings" is enabled, the user will see:
// 1) if the ping has been acknowledged
// 2) if a Destination Unreachable has been received by the sender
// 3) nothing, when the Echo Request has been received by the destination but
// the Echo Reply is unable to reach the sender.
// Examining the .pcap files with Wireshark can confirm this effect.
#include <fstream>
#include "ns3/core-module.h"
#include "ns3/internet-module.h"
#include "ns3/csma-module.h"
#include "ns3/applications-module.h"
#include "ns3/ipv6-static-routing-helper.h"
#include "ns3/ipv6-routing-table-entry.h"
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("RipNgSimpleRouting");
void TearDownLink (Ptr<Node> nodeA, Ptr<Node> nodeB, uint32_t interfaceA, uint32_t interfaceB)
{
nodeA->GetObject<Ipv6> ()->SetDown (interfaceA);
nodeB->GetObject<Ipv6> ()->SetDown (interfaceB);
}
int main (int argc, char **argv)
{
bool verbose = false;
bool printRoutingTables = false;
bool showPings = false;
std::string SplitHorizon ("PoisonReverse");
CommandLine cmd;
cmd.AddValue ("verbose", "turn on log components", verbose);
cmd.AddValue ("printRoutingTables", "Print routing tables at 30, 60 and 90 seconds", printRoutingTables);
cmd.AddValue ("showPings", "Show Ping6 reception", showPings);
cmd.AddValue ("splitHorizonStrategy", "Split Horizon strategy to use (NoSplitHorizon, SplitHorizon, PoisonReverse)", SplitHorizon);
cmd.Parse (argc, argv);
if (verbose)
{
LogComponentEnable ("RipNgSimpleRouting", LOG_LEVEL_INFO);
LogComponentEnable ("RipNg", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_INFO);
LogComponentEnable ("Ipv6Interface", LOG_LEVEL_ALL);
LogComponentEnable ("Icmpv6L4Protocol", LOG_LEVEL_ALL);
LogComponentEnable ("NdiscCache", LOG_LEVEL_ALL);
LogComponentEnable ("Ping6Application", LOG_LEVEL_ALL);
}
if (showPings)
{
LogComponentEnable ("Ping6Application", LOG_LEVEL_INFO);
}
if (SplitHorizon == "NoSplitHorizon")
{
Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::NO_SPLIT_HORIZON));
}
else if (SplitHorizon == "SplitHorizon")
{
Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::SPLIT_HORIZON));
}
else
{
Config::SetDefault ("ns3::RipNg::SplitHorizon", EnumValue (RipNg::POISON_REVERSE));
}
NS_LOG_INFO ("Create nodes.");
Ptr<Node> src = CreateObject<Node> ();
Names::Add ("SrcNode", src);
Ptr<Node> dst = CreateObject<Node> ();
Names::Add ("DstNode", dst);
Ptr<Node> a = CreateObject<Node> ();
Names::Add ("RouterA", a);
Ptr<Node> b = CreateObject<Node> ();
Names::Add ("RouterB", b);
Ptr<Node> c = CreateObject<Node> ();
Names::Add ("RouterC", c);
Ptr<Node> d = CreateObject<Node> ();
Names::Add ("RouterD", d);
NodeContainer net1 (src, a);
NodeContainer net2 (a, b);
NodeContainer net3 (a, c);
NodeContainer net4 (b, c);
NodeContainer net5 (c, d);
NodeContainer net6 (b, d);
NodeContainer net7 (d, dst);
NodeContainer routers (a, b, c, d);
NodeContainer nodes (src, dst);
NS_LOG_INFO ("Create channels.");
CsmaHelper csma;
csma.SetChannelAttribute ("DataRate", DataRateValue (5000000));
csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
NetDeviceContainer ndc1 = csma.Install (net1);
NetDeviceContainer ndc2 = csma.Install (net2);
NetDeviceContainer ndc3 = csma.Install (net3);
NetDeviceContainer ndc4 = csma.Install (net4);
NetDeviceContainer ndc5 = csma.Install (net5);
NetDeviceContainer ndc6 = csma.Install (net6);
NetDeviceContainer ndc7 = csma.Install (net7);
NS_LOG_INFO ("Create IPv6 and routing");
RipNgHelper ripNgRouting;
// Rule of thumb:
// Interfaces are added sequentially, starting from 0
// However, interface 0 is always the loopback...
ripNgRouting.ExcludeInterface (a, 1);
ripNgRouting.ExcludeInterface (d, 3);
ripNgRouting.SetInterfaceMetric (c, 3, 10);
ripNgRouting.SetInterfaceMetric (d, 1, 10);
Ipv6ListRoutingHelper listRH;
listRH.Add (ripNgRouting, 0);
InternetStackHelper internetv6;
internetv6.SetIpv4StackInstall (false);
internetv6.SetRoutingHelper (listRH);
internetv6.Install (routers);
InternetStackHelper internetv6Nodes;
internetv6Nodes.SetIpv4StackInstall (false);
internetv6Nodes.Install (nodes);
// Assign addresses.
// The source and destination networks have global addresses
// The "core" network just needs link-local addresses for routing.
// We assign global addresses to the routers as well to receive
// ICMPv6 errors.
NS_LOG_INFO ("Assign IPv6 Addresses.");
Ipv6AddressHelper ipv6;
ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic1 = ipv6.Assign (ndc1);
iic1.SetForwarding (1, true);
iic1.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:0:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic2 = ipv6.Assign (ndc2);
iic2.SetForwarding (0, true);
iic2.SetForwarding (1, true);
ipv6.SetBase (Ipv6Address ("2001:0:2::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic3 = ipv6.Assign (ndc3);
iic3.SetForwarding (0, true);
iic3.SetForwarding (1, true);
ipv6.SetBase (Ipv6Address ("2001:0:3::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic4 = ipv6.Assign (ndc4);
iic4.SetForwarding (0, true);
iic4.SetForwarding (1, true);
ipv6.SetBase (Ipv6Address ("2001:0:4::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic5 = ipv6.Assign (ndc5);
iic5.SetForwarding (0, true);
iic5.SetForwarding (1, true);
ipv6.SetBase (Ipv6Address ("2001:0:5::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic6 = ipv6.Assign (ndc6);
iic6.SetForwarding (0, true);
iic6.SetForwarding (1, true);
ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
Ipv6InterfaceContainer iic7 = ipv6.Assign (ndc7);
iic7.SetForwarding (0, true);
iic7.SetDefaultRouteInAllNodes (0);
if (printRoutingTables)
{
RipNgHelper routingHelper;
Ptr<OutputStreamWrapper> routingStream = Create<OutputStreamWrapper> (&std::cout);
routingHelper.PrintRoutingTableAt (Seconds (30.0), a, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (30.0), b, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (30.0), c, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (30.0), d, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (60.0), a, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (60.0), b, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (60.0), c, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (60.0), d, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (90.0), a, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (90.0), b, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (90.0), c, routingStream);
routingHelper.PrintRoutingTableAt (Seconds (90.0), d, routingStream);
}
NS_LOG_INFO ("Create Applications.");
uint32_t packetSize = 1024;
uint32_t maxPacketCount = 100;
Time interPacketInterval = Seconds (1.0);
Ping6Helper ping6;
ping6.SetLocal (iic1.GetAddress (0, 1));
ping6.SetRemote (iic7.GetAddress (1, 1));
ping6.SetAttribute ("MaxPackets", UintegerValue (maxPacketCount));
ping6.SetAttribute ("Interval", TimeValue (interPacketInterval));
ping6.SetAttribute ("PacketSize", UintegerValue (packetSize));
ApplicationContainer apps = ping6.Install (src);
apps.Start (Seconds (1.0));
apps.Stop (Seconds (110.0));
AsciiTraceHelper ascii;
csma.EnableAsciiAll (ascii.CreateFileStream ("ripng-simple-routing.tr"));
csma.EnablePcapAll ("ripng-simple-routing", true);
Simulator::Schedule (Seconds (40), &TearDownLink, b, d, 3, 2);
/* Now, do the actual simulation. */
NS_LOG_INFO ("Run Simulation.");
Simulator::Stop (Seconds (120));
Simulator::Run ();
Simulator::Destroy ();
NS_LOG_INFO ("Done.");
}
+3 -4
View File
@@ -149,11 +149,10 @@ main (int argc, char *argv[])
p2p.EnablePcapAll ("simple-global-routing");
// Flow Monitor
Ptr<FlowMonitor> flowmon;
FlowMonitorHelper flowmonHelper;
if (enableFlowMonitor)
{
FlowMonitorHelper flowmonHelper;
flowmon = flowmonHelper.InstallAll ();
flowmonHelper.InstallAll ();
}
NS_LOG_INFO ("Run Simulation.");
@@ -163,7 +162,7 @@ main (int argc, char *argv[])
if (enableFlowMonitor)
{
flowmon->SerializeToXmlFile ("simple-global-routing.flowmon", false, false);
flowmonHelper.SerializeToXmlFile ("simple-global-routing.flowmon", false, false);
}
Simulator::Destroy ();
+4 -2
View File
@@ -130,10 +130,12 @@ int main (int argc, char** argv)
Ipv6AddressHelper ipv6;
ipv6.SetBase (Ipv6Address ("2001:1::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i1 = ipv6.Assign (d1);
i1.SetRouter (1, true);
i1.SetForwarding (1, true);
i1.SetDefaultRouteInAllNodes (1);
ipv6.SetBase (Ipv6Address ("2001:2::"), Ipv6Prefix (64));
Ipv6InterfaceContainer i2 = ipv6.Assign (d2);
i2.SetRouter (0, true);
i2.SetForwarding (0, true);
i2.SetDefaultRouteInAllNodes (0);
stackHelper.PrintRoutingTable (n0);
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"
+11 -7
View File
@@ -2,19 +2,19 @@
def build(bld):
obj = bld.create_ns3_program('dynamic-global-routing',
['point-to-point', 'csma', 'internet'])
['point-to-point', 'csma', 'internet', 'applications'])
obj.source = 'dynamic-global-routing.cc'
obj = bld.create_ns3_program('static-routing-slash32',
['point-to-point', 'csma', 'internet'])
['point-to-point', 'csma', 'internet', 'applications'])
obj.source = 'static-routing-slash32.cc'
obj = bld.create_ns3_program('global-routing-slash32',
['point-to-point', 'csma', 'internet'])
['point-to-point', 'csma', 'internet', 'applications'])
obj.source = 'global-routing-slash32.cc'
obj = bld.create_ns3_program('global-injection-slash32',
['point-to-point', 'csma', 'internet'])
['point-to-point', 'csma', 'internet', 'applications'])
obj.source = 'global-injection-slash32.cc'
obj = bld.create_ns3_program('simple-global-routing',
@@ -25,16 +25,20 @@ def build(bld):
['point-to-point', 'internet', 'applications'])
obj.source = 'simple-alternate-routing.cc'
obj = bld.create_ns3_program( 'mixed-global-routing',
['point-to-point', 'internet', 'csma'])
obj = bld.create_ns3_program('mixed-global-routing',
['point-to-point', 'internet', 'csma', 'applications'])
obj.source = 'mixed-global-routing.cc'
obj = bld.create_ns3_program('simple-routing-ping6',
['csma', 'internet'])
['csma', 'internet', 'applications'])
obj.source = 'simple-routing-ping6.cc'
obj = bld.create_ns3_program('manet-routing-compare',
['wifi', 'dsr', 'dsdv', 'aodv', 'olsr', 'internet', 'applications'])
obj.source = 'manet-routing-compare.cc'
obj = bld.create_ns3_program('ripng-simple-network',
['csma', 'internet', 'applications'])
obj.source = 'ripng-simple-network.cc'
bld.register_ns3_script('simple-routing-ping6.py', ['csma', 'internet', 'applications'])
-1
View File
@@ -1 +0,0 @@
exec "`dirname "$0"`"/../../waf "$@"

Some files were not shown because too many files have changed in this diff Show More