Discussing an OVS/OVN Split

Slides:



Advertisements
Similar presentations
Agile Software Distribution
Advertisements

Computer Software 3 Section A Software Basics CHAPTER PARSONS/OJA
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Adding scalability to legacy PHP web applications Overview Mario A. Valdez-Ramirez.
St Testing, Simulation and Monitoring (actually mostly simulation) Stephen Hillier Joint Meeting, Mainz, June 2001.
Illinois Institute of Technology
Memory Management 1 CS502 Spring 2006 Memory Management CS-502 Spring 2006.
CS-3013 & CS-502, Summer 2006 Memory Management1 CS-3013 & CS-502 Summer 2006.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Project Source Code Structure and Build Process ● Remember consistency matters as source code structure, build process, and release processes are all intertwined.
October, Scientific Linux INFN/Trieste B.Gobbo – Compass R.Gomezel - T.Macorini - L.Strizzolo INFN - Trieste.
1 Lecture 19 Configuration Management Software Engineering.
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Distribution After Release Tool Natalia Ratnikova.
1 Performance Optimization In QTP Execution Over Video Automation Testing Speaker : Krishnesh Sasiyuthaman Nair Date : 10/05/2012.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
240-Current Research Easily Extensible Systems, Octave, Input Formats, SOA.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
Feedback from the POOL Project User Feedback from the POOL Project Dirk Düllmann, LCG-POOL LCG Application Area Internal Review October 2003.
Operating Systems Lecture 14 Segments Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard. Zhiqing Liu School of Software Engineering.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
Chapter 5 How are software packages developed?. What are the main steps in software project development? Writing Specifications - Analysis Phase Developing.
DEVICE DRIVERS Presented by: Group 7. What are Device Drivers? Device driver or hardware driver is a program that manages the system’s interaction with.
Cataloging v.16 eSeminar September 2003 Judith Fraenkel.
Laith Adel Microsoft V-TSP. Why have a PMO?  To give the business better visibility and clarity on the projects and/or programmes being delivered  To.
If you have a transaction processing system, John Meisenbacher
CACI Proprietary Information | Date 1 PD² v4.2 Increment 2 SR13 and FPDS Engine v3.5 Database Upgrade Name: Semarria Rosemond Title: Systems Analyst, Lead.
SCDB Update Michel Jouvin LAL, Orsay March 17, 2010 Quattor Workshop, Thessaloniki.
Use of CMT in LHCb CMT Workshop, LAL (Orsay) 28 th February - 1 st March 2002 P. Mato / CERN.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Installing Linux: Partitioning and File System Considerations Kevin O'Brien Washtenaw Linux Users Group
1 April 2, Software Packaging and Releasing Best Practices William Cohen NCSU CSC 591W April 2, 2008.
LIBRARY RELATIONS MANAGER
Chapter 7: Modifiability
Day 19 Memory Management.
Jason Bury Dylan Drake Rush Corey Watt
Version Control with Subversion
Software Packaging and Releasing
IM-pack: Software Installation Using Disk Images
Lecture 25 More Synchronized Data and Producer/Consumer Relationship
CVS revisions UML diagram
Spacewalk and Koji at Fermilab
MCU cluster Cristian Alexe 18 October 2010.
Chapter 25: Architecture and Product Lines
Customization Guidelines for BMC Remedy IT Service Management 7.5
Mcafee updates Mcafee antivirus uses a database of known virus definitions to identify malware and other threats on your computer system. So it is important.
LECTURE 3: Software Configuration Management
An Introduction to Device Drivers
X in [Integration, Delivery, Deployment]
Objects First with Java
Loaders and Linkers: Features
Machine Independent Features
Lecture 22 Inheritance Richard Gesick.
Portability CPSC 315 – Programming Studio
Chapter 2: The Linux System Part 1
SAHARA Project overview and update May 2018
Past, Present, and Future
Customization Guidelines for BMC Remedy IT Service Management 7.5
What we have and what we want
Topic 5: Communication and the Internet
OVN Controller Incremental Processing
COMPONENTS – WHY? Object-oriented source-level re-use of code requires same source code language. Object-oriented source-level re-use may require understanding.
NAVIGATING THE MINEFIELD
Carthage ios 8 onwards Dependency manager that streamlines the process of integrating the libraries into the project.
Refactoring.
SSDT, Docker, and (Azure) DevOps
Presentation transcript:

Discussing an OVS/OVN Split And Maybe Answering Some Questions Mark Michelson Senior Software Developer Red Hat mmichels@redhat.com

Why do we want a split?

Why do we want to split? Different development paces OVN’s adoption rate is increasing Users of OVN want faster turnaround Users of OVN want incremental updates to OVN only Different audiences, both developers and users OVS developers: hardware engineers, kernel engineers OVN developers: cloud engineers Different dependencies OVS: kernel modules OVN: Haskell and Rust coming soon (?)

