merak

module
v0.1.1-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2022 License: MIT

README

Merak

A Large-scale Cloud Emulator provides ability to

  • emulate data center physical topologies and network devices including hosts, switches, and routers.
  • emulate a large volume of compute nodes (more than 100K) with limited physical hardware resources.
  • conduct the performance test for a target project's (e.g., Alcor) control plane with a large-size of VPC having more than 1M VMs.
  • automatically create and conduct different performance test scenarios and collect results.

Platforms

There are many different hardware resource management platform in the field, currently we choose two platforms to investigate and create our prototype:

  • Kubernetes cluster with Meshnet CNI
  • Distrinet with LXD containers

Architecture

The following diagram illustrate the high-level architecture of Merak on a kubernetes cluster using Meshnet CNI and the basic workflow to emulate Alcor's control plane for creating VMs in the emulated compute nodes.

Merak Architecture

Components
  • Scenario Manager: create the required topology and test scenarios.
  • K8S-Topo: deploy pods with the given topology.
  • Merak Network: create network infrastructure resources, e.g., vpcs, subnets, and security groups.
  • Merak Compute: register compute nodes informantion, create VMs and collect test results from merak agents.
  • Merak Agent: create virtual network devices (bridges, tap devices and veth pairs) and network namespace for VMs, collect test results and send the results back to merak compute.

Scalability

In order to provide more virtual and emulated resources with limited hardware resources, three possible solutions are investigated and developed in this project:

  • Docker-in-Docker
  • Kubernetes-in-Kubernetes (KinK)
  • Kubernetes cluster in virtual machines

For more detail design and information, please refer to the docs folder in this repository.

Getting started with development

To build this project, please make sure the following things are installed:

Then, the project can be built with:

make

Directories

Path Synopsis
services
merak-agent
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-agent/handler
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-compute
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-compute/activities
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-compute/common
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-compute/handler
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-compute/workflows/create
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-compute/workflows/delete
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-compute/workflows/info
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-topo
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
merak-topo/handler
MIT License Copyright(c) 2022 Futurewei Cloud
MIT License Copyright(c) 2022 Futurewei Cloud
scenario-manager/docs
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL