A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
global-route-manager.h
Go to the documentation of this file.
1/*
2 * Copyright 2007 University of Washington
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Authors: Craig Dowell (craigdo@ee.washington.edu)
7 * Tom Henderson (tomhend@u.washington.edu)
8 */
9
10#ifndef GLOBAL_ROUTE_MANAGER_H
11#define GLOBAL_ROUTE_MANAGER_H
12
13#include <cstdint>
14
15namespace ns3
16{
17
18/**
19 * \ingroup globalrouting
20 *
21 * @brief A global global router
22 *
23 * This singleton object can query interface each node in the system
24 * for a GlobalRouter interface. For those nodes, it fetches one or
25 * more Link State Advertisements and stores them in a local database.
26 * Then, it can compute shortest paths on a per-node basis to all routers,
27 * and finally configure each of the node's forwarding tables.
28 *
29 * The design is guided by OSPFv2 \RFC{2328} section 16.1.1 and quagga ospfd.
30 */
32{
33 public:
34 // Delete copy constructor and assignment operator to avoid misuse
37
38 /**
39 * @brief Allocate a 32-bit router ID from monotonically increasing counter.
40 * @returns A new new RouterId.
41 */
43
44 /**
45 * @brief Delete all static routes on all nodes that have a
46 * GlobalRouterInterface
47 *
48 */
49 static void DeleteGlobalRoutes();
50
51 /**
52 * @brief Build the routing database by gathering Link State Advertisements
53 * from each node exporting a GlobalRouter interface.
54 */
55 static void BuildGlobalRoutingDatabase();
56
57 /**
58 * @brief Compute routes using a Dijkstra SPF computation and populate
59 * per-node forwarding tables
60 */
61 static void InitializeRoutes();
62};
63
64} // namespace ns3
65
66#endif /* GLOBAL_ROUTE_MANAGER_H */
A global global router.
static void DeleteGlobalRoutes()
Delete all static routes on all nodes that have a GlobalRouterInterface.
GlobalRouteManager(const GlobalRouteManager &)=delete
static uint32_t AllocateRouterId()
Allocate a 32-bit router ID from monotonically increasing counter.
static void InitializeRoutes()
Compute routes using a Dijkstra SPF computation and populate per-node forwarding tables.
static void BuildGlobalRoutingDatabase()
Build the routing database by gathering Link State Advertisements from each node exporting a GlobalRo...
GlobalRouteManager & operator=(const GlobalRouteManager &)=delete
Every class exported by the ns3 library is enclosed in the ns3 namespace.