--- a/CHANGES.html Thu Aug 15 13:04:01 2013 -0700
+++ b/CHANGES.html Fri Aug 16 02:21:51 2013 +0200
@@ -73,6 +73,9 @@
examples/ipv6/fragmentation-ipv6-two-MTU.cc for an example.</li>
<li>Radvd application have a new Helper. See the updated
examples/ipv6/radvd.cc for an example.</li>
+ <li>InternetStackHelper have two new functions:<tt>SetIpv4ArpJitter (bool enable)</tt>
+ and <tt>SetIpv6NsRsJitter (bool enable)</tt> to enable/disable
+ the random jitter on IPv4's ARP and IPv6's NS/RS.</li>
</ul>
<h2>Changes to existing API:</h2>
@@ -131,6 +134,13 @@
cmd.PrintHelp (std::cerr);
</pre>
</li>
+ <li>IPv4's ARP and IPv6's NS/RS are now issued with a random delay.
+ The delay is, by default, between 0 and 10ms.
+ This behaviour can be modify by using ArpL3Protocol's
+ <tt>RequestJitter</tt> and Icmpv6L4Protocol's <tt>SolicitationJitter</tt>
+ attributes or by using the new InternetStackHelper functions.
+ </li>
+
</ul>
<hr>
--- a/RELEASE_NOTES Thu Aug 15 13:04:01 2013 -0700
+++ b/RELEASE_NOTES Fri Aug 16 02:21:51 2013 +0200
@@ -50,8 +50,10 @@
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 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
@@ -79,6 +81,7 @@
- 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
--- a/src/internet/helper/internet-stack-helper.cc Thu Aug 15 13:04:01 2013 -0700
+++ b/src/internet/helper/internet-stack-helper.cc Fri Aug 16 02:21:51 2013 +0200
@@ -234,7 +234,10 @@
: m_routing (0),
m_routingv6 (0),
m_ipv4Enabled (true),
- m_ipv6Enabled (true)
+ m_ipv6Enabled (true),
+ m_ipv4ArpJitterEnabled (true),
+ m_ipv6NsRsEnabled (true)
+
{
Initialize ();
}
@@ -269,6 +272,8 @@
m_ipv4Enabled = o.m_ipv4Enabled;
m_ipv6Enabled = o.m_ipv6Enabled;
m_tcpFactory = o.m_tcpFactory;
+ m_ipv4ArpJitterEnabled = o.m_ipv4ArpJitterEnabled;
+ m_ipv6NsRsEnabled = o.m_ipv6NsRsEnabled;
}
InternetStackHelper &
@@ -292,6 +297,8 @@
m_routingv6 = 0;
m_ipv4Enabled = true;
m_ipv6Enabled = true;
+ m_ipv4ArpJitterEnabled = true;
+ m_ipv6NsRsEnabled = true;
Initialize ();
}
@@ -320,6 +327,16 @@
m_ipv6Enabled = enable;
}
+void InternetStackHelper::SetIpv4ArpJitter (bool enable)
+{
+ m_ipv4ArpJitterEnabled = enable;
+}
+
+void InternetStackHelper::SetIpv6NsRsJitter (bool enable)
+{
+ m_ipv6NsRsEnabled = enable;
+}
+
int64_t
InternetStackHelper::AssignStreams (NodeContainer c, int64_t stream)
{
@@ -417,6 +434,11 @@
CreateAndAggregateObjectFromTypeId (node, "ns3::ArpL3Protocol");
CreateAndAggregateObjectFromTypeId (node, "ns3::Ipv4L3Protocol");
CreateAndAggregateObjectFromTypeId (node, "ns3::Icmpv4L4Protocol");
+ if (m_ipv4ArpJitterEnabled == false)
+ {
+ Ptr<ArpL3Protocol> arp = node->GetObject<ArpL3Protocol> ();
+ arp->SetAttribute ("RequestJitter", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
+ }
// Set routing
Ptr<Ipv4> ipv4 = node->GetObject<Ipv4> ();
Ptr<Ipv4RoutingProtocol> ipv4Routing = m_routing->Create (node);
@@ -435,6 +457,11 @@
CreateAndAggregateObjectFromTypeId (node, "ns3::Ipv6L3Protocol");
CreateAndAggregateObjectFromTypeId (node, "ns3::Icmpv6L4Protocol");
+ if (m_ipv6NsRsEnabled == false)
+ {
+ Ptr<Icmpv6L4Protocol> icmpv6l4 = node->GetObject<Icmpv6L4Protocol> ();
+ icmpv6l4->SetAttribute ("SolicitationJitter", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
+ }
// Set routing
Ptr<Ipv6> ipv6 = node->GetObject<Ipv6> ();
Ptr<Ipv6RoutingProtocol> ipv6Routing = m_routingv6->Create (node);
--- a/src/internet/helper/internet-stack-helper.h Thu Aug 15 13:04:01 2013 -0700
+++ b/src/internet/helper/internet-stack-helper.h Fri Aug 16 02:21:51 2013 +0200
@@ -178,7 +178,19 @@
*/
void SetIpv6StackInstall (bool enable);
- /**
+ /**
+ * \brief Enable/disable IPv4 ARP Jitter.
+ * \param enable enable state
+ */
+ void SetIpv4ArpJitter (bool enable);
+
+ /**
+ * \brief Enable/disable IPv6 NS and RS Jitter.
+ * \param enable enable state
+ */
+ void SetIpv6NsRsJitter (bool enable);
+
+ /**
* Assign a fixed random variable stream number to the random variables
* used by this model. Return the number of streams (possibly zero) that
* have been assigned. The Install() method should have previously been
@@ -303,6 +315,16 @@
* \brief IPv6 install state (enabled/disabled) ?
*/
bool m_ipv6Enabled;
+
+ /**
+ * \brief IPv4 ARP Jitter state (enabled/disabled) ?
+ */
+ bool m_ipv4ArpJitterEnabled;
+
+ /**
+ * \brief IPv6 IPv6 NS and RS Jitter state (enabled/disabled) ?
+ */
+ bool m_ipv6NsRsEnabled;
};
} // namespace ns3