An Assertion Language for Debugging SDN Applications
Ryan Beckett
with
Princeton University
- X. Kelvin Zou, Shuyuan Zhang,
Sharad Malik, Jennifer Rexford, David Walker
1
An Assertion Language for Debugging SDN Applications Ryan Beckett - - PowerPoint PPT Presentation
An Assertion Language for Debugging SDN Applications Ryan Beckett with X. Kelvin Zou, Shuyuan Zhang, Sharad Malik, Jennifer Rexford, David Walker Princeton University 1 Data Plane Verification Controller Find
with
Princeton University
Sharad Malik, Jennifer Rexford, David Walker
1
transitions
Controller Data Plane Verifier
2
client client server server
s1 A c1 c2 B
3
client client server server
s1 A c1 c2 B
3
“A server can only reach a client if the client has communicated with the server” Firewall Property: Firewall Property:
client client server server
s1 A c1 c2 B
3
“A server can only reach a client if the client has communicated with the server” Firewall Property: Firewall Property:
client client server server
s1 A c1 c2 B
3
“A server can only reach a client if the client has communicated with the server” Firewall Property: Firewall Property:
reachable(s1, c1) client client server server c1 s1
s1 A c1 c2
Firewall Property: Firewall Property:
B
3
reachable(s1, c1) ∧ client client server server c1 s1 c2 s1
s1 A c1 c2
Firewall Property: Firewall Property:
B
reachable(s1, c2)
3
∀(c,s)∈table, reachable(s, c) client client server server c1 s1 c2 s1
s1 A c1 c2
Firewall Property: Firewall Property:
B
3
client client server server c1 s1 c2 s1
s1 A c1 c2
Firewall Property: Firewall Property:
B
∀c∈clients,∀s∈servers, reachable(s, c) ↔ (c,s)∈table
3
client client server server c1 s1 c2 s1
s1 A c1 c2
Controller Code: Controller Code:
B
3
assert_continuously assert_continuously(f)
pkt = event.parsed if pkt.typ != eth.IP_TYP: return …
client client server server
s1 A c1 c2 B
3
Controller Code: Controller Code:
assert_continuously(f)
client client server server c1 s1
s1 A c1 c2 B
r1 r2
3
Controller Code: Controller Code:
assert_continuously(f)
client client server server c1 s1
s1 A c1 c2 B
r1 r2
3
Controller Code: Controller Code:
stop(f) assert_continuously(f) assert_continuously(f)
install(r1) install(r2)
4
Controller Data Plane Verifier
specification
4
Controller Data Plane Verifier
specification
Controller
Assertion Library
specification
Property Generator Data Plane Verifier
verification conditions
Assertion Library
5
Assertion Library
5
event
Assertion Library
5
event rule
Assertion Library
5
event verification conditions assertion state update
Assertion Library
5
event exception verification results
6
6
6
reachable(s1, c1)
s1 A c1 c2 B
Firewall Property: Firewall Property:
6
reachable(s1, c2) reachable(s1, c1) ∧
Firewall Property: Firewall Property:
s1 A c1 c2 B
6
reachable(s1, c1)
Firewall Property: Firewall Property:
s1 A c1 c2 B
6
reachable(s1, c2) reachable(s1, c1) ∧
Firewall Property: Firewall Property:
s1 A c1 c2 B
c=c1 c=c2 s=s1 s=s1
Firewall Property: Firewall Property:
True False reachable(s1, c1) ↔ (c1,s1)∈table ∀c ∀s ∀s
7
s=s2 s=s2
Firewall Property: Firewall Property:
True False
c=c1 c=c2 s=s1 s=s1
∀c ∀s ∀s
7
Firewall Property: Firewall Property:
True False
c=c1 c=c2 s=s1 s=s1 s=s2 s=s2 c=c3 s=s1 s=s2
∀c ∀s ∀s ∀s
7
Firewall Property: Firewall Property:
True False
c=c1 c=c2 s=s1 s=s1 s=s2 s=s2
∀c ∀s ∀s
7
c=c3 s=s1 s=s2
∀s
Firewall Property: Firewall Property:
True False
c=c1 c=c2 s=s1 s=s1 s=s2 s=s2
∀c ∀s ∀s
7
c=c3 s=s1 s=s2
∀s
Firewall Property: Firewall Property:
True False
c=c1 c=c2 s=s1 s=s1 s=s2 s=s2
∀c ∀s ∀s
7
c=c3 s=s1 s=s2
∀s
Firewall Property: Firewall Property:
True False
c=c1 c=c2 s=s1 s=s1 s=s2 s=s2
∀c ∀s ∀s
7
c=c3 s=s1 s=s2
∀s
8
25 50 75 100 10 20 30 40 50 VC % Reduction active hosts (clients)
Stateful Firewall (incremental vs naive)
9