Isola-on A Slice Abstrac-on for So4ware Defined Networks - - PowerPoint PPT Presentation

isola on
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

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 ¡
slide-2
SLIDE 2
  • How ¡does ¡one ¡read ¡the ¡state ¡of ¡the ¡network? ¡

[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡

slide-3
SLIDE 3
  • How ¡does ¡one ¡read ¡the ¡state ¡of ¡the ¡network? ¡

[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡

  • How ¡does ¡one ¡write ¡the ¡state ¡of ¡the ¡network? ¡

[ReitblaL, ¡et ¡al. ¡ ¡Abstrac-ons ¡for ¡Network ¡Update. ¡ ¡SIGCOMM ¡’12] ¡

slide-4
SLIDE 4
  • How ¡does ¡one ¡read ¡the ¡state ¡of ¡the ¡network? ¡

[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡

  • How ¡does ¡one ¡write ¡the ¡state ¡of ¡the ¡network? ¡

[ReitblaL, ¡et ¡al. ¡ ¡Abstrac-ons ¡for ¡Network ¡Update. ¡ ¡SIGCOMM ¡‘12] ¡

  • How ¡does ¡one ¡define ¡a ¡new ¡(virtual) ¡network? ¡

[Coming ¡soon!] ¡

slide-5
SLIDE 5
  • How ¡does ¡one ¡read ¡the ¡state ¡of ¡the ¡network? ¡

[Foster, ¡et ¡al. ¡Frene-c: ¡A ¡Network ¡Programming ¡Language. ¡ ¡ICFP ¡‘11.] ¡

  • How ¡does ¡one ¡write ¡the ¡state ¡of ¡the ¡network? ¡

[ReitblaL, ¡et ¡al. ¡ ¡Abstrac-ons ¡for ¡Network ¡Update. ¡ ¡SIGCOMM ¡‘12] ¡

  • How ¡does ¡one ¡define ¡a ¡new ¡(virtual) ¡network? ¡

[Coming ¡soon!] ¡

  • How ¡does ¡one ¡compose ¡two ¡network ¡programs? ¡

[This ¡talk.] ¡

slide-6
SLIDE 6

¡

  • How ¡does ¡one ¡compose ¡two ¡network ¡programs? ¡
slide-7
SLIDE 7

¡

  • How ¡does ¡one ¡compose ¡two ¡network ¡programs? ¡
  • Define ¡a ¡new ¡slice ¡abstrac-on. ¡
  • Li4 ¡slices ¡(and ¡isola-on) ¡into ¡

the ¡language. ¡

slide-8
SLIDE 8 Topology ¡

Data ¡Center ¡Isola-on ¡

A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 8 ¡
slide-9
SLIDE 9 Client ¡1 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 9 ¡ Policy ¡1 ¡
slide-10
SLIDE 10 Client ¡2 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 10 ¡ Policy ¡2 ¡
slide-11
SLIDE 11 Client ¡1 ¡+ ¡Client ¡2 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ Overlap ¡ Client ¡2 ¡ Client ¡1 ¡ 11 ¡ Policy ¡2 ¡ Policy ¡1 ¡

+ ¡

slide-12
SLIDE 12 Client ¡2 ¡injects ¡packets ¡into ¡Client ¡1’s ¡sec-on ¡of ¡the ¡network! ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ Overlap ¡ Client ¡2 ¡ Client ¡1 ¡ 12 ¡ Policy ¡2 ¡ Policy ¡1 ¡

+ ¡

slide-13
SLIDE 13 Client ¡2 ¡intercepts ¡packets ¡from ¡Client ¡1’s ¡sec-on ¡of ¡the ¡network! ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ Overlap ¡ Client ¡2 ¡ Client ¡1 ¡ 13 ¡ Policy ¡2 ¡ Policy ¡1 ¡

+ ¡

slide-14
SLIDE 14 Client ¡1 ¡ Client ¡2 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡ 14 ¡ Policy ¡2 ¡ Policy ¡1 ¡

| ¡

slide-15
SLIDE 15

Our ¡Approach ¡

  • Make ¡isola-on ¡part ¡of ¡the ¡language. ¡

– For ¡security ¡and ¡modularity. ¡

  • Give ¡each ¡client ¡a ¡slice ¡of ¡the ¡network ¡

which ¡they ¡can ¡assume ¡complete ¡control ¡

  • ver, ¡as ¡if ¡they ¡were ¡alone ¡on ¡the ¡
  • network. ¡
  • Given ¡a ¡set ¡of ¡slices ¡and ¡a ¡policy ¡for ¡each ¡

slice, ¡compile ¡them ¡into ¡one ¡whole-­‑ network ¡program ¡that ¡enforces ¡isola-on. ¡

15 ¡
slide-16
SLIDE 16

Slices ¡

16 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡
slide-17
SLIDE 17

Slices ¡

17 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡
slide-18
SLIDE 18

Slices ¡

18 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ Predicate ¡on ¡incoming ¡packets ¡ Predicate ¡on ¡outgoing ¡packets ¡
slide-19
SLIDE 19

Slices ¡

19 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡
slide-20
SLIDE 20 Client ¡1 ¡ Client ¡2 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡ 20 ¡ Policy ¡2 ¡ Policy ¡1 ¡

| ¡

Slice ¡1 ¡ Slice ¡2 ¡
slide-21
SLIDE 21

Isola-on ¡as ¡Modularity ¡

21 ¡ C2 ¡ C12 ¡ C11 ¡ C13 ¡

Mul--­‑part ¡ Controller ¡Program ¡

slide-22
SLIDE 22

Isola-on ¡as ¡Modularity ¡

22 ¡ C2 ¡ C12 ¡ C11 ¡ C13 ¡

ARP ¡

slide-23
SLIDE 23

Isola-on ¡as ¡Modularity ¡

23 ¡ C2 ¡ C12 ¡ C11 ¡ C13 ¡

ARP ¡ MAC ¡Learning ¡

slide-24
SLIDE 24

Isola-on ¡as ¡Modularity ¡

24 ¡

ARP ¡ Traffic ¡Monitoring ¡

C2 ¡ C12 ¡ C11 ¡ C13 ¡

MAC ¡Learning ¡

slide-25
SLIDE 25

Implementa-on ¡

25 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡

Input: ¡a ¡set ¡of ¡slices ¡and ¡ NetCore ¡policies. ¡

(Must ¡be ¡VLAN-­‑independent.) ¡
slide-26
SLIDE 26

Implementa-on ¡

26 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡

Input: ¡a ¡set ¡of ¡slices ¡and ¡ NetCore ¡policies. ¡

(Must ¡be ¡VLAN-­‑independent.) ¡
slide-27
SLIDE 27

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. ¡

slide-28
SLIDE 28

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 ¡

  • policies. ¡

Output: ¡a ¡single, ¡global ¡ NetCore ¡policy. ¡

(Must ¡be ¡VLAN-­‑independent.) ¡
slide-29
SLIDE 29 A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 29 ¡ Controller ¡1 ¡ Controller ¡2 ¡ FlowVisor ¡
slide-30
SLIDE 30

Verifica-on ¡

30 ¡ A2 ¡ A1 ¡ Slice ¡Compiler ¡ NetCore ¡ A2 ¡ A1 ¡
slide-31
SLIDE 31

Verifica-on ¡

31 ¡

Model ¡NetCore ¡ policies ¡in ¡SMT ¡(Z3). ¡

1 ¡

A2 ¡ A1 ¡ Slice ¡Compiler ¡ NetCore ¡ A2 ¡ A1 ¡

φ ∧ φ0

∧ ψ ∧ ψ0 The security

slide-32
SLIDE 32

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 ¡

slide-33
SLIDE 33

Verifica-on ¡

33 ¡

Model ¡NetCore ¡ policies ¡in ¡SMT ¡(Z3). ¡

1 ¡

Verify ¡isola-on. ¡

2 ¡

Verify ¡seman-c ¡

  • equivalence. ¡

1 ¡

≅ ¡

A2 ¡ A1 ¡ Slice ¡Compiler ¡ NetCore ¡ A2 ¡ A1 ¡

φ ∧ φ0

∧ ψ ∧ ψ0 The security

slide-34
SLIDE 34

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
34 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡
slide-35
SLIDE 35 NetCore ¡

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

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 . ¡
slide-36
SLIDE 36

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

  • A ¡verifier ¡that ¡

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 . ¡
slide-37
SLIDE 37

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

  • A ¡verifier ¡that ¡

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 . ¡
slide-38
SLIDE 38

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡

– Security ¡ – Modularity ¡

  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

  • A ¡verifier ¡that ¡

guarantees: ¡

– isola-on, ¡and ¡ – seman-c ¡

  • equivalence. ¡
38 ¡ 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 . ¡

≅ ¡

slide-39
SLIDE 39 3 9 ¡

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. ¡ ¡
slide-40
SLIDE 40

THE ¡ END ¡

40 ¡
slide-41
SLIDE 41

Re-­‑imagining ¡the ¡fundamentals ¡of ¡network ¡ implementa-on ¡from ¡a ¡programming ¡languages ¡point ¡of ¡ view: ¡ ¡

  • How ¡does ¡one ¡read ¡the ¡state ¡of ¡the ¡network? ¡
  • How ¡does ¡one ¡write ¡the ¡state ¡of ¡the ¡network? ¡
  • How ¡does ¡one ¡define ¡a ¡new ¡(virtual) ¡network? ¡
  • How ¡does ¡one ¡compose ¡two ¡network ¡programs? ¡

Frene-c ¡is ¡a ¡new ¡programming ¡language ¡we ¡are ¡crea-ng ¡ to ¡explore ¡these ¡ques-ons ¡and ¡more ¡

slide-42
SLIDE 42 42 ¡ T h e ¡ S D N ¡ C o n t r o l l e r ¡

One ¡program ¡to ¡ rule ¡them ¡ ¡ all ¡… ¡

slide-43
SLIDE 43

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 ¡

slide-44
SLIDE 44

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 ¡

slide-45
SLIDE 45 45 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡

VLAN-­‑based ¡Isola-on ¡

Slice ¡Compiler ¡
slide-46
SLIDE 46 46 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡

VLAN-­‑based ¡Isola-on ¡

VLAN=2 ¡ VLAN=1 ¡ Slice ¡Compiler ¡
slide-47
SLIDE 47 47 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S2 ¡ S3 ¡ S2 ¡ S3 ¡ VLAN=2 ¡ VLAN=1 ¡

VLAN-­‑based ¡Isola-on ¡

Slice ¡Compiler ¡
slide-48
SLIDE 48 Topology ¡

Data ¡Center ¡Isola-on ¡

A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 48 ¡
slide-49
SLIDE 49 Client ¡1 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 49 ¡ Controller ¡1 ¡
slide-50
SLIDE 50 Client ¡2 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ 50 ¡ Controller ¡2 ¡
slide-51
SLIDE 51 Client ¡1 ¡+ ¡Client ¡2 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ Overlap ¡ Client ¡2 ¡ Client ¡1 ¡ 51 ¡ Controller ¡2 ¡ Controller ¡1 ¡

+ ¡

slide-52
SLIDE 52 Client ¡2 ¡injects ¡packets ¡into ¡Client ¡1’s ¡sec-on ¡of ¡the ¡network! ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ Overlap ¡ Client ¡2 ¡ Client ¡1 ¡ 52 ¡ Controller ¡2 ¡ Controller ¡1 ¡

+ ¡

slide-53
SLIDE 53 Client ¡2 ¡intercepts ¡packets ¡from ¡Client ¡1’s ¡sec-on ¡of ¡the ¡network! ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ Overlap ¡ Client ¡2 ¡ Client ¡1 ¡ 53 ¡ Controller ¡2 ¡ Controller ¡1 ¡

+ ¡

slide-54
SLIDE 54 Client ¡1 ¡ Client ¡2 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡ 54 ¡ Controller ¡2 ¡ Controller ¡1 ¡

| ¡

slide-55
SLIDE 55 55 ¡ Controller ¡1 ¡ Controller ¡2 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡ Hypervisor ¡ PORT == 80 PORT == 80 PORT != 80 PORT != 80
slide-56
SLIDE 56

Isola-on ¡as ¡Modularity ¡

56 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡

Mul--­‑part ¡ Controller ¡Program ¡

slide-57
SLIDE 57

Isola-on ¡as ¡Modularity ¡

57 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡

ARP ¡

slide-58
SLIDE 58

Isola-on ¡as ¡Modularity ¡

58 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡

ARP ¡ LLDP ¡

slide-59
SLIDE 59

Isola-on ¡as ¡Modularity ¡

59 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡

ARP ¡ LLDP ¡ NAT ¡

slide-60
SLIDE 60

Isola-on ¡as ¡Modularity ¡

60 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡

ARP ¡ LLDP ¡ NAT ¡ IP ¡RouZng ¡

slide-61
SLIDE 61

Read-­‑only ¡Slices ¡

61 ¡
  • Network ¡monitoring ¡
  • Usage-­‑based ¡billing ¡
B ¡ A ¡
slide-62
SLIDE 62

Precise ¡Seman-cs ¡

62 ¡
slide-63
SLIDE 63

Contribu-ons ¡

63 ¡
slide-64
SLIDE 64

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
64 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡
slide-65
SLIDE 65

Slices ¡

65 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡
slide-66
SLIDE 66

Slices ¡

66 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡
slide-67
SLIDE 67

Slices ¡

67 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡
slide-68
SLIDE 68

Slices ¡

68 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡
slide-69
SLIDE 69

Programming ¡with ¡Slices ¡

69 ¡ Ethernet ¡type: ¡ 0x0806 ¡
slide-70
SLIDE 70

Programming ¡with ¡Slices ¡

70 ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡
slide-71
SLIDE 71

Programming ¡with ¡Slices ¡

71 ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡
slide-72
SLIDE 72

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

72 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡
slide-73
SLIDE 73 73 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡

VLAN-­‑based ¡Isola-on ¡

slide-74
SLIDE 74 74 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡

VLAN-­‑based ¡Isola-on ¡

VLAN=2 ¡ VLAN=1 ¡
slide-75
SLIDE 75 75 ¡ S1 ¡ S4 ¡ S2 ¡ S3 ¡ S2 ¡ S3 ¡ S2 ¡ S3 ¡ VLAN=2 ¡ VLAN=1 ¡

VLAN-­‑based ¡Isola-on ¡

slide-76
SLIDE 76

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

76 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡
slide-77
SLIDE 77 NetCore ¡

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

77 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡
slide-78
SLIDE 78 NetCore ¡

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

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 . ¡
slide-79
SLIDE 79

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

  • A ¡verifier ¡that ¡

guarantees: ¡

79 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡
slide-80
SLIDE 80

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

  • A ¡verifier ¡that ¡

guarantees: ¡

– isola-on ¡

80 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡
slide-81
SLIDE 81

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

  • A ¡verifier ¡that ¡

guarantees: ¡

– isola-on, ¡and ¡ – seman-c ¡

  • equivalence. ¡
81 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡

≅ ¡

slide-82
SLIDE 82

Verifying ¡the ¡Results ¡

82 ¡

NetCore ¡

B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡

Encoded ¡using ¡ SMT ¡(Z3) ¡ Encoded ¡using ¡ model ¡checking ¡ (NuSMV) ¡

slide-83
SLIDE 83

Contribu-ons ¡

  • A ¡new ¡language ¡for ¡
  • slices. ¡
  • A ¡compiler ¡that ¡

enforces ¡isola-on. ¡

  • A ¡verifier ¡that ¡

guarantees: ¡

– isola-on, ¡and ¡ – seman-c ¡

  • equivalence. ¡
83 ¡ B ¡ A2 ¡ A1 ¡ A3 ¡ A4 ¡ Slice ¡Compiler ¡ B ¡ A3 ¡ A4 ¡ A2 ¡ A1 ¡

≅ ¡

slide-84
SLIDE 84 8 4 ¡

Thank ¡ you! ¡

Read ¡the ¡paper: ¡

frene-c-­‑lang.org/papers ¡

Get ¡the ¡code: ¡

github.com/frene-c-­‑lang/netcore ¡

slide-85
SLIDE 85 85 ¡
slide-86
SLIDE 86 86 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡

Integrity ¡

A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡

1

Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡
slide-87
SLIDE 87 87 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡

Integrity ¡

A2 ¡ A1 ¡ R1 ¡ R2 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡

1

Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡
slide-88
SLIDE 88 88 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡

Integrity ¡

R1 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡

1

Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡
slide-89
SLIDE 89 89 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡

Integrity ¡

R1 ¡ R3 ¡ H11 ¡ H12 ¡ H21 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R2 ¡

1

Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡
slide-90
SLIDE 90 90 ¡

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. ¡
slide-91
SLIDE 91 91 ¡

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. ¡
slide-92
SLIDE 92 92 ¡

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. ¡
slide-93
SLIDE 93 93 ¡

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. ¡
slide-94
SLIDE 94

Establishing ¡Isola-on ¡

  • Confiden-ality ¡and ¡integrity ¡are ¡global, ¡end-­‑

to-­‑end ¡proper-es. ¡

  • But ¡we ¡can ¡establish ¡isola-on ¡by ¡enforcing ¡

simple, ¡local ¡proper-es. ¡

94 ¡
slide-95
SLIDE 95

Implementa-on ¡

  • VLAN-­‑based ¡implementa-on. ¡
95 ¡
slide-96
SLIDE 96

Verifica-on ¡

  • SAT ¡encoding ¡(with ¡Z3) ¡
  • Separate: ¡given ¡two ¡compiled ¡slices, ¡

guarantee ¡that ¡they ¡are ¡separate. ¡

  • SemanZcs-­‑preserving: ¡given ¡a ¡source ¡slice ¡+ ¡

program ¡and ¡a ¡compiled ¡program, ¡verify ¡that ¡ they ¡are ¡seman-cally ¡equivalent. ¡

96 ¡
slide-97
SLIDE 97

Read ¡the ¡paper: ¡ hLp://www.cs.princeton.edu/~cschlesi ¡ ¡ Download ¡the ¡code: ¡ hLps://github.com/frene-c-­‑lang/netcore ¡

97 ¡
slide-98
SLIDE 98 98 ¡
slide-99
SLIDE 99

Isola-on ¡as ¡Modularity ¡

  • Queries/network ¡monitoring. ¡
  • ARP ¡
99 ¡
slide-100
SLIDE 100 PORT ¡!= ¡80 ¡ A2 ¡ A1 ¡ R2 ¡ R3 ¡ H22 ¡ H31 ¡ H32 ¡ A2 ¡ A1 ¡ R1 ¡ R2 ¡ H11 ¡ H12 ¡ H21 ¡ PORT ¡== ¡80 ¡ 100 ¡ Controller ¡1 ¡ Controller ¡2 ¡
slide-101
SLIDE 101

One ¡approach: ¡like ¡SFI ¡

  • Draw ¡a ¡box ¡around ¡each ¡network ¡program ¡

and ¡prevent ¡them ¡from ¡broaching ¡their ¡ respec-ve ¡boxes ¡(slices). ¡

– Absolute. ¡ – Says ¡nothing ¡about ¡what ¡happens ¡within ¡a ¡slice. ¡

  • FlowVisor ¡takes ¡this ¡approach. ¡
101 ¡
slide-102
SLIDE 102

Problem: ¡Very ¡Coarse-­‑grained ¡

  • 1: ¡We ¡want ¡isola-on ¡and ¡seman-cs ¡preserving ¡

by ¡construc-on. ¡

  • 2: ¡We ¡want ¡read-­‑only ¡slices. ¡

– Consider ¡an ¡admin/billing ¡slice ¡that ¡monitors ¡use. ¡ ¡ Isola-on ¡is ¡too ¡strong, ¡but ¡without ¡isola-on, ¡what ¡ do ¡we ¡have? ¡

  • 3: ¡Isola-on ¡as ¡modularity. ¡
102 ¡
slide-103
SLIDE 103

Limita-ons ¡

  • Isola-on ¡as ¡
  • modularity. ¡
  • Inter-­‑slice ¡

interac-on. ¡

  • Intra-­‑slice ¡seman-cs. ¡
103 ¡

?

B ¡ A ¡ ARP ¡ A2 ¡ A3 ¡ A4 ¡
slide-104
SLIDE 104

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 ¡