5. hands on - building local development environment with open mano
TRANSCRIPT
Building local development
environment with
OpenMANO_
Network Innovation & Virtualisation
Global CTO Unit
10 Jun 2015
Alfonso Tierno Sepulveda
Gerardo García De Blas
Network Virtualisation – GCTO Unit
DISCOVER, DISRUPT, DELIVER
OpenFlow
Controller
(FloodLight)
WEB SERVER
(GUI)
openvim
openmano
openmano-
gui
OpenFlow switch
VM
Compute nodes
NETWORK
SCENARIOS
VNF
SDN
OpenMANO recap
Network scenario
DISCOVER, DISRUPT, DELIVER
OpenMANO addresses successfully network creation,
becoming a sound foundation for further automation
VNF AND NS DESCRIPTORS MAKE NETWORK DESIGN SIMPLE
EPA SUPPORT (NFVO & VIM)
PROPER VARIETY OF L2 CONNECTIVITIES
VNF ON-BOARDING DOES NOT REQUIRE FORMAL INTEGRATION
• Abstract models that hide complexity to
network engineer: just nodes and links
interconnecting them
• Allows to deploy for high performance
• Passthrough, SR-IOV, Virtio
• E-Line & E-LAN
• Descriptor-based (openly available)
VNF VNF
VNF VNF
VNF VNF
E-Line E-LAN
DISCOVER, DISRUPT, DELIVER
• Low-end laptops/PCs
• Functional tests
• Low cost
OpenMANO minimizes entry barriers for VNF developers
LOCAL DEVELOPMENT
&TESTING
• Real servers and switches
• Performance tests (EPA
can be enforced)
• Cost-effective shared pool
SHARED POOL FOR
DEVELOPERS
• Production/pre-production
environment
• Real network scenarios
• Final service configuration
SERVICE PROVIDER
VNFD
VM images
VNFD
VM images
SAME IMAGES AND DESCRIPTORS ACROSS ALL THE CHAIN!
Hands-on session
DISCOVER, DISRUPT, DELIVER
Target
• Practice with openMANO
• Create and deploy a network scenario in a
local environment
DISCOVER, DISRUPT, DELIVER
Environment
host: compute node
Virtual machine: openmano (openmano-centos)
openmano-centos
host
opemano
pktgen
pktgen
pktsink
pktsink
l3fwd
l3fwd
gateway
gateway
192.168.100.0/24
.2 .3 .4 .1
10.10.0.3 virbrInf10.10.0.1
virbrCon163.117.172.0/24
DISCOVER, DISRUPT, DELIVER
(@host)
1. #kvm: list virtual machines defined at localhost
$ sudo virsh list
$ sudo virsh list --all
$ sudo virsh dumpxml openmano-centos
2.- #start openmano virtual machine
$ sudo virsh start openmano-centos
3.- #enter virtual machine
$ ssh [email protected] #password dpdk
Launching the controller node (openMANO)
DISCOVER, DISRUPT, DELIVER
OPENVIM (I)
Configuration & start
(@VM openmano-centos)
1. #openvim configuration
$ less openmano/openvim/openvimd.cfg
2. #openvim start
$ service-openmano openflow start #not used in development mode
$ service-openmano openvim start
#see openvim logs:
$ cat openmano/logs/openvim.0
3. #CLI configuration environment variables
$ openvim config
$ openvim –h
DISCOVER, DISRUPT, DELIVER
OPENVIM (II)
Add a compute host using a descriptor
(@VM openmano-centos)
4. #ensure that openvim has ssh access to the compute node without
any prompt (password, confirmation, ...)
#ssh key access are already inserted at host. Test it
#if it fails, run “rm –f .ssh/known_hosts ”
ssh [email protected] #exit to go back to openmano-centos
5. #generate the compute node descriptor (not needed in this session)
# To generate the descriptor, a script is used:
$ ls openmano/scripts/host-add.sh
# The descriptor: numas, cores, interfaces, ...
$ less yamls/developer_host.yaml
6. #add the host to openvim
$ openvim host-add yamls/developer_host.yaml
$ openvim host-list
$ openvim host-list -vvv
DISCOVER, DISRUPT, DELIVER
OPENVIM (III)
Create external networks
(@VM openmano-centos)
7. #create external networks, to be used later in network
scenarios
$ cat yamls/virbrCon.yaml # A bridge to access to the VMs
$ cat yamls/default.yaml # libvirt default network (NAT-based)
$ openvim net-create yamls/virbrCon.yaml
$ openvim net-create yamls/default.yaml
$ openvim net-list
$ openvim net-list –vvv
DISCOVER, DISRUPT, DELIVER
OPENVIM (IV)
Create VIM tenant
(@VM openmano-centos)
8. #create VIM tenant
$ openvim tenant-create --name my_vim_tenant --description
"description"
$ openvim tenant-list
9. #configure openvim CLI to use the created tenant
$ openvim config
$ export OPENVIM_TENANT=<uuid>
$ echo "export OPENVIM_TENANT=<uuid>" >> .bashrc
$ openvim config
DISCOVER, DISRUPT, DELIVER
OPENMANO (I)
Configuration & start
(@VM openmano-centos)
1. #openmano configuration
$ less openmano/openmano/openmanod.cfg
2. #openmano start
$ service-openmano openmano start
# see openmano logs:
$ cat openmano/logs/openmano.0
3. #CLI configuration environment variables
$ openmano config
$ openmano –h
DISCOVER, DISRUPT, DELIVER
OPENMANO (II)
Create NFVO tenant
(@VM openmano-centos)
4. #create NFVO tenant
$ openmano tenant-create mytenant --description="description"
$ openmano tenant-list # write down the uuid
5. #configure openmano CLI to use this tenant
$ openvim config
$ export OPENMANO_TENANT=<uuid>
# add openmano environment variables to ~/.bashrc
$ echo "export OPENMANO_TENANT=<uuid>" >> .bashrc
$ openmano config
DISCOVER, DISRUPT, DELIVER
OPENMANO (III)
Add openvim datacenter
(@VM openmano-centos)
6. #creating datacenter 'mydc' in openmano
$ openmano datacenter-create mydc http://localhost:9080/openvim
$ openmano datacenter-list
$ openmano datacenter-list --all
7. #attach datacenter (openvim) and VIM tenant to the NFVO tenant
$ openmano datacenter-attach mydc --vim-tenant-id <vim_tenant_uuid>
$ openmano datacenter-list
$ export OPENMANO_DATACENTER=<datacenter_uuid>
#add openmano environment variables to ~/.bashrc
$ echo "export OPENMANO_DATACENTER=<datacenter_uuid>" >> ~/.bashrc
8. #update datacenter (openvim) external nets
$ openmano datacenter-net-update -f mydc
$ openmano datacenter-net-list mydc
DISCOVER, DISRUPT, DELIVER
OPENMANO (IV)
Add some VNFs
(@VM openmano-centos)
9. #insert 4 VNFs
$ openmano vnf-list
# see descriptors
$ less yamls/gateway.yaml
$ less yamls/l3forward.yaml
# add VNFs to openmano
$ openmano vnf-create yamls/gateway.yaml
$ openmano vnf-create yamls/l3forward.yaml
$ openmano vnf-create yamls/pktgen_1p.yaml
$ openmano vnf-create yamls/pktsink_1p.yaml
$ openmano vnf-list
$ openmano vnf-list -vvv
DISCOVER, DISRUPT, DELIVER
OPENMANO (V)
Add an NS definition and deploy it
(@VM openmano-centos)
10. #insert network scenarios
$ less yamls/scenario.yaml
$ openmano scenario-create yamls/scenario.yaml
$ openmano scenario-list
11. #launch the network scenario (it creates an instance)
$ openmano instance-scenario-list
$ openmano scenario-deploy dpdk_training dpdk_training
$ openmano instance-scenario-list
$ openmano instance-scenario-list dpdk_training
$ openvim vm-list
DISCOVER, DISRUPT, DELIVER
OPENMANO-GUI (I)
Configuration
(@VM openmano-centos)
1. #edit openmano-gui configuration
$ openmano tenant-list # write down the uuid
$ vi openmano/openmano-gui/config.php
# set 'mano_tenant' variable with the proper tenant
DISCOVER, DISRUPT, DELIVER
OPENMANO-GUI (II)
Usage
(@host)
2. #open firefox web browser
(http://10.10.0.3/openmano)
#scenarios
#VNF catalogue
#physical
#create new scenario
DISCOVER, DISRUPT, DELIVER
Check access to deployed virtual machines (I)
(@host)
1. #virtual machine list
$ sudo virsh list
$ sudo virt-manager
# enter gateway VM console
(@VM gateway)
2. #Getting gateway public IP address
$ ifconfig #Write down the gateway public IP address
# close console VM gateway
DISCOVER, DISRUPT, DELIVER
Check access to deployed virtual machines (II)
(@host)
3. Enter scenario VMs through the gateway
$ ssh dpdk@<gateway-public-ip> #password: dpdk
(@VM gateway) $ ssh 192.168.100.2 #pktgen #exit
(@VM gateway) $ ssh 192.168.100.3 #l3fwd #exit
(@VM gateway) $ ssh 192.168.100.4 #pktsink #exit
DISCOVER, DISRUPT, DELIVER
DISCOVER, DISRUPT, DELIVER
Backup