Aaron Gember-Jacobson, Chaithan Prakash, Raajay Viswanathan, Robert Grandl, Junaid Khalid, Sourav Das, Aditya Akella
1
Network Function Control Aaron Gember-Jacobson , Chaithan Prakash, - - PowerPoint PPT Presentation
OpenNF: Enabling Innovation in Network Function Control Aaron Gember-Jacobson , Chaithan Prakash, Raajay Viswanathan, Robert Grandl, Junaid Khalid, Sourav Das, Aditya Akella 1 Network functions (NFs) Perform sophisticated stateful actions
1
2
Intrusion detection system (IDS) Caching proxy WAN
3
Intrusion detection system (IDS) Caching proxy WAN
3
Hypervisor
3
Hypervisor
3
Hypervisor
4
4
4
4
4
4
4
5
6
6
6
6
6
6
6
6
7
… 1 2 3 …
8
9
10
11
12
Connection Connection TcpAnalyzer HttpAnalyzer TcpAnalyzer HttpAnalyzer
ConnCount
Statistics
13
Per Multi All
14
14
move (port=80, Bro1, Bro2)
14
move (port=80, Bro1, Bro2) get(per, port=80)
14
move (port=80, Bro1, Bro2) get(per, port=80) [Chunk1] [Chunk2]
14
move (port=80, Bro1, Bro2) get(per, port=80) [Chunk1] del(per, port=80) [Chunk2]
14
move (port=80, Bro1, Bro2) get(per, port=80) [Chunk1] put (per, Chunk1) del(per, port=80) [Chunk2] put (per, Chunk2)
14
move (port=80, Bro1, Bro2) get(per, port=80) [Chunk1] put (per, Chunk1) del(per, port=80) [Chunk2] put (per, Chunk2) forward(port=80, Bro2)
14
move (port=80, Bro1, Bro2) get(per, port=80) [Chunk1] put (per, Chunk1) del(per, port=80) [Chunk2] put (per, Chunk2) forward(port=80, Bro2)
15
detect- MHR
16
detect- MHR
16
B1 R1
detect- MHR
16
B1 R1
move(red,Bro1 ,Bro2 )
detect- MHR
16
B1 R1
move(red,Bro1 ,Bro2 )
detect- MHR
16
B1 R1 R2
Missing state
move(red,Bro1 ,Bro2 )
detect- MHR
16
B1 R1 R2
Missing state
move(red,Bro1 ,Bro2 )
detect- MHR
16
B1 R1 R2
Missing state
move(red,Bro1 ,Bro2 )
detect- MHR
16
B1 R1 R2
Missing state
move(red,Bro1 ,Bro2 ) Missing updates
R3
detect- MHR
16
B1 R1 R2
Missing state
move(red,Bro1 ,Bro2 ) Missing updates
R3
detect- MHR
16
B1 R1 R2
Missing state
move(red,Bro1 ,Bro2 ) Missing updates
R3
17
R1
18
R1
18
Drop R1
18
Drop R1
18
Drop R1 R2
18
Drop R1 R2
18
Drop R1 R2
18
Drop R1 R1,R2
18
Drop R1 R1,R2
18
Drop R1 R1,R2 R1,R2,R3
19
Controller Switch Bro2 Bro1
19
Controller Switch Bro2
Bro1
R2 R2 R2
19
Controller Switch Bro2
forwarding update Bro1
R2 R2 R2
19
Controller Switch Bro2
forwarding update Bro1
R2 R2 R3 R2 R3
19
Controller Switch Bro2
forwarding update Bro1
R2 R2 R3 R3 R3 R2 R3 R3
19
Controller Switch Bro2
forwarding update Bro1
R2 R2 R4 R3 R3 R3 R2 R4 R3 R3
19
Controller Switch Bro2
forwarding update Bro1
R2 R2 R4 R3 R3 R3 R2 R4 R3 R3
20
Drop R1 B2
20
Drop R1 R1,R2
20
Drop R1 R1,R2 Buf
20
Drop R1 R1,R2 Buf
20
Drop R1 R1,R2 Buf R3 R3 R4
20
Drop R1 R1,R2 R1,R2, R3 Buf R3 R3 R4
20
Drop R1 R1,R2 R1,R2, R3 R1,R2, R3,R4
20
Drop R1 R1,R2 R1,R2, R3 R1,R2, R3,R4
21
22
Filter Per Multi All Scope
…
LF LF+OP
1 2 3 … …
+ None
23
24
25
26
Serialization/deserialization costs dominate Cost grows with state complexity
50 100 150 200 Average Maximum
Per-packet Latency Increase (ms)
100 200 300 400 500 NG NG PL LF PL+ER
Move Time (ms)
27
Packets dropped! 686 462 881 packets in events
1120 pkts buffered 838 pkts in events +
NG NG PL LF PL+ER OP PL+ER
28
29
30
31
movePrefix(prefix,oldInst,newInst): copy(oldInst,newInst,{nw_src:prefix},multi) move(oldInst,newInst,{nw_src:prefix},per,LF+OP) while (true): sleep(60) copy(oldInst,newInst,{nw_src:prefix},multi) copy(newInst,oldInst,{nw_src:prefix},multi)
scan.bro vulnerable.bro weird.bro
32
33