OVN Controller Incremental Processing

Slides:



Advertisements
Similar presentations
Logically Centralized Control Class 2. Types of Networks ISP Networks – Entity only owns the switches – Throughput: 100GB-10TB – Heterogeneous devices:
Advertisements

SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
Remote Procedure Call (RPC)
DATAFLOW ARHITEKTURE. Dataflow Processors - Motivation In basic processor pipelining hazards limit performance –Structural hazards –Data hazards due to.
Towards Autonomic Adaptive Scaling of General Purpose Virtual Worlds Deploying a large-scale OpenSim grid using OpenStack cloud infrastructure and Chef.
OpenFlow-Based Server Load Balancing GoneWild
Visibility Information Exchange Web System. Source Data Import Source Data Validation Database Rules Program Logic Storage RetrievalPresentation AnalysisInterpretation.
SDN and Openflow.
Scaling Distributed Machine Learning with the BASED ON THE PAPER AND PRESENTATION: SCALING DISTRIBUTED MACHINE LEARNING WITH THE PARAMETER SERVER – GOOGLE,
Names and Scopes CS 351. Program Binding We should be familiar with this notion. A variable is bound to a method or current block e.g in C++: namespace.
1CS 6401 Peer-to-Peer Networks Outline Overview Gnutella Structured Overlays BitTorrent.
Department of Computer Science 1 CSS 496 Business Process Re-engineering for BS(CS)
Workflow API and workflow services A case study of biodiversity analysis using Windows Workflow Foundation Boris Milašinović Faculty of Electrical Engineering.
Introduction To Windows Azure Cloud
Secure Incremental Maintenance of Distributed Association Rules.
Overlay network concept Case study: Distributed Hash table (DHT) Case study: Distributed Hash table (DHT)
Ashwani Roy Understanding Graphical Execution Plans Level 200.
NoSQL Databases Oracle - Berkeley DB Rasanjalee DM Smriti J CSC 8711 Instructor: Dr. Raj Sunderraman.
NoSQL Databases Oracle - Berkeley DB. Content A brief intro to NoSQL About Berkeley Db About our application.
The Volcano Query Optimization Framework S. Sudarshan (based on description in Prasan Roy’s thesis Chapter 2)
Triggers and Stored Procedures in DB 1. Objectives Learn what triggers and stored procedures are Learn the benefits of using them Learn how DB2 implements.
Cohesion and Coupling CS 4311
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
Efficient RDF Storage and Retrieval in Jena2 Written by: Kevin Wilkinson, Craig Sayers, Harumi Kuno, Dave Reynolds Presented by: Umer Fareed 파리드.
Graphene So what’s the most efficient way to spam all your Facebook friends? Team Adith Tekur (System Architect/Tester) Neha Rastogi (System Integrator)
1 © 2003, Cisco Systems, Inc. All rights reserved. CCNA 3 v3.0 Module 9 Virtual Trunking Protocol.
Client/Server Model: A Business View The different Client/server implementations differ according to: 1.Where the processing for the presentation of information.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
1. Efficient Peer-to-Peer Lookup Based on a Distributed Trie 2. Complex Queries in DHT-based Peer-to-Peer Networks Lintao Liu 5/21/2002.
Network Virtualization in Multi-tenant Datacenters Author: VMware, UC Berkeley and ICSI Publisher: 11th USENIX Symposium on Networked Systems Design and.
Scalable and Coordinated Scheduling for Cloud-Scale computing
Algorithms and Techniques in Structured Scalable Peer-to-Peer Networks
Implementing Remote Procedure Calls Andrew D. Birrell and Bruce Jay Nelson 1894 Xerox Palo Alto Research Center EECS 582 – W16.
Timestamp snooping: an approach for extending SMPs Milo M. K. Martin et al. Summary by Yitao Duan 3/22/2002.
Zach Miller Computer Sciences Department University of Wisconsin-Madison Supporting the Computation Needs.
CSC 212 – Data Structures Lecture 28: More Hash and Dictionaries.
SketchVisor: Robust Network Measurement for Software Packet Processing
Introduction to Operating Systems Concepts
SDN controllers App Network elements has two components: OpenFlow client, forwarding hardware with flow tables. The SDN controller must implement the network.
Xin Li, Chen Qian University of Kentucky
SDN challenges Deployment challenges
SDN Network Updates Minimum updates within a single switch
Programming SDN Newer proposals Frenetic (ICFP’11) Maple (SIGCOMM’13)
Software Testing.
Coupling and Cohesion 1.
SOFTWARE DESIGN AND ARCHITECTURE
NOX: Towards an Operating System for Networks
Observer Design Pattern
Software Design and Architecture
Task Scheduling for Multicore CPUs and NUMA Systems
Ch. 4 – Semantic Analysis Errors can arise in syntax, static semantics, dynamic semantics Some PL features are impossible or infeasible to specify in grammar.
Overview of SDN Controller Design
CHAPTER 3 Architectures for Distributed Systems
Indigo Doyoung Lee Dept. of CSE, POSTECH
CS 31006: Computer Networks – The Routers
Arrays and Linked Lists
Generic and Automatic Address Configuration for Data Center Networks
Ch 4. The Evolution of Analytic Scalability
Software Design Lecture : 9.
Past, Present, and Future
OVN DBs HA with scale test
Bin Ren, Gagan Agrawal, Brad Chamberlain, Steve Deitz
CS510 - Portland State University
Discussing an OVS/OVN Split
MAPREDUCE TYPES, FORMATS AND FEATURES
DryadInc: Reusing work in large-scale computations
CSc 453 Interpreters & Interpretation
Exceptions and networking
Elmo Muhammad Shahbaz Lalith Suresh, Jennifer Rexford, Nick Feamster,
Map Reduce, Types, Formats and Features
Presentation transcript:

