cRPD is Juniper Networks containerized routing stack. It can run on top of Linux distros to program kernel routing tables. This project allows to bring up random cRPD topologies to help build networks and test cRPD related features. This script relies on docker APIs and the links created between containers would be a veth interface.
The definition of the topology is an input from a yaml file and we can also pass initial configuration to all cRPD containers. The configuration can be passed into the container in 2 ways. we can either use a file input with set commands present with each in a new line, or directly prebuild the configuration file and paste it in the config directory which would have been mounted as a volume before starting the container.
we can also use this for other containers in order to bring them up, but in order to connect, we make the container a named network namespace (docker usually keeps them unnamed) and use ip link commands to move the interfaces into the respective container and assign an IP address to it.