Interface with BRITE, the Boston university Representative Internet Topology gEnerator. More...
#include "brite-topology-helper.h"
Classes | |
struct | BriteEdgeInfo |
Edge information from BRITE. More... | |
struct | BriteNodeInfo |
Node information from BRITE. More... | |
Public Member Functions | |
BriteTopologyHelper (std::string confFile, std::string seedFile, std::string newseedFile) | |
Construct a BriteTopologyHelper. More... | |
BriteTopologyHelper (std::string confFile) | |
Construct a BriteTopologyHelper using NS3 to generate seed values need by BRITE. More... | |
~BriteTopologyHelper () | |
void | AssignIpv4Addresses (Ipv4AddressHelper &address) |
void | AssignIpv6Addresses (Ipv6AddressHelper &address) |
void | AssignStreams (int64_t streamNumber) |
Assigns stream number to UniformRandomVariable used to generate brite seed file. More... | |
void | BuildBriteTopology (InternetStackHelper &stack) |
Create NS3 topology using information generated from BRITE. More... | |
void | BuildBriteTopology (InternetStackHelper &stack, const uint32_t systemCount) |
Create NS3 topology using information generated from BRITE and configure topology for MPI use. More... | |
Ptr< Node > | GetLeafNodeForAs (uint32_t asNum, uint32_t leafNum) |
Returns a given router leaf node from a given AS. More... | |
uint32_t | GetNAs (void) const |
Returns the number of AS created in the topology. More... | |
uint32_t | GetNEdgesTopology () const |
Returns the number of edges created within the topology. More... | |
uint32_t | GetNLeafNodesForAs (uint32_t asNum) |
Returns the number of router leaf nodes for a given AS. More... | |
uint32_t | GetNNodesForAs (uint32_t asNum) |
Returns the total number of nodes for a given AS. More... | |
uint32_t | GetNNodesTopology () const |
Returns the number of nodes created within the topology. More... | |
Ptr< Node > | GetNodeForAs (uint32_t asNum, uint32_t nodeNum) |
Returns a given router node for a given AS. More... | |
uint32_t | GetSystemNumberForAs (uint32_t asNum) const |
Returns the system number for the MPI instance that this AS is assigned to. More... | |
Private Member Functions | |
void | BuildBriteEdgeInfoList (void) |
void | BuildBriteNodeInfoList (void) |
void | ConstructTopology (void) |
void | GenerateBriteTopology (void) |
Private Attributes | |
std::vector< NodeContainer * > | m_asLeafNodes |
stores the leaf router nodes for each AS More... | |
PointToPointHelper | m_britePointToPointHelper |
used to create the links within the topology More... | |
std::string | m_confFile |
brite configuration file to use More... | |
std::vector< NetDeviceContainer * > | m_netDevices |
stores the netdevices created for each AS More... | |
std::string | m_newSeedFile |
brite seed file to generate for next run More... | |
NodeContainer | m_nodes |
std::vector< NodeContainer * > | m_nodesByAs |
stores all of the nodes in the brite topology by AS number More... | |
uint32_t | m_numAs |
stores the number of AS in the BRITE generated topology More... | |
uint32_t | m_numEdges |
stores the number of edges created in the BRITE topology More... | |
uint32_t | m_numNodes |
stores the number of nodes created in the BRITE topology More... | |
std::string | m_seedFile |
brite seed file to use More... | |
std::vector< int > | m_systemForAs |
stores the MPI system number each AS assigned to. All assigned to 0 if MPI not used. More... | |
brite::Topology * | m_topology |
the Brite topology More... | |
Ptr< UniformRandomVariable > | m_uv |
random variable stream for brite seed file More... | |
Static Private Attributes | |
static const int | mbpsToBps = 1000000 |
typedef std::vector< BriteNodeInfo > | BriteNodeInfoList |
The BRITE code generates multiple nodes and edges. More... | |
typedef std::vector< BriteEdgeInfo > | BriteEdgeInfoList |
The BRITE code generates multiple nodes and edges. More... | |
BriteNodeInfoList | m_briteNodeInfoList |
The BRITE code generates multiple nodes and edges. More... | |
BriteEdgeInfoList | m_briteEdgeInfoList |
The BRITE code generates multiple nodes and edges. More... | |
Interface with BRITE, the Boston university Representative Internet Topology gEnerator.
This helper class creates an interface with BRITE and allows the user to easily create ns-3 topologies from BRITE generated graphs. This class accepts a BRITE configuration and seed file, much like the stand-alone BRITE software. Using these files, BRITE generates a graph which is stored herein. ns-3 examples can then grab the BRITE generated nodes and edges from this helper and create ns-3 specific topologies.
Definition at line 59 of file brite-topology-helper.h.
|
private |
The BRITE code generates multiple nodes and edges.
Each node and edge is stored in a BriteNodeInfo or BriteEdgeInfo struct, and each instance is stored in a vector.
Definition at line 279 of file brite-topology-helper.h.
|
private |
The BRITE code generates multiple nodes and edges.
Each node and edge is stored in a BriteNodeInfo or BriteEdgeInfo struct, and each instance is stored in a vector.
Definition at line 278 of file brite-topology-helper.h.
ns3::BriteTopologyHelper::BriteTopologyHelper | ( | std::string | confFile, |
std::string | seedFile, | ||
std::string | newseedFile | ||
) |
Construct a BriteTopologyHelper.
confFile | a BRITE configuration file |
seedFile | a BRITE seed file |
newseedFile | a BRITE seed file with newly generated values |
Definition at line 37 of file brite-topology-helper.cc.
References m_uv, and NS_LOG_FUNCTION.
ns3::BriteTopologyHelper::BriteTopologyHelper | ( | std::string | confFile | ) |
Construct a BriteTopologyHelper using NS3 to generate seed values need by BRITE.
Definition at line 54 of file brite-topology-helper.cc.
References m_uv, and NS_LOG_FUNCTION.
ns3::BriteTopologyHelper::~BriteTopologyHelper | ( | ) |
Definition at line 67 of file brite-topology-helper.cc.
References m_asLeafNodes, m_netDevices, m_nodesByAs, m_topology, and NS_LOG_FUNCTION.
void ns3::BriteTopologyHelper::AssignIpv4Addresses | ( | Ipv4AddressHelper & | address | ) |
address | an Ipv4AddressHelper which is used to install Ipv4 addresses on all the node interfaces in the topology |
Definition at line 420 of file brite-topology-helper.cc.
References first::address, m_netDevices, and NS_LOG_FUNCTION.
Referenced by BriteTopologyFunctionTestCase::DoRun().
void ns3::BriteTopologyHelper::AssignIpv6Addresses | ( | Ipv6AddressHelper & | address | ) |
network | an IPv6 address representing the network portion of the IPv6 Address |
prefix | the prefix length |
Definition at line 432 of file brite-topology-helper.cc.
References first::address, m_netDevices, and NS_LOG_FUNCTION.
void ns3::BriteTopologyHelper::AssignStreams | ( | int64_t | streamNumber | ) |
Assigns stream number to UniformRandomVariable used to generate brite seed file.
streamNumber | the stream number to assign |
Definition at line 92 of file brite-topology-helper.cc.
References m_uv, and ns3::RandomVariableStream::SetStream().
Referenced by BriteTopologyStructureTestCase::DoRun().
|
private |
Definition at line 183 of file brite-topology-helper.cc.
References ns3::BriteTopologyHelper::BriteEdgeInfo::asFrom, ns3::BriteTopologyHelper::BriteEdgeInfo::asTo, ns3::BriteTopologyHelper::BriteEdgeInfo::bandwidth, ns3::BriteTopologyHelper::BriteEdgeInfo::delay, ns3::BriteTopologyHelper::BriteEdgeInfo::destId, ns3::BriteTopologyHelper::BriteEdgeInfo::edgeId, ns3::BriteTopologyHelper::BriteEdgeInfo::length, m_briteEdgeInfoList, m_topology, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::BriteTopologyHelper::BriteEdgeInfo::srcId, and ns3::BriteTopologyHelper::BriteEdgeInfo::type.
Referenced by GenerateBriteTopology().
|
private |
Definition at line 98 of file brite-topology-helper.cc.
References ns3::BriteTopologyHelper::BriteNodeInfo::asId, ns3::BriteTopologyHelper::BriteNodeInfo::inDegree, m_briteNodeInfoList, m_numAs, m_topology, ns3::BriteTopologyHelper::BriteNodeInfo::nodeId, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::BriteTopologyHelper::BriteNodeInfo::outDegree, ns3::BriteTopologyHelper::BriteNodeInfo::type, ns3::BriteTopologyHelper::BriteNodeInfo::xCoordinate, and ns3::BriteTopologyHelper::BriteNodeInfo::yCoordinate.
Referenced by GenerateBriteTopology().
void ns3::BriteTopologyHelper::BuildBriteTopology | ( | InternetStackHelper & | stack | ) |
Create NS3 topology using information generated from BRITE.
stack | Internet stack to assign to nodes in topology |
Definition at line 365 of file brite-topology-helper.cc.
References ConstructTopology(), ns3::NodeContainer::Create(), GenerateBriteTopology(), m_briteNodeInfoList, m_nodes, m_numAs, m_numNodes, m_systemForAs, NS_LOG_DEBUG, NS_LOG_FUNCTION, and first::stack.
Referenced by BriteTopologyStructureTestCase::DoRun(), and BriteTopologyFunctionTestCase::DoRun().
void ns3::BriteTopologyHelper::BuildBriteTopology | ( | InternetStackHelper & | stack, |
const uint32_t | systemCount | ||
) |
Create NS3 topology using information generated from BRITE and configure topology for MPI use.
stack | Internet stack to assign to nodes in topology. |
systemCount | The number of MPI instances to be used in the simulation. |
Definition at line 390 of file brite-topology-helper.cc.
References ns3::NodeContainer::Add(), ConstructTopology(), GenerateBriteTopology(), GetSystemNumberForAs(), m_briteNodeInfoList, m_nodes, m_numAs, m_numNodes, m_systemForAs, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_LOGIC(), and first::stack.
|
private |
Definition at line 444 of file brite-topology-helper.cc.
References ns3::NodeContainer::Get(), ns3::PointToPointHelper::Install(), m_asLeafNodes, m_briteEdgeInfoList, m_briteNodeInfoList, m_britePointToPointHelper, m_netDevices, m_nodes, m_nodesByAs, m_numAs, m_numEdges, mbpsToBps, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::Seconds(), ns3::PointToPointHelper::SetChannelAttribute(), and ns3::PointToPointHelper::SetDeviceAttribute().
Referenced by BuildBriteTopology().
|
private |
Definition at line 318 of file brite-topology-helper.cc.
References BuildBriteEdgeInfoList(), BuildBriteNodeInfoList(), ns3::RandomVariableStream::GetInteger(), m_confFile, m_newSeedFile, m_seedFile, m_topology, m_uv, NS_ASSERT, NS_ASSERT_MSG(), and NS_LOG_LOGIC().
Referenced by BuildBriteTopology().
Returns a given router leaf node from a given AS.
asNum | the AS number |
leafNum | the leaf number |
Definition at line 271 of file brite-topology-helper.cc.
References m_asLeafNodes.
uint32_t ns3::BriteTopologyHelper::GetNAs | ( | void | ) | const |
Returns the number of AS created in the topology.
Definition at line 307 of file brite-topology-helper.cc.
References m_numAs.
Referenced by BriteTopologyStructureTestCase::DoRun().
uint32_t ns3::BriteTopologyHelper::GetNEdgesTopology | ( | ) | const |
Returns the number of edges created within the topology.
Definition at line 301 of file brite-topology-helper.cc.
References m_numEdges.
Referenced by BriteTopologyStructureTestCase::DoRun().
uint32_t ns3::BriteTopologyHelper::GetNLeafNodesForAs | ( | uint32_t | asNum | ) |
Returns the number of router leaf nodes for a given AS.
asNum | the AS number |
Definition at line 289 of file brite-topology-helper.cc.
References m_asLeafNodes.
Referenced by BriteTopologyStructureTestCase::DoRun().
uint32_t ns3::BriteTopologyHelper::GetNNodesForAs | ( | uint32_t | asNum | ) |
Returns the total number of nodes for a given AS.
asNum | the AS number |
Definition at line 283 of file brite-topology-helper.cc.
References m_nodesByAs.
Referenced by BriteTopologyFunctionTestCase::DoRun().
uint32_t ns3::BriteTopologyHelper::GetNNodesTopology | ( | ) | const |
Returns the number of nodes created within the topology.
Definition at line 295 of file brite-topology-helper.cc.
References m_numNodes.
Referenced by BriteTopologyStructureTestCase::DoRun().
Returns a given router node for a given AS.
asNum | the AS number |
Definition at line 277 of file brite-topology-helper.cc.
References m_nodesByAs.
Referenced by BriteTopologyFunctionTestCase::DoRun().
uint32_t ns3::BriteTopologyHelper::GetSystemNumberForAs | ( | uint32_t | asNum | ) | const |
Returns the system number for the MPI instance that this AS is assigned to.
Will always return 0 if MPI not used
param asNum The AS Number
Definition at line 313 of file brite-topology-helper.cc.
References m_systemForAs.
Referenced by BuildBriteTopology().
|
private |
stores the leaf router nodes for each AS
Definition at line 255 of file brite-topology-helper.h.
Referenced by ConstructTopology(), GetLeafNodeForAs(), GetNLeafNodesForAs(), and ~BriteTopologyHelper().
|
private |
The BRITE code generates multiple nodes and edges.
Each node and edge is stored in a BriteNodeInfo or BriteEdgeInfo struct, and each instance is stored in a vector.
Definition at line 282 of file brite-topology-helper.h.
Referenced by BuildBriteEdgeInfoList(), and ConstructTopology().
|
private |
The BRITE code generates multiple nodes and edges.
Each node and edge is stored in a BriteNodeInfo or BriteEdgeInfo struct, and each instance is stored in a vector.
Definition at line 281 of file brite-topology-helper.h.
Referenced by BuildBriteNodeInfoList(), BuildBriteTopology(), and ConstructTopology().
|
private |
used to create the links within the topology
Definition at line 286 of file brite-topology-helper.h.
Referenced by ConstructTopology().
|
private |
brite configuration file to use
Definition at line 240 of file brite-topology-helper.h.
Referenced by GenerateBriteTopology().
|
private |
stores the netdevices created for each AS
Definition at line 252 of file brite-topology-helper.h.
Referenced by AssignIpv4Addresses(), AssignIpv6Addresses(), ConstructTopology(), and ~BriteTopologyHelper().
|
private |
brite seed file to generate for next run
Definition at line 246 of file brite-topology-helper.h.
Referenced by GenerateBriteTopology().
|
private |
Definition at line 232 of file brite-topology-helper.h.
Referenced by BuildBriteTopology(), and ConstructTopology().
|
private |
stores all of the nodes in the brite topology by AS number
Definition at line 258 of file brite-topology-helper.h.
Referenced by ConstructTopology(), GetNNodesForAs(), GetNodeForAs(), and ~BriteTopologyHelper().
|
private |
stores the number of AS in the BRITE generated topology
Definition at line 249 of file brite-topology-helper.h.
Referenced by BuildBriteNodeInfoList(), BuildBriteTopology(), ConstructTopology(), and GetNAs().
|
private |
stores the number of edges created in the BRITE topology
Definition at line 270 of file brite-topology-helper.h.
Referenced by ConstructTopology(), and GetNEdgesTopology().
|
private |
stores the number of nodes created in the BRITE topology
Definition at line 267 of file brite-topology-helper.h.
Referenced by BuildBriteTopology(), and GetNNodesTopology().
|
private |
brite seed file to use
Definition at line 243 of file brite-topology-helper.h.
Referenced by GenerateBriteTopology().
|
private |
stores the MPI system number each AS assigned to. All assigned to 0 if MPI not used.
Definition at line 261 of file brite-topology-helper.h.
Referenced by BuildBriteTopology(), and GetSystemNumberForAs().
|
private |
the Brite topology
Definition at line 264 of file brite-topology-helper.h.
Referenced by BuildBriteEdgeInfoList(), BuildBriteNodeInfoList(), GenerateBriteTopology(), and ~BriteTopologyHelper().
|
private |
random variable stream for brite seed file
Definition at line 289 of file brite-topology-helper.h.
Referenced by AssignStreams(), BriteTopologyHelper(), and GenerateBriteTopology().
|
staticprivate |
Definition at line 191 of file brite-topology-helper.h.
Referenced by ConstructTopology().