OVN:
Scaleable Virtual Networking for Open
vSwitch
Kyle Mestery (@mestery)
Justin Pettit (@Justin_D_Pettit)
The Case for Network Virtualization
• Network provisioning needs to be self-service.
• Virtual networking needs to be abstracted from physical.
• Virtual networking needs same features as physical.
Legacy Physical Network
HV1 HV2
Cloud Physical Network
What is OVN?
•
✓
✓
✓
✓
✓
✓
✓
•
✓
✓
✓
•
✓
✓
✓
•
•
•
•
The Particulars
Goals
How is OVN Different?
…
Architecture
• Configuration coordinated through databases
• Logical flows, don’t worry about physical topology
• Local controller converts logical flow state into physical
flow state
• Desired state clearly separated from run-time state
• Based on the architecture we wanted from seeing a
number of others using OVS
Data Plane Scale
Common Approach to Security Groups
• OpenFlow
• Not truly stateful
• Possibly bad
performance
• OpenStack
• Required extra linux
bridge and veth pair per
VM
• Uses iptables
OVN Security Groups Design
● Uses kernel conntrack
module directly from
OVS
● Design benefits
○ No complicated
pipeline
○ Faster* -- Fewer
hops and veth ports
OVS bridge
VM VM
eth eth
tap tap
* http://blog.russellbryant.net/2015/10/22/openstack-security-groups-using-ovn-acls/
Security Group Throughput
Common Approach to L3
• Agent-based
• Use the Linux IP stack and iptables
• Forwarding
• NAT
• Overlapping IP address support using
namespaces
Example OpenStack L3
OVN L3 Design
• Native support for IPv4 and IPv6
• Distributed
• ARP/ND suppression
• Flow caching improves performance
• Without OVN: multiple per-packet routing layers
• With OVN: cache sets dest mac, decrements TTL
• No CMS-specific L3 agent
Control Plane Scale
Scale Test Framework
•
•
•
•
•
•
•
• ☺
•
…
…
Current Scale (Pure OVN)
•
•
•
•
•
•
•
Scale Improvements - Ongoing
•
•
•
•
•
•
•
Deployment
Deployment made easy
● No additional daemons to install on
hypervisors beyond what comes with OVS
● Minimal host-level configuration
● Rolling upgrades
• OVSDB schema is versioned
• Changes to schema will be carefully
managed to be backwards compatible
• Allows rolling upgrades
• Update databases first
• Roll through upgrades to ovn-controller
• Same strategy OVS itself has been using
Rolling Upgrades
Continuously Delivering OVN
Why Continuous Delivery of OVN?
● 90+ active developers working on OVS/OVN
● Hundreds to thousands of lines of code
added daily - travis-ci jobs running to test
this
● At large scale, automated testing is a given
● Delivering upstream fast means developers
can work upstream, reducing technical debt
Continuous Delivery of OVS/OVN
What About Delivering Releases?
One Way To Continuously Deliver
● Align with OpenStack CI/CD
○ Same tools upstream
■ Zuul (Pipeline management)
■ Nodepool (resource management)
■ Gerrit (code review)
○ Build our own packages
● Ability to carry local patches
○ Needed for security patches
○ Also for bugs and features not landed upstream yet
Status
Neutron Integration Status
•
•
OVN vs. OVS Python Agents
OpenStack Deployment Options
● Full devstack support
● Puppet OpenStack now supports OVN
● TripleO support posted for review
● Kolla support being planned
• Non-experimental for next OpenStack release (Newton)
• Recently landed features:
• L3 gateway with NAT and load-balancing support
• IPv6 logical routing
• Native DHCP service
• Address Set for ACL/Security group
• Kubernetes support
Upcoming Release
The “Microwave” Release
Future Work
● Better database clustering and HA
● Avoid complete recalculations with
incremental computation
● Native DNS support
● Live migration support for ACLs
● Hitless upgrades
Resources
• Architecture described in detail in ovn-architecture (5)
• Available in the “master” and “branch-2.6” branches of the main OVS repo:
– https://github.com/openvswitch/ovs
– http://openvswitch.org/support/dist-docs/
• Neutron plugin:
– https://git.openstack.org/openstack/networking-ovn.git
• Neutron integration docs, including devstack instructions:
– http://docs.openstack.org/developer/networking-ovn/
• Kubernetes plugin and documentation:
– https://github.com/openvswitch/ovn-kubernetes
• OVN scale test harness
– https://github.com/openvswitch/ovn-scale-test.git
How you can help
• Try it! Test it! Scale it! Report bugs! Write Code!
• Core OVN is being developed on ovs-dev mailing list:
– http://openvswitch.org/pipermail/dev/
– #openvswitch on Freenode
• Neutron plugin for OVN is being developed here:
– http://git.openstack.org/openstack/networking-ovn.git
– openstack-dev mailing list
– #openstack-neutron-ovn on Freenode
Thank you! Questions?
Justin Pettit (@Justin_D_Pettit)
Kyle Mestery (@mestery)
OVN: Scaleable Virtual Networking for Open vSwitch

