A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
Ipv4DeduplicationTest Class Reference

IPv4 Deduplication Test. More...

+ Inheritance diagram for Ipv4DeduplicationTest:
+ Collaboration diagram for Ipv4DeduplicationTest:

Public Member Functions

 Ipv4DeduplicationTest (bool enable, Time expire=Seconds(1))
 Constructor.
 
void DoRun () override
 Implementation to actually run this TestCase.
 
void DropPkt (const Ipv4Header &ipHeader, Ptr< const Packet > packet, Ipv4L3Protocol::DropReason reason, Ptr< Ipv4 > ipv4, uint32_t interface)
 Register dropped packet.
 
void ReceivePkt (Ptr< Socket > socket)
 Receive data.
 
- Public Member Functions inherited from ns3::TestCase
 TestCase (const TestCase &)=delete
 
virtual ~TestCase ()
 Destructor.
 
std::string GetName () const
 
TestCaseoperator= (const TestCase &)=delete
 

Private Types

enum  MODE { ENABLED = 0 , DISABLED , DEGENERATE }
 Enum of test types. More...
 

Private Member Functions

void CheckDrops (const std::string &name)
 Check packet drops.
 
void CheckPackets (const std::string &name)
 Check packet receptions.
 
void DoSendData (Ptr< Socket > socket, std::string to)
 Send data.
 
void DoSendPacket (Ptr< Socket > socket, Ptr< Packet > packet, std::string to)
 Send data.
 
void SendData (Ptr< Socket > socket, std::string to)
 Send data.
 
void SendPacket (Ptr< Socket > socket, Ptr< Packet > packet, std::string to)
 Send data.
 

Static Private Member Functions

static std::string MakeName (bool enable, Time expire)
 Creates the test name according to the parameters.
 

Private Attributes

std::map< std::string, uint32_tm_dropCountMap
 map of received packets (node name, counter)
 
Time m_expire
 Expiration delay for duplicate cache entries.
 
MODE m_mode
 Test type.
 
std::map< std::string, uint32_tm_packetCountMap
 map of received packets (node name, counter)
 

Static Private Attributes

static const Time DELAY = MilliSeconds(1)
 Channel delay.
 

Additional Inherited Members

- Public Types inherited from ns3::TestCase
enum class  Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 }
 How long the test takes to execute. More...
 
using instead = Duration
 
- Static Public Attributes inherited from ns3::TestCase
static constexpr auto EXTENSIVE = Duration::EXTENSIVE
 
static constexpr auto QUICK = Duration::QUICK
 
static constexpr auto TAKES_FOREVER
 
- Protected Member Functions inherited from ns3::TestCase
 TestCase (std::string name)
 Constructor.
 
void AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK)
 Add an individual child TestCase to this test suite.
 
TestCaseGetParent () const
 Get the parent of this TestCase.
 
bool IsStatusFailure () const
 Check if any tests failed.
 
bool IsStatusSuccess () const
 Check if all tests passed.
 
void SetDataDir (std::string directory)
 Set the data directory where reference trace files can be found.
 
void ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line)
 Log the failure of this TestCase.
 
bool MustAssertOnFailure () const
 Check if this run should assert on failure.
 
bool MustContinueOnFailure () const
 Check if this run should continue on failure.
 
std::string CreateDataDirFilename (std::string filename)
 Construct the full path to a file in the data directory.
 
std::string CreateTempDirFilename (std::string filename)
 Construct the full path to a file in a temporary directory.
 

Detailed Description

IPv4 Deduplication Test.

Tests topology:

   /---- B ----\

A -— | -— D -— E ---- C -—/

This test case counts the number of packets received and dropped at each node across the topology. Every node is configured to forward the multicast packet which originates at node A.

With RFC 6621 de-duplication enabled, one 1 packet is received while some number of duplicate relayed packets are dropped by RFC 6621 at each node.

When RFC6621 is disabled, the original packet has TTL = 4. Multiple packets are received at each node and several packets are dropped due to TTL expiry at each node.

Definition at line 82 of file ipv4-deduplication-test.cc.

Member Enumeration Documentation

◆ MODE

Enum of test types.

Enumerator
ENABLED 
DISABLED 
DEGENERATE 

Definition at line 137 of file ipv4-deduplication-test.cc.

Constructor & Destructor Documentation

◆ Ipv4DeduplicationTest()

Ipv4DeduplicationTest::Ipv4DeduplicationTest ( bool  enable,
Time  expire = Seconds(1) 
)

Constructor.

Parameters
enablededuplication enabled
expireexpiration delay for duplicate cache entries

Definition at line 184 of file ipv4-deduplication-test.cc.

References DEGENERATE, DELAY, DISABLED, m_expire, and m_mode.

Member Function Documentation

◆ CheckDrops()

void Ipv4DeduplicationTest::CheckDrops ( const std::string &  name)
private

Check packet drops.

Parameters
nameNode name

Definition at line 499 of file ipv4-deduplication-test.cc.

References DEGENERATE, DISABLED, ENABLED, m_dropCountMap, m_mode, NS_TEST_ASSERT_MSG_NE, and NS_TEST_EXPECT_MSG_EQ.

Referenced by DoRun().

+ Here is the caller graph for this function:

