Formal Verification for Software-Defined Networking



Similar documents
Formal Specification and Programming for SDN

SOFTWARE DEFINED NETWORKS REALITY CHECK. DENOG5, Darmstadt, 14/11/2013 Carsten Michel

An Introduction to Software-Defined Networking (SDN) Zhang Fu

Securing Local Area Network with OpenFlow

OpenFlow: Concept and Practice. Dukhyun Chang

A Software-Defined Approach for End-to-end IoT Networking

Outline. Institute of Computer and Communication Network Engineering. Institute of Computer and Communication Network Engineering

COMPUTER SCIENCE TRIPOS

SDN Programming Languages. Programming SDNs!

SDN Architecture and Standards for Operational, at Scale Networks. 신명기 ETRI KRNET June 2012

Interactive Programming for Dynamic Network Probes A Use Case for POF Data Plane. Haoyu Song, Huawei Technologies

Simplify IT. With Cisco Application Centric Infrastructure. Barry Huang Nov 13, 2014

A Fuzzy Logic-Based Information Security Management for Software-Defined Networks

Software Defined Networking & Openflow

Open Source Network: Software-Defined Networking (SDN) and OpenFlow

The C Programming Language course syllabus associate level

I. ADDITIONAL EVALUATION RESULTS. A. Environment

SDN and Streamlining the Plumbing. Nick McKeown Stanford University

SDN/Virtualization and Cloud Computing

OpenFlow - the key standard of Software-Defined Networks. Dmitry Orekhov, Epam Systems

From Active & Programmable Networks to.. OpenFlow & Software Defined Networks. Prof. C. Tschudin, M. Sifalakis, T. Meyer, M. Monti, S.

You can probably work with decimal. binary numbers needed by the. Working with binary numbers is time- consuming & error-prone.

SDN. What's Software Defined Networking? Angelo Capossele

SDN_CDN Documentation

Restorable Logical Topology using Cross-Layer Optimization

Simplify IT. With Cisco Application Centric Infrastructure. Roberto Barrera VERSION May, 2015

Cloud Computing, Software Defined Networking, Network Function Virtualization

Various Alternatives to achieve SDN. Dhruv Dhody, Sr. System Architect, Huawei Technologies

OpenFlow and Onix. OpenFlow: Enabling Innovation in Campus Networks. The Problem. We also want. How to run experiments in campus networks?

High Availability Failover Optimization Tuning HA Timers PAN-OS 6.0.0

Software Defined Networks

Enhancing network security with SDN

Implementation of Address Learning/Packet Forwarding, Firewall and Load Balancing in Floodlight Controller for SDN Network Management

ViSION Status Update. Dan Savu Stefan Stancu. D. Savu - CERN openlab

SOFTWARE-DEFINED NETWORKING AND OPENFLOW

Software-Defined Networking for the Data Center. Dr. Peer Hasselmeyer NEC Laboratories Europe

Configuring DHCP Snooping

Development of global specification for dynamically adaptive software

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

SDN AND SECURITY: Why Take Over the Hosts When You Can Take Over the Network

MPLS Layer 2 VPNs Functional and Performance Testing Sample Test Plans

New Virtual Application Networks Innovations Advance Software-defined Network Leadership

Software Defined Networking What is it, how does it work, and what is it good for?

Ethernet-based Software Defined Network (SDN) Cloud Computing Research Center for Mobile Applications (CCMA), ITRI 雲 端 運 算 行 動 應 用 研 究 中 心

SOFTWARE-DEFINED NETWORKING AND OPENFLOW

Software-Defined Networking Architecture Framework for Multi-Tenant Enterprise Cloud Environments

Software Defined Networking

21.4 Network Address Translation (NAT) NAT concept