OVN Controller Incremental Processing Han Zhou OVSCON 2018 1

Distributed Control Plane CMS (OpenStack/K8S) Logical/physical separation Distributed local controllers Database Approach (ovsdb) Northd North-bound ovsdb South-bound ovsdb Central Virtual Network Abstractions Logical Flows OVN-Controller OVS HV HV HV … GW OpenFlows OVSDB consistency enables easy separation between control-plane & data-plane. OVSDB protocol (RFC7047)

Scaling Challenge of OVN-Controller Size of data to be processed by each ovn-controller Distributed LR requires every HV processes data for all related ports E.g. 10k logical ports: at least 40k logical flows and 10k port-bindings Logical flow parsing is CPU intensive Cloud workload changes frequently

Recomputing Compute OVS flows by reprocessing all inputs when Any input changes Or even when there is no change at all (but just unrelated events) Benefit Relatively easy to implement and maintain Problems Big waste of CPU resource on all compute nodes High control plane latency

Incremental Processing Engine DAG representing dependencies Each node contains Data Links to input nodes Change-handler for each input Full recompute handler Engine DFS post-order traverse the DAG from the final output node Invoke change-handlers for inputs that changed Fall back to recompute if for ANY of its inputs: Change-handler is not implemented for that input, or Change-handler cannot handle the particular change (returns false) input input intermediate input intermediate output

Dependency Graph of OVN-Controller SB port_binding SB mc_group SB mac_binding SB logical_flow SB addr_set SB port_group SB gw_chassis SB dp_binding SB chassis SB dhcpv6 SB dhcp SB encap SB dns OVS port OVS qos OVS open_vswitch OVS bridge Address Sets (converted) Port Groups (converted) Runtime Data ------------------------------ Local_datapath Local_lports Local_lport_ids Active_tunnels Ct_zone_bitmap Pending_ct_zones Ct_zones MFF OVN Geneve SB OVSDB input Local OVSDB input Input with change handler implemented Flow Output --------------------------- Desired_flow_table Group_table Meter_table Conj_id_ofs Note: change handler for Runtime-Data is not implemented for Flow-Output node, so when SB port_binding change causes Runtime-Data change, it is going to trigger recompute in Flow-Output. Fortunately, in most cases port-binding change doesn’t cause Runtime-Data change, except when the port-binding is on local chassis, or it is a special purpose port, e.g. localnet, patch, chassis-redirection, etc. To support incremental processing in those scenarios, the Runtime-Data node needs to be splitted and more change handlers need to be implemented.

Dependency Discovery The idea of Functional Programming Engine node output depends only on inputs Removing global OVSDB IDL handle from engine nodes Support passing individual table as parameter Removing global variable access from engine functions Support OVSDB IDL change tracking for references Node A depends on Table1 which references Table2. When a row in Table2 changes, the related rows in Table1 are tracked, which triggers change handling in Node A. E.g. multicast_group references port_binding: port_binding change triggers multicast_group change handler automatically. Other Inputs T1 T2 Output A

Change-handler Implementation Join with other inputs Reuse functions for both recompute and change-handlers E.g. consider_logical_flow() Build indexes for efficient probing open flow open flow lflow update open flow open flow Hash Index: SB lflow uuid open flow open flow open flow address-set update logical flow logical flow logical flow Hash Index: SB Address Set uuid logical flow logical flow

CPU Efficiency Improvement Create and bind 10k ports on 1k HVs Simulated 1k HVs on 20 BMs x 40 cores (2.50GHz) Batch size 100 lports Bind port one by one for each batch Wait all ports up before next batch

Latency Improvement End to end latency when 10k port already there Create one more logical port Bind the port on HV Wait until northd generating the lflows and enforcing on all other HVs

Further Improvement Implement more change handlers as needed E.g. support incremental processing when port-binding happens locally - further improve end-to-end latency Incrementally flow installation Avoid full comparison between desired flows and installed flows in ofctrl_put()

Challenge of Incremental Processing Complexity of change handler implementation

The Future - Differential Datalog Differential Datalog (DDlog) An open-source datalog language for incremental data-flow processing Defining inputs and outputs as relations Defining rules to generate outputs from inputs Benefit Built-in incremental processing No need to implement change-handler manually Easier to maintain and add new features Effort reused for both OVN-northd and OVN-Controller

DDlog - what’s next OVSDB wrappers for DDlog input & output Rewrite the computation logic using DDlog Regression tests & scalability tests

DDlog Example Implement the LogicFlow-AddressSet mapping Input LogicFlow (id: uuid, match: string, action: string, ...) Input AddressSet (id: uuid, name: string, …) Output LflowAddrsetMap (lflow: uuid, addrset: uuid) LflowAddrsetMap (lflow: uuid, addrset: uuid) :- LogicFlow (lflow, match), FlatMap (addrset_name = addrset_from_match(match)), AddressSet (addrset, addrset_name).

References Incremental Processing on top of branch-2.10 https://github.com/hzhou8/ovs/tree/ip12_rebase_on_2.10 Differential Datalog https://github.com/ryzhyk/differential-datalog ovn-scale-test https://github.com/openvswitch/ovn-scale-test