DC Benchmark Method: Data Center Benchmarking Methodology
How to measure the switches in a data centre, where short bursts and tiny buffers decide how well the network behaves.
Avramov, L. and J. Rapp, "Data Center Benchmarking Methodology", RFC 8239, DOI 10.17487/RFC8239, August 2017, <https://www.rfc-editor.org/info/rfc8239>.
@misc{rfc8239,
series = {Request for Comments},
number = 8239,
howpublished = {RFC 8239},
publisher = {RFC Editor},
doi = {10.17487/RFC8239},
url = {https://www.rfc-editor.org/info/rfc8239},
author = {L. Avramov and J. Rapp},
title = {{Data Center Benchmarking Methodology}},
pagetotal = 19,
year = 2017,
month = aug,
} RFC text
Contents
Internet Engineering Task Force (IETF) L. Avramov
Request for Comments: 8239 Google
Category: Informational J. Rapp
ISSN: 2070-1721 VMware
August 2017
Data Center Benchmarking Methodology
Abstract
The purpose of this informational document is to establish test and
evaluation methodology and measurement techniques for physical
network equipment in the data center. RFC 8238 is a prerequisite for
this document, as it contains terminology that is considered
normative. Many of these terms and methods may be applicable beyond
the scope of this document as the technologies originally applied in
the data center are deployed elsewhere.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for informational purposes.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Not all documents
approved by the IESG are a candidate for any level of Internet
Standard; see Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc8239.
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction ....................................................3
1.1. Requirements Language ......................................4
1.2. Methodology Format and Repeatability Recommendation ........4
2. Line-Rate Testing ...............................................4
2.1. Objective ..................................................4
2.2. Methodology ................................................4
2.3. Reporting Format ...........................................5
3. Buffering Testing ...............................................6
3.1. Objective ..................................................6
3.2. Methodology ................................................7
3.3. Reporting Format ...........................................9
4. Microburst Testing .............................................10
4.1. Objective .................................................10
4.2. Methodology ...............................................10
4.3. Reporting Format ..........................................11
5. Head-of-Line Blocking ..........................................12
5.1. Objective .................................................12
5.2. Methodology ...............................................12
5.3. Reporting Format ..........................................14
6. Incast Stateful and Stateless Traffic ..........................15
6.1. Objective .................................................15
6.2. Methodology ...............................................15
6.3. Reporting Format ..........................................17
7. Security Considerations ........................................17
8. IANA Considerations ............................................17
9. References .....................................................18
9.1. Normative References ......................................18
9.2. Informative References ....................................18
Acknowledgments ...................................................19
Authors' Addresses ................................................19
1. Introduction
Traffic patterns in the data center are not uniform and are
constantly changing. They are dictated by the nature and variety of
applications utilized in the data center. They can be largely
east-west traffic flows (server to server inside the data center) in
one data center and north-south (from the outside of the data center
to the server) in another, while others may combine both. Traffic
patterns can be bursty in nature and contain many-to-one,
many-to-many, or one-to-many flows. Each flow may also be small and
latency sensitive or large and throughput sensitive while containing
a mix of UDP and TCP traffic. All of these can coexist in a single
cluster and flow through a single network device simultaneously.
Benchmarking tests for network devices have long used [RFC1242],
[RFC2432], [RFC2544], [RFC2889], and [RFC3918], which have largely
been focused around various latency attributes and throughput
[RFC2889] of the Device Under Test (DUT) being benchmarked. These
standards are good at measuring theoretical throughput, forwarding
rates, and latency under testing conditions; however, they do not
represent real traffic patterns that may affect these networking
devices.
Currently, typical data center networking devices are
characterized by:
- High port density (48 ports or more).
- High speed (currently, up to 100 GB/s per port).
- High throughput (line rate on all ports for Layer 2 and/or
Layer 3).
- Low latency (in the microsecond or nanosecond range).
- Low amount of buffer (in the MB range per networking device).
- Layer 2 and Layer 3 forwarding capability (Layer 3 not mandatory).
This document provides a methodology for benchmarking data center
physical network equipment DUTs, including congestion scenarios,
switch buffer analysis, microburst, and head-of-line blocking, while
also using a wide mix of traffic conditions. [RFC8238] is a
prerequisite for this document, as it contains terminology that is
considered normative.
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
1.2. Methodology Format and Repeatability Recommendation
The following format is used in Sections 2 through 6 of this
document:
- Objective
- Methodology
- Reporting Format
For each test methodology described in this document, it is critical
that repeatability of the results be obtained. The recommendation is
to perform enough iterations of the given test and to make sure that
the result is consistent. This is especially important in the
context of the tests described in Section 3, as the buffering testing
has historically been the least reliable. The number of iterations
SHOULD be explicitly reported. The relative standard deviation
SHOULD be below 10%.
2. Line-Rate Testing
2.1. Objective
The objective of this test is to provide a "maximum rate" test for
the performance values for throughput, latency, and jitter. It is
meant to provide (1) the tests to perform and (2) methodology for
verifying that a DUT is capable of forwarding packets at line rate
under non-congested conditions.
2.2. Methodology
A traffic generator SHOULD be connected to all ports on the DUT. Two
tests MUST be conducted: (1) a port-pair test [RFC2544] [RFC3918] and
(2) a test using a full-mesh DUT [RFC2889] [RFC3918].
For all tests, the traffic generator's sending rate MUST be less than
or equal to 99.98% of the nominal value of the line rate (with no
further Parts Per Million (PPM) adjustment to account for interface
clock tolerances), to ensure stressing of the DUT in reasonable
worst-case conditions (see [RFC8238], Section 5 for more details).
Test results at a lower rate MAY be provided for better understanding
of performance increase in terms of latency and jitter when the rate
is lower than 99.98%. The receiving rate of the traffic SHOULD be
captured during this test as a percentage of line rate.
The test MUST provide the statistics of minimum, average, and
maximum of the latency distribution, for the exact same iteration of
the test.
The test MUST provide the statistics of minimum, average, and maximum
of the jitter distribution, for the exact same iteration of the test.
Alternatively, when a traffic generator cannot be connected to all
ports on the DUT, a snake test MUST be used for line-rate testing,
excluding latency and jitter, as those would become irrelevant. The
snake test is performed as follows:
- Connect the first and last port of the DUT to a traffic generator.
- Connect, back to back and sequentially, all the ports in between:
port 2 to port 3, port 4 to port 5, etc., to port N-2 to port N-1,
where N is the total number of ports of the DUT.
- Configure port 1 and port 2 in the same VLAN X, port 3 and port 4
in the same VLAN Y, etc., and port N-1 and port N in the same
VLAN Z.
This snake test provides the capability to test line rate for Layer 2
and Layer 3 [RFC2544] [RFC3918] in instances where a traffic
generator with only two ports is available. Latency and jitter are
not to be considered for this test.
2.3. Reporting Format
The report MUST include the following:
- Physical-layer calibration information, as defined in [RFC8238],
Section 4.
- Number of ports used.
- Reading for "throughput received as a percentage of bandwidth",
while sending 99.98% of the nominal value of the line rate on each
port, for each packet size from 64 bytes to 9216 bytes. As
guidance, with a packet-size increment of 64 bytes between each
iteration being ideal, 256-byte and 512-byte packets are also
often used. The most common packet-size ordering for the report
is 64 bytes, 128 bytes, 256 bytes, 512 bytes, 1024 bytes,
1518 bytes, 4096 bytes, 8000 bytes, and 9216 bytes.
The pattern for testing can be expressed using [RFC6985].
- Throughput needs to be expressed as a percentage of total
transmitted frames.
- Packet drops MUST be expressed as a count of packets and SHOULD be
expressed as a percentage of line rate.
- For latency and jitter, values are expressed in units of time
(usually microseconds or nanoseconds), reading across packet sizes
from 64 bytes to 9216 bytes.
- For latency and jitter, provide minimum, average, and maximum
values. If different iterations are done to gather the minimum,
average, and maximum values, this SHOULD be specified in the
report, along with a justification for why the information could
not have been gathered in the same test iteration.
- For jitter, a histogram describing the population of packets
measured per latency or latency buckets is RECOMMENDED.
- The tests for throughput, latency, and jitter MAY be conducted as
individual independent trials, with proper documentation provided
in the report, but SHOULD be conducted at the same time.
- The methodology assumes that the DUT has at least nine ports, as
certain methodologies require nine or more ports.
3. Buffering Testing
3.1. Objective
The objective of this test is to measure the size of the buffer of a
DUT under typical/many/multiple conditions. Buffer architectures
between multiple DUTs can differ and include egress buffering, shared
egress buffering SoC (Switch-on-Chip), ingress buffering, or a
combination thereof. The test methodology covers the buffer
measurement, regardless of buffer architecture used in the DUT.
3.2. Methodology
A traffic generator MUST be connected to all ports on the DUT. The
methodology for measuring buffering for a data center switch is based
on using known congestion of known fixed packet size, along with
maximum latency value measurements. The maximum latency will
increase until the first packet drop occurs. At this point, the
maximum latency value will remain constant. This is the point of
inflection of this maximum latency change to a constant value. There
MUST be multiple ingress ports receiving a known amount of frames at
a known fixed size, destined for the same egress port in order to
create a known congestion condition. The total amount of packets
sent from the oversubscribed port minus one, multiplied by the packet
size, represents the maximum port buffer size at the measured
inflection point.
Note that the tests described in procedures 1), 2), 3), and 4) in
this section have iterations called "first iteration", "second
iteration", and "last iteration". The idea is to show the first
two iterations so the reader understands the logic of how to keep
incrementing the iterations. The last iteration shows the end state
of the variables.
1) Measure the highest buffer efficiency.
o First iteration: Ingress port 1 sending 64-byte packets at line
rate to egress port 2, while port 3 is sending a known low
amount of oversubscription traffic (1% recommended) with the
same packet size of 64 bytes to egress port 2. Measure the
buffer size value of the number of frames sent from the port
sending the oversubscribed traffic up to the inflection point
multiplied by the frame size.
o Second iteration: Ingress port 1 sending 65-byte packets at
line rate to egress port 2, while port 3 is sending a known low
amount of oversubscription traffic (1% recommended) with the
same packet size of 65 bytes to egress port 2. Measure the
buffer size value of the number of frames sent from the port
sending the oversubscribed traffic up to the inflection point
multiplied by the frame size.
o Last iteration: Ingress port 1 sending packets of size B bytes
at line rate to egress port 2, while port 3 is sending a known
low amount of oversubscription traffic (1% recommended) with
the same packet size of B bytes to egress port 2. Measure the
buffer size value of the number of frames sent from the port
sending the oversubscribed traffic up to the inflection point
multiplied by the frame size.
When the B value is found to provide the largest buffer size, then
size B allows the highest buffer efficiency.
2) Measure maximum port buffer size.
At fixed packet size B as determined in procedure 1), for a fixed
default Differentiated Services Code Point (DSCP) / Class of
Service (CoS) value of 0 and for unicast traffic, proceed with the
following:
o First iteration: Ingress port 1 sending line rate to egress
port 2, while port 3 is sending a known low amount of
oversubscription traffic (1% recommended) with the same packet
size to egress port 2. Measure the buffer size value by
multiplying the number of extra frames sent by the frame size.
o Second iteration: Ingress port 2 sending line rate to egress
port 3, while port 4 is sending a known low amount of
oversubscription traffic (1% recommended) with the same packet
size to egress port 3. Measure the buffer size value by
multiplying the number of extra frames sent by the frame size.
o Last iteration: Ingress port N-2 sending line rate to egress
port N-1, while port N is sending a known low amount of
oversubscription traffic (1% recommended) with the same packet
size to egress port N. Measure the buffer size value by
multiplying the number of extra frames sent by the frame size.
This test series MAY be repeated using all different DSCP/CoS
values of traffic, and then using multicast traffic, in order to
find out if there is any DSCP/CoS impact on the buffer size.
3) Measure maximum port pair buffer sizes.
o First iteration: Ingress port 1 sending line rate to egress
port 2, ingress port 3 sending line rate to egress port 4, etc.
Ingress port N-1 and port N will oversubscribe, at 1% of line
rate, egress port 2 and port 3, respectively. Measure the
buffer size value by multiplying the number of extra frames
sent by the frame size for each egress port.
o Second iteration: Ingress port 1 sending line rate to egress
port 2, ingress port 3 sending line rate to egress port 4, etc.
Ingress port N-1 and port N will oversubscribe, at 1% of line
rate, egress port 4 and port 5, respectively. Measure the
buffer size value by multiplying the number of extra frames
sent by the frame size for each egress port.
o Last iteration: Ingress port 1 sending line rate to egress
port 2, ingress port 3 sending line rate to egress port 4, etc.
Ingress port N-1 and port N will oversubscribe, at 1% of line
rate, egress port N-3 and port N-2, respectively. Measure the
buffer size value by multiplying the number of extra frames
sent by the frame size for each egress port.
This test series MAY be repeated using all different DSCP/CoS
values of traffic and then using multicast traffic.
4) Measure maximum DUT buffer size with many-to-one ports.
o First iteration: Ingress ports 1,2,... N-1 each sending
[(1/[N-1])*99.98]+[1/[N-1]] % of line rate per port to egress
port N.
o Second iteration: Ingress ports 2,... N each sending
[(1/[N-1])*99.98]+[1/[N-1]] % of line rate per port to egress
port 1.
o Last iteration: Ingress ports N,1,2...N-2 each sending
[(1/[N-1])*99.98]+[1/[N-1]] % of line rate per port to egress
port N-1.
This test series MAY be repeated using all different CoS values of
traffic and then using multicast traffic.
Unicast traffic, and then multicast traffic, SHOULD be used in order
to determine the proportion of buffer for the documented selection of
tests. Also, the CoS value for the packets SHOULD be provided for
each test iteration, as the buffer allocation size MAY differ per CoS
value. It is RECOMMENDED that the ingress and egress ports be varied
in a random but documented fashion in multiple tests in order to
measure the buffer size for each port of the DUT.
3.3. Reporting Format
The report MUST include the following:
- The packet size used for the most efficient buffer used,
along with the DSCP/CoS value.
- The maximum port buffer size for each port.
- The maximum DUT buffer size.
- The packet size used in the test.
- The amount of oversubscription, if different than 1%.
- The number of ingress and egress ports, along with their location
on the DUT.
- The repeatability of the test needs to be indicated: the number of
iterations of the same test and the percentage of variation
between results for each of the tests (min, max, avg).
The percentage of variation is a metric providing a sense of how big
the difference is between the measured value and the previous values.
For example, for a latency test where the minimum latency is
measured, the percentage of variation (PV) of the minimum latency
will indicate by how much this value has varied between the current
test executed and the previous one.
PV = ((x2-x1)/x1)*100, where x2 is the minimum latency value in the
current test and x1 is the minimum latency value obtained in the
previous test.
The same formula is used for maximum and average variations measured.
4. Microburst Testing
4.1. Objective
The objective of this test is to find the maximum amount of packet
bursts that a DUT can sustain under various configurations.
This test provides additional methodology that supplements the tests
described in [RFC1242], [RFC2432], [RFC2544], [RFC2889], and
[RFC3918].
- All bursts should be sent with 100% intensity. Note: "Intensity"
is defined in [RFC8238], Section 6.1.1.
- All ports of the DUT must be used for this test.
- It is recommended that all ports be tested simultaneously.
4.2. Methodology
A traffic generator MUST be connected to all ports on the DUT. In
order to cause congestion, two or more ingress ports MUST send bursts
of packets destined for the same egress port. The simplest of the
setups would be two ingress ports and one egress port (2 to 1).
The burst MUST be sent with an intensity (as defined in [RFC8238],
Section 6.1.1) of 100%, meaning that the burst of packets will be
sent with a minimum interpacket gap. The amount of packets contained
in the burst will be trial variable and increase until there is a
non-zero packet loss measured. The aggregate amount of packets from
all the senders will be used to calculate the maximum microburst
amount that the DUT can sustain.
It is RECOMMENDED that the ingress and egress ports be varied in
multiple tests in order to measure the maximum microburst capacity.
The intensity of a microburst (see [RFC8238], Section 6.1.1) MAY be
varied in order to obtain the microburst capacity at various
ingress rates.
It is RECOMMENDED that all ports on the DUT be tested simultaneously,
and in various configurations, in order to understand all the
combinations of ingress ports, egress ports, and intensities.
An example would be:
o First iteration: N-1 ingress ports sending to one egress port.
o Second iteration: N-2 ingress ports sending to two egress ports.
o Last iteration: Two ingress ports sending to N-2 egress ports.
4.3. Reporting Format
The report MUST include the following:
- The maximum number of packets received per ingress port with the
maximum burst size obtained with zero packet loss.
- The packet size used in the test.
- The number of ingress and egress ports, along with their location
on the DUT.
- The repeatability of the test needs to be indicated: the number of
iterations of the same test and the percentage of variation
between results (min, max, avg).
5. Head-of-Line Blocking
5.1. Objective
Head-of-line blocking (HOLB) is a performance-limiting phenomenon
that occurs when packets are held up by the first packet ahead
waiting to be transmitted to a different output port. This is
defined in RFC 2889, Section 5.5 ("Congestion Control"). This
section expands on RFC 2889 in the context of data center
benchmarking.
The objective of this test is to understand the DUT's behavior in the
HOLB scenario and measure the packet loss.
The differences between this HOLB test and RFC 2889 are as follows:
- This HOLB test starts with eight ports in two groups of four ports
each, instead of four ports (as compared with Section 5.5 of
RFC 2889).
- This HOLB test shifts all the port numbers by one in a second
iteration of the test; this is new, as compared to the HOLB test
described in RFC 2889. The shifting port numbers continue until
all ports are the first in the group; the purpose of this is to
make sure that all permutations are tested in order to cover
differences in behavior in the SoC of the DUT.
- Another test within this HOLB test expands the group of ports,
such that traffic is divided among four ports instead of two
(25% instead of 50% per port).
- Section 5.3 lists requirements that supplement the requirements
listed in RFC 2889, Section 5.5.
5.2. Methodology
In order to cause congestion in the form of HOLB, groups of
four ports are used. A group has two ingress ports and two
egress ports. The first ingress port MUST have two flows configured,
each going to a different egress port. The second ingress port will
congest the second egress port by sending line rate. The goal is to
measure if there is loss on the flow for the first egress port, which
is not oversubscribed.
A traffic generator MUST be connected to at least eight ports on the
DUT and SHOULD be connected using all the DUT ports.
Note that the tests described in procedures 1) and 2) in this section
have iterations called "first iteration", "second iteration", and
"last iteration". The idea is to show the first two iterations so
the reader understands the logic of how to keep incrementing the
iterations. The last iteration shows the end state of the variables.
1) Measure two groups with eight DUT ports.
o First iteration: Measure the packet loss for two groups with
consecutive ports.
The composition of the first group is as follows:
Ingress port 1 sending 50% of traffic to egress port 3
and ingress port 1 sending 50% of traffic to egress port 4.
Ingress port 2 sending line rate to egress port 4.
Measure the amount of traffic loss for the traffic from ingress
port 1 to egress port 3.
The composition of the second group is as follows:
Ingress port 5 sending 50% of traffic to egress port 7
and ingress port 5 sending 50% of traffic to egress port 8.
Ingress port 6 sending line rate to egress port 8.
Measure the amount of traffic loss for the traffic from ingress
port 5 to egress port 7.
o Second iteration: Repeat the first iteration by shifting all
the ports from N to N+1.
The composition of the first group is as follows:
Ingress port 2 sending 50% of traffic to egress port 4
and ingress port 2 sending 50% of traffic to egress port 5.
Ingress port 3 sending line rate to egress port 5.
Measure the amount of traffic loss for the traffic from ingress
port 2 to egress port 4.
The composition of the second group is as follows:
Ingress port 6 sending 50% of traffic to egress port 8
and ingress port 6 sending 50% of traffic to egress port 9.
Ingress port 7 sending line rate to egress port 9.
Measure the amount of traffic loss for the traffic from ingress
port 6 to egress port 8.
o Last iteration: When the first port of the first group is
connected to the last DUT port and the last port of the second
group is connected to the seventh port of the DUT.
Measure the amount of traffic loss for the traffic from ingress
port N to egress port 2 and from ingress port 4 to egress port 6.
2) Measure with N/4 groups with N DUT ports.
The traffic from the ingress port is split across four egress
ports (100/4 = 25%).
o First iteration: Expand to fully utilize all the DUT ports in
increments of four. Repeat the methodology of procedure 1)
with all the groups of ports possible to achieve on the device,
and measure the amount of traffic loss for each port group.
o Second iteration: Shift by +1 the start of each consecutive
port of the port groups.
o Last iteration: Shift by N-1 the start of each consecutive port
of the port groups, and measure the amount of traffic loss for
each port group.
5.3. Reporting Format
For each test, the report MUST include the following:
- The port configuration, including the number and location of
ingress and egress ports located on the DUT.
- If HOLB was observed in accordance with the HOLB test described in
Section 5.
- Percent of traffic loss.
- The repeatability of the test needs to be indicated: the number of
iterations of the same test and the percentage of variation
between results (min, max, avg).
6. Incast Stateful and Stateless Traffic
6.1. Objective
The objective of this test is to measure the values for TCP Goodput
[TCP-INCAST] and latency with a mix of large and small flows. The
test is designed to simulate a mixed environment of stateful flows
that require high rates of goodput and stateless flows that require
low latency. Stateful flows are created by generating TCP traffic,
and stateless flows are created using UDP traffic.
6.2. Methodology
In order to simulate the effects of stateless and stateful traffic on
the DUT, there MUST be multiple ingress ports receiving traffic
destined for the same egress port. There also MAY be a mix of
stateful and stateless traffic arriving on a single ingress port.
The simplest setup would be two ingress ports receiving traffic
destined to the same egress port.
One ingress port MUST maintain a TCP connection through the ingress
port to a receiver connected to an egress port. Traffic in the TCP
stream MUST be sent at the maximum rate allowed by the traffic
generator. At the same time, the TCP traffic is flowing through the
DUT, and the stateless traffic is sent destined to a receiver on the
same egress port. The stateless traffic MUST be a microburst of
100% intensity.
It is RECOMMENDED that the ingress and egress ports be varied in
multiple tests in order to measure the maximum microburst capacity.
The intensity of a microburst MAY be varied in order to obtain the
microburst capacity at various ingress rates.
It is RECOMMENDED that all ports on the DUT be used in the test.
The tests described below have iterations called "first iteration",
"second iteration", and "last iteration". The idea is to show the
first two iterations so the reader understands the logic of how to
keep incrementing the iterations. The last iteration shows the
end state of the variables.
For example:
Stateful traffic port variation (TCP traffic):
TCP traffic needs to be generated for this test. During the
iterations, the number of egress ports MAY vary as well.
o First iteration: One ingress port receiving stateful TCP traffic
and one ingress port receiving stateless traffic destined to
one egress port.
o Second iteration: Two ingress ports receiving stateful TCP traffic
and one ingress port receiving stateless traffic destined to
one egress port.
o Last iteration: N-2 ingress ports receiving stateful TCP traffic
and one ingress port receiving stateless traffic destined to
one egress port.
Stateless traffic port variation (UDP traffic):
UDP traffic needs to be generated for this test. During the
iterations, the number of egress ports MAY vary as well.
o First iteration: One ingress port receiving stateful TCP traffic
and one ingress port receiving stateless traffic destined to
one egress port.
o Second iteration: One ingress port receiving stateful TCP traffic
and two ingress ports receiving stateless traffic destined to
one egress port.
o Last iteration: One ingress port receiving stateful TCP traffic
and N-2 ingress ports receiving stateless traffic destined to
one egress port.
6.3. Reporting Format
The report MUST include the following:
- Number of ingress and egress ports, along with designation of
stateful or stateless flow assignment.
- Stateful flow goodput.
- Stateless flow latency.
- The repeatability of the test needs to be indicated: the number of
iterations of the same test and the percentage of variation
between results (min, max, avg).
7. Security Considerations
Benchmarking activities as described in this memo are limited to
technology characterization using controlled stimuli in a laboratory
environment, with dedicated address space and the constraints
specified in the sections above.
The benchmarking network topology will be an independent test setup
and MUST NOT be connected to devices that may forward the test
traffic into a production network or misroute traffic to the test
management network.
Further, benchmarking is performed on a "black-box" basis, relying
solely on measurements observable external to the DUT.
Special capabilities SHOULD NOT exist in the DUT specifically for
benchmarking purposes. Any implications for network security arising
from the DUT SHOULD be identical in the lab and in production
networks.
8. IANA Considerations
This document does not require any IANA actions.
9. References
9.1. Normative References
[RFC1242] Bradner, S., "Benchmarking Terminology for Network
Interconnection Devices", RFC 1242, DOI 10.17487/RFC1242,
July 1991, <https://www.rfc-editor.org/info/rfc1242>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC2544] Bradner, S. and J. McQuaid, "Benchmarking Methodology for
Network Interconnect Devices", RFC 2544,
DOI 10.17487/RFC2544, March 1999,
<https://www.rfc-editor.org/info/rfc2544>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in
RFC 2119 Key Words", BCP 14, RFC 8174,
DOI 10.17487/RFC8174, May 2017,
<https://www.rfc-editor.org/info/rfc8174>.
[RFC8238] Avramov, L. and J. Rapp, "Data Center Benchmarking
Terminology", RFC 8238, DOI 10.17487/RFC8238, August 2017,
<https://www.rfc-editor.org/info/rfc8238>.
9.2. Informative References
[RFC2432] Dubray, K., "Terminology for IP Multicast Benchmarking",
RFC 2432, DOI 10.17487/RFC2432, October 1998,
<https://www.rfc-editor.org/info/rfc2432>.
[RFC2889] Mandeville, R. and J. Perser, "Benchmarking Methodology
for LAN Switching Devices", RFC 2889,
DOI 10.17487/RFC2889, August 2000,
<https://www.rfc-editor.org/info/rfc2889>.
[RFC3918] Stopp, D. and B. Hickman, "Methodology for IP Multicast
Benchmarking", RFC 3918, DOI 10.17487/RFC3918,
October 2004, <https://www.rfc-editor.org/info/rfc3918>.
[RFC6985] Morton, A., "IMIX Genome: Specification of Variable Packet
Sizes for Additional Testing", RFC 6985,
DOI 10.17487/RFC6985, July 2013,
<https://www.rfc-editor.org/info/rfc6985>.
[TCP-INCAST]
Chen, Y., Griffith, R., Zats, D., Joseph, A., and R. Katz,
"Understanding TCP Incast and Its Implications for Big
Data Workloads", April 2012, <http://yanpeichen.com/
professional/usenixLoginIncastReady.pdf>.
Acknowledgments
The authors would like to thank Al Morton and Scott Bradner for their
reviews and feedback.
Authors' Addresses
Lucien Avramov
Google
1600 Amphitheatre Parkway
Mountain View, CA 94043
United States of America
Email: lucien.avramov@gmail.com
Jacob Rapp
VMware
3401 Hillview Ave.
Palo Alto, CA 94304
United States of America
Email: jhrapp@gmail.com
ISO Plain Language
On this page
§1Why Data Center Gear Needs Its Own Tests
Traffic patterns in the data centre are not uniform and are constantly changing. They are dictated by the nature and variety of applications used there. They can be largely east-west flows, server to server inside the data centre, in one data centre, and north-south, from the outside of the data centre to the server, in another, while others may combine both. Traffic patterns can be bursty in nature and contain many-to-one, many-to-many or one-to-many flows. Each flow may also be small and latency sensitive or large and throughput sensitive, while containing a mix of UDP and TCP traffic, and all of these can coexist in a single cluster and flow through a single network device simultaneously.
Benchmarking tests for network devices have long used RFC 1242, RFC 2432, RFC 2544, RFC 2889 and RFC 3918, which have largely focused on the latency attributes and the throughput of the device being benchmarked. Those standards are good at measuring theoretical throughput, forwarding rates and latency under testing conditions, but they do not represent the real traffic patterns that may affect these devices.
Typical data centre networking devices are characterised by high port density, 48 ports or more; high speed, currently up to 100 GB/s per port; high throughput, line rate on all ports for Layer 2 and/or Layer 3; low latency, in the microsecond or nanosecond range; a low amount of buffer, in the MB range per networking device; and Layer 2 and Layer 3 forwarding capability, with Layer 3 not mandatory.
Every test in the document is written in the same three-part format: the objective, the methodology and the reporting format. For each test it is critical that repeatability of the results be obtained, so enough iterations of the given test should be performed and the result checked for consistency. This is especially important for the buffering test, which has historically been the least reliable. The number of iterations should be explicitly reported, and the relative standard deviation should be below 10 percent.
Existing benchmark methods answer the wrong question for a data centre. They ask how fast a port can go on its own. A data centre switch has to hold dozens of ports at full speed at once, with only a few megabytes of memory to absorb the moment when they do not quite match up, so the tests have to look at those moments instead.
- High port density48 ports or more.
- High speedCurrently up to 100 GB/s per port.
- High throughputLine rate on all ports for Layer 2 and/or Layer 3.
- Low latencyIn the microsecond or nanosecond range.
- Small buffersIn the MB range per networking device.
- Mixed forwardingLayer 2 and Layer 3 forwarding capability, with Layer 3 not mandatory.
§2Line-Rate Testing and the Snake Test
The line-rate test is a maximum-rate test for throughput, latency and jitter, intended to verify that the device under test is capable of forwarding packets at line rate under non-congested conditions.
A traffic generator should be connected to all ports on the device, and two tests must be conducted: a port-pair test, and a test using a full-mesh device. For all tests, the traffic generator's sending rate must be less than or equal to 99.98 percent of the nominal value of the line rate, with no further parts-per-million adjustment to account for interface clock tolerances, so that the device is stressed in reasonable worst-case conditions. Test results at a lower rate may be provided for better understanding of the performance increase in latency and jitter when the rate is lower than 99.98 percent, and the receiving rate should be captured during the test as a percentage of line rate. The test must provide the statistics of minimum, average and maximum of the latency distribution, and of the jitter distribution, for the exact same iteration of the test.
When a traffic generator cannot be connected to all ports, a snake test must be used for line-rate testing, excluding latency and jitter because those become irrelevant. The first and last port of the device are connected to a traffic generator, all the ports in between are connected back to back and sequentially, port 2 to port 3, port 4 to port 5 and so on up to port N-2 to port N-1, and port 1 and port 2 are configured in the same VLAN, port 3 and port 4 in the next, and so on. This gives line-rate coverage for Layer 2 and Layer 3 with a two-port generator.
The report must include the physical-layer calibration information defined in the data centre benchmarking terminology document, the number of ports used, and the reading for throughput received as a percentage of bandwidth while sending 99.98 percent of the nominal line rate on each port, for each packet size from 64 bytes to 9216 bytes. A packet-size increment of 64 bytes between iterations is ideal, and 256-byte and 512-byte packets are also often used; the most common ordering in a report is 64, 128, 256, 512, 1024, 1518, 4096, 8000 and 9216 bytes. Throughput is expressed as a percentage of total transmitted frames, packet drops as a count and, where possible, as a percentage of line rate, and latency and jitter in units of time, usually microseconds or nanoseconds, with minimum, average and maximum values. A histogram of the measured population is recommended for jitter.
The first test asks a simple question: can the switch pass traffic at the full speed of every port at once? The answer has to be given per packet size, because small packets and large packets behave differently. If you only have a traffic generator with two ports, the ports are wired up in a chain, the snake test, so that a single pair of ports can push the whole device to its limit.
§3Measuring the Buffer
The buffering test measures the size of the buffer of a device under typical, many or multiple conditions. Buffer architectures between multiple devices can differ and include egress buffering, shared egress buffering on a switch-on-chip, ingress buffering or a combination, and the methodology covers the measurement regardless of the architecture used.
The method is based on using known congestion of known fixed packet size along with maximum latency measurements. The maximum latency increases until the first packet drop occurs, and at that point it remains constant, which is the inflection point. There must be multiple ingress ports receiving a known amount of frames at a known fixed size, destined for the same egress port, in order to create a known congestion condition. The total amount of packets sent from the oversubscribed port minus one, multiplied by the packet size, represents the maximum port buffer size at that inflection point.
Four procedures follow. The first measures the highest buffer efficiency: the packet size is varied, starting at 64 bytes, while another port sends a low amount of oversubscription traffic, 1 percent recommended, of the same size to the same egress port, and the buffer size is measured at each step; the size that yields the largest buffer is the one that allows the highest buffer efficiency. The second procedure measures the maximum port buffer size at that fixed packet size, with a fixed DSCP and class of service value of zero and for unicast traffic, by sending line rate from one ingress port to an egress port while another port oversubscribes it. The third procedure measures the maximum port pair buffer sizes, with several ingress ports sending line rate to their own egress ports while the last two ports oversubscribe other egress ports. The fourth procedure measures the maximum device buffer size with many-to-one ports, where ingress ports 1 to N-1 each send their share of the line rate to egress port N, then the roles are shifted in each iteration.
Each series may be repeated with the different class of service values of traffic and then with multicast traffic, in order to find out whether there is any impact on the buffer size. Unicast traffic, and then multicast traffic, should be used in order to determine the proportion of buffer for the documented selection of tests, and the class of service value for the packets should be provided for each test iteration, as the buffer allocation size may differ per class of service value. It is recommended that the ingress and egress ports be varied in a random but documented fashion over multiple tests, in order to measure the buffer size for each port of the device.
To find out how much the switch can hold, the test deliberately tips one output port over capacity with a second input and watches the delay. The delay climbs while the queue grows, then stops climbing at the moment the first packet is dropped, and the amount queued at that point is the size of the buffer. The same measurement is then made for single ports, for pairs, and for the whole device.
| Procedure | What it measures |
|---|---|
| 1. Highest buffer efficiency | The packet size that yields the largest buffer, found by varying the size upward from 64 bytes |
| 2. Maximum port buffer size | The buffer of each port at that packet size, with a fixed DSCP and class of service of 0, on unicast traffic |
| 3. Maximum port pair buffer sizes | The buffer of several port pairs at once, with some ports oversubscribed |
| 4. Maximum DUT buffer size | The whole device, with many ingress ports feeding a single egress port |
§4Microbursts and Head-of-Line Blocking
The microburst test finds the maximum amount of packet bursts that a device can sustain under various configurations. All bursts should be sent with 100 percent intensity, and all ports of the device must be used for the test, with it recommended that all ports be tested simultaneously.
A traffic generator must be connected to all ports on the device. To cause congestion, two or more ingress ports must send bursts of packets destined for the same egress port, and the simplest setup is two ingress ports and one egress port. The burst is sent with an intensity of 100 percent, meaning that the burst of packets is sent with a minimum inter-packet gap. The number of packets in the burst is the trial variable and increases until there is a non-zero packet loss, and the aggregate number of packets from all the senders gives the maximum microburst the device can sustain. It is recommended that the ingress and egress ports be varied over multiple tests, that the intensity of the microburst be varied to obtain the capacity at various ingress rates, and that all ports be tested in various configurations, for example N-1 ingress ports sending to one egress port, then N-2 ingress ports sending to two egress ports, and finally two ingress ports sending to N-2 egress ports.
Head-of-line blocking is a performance-limiting phenomenon that occurs when packets are held up by the first packet ahead, waiting to be transmitted to a different output port. The objective of the test is to understand the behaviour of the device in that scenario and measure the packet loss. Groups of four ports are used: a group has two ingress ports and two egress ports. The first ingress port must have two flows configured, each going to a different egress port, and the second ingress port congests the second egress port by sending at line rate. The goal is to measure whether there is loss on the flow towards the first egress port, which is not oversubscribed. A traffic generator must be connected to at least eight ports and should be connected using all the ports.
The differences from the RFC 2889 test are that this one starts with eight ports in two groups of four rather than four ports, that it shifts all the port numbers by one in a second iteration and continues until all ports have been first in the group, so that every permutation is tested and differences in the behaviour of the switch-on-chip are covered, and that another test expands the group of ports so that traffic is divided among four ports instead of two, at 25 percent per port rather than 50 percent.
A microburst is a short, violent lump of traffic arriving with no gaps at all, and it can overflow a switch even when the average rate looks fine. The test increases the lump until packets start being dropped. The head-of-line test asks a different question: if one output port is flooded, does an unrelated output port suffer? The traffic for the free port is sent alongside the flood, and any loss on it is the answer.
- MicroburstTwo or more ingress ports send bursts at 100 percent intensity to the same egress port, and the burst grows until packets are lost.
- Head-of-line blockingOne port sends half its traffic to each of two egress ports while another port floods the second one; the loss on the first flow is what is measured.
- Shifting the portsThe test shifts the port numbers by one each iteration, so that every permutation is covered.
- Wider groupsA second version splits the traffic over four egress ports instead of two, at 25 percent per port.
§6Incast: Stateful and Stateless Traffic Together
The incast test measures the values for TCP goodput and latency with a mix of large and small flows. It is designed to simulate a mixed environment of stateful flows that require high rates of goodput and stateless flows that require low latency. Stateful flows are created by generating TCP traffic, and stateless flows using UDP traffic.
There must be multiple ingress ports receiving traffic destined for the same egress port, and there may be a mix of stateful and stateless traffic arriving on a single ingress port; the simplest setup is two ingress ports receiving traffic destined for the same egress port. One ingress port must maintain a TCP connection through the ingress port to a receiver connected to an egress port, and traffic in the TCP stream must be sent at the maximum rate allowed by the traffic generator. At the same time, the stateless traffic is sent to a receiver on the same egress port, and it must be a microburst of 100 percent intensity.
The iterations vary the number of ports in two directions. Varying the stateful traffic, the first iteration has one ingress port receiving stateful TCP traffic and one receiving stateless traffic destined for one egress port, the second has two ingress ports receiving stateful traffic and one receiving stateless traffic, and the last has N-2 ingress ports receiving stateful traffic and one receiving stateless traffic. Varying the stateless traffic, the first iteration again has one ingress port on stateful traffic and one on stateless traffic, the second has one on stateful traffic and two on stateless traffic, and the last has one on stateful traffic and N-2 on stateless traffic. The report must include the number of ingress and egress ports with the designation of stateful or stateless flow assignment, the stateful flow goodput, the stateless flow latency, and the repeatability of the test, meaning the number of iterations and the percentage of variation between results.
This test puts a long, greedy TCP conversation next to a short burst of UDP packets heading for the same output port. The TCP flow wants all the bandwidth, the UDP flow wants low delay, and the report gives the throughput of the first and the delay of the second, so that the two can be weighed against each other.
§7Security Considerations
Benchmarking activities as described in the document are limited to technology characterization using controlled stimuli in a laboratory environment, with dedicated address space and the constraints specified in the sections above. The benchmarking network topology is an independent test setup and must not be connected to devices that may forward the test traffic into a production network or misroute traffic to the test management network.
Benchmarking is performed on a black-box basis, relying solely on measurements observable external to the device. Special capabilities should not exist in the device specifically for benchmarking purposes, and any implications for network security arising from the device should be identical in the lab and in production networks. The document requires no IANA actions.
The tests run on a private network in a lab, wired so that nothing can leak into a production system. The device is measured only from the outside and must not contain special test facilities, so that what is measured in the lab is what you get in the rack.