Splendid ¡ ¡
Isola-on ¡
HotSDN ¡ Cole ¡Schlesinger ¡
A u g . ¡ 2 0 1 2 ¡Joint ¡work ¡with: ¡
Ste phe n ¡G utz ¡ A l e c ¡ S t o r y ¡ Nate ¡Foste r ¡
A ¡Slice ¡Abstrac-on ¡for ¡So4ware ¡Defined ¡Networks ¡
Isola-on A Slice Abstrac-on for So4ware Defined Networks - - PowerPoint PPT Presentation
Splendid Isola-on A Slice Abstrac-on for So4ware Defined Networks Cole Schlesinger HotSDN A u g . 2 0 1 2 Joint work with: Ste phe n G utz A l e c
Splendid ¡ ¡
Isola-on ¡
HotSDN ¡ Cole ¡Schlesinger ¡
A u g . ¡ 2 0 1 2 ¡Joint ¡work ¡with: ¡
Ste phe n ¡G utz ¡ A l e c ¡ S t o r y ¡ Nate ¡Foste r ¡
A ¡Slice ¡Abstrac-on ¡for ¡So4ware ¡Defined ¡Networks ¡[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡
[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡
[ReitblaL, ¡et ¡al. ¡ ¡Abstrac-ons ¡for ¡Network ¡Update. ¡ ¡SIGCOMM ¡’12] ¡
[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡
[ReitblaL, ¡et ¡al. ¡ ¡Abstrac-ons ¡for ¡Network ¡Update. ¡ ¡SIGCOMM ¡‘12] ¡
[Coming ¡soon!] ¡
[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡
[ReitblaL, ¡et ¡al. ¡ ¡Abstrac-ons ¡for ¡Network ¡Update. ¡ ¡SIGCOMM ¡‘12] ¡
[Coming ¡soon!] ¡
[This ¡talk.] ¡
¡
¡
the ¡language. ¡
Data ¡Center ¡Isola-on ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 8 ¡+ ¡
+ ¡
+ ¡
| ¡
Our ¡Approach ¡
– For ¡security ¡and ¡modularity. ¡
which ¡they ¡can ¡assume ¡complete ¡control ¡
slice, ¡compile ¡them ¡into ¡one ¡whole-‑ network ¡program ¡that ¡enforces ¡isola-on. ¡
15 ¡Slices ¡
16 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡Slices ¡
17 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡Slices ¡
18 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ Predicate ¡on ¡incoming ¡packets ¡ Predicate ¡on ¡outgoing ¡packets ¡Slices ¡
19 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡| ¡
Slice ¡1 ¡ Slice ¡2 ¡Isola-on ¡as ¡Modularity ¡
21 ¡ C2 ¡ C12 ¡ C11 ¡ C13 ¡Mul--‑part ¡ Controller ¡Program ¡
Isola-on ¡as ¡Modularity ¡
22 ¡ C2 ¡ C12 ¡ C11 ¡ C13 ¡ARP ¡
Isola-on ¡as ¡Modularity ¡
23 ¡ C2 ¡ C12 ¡ C11 ¡ C13 ¡ARP ¡ MAC ¡Learning ¡
Isola-on ¡as ¡Modularity ¡
24 ¡ARP ¡ Traffic ¡Monitoring ¡
C2 ¡ C12 ¡ C11 ¡ C13 ¡MAC ¡Learning ¡
Implementa-on ¡
25 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡Input: ¡a ¡set ¡of ¡slices ¡and ¡ NetCore ¡policies. ¡
(Must ¡be ¡VLAN-‑independent.) ¡Implementa-on ¡
26 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡Input: ¡a ¡set ¡of ¡slices ¡and ¡ NetCore ¡policies. ¡
(Must ¡be ¡VLAN-‑independent.) ¡Implementa-on ¡
27 ¡ NetCore ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡Input: ¡a ¡set ¡of ¡slices ¡and ¡ NetCore ¡policies. ¡ Output: ¡a ¡single, ¡global ¡ NetCore ¡policy. ¡
Implementa-on ¡
28 ¡ NetCore ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡ N O X , ¡ N e W l e , ¡ F l o o d l i g h t , ¡ e t c . ¡Input: ¡a ¡set ¡of ¡slices ¡and ¡
Output: ¡a ¡single, ¡global ¡ NetCore ¡policy. ¡
(Must ¡be ¡VLAN-‑independent.) ¡Verifica-on ¡
30 ¡ A2 ¡ A1 ¡ Slice ¡Compiler ¡ NetCore ¡ A2 ¡ A1 ¡Verifica-on ¡
31 ¡Model ¡NetCore ¡ policies ¡in ¡SMT ¡(Z3). ¡
1 ¡
A2 ¡ A1 ¡ Slice ¡Compiler ¡ NetCore ¡ A2 ¡ A1 ¡φ ∧ φ0
∧ ψ ∧ ψ0 The security
Verifica-on ¡
32 ¡Verify ¡isola-on. ¡
2 ¡
A2 ¡ A1 ¡ Slice ¡Compiler ¡ NetCore ¡ A2 ¡ A1 ¡φ ∧ φ0
∧ ψ ∧ ψ0 The security
Model ¡NetCore ¡ policies ¡in ¡SMT ¡(Z3). ¡
1 ¡
Verifica-on ¡
33 ¡Model ¡NetCore ¡ policies ¡in ¡SMT ¡(Z3). ¡
1 ¡
Verify ¡isola-on. ¡
2 ¡
Verify ¡seman-c ¡
1 ¡
≅ ¡
A2 ¡ A1 ¡ Slice ¡Compiler ¡ NetCore ¡ A2 ¡ A1 ¡φ ∧ φ0
∧ ψ ∧ ψ0 The security
Contribu-ons ¡
Contribu-ons ¡
enforces ¡isola-on. ¡
35 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡ N O X , ¡ N e W l e , ¡ F l o o d l i g h t , ¡ e t c . ¡Contribu-ons ¡
enforces ¡isola-on. ¡
guarantees: ¡
36 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ NetCore ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡ N O X , ¡ N e W l e , ¡ F l o o d l i g h t , ¡ e t c . ¡Contribu-ons ¡
enforces ¡isola-on. ¡
guarantees: ¡
– isola-on ¡
37 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ NetCore ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡ N O X , ¡ N e W l e , ¡ F l o o d l i g h t , ¡ e t c . ¡Contribu-ons ¡
– Security ¡ – Modularity ¡
enforces ¡isola-on. ¡
guarantees: ¡
– isola-on, ¡and ¡ – seman-c ¡
≅ ¡
Thank ¡ you! ¡
Read ¡the ¡paper: ¡
frene-c-‑lang.org/papers ¡
Get ¡the ¡code: ¡
github.com/frene-c-‑lang/netcore ¡
See ¡the ¡demo: ¡
Find ¡me ¡a4er ¡the ¡talk! ¡
We ¡wish ¡to ¡thank ¡Shrutarshi ¡Basu, ¡Arjun ¡Guha, ¡Josh ¡Reich, ¡Mark ¡ReitblaL, ¡Jennifer ¡Rexford, ¡and ¡David ¡ Walker ¡for ¡many ¡helpful ¡comments ¡and ¡sugges-ons. ¡ ¡Re-‑imagining ¡the ¡fundamentals ¡of ¡network ¡ implementa-on ¡from ¡a ¡programming ¡languages ¡point ¡of ¡ view: ¡ ¡
Frene-c ¡is ¡a ¡new ¡programming ¡language ¡we ¡are ¡crea-ng ¡ to ¡explore ¡these ¡ques-ons ¡and ¡more ¡
One ¡program ¡to ¡ rule ¡them ¡ ¡ all ¡… ¡
NetCore: ¡Program ¡Composi-on ¡
PaWern ¡ AcZon ¡ inPort ¡= ¡2 ¡ Forward ¡1 ¡ inPort ¡= ¡1 ¡ Forward ¡2 ¡ 43 ¡ PaWern ¡ AcZon ¡ tpSrc ¡= ¡22 ¡ Drop ¡ tpSrc ¡= ¡80 ¡ Drop ¡Repeater ¡ Monitor ¡
NetCore: ¡Program ¡Composi-on ¡
PaWern ¡ AcZon ¡ inPort ¡= ¡2 ¡ Forward ¡1 ¡ inPort ¡= ¡1 ¡ Forward ¡2 ¡ 44 ¡ PaWern ¡ AcZon ¡ tpSrc ¡= ¡22 ¡ Drop ¡ tpSrc ¡= ¡80 ¡ Drop ¡Repeater ¡ Monitor ¡ Net C o re ¡ Repeater ¡ Monitor ¡
VLAN-‑based ¡Isola-on ¡
Slice ¡Compiler ¡VLAN-‑based ¡Isola-on ¡
VLAN=2 ¡ VLAN=1 ¡ Slice ¡Compiler ¡VLAN-‑based ¡Isola-on ¡
Slice ¡Compiler ¡Data ¡Center ¡Isola-on ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 48 ¡+ ¡
+ ¡
+ ¡
| ¡
Isola-on ¡as ¡Modularity ¡
56 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡Mul--‑part ¡ Controller ¡Program ¡
Isola-on ¡as ¡Modularity ¡
57 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ARP ¡
Isola-on ¡as ¡Modularity ¡
58 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ARP ¡ LLDP ¡
Isola-on ¡as ¡Modularity ¡
59 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ARP ¡ LLDP ¡ NAT ¡
Isola-on ¡as ¡Modularity ¡
60 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ARP ¡ LLDP ¡ NAT ¡ IP ¡RouZng ¡
Read-‑only ¡Slices ¡
61 ¡Precise ¡Seman-cs ¡
62 ¡Contribu-ons ¡
63 ¡Contribu-ons ¡
Slices ¡
65 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡Slices ¡
66 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡Slices ¡
67 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡Slices ¡
68 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡Programming ¡with ¡Slices ¡
69 ¡ Ethernet ¡type: ¡ 0x0806 ¡Programming ¡with ¡Slices ¡
70 ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡Programming ¡with ¡Slices ¡
71 ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡Contribu-ons ¡
enforces ¡isola-on. ¡
72 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡VLAN-‑based ¡Isola-on ¡
VLAN-‑based ¡Isola-on ¡
VLAN=2 ¡ VLAN=1 ¡VLAN-‑based ¡Isola-on ¡
Contribu-ons ¡
enforces ¡isola-on. ¡
76 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡Contribu-ons ¡
enforces ¡isola-on. ¡
77 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡Contribu-ons ¡
enforces ¡isola-on. ¡
78 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡ N O X , ¡ N e W l e , ¡ F l o o d l i g h t , ¡ e t c . ¡Contribu-ons ¡
enforces ¡isola-on. ¡
guarantees: ¡
79 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡Contribu-ons ¡
enforces ¡isola-on. ¡
guarantees: ¡
– isola-on ¡
80 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡Contribu-ons ¡
enforces ¡isola-on. ¡
guarantees: ¡
– isola-on, ¡and ¡ – seman-c ¡
≅ ¡
Verifying ¡the ¡Results ¡
82 ¡NetCore ¡
B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡Encoded ¡using ¡ SMT ¡(Z3) ¡ Encoded ¡using ¡ model ¡checking ¡ (NuSMV) ¡
Contribu-ons ¡
enforces ¡isola-on. ¡
guarantees: ¡
– isola-on, ¡and ¡ – seman-c ¡
≅ ¡
Thank ¡ you! ¡
Read ¡the ¡paper: ¡
frene-c-‑lang.org/papers ¡
Get ¡the ¡code: ¡
github.com/frene-c-‑lang/netcore ¡
Integrity ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡1
Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡Integrity ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡1
Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡Integrity ¡
R1 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡1
Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡Integrity ¡
R1 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡1
Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡Confiden-ality ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡Confiden-ality ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡Confiden-ality ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡Confiden-ality ¡
A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡Establishing ¡Isola-on ¡
to-‑end ¡proper-es. ¡
simple, ¡local ¡proper-es. ¡
94 ¡Implementa-on ¡
Verifica-on ¡
guarantee ¡that ¡they ¡are ¡separate. ¡
program ¡and ¡a ¡compiled ¡program, ¡verify ¡that ¡ they ¡are ¡seman-cally ¡equivalent. ¡
96 ¡Read ¡the ¡paper: ¡ hLp://www.cs.princeton.edu/~cschlesi ¡ ¡ Download ¡the ¡code: ¡ hLps://github.com/frene-c-‑lang/netcore ¡
97 ¡Isola-on ¡as ¡Modularity ¡
One ¡approach: ¡like ¡SFI ¡
and ¡prevent ¡them ¡from ¡broaching ¡their ¡ respec-ve ¡boxes ¡(slices). ¡
– Absolute. ¡ – Says ¡nothing ¡about ¡what ¡happens ¡within ¡a ¡slice. ¡
Problem: ¡Very ¡Coarse-‑grained ¡
by ¡construc-on. ¡
– Consider ¡an ¡admin/billing ¡slice ¡that ¡monitors ¡use. ¡ ¡ Isola-on ¡is ¡too ¡strong, ¡but ¡without ¡isola-on, ¡what ¡ do ¡we ¡have? ¡
Limita-ons ¡
interac-on. ¡
?
B ¡ A ¡ ARP ¡ A2 ¡ A3 ¡ A4 ¡Splendid ¡ ¡
Isolation
HotSDN ¡ Cole ¡Schlesinger ¡
A u g . ¡ 2 0 1 2 ¡Joint ¡work ¡with: ¡
D av id ¡ W alk e r ¡ Ste phe n ¡G utz ¡ A l e c ¡ S t o r y ¡ Nate ¡Foste r ¡