Git Product home page Git Product logo

eywa-on-vagrant's Introduction

Description

SandBox for EYWA PoC

Distributed Virtual Router Networking /w OpenNebula Cluster (on Vagrant Environment)

(Note) Currently VirtualBox is not supporting nesting VT-X, so simulation VMs is slow.

(Note) In Windows, Configure "core.autocrlf = input" in you Git Env, because "^M"

PoC-Demo Video

Features

The Benefits of EYWA

  1. Performance
  • Load Balancing by Multiple VR (No Limit)
  1. High Availability
  • HA by Multiple VR (No Limit)
  1. Traffic Engineering
  • Save of Network Bandwidth
  • Traffic Isolation by VxLAN (16,777,216)
  • Multicast instead of Broadcast
  • Decrease in Packet Floods
  • Flat Address
  • Multiple Gateway for Load-balancer of Inbound & Outbound Traffic
  1. Cost
  • Multiple VR instead of L4 Switch (Single Router)
  • Scalable VR

in Public Network

  1. Load Balancing
  • Load Balancing by Unlimited VRs(Virtual Router)
  • Scale-out
  • Load balanced Inbound & Outbound Traffic
  1. High Availability
  • HA by Unlimited VRs
  1. Traffic Engineering
  • Save of Network Bandwidth
  • Low latency
  1. VM Migration

in Private Network

  1. A large number of tenants
  • A large number of VLANs
  • Traffic Isolation by VxLAN (16,777,216)
  1. Large layer 2 network
  • 10.0.0.0/8 (16,777,216 IPs) per Tenant
  • Multicast instead of Broadcast, by VxLAN
  • Decrease in MAC Flooding, by VxLAN
  • Eliminate Broadcast (ToDo)

Vagrant PoC Env.

