loading...

Transit Routing as a Service

ke2ulpatani profile image Ketul Patani ・1 min read

As a part of course CSC 791 - Linux Networking, we decided to create a SaaS project, Transit Routing as a Service.

Why did we build it?

In order to have high availability, companies generally choose to have a multi-cloud deployment and would require services to connect instances over L2 or L3 network.

Cloud providers, having a strong backbone network and presence all over around the globe, can monopolize the routing service. We decided to build an opensource SaaS product, extending Linux virtualization, to provide such services to achieve required custom connectivity for the clients' sites.

How did we build it?

Stack

  • Python (Logic)
  • Ansible (Orchestration)
  • Bash (Low level linux API interaction)
  • Linux Network Namespace utility (Custom Virtual Network Devices)
  • Quagga (BGP Implementation)
  • VxLAN (L2 Connectivity)
  • GRE (L3 Connectivity)
  • Docker (Infrastructure)

We took leverage of Linux virtualization technology to create a custom topology over the internet which could give L2 and L3 connectivity.

Architecture

Architecture

Link to the repo

GitHub logo ke2ulpatani / Transit-RaaS

Routing as a service between different public cloud

Multi Cloud Transit VPC based Routing as a Service

/etc :

This directory is where tenants place their config files (We have populated this directory for demo purposes)

/var :

This directory is where any run time information and logs are placed

/logic :

This directory is where all the core processing logic and Ansible playbooks

execute.sh that is used to run as the driver code in order to create VPCs, Spines, Leaves, L1 Transits or L2 Transit Nodes.

constants.py :

Has a set of pre defined constants and paths

create-vms.yml :

Define, Start and Attach interface to VMs

create_leaf.py :

Used to create leaf nodes that hosts a subnet with one or more multiple PCs

create_spine.py :

Used to create spines, L1 transits and L2 transits nodes

create_vpc.py :

Used to create a VPC

hyp_utils.py :

Utitlity functions that are built to work on the JSON file stored on…

Discussion

pic
Editor guide