From 9b60ad3617bf16b85343680f9e07cda3b26458e4 Mon Sep 17 00:00:00 2001
From: John Abraham
Date: Thu, 15 Aug 2013 21:00:57 -0700
Subject: [PATCH] Update internet-stack-helper API for jitter and CHANGES.html
---
CHANGES.html | 13 +++++++------
src/internet/helper/internet-stack-helper.cc | 12 +++++++-----
src/internet/helper/internet-stack-helper.h | 2 +-
3 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/CHANGES.html b/CHANGES.html
index 9e1b9b21f..2d7a0cfcb 100644
--- a/CHANGES.html
+++ b/CHANGES.html
@@ -71,11 +71,11 @@ us a note on ns-developers mailing list.
IPv6 to make an Autoconfigured address.
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
+ Radvd application has a new Helper. See the updated
examples/ipv6/radvd.cc for an example.
- InternetStackHelper have two new functions:SetIpv4ArpJitter (bool enable)
+ InternetStackHelper has two new functions:SetIpv4ArpJitter (bool enable)
and SetIpv6NsRsJitter (bool enable) to enable/disable
- the random jitter on IPv4's ARP and IPv6's NS/RS.
+ the random jitter on the tranmission of IPv4 ARP Request and IPv6 NS/RS.
Changes to existing API:
@@ -134,9 +134,10 @@ or
cmd.PrintHelp (std::cerr);
- 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
+ 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.
+ This behaviour can be modified by using ArpL3Protocol's
RequestJitter and Icmpv6L4Protocol's SolicitationJitter
attributes or by using the new InternetStackHelper functions.
diff --git a/src/internet/helper/internet-stack-helper.cc b/src/internet/helper/internet-stack-helper.cc
index 1b4fc1e75..a16259f6b 100644
--- a/src/internet/helper/internet-stack-helper.cc
+++ b/src/internet/helper/internet-stack-helper.cc
@@ -236,7 +236,7 @@ InternetStackHelper::InternetStackHelper ()
m_ipv4Enabled (true),
m_ipv6Enabled (true),
m_ipv4ArpJitterEnabled (true),
- m_ipv6NsRsEnabled (true)
+ m_ipv6NsRsJitterEnabled (true)
{
Initialize ();
@@ -273,7 +273,7 @@ InternetStackHelper::InternetStackHelper (const InternetStackHelper &o)
m_ipv6Enabled = o.m_ipv6Enabled;
m_tcpFactory = o.m_tcpFactory;
m_ipv4ArpJitterEnabled = o.m_ipv4ArpJitterEnabled;
- m_ipv6NsRsEnabled = o.m_ipv6NsRsEnabled;
+ m_ipv6NsRsJitterEnabled = o.m_ipv6NsRsJitterEnabled;
}
InternetStackHelper &
@@ -298,7 +298,7 @@ InternetStackHelper::Reset (void)
m_ipv4Enabled = true;
m_ipv6Enabled = true;
m_ipv4ArpJitterEnabled = true;
- m_ipv6NsRsEnabled = true;
+ m_ipv6NsRsJitterEnabled = true;
Initialize ();
}
@@ -334,7 +334,7 @@ void InternetStackHelper::SetIpv4ArpJitter (bool enable)
void InternetStackHelper::SetIpv6NsRsJitter (bool enable)
{
- m_ipv6NsRsEnabled = enable;
+ m_ipv6NsRsJitterEnabled = enable;
}
int64_t
@@ -437,6 +437,7 @@ InternetStackHelper::Install (Ptr node) const
if (m_ipv4ArpJitterEnabled == false)
{
Ptr arp = node->GetObject ();
+ NS_ASSERT (arp);
arp->SetAttribute ("RequestJitter", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
}
// Set routing
@@ -457,9 +458,10 @@ InternetStackHelper::Install (Ptr node) const
CreateAndAggregateObjectFromTypeId (node, "ns3::Ipv6L3Protocol");
CreateAndAggregateObjectFromTypeId (node, "ns3::Icmpv6L4Protocol");
- if (m_ipv6NsRsEnabled == false)
+ if (m_ipv6NsRsJitterEnabled == false)
{
Ptr icmpv6l4 = node->GetObject ();
+ NS_ASSERT (icmpv6l4);
icmpv6l4->SetAttribute ("SolicitationJitter", StringValue ("ns3::ConstantRandomVariable[Constant=0.0]"));
}
// Set routing
diff --git a/src/internet/helper/internet-stack-helper.h b/src/internet/helper/internet-stack-helper.h
index 687f4551f..f4d16b06f 100644
--- a/src/internet/helper/internet-stack-helper.h
+++ b/src/internet/helper/internet-stack-helper.h
@@ -324,7 +324,7 @@ private:
/**
* \brief IPv6 IPv6 NS and RS Jitter state (enabled/disabled) ?
*/
- bool m_ipv6NsRsEnabled;
+ bool m_ipv6NsRsJitterEnabled;
};
} // namespace ns3