isola on
play

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


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

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

  3. THE ¡ END ¡ 40 ¡

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

  5. One ¡program ¡to ¡ rule ¡them ¡ ¡ all ¡… ¡ T h e ¡ S D N ¡ C o n t r o l l e r ¡ 42 ¡

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

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

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

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

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

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

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

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

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

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

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

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

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

  19. Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ Mul--­‑part ¡ Controller ¡Program ¡ 56 ¡

  20. Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ 57 ¡

  21. Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ LLDP ¡ 58 ¡

  22. Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ LLDP ¡ NAT ¡ 59 ¡

  23. Isola-on ¡as ¡Modularity ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ ARP ¡ LLDP ¡ NAT ¡ IP ¡RouZng ¡ 60 ¡

  24. Read-­‑only ¡Slices ¡ A ¡ B ¡ • Network ¡monitoring ¡ • Usage-­‑based ¡billing ¡ 61 ¡

  25. Precise ¡Seman-cs ¡ 62 ¡

  26. Contribu-ons ¡ 63 ¡

  27. Contribu-ons ¡ • A ¡ new ¡language ¡ for ¡ B ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ slices. ¡ 64 ¡

  28. Slices ¡ A 1 ¡ A 2 ¡ R 1 ¡ R 2 ¡ R 3 ¡ 65 ¡

  29. Slices ¡ A 1 ¡ A 1 ¡ A 2 ¡ A 2 ¡ R 1 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ 66 ¡

  30. Slices ¡ A 1 ¡ A 1 ¡ A 2 ¡ A 2 ¡ R 1 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ 67 ¡

  31. Slices ¡ A 1 ¡ A 1 ¡ A 2 ¡ A 2 ¡ R 1 ¡ R 1 ¡ R 2 ¡ R 2 ¡ R 3 ¡ 68 ¡

  32. Programming ¡with ¡Slices ¡ Ethernet ¡type: ¡ 0x0806 ¡ 69 ¡

  33. Programming ¡with ¡Slices ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡ 70 ¡

  34. Programming ¡with ¡Slices ¡ Ethernet ¡type: ¡ 0x0806 ¡ Ethernet ¡type: ¡ 0x0800 ¡ 71 ¡

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

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

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

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

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

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

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

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

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

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

  45. Verifying ¡the ¡Results ¡ NetCore ¡ Encoded ¡using ¡ B ¡ SMT ¡(Z3) ¡ A 1 ¡ A 2 ¡ A 3 ¡ A 4 ¡ Encoded ¡using ¡ model ¡checking ¡ (NuSMV) ¡ 82 ¡

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

  47. Thank ¡ you! ¡ Read ¡the ¡paper: ¡ frene-c-­‑lang.org/papers ¡ Get ¡ the ¡ code : ¡ github.com/frene-c-­‑lang/netcore ¡ 8 4 ¡

  48. 85 ¡

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

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

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

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

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

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

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

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

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

  58. Implementa-on ¡ • VLAN-­‑based ¡implementa-on. ¡ 95 ¡

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

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

  61. 98 ¡

  62. Isola-on ¡as ¡Modularity ¡ • Queries/network ¡monitoring. ¡ • ARP ¡ 99 ¡

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