OVN: Scaleable Virtual Networking for Open vSwitch

  • 1.
    OVN: Scaleable Virtual Networkingfor Open vSwitch Kyle Mestery (@mestery) Justin Pettit (@Justin_D_Pettit)
  • 2.
    The Case forNetwork Virtualization • Network provisioning needs to be self-service. • Virtual networking needs to be abstracted from physical. • Virtual networking needs same features as physical. Legacy Physical Network HV1 HV2 Cloud Physical Network
  • 3.
  • 4.
  • 5.
  • 6.
    How is OVNDifferent?
  • 7.
  • 8.
    Architecture • Configuration coordinatedthrough databases • Logical flows, don’t worry about physical topology • Local controller converts logical flow state into physical flow state • Desired state clearly separated from run-time state • Based on the architecture we wanted from seeing a number of others using OVS
  • 9.
  • 10.
    Common Approach toSecurity Groups • OpenFlow • Not truly stateful • Possibly bad performance • OpenStack • Required extra linux bridge and veth pair per VM • Uses iptables
  • 11.
    OVN Security GroupsDesign ● Uses kernel conntrack module directly from OVS ● Design benefits ○ No complicated pipeline ○ Faster* -- Fewer hops and veth ports OVS bridge VM VM eth eth tap tap * http://blog.russellbryant.net/2015/10/22/openstack-security-groups-using-ovn-acls/
  • 12.
  • 13.
    Common Approach toL3 • Agent-based • Use the Linux IP stack and iptables • Forwarding • NAT • Overlapping IP address support using namespaces
  • 14.
  • 15.
    OVN L3 Design •Native support for IPv4 and IPv6 • Distributed • ARP/ND suppression • Flow caching improves performance • Without OVN: multiple per-packet routing layers • With OVN: cache sets dest mac, decrements TTL • No CMS-specific L3 agent
  • 16.
  • 17.
  • 18.
    Current Scale (PureOVN) • • • • • • •
  • 19.
    Scale Improvements -Ongoing • • • • • • •
  • 20.
  • 21.
    Deployment made easy ●No additional daemons to install on hypervisors beyond what comes with OVS ● Minimal host-level configuration ● Rolling upgrades
  • 22.
    • OVSDB schemais versioned • Changes to schema will be carefully managed to be backwards compatible • Allows rolling upgrades • Update databases first • Roll through upgrades to ovn-controller • Same strategy OVS itself has been using Rolling Upgrades
  • 23.
  • 24.
    Why Continuous Deliveryof OVN? ● 90+ active developers working on OVS/OVN ● Hundreds to thousands of lines of code added daily - travis-ci jobs running to test this ● At large scale, automated testing is a given ● Delivering upstream fast means developers can work upstream, reducing technical debt
  • 25.
  • 26.
  • 27.
    One Way ToContinuously Deliver ● Align with OpenStack CI/CD ○ Same tools upstream ■ Zuul (Pipeline management) ■ Nodepool (resource management) ■ Gerrit (code review) ○ Build our own packages ● Ability to carry local patches ○ Needed for security patches ○ Also for bugs and features not landed upstream yet
  • 28.
  • 29.
  • 30.
    OVN vs. OVSPython Agents
  • 31.
    OpenStack Deployment Options ●Full devstack support ● Puppet OpenStack now supports OVN ● TripleO support posted for review ● Kolla support being planned
  • 32.
    • Non-experimental fornext OpenStack release (Newton) • Recently landed features: • L3 gateway with NAT and load-balancing support • IPv6 logical routing • Native DHCP service • Address Set for ACL/Security group • Kubernetes support Upcoming Release The “Microwave” Release
  • 33.
    Future Work ● Betterdatabase clustering and HA ● Avoid complete recalculations with incremental computation ● Native DNS support ● Live migration support for ACLs ● Hitless upgrades
  • 34.
    Resources • Architecture describedin detail in ovn-architecture (5) • Available in the “master” and “branch-2.6” branches of the main OVS repo: – https://github.com/openvswitch/ovs – http://openvswitch.org/support/dist-docs/ • Neutron plugin: – https://git.openstack.org/openstack/networking-ovn.git • Neutron integration docs, including devstack instructions: – http://docs.openstack.org/developer/networking-ovn/ • Kubernetes plugin and documentation: – https://github.com/openvswitch/ovn-kubernetes • OVN scale test harness – https://github.com/openvswitch/ovn-scale-test.git
  • 35.
    How you canhelp • Try it! Test it! Scale it! Report bugs! Write Code! • Core OVN is being developed on ovs-dev mailing list: – http://openvswitch.org/pipermail/dev/ – #openvswitch on Freenode • Neutron plugin for OVN is being developed here: – http://git.openstack.org/openstack/networking-ovn.git – openstack-dev mailing list – #openstack-neutron-ovn on Freenode
  • 36.
    Thank you! Questions? JustinPettit (@Justin_D_Pettit) Kyle Mestery (@mestery)