NFV in the Embedded World: Yocto Project and OpenStack August 22 nd, 2014 Jason Wessel - Product Architect for Wind River Linux - Kernel.org KDB/KGDB Maintainer 1
Cloud this, Cloud that Google, Microsoft and Apple Rackspace, Amazon Private Cloud for IT guys The embedded Cloud? 2
3 Why the embedded cloud?
The Cloud of Clouds Orchestration Redundancy 4
Embedded NFV Telco Radio Access networks Real Time VMs Consolidation and management of embedded equipment -> VMs 5
Obvious Choice + = 6
meta-cloud-services Choose branch wisely havana -> Not dead yet! icehouse -> latest juno/master -> unstable 7
How can you build it? mkdir p /space/jw/yocto ; cd /space/jw/yocto # Clone away git clone git://git.yoctoproject.org/meta-cloud-services git clone git://git.openembedded.org/meta-openembedded git clone --branch icehouse git://git.yoctoproject.org/meta-virtualization git clone git://git.openembedded.org/openembedded-core oe-core cd oe-core git clone git://git.openembedded.org/bitbake At this point ~ 5 min 8
Build controller (1 of 2) mkdir p /space/jw/yocto/oe-core/controller cd /space/jw/yocto/oe-core/controller.../oe-init-build-env # Edit conf/local.conf to use: echo MACHINE = qemux86-64 >> conf/local.conf # Edit conf/bblayers.conf to include other layers BBLAYERS?= " \ /space/jw/yocto/oe-core/meta \ /space/jw/yocto/meta-virtualization \ /space/jw/yocto/meta-cloud-services \ /space/jw/yocto/meta-cloud-services/meta-openstack-controller-deploy \ /space/jw/yocto/meta-cloud-services/meta-openstack \ /space/jw/yocto/meta-cloud-services/meta-openstack-qemu \ /space/jw/yocto/meta-cloud-services/meta-openstack \ /space/jw/yocto/meta-openembedded/meta-oe \ /space/jw/yocto/meta-openembedded/meta-networking \ /space/jw/yocto/meta-openembedded/meta-filesystems \ /space/jw/yocto/meta-openembedded/meta-python \ /space/jw/yocto/meta-openembedded/meta-webserver \ /space/jw/yocto/meta-openembedded/meta-ruby" 9
Build controller (2 of 2) # Build it bitbake openstack-image-controller ~ 1-4 hours depending on internet speed and processor power 10
Boot Controller with QEMU runqemu qemux86-64 \ openstack-image-controller \ kvm nographic \ qemuparams="-m 4096" 11
Build Compute(1 of 2) mkdir p /space/jw/yocto/oe-core/compute cd /space/jw/yocto/oe-core/compute.../oe-init-build-env ln -s../../controller/build/downloads. ln -s../../controller/build/sstate-cache. # Edit conf/local.conf to use: echo MACHINE = qemux86-64 >> conf/local.conf # Edit conf/bblayers.conf to include other layers BBLAYERS?= " \ /space/jw/yocto/oe-core/meta \ /space/jw/yocto/meta-virtualization \ /space/jw/yocto/meta-cloud-services \ /space/jw/yocto/meta-cloud-services/meta-openstack-compute-deploy \ /space/jw/yocto/meta-cloud-services/meta-openstack \ /space/jw/yocto/meta-cloud-services/meta-openstack-qemu \ /space/jw/yocto/meta-cloud-services/meta-openstack \ /space/jw/yocto/meta-openembedded/meta-oe \ /space/jw/yocto/meta-openembedded/meta-networking \ /space/jw/yocto/meta-openembedded/meta-filesystems \ /space/jw/yocto/meta-openembedded/meta-python \ /space/jw/yocto/meta-openembedded/meta-webserver \ /space/jw/yocto/meta-openembedded/meta-ruby" 12
Build compute (2 of 2) # Build it bitbake openstack-image-compute < 15 min (because of caching) 13
Boot Compute node with QEMU runqemu qemux86-64 \ openstack-image-compute \ kvm nographic \ qemuparams="-m 4096 -smp 4" Free as in beer 14
What does it look like? Yocto Project + icehouse OpenStack https://www.youtube.com/watch?v=tpf0xtp3hde Play Video 15
Load an image wget http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img scp cirros-0.3.2-x86_64-disk.img root@192.168.7.2: ssh root@192.168.7.2. /etc/nova/openrc glance image-create --name myfirstimage --is-public true \ --container-format bare --disk-format qcow2 \ --file /home/root/cirros-0.3.2-x86_64-disk.img 16
Create instance in horizon Web browser: http://192.168.7.2:8080/ Login: admin Password: password Click Project tab -> Network tab -> Networks Click: Create Network (upper right) Name a network: testnet (next) Create a subnet name: 192-168 Network address: 192.168.0.0/24 (next, next) Click Project tab -> Compute -> Instances Click: Launch Instance (upper right) Instance Name: test1 Instance Boot Source: Boot from image Image Name: myfirstimage Click: Launch 17
Community https://lists.yoctoproject.org/listinfo/meta-virtualization IRC: Freenode #yocto 18
19 Guest to your liking
What would you build? Five 9 s Cloud 20
Carrier Grade Typical Open Stack Availability Downtime per year Downtime per month Downtime Per week 99% (2 9 s) 3.65 days 7.20 hours 1.68 hours 99.9% (3 9 s) 17.52 hours 43.8 minutes 10.1 minutes Carrier Grade 99.99% (4 9 s) 52.56 minutes 4.32 minutes 1.1 minutes 99.999 (5 9 s) 5.26 minutes 25.9 seconds 6.05 seconds 99.9999 (6 9 s) 31.5 seconds 2.59 seconds 0.605 seconds 21
Internet L2 Switch Controller Node A HA Controller Node B Compute Node Compute Compute Node Compute APP Node APP RT Node VM VM VM Storage Node Storage Node Storage Node Wire rate 40GB L3 forwarding in a VM HA Platform, Vswitch, and Services 22
23