370 likes | 519 Views
Incremental Consistent Updates. Naga Praveen Katta Jennifer Rexford, David Walker Princeton University. Network Policy. Policy : C ollection of Openflow rules in the entire network. === === ===. === === ===. === === ===. 2. 1. 1. 1. 2. 2. 1. 2. === === ===.
E N D
Incremental Consistent Updates Naga Praveen Katta Jennifer Rexford, David Walker Princeton University
Network Policy Policy : Collection of Openflow rules in the entire network === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Policy Update From old policy === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Policy Update From old policyto new policy === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Inconsistent policy during transition === === === === === === === ====== === === === === === 2 1 1 1 2 2 1 2 === === === === === ===
Inconsistent policy during transition === === === === === === === ====== • Per Packet Consistency (Reitblatt et. al. SIGCOMM’12) • A packet sees either exclusively the old policy or exclusively the new policy. === === === === === 2 1 1 1 2 2 1 2 === === === === === ===
Both old and new policy on the network 2 1 1 1 2 2 1 2
100% space overhead in intermediate steps 2 1 1 1 2 2 1 2
100% space overhead in intermediate steps • Problem Statement • Can we do a consistent update with less space? 2 1 1 1 2 2 1 2
Trade Space for time Less space overhead but more update time Goals General : Works for any policy (with ternary matches) Efficient : No packet-processing overhead on the controller
Trade Space for time Less space overhead but more update time Goals General : Works for any policy (with ternary matches) Efficient : No packet-processing overhead on the controller • Divide entire update into multiple rounds • Each round is assigned a set of predicates (predicate : a symbolic ingress packet) • Eachround updates policy slice for assigned predicates • Slice : rules effecting the packets of a predicate
Update the policy slice by slice === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Update the policy slice by slice === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Update the policy slice by slice === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Update the policy slice by slice === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Update the policy slice by slice === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Update the policy slice by slice === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Update the policy slice by slice === === === • Given a predicate, how do you compute the slice? • How do you update the network with policy slices? • How do you assign predicates to slices? === === === === === === 2 1 1 1 2 2 1 2 === === ===
1. Computing a slice for a given predicate • Collect matching rules from all switches?
Challenges in computing a slice Header Modifications Multiple predicates match a single rule Packets of predicate never reach a switch. 01->11 01 11 01 0* 11 01 01 01 01
Compute policy slice using symbolic execution Similar to Header Space Analysis (NSDI 2012) 2 1 1 1 2 2 1 2
Compute policy slice using symbolic execution 2 1 1 1 2 2 1 2
Compute policy slice using symbolic execution === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
Similarly computethe old slice === === === === === === === === === 2 1 1 1 2 2 1 2 === === ===
2. Update policy slice– Add the new slice === === === === === === === === === === === === 2 1 1 1 2 2 1 2 === === === ===
Thenremove the old slice? === === === === === === === === === === === === 2 1 1 1 2 2 1 2 === === === ===
Difficult with multiple dependent predicates Cannot remove 1* rule till both 10and 11migrate 10 -> 2 10 -> 1 11 -> 2 1* -> 1 2 1 1 1 2 2 1 2 11 -> 2
Difficult with multiple dependent predicates Cannot remove 1*rule till both 10and 11migrate • Keep track of all dependent predicates • Add a new rule as soon as anynew slice needs it • Delete an old rule as soon as noold slice needs it 00 -> 2 00 -> 1 01 -> 2 0* -> 1 2 1 1 1 2 2 1 2 11 -> 2
3. Choosing the predicates? Optimal order of updates How many slices in total? Which predicates in which slice?
Choosing the predicates Divide Ningress predicates into K ordered slices optimally Avoid exponential preprocessing Cannot consider slices in isolation
Choosing the predicates Divide Ningress predicates into K ordered slices optimally Avoid exponential preprocessing Cannot consider slices in isolation Pose it as a Mixed Integer Program Combine individual predicate symbolic analyses Encode dependency counting • Trade-off dimensions • Rule space overhead • Update time (# rounds/slices) • Trafficvolume of migrated rules
Evaluation Fattree topology - 24 Switches, 576 hosts Load Balancer Policy Each client chooses server randomly Packet modification at the ingress Shortest path forwarding to servers Optimization solver Always within 1% in few (~5) seconds
Overhead decreases significantly with increased rounds Consistent Updates Space Overhead (%) Total number of slices
Minimizing update times finishes in just 9 slices Number of slices updated Number of slices updated Switch space overhead capped at 5%
80% traffic migrates in slice 1 and 99% in 3 slices Number of slices updated Switch space overhead capped at 5%
Conclusion • Policy abstractions come with a cost • How to implement efficiently? • Keeping the essence of abstraction • Optimizing consistent updates • Slice by slice policy update • Symbolic execution and MIP reduction • Uses less rule space • Moves high volume flows early
Questions? Naga Praveen Katta nkatta@cs.princeton.edu