diff --git a/src/routing/manet/aodv/aodv-routing-protocol.cc b/src/routing/manet/aodv/aodv-routing-protocol.cc index 399a154d1..277515734 100644 --- a/src/routing/manet/aodv/aodv-routing-protocol.cc +++ b/src/routing/manet/aodv/aodv-routing-protocol.cc @@ -911,7 +911,7 @@ RoutingProtocol::SendReply (RreqHeader const & rreqHeader, RoutingTableEntry con */ if (!rreqHeader.GetUnknownSeqno () && (rreqHeader.GetDstSeqno () == m_seqNo + 1)) m_seqNo++; - RrepHeader rrepHeader ( /*prefixSize=*/0, /*hops=*/toOrigin.GetHop (), /*dst=*/rreqHeader.GetDst (), + RrepHeader rrepHeader ( /*prefixSize=*/0, /*hops=*/0, /*dst=*/rreqHeader.GetDst (), /*dstSeqNo=*/m_seqNo, /*origin=*/toOrigin.GetDestination (), /*lifeTime=*/MyRouteTimeout); Ptr packet = Create (); packet->AddHeader (rrepHeader); diff --git a/src/routing/manet/aodv/test/aodv-regression.cc b/src/routing/manet/aodv/test/aodv-regression.cc index ec767a122..f3561d51d 100644 --- a/src/routing/manet/aodv/test/aodv-regression.cc +++ b/src/routing/manet/aodv/test/aodv-regression.cc @@ -85,7 +85,7 @@ ChainRegressionTest::DoRun () CreateDevices (); // At m_time / 3 move central node away and see what will happen - Ptr node = m_nodes->Get (m_size / 2 + 1); + Ptr node = m_nodes->Get (m_size / 2); Ptr mob = node->GetObject (); Simulator::Schedule (m_time / Scalar(3.0), &MobilityModel::SetPosition, mob, Vector (1e5, 1e5, 1e5)); @@ -126,7 +126,7 @@ ChainRegressionTest::CreateDevices () YansWifiChannelHelper wifiChannel = YansWifiChannelHelper::Default (); wifiPhy.SetChannel (wifiChannel.Create ()); WifiHelper wifi = WifiHelper::Default (); - wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode", StringValue ("wifia-6mbs"), "RtsCtsThreshold", UintegerValue (0)); + wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager", "DataMode", StringValue ("wifia-6mbs"), "RtsCtsThreshold", StringValue ("2200")); NetDeviceContainer devices = wifi.Install (wifiPhy, wifiMac, *m_nodes); // 2. Setup TCP/IP & AODV diff --git a/src/routing/manet/aodv/test/aodv-regression.h b/src/routing/manet/aodv/test/aodv-regression.h index 6e2dc12f7..4502eaddf 100644 --- a/src/routing/manet/aodv/test/aodv-regression.h +++ b/src/routing/manet/aodv/test/aodv-regression.h @@ -36,7 +36,111 @@ namespace aodv { * TODO: describe test topology and traffic * * \verbatim - * TODO: draw expected packets time diagram + Expected packets time diagram. + 1 2 3 4 5 + <------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=0, ID=1, org_seqno=1) src = 10.1.1.1 + |<------|------>| | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=1, ID=1, org_seqno=1) src = 10.1.1.2 + | |<------|------>| | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=2, ID=1, org_seqno=1) src = 10.1.1.3 + | | |<------|------>| RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, U=1, hop=3, ID=1, org_seqno=1) src = 10.1.1.4 + | | | |<------|------> ARP request. Who has 10.1.1.4? Tell 10.1.1.5 + | | | |======>| ARP reply + | | | |<======| RREP (orig 10.1.1.1, dst 10.1.1.5, hop=0, dst_seqno=0) src=10.1.1.5 + | | |<------|------>| ARP request. Who has 10.1.1.3? Tell 10.1.1.4 + | | |======>| | ARP reply + | | |<======| | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=1, dst_seqno=0) src=10.1.1.4 + | |<------|------>| | ARP request. Who has 10.1.1.2? Tell 10.1.1.3 + | |======>| | | ARP reply + | |<======| | | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=2, dst_seqno=0) src=10.1.1.3 + |<------|------>| | | ARP request. Who has 10.1.1.1? Tell 10.1.1.2 + |======>| | | | ARP reply + |<======| | | | RREP (orig 10.1.1.1, dst 10.1.1.5, hop=3, dst_seqno=0) src=10.1.1.2 + <-------|------>| | | | ARP request. Who has 10.1.1.2? Tell 10.1.1.1 + |<======| | | | + |======>| | | | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5; src=10.1.1.1 next_hop=10.1.1.2 + |<------|------>| | | ARP request. Who has 10.1.1.3? Tell 10.1.1.2 + | |<======| | | ARP reply + | |======>| | | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5; src=10.1.1.2 next_hop=10.1.1.3 + | |<------|------>| | ARP request. Who has 10.1.1.4? Tell 10.1.1.3 + | | |<======| | ARP reply + | | |======>| | ICMP (ping) request 0 from 10.1.1.1 to 10.1.1.5; src=10.1.1.3 next_hop=10.1.1.4 + | | |<------|------>| ARP request. Who has 10.1.1.5? Tell 10.1.1.4 + | | | |<======| ARP reply + | | | |======>| ICMP (ping) request 0; src=10.1.1.4 next_hop=10.1.1.5 + | | | |<======| ICMP (ping) reply 0; src=10.1.1.5 next_hop=10.1.1.4 + | | |<======| | ICMP (ping) reply 0; src=10.1.1.4 next_hop=10.1.1.3 + | |<======| | | ICMP (ping) reply 0; src=10.1.1.3 next_hop=10.1.1.2 + |<======| | | | ICMP (ping) reply 0; src=10.1.1.2 next_hop=10.1.1.1 + | | | |<------|------> Hello + |<------|------>| | | Hello + <------|------>| | | | Hello + | |<------|------>| | Hello + |======>| | | | ICMP (ping) request 1; src=10.1.1.1 next_hop=10.1.1.2 + | | |<------|------>| Hello + | |======>| | | ICMP (ping) request 1; src=10.1.1.2 next_hop=10.1.1.3 + | | |======>| | ICMP (ping) request 1; src=10.1.1.3 next_hop=10.1.1.4 + | | | |======>| ICMP (ping) request 1; src=10.1.1.4 next_hop=10.1.1.5 + | | | |<======| ICMP (ping) reply 1; src=10.1.1.5 next_hop=10.1.1.4 + | | |<======| | ICMP (ping) reply 1; src=10.1.1.4 next_hop=10.1.1.3 + | |<======| | | ICMP (ping) reply 11; src=10.1.1.3 next_hop=10.1.1.2 + |<======| | | | ICMP (ping) reply 1; src=10.1.1.2 next_hop=10.1.1.1 + | | | |<------|------> Hello + |<------|------>| | | Hello + <------|------>| | | | Hello + | | |<------|------>| Hello + | |<------|------>| | Hello + |======>| | | | ICMP (ping) request 2; src=10.1.1.1 next_hop=10.1.1.2 + | |======>| | | ICMP (ping) request 2; src=10.1.1.2 next_hop=10.1.1.3 + | | |======>| | ICMP (ping) request 2; src=10.1.1.3 next_hop=10.1.1.4 + | | | |======>| ICMP (ping) request 2; src=10.1.1.4 next_hop=10.1.1.5 + | | | |<======| ICMP (ping) reply 2; src=10.1.1.5 next_hop=10.1.1.4 + | | |<======| | ICMP (ping) reply 2; src=10.1.1.4 next_hop=10.1.1.3 + | |<======| | | ICMP (ping) reply 2; src=10.1.1.3 next_hop=10.1.1.2 + |<======| | | | ICMP (ping) reply 2; src=10.1.1.2 next_hop=10.1.1.1 + | | | |<------|------> Hello + <------|------>| | | | Hello + | |<------|------>| | Hello + |<------|------>| | | Hello + | | |<------|------>| Hello + |======>| | | | ICMP (ping) request 3; src=10.1.1.1 next_hop=10.1.1.2 + | |======>| | | ICMP (ping) request 3; src=10.1.1.2 next_hop=10.1.1.3 + | | |======>| | ICMP (ping) request 3; src=10.1.1.3 next_hop=10.1.1.4 + | | | |======>| ICMP (ping) request 3; src=10.1.1.4 next_hop=10.1.1.5 + | | | |<======| ICMP (ping) reply 3; src=10.1.1.5 next_hop=10.1.1.4 + | | |<======| | ICMP (ping) reply 3; src=10.1.1.4 next_hop=10.1.1.3 + | |<======| | | ICMP (ping) reply 3; src=10.1.1.3 next_hop=10.1.1.2 + |<======| | | | ICMP (ping) reply 3; src=10.1.1.2 next_hop=10.1.1.1 + | | | |<------|------> Hello + <------|------>| | | | Hello + |<------|--> | | | Hello | + | | <--|--> | | Hello |Node 3 move away => nobody hear his packets and node 3 doesn't hear anything ! + | | | <--|------>| Hello | + |======>| | | | ICMP (ping) request 4; src=10.1.1.1 next_hop=10.1.1.2 + | |==> | | | ICMP (ping) request 4; src=10.1.1.2 next_hop=10.1.1.3. 7 retries. + |<======| | | | RERR (unreachable dst 10.1.1.3 & 10.1.1.5) src=10.1.1.2 + | | | |<------|------> Hello + <------|------>| | | | Hello + |<------|--> | | | Hello + | | <--|--> | | Hello + | | | <--|------>| Hello + <------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=0, ID=2, org_seqno=2) src = 10.1.1.1 + |<------|--> | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=1, ID=2, org_seqno=1) src = 10.1.1.2 + | | | |<------|------> Hello + | | | <--|------>| Hello + | | <--|--> | | Hello + <------|------>| | | | Hello + <------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=0, ID=3, org_seqno=3) src = 10.1.1.1 + |<------|--> | | | Hello + |<------|--> | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=1, ID=3, org_seqno=3) src = 10.1.1.2 + | | | |======>| RERR (unreachable dst 10.1.1.1 & 10.1.1.3) src=10.1.1.4 + | | | |<------|------> Hello + | | | <--|------>| Hello + | | <--|--> | | Hello + |<------|--> | | | Hello + <------|------>| | | | Hello + <------|------>| | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=0, ID=4, org_seqno=4) src = 10.1.1.1 + |<------|--> | | | RREQ (orig 10.1.1.1, dst 10.1.1.5, G=1, hop=1, ID=4, org_seqno=4) src = 10.1.1.2 + +.................................................................. * \endverbatim */ class ChainRegressionTest : public TestCase