Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
87b884a
lte: Remove unimplemented declarations and rescan bindings
tomhenderson Mar 2, 2017
bc0a4ef
wifi: silence a compiler warning
tomhenderson Mar 2, 2017
b289c48
core: simplify ObjectBase indentation
TommyPec Feb 18, 2017
76f627c
internet: (fixes #2665) Ipv4RawSocket can not send packets to broadca…
TommyPec Mar 5, 2017
1801fc6
internet: fix commit 12733:b3104511face
TommyPec Mar 6, 2017
efbfce8
wifi: Move m_stateLogger to private in WifiPhyStateHelper
sderonne Mar 6, 2017
1cd0010
lte: fix static code analysys warnings (thanks to Natale Patriciello)
biljkus Mar 7, 2017
6fef34b
network: Convert Queue into a template class
stavallo Mar 8, 2017
40abc65
network: Add NetDeviceQueue methods to implement flow control
stavallo Mar 8, 2017
4e9e6fe
csma: Add support for flow control and BQL
stavallo Mar 8, 2017
fb12ef3
network: Add support for flow control and BQL to SimpleNetDevice
stavallo Mar 8, 2017
3bb15af
traffic-control: Add a test for the flow control mechanism
stavallo Mar 8, 2017
1d0a27a
network: The Queue class holds a list of items
stavallo Mar 8, 2017
bdc94e4
wifi: Make WifiMacQueue a subclass of Queue
stavallo Mar 8, 2017
b51598d
wifi: Add support for flow control and BQL
stavallo Mar 8, 2017
11bdd2e
flow-monitor: Keep track of the DSCP value of packets
stavallo Mar 8, 2017
b20e296
various: Fix scanning python bindings
stavallo Mar 8, 2017
9eff4d8
Rescan python bindings
stavallo Mar 8, 2017
8a3e1b1
visualizer: Rescan python bindings
stavallo Mar 9, 2017
dfe1ed1
traffic-control: Fix doxygen warnings
stavallo Mar 9, 2017
7dbf723
lte: doxygen updates of tests (many thanks to Robert Ammon for initia…
biljkus Mar 10, 2017
7d35091
lte: doxygen updates of examples (many thanks to Robert Ammon for ini…
biljkus Mar 10, 2017
63ff5f7
lte: doxygen updates of helpers (many thanks to Robert Ammon for init…
biljkus Mar 10, 2017
5f0ec06
lte: doxygen updates of model (many thanks to Robert Ammon for initia…
biljkus Mar 10, 2017
7eae055
lte: (fixes #2666) remove deprecated variables/config paths (thanks t…
biljkus Mar 10, 2017
a049fbb
lte: fix build issue caused by previous commits
biljkus Mar 10, 2017
dbc12c9
update minimal system requirements
tomhenderson Mar 10, 2017
22e76c6
[Bug 2191] Add IPv6 support to NetAnim
johnabraham2017 Mar 10, 2017
efc2d4f
click: Rescan python bindings
tomhenderson Mar 10, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions CHANGES.html
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ <h2>New API:</h2>
optional and if not specified defaults to the previous behavior (Time::S).
</li>
<li><b>TxopTrace</b>: new trace source exported by EdcaTxopN.</li>
<li>A <b>GetDscpCounts</b> method is added to <b>Ipv4FlowClassifier</b> and <b>Ipv6FlowClassifier</b>
which returns a vector of pairs (dscp,count), each of which indicates how many packets with the
associated dscp value have been classified for a given flow.
</li>
</ul>
<h2>Changes to existing API:</h2>
<ul>
Expand All @@ -101,6 +105,10 @@ <h2>Changes to existing API:</h2>
</li>
<li>Abstract base class <b>WifiChannel</b> has been removed. As a result, a Channel type instead of a WifiChannel type
is now exported by WifiNetDevice.</li>
<li> The <b>GetPacketSize</b> method of <b>QueueItem</b> has been renamed <b>GetSize</b>
</li>
<li> The <b>DequeueAll</b> method of <b>Queue</b> has been renamed <b>Flush</b>
</li>
</ul>
<h2>Changes to build system:</h2>
<ul>
Expand All @@ -126,6 +134,22 @@ <h2>Changed behavior:</h2>
</li>
<li> The default value of the <b>TxGain</b> and <b>RxGain</b> attributes in WifiPhy was changed from 1 dB to 0 dB.
</li>
<li><b>Queue</b> has been redesigned as a template class object, where the type parameter
specifies the type of items to be stored in the queue. As a consequence:
<ul>
<li>Being a subclass of Queue, <b>DropTailQueue</b> is a template class as well.
<li>Network devices such as SimpleNetDevice, PointToPointNetDevice and CsmaNetDevice
use a queue of type Queue&lt;Packet&gt; to store the packets to transmit. The SetQueue
method of their helpers, however, can still be invoked as, e.g.,
SetQueue ("ns3::DropTailQueue") instead of, e.g., SetQueue
("ns3::DropTailQueue&lt;Packet&gt;").</li>
<li>The attributes <b>Mode</b>, <b>MaxPackets</b> and <b>MaxBytes</b> are now
defined by the QueueBase class (which Queue is derived from).</li>
</ul>
</li>
<li>Queue discs that can operate both in packet mode and byte mode (Red, CoDel, Pie) define their own
enum QueueDiscMode instead of using QueueBase::QueueMode.
</li>
</ul>

<hr>
Expand Down
10 changes: 9 additions & 1 deletion RELEASE_NOTES
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,19 @@ This release is not yet available.

Supported platforms
-------------------
This release is intended to work on systems with the following minimal
requirements:
- g++-4.9 or later (Note: this is an upgraded requirement from ns-3.26)
- Apple LLVM version 7.0.2 or later
- clang-3.3 or later
- Python 2.7 (Python 2 series) or Python 3.4 (Python 3 series) or later

New user-visible features
-------------------------
- (wifi) 802.11ax High Efficiency (HE) physical layer modes are now supported.
- (tcp) The SACK option and the RFC 6675 loss recovery algorithm are now supported.
- (lte) LTE carrier aggregation feature according to 3GPP Release 10 is now supported.
- (network) CsmaNetDevice, SimpleNetDevice and WifiNetDevice support flow control.

Bugs fixed
----------
Expand Down Expand Up @@ -91,7 +98,8 @@ Bugs fixed
- Bug 2654 - Rraa wifi manager cannot be used with 802.11b
- Bug 2655 - A-MPDU simulation using TCP sometimes fails with message "Packet has no Traffic ID"
- Bug 2660 - TrafficControlHelper::Default should not configure internal queue sizes

- Bug 2665 - Ipv4RawSocket can not send packets to broadcast or multicast

Known issues
------------
In general, known issues are tracked on the project tracker available
Expand Down
2 changes: 2 additions & 0 deletions examples/routing/global-injection-slash32.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,12 @@ main (int argc, char *argv[])
Ptr<CsmaNetDevice> deviceA = CreateObject<CsmaNetDevice> ();
deviceA->SetAddress (Mac48Address::Allocate ());
nA->AddDevice (deviceA);
deviceA->SetQueue (CreateObject<DropTailQueue<Packet> > ());

Ptr<CsmaNetDevice> deviceC = CreateObject<CsmaNetDevice> ();
deviceC->SetAddress (Mac48Address::Allocate ());
nC->AddDevice (deviceC);
deviceC->SetQueue (CreateObject<DropTailQueue<Packet> > ());

// Later, we add IP addresses.
Ipv4AddressHelper ipv4;
Expand Down
2 changes: 2 additions & 0 deletions examples/routing/global-routing-slash32.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,12 @@ main (int argc, char *argv[])
Ptr<CsmaNetDevice> deviceA = CreateObject<CsmaNetDevice> ();
deviceA->SetAddress (Mac48Address::Allocate ());
nA->AddDevice (deviceA);
deviceA->SetQueue (CreateObject<DropTailQueue<Packet> > ());

Ptr<CsmaNetDevice> deviceC = CreateObject<CsmaNetDevice> ();
deviceC->SetAddress (Mac48Address::Allocate ());
nC->AddDevice (deviceC);
deviceC->SetQueue (CreateObject<DropTailQueue<Packet> > ());

// Later, we add IP addresses.
Ipv4AddressHelper ipv4;
Expand Down
2 changes: 2 additions & 0 deletions examples/routing/static-routing-slash32.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,12 @@ main (int argc, char *argv[])
Ptr<CsmaNetDevice> deviceA = CreateObject<CsmaNetDevice> ();
deviceA->SetAddress (Mac48Address::Allocate ());
nA->AddDevice (deviceA);
deviceA->SetQueue (CreateObject<DropTailQueue<Packet> > ());

Ptr<CsmaNetDevice> deviceC = CreateObject<CsmaNetDevice> ();
deviceC->SetAddress (Mac48Address::Allocate ());
nC->AddDevice (deviceC);
deviceC->SetQueue (CreateObject<DropTailQueue<Packet> > ());

// Later, we add IP addresses.
Ipv4AddressHelper ipv4;
Expand Down
2 changes: 1 addition & 1 deletion examples/tcp/tcp-variants-comparison.cc
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ int main (int argc, char *argv[])
Time access_d (access_delay);
Time bottle_d (delay);

Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (Queue::QUEUE_MODE_BYTES));
Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (CoDelQueueDisc::QUEUE_DISC_MODE_BYTES));

uint32_t size = (std::min (access_b, bottle_b).GetBitRate () / 8) *
((access_d + bottle_d) * 2).GetSeconds ();
Expand Down
14 changes: 7 additions & 7 deletions examples/traffic-control/queue-discs-benchmark.cc
Original file line number Diff line number Diff line change
Expand Up @@ -158,13 +158,13 @@ int main (int argc, char *argv[])
{
tchBottleneck.SetRootQueueDisc ("ns3::RedQueueDisc");
Config::SetDefault ("ns3::RedQueueDisc::ARED", BooleanValue (true));
Config::SetDefault ("ns3::RedQueueDisc::Mode", EnumValue (Queue::QUEUE_MODE_PACKETS));
Config::SetDefault ("ns3::RedQueueDisc::Mode", EnumValue (RedQueueDisc::QUEUE_DISC_MODE_PACKETS));
Config::SetDefault ("ns3::RedQueueDisc::QueueLimit", UintegerValue (queueDiscSize));
}
else if (queueDiscType.compare ("CoDel") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::CoDelQueueDisc");
Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (Queue::QUEUE_MODE_PACKETS));
Config::SetDefault ("ns3::CoDelQueueDisc::Mode", EnumValue (CoDelQueueDisc::QUEUE_DISC_MODE_PACKETS));
Config::SetDefault ("ns3::CoDelQueueDisc::MaxPackets", UintegerValue (queueDiscSize));
}
else if (queueDiscType.compare ("FqCoDel") == 0)
Expand All @@ -177,7 +177,7 @@ int main (int argc, char *argv[])
else if (queueDiscType.compare ("PIE") == 0)
{
tchBottleneck.SetRootQueueDisc ("ns3::PieQueueDisc");
Config::SetDefault ("ns3::PieQueueDisc::Mode", EnumValue (Queue::QUEUE_MODE_PACKETS));
Config::SetDefault ("ns3::PieQueueDisc::Mode", EnumValue (PieQueueDisc::QUEUE_DISC_MODE_PACKETS));
Config::SetDefault ("ns3::PieQueueDisc::QueueLimit", UintegerValue (queueDiscSize));
}
else
Expand All @@ -190,8 +190,8 @@ int main (int argc, char *argv[])
tchBottleneck.SetQueueLimits ("ns3::DynamicQueueLimits");
}

Config::SetDefault ("ns3::Queue::Mode", StringValue ("QUEUE_MODE_PACKETS"));
Config::SetDefault ("ns3::Queue::MaxPackets", UintegerValue (100));
Config::SetDefault ("ns3::QueueBase::Mode", StringValue ("QUEUE_MODE_PACKETS"));
Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (100));

NetDeviceContainer devicesAccessLink = accessLink.Install (n1.Get (0), n2.Get (0));
tchPfifoFastAccess.Install (devicesAccessLink);
Expand All @@ -200,7 +200,7 @@ int main (int argc, char *argv[])
address.NewNetwork ();
Ipv4InterfaceContainer interfacesAccess = address.Assign (devicesAccessLink);

Config::SetDefault ("ns3::Queue::MaxPackets", UintegerValue (netdevicesQueueSize));
Config::SetDefault ("ns3::QueueBase::MaxPackets", UintegerValue (netdevicesQueueSize));

NetDeviceContainer devicesBottleneckLink = bottleneckLink.Install (n2.Get (0), n3.Get (0));
QueueDiscContainer qdiscs;
Expand All @@ -220,7 +220,7 @@ int main (int argc, char *argv[])
Ptr<OutputStreamWrapper> streamLimits = ascii.CreateFileStream (queueDiscType + "-limits.txt");
queueLimits->TraceConnectWithoutContext ("Limit",MakeBoundCallback (&LimitsTrace, streamLimits));
}
Ptr<Queue> queue = StaticCast<PointToPointNetDevice> (devicesBottleneckLink.Get (0))->GetQueue ();
Ptr<Queue<Packet> > queue = StaticCast<PointToPointNetDevice> (devicesBottleneckLink.Get (0))->GetQueue ();
Ptr<OutputStreamWrapper> streamBytesInQueue = ascii.CreateFileStream (queueDiscType + "-bytesInQueue.txt");
queue->TraceConnectWithoutContext ("BytesInQueue",MakeBoundCallback (&BytesInQueueTrace, streamBytesInQueue));

