FIX: Data centers now have a user defined label (to be identified) but use a short internal name 'dc%d' to avoid too long host/switch names causing Mininet to crash.
5 files changed
tree: e0c327f1460a9f4dc380fbbf8470bfe904762f96
- .gitignore
- LICENSE
- README.md
- ansible/
- emuvim/
README.md
Distributed Cloud Emulator
Contributors:
Requirements
- needs the latest Dockernet to be installed on the system
- the emulator is implemented against Dockernet's APIs
- The emulator uses ZeroMQ based RPC to for communication between demo CLI client and cloud-like APIs
pip install zerorpc- (This will be replaced / extended by a REST API later)
Project structure
- emuvim/ all emulator code
- api/ Data center API endpoint implementations (zerorpc, OpenStack REST, ...)
- cli/ CLI client to interact with a running emulator
- dcemulator/ Dockernet wrapper that introduces the notion of data centers and API endpoints
- test/ Unit tests
- example_topology.py An example topology script to show how topologies can be specified
Installation
Automatic installation is provide through Ansible playbooks.
- Requires: Ubuntu 14.04 LTS
sudo apt-get install ansible gitsudo vim /etc/ansible/hosts- Add:
localhost ansible_connection=local
1. Dockernet
cdgit clone https://github.com/mpeuster/dockernet.gitcd ~/dockernet/ansiblesudo ansible-playbook install.yml- Wait (and have a coffee) ...
2. Emulator
- Fork the repository.
cdgit clone https://github.com/<user>/son-emu.gitcd ~/son-emu/ansiblesudo ansible-playbook install.yml
Run
- First terminal:
cd ~/son-emu/emuvimsudo python example_topology.py- Second terminal:
cd ~/son-emu/emuvim/cli./son-emu-cli compute start -d dc1 -n vnf1./son-emu-cli compute start -d dc1 -n vnf2./son-emu-cli compute list- First terminal:
dockernet> vnf1 ping -c 2 vnf2
Run Unit Tests
cd ~/son-emu/emuvimsudo python test or sudo python test -v for more outputs
TODO
- DCemulator
- Advanced network model
- improve network management, multiple interfaces per container
- API to create multiple networks (per DC?)
- SDN Controller
- simple API to chain running VNFs
- Add resource constraints to datacenters
- Check if we can use the Mininet GUI to visualize our DCs?
- (Unit tests for zerorpc API endpoint, and any other new endpoint)
Features / Done
- Define a topology (Python script)
- Add data centers
- Add switches and links between the,
- Define API endpoints in topology
- call startAPI from topology definition and start it in a own thread
- make it possible to start different API endpoints for different DCs
- DCemulator
- correctly start and connect new compute resources at runtime
- remove and disconnect compute resources at runtime
- do IP management for new containers
- list active compute resources
- Cloud-like reference API with CLI for demonstrations
- Write CLI client
- Start compute (name, DC, image, network)
- Stop compute
- Create an Ansible-based automatic installation routine
- Unit tests