Yutaro Hayakawa (Keio University) Lars Eggert (NetApp) Michio Honda (NEC Laboratories Europe) Douglas Santry (NetApp)
Prism: A Proxy Architecture for Datacenter Networks
1
Prism: A Proxy Architecture for Datacenter Networks Yutaro Hayakawa - - PowerPoint PPT Presentation
Prism: A Proxy Architecture for Datacenter Networks Yutaro Hayakawa (Keio University) Lars Eggert (NetApp) Michio Honda (NEC Laboratories Europe) Douglas Santry (NetApp) 1 Background TCP proxy plays important roles in modern cloud
1
2
3
4
Backend1 Backend2 Backend3
5
Proxy Backend1 Backend2 Backend3
6
10G 10G 10G Proxy Backend1 Backend2 Backend3
7
10G 10G 10G 10G Proxy Backend1 Backend2 Backend3
8
10G 10G 10G 10G Proxy Backend1 Backend2 Backend3
9
40Gbps Links Backend Frontend Proxy Backend Backend 10Gbps Links
・・・ ・・・
10
40Gbps Links Backend Frontend Proxy Backend Backend 10Gbps Links
・・・ ・・・
Frontend Proxy
11
Client’s HTTP GET
40Gbps Links Backend Frontend Proxy Backend Backend 10Gbps Links
・・・ ・・・
Frontend Proxy
12
Forward To backend
40Gbps Links Backend Frontend Proxy Backend Backend 10Gbps Links
・・・ ・・・
Frontend Proxy
13
Return HTTP OK
40Gbps Links Backend Frontend Proxy Backend Backend 10Gbps Links
・・・ ・・・
Frontend Proxy
14
Forward it to client
40Gbps Links Backend Backend Backend 10Gbps Links
・・・ ・・・
Frontend Proxy
15
40Gbps Links Backend Backend Backend 10Gbps Links
Problem: All incoming/outgoing traffic go through here
・・・ ・・・
Frontend Proxy
16
40Gbps Links Backend Frontend Proxy Backend Backend 10Gbps Links
・・・ ・・・
Frontend Proxy
17
Outgoing traffic from backend bypass frontend proxy
18
[1] D. E. Eisenbud et al. Maglev: A Fast and Reliable Software Network Load Balancer. Proc. usenix nsdi, 2016. [2] P. Patel et al. Ananta: Cloud Scale Load Balancing. Proc. acm sigcomm, 2013. [3] R. Gandhi et al. Duet: Cloud Scale Load Balancing with Hardware and Software. Proc. acm sigcomm, 2014.
Back end L4 LB Back end Back end Client Balance TCP connect request
[4] M. Alizadeh et al. CONGA: distributed congestion-aware load balancing for datacenters.
Talk directly
19
40Gbps Links Back end Proxy Back end Back end 10Gbps Links Client L2 Switch
Legacy Proxy
20
40Gbps Links Back end Proxy Back end Back end 10Gbps Links Client L2 Switch 40Gbps Links
Custom Backend
Switch Controller (Proxy)
10Gbps Links Client Programmable Switch(e.g.P4)
Custom Backend Custom Backend
Legacy Proxy Prism
21
40Gbps Links Back end Proxy Back end Back end 10Gbps Links Client L2 Switch 40Gbps Links
Custom Backend
Switch Controller (Proxy)
10Gbps Links Client Programmable Switch
Custom Backend Custom Backend
Legacy Proxy Prism
Basic idea: Offloading forwarding of application protocol payload to a switch
22
40Gbps Links Back end Proxy Back end Back end 10Gbps Links Client L2 Switch 40Gbps Links
Custom Backend
Switch Controller (Proxy)
10Gbps Links Client Programmable Switch
Custom Backend Custom Backend
Legacy Proxy Prism
Basic idea: Offloading application protocol payload forwarding to a switch => the Switch Controller (Proxy) only handles header exchange
23
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Example Behavior HTTP/1.1
24
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Client and Switch Controller establish TCP connection
25
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Client sends request to switch controller GET /example/index.html
26
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Switch controller selects backend
27
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Switch controller injects a rule to the switch which rewrites fields of packets from backend Rule
28
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Switch controller sends client request to backend with some TCP metadata
Sequence Number ACK Number Client’s request TCP options…
Rule
29
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Backend migrate TCP connection from information given by Switch controller
Sequence Number ACK Number Client’s request TCP options…
Rule
30
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Backend and client communicate directly via migrated TCP connection
HTTP OK and Payload data
Rule
31
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Backend send number
switch controller I sent N bytes Rule
32
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Switch controller removes the rule from the switch Rule
33
40Gbps Links Custom Backend Switch Controller (Proxy) Custom Backend Custom Backend 10Gbps Links
・・・ ・・・
Programmable Switch Client Switch controller waits for next request or FIN packet Waiting for FIN or next request
34
35
36
HTTP Benchmarking App HTTP Benchmarking App L2 Switch (Software) Proxy HTTP Server HTTP Server
37
HTTP Benchmarking App HTTP Benchmarking App Prism Switch (Software) Prism Switch Controller Prism HTTP Backend Prism HTTP Backend
38
5 10 15 1 10 100 1000 2000 5000 10000 50000 75000 100000 Object Size [KB] Throughput [Gbps] Prism Proxy
are limited to about 9Gbps in maximum
clients exceeds 10Gbps in 2MB data transfer
18.7Gbps in maximum Prism can use bandwidth of uplinks which proxy’s clients can’t use
39
5 10 15 1 10 100 1000 2000 5000 10000 50000 75000 100000 Object Size [KB] Throughput [Gbps] Prism Proxy
are limited to about 9Gbps in maximum
clients exceeds 10Gbps in 2MB data transfer
18.7Gbps in maximum Prism can use bandwidth of uplinks which proxy’s clients can’t use 10G
using 1 core
40
20 40 60 80 100 120 60 (1 core) 1514 (1 core) 60 (2 cores) 1514 (2 cores) Packet size [Bytes] Throughput [Gbps] No Logic L2 Learning Prism pkt-gen tx pkt-gen rx
Virtual NIC Virtual NIC
Switching Logic
mSwitch
The Prism switch can achieve high throughput even if it is implemented as software
41
42