-
Notifications
You must be signed in to change notification settings - Fork 15
Features
Netdim is a network modeling and automation software.
A network in NetDim is made of network devices (routers, optical switches, antennas, etc) and links. There are four layers of links:
- the physical layer: ethernet and optical (WDM) links
- the layer 2 (optical channel (OCh), LACP LAG)
- the layer 3 (pseudowires (L3 VPN), BGP peering)
- the traffic layer (links carrying a traffic flow in Mbps)
Devices can be grouped together in an Autonomous System (AS). An AS is a set of devices exchanging routing and signalization messages to carry the incoming traffic. The path of a traffic flow inside an AS depends on the protocol of the AS. The three main IGP have been implemented so far: RIP, OSPF, and IS-IS.
The first step to network modelization is graph visualization. One way to visualize a network is to locate all devices on a map. However, this can only be done if we have all GPS coordinates: it is rarely the case. Instead, NetDim relies on graph visualization algorithms to display the network. Two spring-layout algorithms are implemented:
- Eades algorithm
- Fructherman-Reingold algorithm
On a 4-layer deep tree which nodes are initially drawn at a random position on the canvas, the algorithm converges within a few seconds to a visually pleasing tree shape.
Projects are saved in an Excel file. An Excel can also be created to import an existing network into NetDim.
Nodes and trunks can be added to an AS by selecting them on the canvas, with the right-click menu. The AS topology is displayed in the "AS Management" panel. This window is also used to create and manage areas. Routes are created between every couple of "edge nodes", in order to prevent the creation of too many routes.
Four algorithms have been implemented to find the shortest path between two devices:
- Dijkstra algorithm
- Bellman-Ford algorithm
- Floyd-Warshall algorithm
- Shortest path with linear programming (GLPK)
However, a shortest path algorithm is not enough to find the path of a traffic flow inside a network, because:
- a router is capable of load-balancing the traffic among several equal (OSPF) or unequal (IS-IS, EIGRP) cost paths.
- multi-area topologies can lead to suboptimal routing:
- In IS-IS, an L1 router sends all traffic to the closest L1/L2 router, even though there could be a shorter path (in terms of metric) if there are multiple L1/L2 routers in the starting area.
- In OSPF, intra-area routes are always favored over inter-area routes, even when inter-area routes happen to be the shortest. An ABR can advertize the wrong cost to other routers, which results in "area hijacking".
I've come to the conclusion that the only way to properly route flows in a network is to bring the model as close to real-life routing as possible:
- First, Netdim automatically assigns IP addresses and interfaces to all routers.
- For each device, a switching / routing table is created to associate a destination address to an exit interface.
There are 4 layers in NetDim: the physical layer (Ethernet and optical links), the layer 2 (optical channel, LACP LAG), the layer 3 (pseudowire, BGP peering) and the traffic layer (traffic links). In order to enhance network visualization, it is possible to have a per-layer view of the network. Nodes are drawn at all 4 layers, and connected with a dashed line to further improve the display.
Once traffic links are created, they are routed on the trunks. The resulting traffic flow is computed for all for all interfaces. In the following example, the router load-balance the traffic on four equal-cost multi-path.
It is possible to simulate the failure of one or several devices and see how it impacts the network routing and dimensioning. A trunk can be set "in failure" from the right-click menu. For the failure to be considered, it is required to trigger the update of all routing tables, then route the traffic flows. On the same example as above, we see that the router is now load-balancing the traffic on two paths only, and the total traffic flow is computed accordingly.
After an AS is created, Netdim shows all Cisco commands required to properly configure the protocol on the device. This information can in turn be used along with network simulator like GNS3 to learn how to configure a network.
The transportation problem consists in finding the best way to carry traffic flows through the network. It has a number of variations (maximum flow, minimum-cost flow, traffic-demand constrained flow, etc). Four methods were implemented to solve the transportation problem:
- Ford-Fulkerson algorithm
- Edmond-Karps algorithm
- Dinic algorithm
- Linear programming with GLPK
In an optical-bypass enabled network, a wavelength can cross an optical switch without Optical-Electrical-Optical (OEO) conversion. While this is a step forward towards cheaper and "greener" networks, a trade-off is that there has to be an end-to-end "wavelength continuity": a wavelength stays the same from the source edge to the destination edge, and it cannot be used by different lightpaths on the same optical fiber.
In the following example, there are 3 paths. If there is a transponder at "node2" to take care of the wavelength conversion, we need only two wavelengths overall: we can assign a wavelength M to traffic3, N to traffic4, and traffic5 will first use N from node1 to node2, then M from node2 to node3. However, in an optical-bypass enabled network, there can be no OEO conversion at node2: the number of wavelengths we need depends how we assign them. If we assign M to traffic3 and N to traffic4, we will have to use a third wavelength for traffic5, since M and N are already used. However, we could assign M to both traffic3 and traffic4, which leaves N free to use for traffic5: the minimal number of wavelengths required is 2.
The wavelength allocation problem consists in finding the minimum number of wavelengths that are required, and how to allocate them to lightpaths. This problem can be solved with linear programming.