This project presents a fully-featured simulator for the Border Gateway Protocol (BGP), specifically designed for modeling inter-AS (Autonomous System) routing in a scalable and customizable environment. Each router operates as an independent Docker container, ensuring modularity, flexibility, and ease of deployment. The simulator integrates essential BGP functionalities, error simulation, and an innovative trust-based voting mechanism to enhance routing decisions.
- Customizable Topology: Easily define network links and routing policies for each simulation.
- Dynamic Routing Tables: Automatically constructs and updates routing tables to reflect topology changes.
- Comprehensive BGP Message Support: Includes
KEEPALIVE
, UPDATE, and error messages. - Trust-Based Routing: Incorporates direct and neighbor-voted trust metrics to influence routing decisions.
- Error Simulation: Allows testing of failure scenarios, such as router outages and link drops.
- Modular Design: A Docker-based architecture facilitates easy scaling and maintenance.
Clone the project repository to your local system:
git clone <https://github.com/FrancescaCapra/bgp-simulator.git>
cd bgp-simulator
Build the Docker images for the BGP routers using:
docker-compose build
Start the simulation with:
docker-compose up
Stop the simulation and clean up resources using:
docker-compose down
Router settings are defined in the configs/
directory. Configuration files specify:
- Neighbor relationships.
- Routing policies.
- Trust and voting parameters.
To add or modify routers:
- Update or create new configuration files in
configs/
. - Reflect changes in
docker-compose.yml
. - Rebuild and restart the simulation.
The network topology is fully customizable. Use the configuration files to define router links, ensuring alignment with the service definitions in docker-compose.yml
.