forked from named-data-ndnSIM/ns-3-dev
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES.html
498 lines (442 loc) · 16.3 KB
/
CHANGES.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ns-3 Change Log</title>
</head>
<body>
<h1>
ns-3: API and model change history</h1>
<!--
This ChangeLog is updated in the reverse order
with the most recent changes coming first. Date format: DD-MM-YYYY
-->
<p>
ns-3 is an evolving system and there will be API or behavioral changes
from time to time. Users who try to use scripts or models across
versions of ns-3 may encounter problems at compile time, run time, or
may see the simulation output change. </p>
<p>
We have adopted the development policy that we are going to try to ease
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>
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
or signature has changed, it should be stated what the new replacement
name is. </p>
<p>
Note that users who upgrade the simulator across versions, or who work
directly out of the development tree, may find that simulation output
changes even when the compilation doesn't break, such as when a
simulator default value is changed. Therefore, it is good practice for
_anyone_ using code across multiple ns-3 releases to consult this file,
as well as the RELEASE_NOTES, to understand what has changed over time.
</p>
<p>
This file is a best-effort approach to solving this issue; we will do
our best but can guarantee that there will be things that fall through
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.3 to ns-3.4</h1>
<h2>changes to build system</h2>
<ul>
<li>A major option regarding the downloading and building of ns-3 has been</li>
<li>added for ns-3.4 -- the ns-3-allinone feature. This allows a user to</li>
<li>get the most common options for ns-3 downloaded and built with a minimum</li>
<li>amount of trouble. See the ns-3 tutorial for a detailed explanation of<li>
<li>how to use this new feature.</li>
</ul>
<ul>
<li>The build system now runs build items in parallel by default. This</li>
<li>includes the regression tests.<li>
</ul>
<h2>new API:</h2>
<ul>
<li>XML support has been added to the ConfigStore in /src/contrib/config-store.cc</li>
</ul>
<ul>
<li>The ns-2 calendar queue scheduler option has been ported to src/simulator</li>
</ul>
<ul>
<li>A ThreeLogDistancePropagationLossModel has been added to src/devices/wifi</li>
</ul>
<ul>
<li>ConstantAccelerationMobilityModel in src/mobility/constant-acceleration-mobility-model.h</li>
</ul>
<ul>
<li>A new emulation mode is supported with the TapBridge net device (see</li>
<li>src/devices/tap-bridge)</li>
</ul>
<ul>
<li>A new facility for naming ns-3 Objects is included (see</li>
<li>src/core/names.{cc,h})</li>
</ul>
<ul>
<li>Wifi multicast support has been added in src/devices/wifi</li>
</ul>
<h2>changes to existing API:</h2>
<ul>
<li>Some fairly significant changes have been made to the API of the</li>
<li>random variable code. Please see the ns-3 manual and src/core/random-variable.cc</li>
<li>for details.</li>
</ul>
<ul>
<li>The trace sources in the various NetDevice classes has been completely</li>
<li>reworked to allow for a consistent set of trace sources across the</li>
<li>devices. The names of the trace sources have been changed to provide</li>
<li>some context with respect to the level at which the trace occurred.</li>
<li>A new set of trace sources has been added which emulates the behavior</li>
<li>of packet sniffers. These sources have been used to implement tcpdump-</li>
<li>like functionality and are plumbed up into the helper classes. The </li>
<li>user-visible changes are the trace source name changes and the ability </li>
<li>to do promiscuous-mode pcap tracing via helpers. For further information</li>
<li>regarding these changes, please see the ns-3 manual</li>
</ul>
<ul>
<li>StaticMobilityModel has been renamed ConstantPositionMobilityModel</li>
<li>StaticSpeedMobilityModel has been renamed ConstantVelocityMobilityModel</li>
</ul>
<ul>
<li>The Callback templates have been extended to support more parameters.</li>
<li>See src/core/callback.h</li>
</ul>
<ul>
<li>Many helper API have been changed to allow passing Object-based parameters</li>
<li>as string names to ease working with the object name service.</li>
</ul>
<ul>
<li>The Config APIs now accept path segments that are names defined by the </li>
<li>object name service.</li>
</ul>
<ul>
<li>Minor changes were made to make the system build under the Intel C++ compiler.</li>
</ul>
<ul>
<li>Trace hooks for association and deassociation to/from an access point were</li>
<li>added to src/devices/wifi/nqsta-wifi-mac.cc</li>
</ul>
<hr>
<h1>changes from ns-3.2 to ns-3.3</h1>
<h2>new API:</h2>
<ul>
<li> ns-3 ABORT macros in src/core/abort.h</li>
<li> Config::MatchContainer </li>
<li> ConstCast and DynamicCast helper functions for Ptr casting</li>
<li> StarTopology added to several topology helpers </li>
<li> NetDevice::IsBridge () </li>
<li>17-11-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/4c1c3f6bcd03">4c1c3f6bcd03</a></li>
<ul>
<li>
The PppHeader previously defined in the point-to-point-net-device code has been
made public.
</li>
</ul>
<li>17-11-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/16c2970a0344">16c2970a0344</a></li>
<ul>
<li>
An emulated net device has been added as enabling technology for ns-3 emulation
scenarios. See src/devices/emu and examples/emu-udp-echo.cc for details.
</li>
</ul>
<li>17-11-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/4222173d1e6d">4222173d1e6d</a></li>
<ul>
<li>
Added method InternetStackHelper::EnableAsciiChange to allow allow a user to
hook ascii trace to the drop trace events in Ipv4L3Protocol and ArpL3Protocol.
</li>
</ul>
</ul>
<h2>changes to existing API:</h2>
<ul>
<li> NetDevice::MakeMulticastAddress() was renamed to NetDevice::GetMulticast()
and the original GetMulticast() removed </li>
<li> Socket API changes:
<ul>
<li> return type of SetDataSentCallback () changed from bool to void </li>
<li> Socket::Listen() no longer takes a queueLimit argument</li>
</ul>
<li> As part of the Wifi Phy rework, there have been several API changes
at the low level and helper API level. </li>
<ul>
<li> At the helper API level, the WifiHelper was split to three classes:
a WifiHelper, a YansWifiChannel helper, and a YansWifiPhy helper. Some
functions like Ascii and Pcap tracing functions were moved from class
WifiHelper to class YansWifiPhyHelper.
<li> At the low-level API, there have been a number of changes to
make the Phy more modular:</li>
<ul>
<li> composite-propagation-loss-model.h is removed</li>
<li> DcfManager::NotifyCcaBusyStartNow() has changed name</li>
<li> fragmentation related functions (e.g. DcaTxop::GetNFragments()) have
changed API to account for some implementation changes</li>
<li> Interference helper and error rate model added </li>
<li> JakesPropagationLossModel::GetLoss() moved to PropagationLoss() class</li>
<li> base class WifiChannel made abstract </li>
<li> WifiNetDevice::SetChannel() removed </li>
<li> a WifiPhyState helper class added </li>
<li> addition of the YansWifiChannel and YansWifiPhy classes </li>
</ul>
</ul>
<li>17-11-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/dacfd1f07538">dacfd1f07538</a></li>
<ul>
<li>
Change attribute "RxErrorModel" to "ReceiveErrorModel" in CsmaNetDevice for
consistency between devices.
</li>
</ul>
</ul>
<h2>changed behavior:</h2>
<ul>
<li>17-11-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/ed0dfce40459">ed0dfce40459</a></li>
<ul>
<li>
Relax reasonableness testing in Ipv4AddressHelper::SetBase to allow the
assignment of /32 addresses.
</li>
</ul>
<li>17-11-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/756887a9bbea">756887a9bbea</a></li>
<ul>
<li>
Global routing supports bridge devices.
</li>
</ul>
</ul>
<hr>
<h1>changes from ns-3.1 to ns-3.2</h1>
<h2>new API:</h2>
<ul>
<li>26-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/5aa65b1ea001">5aa65b1ea001</a></li>
<ul>
<li>
Add multithreaded and real-time simulator implementation. Allows for emulated
net devices running in threads other than the main simulation thread to schedule
events. Allows for pacing the simulation clock at 1x real-time.
</li>
</ul>
<li>26-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/c69779f5e51e">c69779f5e51e</a></li>
<ul>
<li>
Add threading and synchronization primitives. Enabling technology for
multithreaded simulator implementation.
</li>
</ul>
</ul>
<h2>new API in existing classes:</h2>
<ul>
<li>01-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/a18520551cdf">a18520551cdf</a></li>
<ul>
<li>class ArpCache has two new attributes: MaxRetries
and a Drop trace. It also has some new public methods but these are
mostly for internal use.
</ul>
</li>
</ul>
<h2>changes to existing API:</h2>
<ul>
<li>05-09-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/aa1fb0f43571">aa1fb0f43571</a></li>
<ul>
<li>
Change naming of MTU and packet size attributes in CSMA and Point-to-Point devices<br>
After much discussion it was decided that the preferred way to think about
the different senses of transmission units and encapsulations was to call the
MAC MTU simply MTU and to use the overall packet size as the PHY-level attribute
of interest. See the Doxygen of CsmaNetDevice::SetFrameSize and
PointToPointNetDevice::SetFrameSize for a detailed description.
</li>
</ul>
<li>25-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/e5ab96db540e">e5ab96db540e</a></li>
<ul>
<li>
bug 273: constify packet pointers.<br>
The normal and the promiscuous receive callbacks of the NetDevice API
have been changed from:
<pre>
Callback<bool,Ptr<NetDevice>,Ptr<Packet>,uint16_t,const Address &>
Callback<bool,Ptr<NetDevice>, Ptr<Packet>, uint16_t,
const Address &, const Address &, enum PacketType >
</pre>
to:
<pre>
Callback<bool,Ptr<NetDevice>,Ptr<const Packet>,uint16_t,const Address &>
Callback<bool,Ptr<NetDevice>, Ptr<const Packet>, uint16_t,
const Address &, const Address &, enum PacketType >
</pre>
to avoid the kind of bugs reported in
<a href="http://www.nsnam.org/bugzilla/show_bug.cgi?id=273">bug 273</a>.
Users who implement a subclass of the NetDevice base class need to change the signature
of their SetReceiveCallback and SetPromiscReceiveCallback methods.
</li>
</ul>
<li>04-08-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/cba7b2b80fe8">cba7b2b80fe8</a></li>
<ul>
<li>
Cleanup of MTU confusion and initialization in CsmaNetDevice<br>
The MTU of the CsmaNetDevice defaulted to 65535. This did not correspond with
the expected MTU found in Ethernet-like devices. Also there was not clear
documentation regarding which MTU was being set. There are two MTU here, one
at the MAC level and one at the PHY level. We split out the MTU setting to make
this more clear and set the default PHY level MTU to 1500 to be more like
Ethernet. The encapsulation mode defaults to LLC/SNAP which then puts the
MAC level MTU at 1492 by default. We allow users to now set the encapsulation
mode, MAC MTU and PHY MTU while keeping the three values consistent. See the
Doxygen of CsmaNetDevice::SetMaxPayloadLength for a detailed description of the
issues and solution.
</li>
</ul>
<li>21-07-2008; changeset
<a href="
http://code.nsnam.org/ns-3-dev/rev/99698bc858e8">99698bc858e8</a></li>
<ul>
<li> class NetDevice has added a pure virtual method that
must be implemented by all subclasses:
<pre>
virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb) = 0;
</pre>
All NetDevices must support this method, and must call this callback
when processing packets in the receive direction (the appropriate place
to call this is device-dependent). An approach to stub this out
temporarily, if you do not care about immediately enabling this
functionality, would be to add this to your device:
<pre>
void
ExampleNetDevice::SetPromiscReceiveCallback
(NetDevice::PromiscReceiveCallback cb)
{
NS_ASSERT_MSG (false, "No implementation yet for
SetPromiscReceiveCallback");
}
</pre>
To implement this properly, consult the CsmaNetDevice for examples of
when the m_promiscRxCallback is called.
</li>
</ul>
<li>03-07-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/d5f8e5fae1c6">d5f8e5fae1c6</a></li>
<ul>
<li>
Miscellaneous cleanup of Udp Helper API, to fix bug 234
<pre>
class UdpEchoServerHelper
{
public:
- UdpEchoServerHelper ();
- void SetPort (uint16_t port);
+ UdpEchoServerHelper (uint16_t port);
+
+ void SetAttribute (std::string name, const AttributeValue &value);
ApplicationContainer Install (NodeContainer c);
class UdpEchoClientHelper
{
public:
- UdpEchoClientHelper ();
+ UdpEchoClientHelper (Ipv4Address ip, uint16_t port);
- void SetRemote (Ipv4Address ip, uint16_t port);
- void SetAppAttribute (std::string name, const AttributeValue &value);
+ void SetAttribute (std::string name, const AttributeValue &value);
ApplicationContainer Install (NodeContainer c);
</pre>
</li>
</ul>
<li>03-07-2008; changeset
<a href="
http://code.nsnam.org/ns-3-dev/rev/3cdd9d60f7c7">3cdd9d60f7c7</a></li>
<ul>
<li>
Rename all instances method names using "Set..Parameter" to "Set..Attribute"
(bug 232)
</li>
<li> How to fix your code: Any use of helper API that was using a method
"Set...Parameter()" should be changed to read "Set...Attribute()". e.g.
<pre>
- csma.SetChannelParameter ("DataRate", DataRateValue (5000000));
- csma.SetChannelParameter ("Delay", TimeValue (MilliSeconds (2)));
+ csma.SetChannelAttribute ("DataRate", DataRateValue (5000000));
+ csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
</pre>
</li>
</ul>
</li>
</ul>
<h2>changed behavior:</h2>
<ul>
<li>07-09-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/5d836ab1523b">5d836ab1523b</a></li>
<ul>
<li>
Implement a finite receive buffer for TCP<br>
The native TCP model in TcpSocketImpl did not support a finite receive buffer.
This changeset adds the following functionality in this regard:
<ul>
<li>
Being able to set the receiver buffer size through the attributes system.
</li>
<li>
This receiver buffer size is now correctly exported in the TCP header as the
advertised window. Prior to this changeset, the TCP header advertised window
was set to the maximum size of 2^16 bytes.
window
</li>
<li>
The aforementioned window size is correctly used for flow control, i.e. the
sending TCP will not send more data than available space in the receiver's
buffer.
</li>
<li>
In the case of a receiver window collapse, when a advertised zero-window
packet is received, the sender enters the persist probing state in which
it sends probe packets with one payload byte at exponentially backed-off
intervals up to 60s. The reciever will continue to send advertised
zero-window ACKs of the old data so long as the receiver buffer remains full.
When the receiver window clears up due to an application read, the TCP
will finally ACK the probe byte, and update its advertised window appropriately.
</li>
</ul>
See
<a href="http://www.nsnam.org/bugzilla/show_bug.cgi?id=239"> bug 239 </a> for
more.
</li>
</ul>
<li>07-09-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/7afa66c2b291">7afa66c2b291</a></li>
<ul>
<li>
Add correct FIN exchange behavior during TCP closedown<br>
The behavior of the native TcpSocketImpl TCP model was such that the final
FIN exchange was not correct, i.e. calling Socket::Close didn't send a FIN
packet, and even if it had, the ACK never came back, and even if it had, the
ACK would have incorrect sequence number. All these various problems have been
addressed by this changeset. See
<a href="http://www.nsnam.org/bugzilla/show_bug.cgi?id=242"> bug 242 </a> for
more.
</li>
</ul>
<li> 28-07-2008; changeset
<a href="http://code.nsnam.org/ns-3-dev/rev/6f68f1044df1">6f68f1044df1</a>
<ul>
<li>
OLSR: HELLO messages hold time changed to 3*hello
interval from hello interval. This is an important bug fix as
hold time == refresh time was never intentional, as it leads to
instability in neighbor detection.
</ul>
</li>
</ul>
</body>
</html>