This project is an external module for the ns-3 network simulator, implementing basic functionality of the Open Shortest Path First Version 2 (OSPFv2) routing protocol as defined in RFC 2328. This module is targetted for ns-3 version 3.35. Area Routing will be based on IS-IS abstraction.
This software is licensed under the terms of the GNU General Public License v2.0 only (GPL-2.0-only). See the LICENSE file for more details.
- Basic OSPF functionality for point-to-point routers
- Data synchronization and flooding procedures
- Link State Updates subject to flooding contain only one Link State Advertisement (LSA) each.
- Link State Updates serving as implicit acknowledgments to Link State Requests may contain multiple LSAs, up to the specified MTU.
- Link State Updates received within a short time window are not aggregated.
- Authentication is not implemented.
- Inter-AS routing is not implemented.
- Broadcast networks are not supported.
- Area routing is not implemented.
- Network devices added after the OSPF application starts are not dynamically registered.
Ensure you have ns-3 version 3.35 installed. You can follow this installation guide to set up prerequisites.
Clone and checkout ns-3 version 3.35:
git clone https://gitlab.com/nsnam/ns-3-dev.git
cd ns-3-dev
git checkout -b ns-3.35-branch ns-3.35
Place this repository in ns-3's /contrib
directory as /contrib/ospf
:
cd contrib
git clone git@github.com:markverick/ns3-ospf.git ospf
Run an example with ns-3 logging:
NS_LOG="OspfApp" ./waf --run=ospf-metric
Resulting PCAP files and routing tables can be found in /results/<example>/
.
For debugging with gdb:
NS_LOG="OspfInterface:OspfNeighbor" ./waf --run=ospf-metric --gdb
If you would like to report an issue, you can open a new issue in the GitLab issue tracker. Before creating a new issue, please check if the problem that you are facing was already reported and contribute to the discussion, if necessary.