Professional Documents
Culture Documents
or flow-level path control. OpenFlow in theory can establish fine-grained routing paths by installing flow entries
in the OpenFlow switches via the controller. But in practice, there are practical challenges such as limited flow
table size and dynamic flow path setup that need to be
addressed (see 6 for more details).
In order to address the scalability and deployment
challenges faced by the above mentioned approaches,
this paper presents XPath for flow-level explicit path
control. XPath addresses the dynamic path setup challenge by giving a positive answer to the following question: can we pre-install all desired routing paths between
any two nodes? Further, XPath shows that we can preinstall all these paths using the destination IP based forwarding TCAM tables of commodity switches1 .
One cannot enumerate all possible paths in a DCN as
the number can be extremely large. However, we observe
that DCNs (e.g., [24, 17, 18, 20]) do not intend to use
all possible paths but a set of desired paths that are sufficient to exploit the topology redundancy (2.2). Based
on this observation, XPath focuses on pre-installing these
desired paths in this paper. Even though, the challenge
is that the sheer number of desired paths in large DCNs
is still large, e.g., a Fattree (k = 64) has over 232 paths
among ToRs (Top-of-Rack switches), exceeding the size
of IP table with 144K entries, by many magnitudes.
To tackle the above challenge, we introduce a twostep compression algorithm, i.e., paths to path sets aggregation and path ID assignment for prefix aggregation,
which is capable of compressing a large number of paths
to a practical number of routing entries for commodity
switches (3).
To show XPaths scalability, we evaluate it on various
well-known DCNs (3.3). Our results suggest that XPath
effectively expresses tens of billions of paths using only
tens of thousands of routing entries. For example, for
Fattree(64), we pre-install 4 billion paths using 64K
entries2 ; for HyperX(4,16,100), we pre-install 17 billion
paths using 36K entries. With such algorithm, XPath
Introduction
Driven by modern Internet applications and cloud computing, data centers are being built around the world. To
obtain high bandwidth and achieve fault tolerance, data
center networks (DCNs) are often designed with multiple paths between any two nodes [3, 4, 13, 17, 18, 31].
Equal Cost Multi-Path routing (ECMP) [23] is the stateof-the-art for multi-path routing and load-balancing in
DCNs [5, 17, 31].
In ECMP, a switch locally decides the next hop from
multiple equal cost paths by calculating a hash value,
typically from the source and destination IP addresses
and transport port numbers. Applications therefore cannot explicitly control the routing path in DCNs.
However, many emerging DCN applications such as
provisioned IOPS, fine-grained flow scheduling, bandwidth guarantee, etc. [5, 7, 8, 19, 21, 22, 25, 26, 39, 45],
all require explicit routing path control over the underlying topologies (2).
Many approaches such as source routing [36],
MPLS [35], and OpenFlow [29] can enforce explicit path
control. However, source routing is not supported in the
hardware of the data center switches, which typically
only support destination IP based routing. MPLS needs
a signaling protocol, i.e., Label Distribution Protocol, to
establish the path, which is typically used only for traffic
engineering in core networks instead of application-level
1
USENIX Association
12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15) 15
Desired path
2
2.1
Undesired path
2.2
Case #1: Provisioned IOPS: IOPS are input/output operations per second. Provisioned IOPS are designed to
deliver predictable, high performance for I/O intensive
workloads, such as database applications, that rely on
consistent and fast response times. Amazon EBS provisioned IOPS storage was recently launched to ensure that
disk resources are available whenever you need them regardless of other customer activity [25, 34]. In order to
ensure provisioned IOPS, there is a need for necessary
bandwidth over the network. Explicit path control is required for choosing an explicit path that can provide such
necessary bandwidth (5.1).
XPath overview
16 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
USENIX Association
Remarks: In this paper, XPath focuses on how to preinstall the desired paths, but it does not impose any constraint on how to use the pre-installed paths. On top of
XPath, we can either let each server to select paths in
a distributed manner, or employ an SDN controller to
coordinate path selection between servers or ToRs in a
centralized way (which we have taken in our implementation of this paper). In either case, the key benefit is that
with XPath we do not need to dynamically modify the
switches.
We also note that XPath is expressive and is able to
pre-install all desired paths in large DCNs into commodity switches. Thus XPaths routing table recomputation
is performed infrequently, and cases such as link failures
or switch upgrade [26] are handled through changing
path IDs rather than switch table reconfiguration. However, table recomputation is necessary for extreme cases
like network wide expansion where the network topology
has fundamentally changed.
3
USENIX Association
12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15) 17
path1
path2
path2
path1
path1
convergent
disjoint
path2
divergent
s2
p1 p2 p3 p4 p5 p6
Path set
Egress port
ID assignment (bad)
ID assignment (good)
pathset0
pathset1
pathset2
pathset3
pathset4
pathset5
pathset6
pathset7
0
1
2
0
1
2
0
0
0
1
2
3
4
5
6
7
4
0
2
5
1
3
6
7
s3
p7 p8 p9
Convergent: {p1, p4, p7}, {p2, p5, p8}, {p3, p6, p9}
Path set
ID
Prefix
Egress port
Disjoint: {p1, p5, p9}, {p2, p6, p7}, {p3, p4, p8}
pathset1,4
pathset2,5
pathset0,3,6,7
0, 1
2, 3
4, 5, 6, 7
00
01
1
1
2
0
Mix of two: {p1, p4, p8}, {p2, p6, p9}, {p2, p5, p7}
d1
d2
d3
3.1
The number of desired paths is large. For example, Fattree(64) has over 232 paths between ToRs, more than
what a 32-bit IP/ID can express. To reduce the number
of unique IDs, we aggregate the paths that can share the
same ID without causing routing ambiguity into a nonconflict path set, identified by a unique ID.
Then, what kinds of paths can be aggregated? Without
loss of generality, two paths have three basic relations between each other, i.e., convergent, disjoint, and divergent
as shown in Fig. 3. Convergent and disjoint paths can
be aggregated using the same ID, while divergent paths
cannot. The reason is straightforward: suppose two paths
diverge from each other at a specific switch and they have
the same ID path1 = path2 = path id, then there will
be two entries in the routing table: path id portx and
path id porty , (x = y). This clearly leads to ambiguity. Two paths can be aggregated without conflict if
they do not cause any routing ambiguity on any switch
when sharing the same ID.
3.2
3.2.1
Problem description
18 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
USENIX Association
one entry via prefix aggregation. For example, in Table 1, 8 path sets go through a switch with 3 ports. A
nave (bad) assignment will lead to an uncompressable
routing table with 7 entries. However, if we assign the
paths that traverse the same egress port with consecutive
IDs (good), we can obtain a compressed table with 3 entries as shown in Table 2.
To optimize for a single switch, we can easily achieve
the optimal by grouping the path sets according to the
egress ports and encoding them consecutively. In this
way, the number of entries is equal to the number of
ports. However, we optimize for all the switches simultaneously instead of one.
N =f (M) = s3 n31
.. ..
. .
s|S| n|S|1
AIB(si ) = 1 +
.. ..
. .
s|S| m|S|1
t2
m12
m22
m32
..
.
m|S|2
t3
m13
m23
m33
..
.
m|S|3
...
...
...
...
..
.
...
3
n13
n23
n33
..
.
n|S|3
...
...
...
...
..
.
...
|T |
n1|T |
n2|T |
n3|T |
..
.
n|S||T |
2
n12
n22
n32
..
.
n|S|2
|T |1
r=1
(nir ni(r+1) )
(1)
where u v = 1 if u = v (0 is skipped), and 0 otherwise. With Equation 1, we can obtain the maximal
number of AIBs among all the switches: MAIB =
max {AIB(si )}, and our goal is to find an f that min1i|S|
imizes MAIB.
3.2.2
Solution
ID assignment algorithm: The above problem is NPhard as it can be reduced from the 3-SAT problem [37].
Thus, we resort to heuristics. Our practical solution is
guided by the following thought. Each switch si has its
own local optimal assignment fi . But these individual
local optimal assignments may conflict with each other
by assigning different IDs to a same path set on different switches, causing an ID inconsistency on this path
set. To generate a global optimized assignment f from
the local optimal assignments fi s, we can first optimally
assign IDs to path sets on each switch individually, and
then resolve the ID inconsistency on each path set in an
incremental manner. In other words, we require that each
step of ID inconsistency correction introduces minimal
increase on MAIB.
Based on the above consideration, we introduce our
ID Assignment() in Algorithm 1. The main idea behind
the algorithm is as follows.
First, we assign IDs to path sets on each switch individually. We achieve the optimal result for each
switch by simply assigning the path sets that have the
same egress ports with consecutive IDs (lines 12).
Second, we correct inconsistent IDs of each path set
incrementally. After the first step, the IDs for a path
t|T |
m1|T |
m2|T |
m3|T |
..
.
m|S||T |
5
USENIX Association
12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15) 19
t
1
s1 1
M = s2 2
s3 1
t2
1
1
2
t
1
s1 1(3)
M2 = s2 2(3)
s3 1(3)
t3
1
1
2
t2
1(2)
1(2)
2(2)
t4
2
2
2
t5
1
3
3
t3
1(1)
1(1)
2(1)
t6
2
4 M0
2
t4
t5
2(5) 1(4)
2(4) 3(5)
2(4) 3(6)
t
t2
1
s1 1(1) 1(2)
= s2 2(3) 1(1)
s3 1(1) 2(2)
t6
2(6)
4(6) . . . M6
2(5)
t3
1(3)
1(2)
2(3)
t4
2(5)
2(4)
2(4)
t
1
s1 1(3)
= s2 2(3)
s3 1(3)
t5
1(4)
3(5)
3(6)
t2
1(2)
1(2)
2(2)
t6
2(6)
4(6) M1
2(5)
t3
t4
1(1) 2(4)
1(1) 2(4)
2(1) 2(4)
t
t2
t3
t4
1
s1 1(3) 1(2) 1(1) 2(5)
= s2 2(3) 1(1) 1(2) 2(4)
s3 1(3) 2(2) 2(1) 2(4)
t5
t6
1 2
s1 1 1
1(6) 2(5)
3(6) 4(5) N = s2 1 1
s3 2 2
3(6) 2(5)
t5
1(4)
3(5)
3(6)
3 4
1 2
2 2
1 2
t6
2(6)
4(6)
2(5)
5 6
2 1
4 3
2 3
Figure 5: Walk-through example on Algorithm 1: for any element x(y) in Mk (1 k 6), x is the egress port
and y is the ID assigned to a path set tj on switch si , red/green ys mean inconsistent/consistent IDs for path sets.
Algorithm 1 Coordinated ID assignment algorithm
ID Assignment(M) /* M is initial matrix, N is
output */;
1 foreach row i of M (i.e., switch si ) do
2
assign path sets tj (1 j |T |) having the
same mij values (i.e., egress ports) with consecutive IDs;
/* path sets are optimally encoded on each switch
locally, but one path set may have different IDs assigned with respect to different switches */;
3 M M with IDs specified for each tj in each si ;
4 foreach column j of M (i.e., path set tj ) do
5
if tj has inconsistent IDs then
6
let C = {c1 , c2 , , ck }, (1 < k |S|) be
the set of inconsistent IDs;
7
foreach c C do
8
tentatively use c to correct the inconsistency by swapping ci with c on each relevant switch;
9
compute MAIB;
10
11
20 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
USENIX Association
DCNs
Nodes #
Links #
Original
paths#
Max. entries #
without compression
Fattree(8)
Fattree(16)
Fattree(32)
Fattree(64)
BCube(4, 2)
BCube(8, 2)
BCube(8, 3)
BCube(8, 4)
VL2(20, 8, 40)
VL2(40, 16, 60)
VL2(80, 64, 80)
VL2(100, 96, 100)
HyperX(3, 4, 40)
HyperX(3, 8, 60)
HyperX(4, 10, 80)
HyperX(4, 16, 100)
208
1,344
9,472
70,656
112
704
6,144
53,248
1,658
9,796
103,784
242,546
2,624
31,232
810,000
6,619,136
384
3,072
24,576
196,608
192
1,536
16,384
163,840
1,760
10,240
107,520
249,600
2,848
36,096
980,000
8,519,680
15,872
1,040,384
66,977,792
4,292,870,144
12,096
784,896
67,092,480
5,368,545,280
31,200
1,017,600
130,969,600
575,760,000
12,096
784,896
399,960,000
17,179,607,040
944
15,808
257,792
4,160,512
576
10,752
114,688
1,146,880
6,900
119,600
4,030,400
7,872,500
432
4,032
144,000
983,040
512
8,192
131,072
2,097,152
192
1,536
16,384
163,840
800
6,400
102,400
240,000
192
1,536
40,000
262,144
496
8,128
130,816
2,096,128
189
1,533
16,380
163,835
780
6,360
102,320
239,900
189
1,533
39,996
262,140
116
968
7,952
64,544
108
522
4,989
47,731
310
2,820
49,640
117,550
103
447
8,732
36,164
3.3
Scalability evaluation
6 DCNs
7
USENIX Association
12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15) 21
Fattree(16)
Fattree(32)
Fattree(64)
BCube(8, 2)
BCube(8, 3)
BCube(8, 4)
VL2(40, 16, 60)
VL2(80, 64, 80)
VL2(100, 96, 100)
HyperX(3, 4, 40)
HyperX(4, 10, 80)
HyperX(4, 16, 100)
10 4
0.078000
4.696000
311.909000
0.046000
6.568000
684.895000
0.047000
3.645000
28.258000
0.000000
10.117000
442.379000
10
10
Number of entries
DCNs
No equivalence reduction
Equivalene reduction
10 1
10
e(8
ttre
Fa
(16
ree
tt
Fa
2)
,2)
(4,
e(8
ub
c
B
be
u
Bc
)
)
0)
0)
40
,20
4,4
4,2
,8,
(3,
(2,
(20
X
X
r
r
2
pe
pe
VL
Hy
Hy
0,4
(1
L2
turns out that the results are similar to that without equivalence reduction. This partially validates our hypothesis
in 3.2.2. Furthermore, we note that the algorithm with
equivalence reduction can even slightly outperform that
without it in some cases. This is not a surprising result
since both algorithms are heuristic solutions to the original problem.
Time cost: In Table 4, we show that equivalence reduction speeds up the runtime of the ID assignment algorithm. For example, without equivalence reduction, it
cannot return an output within 24 hours when the network scales to a few thousands. With it, we can get results for all the 4 DCNs within a few minutes even when
the network becomes very large. This is acceptable because it is one time pre-computation and we do not require routing table re-computation as long as the network
topology does not change.
4.1
Path ID resolution
22 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
USENIX Association
User
Kernel
Application
XPath
User Mode Daemon
Packet Header
Parser
TCP/IP
NDIS Filter Driver
XPath Kernel Driver
NIC Driver
Path Selection
Packet Header Modier
4.2
Failure handling
USENIX Association
12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15) 23
Core
C1
C2
C3
C4
C5
C6
C7
C8
C9
Agg
A1
A2
A3
A4
A5
A6
A7
A8
A9
40
35
30
ToR T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 T18
A fat-tree testbed with 18 ToR/Agg switches and 9 Core switches
25
15
0
1
0.8
CDF
0.4
0.2
2
40
60
80
Time (seconds)
100
120
T4 to T18. Each source server initiates 30 TCP connections in parallel, and each destination server hosts two
TCP connections. The total link capacity from T1 is
31G=3G, shared by 90 TCP connections.
Given the 90 TCP connections randomly share 3 up
links from T1, the load should be balanced overall. At
around 40 seconds, we disconnect one link (T1 to A1).
We use TCP sequence based method developed in 4.2
for automatic failure detection and recovery in this experiment. We then resume the link at time around 80
seconds to check whether the load is still balanced. We
log the goodput (observed by the application) and show
the results for three connections versus time in Fig. 10.
Since we find that the throughput of all 90 TCP connections are very similar, we just show the throughput of one
TCP connection for each source server.
We observe that all the TCP connections can share the
links fairly with and without failure. When the link fails,
the TCP connections traversing the failed link (T1 to A1)
quickly migrate to the healthy links (T1 to A2 and A3).
When the failed link recovers, it can be reused on a new
path ID resolution after the timeout of the local cache. In
our experiment, we set the cache timeout value as 1 second. However, one can change this parameter to achieve
satisfactory recovery time for resumed links. We also run
experiments for other traffic patterns, e.g., ToR-to-ToR
and All-to-ToR, and link failures at different locations,
and find that XPath works as expected in all cases.
4.3
20
0.6
0
1
flow 1
flow 2
flow 3
20
Testbed setup: We built a testbed with 54 servers connected by a Fattree(6) network (as shown in Fig. 8) using
commodity Pronto Broadcom 48-port Gigabit Ethernet
switches. On the testbed, there are 18 ToR, 18 Agg, and
9 Core switches. Each switch has 6 GigE ports. We
achieve these 45 virtual 6-port GigE switches by partitioning the physical switches. Each ToR connects 3
servers; and the OS of each server is Windows Server
2008 R2 Enterprise 64-bit version. We deployed XPath
on this testbed for experimentation.
IP table configuration: On our testbed, we consider
2754 explicit paths between ToRs (25758 paths between
end hosts). After running the two-step compression algorithm, the number of routing entries for the switch IP
tables are as follows, ToR: 3133, Agg: 48, and Core:
6. Note that the Fattree topology is symmetric, the numbers of routing entries after our heuristic are almost the
same for the switches at the same layer, which confirms
our hypothesis in 3.2.2 that equivalent nodes are likely
to have similar numbers of entries.
Path ID resolution time: We measure the path ID resolution time at the XPath daemon on end servers: from the
time when the query message is generated to the time the
response from the XPath manager is received. We repeat
the experiment 4000 times and depict the CDF in Fig. 9.
We observe that the 99-th percentile latency is 4ms. The
path ID resolution is performed for the first packet to a
destination server that is not found in the cache, or cache
timeout. A further optimization is to perform path ID
resolution in parallel with DNS queries.
XPath Applications
XPath routing with and without failure: In this experiment, we show basic routing of XPath, with and without link failures. We establish 90 TCP connections from
the 3 servers under ToR T1 to the 45 servers under ToRs
10
24 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
USENIX Association
XPath
XPath
ECMP
Average IOPS
15274
4547
Link utilization
0.8
0.6
5.1
0.4
0.2
0
t
0
50
100
P1
P2
P3
300
350
400
In cloud services, there is an increasing need for provisioned IOPS. For example, Amazon EBS enforces provisioned IOPS for instances to ensure that disk resources
can be accessed with high and consistent I/O performance whenever you need them [25]. To enforce such
provisioned IOPS, it should first provide necessary bandwidth for the instances [9]. In this experiment, we show
XPath can be easily leveraged to use the explicit path
with necessary bandwidth.
5.2
In production data centers, DCN update occurs frequently [26]. It can be triggered by the operators, applications and various networking failures. zUpdate [26]
is an application that aims to perform congestion-free
network-wide traffic migration during DCN updates with
zero loss and zero human effort. In order to achieve its
goal, zUpdate requires explicit routing path control over
the underlying DCNs. In this experiment, we show how
XPath assists zUpdate to accomplish DCN update and
use a switch firmware upgrade example to show how traffic migration is conducted with XPath.
In Fig. 12(a), initially we assume 4 flows (f1 , f2 , f3
and f4 ) on three paths (P1 , P2 and P3 ). Then we move f1
away from switch A1 to do a firmware upgrade for switch
A1 . However, neither P2 nor P3 has enough spare bandwidth to accommodate f1 at this point of time. Therefore
we need to move f3 from P2 to P3 in advance. Finally,
after the completion of firmware upgrade, we move all
the flows back to original paths. We leverage XPath to
implement the whole movement.
In Fig. 12(b), we depict the link utilization dynamics.
At time t1 , when f3 is moved from P2 to P3 , the link utilization of P2 drops from 0.6 to 0.4 and the link utilization of P3 increases from 0.7 to 0.9. At time t2 , when f1
is moved from P1 to P2 , the link utilization of P1 drops
from 0.5 to 0 and the link utilization of P2 increases from
0.4 to 0.9. The figure also shows the changes of the link
utilization at time t3 and t4 when moving f3 back to P2
and f1 back to P1 . It is easy to see that with the help of
XPath, P1 , P2 and P3 see no congestion and DCN update
proceeds smoothly without loss.
12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15) 25
2000
1000
500
40.5
In cloud computing, virtual data center (VDC) abstraction with bandwidth guarantees is an appealing model
due to its performance predictability in shared environments [7, 19, 45]. In this experiment, we show XPath
can be applied to enforce virtual networks with bandwidth guarantees. We assume a simple SecondNet-based
VDC model with 4 virtual links, and the bandwidth requirements on them are 50Mbps, 200Mbps, 250Mbps
and 400Mbps respectively as shown in Fig. 13(a). We
then leverage XPaths explicit path control to embed this
VDC into the physical topology.
In Fig. 13(b), we show that XPath can easily be employed to use the explicit paths in the physical topology
with enough bandwidth to embed the virtual links. In
Fig. 13(c), we measure the actual bandwidth for each
virtual link and show that the desired bandwidth is accurately enforced. However, we found that ECMP cannot
be used to accurately enable this because ECMP cannot
control paths explicitly.
5.4
1500
5.3
ECMP
XPath
Related Work
In Map-reduce applications, many-to-many data shuffle between the map and reduce stages can be timeconsuming. For example, Hadoop traces from Facebook
show that, on average, transferring data between successive stages accounts for 33% of the running times of
jobs [12]. Using XPath, we can explicitly express nonconflict parallel paths to speed up such many-to-many
data shuffle. Usually, for a m-to-n data shuffle, we can
use (m+n) path IDs to express the communication patterns. The shuffle patterns can be predicted using existing techniques [33].
In this experiment, we selected 18 servers in two pods
of the Fattree to emulate a 9-to-9 data shuffle by letting
12
26 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
USENIX Association
prefix aggregation and can lead to very small routing tables, however they do not enable explicit path control
and still rely on ECMP [31] or Valiant Load Balancing (VLB) [17] for traffic spreading over multiple paths.
Relative to them, XPath enables explicit path control for
general DCN topologies.
Conclusion
Acknowledgements
This work was supported by the Hong Kong RGC ECS
26200014 and China 973 Program under Grant No.
2014CB340303. Chang Lan and Hongze Zhao were interns with Microsoft Research Asia when they worked
on this project. We would like to thank our shepherd
George Porter and the anonymous NSDI reviewers for
their feedback and suggestions.
References
[1] Arista 7050QX. http://www.aristanetworks.com/media/
system/pdf/Datasheets/7050QX-32 Datasheet.pdf.
[2] H. Abu-Libdeh, P. Costa, A. Rowstron, G. OShea, and
A. Donnelly, Symbiotic Routing in Future Data Centers, in SIGCOMM, 2010.
[3] J. H. Ahn, N. Binkert, A. Davis, M. McLaren, and R. S.
Schreiber, HyperX: Topology, Routing, and Packaging
of Efficient Large-Scale Networks, in SC, 2009.
[4] M. Al-Fares, A. Loukissas, and A. Vahdat, A Scalable,
Commodity Data Center Network Architecture, in ACM
SIGCOMM, 2008.
[5] M. Al-Fares, S. Radhakrishnan, B. Raghavan, N. Huang,
and A. Vahdat, Hedera: Dynamic Flow Scheduling for
Data Center Networks, in NSDI, 2010.
[6] D. Applegate and M. Thorup, Load optimal MPLS routing with N + M labels, in INFOCOM, 2003.
[7] H. Ballani, P. Costa, T. Karagiannis, and A. Rowstron,
Towards Predictable Datacenter Networks, in SIGCOMM, 2011.
[8] T. Benson, A. Anand, A. Akella, and M. Zhang, MicroTE: Fine Grained Traffic Engineering for Data Centers, in CoNEXT, 2010.
13
USENIX Association
12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15) 27
[9] I/O
Characteristics.
http://docs.aws.amazon.com/
AWSEC2/latest/UserGuide/ebs-io-characteristics.html.
[10] K. Chen, C. Guo, H. Wu, J. Yuan, Z. Feng, Y. Chen, S. Lu,
and W. Wu, Generic and Automatic Address Configuration for Data Centers, in SIGCOMM, 2010.
[12] M. Chowdhury, M. Zaharia, J. Ma, M. Jordan, and I. Stoica, Managing Data Transfers in Computer Clusters with
Orchestra, in SIGCOMM11.
[13] Cisco, Data center: Load balancing data center services, 2004.
[34] Announcing
provisioned
IOPS.
http://aws.
amazon.com/about-aws/whats-new/2012/07/31/
announcing-provisioned-iops-for-amazon-ebs/.
[36] Source
Routing.
Source routing.
[38] J.-Y. Shin, B. Wong, and E. G. Sirer, Small-World Datacenters, in ACM SoCC, 2011.
[39] A. Singla, C.-Y. Hong, L. Popa, and P. B. Godfrey, Jellyfish: Networking Data Centers Randomly, in NSDI,
2012.
[42] VXLAN.
Extensible LAN.
http://en.wikipedia.org/wiki/Virtual
[25] Provisioned
details.
http://en.wikipedia.org/wiki/
https://aws.amazon.com/ebs/
14
28 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15)
USENIX Association