“The DNA of OPNFV” Frank Brockners Distinguished Engineer, Cisco
Serving different Audiences – RUN, TEST, CREATE
End-User Developerin active Upstream
Projects
Does my newpatch work at NFV-I
system level?
Developerof new features not
yet in Upstream(NFV specific
requirements)
How can I get my patches integrated/ accepted
(OPNFV and Upstream)?
Systems-Integrator/Tester
Could I get a tested foundation that avoids me
re-starting all test-work with every new release?
Could I get a NFV-I foundation with common
UX to run any VNF on?
Towards a Common User Experience
Tools
Components
MyVNF
“Black Box NFV-Infra”
Theme: “Run my VNF for real” Assemble a set of infrastructure to enable real-world VNF deployments
• Predictable performance –Deploy to bare metal
• Validated –Functional testing, multiple test environments
• Repeatable –Automatic deployment
• Carrier-class –High availability
Hardware
Clear-cut components: “This is the Unix philosophy:
Write programs that do one thing and do it well. Write
programs to work together.” Build with lego-blocks instead
of using clay.
Doug McIlroy
Focus: “Do One Thing And Do It Well – DOTADIW”
Arno Release: Bottom’s Up Approach to UX: Components Driven
Do One Thing And Do It Well - DOTADIW
Fixed Set of Hardware Fixed Set of Components(“consume upstream”)
(Mostly) Fixed Set of Tools
6 Servers>= 3 Control nodes, >= 2 Compute nodes, 1 Provisioning node (“jumphost”) (Centos 7, runs test infra and installer VM)
Reference lab hosted by the Linux FoundationBlade servers with 80G connectivity each (Cisco UCS-B), CIMC management
TestTempest, Rally, Robot
InstallOption: Either Fuel, or Foreman/Quickstack
ComputeO/S Nova, KVM
StorageO/S Glance, O/S Cinder
NetworkOpenDaylight, OVS
InfraRabbitMQ, Corosync, Pacemaker, MySQL
See also: https://wiki.opnfv.org/get_started/get_started_system_state
• Component-selection drives
Platform Defintion
• Enhanced UX achieved through
different composition of
components
– Virtual deployments (using nested
virtualization – 1 server)
– Simple deployments
(no HA – 4 servers)
– Deployments with HA (6 servers)
Arno Service Release 1 (SR1)
... follows the same bottoms-up approach
FlexibilizedMinor version
updatesMinor version
updates & fixes
Arno SR1 improves Arno while keepingthe platform composition approach
Example:
Create a testing environment
https://wiki.opnfv.org/get_started_experiment1
Example of a deployment tool (Foreman/Quickstack):
Deployment tools are a composition of tools and
scripts/manifests
• Vagrant - Create and configure lightweight, reproducible, and portable
development environments.
• VirtualBox - A "hosted" hypervisor used to host the Foreman node.
• Khaleesi - An Ansible framework responsible kicking off builds and
tests
• Foreman - A bare-metal/virtual host management tool
• OPNFV/Genesis - Puppet modules for invoking QuickStack
• QuickStack - Puppet modules for installing/configuring OpenStack +
OpenDaylight
• OpenStack Puppet Modules (OPM) - Used to install OpenStack
• OpenDaylight Puppet Module - Used to install OpenDaylight
OPNFV – Number of Projects – When Arno was released
0
5
10
15
20
25
30
35
40
45
50
25-Nov-14 25-Dec-14 25-Jan-15 25-Feb-15 25-Mar-15 25-Apr-15 25-May-15 25-Jun-15 25-Jul-15 25-Aug-15
Total Release 1
June 4th, 2015: 28 Projects in total in OPNFV5 Projects participated in Arno
Arno
OPNFV – Number of Projects – As of Oct 12th, 2015
0
5
10
15
20
25
30
35
40
45
50
25-Nov-14 25-Dec-14 25-Jan-15 25-Feb-15 25-Mar-15 25-Apr-15 25-May-15 25-Jun-15 25-Jul-15 25-Aug-15
Total Release 2 Release 1
47 Project in total in OPNFV5 Projects participated in Arno38 Projects plan to participate in Brahmaputra
Arno
Brahmaputra
See also: https://wiki.opnfv.org/releases/brahmaputra/release_plan#participating_projects
Do one thing and do it well... for the User
Top-down UX definition to complement bottoms-up method
“Define” and “Observe”: Combining…
– “Observer approach” (black box: test driven definition) with
– “System level requirements” (white box: requirements and building-block driven definition)
Common user-observable behavior achieved through
– Description of user-observable behavior (requirements, common capabilities). Definition of common building blocks. Comparable to a “law”. Example: “System to support IPv6-only transport network”.
– System tests to verify existence of desired user-observable behavior. Comparable to test/check-points/samples that executive powers (“court & police”) do. Testing only observes a portion of the entire system behavior and can never fully describe the entire system behavior: Test samples can be defined to check IPv6 support for a specific set of scenarios.
Rules And Requirements(“Law”)
Tests/Samples(“Law enforcement:
Police/Court)+
Defining a common user-experience for OPNFV:
Tests and Gating Conditions
Common UX definition:Definition of user-observable
system behavior, common system requirements and common building
blocks
Deploy-and
Configtool
A
Deploy-and
Configtool
B
Deploy-and
Configtool
C
Deploy-and
Configtool
…
Functional Tests
Performance Tests
Component Tests
… Tests
Tests
Hardware definition
Still a meritocracy:Healthy competitionamong deploy toolsto allow merit to win
https://wiki.opnfv.org/testinghttps://wiki.opnfv.org/genesis
Project Genesis: Consolidate and Harmonize the UX
• Define common requirements that all installer projects have to follow
– For Brahmaputra those are: Apex, Compass4NFV, Fuel, JOID
• Genesis project is a democracy
– All installer projects are equally represented in Genesis
– Majority votes in case there is no consensus
See also: https://wiki.opnfv.org/genesis
Meritocracy with democratic elements
• OPNFV technical decision making follows standard meritocracy model
• Genesis consolidates requirements for UX across deployment tools: Define a baseline
• Installers can continue to differentiate (not on outcome, but on process like e.g. ease of use, etc.)
– Only baseline “choices” – continue to allow for “choosing” of non-UX impacting capabilities.
– Installers can install different (and eventually competing) components
Developer of component(s) and
Systems Integrator:
Test components at system level
in a variety of hardware setups
OPNFV Arno Core Infrastructure
• Arno established the key capabilites for continous deploy and testing
• “Do one thing and do it well”
• Install/Deploy tools & System Definition – Bootstrap/GetStarted
• CI/CD Pipeline – Octopus
• Docs – OPNFVdocs
• Testing - Functest
• Hardware definition - Pharos
Install/Deploy
Docs Function-Test
AutomationCI/CD
PipelineHardware
Systems Integration And Evolution as a Community Effort
Automatic Deploy and Test – CI/CD Pipeline
Install on reference system(s)
Test on reference system(s)
Lab1Lab2
Lab3
Lab1Lab2
Lab3
Integrate & build*as a system
*OPNFV currently composes builts fromexisting artifacts (e.g. RPMs) ratherthan builds from source
Choice of existing and new components,System state definition
Synchronize your Tool Chain with OPNFV:
Continuously deploy OPNFV to your lab
• Create an
OPNFV
compliant lab
• Hook-up your
local Jenkins to
OPNFV
• Continuously
deploy to your
lab
Further details: https://www.opnfv.org/sites/opnfv/files/release/opnfv-jenkins-slave-connection.arno.2015.1.0.pdfCurrent Jenkins slaves: https://build.opnfv.org/ci/computer/
OPNFV Jenkins master
Your Lab
Community Lab A
Community Lab ..
Jenkins slaveOPNFV’s slave.jar
Jenkins slaveOPNFV’s slave.jar
Jenkins slaveOPNFV’s slave.jar
• OPNFV offers a set of community test labs
• Compliant to OPNFV hardware reference spec
• Individual hardware components for
custom/advanced testing
Build your own lab or choose an OPNFV community lab
See also: https://wiki.opnfv.org/pharos
https://www.opnfv.org/sites/opnfv/files/release/pharos-spec.arno.2015.1.0.pdf
Developer of new/evolved components:
Get components and associated
requirements recognized by Upstream
Projects
Private Features and Tests in Arno...
... weren’t really in scope
• “Arno consumed Upstream” – OPNFV purely “composed”
• Already Arno release time, there were already a lot of projects
that were working on additional things, and the number
increased since then...
For Brahmaputra, there are a lot of projects which compile
requirements and perform development – focused on upstream...
OPNFV is very open to new projects...
If your project meet the following, then your project can likely have a life in OPNFV...
• Open Source
• Open Community
• Open Development
• Open Design
• Scope: NFV-I and VIM
Building/evolving features means contributing upstream
Team Up To Drive Required Change Upstream
Swimming upstreamis hard
Team-up to increasethe likelyhood to succeed
Swimming upstreamis dangerous
Brahmaputra: Enable Choice
• More infrastructure tool projects (e.g. installers, etc.)
• More test-tools and test projects
• More component projects (e.g. SDN controllers)
• More feature/component evolution projects
0
5
10
15
20
25
30
35
40
Infra Test Feature Component
OPNFV Brahmaputra
• Core and Context
– Core Infrastructure: Continue to
do-one-thing-and-do-it-well
– Context: Enable Choice
• Add additional components,
enhance individual components
(complement/evolve upstream)
TestCI/CDPipeline
InstallDocs
Hardware
How to deal with choice and an exponentially growing set of combinations while allowing OPNFV to scale horizontally?
http://www.oxforddictionaries.com/us/definition/learner/subsidiarity
Enable Choice: Scale OPNFV HorizontallyScale-out approach to new projects - All “well behaving projects” can be integrated
Baseline
Add new tests?
Add newfeatures?
Common Tools, Common User Experience
How to deal with different test scenarios?
Subsidiarity: You want the test! You create the test case! You integrate
the test case into the OPNFV test tools! You make sure that the
hardware to run the additional test cases exist.
How to deal with new components?
Subsidiarity: You want the component! You integrate it into the installers!
You create the associated test cases.
Subsidiarity: “It is a fundamental principle of social philosophy,
fixed and unchangeable, that one should not withdraw from
individuals and commit to the community what they can
accomplish by their own enterprise and industry.”
Oswald von
Nell-BreuningPope Pius XIPope Leo XIII
Pope Pius XI, Quadragesimo anno, 1931
https://en.wikipedia.org/wiki/Subsidiarity_(Catholicism)
Focus & ComponentizeDo one thing and do it well
MeritocracyAllow for healthy competition
DemocracyAchieve consistent UX definition
SubsidiarityScale horizontally
OpenCommunity
OpenSource
Open Development
OpenDesign
NFV-I & VIMScope
Continous Systems Integration as an Open Community Effort
Picture References
• Slide 7:
– Doug McIroy http://www.computerhope.com/people/malcolm_mcilroy.htm
• Slide 25:
– Salmon (left): http://www.johnfarkas.com/Creating_Culture/Blog/Entries/2008/10/10_Blueprint_for_a_Personal_Revolution.html
– Salmon (middle): https://thesalmonlife.wordpress.com/
– Salmon (right): http://paigehunter.com/5-reasons-run-entrepreneur/
• Slide 30:
– Oswald von Nell-Breuning: http://www.rheinische-geschichte.lvr.de/persoenlichkeiten/N/Seiten/OswaldvonNell-Breuning.aspx?print=true
– Pope Leo XIII: http://professorjohnston.com/pope-leo-xiii-on-self-conquest/
– Pope Pius XI: http://wdtprs.com/blog/2012/11/podcazt-133-reparation-for-sin-pius-xis-miserentissimus-redemptor/