A ¡Compiler ¡and ¡Run-‑1me ¡System ¡for ¡ Network ¡Programming ¡Languages ¡ Christopher ¡Monsanto, ¡Princeton ¡ Nate ¡Foster, ¡Cornell ¡ Rob ¡Harrison, ¡West ¡Point ¡ ¡David ¡Walker, ¡Princeton ¡ ¡ 1 ¡
SoFware-‑Defined ¡Networks ¡ Controller ¡ Switch ¡ Switch ¡ 2 ¡
SoFware-‑Defined ¡Networks ¡ • Video ¡rou1ng ¡ 010101 ¡ • Seamless ¡mobility ¡ • Energy ¡efficiency ¡ • DDOS ¡protec1on ¡ 11010011 ¡ 0000110 ¡ ? ¡ • Etc… ¡ 3 ¡
SoFware ¡Defined ¡Networks: ¡Switches ¡ • Processes ¡packets ¡ according ¡to ¡ classifier ¡ Dest. ¡IP ¡ Dest. ¡Port ¡ Ac5on ¡ – Limited ¡paSern ¡ 191.*.*.* ¡ 80 ¡ Forward ¡A ¡ 191.*.*.* ¡ * ¡ Drop ¡ matching ¡ 191.1.1.0 ¡ 22 ¡ Forward ¡B ¡ capabili1es ¡ * ¡ * ¡ Controller ¡ – Ac1ons: ¡forwarding, ¡ dropping, ¡sending ¡to ¡ controller ¡ • As ¡fast ¡as ¡it ¡gets ¡ 4 ¡
SDN: ¡Controllers ¡ • Capable ¡of ¡arbitrary ¡ computa1on ¡ • Orders ¡of ¡magnitude ¡ slower ¡ • Installs ¡and ¡ uninstalls ¡rules ¡from ¡ switch ¡classifiers ¡ 5 ¡
Goals ¡ 1. A ¡simple, ¡declara1ve ¡language… ¡ That ¡is, ¡we ¡specify ¡the ¡func1onality, ¡not ¡the ¡ – concrete ¡rules ¡that ¡go ¡on ¡the ¡switches, ¡or ¡the ¡ explicit ¡install ¡and ¡uninstall ¡commands ¡the ¡ controller ¡must ¡issue ¡ 2. … ¡that ¡is ¡mathema1cally ¡guaranteed ¡to ¡be ¡ correct ¡and ¡efficient. ¡
Goals ¡ 1. A ¡simple, ¡declara1ve ¡language… ¡ That ¡is, ¡we ¡specify ¡the ¡func1onality, ¡not ¡the ¡ – concrete ¡rules ¡that ¡go ¡on ¡the ¡switches, ¡or ¡the ¡ explicit ¡install ¡and ¡uninstall ¡commands ¡the ¡ controller ¡must ¡issue ¡ 2. … ¡that ¡is ¡mathema1cally ¡guaranteed ¡to ¡be ¡ correct ¡and ¡ efficient . ¡ ??? ¡
Goals ¡ • … ¡guaranteed ¡to ¡be ¡ efficient ¡ 8 ¡
Goals ¡ • … ¡guaranteed ¡to ¡be ¡ efficient ¡ On ¡switches: ¡ 9 ¡
Goals ¡ • … ¡guaranteed ¡to ¡be ¡ efficient ¡ On ¡switches: ¡ On ¡controllers: ¡ 10 ¡
Obstacles ¡Faced ¡By ¡Programmers ¡ Low ¡level ¡interface ¡ Synthesize ¡communica1on ¡protocol ¡ Dest. ¡IP ¡ Dest. ¡Port ¡ Ac5on ¡ 191.*.*.* ¡ 80 ¡ Forward(A) ¡ 191.*.*.* ¡ * ¡ Drop ¡ * ¡ * ¡ Controller ¡ Differing ¡switch ¡capabili1es ¡ 11 ¡
Our ¡Real ¡Enemy: ¡Complexity ¡ • Managing ¡these ¡rules ¡is ¡ complicated ¡ • Tendency ¡to ¡fall ¡back ¡to ¡ using ¡the ¡simplest ¡kind ¡ of ¡rule: ¡microflows ¡ (exact ¡match ¡rules) ¡ • Very ¡inefficient: ¡many ¡ packets ¡go ¡to ¡the ¡ controller! ¡ 12 ¡
New ¡Frene1c ¡Run-‑1me ¡Architecture ¡ 1 ¡ NetCore ¡policy ¡ ¡ 3 ¡ 2 ¡ Refinement ¡ Compila1on ¡ (reac1ve ¡specializa1on ¡loop) ¡ Classifier ¡ 13 ¡
1 ¡ NetCore ¡policy ¡ ¡ 3 ¡ 2 ¡ Refinement ¡ Compila1on ¡ Classifier ¡ 14 ¡ NETCORE ¡ 14 ¡
NetCore ¡Grammar ¡ Predicates ¡ Headers ¡ ℎ , ¡wildcards ¡ 𝑥 ¡ • 𝑓 ¡::= ¡ ℎ ¡: 𝑥 ¡ ¡ ¡primi1ve ¡match ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡| ¡ ¡switch ¡ 𝑡 ¡ ¡match ¡packets ¡at ¡switch ¡ ¡ ¡ ¡| ¡ ¡inspect ¡ 𝑔 ¡ ¡arbitrary ¡func1on ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∪ 𝑓↓ 2 ¡ ¡ ¡set ¡union ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∖ 𝑓↓ 2 ¡ ¡ ¡set ¡difference ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∩ 𝑓↓ 2 ¡ ¡ ¡set ¡intersec1on ¡ ¡ ¡ ¡| ¡ ¡ ¬ 𝑓 ¡ ¡ ¡set ¡nega1on ¡ Policies ¡ • 𝜐 ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡ ¡ ¡| ¡ ¡ 𝜐↓ 1 ∪ 𝜐↓ 2 ¡ ¡ ¡policy ¡union ¡ 15 ¡ ¡ ¡ ¡| ¡ ¡… ¡
NetCore ¡Grammar ¡ Predicates ¡ Headers ¡ ℎ , ¡wildcards ¡ 𝑥 ¡ • 𝑓 ¡::= ¡ ℎ ¡: 𝑥 ¡ ¡ ¡primi1ve ¡match ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡| ¡ ¡switch ¡ 𝑡 ¡ ¡ ¡match ¡packets ¡at ¡switch ¡ ¡match ¡packets ¡at ¡switch ¡ ¡ ¡ ¡| ¡ ¡inspect ¡ 𝑔 ¡ ¡ ¡arbitrary ¡func1on ¡ ¡arbitrary ¡func1on ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∪ 𝑓↓ 2 ¡ ¡ ¡set ¡union ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∖ 𝑓↓ 2 ¡ ¡ ¡set ¡difference ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∩ 𝑓↓ 2 ¡ ¡ ¡set ¡intersec1on ¡ ¡ ¡ ¡| ¡ ¡ ¬ 𝑓 ¡ ¡ ¡ ¡ ¡set ¡nega1on ¡ ¡set ¡nega1on ¡ Policies ¡ • 𝜐 ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡ ¡ ¡| ¡ ¡ 𝜐↓ 1 ∪ 𝜐↓ 2 ¡ ¡ ¡policy ¡union ¡ 16 ¡ ¡ ¡ ¡| ¡ ¡… ¡
NetCore ¡Grammar ¡ Predicates ¡ Headers ¡ ℎ , ¡wildcards ¡ 𝑥 ¡ • 𝑓 ¡::= ¡ ℎ ¡: 𝑥 ¡ ¡ ¡primi1ve ¡match ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡| ¡ ¡switch ¡ 𝑡 ¡ ¡ ¡match ¡packets ¡at ¡switch ¡ ¡match ¡packets ¡at ¡switch ¡ DestIP: ¡10.*.1.* ¡ ¡ ¡ ¡| ¡ ¡inspect ¡ 𝑔 ¡ ¡ ¡arbitrary ¡func1on ¡ ¡arbitrary ¡func1on ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∪ 𝑓↓ 2 ¡ ¡ ¡set ¡union ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∖ 𝑓↓ 2 ¡ ¡ ¡set ¡difference ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∩ 𝑓↓ 2 ¡ ¡ ¡set ¡intersec1on ¡ ¡ ¡ ¡| ¡ ¡ ¬ 𝑓 ¡ ¡ ¡ ¡ ¡set ¡nega1on ¡ ¡set ¡nega1on ¡ Policies ¡ • 𝜐 ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡ ¡ ¡| ¡ ¡ 𝜐↓ 1 ∪ 𝜐↓ 2 ¡ ¡ ¡policy ¡union ¡ 17 ¡ ¡ ¡ ¡| ¡ ¡… ¡
NetCore ¡Grammar ¡ Predicates ¡ Headers ¡ ℎ , ¡wildcards ¡ 𝑥 ¡ ¡ • 𝑓 ¡::= ¡ ℎ ¡: 𝑥 ¡ ¡ ¡ ¡ ¡primi1ve ¡match ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡primi1ve ¡match ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡| ¡ ¡switch ¡ 𝑡 ¡ ¡match ¡packets ¡at ¡switch ¡ ¡ ¡ ¡| ¡ ¡inspect ¡ 𝑔 ¡ ¡ ¡arbitrary ¡func1on ¡ ¡arbitrary ¡func1on ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∪ 𝑓↓ 2 ¡ ¡ ¡set ¡union ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∖ 𝑓↓ 2 ¡ ¡ ¡set ¡difference ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∩ 𝑓↓ 2 ¡ ¡ ¡set ¡intersec1on ¡ ¡ ¡ ¡| ¡ ¡ ¬ 𝑓 ¡ ¡ ¡ ¡ ¡set ¡nega1on ¡ ¡set ¡nega1on ¡ Policies ¡ • 𝜐 ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡ ¡ ¡| ¡ ¡ 𝜐↓ 1 ∪ 𝜐↓ 2 ¡ ¡ ¡policy ¡union ¡ 18 ¡ ¡ ¡ ¡| ¡ ¡… ¡
NetCore ¡Grammar ¡ Predicates ¡ Headers ¡ ℎ , ¡wildcards ¡ 𝑥 ¡ ¡ • 𝑓 ¡::= ¡ ℎ ¡: 𝑥 ¡ ¡ ¡ ¡ ¡primi1ve ¡match ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡primi1ve ¡match ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡| ¡ ¡switch ¡ 𝑡 ¡ ¡ ¡match ¡packets ¡at ¡switch ¡ ¡match ¡packets ¡at ¡switch ¡ ¡ ¡ ¡| ¡ ¡inspect ¡ 𝑔 ¡ ¡arbitrary ¡func1on ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∪ 𝑓↓ 2 ¡ ¡ ¡set ¡union ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∖ 𝑓↓ 2 ¡ ¡ ¡set ¡difference ¡ ¡ ¡ ¡| ¡ ¡ 𝑓↓ 1 ∩ 𝑓↓ 2 ¡ ¡ ¡set ¡intersec1on ¡ ¡ ¡ ¡| ¡ ¡ ¬ 𝑓 ¡ ¡ ¡ ¡ ¡set ¡nega1on ¡ ¡set ¡nega1on ¡ Policies ¡ • 𝜐 ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡::= ¡ 𝑓 ¡→ {𝑡↓ 1 ,…, ¡ 𝑡↓𝑜 } ¡ac1on ¡ ¡ ¡ ¡| ¡ ¡ 𝜐↓ 1 ∪ 𝜐↓ 2 ¡ ¡ ¡policy ¡union ¡ 19 ¡ ¡ ¡ ¡| ¡ ¡… ¡
Recommend
More recommend