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...
 
- Static Public Attributes inherited from ns3::TestCase
static constexpr auto QUICK = Duration::QUICK
 Deprecated test duration simple enums.
 
static constexpr auto EXTENSIVE = Duration::EXTENSIVE
 
static constexpr auto TAKES_FOREVER = Duration::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 71 of file ipv4-deduplication-test.cc.

Member Enumeration Documentation

◆ MODE

Enum of test types.

Enumerator
ENABLED 
DISABLED 
DEGENERATE 

Definition at line 126 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 173 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 488 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 435 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 230 of file ipv4-deduplication-test.cc.

References ns3::Create(), and 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 236 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 205 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 261 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 189 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 243 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 249 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 113 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 138 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 134 of file ipv4-deduplication-test.cc.

Referenced by Ipv4DeduplicationTest(), and DoRun().

◆ m_mode

MODE Ipv4DeduplicationTest::m_mode
private

Test type.

Definition at line 133 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 136 of file ipv4-deduplication-test.cc.

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


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