network-automation.md (1746B)
1 +++ 2 title = 'Network automation' 3 +++ 4 5 ## Network automation 6 ### Centralized control over distributed routing: fibbing 7 Fibbing: lying to routing protocols 8 - high-level language to specify forwarding requirements 9 ``` 10 ((E, C, D1) and (E, G, D1); // traffic between E and D1 load balanced on two paths 11 ((A, *, B, * D2) or (A, *, C, *, D2)); // traffic between A and D2 should cross B or C 12 (F, G, *, D3) as backupof ((F, H));) // traffic between F and D3 should be reroutd via G if link (F,H) fails 13 ``` 14 - fibbing controller computes paths and creates fake topology by sending link-state messages 15 16 ### Synthesizing network configurations - Propane 17 Compile network-wide routing objectives into low-level configurations. 18 19 Main goals of Propane: 20 - language for expressing network-wide objectives (intra- and inter-domain routing) 21 - compiler for purely distribute implementation 22 - generate BGP configs for each router 23 - compiler guarantees policy compliance for all failures 24 25 ### Autocompleting partial network configurations 26 Problems: 27 - produced configs may widely differ from human-generating ones, lowering confidence in them 28 - can produce widely different configurations given slightly different requirements 29 - can't flexibly adapt to operational requirements 30 31 Existing synthesizers don't provide operators with fine-grained control over synthesized configurations. 32 33 NetComplete: network operators can specify their intents through configuration sketches with "holes" 34 - holes can identify specific attributes (e.g. IP addresses), link costs, BGP local preferences, or entire pieces of configuration 35 - encodes requirements as logical formula in SMT 36 - use solver (Z3) to find assignment that satisfies constraints