◆ CheckPackets()

void Ipv4DeduplicationTest::CheckPackets ( const std::string &  name)
private

Check packet receptions.

Parameters
nameNode name

Definition at line 446 of file ipv4-deduplication-test.cc.

References DEGENERATE, DISABLED, ENABLED, m_mode, m_packetCountMap, NS_TEST_ASSERT_MSG_EQ, and NS_TEST_EXPECT_MSG_EQ.

Referenced by DoRun().

+ Here is the caller graph for this function:

◆ DoRun()

◆ DoSendData()

void Ipv4DeduplicationTest::DoSendData ( Ptr< Socket socket,
std::string  to 
)
private

Send data.

Parameters
socketThe sending socket.
toDestination address.

Definition at line 241 of file ipv4-deduplication-test.cc.

References SendPacket().

Referenced by SendData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DoSendPacket()

void Ipv4DeduplicationTest::DoSendPacket ( Ptr< Socket socket,
Ptr< Packet packet,
std::string  to 
)
private

Send data.

Parameters
socketThe sending socket.
packetThe packet to send.
toDestination address.

Definition at line 247 of file ipv4-deduplication-test.cc.

References NS_TEST_EXPECT_MSG_EQ.

Referenced by SendPacket().

+ Here is the caller graph for this function:

◆ DropPkt()

void Ipv4DeduplicationTest::DropPkt ( const Ipv4Header ipHeader,
Ptr< const Packet packet,
Ipv4L3Protocol::DropReason  reason,
Ptr< Ipv4 ipv4,
uint32_t  interface 
)

Register dropped packet.

Parameters
[in]ipHeaderIP header
[in]packetPacket that was dropped
[in]reasonReason for dropping packet
[in]ipv4Ipv4 instance
[in]interfaceInterface number

Definition at line 216 of file ipv4-deduplication-test.cc.

References DEGENERATE, DISABLED, ns3::Ipv4L3Protocol::DROP_DUPLICATE, ns3::Ipv4L3Protocol::DROP_TTL_EXPIRED, ENABLED, ns3::Names::FindName(), m_dropCountMap, m_mode, and NS_TEST_EXPECT_MSG_EQ.

Referenced by DoRun().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ MakeName()

std::string Ipv4DeduplicationTest::MakeName ( bool  enable,
Time  expire 
)
staticprivate

Creates the test name according to the parameters.

Parameters
enablededuplication enabled
expireexpiration delay for duplicate cache entries
Returns
A string describing the test

Definition at line 272 of file ipv4-deduplication-test.cc.

References DELAY, ns3::Time::MS, and ns3::Time::ToDouble().

+ Here is the call graph for this function:

◆ ReceivePkt()

void Ipv4DeduplicationTest::ReceivePkt ( Ptr< Socket socket)

Receive data.

Parameters
[in]socketThe receive socket.

Definition at line 200 of file ipv4-deduplication-test.cc.

References ns3::Names::FindName(), m_packetCountMap, and NS_TEST_ASSERT_MSG_EQ.

Referenced by DoRun().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendData()

void Ipv4DeduplicationTest::SendData ( Ptr< Socket socket,
std::string  to 
)
private

Send data.

Parameters
socketThe sending socket.
toDestination address.

Definition at line 254 of file ipv4-deduplication-test.cc.

References DoSendData().

Referenced by DoRun().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SendPacket()

void Ipv4DeduplicationTest::SendPacket ( Ptr< Socket socket,
Ptr< Packet packet,
std::string  to 
)
private

Send data.

Parameters
socketThe sending socket.
packetThe packet to send.
toDestination address.

Definition at line 260 of file ipv4-deduplication-test.cc.

References DoSendPacket(), ns3::MilliSeconds(), and ns3::Simulator::ScheduleWithContext().

Referenced by DoSendData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ DELAY

const Time Ipv4DeduplicationTest::DELAY = MilliSeconds(1)
staticprivate

Channel delay.

Definition at line 124 of file ipv4-deduplication-test.cc.

Referenced by Ipv4DeduplicationTest(), DoRun(), and MakeName().

◆ m_dropCountMap

std::map<std::string, uint32_t> Ipv4DeduplicationTest::m_dropCountMap
private

map of received packets (node name, counter)

Definition at line 149 of file ipv4-deduplication-test.cc.

Referenced by CheckDrops(), and DropPkt().

◆ m_expire

Time Ipv4DeduplicationTest::m_expire
private

Expiration delay for duplicate cache entries.

Definition at line 145 of file ipv4-deduplication-test.cc.

Referenced by Ipv4DeduplicationTest(), and DoRun().

◆ m_mode

MODE Ipv4DeduplicationTest::m_mode
private

Test type.

Definition at line 144 of file ipv4-deduplication-test.cc.

Referenced by Ipv4DeduplicationTest(), CheckDrops(), CheckPackets(), DoRun(), and DropPkt().

◆ m_packetCountMap

std::map<std::string, uint32_t> Ipv4DeduplicationTest::m_packetCountMap
private

map of received packets (node name, counter)

Definition at line 147 of file ipv4-deduplication-test.cc.

Referenced by CheckPackets(), DoRun(), and ReceivePkt().


The documentation for this class was generated from the following file: