Scalable Verification of Stateful Networks
Aurojit Panda, Ori Lahav, Katerina Argyraki, Mooly Sagiv, Scott Shenker UC Berkeley, TAU, ICSI
Scalable Verification of Stateful Networks Aurojit Panda, Ori - - PowerPoint PPT Presentation
Scalable Verification of Stateful Networks Aurojit Panda, Ori Lahav, Katerina Argyraki, Mooly Sagiv, Scott Shenker UC Berkeley, TAU, ICSI Roadmap Why consider stateful networks? The current state of stateful network verification?
Aurojit Panda, Ori Lahav, Katerina Argyraki, Mooly Sagiv, Scott Shenker UC Berkeley, TAU, ICSI
Server 0 Server 1 Firewall User 0 User 1 User 1 receives no packets from server 0 unless a connection is initiated.
deny server* user*
Server 0 Server 1 Firewall User 0 User 1 User 1 receives no packets from server 0 unless a connection is initiated.
Standard Reachability Temporal Property
deny server* user*
Server 0 Server 1 Firewall Cache User 0 User 1
deny user1 server0
User 1 receives no packets from Server 0
Server 0 Server 1 Firewall
Secret
Cache User 0 User 1
deny user1 server0
User 1 receives no packets from Server 0
Server 0 Server 1 Firewall
Secret Secret
Cache User 0 User 1
deny user1 server0
User 1 receives no packets from Server 0
Server 0 Server 1 Firewall
Secret Secret
Cache User 0 User 1
deny user1 server0
User 1 receives no packets from Server 0
Secret
Server 0 Server 1 Firewall
Secret Secret
Cache User 0 User 1
deny user1 server0
User 1 receives no packets from Server 0 User 1 receives no data from Server 0
Secret
HSA, Veriflow, NetKAT, etc.
HSA, Veriflow, NetKAT, etc.
Vericon, FlowLog, etc
HSA, Veriflow, NetKAT, etc.
Vericon, FlowLog, etc
Buzz: Generate packets that are likely to trigger interesting behavior.
HSA, Veriflow, NetKAT, etc.
Vericon, FlowLog, etc
Buzz: Generate packets that are likely to trigger interesting behavior.
SymNet: Uses symbolic execution to verify networks with middleboxes.
Model each middlebox in the network Build network forwarding model Invariant Holds Example of violation Logical Invariants SMT Solver (Z3 from MSR)
Classify Packet
Determines what application sent a packet, etc. Complex, proprietary processing.
Classify Packet Update Classification State
Determines what application sent a packet, etc. Complex, proprietary processing. Update state required for classification.
Classify Packet Update Classification State
Determines what application sent a packet, etc. Complex, proprietary processing. Update state required for classification.
Update Forwarding State
Update forwarding State.
Classify Packet Update Classification State Forward Packet
Determines what application sent a packet, etc. Complex, proprietary processing. Update state required for classification. Always simple: forward or drop packets.
Update Forwarding State
Update forwarding State.
Classify Packet Update Classification State Forward Packet
Determines what application sent a packet, etc. Complex, proprietary processing. Update state required for classification. Always simple: forward or drop packets.
Oracle: Specify data dependencies and outputs
Update Forwarding State
Update forwarding State.
Classify Packet Update Classification State Forward Packet
Determines what application sent a packet, etc. Complex, proprietary processing. Update state required for classification. Always simple: forward or drop packets.
Oracle: Specify data dependencies and outputs Forwarding Model: Specify Completely
Update Forwarding State
Update forwarding State.
Classify Packet Forward Packet Update Forwarding State Update Classification State
Classify Packet Forward Packet Update Forwarding State
Outputs Is packet infected. Dependencies See all packets in connection (flow).
Update Classification State
Classify Packet Forward Packet Update Forwarding State
Outputs Is packet infected. Dependencies See all packets in connection (flow). if (infected) { infected_connections.add(packet.flow) }
Update Classification State
Classify Packet Forward Packet Update Forwarding State
Outputs Is packet infected. Dependencies See all packets in connection (flow). if (packet.flow not in infected_connections) { forward (packet); } if (infected) { infected_connections.add(packet.flow) }
Update Classification State
infected connection( flow(p)) = ) (♦rcv(n, p0)^ flow(p0) = flow(p)^ infected(p)) snd(n, p) = ⇒ (♦rcv(n, p)∧ ¬infected connection(flow(p)))
Model each middlebox in the network Build network forwarding model Invariant Holds Example of violation Logical Invariants SMT Solver (Z3 from MSR)
Firewall (f) Cache (c) Switch Router Switch A B C D
f(p, port) ≡ (p, f) if port = A ∧ (dst(p) = C ∨ dst(p) = D) (p, c) if port = f ∧ dst(p) = C ∨ dst(p) = D) (p, C) if port = c ∧ dst(p) = C (p, D) if port = c ∧ dst(p) = D . . .
Firewall (f) Cache (c) A B C D
ACME Hosting Willie E Coyote Road Runner Firewall Cache Sylvester Tweety Firewall
predator 6$ prey server prey 6$ predator server
ACME Hosting Willie E Coyote Road Runner Firewall Cache Sylvester Tweety Firewall
predator 6$ prey server prey 6$ predator server
Invariant: RR cannot access data from Coyote’s server
ACME Hosting Willie E Coyote Road Runner Firewall Cache Sylvester Tweety Firewall
predator 6$ prey server prey 6$ predator server
Invariant: RR cannot access data from Coyote’s server Willie E Coyote
ACME Hosting Willie E Coyote Road Runner Firewall Cache Sylvester Tweety Firewall
predator 6$ prey server prey 6$ predator server
Invariant: RR cannot access data from Coyote’s server Willie E Coyote Firewall Cache
ACME Hosting Willie E Coyote Road Runner Firewall Cache Sylvester Tweety Firewall
predator 6$ prey server prey 6$ predator server
Invariant: RR cannot access data from Coyote’s server Willie E Coyote Firewall Cache
ACME Hosting Willie E Coyote Road Runner Firewall Cache Sylvester Tweety Firewall
predator 6$ prey server prey 6$ predator server
Invariant: RR cannot access data from Coyote’s server Willie E Coyote Firewall Cache
0.01 0.1 1 10 100 1000 10000 100000 Slice 5 10 15 20 Time (S) # of Tenants Priv-Priv Pub-Priv Priv-Pub
0.01 0.1 1 10 100 1000 10000 100000 Slice 5 10 15 20 Time (S) # of Tenants Priv-Priv Pub-Priv Priv-Pub
50 100 150 200 250 300 350 25 50 100 250 500 1000 Time (S) # of Policy Equivalence Classes Rules Redundancy Traversal