Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
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 virbrInf
10.10.0.1
virbrCon
163.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 dpdk@10.10.0.3 #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
ssh student@10.10.0.1
#if it fails, run “rm –f .ssh/known_hosts ”
ssh student@10.10.0.1 #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
E-Mail: alfonso.tiernosepulveda@telefonica.com
gerardo.garciadeblas@telefonica.com
nfvlabs@tid.es
COMMENTS / QUESTIONS
DISCOVER, DISRUPT, DELIVER
Backup

More Related Content

5. hands on - building local development environment with Open Mano

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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!
  • 6. DISCOVER, DISRUPT, DELIVER Target • Practice with openMANO • Create and deploy a network scenario in a local environment
  • 7. 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 virbrInf 10.10.0.1 virbrCon 163.117.172.0/24
  • 8. 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 dpdk@10.10.0.3 #password dpdk Launching the controller node (openMANO)
  • 9. 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
  • 10. 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 ssh student@10.10.0.1 #if it fails, run “rm –f .ssh/known_hosts ” ssh student@10.10.0.1 #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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 23. DISCOVER, DISRUPT, DELIVER E-Mail: alfonso.tiernosepulveda@telefonica.com gerardo.garciadeblas@telefonica.com nfvlabs@tid.es COMMENTS / QUESTIONS