ns3::GlobalRouteManager Class Reference

A global global router. More...

#include <global-route-manager.h>

List of all members.

Static Public Member Functions

static void PopulateRoutingTables ()
 Build a routing database and initialize the routing tables of the nodes in the simulation. Makes all nodes in the simulation into routers.
static void PopulateRoutingTables (NodeContainer c)
 Build a routing database and initialize the routing tables of the nodes in the simulation. Makes the nodes in the provided container into routers.
static void RecomputeRoutingTables ()
 Remove all routes that were previously installed in a prior call to either PopulateRoutingTables() or RecomputeRoutingTables(), and add a new set of routes.
static void DeleteGlobalRoutes ()
 Delete all static routes on all nodes that have a GlobalRouterInterface.
static void SelectRouterNodes ()
 Select which nodes in the system are to be router nodes and aggregate the appropriate interfaces onto those nodes.
static void SelectRouterNodes (NodeContainer c)
 Select which nodes in the system are to be router nodes and aggregate the appropriate interfaces onto those nodes.
static uint32_t AllocateRouterId ()
 Allocate a 32-bit router ID from monotonically increasing counter.

Private Member Functions

 GlobalRouteManager (GlobalRouteManager &srm)
 Global Route Manager copy construction is disallowed. There's no need for it and a compiler provided shallow copy would be wrong.
GlobalRouteManageroperator= (GlobalRouteManager &srm)
 Global Router copy assignment operator is disallowed. There's no need for it and a compiler provided shallow copy would be wrong.

Static Private Member Functions

static void BuildGlobalRoutingDatabase ()
 Build the routing database by gathering Link State Advertisements from each node exporting a GlobalRouter interface.
static void InitializeRoutes ()
 Compute routes using a Dijkstra SPF computation and populate per-node forwarding tables.

Detailed Description

A global global router.

This singleton object can query interface each node in the system for a GlobalRouter interface. For those nodes, it fetches one or more Link State Advertisements and stores them in a local database. Then, it can compute shortest paths on a per-node basis to all routers, and finally configure each of the node's forwarding tables.

The design is guided by OSPFv2 RFC 2328 section 16.1.1 and quagga ospfd.

Definition at line 40 of file global-route-manager.h.


Constructor & Destructor Documentation

ns3::GlobalRouteManager::GlobalRouteManager ( GlobalRouteManager srm  )  [private]

Global Route Manager copy construction is disallowed. There's no need for it and a compiler provided shallow copy would be wrong.


Member Function Documentation

uint32_t ns3::GlobalRouteManager::AllocateRouterId ( void   )  [static]

Allocate a 32-bit router ID from monotonically increasing counter.

Definition at line 94 of file global-route-manager.cc.

Referenced by ns3::GlobalRouter::GlobalRouter().

void ns3::GlobalRouteManager::BuildGlobalRoutingDatabase ( void   )  [static, private]

Build the routing database by gathering Link State Advertisements from each node exporting a GlobalRouter interface.

Definition at line 80 of file global-route-manager.cc.

References ns3::TimeStepPrecision::Get().

Referenced by PopulateRoutingTables(), and RecomputeRoutingTables().

void ns3::GlobalRouteManager::DeleteGlobalRoutes (  )  [static]

Delete all static routes on all nodes that have a GlobalRouterInterface.

Definition at line 59 of file global-route-manager.cc.

References ns3::TimeStepPrecision::Get().

Referenced by RecomputeRoutingTables().

void ns3::GlobalRouteManager::InitializeRoutes ( void   )  [static, private]

Compute routes using a Dijkstra SPF computation and populate per-node forwarding tables.

Definition at line 87 of file global-route-manager.cc.

References ns3::TimeStepPrecision::Get().

Referenced by PopulateRoutingTables(), and RecomputeRoutingTables().

GlobalRouteManager& ns3::GlobalRouteManager::operator= ( GlobalRouteManager srm  )  [private]

Global Router copy assignment operator is disallowed. There's no need for it and a compiler provided shallow copy would be wrong.

void ns3::GlobalRouteManager::PopulateRoutingTables ( NodeContainer  c  )  [static]

Build a routing database and initialize the routing tables of the nodes in the simulation. Makes the nodes in the provided container into routers.

All this function does is call the three functions SelectRouterNodes (), BuildGlobalRoutingDatabase (), and InitializeRoutes ().

See also:
SelectRouterNodes (Node Container c);
BuildGlobalRoutingDatabase ();
InitializeRoutes ();

Definition at line 43 of file global-route-manager.cc.

References BuildGlobalRoutingDatabase(), InitializeRoutes(), and SelectRouterNodes().

void ns3::GlobalRouteManager::PopulateRoutingTables ( void   )  [static]

Build a routing database and initialize the routing tables of the nodes in the simulation. Makes all nodes in the simulation into routers.

All this function does is call the three functions SelectRouterNodes (), BuildGlobalRoutingDatabase (), and InitializeRoutes ().

See also:
SelectRouterNodes ();
BuildGlobalRoutingDatabase ();
InitializeRoutes ();

Definition at line 35 of file global-route-manager.cc.

References BuildGlobalRoutingDatabase(), InitializeRoutes(), and SelectRouterNodes().

void ns3::GlobalRouteManager::RecomputeRoutingTables (  )  [static]

Remove all routes that were previously installed in a prior call to either PopulateRoutingTables() or RecomputeRoutingTables(), and add a new set of routes.

This method does not change the set of nodes over which GlobalRouting is being used, but it will dynamically update its representation of the global topology before recomputing routes. Users must first call PopulateRoutingTables() and then may subsequently call RecomputeRoutingTables() at any later time in the simulation.

See also:
DeleteGlobalRoutes ();
BuildGlobalRoutingDatabase ();
InitializeRoutes ();

Definition at line 51 of file global-route-manager.cc.

References BuildGlobalRoutingDatabase(), DeleteGlobalRoutes(), and InitializeRoutes().

void ns3::GlobalRouteManager::SelectRouterNodes ( NodeContainer  c  )  [static]

Select which nodes in the system are to be router nodes and aggregate the appropriate interfaces onto those nodes.

Definition at line 73 of file global-route-manager.cc.

References ns3::TimeStepPrecision::Get(), and SelectRouterNodes().

void ns3::GlobalRouteManager::SelectRouterNodes ( void   )  [static]

Select which nodes in the system are to be router nodes and aggregate the appropriate interfaces onto those nodes.

Definition at line 66 of file global-route-manager.cc.

References ns3::TimeStepPrecision::Get().

Referenced by PopulateRoutingTables(), and SelectRouterNodes().


The documentation for this class was generated from the following files:
Generated on Thu Dec 3 14:12:11 2009 for NS-3 by  doxygen 1.6.3