SLIDE 1
FAB: Towards Flow-aware Bu fg er Sharing in Programmable Switches - - PowerPoint PPT Presentation
FAB: Towards Flow-aware Bu fg er Sharing in Programmable Switches - - PowerPoint PPT Presentation
FAB: Towards Flow-aware Bu fg er Sharing in Programmable Switches Maria Apostolaki Joint work with Laurent Vanbever & Manya Ghobadi An old story An old story Fan-in causing queue built-up Switch Senders Receivers An
SLIDE 2
SLIDE 3
Fan-in causing queue built-up An old story…
… …
Switch Senders Receivers
SLIDE 4
Fan-in causing drops An old story…
… …
Switch Drops Senders Receivers
SLIDE 5
High tail FCT SLA violations Drops
… …
Switch Drops Drops increase Flow Completion Times An old story…
SLIDE 6
An old story…
Active Queue Management Scheduling TCP Version
Multiple approaches to address this issue
… …
Switch Drops
SLIDE 7
An old story…
Active Queue Management Scheduling TCP Version
Multiple approaches to address this issue
… …
Switch Drops
SLIDE 8
An old story…
Active Queue Management Scheduling TCP Version
Multiple approaches to address this issue
… …
Switch Drops
SLIDE 9
An old story…
Active Queue Management Scheduling TCP Version
Multiple approaches to address this issue
… …
Switch Drops
SLIDE 10
Bufger management: the algorithm according to which ports/queues of a device share a common bufger
SLIDE 11
Bufger management: the algorithm according to which ports/queues of a device share a common bufger
Most of today’s devices have a shared bufger to absorb bursts
SLIDE 12
… …
Switch How many packets can each port store in the common bufger?
SLIDE 13
… …
Switch
remaining excessive packets will be dropped
How many packets can each port store in the common bufger?
SLIDE 14
… …
Switch How many packets can each port store in the common bufger?
Let’s give… …half of the bufger to each port! …small fraction to each port!
remaining excessive packets will be dropped
SLIDE 15
FAB: Towards Flow-aware Bufger Sharing in Programmable Switches
Joint work with Laurent Vanbever & Manya Ghobadi
SLIDE 16
Practicality Outline Background FAB Initial Results
SLIDE 17
Practicality Outline Background FAB Initial Results
SLIDE 18
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 19
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 20
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 21
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 22
Simulation Results
… …
Senders Receivers Switch Back to our story…
SLIDE 23
Simulation Results Shared bufger can host up to 180 packets Senders Receivers
180 packets … …
Switch
SLIDE 24
Simulation Results Long flows will consume as much bufger as there is available
… …
Senders Long Flows Receivers Switch
45 90 135 180 0.4 0.8 1.2 # pkts bufgered Time (sec)
port 1
SLIDE 25
Simulation Results Senders Long Flows Short Flows Short flows will attempt to instantaneously store at most 75 packets in the shared bufger Receivers
20 40 60 80 0.4 0.8 1.2 45 90 135 180 0.4 0.8 1.2
… …
Switch
# pkts bufgered Time (sec) # pkts bufgered Time (sec)
port 1 port 2
SLIDE 26
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 27
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns) 20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
0.2 0.6 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
Complete Partitioning: static bufger space per port = 10 packets
SLIDE 28
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns) 20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Receiver of long flows bufgers up to 10 packets
0.2 0.6 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 29
Receiver of long flows bufgers up to 10 packets
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 30
Receiver of long flows bufgers up to 10 packets
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
95%
5%used by port 1
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
Unused
SLIDE 31
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Receiver of short flows bufgers up to 10 packets
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 32
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Receiver of short flows bufgers up to 10 packets
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 33
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns) 20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
90%
5% 5%used by port 2 Unused
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
Bufger is 90% empty
SLIDE 34
Bufger is 90% empty, yet the burst is not absorbed
20 40 60 80 100 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Burst Size
90%
5% 5%0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 35
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 36
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 37
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Complete Sharing: unrestricted bufger space per port
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 38
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Long flows use all bufger
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 39
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Long flows use all bufger
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 40
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Long flows use all bufger
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
100%
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 41
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Upon arrival, the burst finds the bufger fully occupied
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 42
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns) 20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
10%
90%
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
The bufger is fully utilized
SLIDE 43
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
The bufger is fully utilized, but the burst is not absorbed
20 40 60 80 100 120 140 160 180 200 2x108 4x108 6x108 8x108 1x109 1.2x109 # Pkts in Buer Time (ns)
Burst Size
10%
90%
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 44
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits continuous bufger use
adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 45
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 46
Dynamic Sharing: fraction (α) of remaining bufger per port Limit per port = α αn + 1 N
n: Number of congested ports N: Bufger Size (packets/Bytes) α: per port/queue parameter
SLIDE 47
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
Dynamic Sharing: a fraction (α) of remaining shared bufger per port
SLIDE 48
One port uses bufger. Limit =
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
α αn + 1 N 1 1 + 1 180 = 90 =
SLIDE 49
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
One port uses bufger. Limit = α αn + 1 N 1 1 + 1 180 = 90 =
SLIDE 50
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
One port uses bufger. Limit = α αn + 1 N 1 1 + 1 180 = 90 =
50% 50%
SLIDE 51
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
Two port uses bufger. Limit = α αn + 1 N 1 2 + 1 180 = 60 =
SLIDE 52
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
Two port uses bufger. Limit = α αn + 1 N 1 2 + 1 180 = 60 =
SLIDE 53
33% of the bufger is empty,
33% 33% 33%
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 54
33% of the bufger is empty, yet the burst is not fully absorbed Burst Size
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 55
Three common bufger management techniques with pros & cons
Complete Partitioning: statically allocated bufger space per port Complete Sharing: unrestricted bufger space per port Dynamic Sharing: fraction (α) of remaining bufger per port
benefits long flows adapts fairly to load ignores queue content works for unbalanced traffjc wastes bufger otherwise works for balanced traffjc
SLIDE 56
Why should we care about queue content?
SLIDE 57
Short flows would benefit more from bufger
Why should we care about queue content?
SLIDE 58
Practicality Outline Background FAB Initial Results
SLIDE 59
deciding packet’s priority directly in the data plane
e.g. prioritizing packets based on flow size
mapping packets to an α according to priority
α is proportionate to the per-flow expected benefit from bufgering
FABULOUS Sharing (FAB) improves dynamic sharing by
SLIDE 60
deciding packet’s priority directly in the data plane
e.g. prioritizing packets based on flow size
mapping packets to an α according to priority
α is proportionate to the per-flow expected benefit from bufgering
Flow-aware Bufger Sharing (FAB) improves dynamic sharing by
SLIDE 61
Flow-aware Bufger Sharing (FAB) improves dynamic sharing by
deciding packet’s priority directly in the data plane
e.g. prioritizing packets based on flow size
using multiple α per queue/port
Two packets of same ingress and egress port which arrived together, might see difgerent limits
mapping packets to an α according to priority
α is proportionate to the per-flow expected benefit from bufgering
SLIDE 62
deciding packet’s priority directly in the data plane
e.g. prioritizing packets based on flow size
using multiple α per queue/port
Two packets of same ingress and egress port which arrived together, might see difgerent limits
mapping packets to an α according to priority
α is proportionate to the per-flow expected benefit from bufgering
Flow-aware Bufger Sharing (FAB) improves dynamic sharing by
SLIDE 63
deciding packet’s priority directly in the data plane
e.g. prioritizing packets based on flow size
using multiple α per queue/port
Two packets of same ingress and egress port which arrived together, might see difgerent limits
mapping packets to an α according to their priority in bufgering
α is proportionate to the per-flow expected benefit from bufgering
Flow-aware Bufger Sharing (FAB) improves dynamic sharing by
SLIDE 64
Flow-aware Bufger Sharing (FAB) α=0.1 for long flows α= 10 for short flows
SLIDE 65
Flow-aware Bufger Sharing (FAB)
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 66
FAB maps long flows to α=0.1
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 67
Limit for long flows =
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
α αn + 1 N 0.1 0.1 + 1 180 = 16 =
SLIDE 68
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
α αn + 1 N 0.1 0.1 + 1 180 = 16 = Limit for long flows =
SLIDE 69
90%
10%
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
α αn + 1 N 0.1 0.1 + 1 180 = 16 = Limit for long flows =
SLIDE 70
FAB maps short flows to α=10
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
SLIDE 71
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
α αn + 1 N 10 10*2 + 1 180 = 85 = Limit for short flows =
SLIDE 72
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
α αn + 1 N 10 10*2 + 1 180 = 85 = Limit for short flows =
SLIDE 73
48% 42%
10%
0.2 1 0.4 0.6 0.8 Time (s) # Pkts in Buffer
α αn + 1 N 10 10*2 + 1 180 = 85 = Limit for short flows =
SLIDE 74
Practicality Outline Background FAB Initial Results
SLIDE 75
Short-Flows Workload Simulation Results Mixed Workload
SLIDE 76
Simulation Results Short-Flows Workload
…
Senders Short Flows Receiver
SLIDE 77
Dynamic Sharing does not allow burst to be fully bufger, resulting in increased tail FCT
SLIDE 78
Dynamic Sharing does not allow burst to be fully bufger, resulting in increased tail FCT
SLIDE 79
Simulation Results Mixed Workload
… …
Senders Short Flows Long Flows
SLIDE 80
FAB limits long flows and allows the burst to use the bufger
SLIDE 81
FAB limits long flows and allows the burst to use the bufger
# pkts bufgered
SLIDE 82
Practicality Outline Background FAB Initial Results
SLIDE 83
Is FAB practical?
configures complete sharing
Disallow traffjc manager to drop any packet as long as there is space the bufger
approximates flow size with flow arrival time
Use bloom filter to store flows that started in discrete time windows
enables dropping at the ingress based on FAB
Dropping decisions at ingress based on bufger occupancy and flow information
SLIDE 84
Practicality Outline Background FAB Initial Results
SLIDE 85