Expand Down
12 changes: 10 additions & 2 deletions examples/traffic-control/traffic-control.cc
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ main (int argc, char *argv[])

Ptr<NetDevice> nd = devices.Get (1);
Ptr<PointToPointNetDevice> ptpnd = DynamicCast<PointToPointNetDevice> (nd);
Ptr<Queue> queue = ptpnd->GetQueue ();
Ptr<Queue<Packet> > queue = ptpnd->GetQueue ();
queue->TraceConnectWithoutContext ("PacketsInQueue", MakeCallback (&DevicePacketsInQueueTrace));

Ipv4AddressHelper address;
Expand All @@ -153,7 +153,9 @@ main (int argc, char *argv[])
onoff.SetAttribute ("DataRate", StringValue ("50Mbps")); //bit/s
ApplicationContainer apps;

AddressValue remoteAddress (InetSocketAddress (interfaces.GetAddress (0), port));
InetSocketAddress rmt (interfaces.GetAddress (0), port);
rmt.SetTos (0xb8);
AddressValue remoteAddress (rmt);
onoff.SetAttribute ("Remote", remoteAddress);
apps.Add (onoff.Install (nodes.Get (1)));
apps.Start (Seconds (1.0));
Expand Down Expand Up @@ -194,6 +196,12 @@ main (int argc, char *argv[])
std::cout << " Throughput: " << stats[1].rxBytes * 8.0 / (stats[1].timeLastRxPacket.GetSeconds () - stats[1].timeFirstRxPacket.GetSeconds ()) / 1000000 << " Mbps" << std::endl;
std::cout << " Mean delay: " << stats[1].delaySum.GetSeconds () / stats[1].rxPackets << std::endl;
std::cout << " Mean jitter: " << stats[1].jitterSum.GetSeconds () / (stats[1].rxPackets - 1) << std::endl;
auto dscpVec = classifier->GetDscpCounts (1);
for (auto p : dscpVec)
{
std::cout << " DSCP value: 0x" << std::hex << static_cast<uint32_t>(p.first) << std::dec
<< " count: "<< p.second << std::endl;
}

