Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ slices. ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ – Security ¡ – Modularity ¡ • A ¡ compiler ¡ that ¡ ≅ ¡ Slice ¡Compiler ¡ enforces ¡isola-on. ¡ • A ¡ verifier ¡ that ¡ guarantees: ¡ NetCore ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ – isola-on, ¡and ¡ – seman-c ¡ N O X , ¡ N e W l e , ¡ F l o o d l i g h t , ¡ e t c . ¡ equivalence. ¡ 38 ¡
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. ¡ ¡ 3 9 ¡
THE ¡ END ¡ 40 ¡
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 ¡
One ¡program ¡to ¡ rule ¡them ¡ ¡ all ¡… ¡ T h e ¡ S D N ¡ C o n t r o l l e r ¡ 42 ¡
NetCore: ¡Program ¡Composi-on ¡ Repeater ¡ Monitor ¡ PaWern ¡ AcZon ¡ PaWern ¡ AcZon ¡ inPort ¡= ¡2 ¡ Forward ¡1 ¡ tpSrc ¡= ¡22 ¡ Drop ¡ inPort ¡= ¡1 ¡ Forward ¡2 ¡ tpSrc ¡= ¡80 ¡ Drop ¡ 43 ¡
NetCore: ¡Program ¡Composi-on ¡ Repeater ¡ Monitor ¡ PaWern ¡ AcZon ¡ PaWern ¡ AcZon ¡ inPort ¡= ¡2 ¡ Forward ¡1 ¡ tpSrc ¡= ¡22 ¡ Drop ¡ inPort ¡= ¡1 ¡ Forward ¡2 ¡ tpSrc ¡= ¡80 ¡ Drop ¡ Net C o re ¡ Repeater ¡ Monitor ¡ 44 ¡
VLAN-‑based ¡Isola-on ¡ Slice ¡Compiler ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ 45 ¡
VLAN-‑based ¡Isola-on ¡ Slice ¡Compiler ¡ VLAN=2 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ VLAN=1 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ 46 ¡
VLAN-‑based ¡Isola-on ¡ Slice ¡Compiler ¡ VLAN=2 ¡ S 2 ¡ S 3 ¡ VLAN=1 ¡ S 2 ¡ S 3 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ 47 ¡
Data ¡Center ¡Isola-on ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ Topology ¡ 48 ¡
Controller ¡1 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ Client ¡1 ¡ 49 ¡
Controller ¡2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ Client ¡2 ¡ 50 ¡
+ ¡ Controller ¡1 ¡ Controller ¡2 ¡ Client ¡1 ¡ A 1 ¡ A 2 ¡ Client ¡2 ¡ Overlap ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ Client ¡1 ¡+ ¡Client ¡2 ¡ 51 ¡
+ ¡ Controller ¡1 ¡ Controller ¡2 ¡ Client ¡1 ¡ A 1 ¡ A 2 ¡ Client ¡2 ¡ Overlap ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ Client ¡2 ¡ injects ¡packets ¡into ¡Client ¡1’s ¡sec-on ¡of ¡the ¡network! ¡ 52 ¡
+ ¡ Controller ¡1 ¡ Controller ¡2 ¡ Client ¡1 ¡ A 1 ¡ A 2 ¡ Client ¡2 ¡ Overlap ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ Client ¡2 ¡ intercepts ¡packets ¡from ¡Client ¡1’s ¡sec-on ¡of ¡the ¡network! ¡ 53 ¡
| ¡ Controller ¡1 ¡ Controller ¡2 ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ Client ¡1 ¡ Client ¡2 ¡ 54 ¡
Controller ¡1 ¡ Controller ¡2 ¡ Hypervisor ¡ PORT == 80 PORT == 80 A 1 ¡ A 1 ¡ A 2 ¡ A 2 ¡ PORT != 80 PORT != 80 R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 55 ¡
Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ Mul--‑part ¡ Controller ¡Program ¡ 56 ¡
Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ 57 ¡
Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ LLDP ¡ 58 ¡
Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ LLDP ¡ NAT ¡ 59 ¡
Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ LLDP ¡ NAT ¡ IP ¡RouZng ¡ 60 ¡
Read-‑only ¡Slices ¡ A ¡ B ¡ • Network ¡monitoring ¡ • Usage-‑based ¡billing ¡ 61 ¡
Precise ¡Seman-cs ¡ 62 ¡
Contribu-ons ¡ 63 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ 64 ¡
Slices ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ 65 ¡
Slices ¡ A 1 ¡ A 1 ¡ A 2 ¡ A 2 ¡ R 1 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ 66 ¡
Slices ¡ A 1 ¡ A 1 ¡ A 2 ¡ A 2 ¡ R 1 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ 67 ¡
Slices ¡ A 1 ¡ A 1 ¡ A 2 ¡ A 2 ¡ R 1 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ 68 ¡
Programming ¡with ¡Slices ¡ Ethernet ¡type: ¡ 0x0806 ¡ 69 ¡
Programming ¡with ¡Slices ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡ 70 ¡
Programming ¡with ¡Slices ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡ 71 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ Slice ¡Compiler ¡ 72 ¡
VLAN-‑based ¡Isola-on ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ 73 ¡
VLAN-‑based ¡Isola-on ¡ VLAN=2 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ VLAN=1 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ 74 ¡
VLAN-‑based ¡Isola-on ¡ VLAN=2 ¡ S 2 ¡ S 3 ¡ VLAN=1 ¡ S 2 ¡ S 3 ¡ S 1 ¡ S 2 ¡ S 3 ¡ S 4 ¡ 75 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ Slice ¡Compiler ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ 76 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ Slice ¡Compiler ¡ NetCore ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ 77 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ Slice ¡Compiler ¡ NetCore ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ N O X , ¡ N e W l e , ¡ F l o o d l i g h t , ¡ e t c . ¡ 78 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ Slice ¡Compiler ¡ • A ¡ verifier ¡ that ¡ guarantees: ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ 79 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ Slice ¡Compiler ¡ • A ¡ verifier ¡ that ¡ guarantees: ¡ – isola-on ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ 80 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ ≅ ¡ Slice ¡Compiler ¡ • A ¡ verifier ¡ that ¡ guarantees: ¡ – isola-on, ¡and ¡ B ¡ – seman-c ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ equivalence. ¡ 81 ¡
Verifying ¡the ¡Results ¡ NetCore ¡ Encoded ¡using ¡ B ¡ SMT ¡(Z3) ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ Encoded ¡using ¡ model ¡checking ¡ (NuSMV) ¡ 82 ¡
Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ • A ¡ compiler ¡ that ¡ enforces ¡isola-on. ¡ ≅ ¡ Slice ¡Compiler ¡ • A ¡ verifier ¡ that ¡ guarantees: ¡ – isola-on, ¡and ¡ B ¡ – seman-c ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ equivalence. ¡ 83 ¡
Thank ¡ you! ¡ Read ¡the ¡paper: ¡ frene-c-‑lang.org/papers ¡ Get ¡ the ¡ code : ¡ github.com/frene-c-‑lang/netcore ¡ 8 4 ¡
85 ¡
Integrity ¡ 1 Slice ¡2 ¡cannot ¡ inject ¡packets ¡into ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 86 ¡
Integrity ¡ 1 Slice ¡2 ¡cannot ¡ inject ¡packets ¡into ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 87 ¡
Integrity ¡ 1 Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 88 ¡
Integrity ¡ 1 Slice ¡2 ¡cannot ¡inject ¡packets ¡into ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 89 ¡
Confiden-ality ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 90 ¡
Confiden-ality ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 91 ¡
Confiden-ality ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 92 ¡
Confiden-ality ¡ Slice ¡2 ¡cannot ¡siphon ¡packets ¡from ¡Slice ¡1. ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ H 22 ¡ H 31 ¡ H 32 ¡ 93 ¡
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 ¡
Implementa-on ¡ • VLAN-‑based ¡implementa-on. ¡ 95 ¡
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 ¡
Read ¡the ¡paper: ¡ hLp://www.cs.princeton.edu/~cschlesi ¡ ¡ Download ¡the ¡code: ¡ hLps://github.com/frene-c-‑lang/netcore ¡ 97 ¡
98 ¡
Isola-on ¡as ¡Modularity ¡ • Queries/network ¡monitoring. ¡ • ARP ¡ 99 ¡
Controller ¡1 ¡ Controller ¡2 ¡ A 1 ¡ A 2 ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ H 11 ¡ H 12 ¡ H 21 ¡ H 22 ¡ H 31 ¡ H 32 ¡ PORT ¡== ¡80 ¡ PORT ¡!= ¡80 ¡ 100 ¡
Recommend
More recommend