A Discrete-Event Network Simulator
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License version 2 as
5  * published by the Free Software Foundation;
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15  *
16  * Author: George F. Riley<riley@ece.gatech.edu>
17  * Author: John Abraham <john.abraham@gatech.edu>
18  * Contributions: Eugene Kalishenko <ydginster@gmail.com> (Open Source and Linux Laboratory http://dev.osll.ru/)
19  */
21 // Interface between ns3 and the network animator
26 #include <string>
27 #include <cstdio>
28 #include <map>
30 #include "ns3/ptr.h"
31 #include "ns3/net-device.h"
32 #include "ns3/node-container.h"
33 #include "ns3/nstime.h"
34 #include "ns3/log.h"
35 #include "ns3/node-list.h"
36 #include "ns3/random-variable-stream.h"
37 #include "ns3/simulator.h"
38 #include "ns3/config.h"
39 #include "ns3/mac48-address.h"
40 #include "ns3/lte-ue-net-device.h"
41 #include "ns3/lte-enb-net-device.h"
42 #include "ns3/uan-phy-gen.h"
43 #include "ns3/wifi-phy.h"
44 #include "ns3/rectangle.h"
45 #include "ns3/ipv4.h"
46 #include "ns3/ipv4-l3-protocol.h"
47 #include "ns3/wifi-phy.h"
49 namespace ns3 {
51 #define MAX_PKTS_PER_TRACE_FILE 100000
52 #define PURGE_INTERVAL 5
53 #define NETANIM_VERSION "netanim-3.108"
54 #define CHECK_STARTED_INTIMEWINDOW {if (!m_started || !IsInTimeWindow ()) {return; }}
55 #define CHECK_STARTED_INTIMEWINDOW_TRACKPACKETS {if (!m_started || !IsInTimeWindow () || !m_trackPackets) {return; }}
58 struct NodeSize;
59 class WifiPsdu;
76 {
77 public:
83  AnimationInterface (const std::string filename);
88  typedef enum
89  {
92  } CounterType;
99  typedef void (*AnimWriteCallback)(const char * str);
127  void EnableQueueCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
138  void EnableWifiMacCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
149  void EnableWifiPhyCounters (Time startTime, Time stopTime, Time pollInterval = Seconds (1));
162  AnimationInterface & EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, Time pollInterval = Seconds (5));
176  AnimationInterface & EnableIpv4RouteTracking (std::string fileName, Time startTime, Time stopTime, NodeContainer nc, Time pollInterval = Seconds (5));
184  static bool IsInitialized (void);
193  void SetStartTime (Time t);
202  void SetStopTime (Time t);
213  void SetMaxPktsPerTraceFile (uint64_t maxPktsPerFile);
224  void SetMobilityPollInterval (Time t);
240  void ResetAnimWriteCallback ();
251  static void SetConstantPosition (Ptr <Node> n, double x, double y, double z = 0);
260  void UpdateNodeDescription (Ptr <Node> n, std::string descr);
269  void UpdateNodeDescription (uint32_t nodeId, std::string descr);
278  void UpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
288  void UpdateNodeSize (uint32_t nodeId, double width, double height);
299  void UpdateNodeColor (Ptr <Node> n, uint8_t r, uint8_t g, uint8_t b);
310  void UpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
320  void UpdateNodeCounter (uint32_t nodeCounterId, uint32_t nodeId, double counter);
334  void SetBackgroundImage (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity);
344  void UpdateLinkDescription (uint32_t fromNode, uint32_t toNode,
345  std::string linkDescription);
355  void UpdateLinkDescription (Ptr <Node> fromNode, Ptr <Node> toNode,
356  std::string linkDescription);
365  AnimationInterface & AddSourceDestination (uint32_t fromNodeId, std::string destinationIpv4Address);
372  bool IsStarted (void);
379  void SkipPacketTracing ();
389  void EnablePacketMetadata (bool enable = true);
397  uint64_t GetTracePktCount ();
407  uint32_t AddNodeCounter (std::string counterName, CounterType counterType);
416  uint32_t AddResource (std::string resourcePath);
425  double GetNodeEnergyFraction (Ptr <const Node> node) const;
427 private:
433  {
434 public:
435  AnimPacketInfo ();
441  AnimPacketInfo (const AnimPacketInfo & pInfo);
449  AnimPacketInfo (Ptr <const NetDevice> tx_nd, const Time fbTx, uint32_t txNodeId = 0);
451  uint32_t m_txNodeId;
452  double m_fbTx;
453  double m_lbTx;
454  double m_fbRx;
455  double m_lbRx;
462  void ProcessRxBegin (Ptr <const NetDevice> nd, const double fbRx);
463  };
466  typedef struct
467  {
468  uint8_t r;
469  uint8_t g;
470  uint8_t b;
471  } Rgb;
474  typedef struct
475  {
476  uint32_t fromNode;
477  uint32_t toNode;
481  typedef struct
482  {
483  std::string fromNodeDescription;
484  std::string toNodeDescription;
485  std::string linkDescription;
486  } LinkProperties;
490  {
499  {
500  //Check if they are the same node pairs but flipped
501  if ( ((first.fromNode == second.fromNode) && (first.toNode == second.toNode))
502  || ((first.fromNode == second.toNode) && (first.toNode == second.fromNode)) )
503  {
504  return false;
505  }
506  std::ostringstream oss1;
507  oss1 << first.fromNode << first.toNode;
508  std::ostringstream oss2;
509  oss2 << second.fromNode << second.toNode;
510  return oss1.str () < oss2.str ();
511  }
513  };
516  typedef struct
517  {
518  std::string destination;
519  uint32_t fromNodeId;
523  typedef struct
524  {
525  uint32_t nodeId;
526  std::string nextHop;
530  typedef enum
531  {
539  } ProtocolType;
542  typedef struct
543  {
544  double width;
545  double height;
546  } NodeSize;
547  typedef std::map <P2pLinkNodeIdPair, LinkProperties, LinkPairCompare> LinkPropertiesMap;
548  typedef std::map <uint32_t, std::string> NodeDescriptionsMap;
549  typedef std::map <uint32_t, Rgb> NodeColorsMap;
550  typedef std::map<uint64_t, AnimPacketInfo> AnimUidPacketInfoMap;
551  typedef std::map <uint32_t, double> EnergyFractionMap;
552  typedef std::vector <Ipv4RoutePathElement> Ipv4RoutePathElements;
553  typedef std::multimap <uint32_t, std::string> NodeIdIpv4Map;
554  typedef std::multimap <uint32_t, std::string> NodeIdIpv6Map;
555  typedef std::pair <uint32_t, std::string> NodeIdIpv4Pair;
556  typedef std::pair <uint32_t, std::string> NodeIdIpv6Pair;
559  // Node Counters
560  typedef std::map <uint32_t, uint64_t> NodeCounterMap64;
565  {
566 public:
573  AnimXmlElement (std::string tagName, bool emptyElement = true);
574  template <typename T>
581  void AddAttribute (std::string attribute, T value, bool xmlEscape = false);
586  void SetText (std::string text);
591  void AppendChild (AnimXmlElement e);
597  std::string ToString (bool autoClose = true);
599 private:
600  std::string m_tagName;
601  std::string m_text;
602  std::vector<std::string> m_attributes;
603  std::vector<std::string> m_children;
605  };
609  // ##### State #####
611  FILE * m_f;
612  FILE * m_routingF;
614  std::string m_outputFileName;
615  uint64_t gAnimUid;
617  bool m_started;
621  uint64_t m_maxPktsPerFile;
622  std::string m_originalFileName;
624  std::string m_routingFileName;
638  // Counter ID
665  std::map <uint32_t, Vector> m_nodeLocation;
666  std::map <std::string, uint32_t> m_macToNodeIdMap;
667  std::map <std::string, uint32_t> m_ipv4ToNodeIdMap;
668  std::map <std::string, uint32_t> m_ipv6ToNodeIdMap;
676  uint64_t m_currentPktCount;
677  std::vector <Ipv4RouteTrackElement> m_ipv4RouteTrackElements;
678  std::map <uint32_t, NodeSize> m_nodeSizes;
679  std::vector <std::string> m_resources;
680  std::vector <std::string> m_nodeCounters;
682  /* Value-added custom counters */
705  const std::vector<std::string> GetElementsFromContext (const std::string& context) const;
711  Ptr <Node> GetNodeFromContext (const std::string& context) const;
717  Ptr <NetDevice> GetNetDeviceFromContext (std::string context);
719  // ##### General #####
725  void StartAnimation (bool restart = false);
732  void SetOutputFile (const std::string& fn, bool routing = false);
738  void StopAnimation (bool onlyAnimation = false);
744  std::string CounterTypeToString (CounterType counterType);
750  std::string GetPacketMetadata (Ptr<const Packet> p);
756  void AddByteTag (uint64_t animUid, Ptr<const Packet> p);
764  int WriteN (const char* data, uint32_t count, FILE * f);
771  int WriteN (const std::string& st, FILE * f);
777  std::string GetMacAddress (Ptr <NetDevice> nd);
783  std::string GetIpv4Address (Ptr <NetDevice> nd);
789  std::string GetIpv6Address (Ptr <NetDevice> nd);
795  std::vector<std::string> GetIpv4Addresses (Ptr <NetDevice> nd);
801  std::vector<std::string> GetIpv6Addresses (Ptr <NetDevice> nd);
807  std::string GetNetAnimVersion ();
809  void MobilityAutoCheck ();
816  bool IsPacketPending (uint64_t animUid, ProtocolType protocolType);
821  void PurgePendingPackets (ProtocolType protocolType);
833  std::string ProtocolTypeToString (ProtocolType protocolType);
840  void AddPendingPacket (ProtocolType protocolType, uint64_t animUid, AnimPacketInfo pktInfo);
852  void AddToIpv4AddressNodeIdTable (std::string ipv4Address, uint32_t nodeId);
858  void AddToIpv4AddressNodeIdTable (std::vector<std::string> ipv4Addresses, uint32_t nodeId);
864  void AddToIpv6AddressNodeIdTable (std::string ipv6Address, uint32_t nodeId);
870  void AddToIpv6AddressNodeIdTable (std::vector<std::string> ipv6Addresses, uint32_t nodeId);
875  bool IsInTimeWindow ();
877  void CheckMaxPktsPerTraceFile ();
880  void TrackWifiPhyCounters ();
882  void TrackWifiMacCounters ();
886  void TrackQueueCounters ();
887  // ##### Routing #####
889  void TrackIpv4Route ();
891  void TrackIpv4RoutePaths ();
897  std::string GetIpv4RoutingTable (Ptr <Node> n);
904  void RecursiveIpv4RoutePathSearch (std::string from, std::string to, Ipv4RoutePathElements &rpElements);
911  void WriteRoutePath (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
914  // ##### Trace #####
920  void EnqueueTrace (std::string context, Ptr<const Packet>);
926  void DequeueTrace (std::string context, Ptr<const Packet>);
932  void QueueDropTrace (std::string context, Ptr<const Packet>);
940  void Ipv4TxTrace (std::string context,
942  uint32_t interfaceIndex);
950  void Ipv4RxTrace (std::string context,
952  uint32_t interfaceIndex);
962  void Ipv4DropTrace (std::string context,
963  const Ipv4Header & ipv4Header,
965  Ipv4L3Protocol::DropReason dropReason, Ptr<Ipv4> ipv4,
966  uint32_t interfaceIndex);
973  void WifiMacTxTrace (std::string context, Ptr<const Packet> p);
979  void WifiMacTxDropTrace (std::string context, Ptr<const Packet> p);
985  void WifiMacRxTrace (std::string context, Ptr<const Packet> p);
991  void WifiMacRxDropTrace (std::string context, Ptr<const Packet> p);
997  void WifiPhyTxDropTrace (std::string context, Ptr<const Packet> p);
1004  void WifiPhyRxDropTrace (std::string context, Ptr<const Packet> p, WifiPhyRxfailureReason reason);
1010  void LrWpanMacTxTrace (std::string context,
1011  Ptr<const Packet> p);
1017  void LrWpanMacTxDropTrace (std::string context,
1018  Ptr<const Packet> p);
1024  void LrWpanMacRxTrace (std::string context,
1025  Ptr<const Packet> p);
1031  void LrWpanMacRxDropTrace (std::string context,
1032  Ptr<const Packet> p);
1042  void DevTxTrace (std::string context,
1044  Ptr<NetDevice> tx,
1045  Ptr<NetDevice> rx,
1046  Time txTime,
1047  Time rxTime);
1055  void WifiPhyTxBeginTrace (std::string context, WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW);
1063  void WifiPhyRxBeginTrace (std::string context, Ptr<const Packet> p, RxPowerWattPerChannelBand rxPowersW);
1069  void WavePhyTxBeginTrace (std::string context,
1070  Ptr<const Packet> p);
1077  void WavePhyRxBeginTrace (std::string context,
1078  Ptr<const Packet> p);
1085  void LrWpanPhyTxBeginTrace (std::string context,
1086  Ptr<const Packet> p);
1093  void LrWpanPhyRxBeginTrace (std::string context,
1094  Ptr<const Packet> p);
1101  void WimaxTxTrace (std::string context,
1103  const Mac48Address & m);
1110  void WimaxRxTrace (std::string context,
1112  const Mac48Address & m);
1118  void CsmaPhyTxBeginTrace (std::string context, Ptr<const Packet> p);
1125  void CsmaPhyTxEndTrace (std::string context, Ptr<const Packet> p);
1132  void CsmaPhyRxEndTrace (std::string context, Ptr<const Packet> p);
1139  void CsmaMacRxTrace (std::string context, Ptr<const Packet> p);
1146  void LteTxTrace (std::string context,
1148  const Mac48Address & m);
1155  void LteRxTrace (std::string context,
1157  const Mac48Address & m);
1163  void LteSpectrumPhyTxStart (std::string context, Ptr<const PacketBurst> pb);
1169  void LteSpectrumPhyRxStart (std::string context, Ptr<const PacketBurst> pb);
1175  void UanPhyGenTxTrace (std::string context, Ptr<const Packet>);
1181  void UanPhyGenRxTrace (std::string context, Ptr<const Packet>);
1188  void RemainingEnergyTrace (std::string context, double previousEnergy, double currentEnergy);
1195  void GenericWirelessTxTrace (std::string context, Ptr<const Packet> p, ProtocolType protocolType);
1202  void GenericWirelessRxTrace (std::string context, Ptr<const Packet> p, ProtocolType protocolType);
1206  void ConnectCallbacks ();
1208  void ConnectLte ();
1215  void ConnectLteUe (Ptr <Node> n, Ptr <LteUeNetDevice> nd, uint32_t devIndex);
1222  void ConnectLteEnb (Ptr <Node> n, Ptr <LteEnbNetDevice> nd, uint32_t devIndex);
1225  // ##### Mobility #####
1231  Vector GetPosition (Ptr <Node> n);
1237  Vector UpdatePosition (Ptr <Node> n);
1244  Vector UpdatePosition (Ptr <Node> n, Vector v);
1250  Vector UpdatePosition (Ptr <NetDevice> ndev);
1257  bool NodeHasMoved (Ptr <Node> n, Vector newLocation);
1262  std::vector < Ptr <Node> > GetMovedNodes ();
1270  // ##### XML Helpers #####
1278  void WriteNonP2pLinkProperties (uint32_t id, std::string ipv4Address, std::string channelType);
1283  void WriteNodeUpdate (uint32_t nodeId);
1290  void OutputWirelessPacketTxInfo (Ptr<const Packet> p, AnimPacketInfo& pktInfo, uint64_t animUid);
1297  void OutputWirelessPacketRxInfo (Ptr<const Packet> p, AnimPacketInfo& pktInfo, uint64_t animUid);
1305  void WriteLinkProperties ();
1307  void WriteIpv4Addresses ();
1309  void WriteIpv6Addresses ();
1311  void WriteNodes ();
1313  void WriteNodeColors ();
1315  void WriteNodeSizes ();
1317  void WriteNodeEnergies ();
1322  void WriteXmlAnim (bool routing = false);
1329  void WriteXmlUpdateNodePosition (uint32_t nodeId, double x, double y);
1337  void WriteXmlUpdateNodeColor (uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b);
1342  void WriteXmlUpdateNodeDescription (uint32_t nodeId);
1349  void WriteXmlUpdateNodeSize (uint32_t nodeId, double width, double height);
1355  void WriteXmlAddResource (uint32_t resourceId, std::string resourcePath);
1362  void WriteXmlAddNodeCounter (uint32_t counterId, std::string counterName, CounterType counterType);
1368  void WriteXmlUpdateNodeImage (uint32_t nodeId, uint32_t resourceId);
1375  void WriteXmlUpdateNodeCounter (uint32_t counterId, uint32_t nodeId, double value);
1383  void WriteXmlNode (uint32_t id, uint32_t sysId, double locX, double locY);
1390  void WriteXmlLink (uint32_t fromId, uint32_t toLp, uint32_t toId);
1397  void WriteXmlUpdateLink (uint32_t fromId, uint32_t toId, std::string linkDescription);
1409  void WriteXmlP (std::string pktType,
1410  uint32_t fId,
1411  double fbTx,
1412  double lbTx,
1413  uint32_t tId,
1414  double fbRx,
1415  double lbRx,
1416  std::string metaInfo = "");
1425  void WriteXmlP (uint64_t animUid, std::string pktType, uint32_t fId, double fbTx, double lbTx);
1433  void WriteXmlPRef (uint64_t animUid, uint32_t fId, double fbTx, std::string metaInfo = "");
1439  void WriteXmlClose (std::string name, bool routing = false);
1446  void WriteXmlNonP2pLinkProperties (uint32_t id, std::string ipAddress, std::string channelType);
1452  void WriteXmlRouting (uint32_t id, std::string routingInfo);
1459  void WriteXmlRp (uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements);
1469  void WriteXmlUpdateBackground (std::string fileName, double x, double y, double scaleX, double scaleY, double opacity);
1475  void WriteXmlIpv4Addresses (uint32_t nodeId, std::vector<std::string> ipv4Addresses);
1481  void WriteXmlIpv6Addresses (uint32_t nodeId, std::vector<std::string> ipv6Addresses);
1483 };
1499 class AnimByteTag : public Tag
1500 {
1501 public:
1507  static TypeId GetTypeId (void);
1514  virtual TypeId GetInstanceTypeId (void) const;
1521  virtual uint32_t GetSerializedSize (void) const;
1528  virtual void Serialize (TagBuffer i) const;
1535  virtual void Deserialize (TagBuffer i);
1542  virtual void Print (std::ostream &os) const;
1549  void Set (uint64_t AnimUid);
1556  uint64_t Get (void) const;
1558 private:
1559  uint64_t m_AnimUid;
1560 };
1564 }
1565 #endif
void GenericWirelessTxTrace(std::string context, Ptr< const Packet > p, ProtocolType protocolType)
Generic wireless transmit trace function.
uint64_t GetAnimUidFromPacket(Ptr< const Packet >)
Get anim UID from packet function.
void Set(uint64_t AnimUid)
Set global Uid in tag.
uint64_t GetTracePktCount()
Get trace file packet count (This used only for testing)
void WifiPhyRxBeginTrace(std::string context, Ptr< const Packet > p, RxPowerWattPerChannelBand rxPowersW)
wifi Phy receive begin trace function
void UpdateNodeImage(uint32_t nodeId, uint32_t resourceId)
Helper function to update the image of a node.
void WriteXmlRp(uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
Write XMLRP function.
void AddPendingPacket(ProtocolType protocolType, uint64_t animUid, AnimPacketInfo pktInfo)
Add pending packet function.
void CsmaMacRxTrace(std::string context, Ptr< const Packet > p)
CSMA MAC receive trace function.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
void MobilityAutoCheck()
Mobility auto check function.
void WriteXmlUpdateLink(uint32_t fromId, uint32_t toId, std::string linkDescription)
Write XML update link counter function.
NodeCounterMap64 m_nodeQueueDequeue
node queue dequeue
uint64_t Get(void) const
Get Uid in tag.
void LteTxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
LTE transmit trace function.
std::map< P2pLinkNodeIdPair, LinkProperties, LinkPairCompare > LinkPropertiesMap
LinkPropertiesMap typedef.
void LrWpanMacTxDropTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC transmit drop trace function.
Definition: second.py:1
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
std::vector< std::string > m_children
list of children
FILE * m_routingF
File handle for routing table output (0 if None);.
std::string GetIpv4Address(Ptr< NetDevice > nd)
Get IPv4 address.
std::string CounterTypeToString(CounterType counterType)
Counter type to string function.
AnimationInterface(const std::string filename)
std::map< uint32_t, std::string > NodeDescriptionsMap
NodeDescriptionsMap typedef.
AnimationInterface & AddSourceDestination(uint32_t fromNodeId, std::string destinationIpv4Address)
Helper function to print the routing path from a source node to destination IP.
void WriteXmlUpdateNodeImage(uint32_t nodeId, uint32_t resourceId)
Write XML update node image function.
std::string GetIpv6Address(Ptr< NetDevice > nd)
Get IPv6 address.
virtual void Serialize(TagBuffer i) const
Serialize function.
NodeCounterMap64 m_nodeLrWpanMacRxDrop
node LR-WPAN MAC receive drop
std::map< std::string, uint32_t > m_ipv6ToNodeIdMap
IPv6 to node ID map.
static TypeId GetTypeId(void)
Get Type Id.
void WriteXmlIpv6Addresses(uint32_t nodeId, std::vector< std::string > ipv6Addresses)
Write XML Ipv6 addresses function.
void WriteNodes()
Write nodes function.
void TrackIpv4L3ProtocolCounters()
Track IPv4 L3 protocol counters function.
void CsmaPhyTxBeginTrace(std::string context, Ptr< const Packet > p)
CSMA Phy transmit begin trace function.
AnimUidPacketInfoMap m_pendingWifiPackets
pending wifi packets
void WriteXmlUpdateNodePosition(uint32_t nodeId, double x, double y)
Write XML update node position function.
NodeDescriptionsMap m_nodeDescriptions
node description
std::string ToString(bool autoClose=true)
Get text for the element function.
static bool IsInitialized(void)
Check if AnimationInterface is initialized.
uint32_t m_ipv4L3ProtocolTxCounterId
IPv4 L3 protocol transmit counter ID.
void WifiMacTxDropTrace(std::string context, Ptr< const Packet > p)
wifi MAC transmit drop trace function
void PurgePendingPackets(ProtocolType protocolType)
Purge pending packets function.
uint32_t m_queueEnqueueCounterId
queue enqueue counter ID
uint64_t m_maxPktsPerFile
maximum pakets per file
void QueueDropTrace(std::string context, Ptr< const Packet >)
Queue trace function.
Enumeration of the possible reception failure reasons.
void WifiMacRxTrace(std::string context, Ptr< const Packet > p)
wifi MAC receive trace function
std::map< std::string, uint32_t > m_macToNodeIdMap
MAC to node ID map.
Time m_ipv4L3ProtocolCountersPollInterval
IPv4 L3 protocol counters poll interval.
void LteSpectrumPhyRxStart(std::string context, Ptr< const PacketBurst > pb)
LTE Spectrum Phy receive start function.
void TrackQueueCounters()
Track queue counters function.
void TrackWifiPhyCounters()
Track wifi phy counters function.
Ptr< NetDevice > GetNetDeviceFromContext(std::string context)
Get net device from context.
void EnableWifiPhyCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Wifi Phy Counters such as TxDrop, RxDrop.
void TrackIpv4RoutePaths()
Track IPv4 route paths function.
void WifiPhyRxDropTrace(std::string context, Ptr< const Packet > p, WifiPhyRxfailureReason reason)
wifi Phy receive drop trace function
NodeContainer m_routingNc
routing node container
Time m_ipv4L3ProtocolCountersStopTime
IPv4 L3 protocol counters stop time.
void WriteXmlAnim(bool routing=false)
Write XML anim function.
uint64_t m_currentPktCount
current packet count
std::pair< uint32_t, std::string > NodeIdIpv6Pair
NodeIdIpv6Pair typedef.
void WimaxRxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
WIMax receive trace function.
NodeCounterMap64 m_nodeWifiPhyTxDrop
node wifi Phy transmit drop
void LrWpanMacRxDropTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC receive drop trace function.
void Ipv4RxTrace(std::string context, Ptr< const Packet > p, Ptr< Ipv4 > ipv4, uint32_t interfaceIndex)
IPv4 receive trace function.
std::map< std::string, uint32_t > m_ipv4ToNodeIdMap
IPv4 to node ID map.
void WavePhyTxBeginTrace(std::string context, Ptr< const Packet > p)
WAVE Phy transmit begin trace function.
void UpdateNodeSize(uint32_t nodeId, double width, double height)
Helper function to update the size of a node.
virtual void Deserialize(TagBuffer i)
Deserialize function.
void WriteXmlAddNodeCounter(uint32_t counterId, std::string counterName, CounterType counterType)
Write XML add node counter function.
void ProcessRxBegin(Ptr< const NetDevice > nd, const double fbRx)
Process receive begin.
void ConnectLteEnb(Ptr< Node > n, Ptr< LteEnbNetDevice > nd, uint32_t devIndex)
Connect LTE ENB function.
std::string GetIpv4RoutingTable(Ptr< Node > n)
Get IPv4 routing table function.
void WriteXmlUpdateNodeSize(uint32_t nodeId, double width, double height)
Write XML update node size function.
void WriteXmlUpdateNodeColor(uint32_t nodeId, uint8_t r, uint8_t g, uint8_t b)
Write XML update node color function.
void WriteIpv6Addresses()
Write IPv6 Addresses function.
void SetStartTime(Time t)
Specify the time at which capture should start.
void SetStopTime(Time t)
Specify the time at which capture should stop.
std::vector< Ptr< Node > > GetMovedNodes()
Get moved nodes function.
LinkPropertiesMap m_linkProperties
link properties
Time m_queueCountersPollInterval
queue counters poll interval
void UpdateNodeColor(Ptr< Node > n, uint8_t r, uint8_t g, uint8_t b)
Helper function to update the node color.
void WriteXmlAddResource(uint32_t resourceId, std::string resourcePath)
Write XML add resource function.
void ResetAnimWriteCallback()
Reset the write callback function.
NodeCounterMap64 m_nodeWifiMacTx
node wifi MAC transmit
AnimWriteCallback m_writeCallback
write callback
void UanPhyGenTxTrace(std::string context, Ptr< const Packet >)
UAN Phy gen transmit trace function.
static void SetConstantPosition(Ptr< Node > n, double x, double y, double z=0)
Helper function to set Constant Position for a given node.
std::map< uint32_t, uint64_t > NodeCounterMap64
NodeCounterMap64 typedef.
void CheckMaxPktsPerTraceFile()
Check maximum packets per trace file function.
void AddToIpv6AddressNodeIdTable(std::string ipv6Address, uint32_t nodeId)
Add to IPv6 address node ID table function.
Reason why a packet has been dropped.
void ConnectLteUe(Ptr< Node > n, Ptr< LteUeNetDevice > nd, uint32_t devIndex)
Connect LTE ue function.
void WriteNodeColors()
Write node colors function.
std::map< uint32_t, Vector > m_nodeLocation
node location
Packet header for IPv4.
Definition: ipv4-header.h:33
std::multimap< uint32_t, std::string > NodeIdIpv6Map
NodeIdIpv6Map typedef.
void SetBackgroundImage(std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
Helper function to set the background image.
void LteRxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
LTE receive trace function.
uint32_t m_ipv4L3ProtocolRxCounterId
IPv4 L3 protocol receive counter ID.
void CsmaPhyRxEndTrace(std::string context, Ptr< const Packet > p)
CSMA Phy receive end trace function.
NodeIdIpv6Map m_nodeIdIpv6Map
node ID to IPv6 map
void RemainingEnergyTrace(std::string context, double previousEnergy, double currentEnergy)
Remaining energy trace function.
uint32_t m_wifiPhyTxDropCounterId
wifi Phy transmit drop counter ID
void WriteXmlClose(std::string name, bool routing=false)
Write XML close function.
void OutputWirelessPacketTxInfo(Ptr< const Packet > p, AnimPacketInfo &pktInfo, uint64_t animUid)
Output wireless packet transmit info.
int WriteN(const char *data, uint32_t count, FILE *f)
WriteN function.
void EnableWifiMacCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Wifi Mac Counters such as Tx, TxDrop, Rx, RxDrop.
void UpdateNodeCounter(uint32_t nodeCounterId, uint32_t nodeId, double counter)
Helper function to update a node&#39;s counter referenced by the nodeCounterId.
virtual TypeId GetInstanceTypeId(void) const
Get Instance Type Id.
uint32_t m_queueDropCounterId
queue drop counter ID
uint32_t AddNodeCounter(std::string counterName, CounterType counterType)
Setup a node counter.
Destructor for the animator interface.
AnimUidPacketInfoMap m_pendingWimaxPackets
pending wimax packets
std::vector< std::string > GetIpv4Addresses(Ptr< NetDevice > nd)
Get IPv4 addresses.
EnergyFractionMap m_nodeEnergyFraction
node energy fraction
bool m_trackPackets
track packets
void SkipPacketTracing()
Do not trace packets.
double startTime
uint8_t data[writeSize]
std::string GetNetAnimVersion()
Get netanim version function.
void WriteNodeUpdate(uint32_t nodeId)
Write node update function.
void RecursiveIpv4RoutePathSearch(std::string from, std::string to, Ipv4RoutePathElements &rpElements)
Recursive IPv4 route path search function.
void WriteXmlNonP2pLinkProperties(uint32_t id, std::string ipAddress, std::string channelType)
Write XML non P2P link properties function.
std::string m_outputFileName
output file name
FILE * m_f
File handle for output (0 if none)
void DequeueTrace(std::string context, Ptr< const Packet >)
Dequeue trace function.
NodeCounterMap64 m_nodeIpv4Drop
node IPv4 drop
void UanPhyGenRxTrace(std::string context, Ptr< const Packet >)
UAN Phy gen receive trace function.
std::pair< uint32_t, std::string > NodeIdIpv4Pair
NodeIdIpv4Pair typedef.
void WriteXmlP(std::string pktType, uint32_t fId, double fbTx, double lbTx, uint32_t tId, double fbRx, double lbRx, std::string metaInfo="")
Write XMLP function.
void StartAnimation(bool restart=false)
Start animation function.
void WriteXmlNode(uint32_t id, uint32_t sysId, double locX, double locY)
Write XML node function.
std::vector< Ipv4RoutePathElement > Ipv4RoutePathElements
Ipv4RoutePathElements typedef.
void Ipv4TxTrace(std::string context, Ptr< const Packet > p, Ptr< Ipv4 > ipv4, uint32_t interfaceIndex)
IPv4 transmit trace function.
AnimationInterface & EnableIpv4RouteTracking(std::string fileName, Time startTime, Time stopTime, Time pollInterval=Seconds(5))
Enable tracking of the Ipv4 routing table for all Nodes.
Time stopTime
void WifiPhyTxBeginTrace(std::string context, WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW)
wifi Phy transmit PSDU begin trace function
AnimXmlElement(std::string tagName, bool emptyElement=true)
AnimUidPacketInfoMap m_pendingLrWpanPackets
pending LR-WPAN packets
std::map< uint32_t, NodeSize > m_nodeSizes
node sizes
void WifiPhyTxDropTrace(std::string context, Ptr< const Packet > p)
wifi Phy transmit drop trace function
std::map< uint32_t, double > EnergyFractionMap
EnergyFractionMap typedef.
void WavePhyRxBeginTrace(std::string context, Ptr< const Packet > p)
WAVE Phy receive begin trace function.
void CsmaPhyTxEndTrace(std::string context, Ptr< const Packet > p)
CSMA Phy transmit end trace function.
std::string GetPacketMetadata(Ptr< const Packet > p)
Get packet metadata function.
Time m_wifiMacCountersPollInterval
wifi MAC counters poll interval
std::vector< std::string > m_resources
void WriteXmlIpv4Addresses(uint32_t nodeId, std::vector< std::string > ipv4Addresses)
Write XML Ipv4 addresses function.
NodeIdIpv4Map m_nodeIdIpv4Map
node ID to IPv4 map
void DevTxTrace(std::string context, Ptr< const Packet > p, Ptr< NetDevice > tx, Ptr< NetDevice > rx, Time txTime, Time rxTime)
Device transmit trace function.
Time m_wifiPhyCountersPollInterval
wifi Phy counters poll interval
double f(double x, void *params)
Definition: 80211b.c:70
tag a set of bytes in a packet
Definition: tag.h:36
NodeColorsMap m_nodeColors
node colors
void WriteXmlRouting(uint32_t id, std::string routingInfo)
Write XML routing function.
NodeCounterMap64 m_nodeLrWpanMacTxDrop
node LR-WPAN MAC transmit drop
void WriteXmlPRef(uint64_t animUid, uint32_t fId, double fbTx, std::string metaInfo="")
Write XMLP Ref function.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
uint32_t m_wifiMacRxDropCounterId
wifi MAC receive drop counter ID
std::vector< std::string > m_attributes
list of attributes
keep track of a set of node pointers.
void UpdateLinkDescription(uint32_t fromNode, uint32_t toNode, std::string linkDescription)
Helper function to update the description for a link.
void(* AnimWriteCallback)(const char *str)
typedef for WriteCallBack used for listening to AnimationInterface write messages ...
uint32_t AddResource(std::string resourcePath)
Add a resource such as the path to an image file.
ProtocolType enumeration.
uint64_t m_AnimUid
the UID
NodeCounterMap64 m_nodeLrWpanMacTx
node LR-WPAN MAC transmit
void ConnectCallbacks()
Connect callbacks function.
void SetMaxPktsPerTraceFile(uint64_t maxPktsPerFile)
Set Max packets per trace file.
bool NodeHasMoved(Ptr< Node > n, Vector newLocation)
Node has moved function.
void WriteNodeEnergies()
Write node energies function.
uint64_t gAnimUid
Packet unique identifier used by AnimationInterface.
std::vector< std::string > GetIpv6Addresses(Ptr< NetDevice > nd)
Get IPv6 addresses.
void AddToIpv4AddressNodeIdTable(std::string ipv4Address, uint32_t nodeId)
Add to IPv4 address node ID table function.
an EUI-48 address
Definition: mac48-address.h:43
Time m_routingPollInterval
routing poll interval
NodeCounterMap64 m_nodeQueueDrop
node queue drop
uint32_t m_wifiMacRxCounterId
wifi MAC receive counter ID
void LrWpanPhyRxBeginTrace(std::string context, Ptr< const Packet > p)
LR-WPAN Phy receive begin trace function.
AnimUidPacketInfoMap m_pendingLtePackets
pending LTE packets
void TrackWifiMacCounters()
Track wifi MAC counters function.
void EnablePacketMetadata(bool enable=true)
Enable Packet metadata.
std::map< uint64_t, AnimPacketInfo > AnimUidPacketInfoMap
AnimUidPacketInfoMap typedef.
void WriteXmlUpdateNodeDescription(uint32_t nodeId)
Write XML update node description function.
void AppendChild(AnimXmlElement e)
Append child function.
void EnqueueTrace(std::string context, Ptr< const Packet >)
Enqueue trace function.
Byte tag using by Anim to uniquely identify packets.
uint32_t m_wifiMacTxCounterId
wifi MAC transmit counter ID
void StopAnimation(bool onlyAnimation=false)
Stop animation function.
const std::vector< std::string > GetElementsFromContext(const std::string &context) const
Get elements from context.
void WriteXmlUpdateNodeCounter(uint32_t counterId, uint32_t nodeId, double value)
Write XML update node counter function.
AnimUidPacketInfoMap m_pendingWavePackets
pending WAVE packets
Vector UpdatePosition(Ptr< Node > n)
Update position function.
void LrWpanMacRxTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC receive trace function.
Ptr< const NetDevice > m_rxnd
receive device
virtual uint32_t GetSerializedSize(void) const
Get Serialized Size.
void WriteNodeSizes()
Write node sizes function.
double GetNodeEnergyFraction(Ptr< const Node > node) const
Get node&#39;s energy fraction (This used only for testing)
void GenericWirelessRxTrace(std::string context, Ptr< const Packet > p, ProtocolType protocolType)
Generic wireless receive trace function.
NodeCounterMap64 m_nodeIpv4Rx
node IPv4 receive
std::vector< Ipv4RouteTrackElement > m_ipv4RouteTrackElements
IPv route track elements.
NodeCounterMap64 m_nodeWifiMacRxDrop
node wifi MAC receive drop
void MobilityCourseChangeTrace(Ptr< const MobilityModel > mob)
Mobility course change trace function.
void WimaxTxTrace(std::string context, Ptr< const Packet > p, const Mac48Address &m)
WIMax transmit trace function.
read and write tag data
Definition: tag-buffer.h:51
NodeCounterMap64 m_nodeWifiPhyRxDrop
node wifi Phy receive drop
std::string m_routingFileName
routing file name
bool IsPacketPending(uint64_t animUid, ProtocolType protocolType)
Is packet pending function.
void SetText(std::string text)
Set text function.
std::multimap< uint32_t, std::string > NodeIdIpv4Map
NodeIdIpv4Map typedef.
uint32_t m_queueDequeueCounterId
queue dequeue counter ID
std::string GetMacAddress(Ptr< NetDevice > nd)
Get MAC address function.
NodeCounterMap64 m_nodeIpv4Tx
node IPv4 transmit
NodeCounterMap64 m_nodeWifiMacRx
node wifi MAC receive
AnimUidPacketInfoMap m_pendingUanPackets
pending UAN packets
static Rectangle * userBoundary
user boundary
std::string ProtocolTypeToString(ProtocolType protocolType)
Protocol type to string function.
void AddByteTag(uint64_t animUid, Ptr< const Packet > p)
Add byte tag function.
void ConnectLte()
Connect LTE function.
void WifiMacTxTrace(std::string context, Ptr< const Packet > p)
wifi MAC transmit trace function
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1289
void WriteXmlUpdateBackground(std::string fileName, double x, double y, double scaleX, double scaleY, double opacity)
Write XML update background function.
Interface to network animator.
void WriteNonP2pLinkProperties(uint32_t id, std::string ipv4Address, std::string channelType)
Write non P2P link properties function.
bool m_enablePacketMetadata
enable packet metadata
Ptr< const NetDevice > m_txnd
transmit device
uint32_t m_wifiMacTxDropCounterId
wifi MAC transmit drop counter ID
NodeCounterMap64 m_nodeLrWpanMacRx
node LR-WPAN MAC receive
Time m_wifiPhyCountersStopTime
wifi Phy counters stop time
void OutputWirelessPacketRxInfo(Ptr< const Packet > p, AnimPacketInfo &pktInfo, uint64_t animUid)
Output wireless packet receive info.
void LrWpanMacTxTrace(std::string context, Ptr< const Packet > p)
LR-WPAN MAC transmit trace function.
void Ipv4DropTrace(std::string context, const Ipv4Header &ipv4Header, Ptr< const Packet > p, Ipv4L3Protocol::DropReason dropReason, Ptr< Ipv4 > ipv4, uint32_t interfaceIndex)
IPv4 drop trace function.
void SetAnimWriteCallback(AnimWriteCallback cb)
Set a callback function to listen to AnimationInterface write events.
void SetMobilityPollInterval(Time t)
Set mobility poll interval:WARNING: setting a low interval can cause slowness.
std::map< uint32_t, Rgb > NodeColorsMap
NodeColorsMap typedef.
NodeCounterMap64 m_nodeQueueEnqueue
node queue enqueue
uint32_t m_wifiPhyRxDropCounterId
wifi Phy receive drop counter ID
Time m_wifiMacCountersStopTime
wifi MAC counters stop time
void LrWpanPhyTxBeginTrace(std::string context, Ptr< const Packet > p)
LR-WPAN Phy receive begin trace function.
virtual void Print(std::ostream &os) const
Print tag info.
void WriteRoutePath(uint32_t nodeId, std::string destination, Ipv4RoutePathElements rpElements)
Write route path function.
void WriteLinkProperties()
Write link properties function.
Time m_mobilityPollInterval
mobility poll interval
Definition: first.py:1
bool IsStarted(void)
Is AnimationInterface started.
void EnableIpv4L3ProtocolCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Ipv4 L3 Protocol Counters such as Tx, Rx, Drop.
AnimUidPacketInfoMap * ProtocolTypeToPendingPackets(ProtocolType protocolType)
Protocol type to pending packets function.
void EnableQueueCounters(Time startTime, Time stopTime, Time pollInterval=Seconds(1))
Enable tracking of Queue Counters such as Enqueue, Dequeue, Queue Drops.
void AddAttribute(std::string attribute, T value, bool xmlEscape=false)
Add attribute function.
uint32_t m_remainingEnergyCounterId
remaining energy counter ID
void WriteIpv4Addresses()
Write IPv4 Addresses function.
Vector GetPosition(Ptr< Node > n)
Get position function.
bool IsInTimeWindow()
Is in time window function.
a unique identifier for an interface.
Definition: type-id.h:58
NodeCounterMap64 m_nodeWifiMacTxDrop
node wifi MAC transmit drop
a 2d rectangle
Definition: rectangle.h:34
std::vector< std::string > m_nodeCounters
node counters
void UpdateNodeDescription(Ptr< Node > n, std::string descr)
Helper function to update the description for a given node.
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
Map of const PSDUs indexed by STA-ID.
void OutputCsmaPacket(Ptr< const Packet > p, AnimPacketInfo &pktInfo)
Output CSMA packet function.
Time m_routingStopTime
routing stop time
uint32_t m_ipv4L3ProtocolDropCounterId
IPv4 protocol drop counter ID.
Ptr< Node > GetNodeFromContext(const std::string &context) const
Get node from context.
std::map< WifiSpectrumBand, double > RxPowerWattPerChannelBand
A map of the received power (Watts) for each band.
Definition: phy-entity.h:75
Time m_queueCountersStopTime
queue counters stop time
void SetOutputFile(const std::string &fn, bool routing=false)
Set output file function.
void LteSpectrumPhyTxStart(std::string context, Ptr< const PacketBurst > pb)
LTE Spectrum Phy transmit start function.
AnimUidPacketInfoMap m_pendingCsmaPackets
pending CSMA packets
void WifiMacRxDropTrace(std::string context, Ptr< const Packet > p)
wifi MAC receive drop trace function
void WriteXmlLink(uint32_t fromId, uint32_t toLp, uint32_t toId)
Write XML link counter function.
std::string m_originalFileName
original file name
void TrackIpv4Route()
Track IPv4 router function.