How To Load Balance On A Cisco Cisco Cs3.X With A Csono Css 3.X And Csonos 3.5.X (Cisco Css) On A Powerline With A Powerpack (C

Applying SDN to Network Management Problems. Nick Feamster University of Maryland

Comparisons of SDN OpenFlow Controllers over EstiNet: Ryu vs. NOX

SDN Overview for UCAR IT meeting 19-March Presenter Steven Wallace Support by the GENI Program Office!

SDN and OpenFlow. Naresh Thukkani (ONF T&I Contributor) Technical Leader, Criterion Networks

Using SDN-OpenFlow for High-level Services

1/20/2016 INTRODUCTION

The State of OpenFlow: Advice for Those Considering SDN. Steve Wallace Executive Director, InCNTRE SDN Lab Indiana University

Network Management. Jaakko Kotimäki. Department of Computer Science Aalto University, School of Science. 21. maaliskuuta 2016

Configuring a Load-Balancing Scheme

ONOS Open Network Operating System

Open Transport Switch:

Applications of Software-Defined Networking (SDN) in Power System Communication Infrastructure: Benefits and Challenges

Tutorial: OpenFlow in GENI

Recent Progress in Routing Standardization An IETF update for UKNOF 23

OpenDaylight Performance Stress Tests Report

A Systems of Systems. The Internet of Things. perspective on. Johan Lukkien. Eindhoven University

MPLS is the enabling technology for the New Broadband (IP) Public Network

Abstract. MEP; Reviewed: GAK 10/17/2005. Solution & Interoperability Test Lab Application Notes 2005 Avaya Inc. All Rights Reserved.

A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation

Software Defined Network Application in Hospital

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

On the effect of forwarding table size on SDN network utilization

Static Program Transformations for Efficient Software Model Checking

Cloud Networking Disruption with Software Defined Network Virtualization. Ali Khayam

NetStream (Integrated) Technology White Paper HUAWEI TECHNOLOGIES CO., LTD. Issue 01. Date

DEMYSTIFYING ROUTING SERVICES IN SOFTWAREDEFINED NETWORKING

SDN/OpenFlow. Dean Pemberton Andy Linton

Computational Mathematics with Python

Configuring a Load-Balancing Scheme

Network Security Demonstration - Snort based IDS Integration -

How To Write A Network Plan In Openflow V1.3.3 (For A Test)

SDN Architecture and Service Trend

Quick Start for Network Agent. 5-Step Quick Start. What is Network Agent?

The Past, Present, and Future of Software Defined Networking

Network Virtualization for Large-Scale Data Centers

Ethernet-based Software Defined Network (SDN)

Fiber Channel Over Ethernet (FCoE)

Outline VLAN. Inter-VLAN communication. Layer-3 Switches. Spanning Tree Protocol Recap

Mobility Management Framework in Software Defined Networks

Project 4: SDNs Due: 11:59 PM, Dec 11, 2014

Software Defined Networking, openflow protocol and its controllers

BROCADE NETWORKING: EXPLORING SOFTWARE-DEFINED NETWORK. Gustavo Barros Systems Engineer Brocade Brasil

Poisoning Network Visibility in Software-Defined Networks: New Attacks and Countermeasures Sungmin Hong, Lei Xu, Haopei Wang, Guofei Gu

Create bridges, add ports, show bridge and port statistics, status, as well as the OVS database

Validating the System Behavior of Large-Scale Networked Computers

Overview of OOO(O three) Open Innovation over Network Platform

SDN: Experimenting with the control to forwarding plane interface

Software Defined Networking (SDN)

SDN-based Application-Aware Networking on the Example of YouTube Video Streaming

Software Defined Networking

Transcription:

Formal Verification for Software-Defined Networking Myung-Ki Shin ETRI mkshin@etri.re.kr SDN RG Meeting@IETF 87 Berlin, Germany 1

Compiler-based SDN NBAPIs Apps (High-level Programming + Compiler + Debugger) OpenFlow protocol SDN Device Controller A Compiler that translates a high level language in which 3 rd Parties as well as Operators define what they want from the network and Compiles it into low level instructions (e.g., OF primitives) for the data plane. (Source- Kireeti Kompella@IETF85). 2

Why should we verify? To check consistency and safety of network configurations on virtual and physical resources No loops and/or blackholes in the network OF rule consistency between multiple applications on a controller Logically different networks should not interfere with each other (e.g., traffic isolation) New or update configurations conforms to properties of the network and do not break consistency of existing networks (e.g., network updates) (E.g.) multi-apps on a controller app1 route.py / app2 firewall.py à OF rule conflict route.py modifystate() load_balance.py POX Controller SDN Switch... firewall.py 3

SDN Invariants Basic network properties No loop No blackhole (e.g., packet loss) SDN-specific properties OF rule consistency between multiple applications Dynamic info/statistics consistency (e.g., flow, port, QoS, etc.) Consistency with legacy protocols (e.g., STP) 4

Our Approach: Formal Verification Two Verification Modes Runtime symbolic verification Off-line symbolic verification Formal verification is not visible to operators Applications (Python, Java, C, Ruby, etc.) 1. Execution (SDN Controller) Applications (Python, Java, C, Ruby, etc.) 1. Execution (SDN Control Emulator) 2. Formal Verification Static Checking Model Checking Theorem Proving.. 2. Formal Verification SDN Data plane (heterogeneous devices, switches, etc.) Static Checking Model Checking Theorem Proving.. Verified Applications Off-line symbolic verification Runtime symbolic verification 5

What is Formal Verification? Definition from academia A formal description is a specification expressed in a language whose semantics are formally defined, as well as vocabulary and syntax. The need for a formal semantic definition means that the specification language must be based on logic, mathematics, etc., not natural languages. Formal verification The act of proving or disproving the correctness of designs or implementations with respect to requirements and properties with which they must satisfy, using the formal methods or techniques 6

Our Verification Tool Set for SDN (VeriSDN) pacsr Generator pacsr to STG translator Property Verifier OpenFlow Flow Table pacsr description STG (Symbolic Transition Graph) Verification Results (Boolean Expression) Overall Process Flow table (OpenFlow) is translated into pacsr descriptions pacsr descriptions are fed into VeriSDN Tools In VeriSDN, Symbolic Transition Graph (STG) is generated and various property verification algorithms will be directly applied on STG The result will be boolean expression represented as either BDD or CNF, that show the condition that satisfies the given property 7

CPS vs. SDN ACSR was developed for formal verification of real-time embedded systems and CPS (Cyber Physical Systems). CPS is smart networked systems with embedded sensors, processors and actuators that are designed to sense and interact with the physical world. E.g., Blackout-free electricity generation and distribution; zero net energy buildings and cities; near-zero automotive traffic fatalities and significantly reduced traffic congestion; Guarantee correctness of safety-critical applications for CPS In both CPS and SDN, Software is the key (It s the software that determines system/network complexity) There are the same issues on verification of software and its modeling (behaviors). 8

ACSR (Algebra of Communicating Shared Resources) ACSR is a formal language which has notion of Resource, Time, and Priority Data Types Basic : Integer, Event Label, Resource Name, Process Composite : Set, Action, Event, Pair Operators and Expressions Expressions, Index Definitions, Operand Notation, Precedence and Associativity Integer : Arithmetic, Relational, Boolean, Miscellaneous Sets Process : Prefix, Composition, Context, Miscellaneous Commands Miscellaneous, Binding Process Variables, Queries, Process Equivalence Checking, Process Interpretation, Interpreter Commands Preprocessor Token Replacement, Macros, File Inclusion, Conditional Compilation.. 9

pacsr pacsr stands for packet based ACSR pacsr extends ACSR as follows Packets are passed as value (value passing) Parameters are also packets (parameterized process algebra) Predefined predicates and functions are the first class features packet predefined predicate sending packet P(x) := matchsrcip(x,sip)àch!x.nil S := ch?y.nil Sys := (P(x) S)/{ch} parallel composition receiving packet 10

Symbolic Verification Example (OpenFlow 1.3.1 - Flow Table & Topology) Matching Priority Counter Action Set Timeout Cookies S1 in_port1(ch1), ip_src: 10 out_port3(ch3) in_port2(ch2), ip_src: 10 in_port2(ch2), ip_src: 11 out_port3(ch3) out_port3(ch3) S2 in_port1(ch3), ip_src: 10 out_port2(ch4) in_port1(ch3), ip_src: 11 drop S3 in_port2(ch4), ip_src: 10 out_port1(ch2) 11

Flow Table to pacsr Port1 S1 S2 ch1 ch3 ch5 Port2 ch2 Port1 Port3 S3 Port1 Port2 ch4 Port2 Port3 S1 := ch1?x.s11(x) + ch2?x.s12(x) + {}:S1 S11(x) := matchsrcip(x,10)->{}:s13(x) + ~matchsrcip(x,10)->{}:s1 // no rule to match S12(x) := matchsrcip(x,10)->{}:s13(x) + ~matchsrcip(x,10)->tau.s14(x) S13(x) := ch3!x.s1 S14(x) := matchsrcip(x,11)->{}:s13(x) + ~matchsrcip(x,11)->{}:s1 // no rule to match S2 := ch3?x.s21(x) + {}:S2 S21(x) := matchsrcip(x,10)->{}:s23(x) + ~matchsrcip(x,10)->tau.s22(x) S22(x) := matchsrcip(x,11)->{}:s2 // drop + ~matchsrcip(x,11)->{}:s2 // no rule to match S23(x) := ch4!x.s2 S3 := ch4?x.s31(x) + {}:S3 S31(x) := matchsrcip(x,10)->{}:s32(x) + ~matchsrcip(x,10)->{}:s3 // no rule to match S32(x) := ch2!x.s3 E := ch1!x.e1 E1 := {}:E1 SDN := (S1 S2 S3 E)/{ch1,ch2,ch3,ch4} 12

pacsr Operational Semantics S1 := ch1?x.s11(x) + ch2?x.s12(x) + {}:S1 S2 := ch3?x.s21(x) + {}:S2 S21(x) := matchsrcip(x,10)->{}:s23(x) + ~matchsrcip(x,10)->tau.s22(x) S22(x) := matchsrcip(x,11)->{}:s2 + ~matchsrcip(x,11)->{}:s2 S23(x) := ch4!x.s2 Switch S1 gets packet from ch1 or ch2 and becomes S11 or S12, respectively. Otherwise, idle one time unit Switch S2 gets packet through ch3, otherwise, idle. Check if source IP of packet x is matched with 10 Otherwise, try to match other rules Check if source IP of packet x is matched with 11, and if so, drop it No rule to match, so become S2 Egress packet x through ch4 E := ch1!x.e1 Send packet x to ch1 E1 := {}:E1 Idle forever SDN := (S1 S2 S3 E)/{ch1,ch2,ch3,ch4} Switch S1, S2, S3, and Environment E is running in parallel 13

{} S1 S2 S3 E S1 S2 ch1 ch3 ch5 ch2 S3 ch4 pacsr to STG (Symbolic Transition Graph) tau@ch1 m(x,10); {} S11 S2 S3 E1 ~m(x,10); {} S1 S2 S3 E1 {} S13 S2 S3 E1 tau@ch3 m(x,11); {} ~m(x,11); {} S1 S21 S3 E1 ~m(x,10); tau S1 S22 S3 E1 m(x,10); {} S1 S23 S3 E1 tau@ch4 S1 S2 S31 E1 m(x,10); {} S1 S2 S32 E1 ~m(x,11); {} m(x,11); {} tau@ch2 S12 S2 S3 E1 m(x,10); {} S14 S2 S3 E1 ~m(x,10); tau 14

Symbolic Verification on STG S1 S2 ch1 ch3 ch5 {} S1 S2 S3 E tau@ch1 S11 S2 S3 E1 m(x,10); {} ab^ S13 S2 S3 E1 For simplicity, use m() instead matchsrcip() ch2 S3 ch4 ~m(x,10); {} tau@ch3 m(x,11); {} ~m(x,11); {} S1 S2 S3 E1 S1 S21 S3 E1 m(x,10); {} ~m(x,10); tau S1 S22 S3 E1 {} S1 S23 S3 E1 tau@ch4 S1 S2 S31 E1 m(x,10); {} ~m(x,11); {} m(x,11); {} S1 S2 S32 E1 tau@ch2 S12 S2 S3 E1 ab^ m(x,10); {} S14 S2 S3 E1 ~m(x,10); tau 15

VeriSDN: Status Wiki - www.verisdn.net Members ETRI, Cemware Co., Ltd., Korea Univ. Open source release Initial Release : POX (Python) support tool release(q4, 2013) C, Javalanguage support (in plan) Target Apps in plan OpenFlow 1.3.x Apps NSC (Network Service Chaining) Validation, Possibly IETF I2RS App (RIB, FIB, QoS, etc), Possibly 16

Implementation Architecture route.py load_balance.py firewall.py POX Controller Global Network View (DBs) (Aggregation of Flow Tables. Group Table, Meter Table, etc.) modifystate() pacsr Generator pacsr Model Checking LTL CTL Operators Defined Properties VeriFM (STG Generation) Basic Safety Properties SDN Switch SDN Switch... 17

Development Environment Multi-Apps Routing, Firewall Controller POX (Python) VeriFM VERSA (modified) Mininet OpenFlow Switch OVS Host OpenStack 18

Discussion and Next Step Is SDNRG interested in this topic? Investigate relevant works and challenging issues define simple/minimum semantics for SDN abstraction? Formal description and verification Develop a common framework document for formal verification of SDN 19