Simulator::Destroy ();

Expand Down
2 changes: 2 additions & 0 deletions src/antenna/bindings/modulegen__gcc_ILP32.py
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,7 @@ def register_Ns3TypeIdTraceSourceInformation_methods(root_module, cls):
return

def register_Ns3Vector2D_methods(root_module, cls):
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
## vector.h (module 'core'): ns3::Vector2D::Vector2D(ns3::Vector2D const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Vector2D const &', 'arg0')])
Expand All @@ -636,6 +637,7 @@ def register_Ns3Vector2D_methods(root_module, cls):
return

def register_Ns3Vector3D_methods(root_module, cls):
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
## vector.h (module 'core'): ns3::Vector3D::Vector3D(ns3::Vector3D const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Vector3D const &', 'arg0')])
Expand Down
2 changes: 2 additions & 0 deletions src/antenna/bindings/modulegen__gcc_LP64.py
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,7 @@ def register_Ns3TypeIdTraceSourceInformation_methods(root_module, cls):
return

def register_Ns3Vector2D_methods(root_module, cls):
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
## vector.h (module 'core'): ns3::Vector2D::Vector2D(ns3::Vector2D const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Vector2D const &', 'arg0')])
Expand All @@ -636,6 +637,7 @@ def register_Ns3Vector2D_methods(root_module, cls):
return

def register_Ns3Vector3D_methods(root_module, cls):
cls.add_binary_comparison_operator('<')
cls.add_output_stream_operator()
## vector.h (module 'core'): ns3::Vector3D::Vector3D(ns3::Vector3D const & arg0) [copy constructor]
cls.add_constructor([param('ns3::Vector3D const &', 'arg0')])
Expand Down
3 changes: 0 additions & 3 deletions src/aodv/bindings/callbacks_list.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
callback_classes = [
['unsigned char', 'ns3::Ptr<ns3::QueueItem>', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::Ptr<ns3::QueueItem>', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::Ptr<ns3::Packet const>', 'ns3::Ipv4Header const&', 'ns3::Socket::SocketErrno', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::Ptr<ns3::Ipv4Route>', 'ns3::Ptr<ns3::Packet const>', 'ns3::Ipv4Header const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
['void', 'ns3::WifiMacHeader const&', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty', 'ns3::empty'],
Expand Down
Loading