<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ketul Patani</title>
    <description>The latest articles on DEV Community by Ketul Patani (@ke2ulpatani).</description>
    <link>https://dev.to/ke2ulpatani</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F11191%2F4rpMQPga.jpg</url>
      <title>DEV Community: Ketul Patani</title>
      <link>https://dev.to/ke2ulpatani</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ke2ulpatani"/>
    <language>en</language>
    <item>
      <title>Transit Routing as a Service</title>
      <dc:creator>Ketul Patani</dc:creator>
      <pubDate>Wed, 20 May 2020 19:06:27 +0000</pubDate>
      <link>https://dev.to/ke2ulpatani/transit-routing-as-a-service-1lbm</link>
      <guid>https://dev.to/ke2ulpatani/transit-routing-as-a-service-1lbm</guid>
      <description>&lt;p&gt;As a part of course &lt;a href="https://www.engineeringonline.ncsu.edu/course/csc-791-linux-networking"&gt;CSC 791 - Linux Networking&lt;/a&gt;, we decided to create a SaaS project, &lt;strong&gt;Transit Routing as a Service&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why did we build it?
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  How did we build it?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Python (Logic)&lt;/li&gt;
&lt;li&gt;Ansible (Orchestration)&lt;/li&gt;
&lt;li&gt;Bash (Low level linux API interaction)&lt;/li&gt;
&lt;li&gt;Linux Network Namespace utility (Custom Virtual Network Devices)&lt;/li&gt;
&lt;li&gt;Quagga (BGP Implementation)&lt;/li&gt;
&lt;li&gt;VxLAN (L2 Connectivity)&lt;/li&gt;
&lt;li&gt;GRE (L3 Connectivity)&lt;/li&gt;
&lt;li&gt;Docker (Infrastructure)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We took leverage of Linux virtualization technology to create a custom topology over the internet which could give L2 and L3 connectivity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Aq9uf2-E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/uga6xq14ehyz6lliuo7o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Aq9uf2-E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/uga6xq14ehyz6lliuo7o.jpg" alt="Architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Link to the repo
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vWogaON8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-28d89282e0daa1e2496205e2f218a44c755b0dd6536bbadf5ed5a44a7ca54716.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ke2ulpatani"&gt;
        ke2ulpatani
      &lt;/a&gt; / &lt;a href="https://github.com/ke2ulpatani/Transit-RaaS"&gt;
        Transit-RaaS
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Routing as a service between different public cloud
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Multi Cloud Transit VPC based Routing as a Service&lt;/h1&gt;
&lt;h2&gt;
/etc :&lt;/h2&gt;
&lt;p&gt;This directory is where tenants place their config files (We have populated this directory for demo purposes)&lt;/p&gt;
&lt;h2&gt;
/var :&lt;/h2&gt;
&lt;p&gt;This directory is where any run time information and logs are placed&lt;/p&gt;
&lt;h2&gt;
/logic :&lt;/h2&gt;
&lt;p&gt;This directory is where all the core processing logic and Ansible playbooks&lt;/p&gt;
&lt;h2&gt;
execute.sh that is used to run as the driver code in order to create VPCs, Spines, Leaves, L1 Transits or L2 Transit Nodes.&lt;/h2&gt;
&lt;h3&gt;
constants.py :&lt;/h3&gt;
&lt;p&gt;Has a set of pre defined constants and paths&lt;/p&gt;
&lt;h3&gt;
create-vms.yml :&lt;/h3&gt;
&lt;p&gt;Define, Start and Attach interface to VMs&lt;/p&gt;
&lt;h3&gt;
create_leaf.py :&lt;/h3&gt;
&lt;p&gt;Used to create leaf nodes that hosts a subnet with one or more multiple PCs&lt;/p&gt;
&lt;h3&gt;
create_spine.py :&lt;/h3&gt;
&lt;p&gt;Used to create spines, L1 transits and L2 transits nodes&lt;/p&gt;
&lt;h3&gt;
create_vpc.py :&lt;/h3&gt;
&lt;p&gt;Used to create a VPC&lt;/p&gt;
&lt;h3&gt;
hyp_utils.py :&lt;/h3&gt;
&lt;p&gt;Utitlity functions that are built to work on the JSON file stored on…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ke2ulpatani/Transit-RaaS"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>2020devgrad</category>
      <category>octograd2020</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