Compatibility

  • Support OpeNebula 4.6 & OpenNebula 4.10 (Default: OpenNebula 4.10)
  • Edit 'Vagrantfile' to change OpenNebula version
  • "opennebula_version" Parameter.
  • (Optional) Tested OpenNebula Hypervisor: KVM
  • (Optional) Tested OpenNeubla Storage: NFS Shared, Qcow2 (OpenNebula's "Default" Datastore)

Download Images Info.

Virtualization Provider

  • Tested on VirtualBox 4.3.26.r98988

Networking

Vagrant(VirtualBox) Layer

Vagrant Management Network
  • eth0: "NAT" for External.
External Network
  • eth1: "Host-Only Adapter"
  • 192.168.33.0/24 (GW: 192.168.33.2)
  • Range: 192.168.33.101 ~ 192.168.33.200 (100 EA)
  • Promiscuous: "Allow All"
Internal Network
  • eth2: "Internal Network"
  • 10.0.0.0/8 (GW: 10.0.0.1) (16777216 EA)
  • Promiscuous: "Allow All"
VXLAN Range (MySQL Database: eywa)
  • 239.0.0.0 ~ 239.0.1.155 (4096 EA)

EYWA(OpenNebula) Layer

EYWA Virtual Router
  • eth0
  • External Network.
  • 192.168.33.0/24 (GW/ 192.168.33.2)
  • eth1
  • Internal Network. (per Tenant)
  • 10.0.0.1/8 (Default Gateway of Tenant's VMs)
  • 10.0.0.x/8 (Internal IP-Address. exclude 10.0.0.1)
EYWA Virtual Machine
  • eth0
  • 10.0.0.x/8 (Default Gateway: 10.0.0.1)

EYWA Architecture

Architecture

Dashboard

Dashboard

Prepare

  • (Note) At least two host need.

Deploy Master Node (Front-end)

host> vagrant up master (Mandatory)

Deploy Slave Nodes

host> vagrant up slave-1 (Mandatory)
host> vagrant up slave-2 (Optional)

(Option) Using VNC

  • (Note) VNC Password: passw0rd
[master]
VNC Address: {Vagrant-Host-IP}:55910

[slave-1]
VNC Address: {Vagrant-Host-IP}:55911

[slave-2]
VNC Address: {Vagrant-Host-IP}:55912

OpenNebula Admin Web-UI

  • http://{Host-IP}:9869
  • Admin ID/PW: oneadmin / passw0rd

PoC Scenario

(North-South) Outbound LB/HA Scenario

  • (Note) This is test of external traffic. (VM to Exter)
  • Log in to Web-UI, by "oneadmin" user.
  • Go to 'System' Tab -> 'Users' Tab.
  • Click '+' Button.
  • Create 'testuser' User. (Password is that you want.)
  • After user created, then...
  • Default two templates is generated automatic. (in "Templates" Tab)
    • (Note) The templates is '2-EYWA-Router' and '2-Ubuntu(EYWA)'.
    • (Note) '2' is User-ID.
  • First EYWA-Virutal-Router('2-EYWA-Router-0') is automaticaly launched. (in 'Virtual Machines' Tab)
  • After '2-EYWA-Router-0' is up(Status is RUNNING), Go to 'Virtual Resources' Tab -> 'Virtual Machines'.
  • Create first VM.
  • Click '+' Button in 'Virtual Machines' Tab.
  • Create first VM(named with '2-Ubuntu(EYWA)-0') by '2-Ubuntu(EYWA)' Template.
  • Please wait until the status of 'Status' is "RUNNING".
  • Create Second VR.
  • Click '+' Button in 'Virtual Machines' Tab.
  • Add '2-EYWA-Router-1' with '2-EYWA-Router' template. (for Router's LB/HA)
  • Please wait until the status of 'Status' is "RUNNING".
  • Create Second VM(named '2-Ubuntu(EYWA)-1').
  • Click '+' Button in 'Virtual Machines' Tab.
  • Add VM('2-Ubuntu(EYWA)-1') with '2-Ubuntu(EYWA)' template. (for Routers's LB/HA)
  • Please wait until the status of 'Status' is "RUNNING".
  • Check all VM/VR for EYWA-Demo Environment.
  • EYWA-VRs should be present on different hosts(VirtualBox VM). (Check 'Host' in 'Virtual Machine' Tab)
  • EYWA-VMs should be present on different hosts(VirtualBox VM). (Check 'Host' in 'Virtual Machine' Tab)
  • All Status must be "RUNNING"
  • (Note) Sample list of the generated VM with virt-manager on VNC-Console.
    • '2-EYWA-Router-0' => 'one-0'
    • '2-Ubuntu(EYWA)-0' => 'one-1'
    • '2-EYWA-Router-1' => 'one-2'
    • '2-Ubuntu(EYWA)-1' => 'one-3'
  • Test failure scenarios. (If Some VRs is Down/Fail...)
  • (Note) VM Placement is Random (by OpenNebula), Therefore, it may not exactly match the following information.

  • Connect from any Host to VMs, then check below, (SSH Path: Client -> VR -> VM)

    (SSH Key is already exist, so auto-login. If prompt for password, then 'CTRL+C' and retry.) 
    
    [on Any-Host]# ssh 192.168.33.101 (SSH Connect to 2-EYWA-Router-0)
    [on 2-EYWA-Router-0]# ip address
    [on 2-EYWA-Router-0]# ssh 10.0.0.3 (IP-Address of 2-Ubuntu(EYWA)-0)
    [on 2-Ubuntu(EYWA)-0]# route -n
    [on 2-Ubuntu(EYWA)-0]# arp -n
    
    [on Any-Host]# ssh 192.168.33.102 (SSH Connect to 2-EYWA-Router-1)
    [on 2-EYWA-Router-1]# ip address
    [on 2-EYWA-Router-1]# ssh 10.0.0.5 (IP-Address of 2-Ubuntu(EYWA)-1)
    [on 2-Ubuntu(EYWA)-1]# route -n
    [on 2-Ubuntu(EYWA)-1]# arp -n
    • All VRs's secondary IP-Address of Internal-NIC is "10.0.0.1" for VMs's Default-Gateway.
    • All VMs's Default-Gateway is "10.0.0.1".
  • Test Outbound Ping on all EYWA-VMs. (with VNC-Console)

    [on 2-Ubuntu(EYWA)-0]# ping 8.8.8.8 (Test Outbound-Networking on VM)
    [on 2-Ubuntu(EYWA)-0]# arp -n (Get IP/Mac of Gateway-VR)
    (ARP Result)
       10.0.0.1 --> 02:00:0a:00:00:01
                OR
       10.0.0.1 --> 02:00:0a:00:00:04
    • SSH to another VM to Test Outbound Ping.
    [on 2-Ubuntu(EYWA)-1]# ping 8.8.8.8 (Test Outbound-Networking on VM)
    [on 2-Ubuntu(EYWA)-1]# arp -n (Get IP/Mac of Gateway-VR)
    (ARP Result of Default-Gateway)
       10.0.0.1 --> 02:00:0a:00:00:01
                OR
       10.0.0.1 --> 02:00:0a:00:00:04
  • Before delete one EYWA-Router, via the VR remain and again ssh re-connecting to all VMs.

    • (Note) VR to delete is not use as Gateway. (If both is used, then delete any.)
  • Run ping on all VMs.

    [on 2-Ubuntu(EYWA)-0] watch -d -n1 'arp -n1; ping -c1 8.8.8.8'
    [on 2-Ubuntu(EYWA)-1] watch -d -n1 'arp -n1; ping -c1 8.8.8.8'
  • Delete(Trash) one of EYWA-Router that working as Default-Gateway by ARP-Result.

    • Select that EYWA-Virtual-Router on "Virtual Machines" Tab, then destroy it.
  • Only briefly stop the ping, it works again soon.

    • After ARP Refresh, ping test of all VMs is resumed. (Failover)
  • Check 'arp -n', the 10.0.0.1's MAC is changed to remained EYWA-Virtual-Router's MAC.

  • Next, Add New Virtual-Router.
  • Create new VR to test LB.
  • Then check Gateway(10.0.0.1)'s MAC on all VMs.
  • (Optional) In addition, try other test. (add / delete as you want)

(North-South) Inbound LB/HA Scenario

  • TODO (ASAP)

(East-West) Isolation & Traffic-Engineering Scenario

  • TODO (ASAP)

APPENDIX

SSH Connect to VM

(Note) VM is Slow, becase of Nested-Virtaulization.

(Note) VM/VR's root-password is '1234'.

On any-node(master/slave)

vagrant ssh master //or slave-1/slave-2
sudo -i //root-privileged
ssh root@{VR-IP(External)}
ssh root@{VM-IP}

Limitations

  • With OpenNebula, Not yet support Migration fo EYWA-VR/VM, and deployment strategy of EYWA-VR.

EYWA Add-On for OpenNebula

GitLab Repository: https://gitlab.com/call518/addon-eywa/tree/master

Slide about EYWA

Example: Screenshots of Monitoring EtherApe-GUI

  • Env.
  • VR-1 IP: eth0:192.168.33.101, eth1:10.0.0.2,10.0.0.1 (on-master)
  • VM-1 IP: eth0:10.0.0.3 (on slave-1)
  • VM-2 IP: eth0:10.0.0.4 (on master)

Connect to VM-2

master> ssh [email protected]
VR-1> ssh [email protected]
VM-2> (root's Prompt)

arping, VM-2 to VM-1 (Internal)

VM-2> arping 10.0.0.3

Dashboard

ping, VM-2 to VM-1 (Internal)

VM-2> ping -s 5000 10.0.0.3

Dashboard

ping, VM-2 to google.com (External)

VM-2> ping -s 5000 -M want 10.0.0.3

Dashboard

eywa-on-vagrant's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.