Download presentation
Presentation is loading. Please wait.
Published byRoberta Wilkerson Modified over 8 years ago
1
Reasoning about Software Defined Networks Shachar Itzhaky & Mooly Sagiv msagiv@acm.org 03-640-7606 Tel Aviv University Thursday 16-18 (Physics 105) Monday 14-16 Schrieber 317 Adviser: Michael Shapira Hebrew University http://www.cs.tau.ac.il/~msagiv/courses/rsdn.html Some slides from J. Rexford POPL’12 invited talk
2
Some Lessons from Michael’s talk Some tasks are more suitable for distribution – Frequently Executed – Simple – Regular – Can be implemented in hardware – Data is distributed Some tasks can be executed sequentially without effecting scalablity – Complicated – Rarely executed – Increase the effectiveness of the distributed process The SDN provides an interesting compromise OpenFlow is a reasonable realization
3
Content Challenges in SDNs Programming Language Abstractions Programming Language Principles Program Language Tools Other useful tools Beyond SDNs
4
Challenges in SDN Programming complexity Modularity Composing operations Handling Updates Reliability Performance Testing Productivity Non-expert programmers
5
How hard is it to program networks Routers with 20+ million lines of code Cascading failures, vulnerabilities, etc Low level programming No abstractions – Virtual memory – Operating Systems – Resource Allocations – Libraries – Types
6
Modularity: Simple Repeater def repeater(switch): # Repeat Port 1 to Port 2 pat1 = {in_port:1} act1 = [forward(2)] install(switch, pat1, DEFAULT, act1) # Repeat Port 2 to Port 1 pat2 = {in_port:2} act2 = [forward(1)] install(switch, pat2, DEFAULT, act2) def repeater(switch): # Repeat Port 1 to Port 2 pat1 = {in_port:1} act1 = [forward(2)] install(switch, pat1, DEFAULT, act1) # Repeat Port 2 to Port 1 pat2 = {in_port:2} act2 = [forward(1)] install(switch, pat2, DEFAULT, act2) Simple Repeater 12 Controller When a switch joins the network, install two forwarding rules.
7
Composition: Web Traffic Monitor def web_monitor(switch)): # Web traffic from Internet pat = {inport:2,tp_src:80} install(switch, pat, DEFAULT, []) query_stats(switch, pat) def stats_in(switch, pat, bytes, …) print bytes sleep(30) query_stats(switch, pat) def web_monitor(switch)): # Web traffic from Internet pat = {inport:2,tp_src:80} install(switch, pat, DEFAULT, []) query_stats(switch, pat) def stats_in(switch, pat, bytes, …) print bytes sleep(30) query_stats(switch, pat) Monitor Web (“port 80”) traffic 12 Web traffic When a switch joins the network, install one monitoring rule.
8
Composition: Repeater + Monitor def switch_join(switch): pat1 = {inport:1} pat2 = {inport:2} pat2web = {in_port:2, tp_src:80} install(switch, pat1, DEFAULT, None, [forward(2)]) install(switch, pat2web, HIGH, None, [forward(1)]) install(switch, pat2, DEFAULT, None, [forward(1)]) query_stats(switch, pat2web) def stats_in(switch, xid, pattern, packets, bytes): print bytes sleep(30) query_stats(switch, pattern) def switch_join(switch): pat1 = {inport:1} pat2 = {inport:2} pat2web = {in_port:2, tp_src:80} install(switch, pat1, DEFAULT, None, [forward(2)]) install(switch, pat2web, HIGH, None, [forward(1)]) install(switch, pat2, DEFAULT, None, [forward(1)]) query_stats(switch, pat2web) def stats_in(switch, xid, pattern, packets, bytes): print bytes sleep(30) query_stats(switch, pattern) Repeater + Monitor Must think about both tasks at the same time.
9
Concurrency: Switch-Controller Delays Common programming idiom – First packet goes to the controller – Controller installs rules 9 packets
10
Concurrency: Switch-Controller Delays More packets arrive before rules installed? – Multiple packets reach the controller packets
11
Concurrency: Switch-Controller Delays Rules along a path installed out of order? – Packets reach a switch before the rules do Must think about all possible packet and event orderings. packets
12
Debugging is hard[Kazemian NSDI’13] Distributed switch tables Varied delays Cascading effects on switch tables Multiple protocols Human interaction …
13
SDN Performance Given an SDN controller code Estimate the cost of routing per packet – Length of the path – Weight of the path – Number of controller interventions
14
Programming Language Abstractions Hide the implementation Interpreter/Compiler guarantees performance Benefits – Portability – Ease of use – Reliability – Compositionality – Productivity
15
Language Abstractions Procedures Data Types – Enumerated types – Arrays Abstract data types Classes and Objects Resources – Memory management – Garbage collection Control abstractions – Exceptions – Iterators – Tree Pattern Matching – Higher order functions – Continuation – Lazy evaluation – Monads Libraries Domain specific languages Declarative programming
16
Programming Language Principles Rigorously define the meaning of programs Supports abstraction Prove compiler correctness Prove that two SDN programs are observationally equivalent – The same packet transmissions
17
A Simple Example Numeric Expressions – ::= + | * | number The semantic of expressions is a number E : int Inductively defined – E n = n – E e 1 + e 2 = E e 1 + E e 2 – E e 1 * e 2 = E e 1 * E e 2 Compositional Fully abstract e 1 e 2 iff E e 1 = E e 2 5 + 6 7 + 3 + 1
18
A Simple Example + Var Numeric Expressions – ::= + | * | number | id – ::= skip | id := exp | ; Need to introduce states Var Int Examples – [x 2, y 3] x = – [x 2, y 3] z = – [x 2, y 3][z 5] = [x 2, y 3,z 5] – [x 2, y 3][x 5] = [x 5, y 3] – [x 2, y 3][x 5]x = 5 – [x 2, y 3][x 5]y = 2
19
A Simple Example + Var Numeric Expressions – ::= + | * | number | id The semantic of expressions is a function from states to numbers E : (Var Int) Int Inductively defined – E n = n – E e 1 + e 2 = E e 1 + E e 2 – E e 1 * e 2 = E e 1 * E e 2 – E id = id – E x+2 [x 5] = E x [x 5] + E 2 [x 5] = [x 5]x + 2 = 5 + 2 =7 – x + x 2 * x – e1 + e2 e2 + e1
20
The semantics of commands Commands – ::= skip | id := exp | ; | id The semantic of command is a function from states to states C : (Var Int) (Var Int) Inductively defined – C skip = – C id := e = [ id E e ] – C c 1 ; c 2 = C c 2 (C[c 1 ] ) – c ; skip skip ; c c – c 1 ; (c 2 ; c 3 ) (c 1 ; c 2 ) ; c 3
21
Benefits of formal semantics Can be done for arbitrary languages Automatically generate interpreters Rational language design Formal proofs of language properties – Observational equivalence – Type safety Correctness of tools – Interpreter – Compiler – Static Analyzer – Model Checker
22
A Simple Controller Language No packet changes No priorities No statistics Simple updates – Per-flow installation
23
A Simple Controller Language ::= * ::= rel ( *) // auxiliary relations ::= packetIn (sid, pid, ) ::= port(int) ::= skip | send( ) | install (sid, pid,, ) // update flow table | rid.insert( *) // update auxiliary relations | if rid( *) then * else * | if rid( *) then * | ; ::= |none // drop the package ::= id | exp. id |
24
Learning Switch with 3 ports rel connected (Sw, Pr, Ho) PacketIn(s, p, port(1)) -> connected.insert (s, port(1), p.src) if connected(s, port(2), p.dst) then { send (port(2)) install(s, p, port(1), port(2)) } else if connected(s, port(3), p.dst) then { send (port(3)) install(s, p, port(1), port(3)) } else { // flood send (port(2)) send (port(3)) } PacketIn(s, p, port(2)) -> … PacketIn(s, p, port(3)) -> …
25
The semantics of the controller What is the meaning of package sent by a given host? – A set of paths Example: Learning Switch a 1 2 3
26
The semantics of the controller What is the meaning of package sent by a given host? – A set of paths Dynamically changed – Even for fixed topology Unbounded length But can it be defined?
27
The State of a switch The switch table is a relation between packets input and output ports FT = Sw P(Pk Pr Pr {none}) Updated by the controller Actual nodes depend on the topology graph input portoutput port
28
The Semantics of Expressions ::= id | exp.id | Val = Int Pr {P(T t 1 … T t k | t 1, …, t k are valid types} Controller State such that : Var Val E id = id E exp.id = F id (E e ) E port(n) = n
29
The Meaning of Commands ::= skip | send( ) | install (sid, pid,, ) | rid.insert( *) | if RID( *) then * else * | if RID( *) then * | ; ::= |none C : ( FT) ( FT P(Pr {none}) input-stateoutput
30
Atomic Commands C skip , ft = , ft, C send(pr) , ft = , ft, {E pr } C install(sw, pk, pr in,pr out ) , ft = , ft[sw ft(sw) { pk, E pr in , E pr out }, C r.insert(e) , ft = [ r r { E e } ], ft,
31
Conditional Commands C if r(e) then c 1 else c 2 , ft = C c 1 , ft C c 2 , ft If E e r If E e r
32
Sequential Composition C c 1 ; c 2 , ft = let ’, ft’, prs 1 = C c 1 , ft ”, ft”, prs 2 = C c 2 ’, ft’ in ”, ft”, prs 1 prs 2
33
Semantics of Events G : (Sw Pk Pr) P(( FT) ( FT P(Pr {none})) G packetIn(s, p, i) c sw, pk, ip = R where , ft R ’, ft’, ports Iff ( op : Pr. pk, ip, op ft) C c [s sw, p pk,i ip], ft = ’, ft’, sp
34
Packet Histories Packets can influence the routing of other packets Histories can be seen as sequences of packet transmissions HST= ( Sw Pr Pk (Pr {none}) ) *
35
Small-step semantics (Controller) ctrl : ( FT HST) ( FT HST) , ft, h ctrl ’, ft’, h’ iff sw : Sw, pk : Pk, ip : Pr, sp : P(Pr). , ft, sw ( G evnt sw, pk, ip ) ’, ft’, sp h’ = h sw, ip, pk, j j sp (sp = j=none)
36
Small-step Semantics (Switch) sw : ( FT HST) ( FT HST) , ft, h switch ’, ft’, h’ iff = ’ ft=ft’ sw : Sw, pk : Pk, ip : Pr, op : Pr {none}. pk, ip, op ft sw h’ = h sw, ip, pk, op
37
Executions Combined step semantics: – = ctrl switch A sequence of event processing steps has the from – a 1 a 2 … a n
38
Feasible Histories Given a topology graph G over V = Ho (Sw Pr) A history h is feasible w.r.t. a given topology graph G iff for any packet pk Pk: – any two consecutive entries for p in h: sw 1, ip 1, pk, op 1 and sw 2, ip 2, pk, op 2 there exists an edge between sw 1, op 1 and sw 2, ip 2 in G
39
InPktOut Example a 1 2 3 Port inPacketPort out PortHost connected =
40
InPktOut Example a 1 2 3 Port inPacketPort out 21 23 PortHost 2 connected =
41
InPktOut 3 2 Example a 1 2 3 Port inPacketPort out 21 23 32 PortHost 2 3 connected =
42
InPktOut 3 2 Example a 1 2 3 Port inPacketPort out 21 23 32 32 PortHost 2 3 connected =
43
Properties of the Semantics Compositional Allows free packets Assume that (controller) actions executed atomically – Ignores delays in switch rule instantiations
44
Useful Programming Language Tools Interpreter Compiler Parser Type Checker Static Program Analysis Verification Tool Dynamic Program Analysis – Model checker
45
Verification Process Controller Code Required properties VC gen Verification Condition T P “ ” SAT Solver Counterexample Proof Topology T
46
Interesting Network Properties PropertyMeaning ConnectivityEvery packet eventually reaches its destination No forwarding loopsA switch sw never receives a packet sent by sw No black holesNo packet should be dropped in the network Access controlNo paths between certain hosts of certain packets Direct pathsOnce a packet reached its destination future packets are not going to the controller Strict direct pathsOnce two packets travel both ways between a source and destination Data structure integrity The controller data structures ``correctly’’ records the network states
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.