54 #include "ns3/core-module.h"
55 #include "ns3/network-module.h"
56 #include "ns3/internet-module.h"
57 #include "ns3/point-to-point-module.h"
58 #include "ns3/applications-module.h"
59 #include "ns3/virtual-net-device.h"
60 #include "ns3/ipv4-global-routing-helper.h"
83 NS_LOG_DEBUG (
"Send to " << m_n3Address <<
": " << *packet);
91 NS_LOG_DEBUG (
"Send to " << m_n3Address <<
": " << *packet);
99 if (m_rng->GetValue () < 0.25)
101 NS_LOG_DEBUG (
"Send to " << m_n0Address <<
": " << *packet);
106 NS_LOG_DEBUG (
"Send to " << m_n1Address <<
": " << *packet);
118 m_n3Tap->Receive (packet, 0x0800, m_n3Tap->GetAddress (), m_n3Tap->GetAddress (),
NetDevice::PACKET_HOST);
127 m_n0Tap->Receive (packet, 0x0800, m_n0Tap->GetAddress (), m_n0Tap->GetAddress (),
NetDevice::PACKET_HOST);
136 m_n1Tap->Receive (packet, 0x0800, m_n1Tap->GetAddress (), m_n1Tap->GetAddress (),
NetDevice::PACKET_HOST);
143 : m_n3Address (n3Addr), m_n0Address (n0Addr), m_n1Address (n1Addr)
145 m_rng = CreateObject<UniformRandomVariable> ();
159 m_n0Tap = CreateObject<VirtualNetDevice> ();
160 m_n0Tap->SetAddress (
Mac48Address (
"11:00:01:02:03:01"));
169 m_n1Tap = CreateObject<VirtualNetDevice> ();
170 m_n1Tap->SetAddress (
Mac48Address (
"11:00:01:02:03:02"));
179 m_n3Tap = CreateObject<VirtualNetDevice> ();
180 m_n3Tap->SetAddress (
Mac48Address (
"11:00:01:02:03:04"));
215 cmd.
Parse (argc, argv);
245 ipv4.
SetBase (
"10.1.1.0",
"255.255.255.0");
248 ipv4.
SetBase (
"10.1.2.0",
"255.255.255.0");
251 ipv4.
SetBase (
"10.1.3.0",
"255.255.255.0");
270 apps.
Start (Seconds (1.0));
271 apps.
Stop (Seconds (10.0));
277 apps.
Start (Seconds (1.0));
284 apps.
Start (Seconds (1.1));
285 apps.
Stop (Seconds (10.0));
289 apps.
Start (Seconds (1.1));
holds a vector of ns3::Application pointers.
virtual uint32_t AddInterface(Ptr< NetDevice > device)=0
Manage ASCII trace files for device models.
static Ipv4Address GetAny(void)
NS_LOG_COMPONENT_DEFINE("GrantedTimeWindowMpiInterface")
holds a vector of std::pair of Ptr and interface index.
static void PopulateRoutingTables(void)
Build a routing database and initialize the routing tables of the nodes in the simulation.
Ptr< UniformRandomVariable > m_rng
hold variables of type string
NetDeviceContainer Install(NodeContainer c)
a class to represent an Ipv4 address mask
Ptr< VirtualNetDevice > m_n0Tap
void N3SocketRecv(Ptr< Socket > socket)
static void Run(void)
Run the simulation until one of:
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes...
Ptr< OutputStreamWrapper > CreateFileStream(std::string filename, std::ios::openmode filemode=std::ios::out)
Create and initialize an output stream object we'll use to write the traced bits. ...
Build a set of PointToPointNetDevice objects.
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
A helper to make it easier to instantiate an ns3::OnOffApplication on a set of nodes.
a polymophic address class
Class for representing data rates.
void EnablePcapAll(std::string prefix, bool promiscuous=false)
Enable pcap output on each device (which is of the appropriate type) in the set of all nodes created ...
static void EnablePrinting(void)
By default, packets do not keep around enough metadata to perform the operations requested by the Pri...
virtual void SetUp(uint32_t interface)=0
Hold an unsigned integer type.
holds a vector of ns3::NetDevice pointers
Ptr< VirtualNetDevice > m_n1Tap
Ipv4InterfaceContainer i0i2
This class implements a tag that carries an address of a packet across the socket interface...
Callback< R > MakeCallback(R(T::*memPtr)(void), OBJ objPtr)
static Ptr< Socket > CreateSocket(Ptr< Node > node, TypeId tid)
This method wraps the creation of sockets that is performed on a given node by a SocketFactory specif...
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
Parse command-line arguments.
static void Destroy(void)
Every event scheduled by the Simulator::insertAtDestroy method is invoked.
bool N0VirtualSend(Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)
Access to the Ipv4 forwarding table, interfaces, and configuration.
void SetDefault(std::string name, const AttributeValue &value)
void SetConstantRate(DataRate dataRate, uint32_t packetSize=512)
Helper function to set a constant rate source.
keep track of a set of node pointers.
virtual Ptr< Packet > Recv(uint32_t maxSize, uint32_t flags)=0
Read data from the socket.
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
bool N3VirtualSend(Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
Ptr< VirtualNetDevice > m_n3Tap
Ipv4 addresses are stored in host order in this class.
hold objects of type ns3::Address
void Stop(Time stop)
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter...
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
uint32_t AddDevice(Ptr< NetDevice > device)
a class to store IPv4 address information on an interface
Ipv4InterfaceContainer i1i2
Ptr< Node > Get(uint32_t i) const
Get the Ptr stored in this container at a given index.
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
#define NS_LOG_DEBUG(msg)
virtual bool AddAddress(uint32_t interface, Ipv4InterfaceAddress address)=0
ApplicationContainer Install(NodeContainer c) const
Install an ns3::PacketSinkApplication on each node of the input container configured with all the att...
void Parse(int argc, char *argv[])
Parse the program arguments.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
void EnableAsciiAll(std::string prefix)
Enable ascii trace output on each device (which is of the appropriate type) in the set of all nodes c...
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Tunnel(Ptr< Node > n3, Ptr< Node > n0, Ptr< Node > n1, Ipv4Address n3Addr, Ipv4Address n0Addr, Ipv4Address n1Addr)
void N0SocketRecv(Ptr< Socket > socket)
int main(int argc, char *argv[])
Ptr< T > GetObject(void) const
ApplicationContainer Install(NodeContainer c) const
Install an ns3::OnOffApplication on each node of the input container configured with all the attribut...
void N1SocketRecv(Ptr< Socket > socket)
void SetAttribute(std::string name, const AttributeValue &value)
Helper function used to set the underlying application attributes.
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
void LogComponentEnable(char const *name, enum LogLevel level)
static TypeId LookupByName(std::string name)
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
bool N1VirtualSend(Ptr< Packet > packet, const Address &source, const Address &dest, uint16_t protocolNumber)