How do we perform the split?

Split Goals Make OVN and OVS be able to exist as independent projects Run version A of OVS and version B of OVN without issue Don’t intermix dependencies of OVN with OVS Make OVN and OVS be able to release at independent cadences We may wish to release OVN more or less often than OVS currently releases Version numbering of OVN and OVS can diverge AVOID PAIN Don’t make it difficult to build OVS or OVN Don’t make it difficult to test Don’t make it difficult to maintain compatibility Continuous integration should be used to catch mistakes early

Split Mechanics Phase 1: Expected for OVS 2.11 release in 2019 Package separation Maintaining runtime compatibility Phase 2: Expected for OVS 2.12 release in 2019 Code separation Maintaining code compatibility

Part 1: Packaging separation OVN is currently a subpackage of OVS When repackaging OVN, the latest OVS package will also be required. Therefore, users cannot upgrade OVN without also upgrading OVS.

Part 1: Packaging separation Create separate packaging of OVN and OVS Allows for OVN to be rebuilt and upgraded without also updating OVS. Static linking of libraries means no issues with code incompatibility.

Part 2: Maintaining Runtime Compatibility What happens when you upgrade OVN but don’t upgrade OVS? Mismatch between OpenFlow match fields and actions Assumptions about database fields that may be present There must be ways to test at runtime if a feature is present or not. We may actually have these means already, but enforcement of their usage will be required.

Phase 1 Benefits We can distribute new builds of OVN without requiring any changes to OVS. OVN can be upgraded without the need to also upgrade OVS. However… We don’t have a way of versioning OVN independently of OVS. OVN must still release at the same pace as OVS.

Part 3: Code Separation AKA The big one What is shared between OVN and OVS? C code Memory allocation, hashmaps, IP address manipulation, etc. Test utilities M4 functions Test programs Build utilities Documentation

Part 3: Code Separation What is shared between OVN and OVS? OVSDB C code Memory allocation, hashmaps, IP address manipulation, etc. Test utilities M4 macros C and python test utilities Miscellaneous utilities checkpatch

Part 3: Code Separation Strategy 1: Full separation Definition: OVS and OVN live in separate repos. Any resources that are shared between both code bases needs to live in a repo that both OVS and OVN can access.

Part 3: Code Separation Strategy 1: Full separation Lots of git repos: OVS C library OVS test library OVSDB OVS Contains vswitchd and OVS tests OVN Contains ovn-northd, ovn-controller, and OVN tests Potentially lots of repos to push changes to for certain types of enhancements OVS developers inconvenienced by repo reorganization Soooooo many versions of things to keep up with.

Part 3: Code Separation Strategy 1: Full separation Alternate repo setups are possible Example: OVS C libraries and OVSDB repo OVS/OVN test repo Contains all OVS and OVN tests and their shared utilities OVS OVN Helps make the test situation a bit less complicated.

Part 3: Code Separation Strategy 2: Clones Create a clone of the OVS repo for OVN. Remove OVN code from the OVS repo. Remove OVS code from the OVN repo. Both have copies of the common code between them. Definitely the easiest option. But it also means potential divergence between OVN and OVS implementations of common routines. Vigilance would be necessary to make changes in both repos if there is a common bug. Would be hell for OVSDB.

Part 3: Code Separation Strategy 3: Logical separation Definition: continue to use one git repo Restructure directories to clearly indicate OVS, OVN, and shared resources between the two. Use separate configure scripts and Makefiles for OVS and OVN, allowing each to be built independently. But does git make this easy? Multiple projects in one git repo? How does tagging work?

Part 3: Code Separation Strategy 4: git submodule Similar to strategy 1, in that OVS and OVN live in separate repos. With this, OVN uses OVS as a git submodule. This rocks the boat least with regards to the OVS repo. It mostly just will look like all the OVN code has been removed. git submodules are not the easiest things to work with, though.

Part 4: Maintaining Code Compatibility How do we ensure that OVN continues to compile when it and OVS are being developed independently? Examples: A public function gains a new parameter A structure gets new fields added to it (or other ABI changes) OVN needs to be able to compile whether using a version before the change or after. This could affect OVS as well if common C libraries end up in their own repo.

Part 4: Maintaining Code Compatibility Ideas: Configure-time checks for certain features, functions, struct fields, etc. Version checks to conditionally compile code. No matter how it’s done, it will require discipline and LOTS of testing to ensure that nothing gets broken.

So let’s discuss!

THANK YOU plus.google.com/+RedHat facebook.com/redhatinc linkedin.com/company/red-hat twitter.com/RedHatNews youtube.com/user/RedHatVideos