RFC 8456

Benchmarking Methodology for Software-Defined Networking (SDN) Controller Performance

๐Ÿ“… published October 2018, from ietf

RFC 8456 ๐ŸŽ€ Title: Benchmarking Methodology for Software-Defined Networking (SDN) Controller Performance ๐Ÿ’…

Okay bestie, this one is an Informational doc, so it's published for information and is not a standards-track spec ๐ŸŒธ It came out in October 2018 and has the series number Request for Comments: 8456. The ISSN is 2070-1721. The authors are V. Bhuvaneswaran and A. Basil from Veryx Technologies, M. Tassinari from Hewlett Packard Enterprise, V. Manral from NanoSec, and S. Banks from VSS Monitoring ๐Ÿซถ It doesn't list anything it obsoletes or updates, so it's standing on its own โœจ

Abstract ๐Ÿฆ‹

This doc gives you methodologies for benchmarking the control-plane performance of SDN Controllers ๐Ÿ’œ The SDN Controller is the core piece of the SDN architecture that decides how the network behaves ๐Ÿงš Controllers come in lots of different designs because they all have to hit different network functionality goals. So the authors treat the SDN Controller as a black box and write the method so it doesn't care which protocols or network services a controller supports. The result is a way to measure the performance of all controller implementations ๐Ÿ”ฅ

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 https://www.rfc-editor.org/info/rfc8456.

Copyright (c) 2018 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 (https://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 ....................................................4
      1.1. Conventions Used in This Document ..........................4
   2. Scope ...........................................................4
   3. Test Setup ......................................................4
      3.1. Test Setup - Controller Operating in Standalone Mode .......5
      3.2. Test Setup - Controller Operating in Cluster Mode ..........6
   4. Test Considerations .............................................7
      4.1. Network Topology ...........................................7
      4.2. Test Traffic ...............................................7
      4.3. Test Emulator Requirements .................................7
      4.4. Connection Setup ...........................................8
      4.5. Measurement Point Specification and Recommendation .........9
      4.6. Connectivity Recommendation ................................9
      4.7. Test Repeatability .........................................9
      4.8. Test Reporting .............................................9
   5. Benchmarking Tests .............................................11
      5.1. Performance ...............................................11
           5.1.1. Network Topology Discovery Time ....................11
           5.1.2. Asynchronous Message Processing Time ...............13
           5.1.3. Asynchronous Message Processing Rate ...............14
           5.1.4. Reactive Path Provisioning Time ....................17
           5.1.5. Proactive Path Provisioning Time ...................19
           5.1.6. Reactive Path Provisioning Rate ....................21
           5.1.7. Proactive Path Provisioning Rate ...................23
           5.1.8. Network Topology Change Detection Time .............25
      5.2. Scalability ...............................................26
           5.2.1. Control Sessions Capacity ..........................26
           5.2.2. Network Discovery Size .............................27
           5.2.3. Forwarding Table Capacity ..........................29

      5.3. Security ..................................................31
           5.3.1. Exception Handling .................................31
           5.3.2. Handling Denial-of-Service Attacks .................32
      5.4. Reliability ...............................................34
           5.4.1. Controller Failover Time ...........................34
           5.4.2. Network Re-provisioning Time .......................36
   6. IANA Considerations ............................................37
   7. Security Considerations ........................................38
   8. References .....................................................38
      8.1. Normative References ......................................38
      8.2. Informative References ....................................38
   Appendix A. Benchmarking Methodology Using OpenFlow Controllers ...39
     A.1. Protocol Overview ..........................................39
     A.2. Messages Overview ..........................................39
     A.3. Connection Overview ........................................39
     A.4. Performance Benchmarking Tests .............................40
       A.4.1. Network Topology Discovery Time ........................40
       A.4.2. Asynchronous Message Processing Time ...................42
       A.4.3. Asynchronous Message Processing Rate ...................43
       A.4.4. Reactive Path Provisioning Time ........................44
       A.4.5. Proactive Path Provisioning Time .......................46
       A.4.6. Reactive Path Provisioning Rate ........................47
       A.4.7. Proactive Path Provisioning Rate .......................49
       A.4.8. Network Topology Change Detection Time .................50
     A.5. Scalability ................................................51
       A.5.1. Control Sessions Capacity ..............................51
       A.5.2. Network Discovery Size .................................52
       A.5.3. Forwarding Table Capacity ..............................54
     A.6. Security ...................................................55
       A.6.1. Exception Handling .....................................55
       A.6.2. Handling Denial-of-Service Attacks .....................57
     A.7. Reliability ................................................59
       A.7.1. Controller Failover Time ...............................59
       A.7.2. Network Re-provisioning Time ...........................61
   Acknowledgments ...................................................63
   Authors' Addresses ................................................64

1. Introduction โœจ

This doc gives generic methodologies for benchmarking SDN Controller performance ๐Ÿ’– To get the functionality they want, controllers may support lots of northbound and southbound protocols, run a wide range of applications, and work alone or as part of a group ๐Ÿงš This doc treats the SDN Controller as a black box, no matter how it's designed or built ๐Ÿ”ฅ The tests here can benchmark a controller for performance, scalability, reliability, and security, all independently of northbound and southbound protocols. The terminology for benchmarking SDN Controllers lives in the companion terminology document [RFC8455] ๐Ÿ“š These tests can run on an SDN Controller that's a virtual machine (VM) instance or on a bare metal server. This doc is for anyone who wants to measure an SDN Controller's performance or compare the performance of different SDN Controllers ๐Ÿ’…

1.1. Conventions Used in This Document ๐ŸŒธ

Okay, the key words here are "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL". They get read as described in BCP 14 [RFC2119] [RFC8174], but only when they show up in all capitals, just like this ๐Ÿซถ

2. Scope ๐Ÿฆ‹

This doc defines a way to measure the networking metrics of SDN Controllers ๐Ÿ’œ For this memo, an SDN Controller is a function that manages and controls Network Devices. Any SDN Controller without a control capability is out of scope here ๐Ÿ™ˆ The tests in this doc let you benchmark SDN Controllers in two ways: standalone mode (a standalone controller) and cluster mode (a cluster of homogeneous controllers) โœจ These tests are recommended for lab environments rather than live network deployments ๐Ÿ“ Performance benchmarking of a federation of controllers (i.e., a set of SDN Controllers) managing different domains is beyond the scope of this document ๐ŸŒˆ

3. Test Setup ๐ŸŽ€

As noted above, the tests in this doc let you measure an SDN Controller's performance in standalone mode and cluster mode ๐Ÿ’– This section defines common reference topologies that the individual tests described later in this document refer back to ๐Ÿงš

3.1. Test Setup - Controller Operating in Standalone Mode ๐ŸŽ€

okay so bestie, first up is the standalone setup ๐Ÿ’… picture a big ol' box up top that's the Application-Plane Test Emulator ๐ŸŒธ, holding an Application and a Service. it talks down through the (I2) interface, which is the Northbound Interface ๐Ÿฆ‹

right under that is the Device Under Test (DUT) ๐Ÿ‘‘, and inside it lives one lonely SDN Controller (standalone, so it's solo โœจ). the DUT then talks south through the Southbound Interface to the (I1) part, where the Forwarding-Plane Test Emulator is hanging out ๐Ÿงš

down there you've got a whole web of Network Devices (Device 1, Device 2, all the way to Device n - 1 and Device n) linked up with the l0 and ln links, plus two Test Traffic Generators, (TP1) and (TP2) ๐Ÿ’– TP1 hooks into Device 1 and TP2 hooks into Device n

      +-----------------------------------------------------------+
      |               Application-Plane Test Emulator             |
      |                                                           |
      |        +-----------------+      +-------------+           |
      |        |   Application   |      |   Service   |           |
      |        +-----------------+      +-------------+           |
      |                                                           |
      +-----------------------------+(I2)-------------------------+
                                    |
                                    | (Northbound Interface)
                   +-------------------------------+
                   |       +----------------+      |
                   |       | SDN Controller |      |
                   |       +----------------+      |
                   |                               |
                   |    Device Under Test (DUT)    |
                   +-------------------------------+
                                    | (Southbound Interface)
                                    |
      +-----------------------------+(I1)-------------------------+
      |                                                           |
      |             +-----------+     +-------------+             |
      |             |  Network  |     |   Network   |             |
      |             | Device 2  |--..-| Device n - 1|             |
      |             +-----------+     +-------------+             |
      |                     /    \   /    \                       |
      |                    /      \ /      \                      |
      |                l0 /        X        \ ln                  |
      |                  /        / \        \                    |
      |               +-----------+  +-----------+                |
      |               |  Network  |  |  Network  |                |
      |               |  Device 1 |..|  Device n |                |
      |               +-----------+  +-----------+                |
      |                     |              |                      |
      |           +---------------+  +---------------+            |
      |           | Test Traffic  |  | Test Traffic  |            |
      |           |  Generator    |  |  Generator    |            |
      |           |    (TP1)      |  |    (TP2)      |            |
      |           +---------------+  +---------------+            |
      |                                                           |
      |              Forwarding-Plane Test Emulator               |
      +-----------------------------------------------------------+

                                 Figure 1

3.2. Test Setup - Controller Operating in Cluster Mode ๐ŸŒˆ

same vibe, but this time the controller isn't solo, it's a whole squad ๐Ÿซถ inside the DUT you've got SDN Controller 1 and SDN Controller n chatting with each other over the E/W link ๐Ÿ’œ everything else is the same as before: the Application-Plane Test Emulator up top on (I2), the Northbound Interface, the Southbound Interface, the (I1) network full of Network Devices, and the Forwarding-Plane Test Emulator with TP1 and TP2 ๐Ÿ’…

      +-----------------------------------------------------------+
      |               Application-Plane Test Emulator             |
      |                                                           |
      |        +-----------------+      +-------------+           |
      |        |   Application   |      |   Service   |           |
      |        +-----------------+      +-------------+           |
      |                                                           |
      +-----------------------------+(I2)-------------------------+
                                    |
                                    | (Northbound Interface)
       +---------------------------------------------------------+
       |                                                         |
       | +------------------+           +------------------+     |
       | | SDN Controller 1 | <--E/W--> | SDN Controller n |     |
       | +------------------+           +------------------+     |
       |                                                         |
       |                    Device Under Test (DUT)              |
       +---------------------------------------------------------+
                                    | (Southbound Interface)
                                    |
      +-----------------------------+(I1)-------------------------+
      |                                                           |
      |             +-----------+     +-------------+             |
      |             |  Network  |     |   Network   |             |
      |             | Device 2  |--..-| Device n - 1|             |
      |             +-----------+     +-------------+             |
      |                     /    \   /    \                       |
      |                    /      \ /      \                      |
      |                l0 /        X        \ ln                  |
      |                  /        / \        \                    |
      |               +-----------+  +-----------+                |
      |               |  Network  |  |  Network  |                |
      |               |  Device 1 |..|  Device n |                |
      |               +-----------+  +-----------+                |
      |                     |              |                      |
      |           +---------------+  +---------------+            |
      |           | Test Traffic  |  | Test Traffic  |            |
      |           |  Generator    |  |  Generator    |            |
      |           |    (TP1)      |  |    (TP2)      |            |
      |           +---------------+  +---------------+            |
      |                                                           |
      |              Forwarding-Plane Test Emulator               |
      +-----------------------------------------------------------+

                                 Figure 2

4. Test Considerations ๐Ÿง 

4.1. Network Topology ๐Ÿ•ธ๏ธ

okay so the test cases SHOULD use a Leaf-Spine topology with at least two Network Devices in the topology for benchmarking ๐ŸŒธ Test traffic generators TP1 and TP2 SHOULD be connected to the leaf Network Device 1 and the leaf Network Device n ๐Ÿ’… it's also recommended that you benchmark the controller for many network topologies and a varying number of Network Devices, so you get a complete performance picture โœจ and ngl, be careful: when the topology has redundant network paths, make sure a loop-prevention mechanism is enabled in either the SDN Controller or the network ๐Ÿ™ˆ

4.2. Test Traffic ๐Ÿšฆ

test traffic is how you tell the controller about the asynchronous arrival of new flows ๐Ÿฆ‹ the test cases SHOULD use frame sizes of 128, 512, and 1508 bytes for benchmarking ๐Ÿ’– tests using jumbo frames are OPTIONAL ๐ŸŽ€

Wait, correction for accuracy: the requirement keywords in this section are lowercase in the source, so they stay as written. The test cases SHOULD use frame sizes of 128, 512, and 1508 bytes, and tests using jumbo frames are optional. Keeping it exact, bestie ๐Ÿซถ

4.3. Test Emulator Requirements ๐Ÿ“

the test emulator SHOULD timestamp the transmitted and received control messages to and from the controller on the established network connections ๐Ÿ•ฐ๏ธ the test cases use those values to compute the controller processing time โญ

4.4. Connection Setup ๐Ÿ”Œ

okay this one's giving options ๐ŸŒˆ there may be controller implementations that support unencrypted and encrypted network connections with Network Devices ๐Ÿ’œ further, the controller may be backward compatible with Network Devices running older versions of southbound protocols ๐Ÿฆ‹ it may be useful to measure the controller's performance with one or more of the connection setup methods below ๐Ÿ’… for cases with encrypted communications between the controller and the switch, key management and key exchange MUST take place before any performance or benchmark measurements ๐Ÿ”

  1. Unencrypted connection with Network Devices, running the same protocol version.
  2. Unencrypted connection with Network Devices, running different protocol versions.

Examples:

a. Controller running current protocol version and switch running older protocol version.

b. Controller running older protocol version and switch running current protocol version.

  1. Encrypted connection with Network Devices, running the same protocol version.
  2. Encrypted connection with Network Devices, running different protocol versions.

Examples:

a. Controller running current protocol version and switch running older protocol version.

b. Controller running older protocol version and switch running current protocol version.

4.5. Measurement Point Specification and Recommendation ๐Ÿ“

the accuracy of your measurements depends on a bunch of factors, including where the observations get captured ๐Ÿ‘€ for example, the notification can be observed at the controller or at the test emulator ๐Ÿ’– the test operator SHOULD make the observations and measurements at the interfaces of the test emulator, unless a specific test explicitly says otherwise โœจ in any case, the locations of measurement points MUST be reported ๐Ÿ“

4.6. Connectivity Recommendation ๐Ÿ”—

the SDN Controller in the test setup SHOULD be connected directly with the forwarding-plane and management-plane test emulators ๐Ÿซถ that way you avoid any delays or failures from intermediate devices during benchmarking tests ๐Ÿ™…โ€โ™€๏ธ when the controller is implemented as a virtual machine, details of the physical and logical connectivity MUST be reported ๐Ÿ’ป

4.7. Test Repeatability ๐Ÿ”

to build confidence in your results, it is recommended that each test SHOULD be repeated a minimum of 10 times ๐ŸŒŸ

4.8. Test Reporting ๐Ÿ“‹

every test has a reporting format with some global, identical components and some components specific to that individual test ๐ŸŽ€ the following parameters for test configuration and controller settings MUST be reflected in the test report ๐Ÿ’…

Test Configuration Parameters:

  1. Controller name and version
  2. Northbound protocols and versions
  3. Southbound protocols and versions
  4. Controller redundancy mode (standalone or cluster mode)
  5. Connection setup (unencrypted or encrypted)
  6. Network Device type (physical, virtual, or emulated)
  7. Number of nodes
  8. Number of links
  9. Data-plane test traffic type
  10. Controller system configuration (e.g., physical or virtual machine, CPU, memory, caches, operating system, interface speed, storage)
  11. Reference test setup (e.g., the setup shown in Section 3.1)

Parameters for Controller Settings:

  1. Topology rediscovery timeout
  2. Controller redundancy mode (e.g., active-standby)
  3. Controller state persistence enabled/disabled

to make sure the test is repeatable, the following capabilities of the test emulator SHOULD be reported ๐Ÿ”

  1. Maximum number of Network Devices that the forwarding plane emulates
  2. Control message processing time (e.g., topology discovery messages)

one way to determine the above two values is to simulate the required control sessions and messages from the control plane ๐Ÿงš


5. Benchmarking Tests ๐Ÿ

5.1. Performance โšก

5.1.1. Network Topology Discovery Time โœจ

Objective:

okay so this one measures how long the controller(s) take to figure out the whole network topology ๐Ÿ—บ๏ธ ๐Ÿซถ It starts at the very first discovery message the controller sends out through its southbound interface and ends when every feature of the static topology has been found. main character energy, literally.

Reference Test Setup:

this test SHOULD use one of the test setups from Section 3.1 or Section 3.2 of this document ๐Ÿ’…

Prerequisites:

  1. The controller MUST support network discovery. no cap, this is the entry ticket ๐ŸŽŸ๏ธ
  2. The tester should be able to pull up the discovered topology through either the controller's management interface or its northbound interface, so they can check whether discovery worked and finished. ๐Ÿ‘€
  3. Make sure the controller's topology rediscovery timeout is set to the maximum value so it doesn't start rediscovering in the middle of the test ๐Ÿ™ˆ

Procedure:

  1. Make sure the controller is operational and its network applications, northbound interface, and southbound interface are all up and running โœจ
  2. Set up the network connections between the controller and the Network Devices. ๐Ÿ”Œ
  3. Record the time of the first discovery message (Tm1) that the controller sends, as seen at the forwarding-plane test emulator interface (I1). โฐ
  4. Query the controller every t seconds (the RECOMMENDED value for t is 3) to get the discovered topology through the northbound interface or the management interface, then compare it with the deployed topology. the RECOMMENDED value is 3, so that's the vibe ๐ŸŽ€
  5. Stop the trial when the discovered topology matches the deployed network topology, or when the discovered topology returns the same details for three consecutive queries. ๐Ÿ›‘
  6. Record the time of the last discovery message (Tmn) sent to the controller, as seen at the forwarding-plane test emulator interface (I1), when the trial finishes successfully (for example, when the topology matches). ๐Ÿ

Measurements:

Topology Discovery Time (DT1) = Tmn - Tm1

                                        DT1 + DT2 + DT3 .. DTn
Average Topology Discovery Time (TDm) = -----------------------
                                             Total Trials

                                         SUM[SQUAREOF(DTi - TDm)]
Topology Discovery Time Variance (TDv) = ------------------------
                                             Total Trials - 1

Reporting Format:

The Topology Discovery Time results MUST be reported in tabular format, with a row for each successful iteration. The last row of the table shows the Topology Discovery Time variance, and the row right above it shows the Average Topology Discovery Time. ๐Ÿ“Š๐Ÿ’–

If this test is repeated with a varying number of nodes over the same topology, the results SHOULD be reported in the form of a graph. The X coordinate SHOULD be the number of nodes (N), and the Y coordinate SHOULD be the Average Topology Discovery Time. graphs are so iconic when they tell a story ๐Ÿ“ˆโœจ


5.1.2. Asynchronous Message Processing Time ๐Ÿฆ‹

Objective:

this one measures how long the controller(s) take to process an asynchronous message. It starts when a Network Device sends an asynchronous message after all the devices have been discovered by the controller(s), and it ends when the controller(s) send back a response message at their southbound interface. ๐ŸŒธ

Reference Test Setup:

this test SHOULD use one of the test setups from Section 3.1 or Section 3.2 of this document. same setups, we're consistent bestie ๐Ÿซถ

Prerequisite:

The controller MUST have successfully completed the network topology discovery for the connected Network Devices. no discovery, no party ๐Ÿšซ๐ŸŽ‰

Procedure:

  1. Generate asynchronous messages from every connected Network Device to the SDN Controller, one at a time in series, from the forwarding-plane test emulator for the Trial Duration. one at a time, in order, lowkey so satisfying ๐Ÿ”
  2. Record every request transmit time (T1) and the matching response received time (R1) at the forwarding-plane test emulator interface (I1) for every successful message exchange. โฑ๏ธ

Measurements:

 Asynchronous Message Processing Time (APT1) =
                                              SUM{Ri} - SUM{Ti}
                                            -----------------------
                                                       Nrx

   Where Nrx is the total number of successful messages exchanged.

Average Asynchronous Message Processing Time =
                                             APT1 + APT2 + APT3 .. APTn
                                             --------------------------
                                                    Total Trials

Asynchronous Message Processing Time Variance (TAMv) =
                                             SUM[SQUAREOF(APTi - TAMm)]
                                             --------------------------
                                                   Total Trials - 1

   Where TAMm is the Average Asynchronous Message Processing Time.

Reporting Format:

The Asynchronous Message Processing Time results MUST be reported in tabular format, with a row for each iteration. The last row of the table shows the Asynchronous Message Processing Time variance, and the row above it shows the Average Asynchronous Message Processing Time. ๐Ÿ’…๐Ÿ“‹

The report SHOULD capture the following information, in addition to the configuration parameters captured per Section 4.8:

  • Successful messages exchanged (Nrx) โœ…
  • Percentage of unsuccessful messages exchanged, computed using the formula ((1 - Nrx/Ntx) * 100), where Ntx is the total number of messages transmitted to the controller ๐Ÿ“‰

If this test is repeated with a varying number of nodes with the same topology, the results SHOULD be reported in the form of a graph. The X coordinate SHOULD be the number of nodes (N), and the Y coordinate SHOULD be the Average Asynchronous Message Processing Time. ๐ŸŒˆ


5.1.3. Asynchronous Message Processing Rate ๐Ÿ“

Objective:

this one measures how many responses to asynchronous messages (like a new flow arrival notification message, a link down, and so on) the controller(s) actually processed, and replied to with a valid and productive (non-trivial) response message. ๐Ÿงš

Using a single procedure, this test measures the following two benchmarks on the Asynchronous Message Processing Rate (see Section 2.3.1.3 of [RFC8455]):

  1. Maximum Asynchronous Message Processing Rate
  2. Loss-Free Asynchronous Message Processing Rate

so it's two benchmarks in one trip, efficient and iconic ๐Ÿ”ฅ Here, both benchmarks come from a series of trials where the messages sent to the controller(s) and the responses received from them are counted over the Trial Duration. The message response rate and the Message Loss Ratio are calculated for each trial. ๐Ÿ“Šโœจ

Reference Test Setup:

this test SHOULD use one of the test setups from Section 3.1 or Section 3.2 of this document. ๐Ÿ’–

Prerequisites:

  1. The controller(s) MUST have successfully completed the network topology discovery for the connected Network Devices. discovery first, then the fun begins ๐ŸŽ€
  2. Choose and record the Trial Duration (Td), the sending rate STEP size, the tolerance on equality for two consecutive trials (P%), and the maximum possible message-sending rate (Ntx1/Td). write all of this down, no skipping ๐Ÿ“

Procedure:

  1. Generate asynchronous messages continuously, at the maximum possible rate, on the established connections from all the emulated/simulated Network Devices for the given Trial Duration (Td). full speed, no brakes ๐ŸŽ๏ธ๐Ÿ’จ
  2. Record the total number of responses received (Nrx1) from the controller, as well as the number of messages sent (Ntx1) to the controller within the Trial Duration (Td). ๐Ÿงพ
  3. Calculate the Asynchronous Message Processing Rate (APR1) and the Message Loss Ratio (Lr1). Make sure the controller(s) have gone back to normal operation first. breathe, controller, breathe ๐Ÿง˜
  4. Repeat the trial, this time reducing the asynchronous message-sending rate from the last trial by the STEP size. dial it down a little ๐Ÿ”ฝ
  5. Keep repeating the trials and lowering the sending rate until both the maximum value of Nrxn (the number of responses received from the controller) and the Nrxn that matches a Loss Ratio of zero have been found. we're hunting for the sweet spots ๐ŸŽฏ
  6. The trials for the benchmark levels MUST be repeated using the same asynchronous message rates until the responses received from the controller are equal (+/-P%) for two consecutive trials. consistency is everything ๐Ÿ’œ
  7. Record the number of responses received (Nrxn) from the controller, as well as the number of messages sent (Ntxn) to the controller, in the last trial. ๐Ÿ“Œ

Measurements:

                                                  Nrxn
Asynchronous Message Processing Rate (APRn) = -----
                                                   Td

Maximum Asynchronous Message Processing Rate = MAX(APRn) for all n

                                                Nrxn
Asynchronous Message Loss Ratio (Lrn) = 1 - -----
                                                Ntxn

Loss-Free Asynchronous Message Processing Rate = MAX(APRn)
   given Lrn = 0

Reporting Format:

The Asynchronous Message Processing Rate results MUST be reported in tabular format, with a row for each trial. ๐Ÿ“Š

The table should report the following information, in addition to the configuration parameters captured per Section 4.8, with these columns:

  • Offered rate (Ntxn/Td)
  • Asynchronous Message Processing Rate (APRn)
  • Loss Ratio (Lr)
  • Benchmark at this iteration (blank for none, Maximum Asynchronous Message Processing Rate, Loss-Free Asynchronous Message Processing Rate)

The results MAY be presented in the form of a graph. The X axis SHOULD be the offered rate, and dual Y axes would represent the Asynchronous Message Processing Rate and the Loss Ratio, respectively. two axes, double the drama ๐Ÿ“ˆ๐Ÿ“‰๐Ÿซถ

If this test is repeated with a varying number of nodes over the same topology, the results SHOULD be reported in the form of a graph. The X axis SHOULD be the number of nodes (N), and the Y axis SHOULD be the Asynchronous Message Processing Rate. Both the Maximum Asynchronous Message Processing Rate and the Loss-Free Asynchronous Message Processing Rate should be plotted for each N. the graphs are giving everything ๐ŸŒˆ๐Ÿ’…

5.1.4. Reactive Path Provisioning Time ๐Ÿ›ค๏ธโœจ

okay so bestie, this one is about how long the controller takes to set up a whole path reactively, meaning the network asks for help when a packet shows up with no rule for it ๐Ÿ™ˆ. The clock starts at the very first flow provisioning request the controller gets on its southbound interface and stops at the very last flow provisioning response it sends back out that same interface. Main character energy for the controller, no cap ๐Ÿ’…

Objective:

Measure the time taken by the controller to set up a path reactively between source and destination nodes, defined as the interval starting with the first flow provisioning request message received by the controller(s) at its southbound interface and ending with the last flow provisioning response message sent from the controller(s) at its southbound interface.

Reference Test Setup:

okay this test SHOULD use one of the test setups from Section 3.1 or Section 3.2 of this document ๐ŸŽ€. The number of Network Devices in the path is a parameter you can vary, going from two all the way up to the maximum discovery size, across repeated runs of the test ๐Ÿฆ‹.

Prerequisites:

  1. The controller MUST contain the network topology information for the deployed network topology. ๐ŸŒธ
  2. The controller should know the location of the destination endpoint for which the path has to be provisioned. This can be achieved through dynamic learning or static provisioning. ๐Ÿ’œ
  3. Ensure that the default action for "flow miss" in the Network Device is configured to "send to controller". ๐Ÿงš
  4. Ensure that each Network Device in a path requires the controller to make the forwarding decision while paving the entire path. ๐Ÿซถ

Procedure:

  1. Send a single traffic stream from test traffic generator TP1 to test traffic generator TP2. โœจ
  2. Record the time of the first flow provisioning request message sent to the controller (Tsf1) from the Network Device at the forwarding-plane test emulator interface (I1). ๐Ÿ“
  3. Wait for the arrival of the first traffic frame at the endpoint (i.e., test traffic generator TP2) or the expiry of the Trial Duration (Td). โณ
  4. Record the time of the last flow provisioning response message received from the controller (Tdf1) to the Network Device at the forwarding-plane test emulator interface (I1). ๐ŸŽฏ

Measurements:

Reactive Path Provisioning Time (RPT1) = Tdf1 - Tsf1

Average Reactive Path Provisioning Time =
                                        RPT1 + RPT2 + RPT3 .. RPTn
                                        --------------------------
                                                Total Trials

Reactive Path Provisioning Time Variance (TRPv) =
                                        SUM[SQUAREOF(RPTi - TRPm)]
                                        --------------------------
                                               Total Trials - 1

   Where TRPm is the Average Reactive Path Provisioning Time.

Reporting Format:

The Reactive Path Provisioning Time results MUST be reported in tabular format, with a row for each iteration. ๐Ÿ“Š The last row of the table indicates the Reactive Path Provisioning Time variance, and the previous row indicates the Average Reactive Path Provisioning Time. ๐Ÿ’–

The report should capture the following information, in addition to the configuration parameters captured per Section 4.8:

  • Number of Network Devices in the path ๐ŸŒˆ

5.1.5. Proactive Path Provisioning Time ๐Ÿฆ„

okay this one flips the script ๐Ÿ”ฅ. Instead of waiting for packets to trigger things, the path is set up proactively, so the clock starts when the first proactive flow gets provisioned on the controller's northbound interface and stops at the last flow provisioning response sent out southbound. It's giving planning ahead, iconic ๐Ÿ‘‘.

Objective:

Measure the time taken by the controller to set up a path proactively between source and destination nodes, defined as the interval starting with the first proactive flow provisioned in the controller(s) at its northbound interface and ending with the last flow provisioning response message sent from the controller(s) at its southbound interface.

Reference Test Setup:

This test SHOULD use one of the test setups from Section 3.1 or Section 3.2 of this document. ๐ŸŽ€

Prerequisites:

  1. The controller MUST contain the network topology information for the deployed network topology. ๐ŸŒธ
  2. The controller should know the location of the destination endpoint for which the path has to be provisioned. This can be achieved through dynamic learning or static provisioning. ๐Ÿ’œ
  3. Ensure that the default action for "flow miss" in the Network Device is "drop". ๐Ÿ™…โ€โ™€๏ธ

Procedure:

  1. Send a single traffic stream from test traffic generator TP1 to test traffic generator TP2. โœจ
  2. Install the flow entries so that the traffic travels from test traffic generator TP1 until it reaches test traffic generator TP2 through the controller's northbound interface or management interface. ๐Ÿงš
  3. Wait for the arrival of the first traffic frame at test traffic generator TP2 or the expiry of the Trial Duration (Td). โณ
  4. Record the time when the proactive flow is provisioned in the controller (Tsf1) at the management-plane test emulator interface (I2). ๐Ÿ“
  5. Record the time of the last flow provisioning message received from the controller (Tdf1) at the forwarding-plane test emulator interface (I1). ๐ŸŽฏ

Measurements:

Proactive Flow Provisioning Time (PPT1) = Tdf1 - Tsf1

Average Proactive Path Provisioning Time =
                                        PPT1 + PPT2 + PPT3 .. PPTn
                                        --------------------------
                                                Total Trials

Proactive Path Provisioning Time Variance (TPPv) =
                                        SUM[SQUAREOF(PPTi - TPPm)]
                                        --------------------------
                                             Total Trials - 1

   Where TPPm is the Average Proactive Path Provisioning Time.

Reporting Format:

The Proactive Path Provisioning Time results MUST be reported in tabular format, with a row for each iteration. ๐Ÿ“Š The last row of the table indicates the Proactive Path Provisioning Time variance, and the previous row indicates the Average Proactive Path Provisioning Time. ๐Ÿ’–

The report should capture the following information, in addition to the configuration parameters captured per Section 4.8:

  • Number of Network Devices in the path ๐ŸŒˆ

5.1.6. Reactive Path Provisioning Rate ๐ŸŒŸ

last one in this batch and it's a rate test, so we're counting how many independent paths the controller can set up per second reactively ๐Ÿ’…. It's measured on the southbound side, counting the flow provisioning requests that turn into paths over the Trial Duration. Think of it like a bakery counting how many cupcakes come out of the oven every minute ๐Ÿง.

Objective:

Measure the maximum number of independent paths a controller can concurrently establish per second between source and destination nodes reactively, defined as the number of paths provisioned per second by the controller(s) at its southbound interface for the flow provisioning requests received for path provisioning at its southbound interface between the start of the test and the expiry of the given Trial Duration.

Reference Test Setup:

This test SHOULD use one of the test setups from Section 3.1 or Section 3.2 of this document. ๐ŸŽ€

Prerequisites:

  1. The controller MUST contain the network topology information for the deployed network topology. ๐ŸŒธ
  2. The controller should know the location of destination addresses for which the paths have to be provisioned. This can be achieved through dynamic learning or static provisioning. ๐Ÿ’œ
  3. Ensure that the default action for "flow miss" in the Network Device is configured to "send to controller". ๐Ÿงš
  4. Ensure that each Network Device in a path requires the controller to make the forwarding decision while provisioning the entire path. ๐Ÿซถ

Procedure:

  1. Send traffic with unique source and destination addresses from test traffic generator TP1. โœจ
  2. Record the total number of unique traffic frames (Ndf) received at test traffic generator TP2 within the Trial Duration (Td). ๐Ÿ“

Measurements:

                                            Ndf
Reactive Path Provisioning Rate (RPR1) = ------
                                            Td

Average Reactive Path Provisioning Rate =
                                        RPR1 + RPR2 + RPR3 .. RPRn
                                        --------------------------
                                                Total Trials

Reactive Path Provisioning Rate Variance (RPPv) =
                                        SUM[SQUAREOF(RPRi - RPPm)]
                                        --------------------------
                                              Total Trials - 1

   Where RPPm is the Average Reactive Path Provisioning Rate.

Reporting Format:

The Reactive Path Provisioning Rate results MUST be reported in tabular format, with a row for each iteration. ๐Ÿ“Š The last row of the table indicates the Reactive Path Provisioning Rate variance, and the previous row indicates the Average Reactive Path Provisioning Rate. ๐Ÿ’–

The report should capture the following information, in addition to the configuration parameters captured per Section 4.8:

  • Number of Network Devices in the path ๐ŸŒˆ
  • Offered rate ๐Ÿฆ‹

5.1.7. Proactive Path Provisioning Rate ๐Ÿš€

Objective:

  • Okay bestie, this one measures the most independent paths a controller can set up per second proactively ๐Ÿ›ค๏ธ That means paths it provisions ahead of time, based on what it was asked for through its northbound interface. The count is how many paths get provisioned per second by the controller(s) at its southbound interface, measured from the start of the test until the Trial Duration runs out. The measurement is based on data-plane observations of successful path activation ๐Ÿ‘€

Reference Test Setup:

  • This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐ŸŽ€

Prerequisites:

  1. The controller MUST contain the network topology information for the deployed network topology. ๐Ÿ—บ๏ธ
  2. The controller should know the location of destination addresses for which the paths have to be provisioned. It can learn these dynamically or get them through static provisioning ๐Ÿงญ
  3. Make sure the default action for "flow miss" in the Network Device is "drop" ๐Ÿ™…โ€โ™€๏ธ

Procedure:

  1. Send traffic continuously with unique source and destination addresses from test traffic generator TP1 ๐ŸŒŠ
  2. Install the matching flow entries so the traffic travels from the simulated sources at TP1 all the way to the simulated destinations at test traffic generator TP2, going through the controller's northbound interface or management interface ๐Ÿฆ‹
  3. Record the total number of unique traffic frames (Ndf) received at TP2 within the Trial Duration (Td) ๐Ÿ“

Measurements:

                                                 Ndf
      Proactive Path Provisioning Rate (PPR1) = ------
                                                 Td

      Average Proactive Path Provisioning Rate =
                                              PPR1 + PPR2 + PPR3 .. PPRn
                                              --------------------------
                                                      Total Trials

      Proactive Path Provisioning Rate Variance (PPPv) =
                                              SUM[SQUAREOF(PPRi - PPPm)]
                                              -------------------------
                                                   Total Trials - 1

         Where PPPm is the Average Proactive Path Provisioning Rate.

Reporting Format:

Your results MUST be reported in tabular format, with a row for each iteration ๐Ÿ“Š The last row of the table is the Proactive Path Provisioning Rate variance, and the row right above it is the Average Proactive Path Provisioning Rate. โœจ

Your report should also capture these things, on top of the configuration parameters captured per Section 4.8 ๐Ÿ’–

  • Number of Network Devices in the path
  • Offered rate

5.1.8. Network Topology Change Detection Time ๐Ÿ”

Objective:

  • This one clocks how long the controller takes to notice that the network topology changed ๐Ÿ•ฐ๏ธ The timer starts with the notification message the controller receives at its southbound interface and stops with the first topology rediscovery message the controller sends from that same interface. ๐Ÿ’…

Reference Test Setup:

  • This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐ŸŒธ

Prerequisites:

  1. The controller MUST have successfully discovered the network topology information for the deployed network topology. ๐Ÿซถ
  2. The periodic network discovery operation should be configured to twice the Trial Duration (Td) value โฑ๏ธ

Procedure:

  1. Trigger a topology change event by bringing down an active Network Device in the topology ๐Ÿ’ฅ
  2. Record the time when the first topology change notification is sent to the controller (Tcn) at the forwarding-plane test emulator interface (I1) ๐Ÿ“
  3. Stop the trial when the controller sends the first topology rediscovery message to the Network Device, or when the Trial Duration (Td) expires ๐Ÿ›‘
  4. Record the time when the first topology rediscovery message is received from the controller (Tcd) at the forwarding-plane test emulator interface (I1) ๐Ÿ“

Measurements:

      Network Topology Change Detection Time (TDT1) = Tcd - Tcn

      Average Network Topology Change Detection Time =
                                              TDT1 + TDT2 + TDT3 .. TDTn
                                              --------------------------
                                                      Total Trials

      Network Topology Change Detection Time Variance (NTDv) =
                                              SUM[SQUAREOF(TDTi - NTDm)]
                                              --------------------------
                                                    Total Trials - 1

         Where NTDm is the Average Network Topology Change
            Detection Time.

Reporting Format:

The Network Topology Change Detection Time results MUST be reported in tabular format, with a row for each iteration ๐Ÿ“Š The last row shows the Network Topology Change Detection Time variance, and the row before it shows the Average Network Topology Change Detection Time. ๐ŸŽ€


5.2. Scalability ๐Ÿ“ˆ

5.2.1. Control Sessions Capacity ๐Ÿง

Objective:

  • Here we measure the maximum number of control sessions the controller can keep alive ๐Ÿค That's the number of sessions it accepts from Network Devices, counting from the first control session to the last one the controller accepts at its southbound interface. โœจ

Reference Test Setup:

  • This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐Ÿซง

Prerequisites:

  • None ๐Ÿ™ƒ

Procedure:

  1. Establish control connections with the controller from every Network Device emulated in the forwarding-plane test emulator ๐Ÿ”Œ
  2. Stop the trial when the controller starts dropping the control connections ๐Ÿ›‘
  3. Record the number of successful connections established (CCn) with the controller at the forwarding-plane test emulator ๐Ÿ“

Measurement:

      Control Sessions Capacity = CCn

Reporting Format:

The Control Sessions Capacity results MUST be reported, on top of the configuration parameters captured per Section 4.8 ๐Ÿ’…

5.2.2. Network Discovery Size ๐Ÿ—บ๏ธ

Objective:

  • This test checks how big a network the controller can discover ๐ŸŒ It counts the nodes, links, and hosts. The trial starts with a network topology the user hands over for discovery and ends with the number of nodes, links, and hosts the controller(s) actually managed to discover. ๐Ÿฆ‹

Reference Test Setup:

  • This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐ŸŒˆ

Prerequisites:

  1. The controller MUST support automatic network discovery. ๐Ÿค–
  2. The tester should be able to retrieve the discovered topology information through either the controller's management interface or northbound interface. ๐Ÿ‘ฉโ€๐Ÿ’ป

Procedure:

  1. Establish the network connections between the controller and the network nodes ๐Ÿ”—
  2. Query the controller every t seconds (the RECOMMENDED value for t is 30) to get the discovered network topology information through the northbound interface or the management interface โฐ
  3. Stop the trial when the discovered network topology information stays the same as the last two query responses ๐Ÿ›‘
  4. Compare the obtained network topology information with the deployed network topology information ๐Ÿ”
  5. If the comparison is successful, increase the number of nodes by 1 and repeat the trial. If the comparison is unsuccessful, decrease the number of nodes by 1 and repeat the trial. ๐Ÿ“ˆ๐Ÿ“‰
  6. Keep going until the comparison in step 5 is successful ๐Ÿ
  7. Record the number of nodes for the last trial run (Ns) where the topology comparison was successful ๐Ÿ“

Measurement:

       Network Discovery Size = Ns

Reporting Format:

The Network Discovery Size results MUST be reported, on top of the configuration parameters captured per Section 4.8 ๐ŸŽ€

5.2.3. Forwarding Table Capacity ๐Ÿง 

Objective:

  • Last one in this bunch! This measures the maximum number of flow entries a controller can manage in its Forwarding Table ๐Ÿ’œ

Reference Test Setup:

  • This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐ŸŒธ

Prerequisites:

  1. The controller's Forwarding Table should be empty. ๐Ÿซ™
  2. "Flow idle time" MUST be set to a higher or infinite value. โ™พ๏ธ
  3. The controller MUST have successfully completed network topology discovery. ๐Ÿ—บ๏ธ
  4. The tester should be able to retrieve the Forwarding Table information through either the controller's management interface or northbound interface. ๐Ÿ‘ฉโ€๐Ÿ’ป

Procedures:

  • Reactive Flow Provisioning Mode:
    1. Send bidirectional traffic continuously with unique source and destination addresses from test traffic generators TP1 and TP2, at the Asynchronous Message Processing Rate of the controller ๐Ÿ”
    2. Query the controller at a regular interval (e.g., every 5 seconds) for the number of learned flow entries from its northbound interface โฑ๏ธ
    3. Stop the trial when the retrieved value stays constant for three consecutive iterations, and record the value from the last query (Nrp) ๐Ÿ›‘๐Ÿ“
  • Proactive Flow Provisioning Mode:
    1. Install unique flows continuously through the controller's northbound interface or management interface until a failure response comes back from the controller ๐Ÿ“ฆ
    2. Record the total number of successful responses (Nrp) ๐Ÿ“
Note: Some controller designs for Proactive Flow Provisioning mode may require the switch to send flow setup requests in order to generate flow setup responses. In such cases, it is recommended to generate bidirectional traffic for the provisioned flows. ๐Ÿ’ก

Measurements:

  • Proactive Flow Provisioning Mode:
         Max Flow Entries = Total number of flows provisioned (Nrp)
  • Reactive Flow Provisioning Mode:
         Max Flow Entries = Total number of learned flow entries (Nrp)
  • Forwarding Table Capacity = Max Flow Entries ๐ŸŽฏ

Reporting Format:

The Forwarding Table Capacity results MUST be tabulated, along with the following information and the configuration parameters captured per Section 4.8 โœจ

  • Provisioning Type (Proactive/Reactive)

5.3. Security ๐Ÿ”

5.3.1. Exception Handling ๐Ÿšจ

Objective:

okay so the goal here is to see how handling error packets and notifications changes the results of our performance tests ๐Ÿ‘€. The impact MUST be measured for the following performance tests:

  1. Path Provisioning Rate
  2. Path Provisioning Time
  3. Network Topology Change Detection Time

Reference Test Setup:

This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐ŸŽ€

Prerequisites:

  1. This test MUST be performed after obtaining the baseline measurement results for the performance tests listed above. ๐Ÿ“ธ
  2. Ensure that the invalid messages are not dropped by the intermediate devices connecting the controller and Network Devices. ๐Ÿซถ

Procedure:

  1. Perform the above-listed performance tests, and send 1% of the messages from the Asynchronous Message Processing Rate test (Section 5.1.3) as invalid messages from the connected Network Devices emulated at the forwarding-plane test emulator. ๐Ÿ’–
  2. Perform the above-listed performance tests, and send 2% of the messages from the Asynchronous Message Processing Rate test (Section 5.1.3) as invalid messages from the connected Network Devices emulated at the forwarding-plane test emulator. โœจ

Note:

Invalid messages can be frames with incorrect protocol fields or any form of failure notifications sent towards the controller. ๐Ÿ™ˆ

Measurements:

Measurements MUST be done as per the equation defined in the "Measurements" section of the corresponding test listed under "Objective". ๐Ÿ“

Reporting Format:

The Exception Handling results MUST be reported in tabular format, with a column for each of the below parameters and row for each of the above-listed performance tests:

  • Without Exceptions
  • With 1% Exceptions
  • With 2% Exceptions

5.3.2. Handling Denial-of-Service Attacks ๐Ÿ›ก๏ธ

Objective:

so this one is about how the controller holds up when someone is trying to flood it with DoS attacks ๐Ÿ˜ค. Determine the effects of handling DoS attacks on performance and scalability tests. The impact MUST be measured for the following tests:

  1. Path Provisioning Rate
  2. Path Provisioning Time
  3. Network Topology Change Detection Time
  4. Network Discovery Size

Reference Test Setup:

This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐Ÿฆ‹

Prerequisite:

This test MUST be performed after obtaining the baseline measurement results for the performance tests listed above. ๐Ÿง

Procedure:

Perform the above-listed tests, and launch a DoS attack towards the controller while the trial is running. ๐Ÿ’ฅ

Note:

DoS attacks can be launched on one of the following interfaces:

  1. Northbound (e.g., query for flow entries continuously on the northbound interface)
  2. Management (e.g., Ping requests to the controller's management interface)
  3. Southbound (e.g., TCP SYN messages on the southbound interface)

Measurements:

Measurements MUST be done as per the equation defined in the "Measurements" section of the corresponding test listed under "Objective". ๐Ÿ“

Reporting Format:

The results regarding the handling of DoS attacks MUST be reported in tabular format, with a column for each of the below parameters and a row for each of the above-listed tests.

  • Without any attacks
  • With attacks

The report should also specify the nature of the attack and the interface in question. ๐Ÿ•ต๏ธโ€โ™€๏ธ


5.4. Reliability ๐Ÿ’œ

5.4.1. Controller Failover Time ๐Ÿ”

Objective:

Measure the time taken to switch from an active controller to the backup controller when the controllers work in redundancy mode and the active controller fails. It's defined as the interval starting when the active controller is brought down and ending with the first rediscovery message received from the new controller at its southbound interface. ๐ŸŒธ

Reference Test Setup:

This test SHOULD use the test setup illustrated in Section 3.2 of this document. ๐ŸŽ€

Prerequisites:

  1. Master controller election MUST be completed. ๐Ÿ‘‘
  2. Nodes are connected to the controller cluster per the implemented redundancy mode (e.g., active-standby). ๐Ÿงฉ
  3. The controller cluster should have successfully completed the network topology discovery. ๐Ÿ—บ๏ธ
  4. The Network Device MUST send all new flows to the controller when it receives them from the test traffic generator. ๐Ÿš€
  5. The controller should have learned the location of the destination (D1) at test traffic generator TP2. ๐Ÿ“

Procedure:

  1. Send unidirectional traffic continuously with incremental sequence numbers and source addresses from test traffic generator TP1 at the rate at which the controller can process the traffic without any drops. ๐ŸŒŠ
  2. Ensure that there are no packet drops observed at test traffic generator TP2. ๐Ÿ‘€
  3. Bring down the active controller. ๐Ÿ“‰
  4. Stop the trial when the first frame after the failover operation is received on test traffic generator TP2. ๐Ÿ›‘
  5. Record the time at which the last valid frame was received (T1) at test traffic generator TP2 before the sequence error and the time at which the first valid frame was received (T2) after the sequence error at test traffic generator TP2. โฑ๏ธ

Measurements:

Controller Failover Time = (T2 - T1)

Packet Loss = Number of missing packet sequences

Reporting Format:

The Controller Failover Time results MUST be tabulated with the following information:

  • Number of cluster nodes
  • Redundancy mode
  • Controller Failover Time
  • Packet Loss
  • Cluster keep-alive interval

5.4.2. Network Re-provisioning Time ๐Ÿ›ค๏ธ

Objective:

Measure the time taken by the controller to reroute traffic when there is a failure in existing traffic paths. It's defined as the interval starting with the first failure notification message received by the controller and ending with the last flow re-provisioning message sent by the controller at its southbound interface. ๐Ÿฆ‹

Reference Test Setup:

This test SHOULD use one of the test setups illustrated in Section 3.1 or Section 3.2 of this document. ๐Ÿงš

Prerequisites:

  1. A network with a specified number of nodes and redundant paths MUST be deployed. ๐Ÿ•ธ๏ธ
  2. The controller MUST know the location of test traffic generators TP1 and TP2. ๐Ÿงญ
  3. Ensure that the controller does not pre-provision the alternate path in the emulated Network Devices at the forwarding-plane test emulator. ๐Ÿ™…โ€โ™€๏ธ

Procedure:

  1. Send bidirectional traffic continuously with a unique sequence number from test traffic generators TP1 and TP2. โ†”๏ธ
  2. Bring down a link or switch in the traffic path. ๐Ÿ’”
  3. Stop the trial after receiving the first frame after network reconvergence. ๐Ÿ›‘
  4. Record the time of the last received frame prior to the frame loss at test traffic generator TP2 (TP2-Tlfr) and the time of the first frame received after the frame loss at test traffic generator TP2 (TP2-Tffr). There must be a gap in sequence numbers of these frames. ๐Ÿ”
  5. Record the time of the last received frame prior to the frame loss at test traffic generator TP1 (TP1-Tlfr) and the time of the first frame received after the frame loss at test traffic generator TP1 (TP1-Tffr). ๐Ÿ“

Measurements:

Forward Direction Path Re-provisioning Time (FDRT)
    = (TP2-Tffr - TP2-Tlfr)

Reverse Direction Path Re-provisioning Time (RDRT)
    = (TP1-Tffr - TP1-Tlfr)

Network Re-provisioning Time = (FDRT + RDRT)/2

Forward Direction Packet Loss = Number of missing sequence frames
   at test traffic generator TP1

Reverse Direction Packet Loss = Number of missing sequence frames
   at test traffic generator TP2

Reporting Format:

The Network Re-provisioning Time results MUST be tabulated with the following information:

  • Number of nodes in the primary path
  • Number of nodes in the alternate path
  • Network Re-provisioning Time
  • Forward Direction Packet Loss
  • Reverse Direction Packet Loss

6. IANA Considerations ๐ŸŒˆ

This document has no IANA actions. ๐Ÿซถ

7. Security Considerations ๐Ÿ”

okay this section is serious, bestie, so read it carefully ๐Ÿšจ

The benchmarking tests described in this document are limited to the performance characterization of controllers in a lab environment with isolated networks. ๐Ÿงช

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 controller. ๐Ÿ“ฆ

Special capabilities SHOULD NOT exist in the controller specifically for benchmarking purposes. Any implications for network security arising from the controller SHOULD be identical in the lab and in production networks. ๐Ÿ”’

8. References ๐Ÿ“š

8.1. Normative References

8.2. Informative References

Appendix A. Benchmarking Methodology Using OpenFlow Controllers ๐Ÿฆ‹

This section gives an overview of the OpenFlow protocol [OpenFlow-Spec] and provides a test methodology for benchmarking SDN Controllers supporting the OpenFlow southbound protocol. The OpenFlow protocol is used as an example to illustrate the methodologies defined in this document. โœจ

A.1. Protocol Overview ๐Ÿง 

OpenFlow [OpenFlow-Spec] is an open standard protocol defined by the Open Networking Foundation (ONF) and used for programming the forwarding plane of network switches or routers via a centralized controller. ๐Ÿ’…

A.2. Messages Overview โœจ

okay so OpenFlow has three message types ๐Ÿ’…: controller-to-switch, asynchronous, and symmetric. let's break them down, bestie ๐Ÿซถ

Controller-to-switch messages are started by the controller, and they're how it directly manages or peeks at the switch ๐Ÿ‘€. Controllers use them to query and configure the switch (features messages, configuration messages), collect info from a switch (Read-State messages), send packets out a specific port of a switch (OFPT_PACKET_OUT messages), and change the switch's forwarding plane and state (Modify-State messages, Role-Request messages, etc.). it's giving total control ๐Ÿ‘‘

Asynchronous messages are generated by the switch without the controller asking for them ๐Ÿงš. They let switches update controllers when a new flow shows up (OFPT_PACKET_IN messages), when switch state changes ("flow-removed" messages, port-status messages), and when something goes wrong (Error messages). the switch literally just speaks up when it needs to ๐Ÿ“ฃ

Symmetric messages can be generated in either direction without anyone asking ๐Ÿฆ‹. They let switches and controllers set up a connection (Hello messages), check that the other side is still alive (Echo messages), and offer extra features (Experimenter messages). lowkey the chill ones ๐ŸŒธ


A.3. Connection Overview

okay so the OpenFlow channel is where OpenFlow messages get swapped between an OpenFlow switch and an OpenFlow controller ๐ŸŽ€. The channel can be set up using plain TCP or TLS. by default, a switch makes a single connection with the SDN Controller ๐Ÿ’œ. but a switch may also set up multiple parallel connections to a single controller (auxiliary connection), or connect to multiple controllers to handle controller failures and load balancing โœจ. it's the ultimate backup plan energy ๐Ÿซถ


A.4. Performance Benchmarking Tests ๐Ÿ“

A.4.1. Network Topology Discovery Time ๐ŸŒˆ

Procedure:

   Network Devices               OpenFlow                    SDN
                                   Controller               Application
            |                            |                           |
            |                            |<Initialize controller     |
            |                            |app., NB and SB interfaces>|
            |                            |                           |
            |<Deploy network with        |                           |
            | given no. of OF switches>  |                           |
            |                            |                           |
            |    OFPT_HELLO Exchange     |                           |
            |<-------------------------->|                           |
            |                            |                           |
            |   OFPT_PACKET_OUT with LLDP|                           |
            |             to all switches|                           |
       (Tm1)|<---------------------------|                           |
            |                            |                           |
            |    OFPT_PACKET_IN with LLDP|                           |
            |          rcvd from Switch 1|                           |
            |--------------------------->|                           |
            |                            |                           |
            |    OFPT_PACKET_IN with LLDP|                           |
            |          rcvd from Switch 2|                           |
            |--------------------------->|                           |
            |            .               |                           |
            |            .               |                           |
            |                            |                           |
            |    OFPT_PACKET_IN with LLDP|                           |
            |          rcvd from Switch n|                           |
       (Tmn)|--------------------------->|                           |
            |                            |                           |
            |                            |    <Wait for the expiry of|
            |                            |   the Trial Duration (Td)>|
            |                            |                           |
            |                            |   Query the controller for|
            |                            |  discovered n/w topo. (Di)|
            |                            |<--------------------------|
            |                            |                           |
            |                            |    <Compare the discovered|
            |                            |       n/w topology and the|
            |                            |      offered n/w topology>|
            |                            |                           |

Legend:

  • NB: Northbound
  • SB: Southbound
  • OF: OpenFlow
  • OFP: OpenFlow Protocol
  • LLDP: Link-Layer Discovery Protocol
  • Tm1: Time of reception of first LLDP message from controller
  • Tmn: Time of last LLDP message sent to controller

Discussion:

ok the Network Topology Discovery Time is the gap between the first OFPT_PACKET_OUT carrying an LLDP message received from the controller (Tm1) and the last OFPT_PACKET_IN carrying an LLDP message sent to the controller (Tmn), as long as the comparison works out โœ…. it's giving precision ๐Ÿ”ฅ

A.4.2. Asynchronous Message Processing Time ๐Ÿ’–

Procedure:

         Network Devices            OpenFlow                    SDN
                                   Controller               Application
            |                            |                           |
            |OFPT_PACKET_IN with single  |                           |
            |OFP match header            |                           |
        (T0)|--------------------------->|                           |
            |                            |                           |
            |OFPT_PACKET_OUT with single |                           |
            |          OFP action header |                           |
        (R0)|<---------------------------|                           |
            |          .                 |                           |
            |          .                 |                           |
            |          .                 |                           |
            |                            |                           |
            |OFPT_PACKET_IN with single  |                           |
            |OFP match header            |                           |
        (Tn)|--------------------------->|                           |
            |                            |                           |
            |OFPT_PACKET_OUT with single |                           |
            |          OFP action header |                           |
        (Rn)|<---------------------------|                           |
            |                            |                           |
            |<Wait for the expiry of the |                           |
            |Trial Duration>             |                           |
            |                            |                           |
            |<Record the number of       |                           |
            |OFPT_PACKET_INs/            |                           |
            |OFPT_PACKET_OUTs            |                           |
            |exchanged (Nrx)>            |                           |
            |                            |                           |

Legend:

  • T0,T1, ..Tn: transmit timestamps of OFPT_PACKET_IN messages
  • R0,R1, ..Rn: receive timestamps of OFPT_PACKET_OUT messages
  • Nrx: Number of successful OFPT_PACKET_IN/OFPT_PACKET_OUT message exchanges

Discussion:

the Asynchronous Message Processing Time comes from adding up the differences ((R0 - T0),(R1 - T1)..(Rn - Tn)) and then dividing that sum by Nrx ๐Ÿงฎ. the math is so clean, I'm obsessed ๐Ÿ˜ญ

A.4.3. Asynchronous Message Processing Rate ๐ŸŽ€

Procedure:

         Network Devices           OpenFlow                    SDN
                                  Controller               Application
            |                            |                          |
            |OFPT_PACKET_IN with single  |                          |
            |OFP match header            |                          |
            |--------------------------->|                          |
            |                            |                          |
            |OFPT_PACKET_OUT with single |                          |
            |          OFP action header |                          |
            |<---------------------------|                          |
            |                            |                          |
            |            .               |                          |
            |            .               |                          |
            |            .               |                          |
            |                            |                          |
            |OFPT_PACKET_IN with single  |                          |
            |OFP match header            |                          |
            |--------------------------->|                          |
            |                            |                          |
            |OFPT_PACKET_OUT with single |                          |
            |          OFP action header |                          |
            |<---------------------------|                          |
            |                            |                          |
            |<Repeat the steps until     |                          |
            |the expiry of the           |                          |
            |Trial Duration>             |                          |
            |                            |                          |
            |<Record the number of OFP   |                          |
      (Ntx1)|match headers sent>         |                          |
            |                            |                          |
            |<Record the number of OFP   |                          |
      (Nrx1)|action headers rcvd>        |                          |
            |                            |                          |

Note: The Ntx1 on initial trials should be greater than Nrx1. Repeat the trials until the Nrxn for two consecutive trials equals (+/-P%).

Discussion:

this one is a single procedure that measures two benchmarks ๐Ÿ”ฅ

  1. The Maximum Asynchronous Message Processing Rate comes from finding the maximum OFPT_PACKET_OUTs (Nrxn) received from the controller(s) across n trials ๐Ÿ‘‘.
  2. The Loss-Free Asynchronous Message Processing Rate comes from finding the maximum OFPT_PACKET_OUTs received from the controller(s) when the Loss Ratio equals zero ๐ŸŒธ. The Loss Ratio is calculated as 1 - Nrxn/Ntxn ๐Ÿ™ˆ.

two benchmarks, one procedure, zero notes-app chaos โœจ๐ŸŒˆ

A.4.4. Reactive Path Provisioning Time

Procedure:

    Test Traffic     Test Traffic      Network Devices      OpenFlow
   Generator TP1    Generator TP2                          Controller
         |             |                      |                     |
         |             |G-ARP (D1)            |                     |
         |             |--------------------->|                     |
         |             |                      |                     |
         |             |                      |OFPT_PACKET_IN(D1)   |
         |             |                      |-------------------->|
         |             |                      |                     |
         |Traffic (S1,D1)                     |                     |
   (Tsf1)|----------------------------------->|                     |
         |             |                      |                     |
         |             |                      |                     |
         |             |                      |                     |
         |             |                      |OFPT_PACKET_IN(S1,D1)|
         |             |                      |-------------------->|
         |             |                      |                     |
         |             |                      |  FLOW_MOD(D1)       |
         |             |                      |<--------------------|
         |             |                      |                     |
         |             |Traffic (S1,D1)       |                     |
         |       (Tdf1)|<---------------------|                     |
         |             |                      |                     |

Legend:

   G-ARP: Gratuitous ARP message
   Tsf1: Time of first frame sent from TP1
   Tdf1: Time of first frame received from TP2

Discussion:

Okay bestie, so this one is the reactive path provisioning time ๐Ÿฆ‹ The vibe is: the switches don't know where to send your traffic yet, so they ask the controller (๐Ÿ‘‘ the OpenFlow Controller) and wait for it to install a flow. The Reactive Path Provisioning Time is just the gap between when the first frame leaves TP1 and when the first frame shows up at TP2, aka Tsf1 - Tdf1 ๐Ÿ’… Literally that's it, you subtract the times and you're done, no cap โœจ

A.4.5. Proactive Path Provisioning Time

Procedure:

   Test Traffic  Test Traffic    Network Devices OpenFlow       SDN
   Generator TP1 Generator TP2                  Controller   Application
         |            |               |                  |             |
         |            |               |                  |             |
         |            |               |                  |<Install flow|
         |            |               |                  |  for S1,D1> |
         |            |G-ARP (D1)     |                  |             |
         |            |-------------->|                  |             |
         |            |               |                  |             |
         |            |               |OFPT_PACKET_IN(D1)|             |
         |            |               |----------------->|             |
         |            |               |                  |             |
         |Traffic (S1,D1)             |                  |             |
   (Tsf1)|--------------------------->|                  |             |
         |            |               |                  |             |
         |            |               |   FLOW_MOD(D1)   |             |
         |            |               |<-----------------|             |
         |            |               |                  |             |
         |            |Traffic (S1,D1)|                  |             |
         |      (Tdf1)|<--------------|                  |             |
         |            |               |                  |             |

Legend:

   G-ARP: Gratuitous ARP message
   Tsf1: Time of first frame sent from TP1
   Tdf1: Time of first frame received from TP2

Discussion:

Okay so the proactive version is giving "I planned ahead" energy ๐ŸŒธ Here the SDN Application installs the flow for S1,D1 before the traffic even starts, so the controller already has the answer when things kick off. The Proactive Path Provisioning Time is found the same way: the difference between the transmit and receive times of the traffic, Tsf1 - Tdf1 ๐ŸŽ€ Same math, cuter setup, obsessed ๐Ÿ˜ญ

A.4.6. Reactive Path Provisioning Rate

Procedure:

    Test Traffic     Test Traffic   Network Devices         OpenFlow
   Generator TP1    Generator TP2                         Controller
         |             |                    |                      |
         |             |                    |                      |
         |             |                    |                      |
         |             |G-ARP (D1..Dn)      |                      |
         |             |--------------------|                      |
         |             |                    |                      |
         |             |                    |OFPT_PACKET_IN(D1..Dn)|
         |             |                    |--------------------->|
         |             |                    |                      |
         |Traffic (S1..Sn,D1..Dn)           |                      |
         |--------------------------------->|                      |
         |             |                    |                      |
         |             |                    |OFPT_PACKET_IN(S1..Sn,|
         |             |                    |               D1..Dn)|
         |             |                    |--------------------->|
         |             |                    |                      |
         |             |                    |        FLOW_MOD(S1)  |
         |             |                    |<---------------------|
         |             |                    |                      |
         |             |                    |        FLOW_MOD(D1)  |
         |             |                    |<---------------------|
         |             |                    |                      |
         |             |                    |        FLOW_MOD(S2)  |
         |             |                    |<---------------------|
         |             |                    |                      |
         |             |                    |        FLOW_MOD(D2)  |
         |             |                    |<---------------------|
         |             |                    |             .        |
         |             |                    |             .        |
         |             |                    |                      |
         |             |                    |        FLOW_MOD(Sn)  |
         |             |                    |<---------------------|
         |             |                    |                      |
         |             |                    |        FLOW_MOD(Dn)  |
         |             |                    |<---------------------|
         |             |                    |                      |
         |             | Traffic (S1..Sn,   |                      |
         |             |             D1..Dn)|                      |
         |             |<-------------------|                      |
         |             |                    |                      |
         |             |                    |                      |

Legend:

   G-ARP: Gratuitous ARP message
   D1..Dn: Destination Endpoint 1, Destination Endpoint 2 ...,
           Destination Endpoint n
   S1..Sn: Source Endpoint 1, Source Endpoint 2 ...,
           Source Endpoint n

Discussion:

Okay now we're going big ๐Ÿ‘‘ This is the reactive rate, so instead of one flow we're setting up a whole bunch of them (D1..Dn and S1..Sn) and the controller is working through all of them ๐Ÿ’– The Reactive Path Provisioning Rate comes from counting the total number of frames that land at test traffic generator TP2 after the Trial Duration. More frames, more slay ๐Ÿ”ฅ

A.4.7. Proactive Path Provisioning Rate

Procedure:

   Test Traffic  Test Traffic   Network Devices   OpenFlow        SDN
   Generator TP1 Generator TP2                   Controller  Application
         |            |                |                 |             |
         |            |G-ARP (D1..Dn)  |                 |             |
         |            |--------------->|                 |             |
         |            |                |                 |             |
         |            |                |OFPT_PACKET_IN   |             |
         |            |                |         (D1..Dn)|             |
         |            |                |---------------->|             |
         |            |                |                 |             |
         |Traffic (S1..Sn,D1..Dn)      |                 |             |
   (Tsf1)|---------------------------->|                 |             |
         |            |                |                 |             |
         |            |                |                 |<Install flow|
         |            |                |                 |  for S1,D1> |
         |            |                |                 |             |
         |            |                |                 |       .     |
         |            |                |                 |<Install flow|
         |            |                |                 |  for Sn,Dn> |
         |            |                |                 |             |
         |            |                |  FLOW_MOD(S1)   |             |
         |            |                |<----------------|             |
         |            |                |                 |             |
         |            |                |  FLOW_MOD(D1)   |             |
         |            |                |<----------------|             |
         |            |                |                 |             |
         |            |                |       .         |             |
         |            |                |  FLOW_MOD(Sn)   |             |
         |            |                |<----------------|             |
         |            |                |                 |             |
         |            |                |  FLOW_MOD(Dn)   |             |
         |            |                |<----------------|             |
         |            |                |                 |             |
         |            |Traffic (S1..Sn,|                 |             |
         |            |         D1..Dn)|                 |             |
         |      (Tdf1)|<---------------|                 |             |
         |            |                |                 |             |

Legend:

   G-ARP: Gratuitous ARP message
   D1..Dn: Destination Endpoint 1, Destination Endpoint 2 ...,
           Destination Endpoint n
   S1..Sn: Source Endpoint 1, Source Endpoint 2 ...,
           Source Endpoint n

Discussion:

Last but not least, the proactive rate ๐ŸŒˆ Same big multi-endpoint energy as before, except the SDN Application has already installed the flows for S1,D1 through Sn,Dn ahead of time, so the controller is prepped and ready ๐Ÿงš The Proactive Path Provisioning Rate is found by counting the total number of frames received at test traffic generator TP2 after the Trial Duration, just like the reactive one. Iconic behavior, periodt ๐Ÿ’œ

A.4.8. Network Topology Change Detection Time โœจ

Procedure:

    Network Devices              OpenFlow                    SDN
                                Controller               Application
         |                            |                           |
         |                            |     <Bring down a link in |
         |                            |                 Switch S1>|
         |                            |                           |
      T0 |PORT_STATUS with link down  |                           |
         | from S1                    |                           |
         |--------------------------->|                           |
         |                            |                           |
         |First OFPT_PACKET_OUT with  |                           |
         |LLDP to OF switch           |                           |
      T1 |<---------------------------|                           |
         |                            |                           |
         |                            |      <Record time of first|
         |                            |       OFPT_PACKET_OUT with|
         |                            |                   LLDP T1>|
         |                            |                           |

Discussion:

Okay, so this one is about how fast the network notices a link went down! ๐Ÿ’– You get it by subtracting two timestamps: T0, the moment OpenFlow Switch S1 sends its PORT_STATUS message, and T1, the moment the OpenFlow controller sends its first topology rediscovery message to the OpenFlow switches. The gap between them is the Network Topology Change Detection Time. It's giving precision, bestie ๐Ÿงš


A.5. Scalability ๐Ÿฆ‹

A.5.1. Control Sessions Capacity ๐Ÿ’…

Procedure:

      Network Devices                        OpenFlow
                                             Controller
         |                                       |
         |    OFPT_HELLO Exchange for Switch 1   |
         |<------------------------------------->|
         |                                       |
         |    OFPT_HELLO Exchange for Switch 2   |
         |<------------------------------------->|
         |                  .                    |
         |                  .                    |
         |                  .                    |
         |    OFPT_HELLO Exchange for Switch n   |
         |X<----------------------------------->X|
         |                                       |

Discussion:

Lowkey the cutest test ever ๐ŸŽ€ The value of Switch (n - 1) gives you the Control Sessions Capacity. So the controller does a HELLO handshake with each switch one by one, and the last one that works is the number that matters ๐Ÿ‘‘

A.5.2. Network Discovery Size ๐ŸŒธ

Procedure:

     Network Devices              OpenFlow                    SDN
                                 Controller               Application
         |                            |                           |
         |                            |     <Deploy network with  |
         |                            |given no. of OF switches N>|
         |                            |                           |
         |    OFPT_HELLO Exchange     |                           |
         |<-------------------------->|                           |
         |                            |                           |
         |   OFPT_PACKET_OUT with LLDP|                           |
         |      to all switches       |                           |
         |<---------------------------|                           |
         |                            |                           |
         |    OFPT_PACKET_IN with LLDP|                           |
         |          rcvd from Switch 1|                           |
         |--------------------------->|                           |
         |                            |                           |
         |    OFPT_PACKET_IN with LLDP|                           |
         |          rcvd from Switch 2|                           |
         |--------------------------->|                           |
         |            .               |                           |
         |            .               |                           |
         |                            |                           |
         |    OFPT_PACKET_IN with LLDP|                           |
         |          rcvd from Switch n|                           |
         |--------------------------->|                           |
         |                            |                           |
         |                            |    <Wait for the expiry of|
         |                            |   the Trial Duration (Td)>|
         |                            |                           |
         |                            |   Query the controller for|
         |                            |  discovered n/w topo. (N1)|
         |                            |<--------------------------|
         |                            |                           |
         |                            |   <If N1==N, repeat Step 1|
         |                            |           with N + 1 nodes|
         |                            |               until N1<N >|
         |                            |                           |
         |                            |   <If N1<N, repeat Step 1 |
         |                            | with N=N1 nodes once and  |
         |                            | exit>                     |
         |                            |                           |

Legend:

  • n/w topo: Network topology
  • OF: OpenFlow

Discussion:

Okay, the vibe is "how big can the network get before the controller loses track" ๐Ÿงš The value of N1 gives you the Network Discovery Size. The Trial Duration can be set to whatever time the user expects the controller to finish discovery in. Main character energy for the controller, no cap ๐Ÿ’…

A.5.3. Forwarding Table Capacity ๐Ÿ’œ

Procedure:

Test Traffic     Network Devices        OpenFlow          SDN
Generator TP1                           Controller     Application
     |                 |                      |                 |
     |                 |                      |                 |
     |G-ARP (H1..Hn)   |                      |                 |
     |---------------->|                      |                 |
     |                 |                      |                 |
     |                 |OFPT_PACKET_IN(D1..Dn)|                 |
     |                 |--------------------->|                 |
     |                 |                      |                 |
     |                 |                      |<Wait for 5 secs>|
     |                 |                      |                 |
     |                 |                      |  <Query for FWD |
     |                 |                      |          entry> |(F1)
     |                 |                      |                 |
     |                 |                      |<Wait for 5 secs>|
     |                 |                      |                 |
     |                 |                      |  <Query for FWD |
     |                 |                      |          entry> |(F2)
     |                 |                      |                 |
     |                 |                      |<Wait for 5 secs>|
     |                 |                      |                 |
     |                 |                      |  <Query for FWD |
     |                 |                      |          entry> |(F3)
     |                 |                      |                 |
     |                 |                      | <Repeat Step 2  |
     |                 |                      |until F1==F2==F3>|
     |                 |                      |                 |

Legend:

  • G-ARP: Gratuitous ARP message
  • H1..Hn: Host 1 .. Host n
  • FWD: Forwarding Table

Discussion:

Okay bestie, this one is a little bit of a stalking situation ๐Ÿ™ˆ The controller's Forwarding Table entries get queried over and over until three consecutive queries give back the same value. Whatever value came back last is your Forwarding Table Capacity. The query interval is totally up to you to configure, and the 5 seconds in this example is only there to make it easier to picture ๐ŸŒˆ


A.6. Security ๐Ÿ”ฅ

A.6.1. Exception Handling ๐Ÿซถ

Procedure: okay bestie, here's the setup ๐Ÿงชโœจ

Test Traffic  Test Traffic   Network Devices   OpenFlow          SDN
Generator TP1 Generator TP2                  Controller      Application
   |          |                |                      |                |
   |          |G-ARP (D1..Dn)  |                      |                |
   |          |--------------->|                      |                |
   |          |                |                      |                |
   |          |                |OFPT_PACKET_IN(D1..Dn)|                |
   |          |                |--------------------->|                |
   |          |                |                      |                |
   |Traffic (S1..Sn,D1..Dn)    |                      |                |
   |-------------------------->|                      |                |
   |          |                |                      |                |
   |          |                |OFPT_PACKET_IN(S1..Sa,|                |
   |          |                |               D1..Da)|                |
   |          |                |--------------------->|                |
   |          |                |                      |                |
   |          |                |OFPT_PACKET_IN        |                |
   |          |                |            (Sa+1..Sn,|                |
   |          |                |             Da+1..Dn)|                |
   |          |                |     (1% incorrect OFP|                |
   |          |                |         match header)|                |
   |          |                |--------------------->|                |
   |          |                |                      |                |
   |          |                |      FLOW_MOD(D1..Dn)|                |
   |          |                |<---------------------|                |
   |          |                |                      |                |
   |          |                |      FLOW_MOD(S1..Sa)|                |
   |          |                |           OFP headers|                |
   |          |                |<---------------------|                |
   |          |                |                      |                |
   |          |Traffic (S1..Sa,|                      |                |
   |          |         D1..Da)|                      |                |
   |          |<---------------|                      |                |
   |          |                |                      |                |
   |          |                |                      |   <Wait for the|
   |          |                |                      |   expiry of the|
   |          |                |                      |           Trial|
   |          |                |                      |       Duration>|
   |          |                |                      |                |
   |          |                |                      |      <Record Rx|
   |          |                |                      |       frames at|
   |          |                |                      |      TP2 (Rn1)>|
   |          |                |                      |                |
   |          |                |                      |        <Repeat |
   |          |                |                      |     Step 1 with|
   |          |                |                      |    2% incorrect|
   |          |                |                      |OFPT_PACKET_INs>|
   |          |                |                      |                |
   |          |                |                      |      <Record Rx|
   |          |                |                      |       frames at|
   |          |                |                      |      TP2 (Rn2)>|

Legend: here's the decoder ring ๐Ÿ’…

  • G-ARP: Gratuitous ARP message
  • OFPT_PACKET_IN(Sa+1..Sn,Da+1..Dn): OFPT_PACKET_IN with the wrong version number ๐Ÿ™ˆ
  • Rn1: the total number of frames received at Test Port 2 when 1% of the frames are incorrect
  • Rn2: the total number of frames received at Test Port 2 when 2% of the frames are incorrect

Discussion: this is where it gets spicy ๐Ÿ”ฅ

The traffic rate sent towards the OpenFlow switch from Test Port 1 should be 1% higher than the Path Programming Rate. Rn1 gives you the controller's Path Provisioning Rate when 1% of the frames are incorrect, and Rn2 gives you the Path Provisioning Rate when 2% are incorrect. Main character energy for the controller, honestly ๐Ÿ‘‘

The procedure above gives you the test steps to figure out how handling error packets affects the Path Programming Rate. And the same procedure can be adapted to check the effects on the other performance tests in this benchmarking test. Iconic reuse ๐Ÿฆ‹

A.6.2. Handling Denial-of-Service Attacks โœจ

Procedure: the DoS era ๐Ÿ˜ญ๐ŸŒˆ

Test Traffic  Test Traffic   Network Device      OpenFlow         SDN
Generator TP1 Generator TP2                     Controller  Application
    |          |                 |                      |             |
    |          |G-ARP (D1..Dn)   |                      |             |
    |          |---------------->|                      |             |
    |          |                 |                      |             |
    |          |                 |OFPT_PACKET_IN(D1..Dn)|             |
    |          |                 |--------------------->|             |
    |          |                 |                      |             |
    |Traffic (S1..Sn,D1..Dn)     |                      |             |
    |--------------------------->|                      |             |
    |          |                 |                      |             |
    |          |                 |OFPT_PACKET_IN(S1..Sn,|             |
    |          |                 |               D1..Dn)|             |
    |          |                 |--------------------->|             |
    |          |                 |                      |             |
    |          |                 |TCP SYN attack        |             |
    |          |                 |from a switch         |             |
    |          |                 |--------------------->|             |
    |          |                 |                      |             |
    |          |                 |FLOW_MOD(D1..Dn)      |             |
    |          |                 |<---------------------|             |
    |          |                 |                      |             |
    |          |                 | FLOW_MOD(S1..Sn)     |             |
    |          |                 |      OFP headers     |             |
    |          |                 |<---------------------|             |
    |          |                 |                      |             |
    |          |Traffic (S1..Sn, |                      |             |
    |          |         D1..Dn) |                      |             |
    |          |<----------------|                      |             |
    |          |                 |                      |             |
    |          |                 |                      |<Wait for the|
    |          |                 |                      |expiry of the|
    |          |                 |                      |        Trial|
    |          |                 |                      |    Duration>|
    |          |                 |                      |             |
    |          |                 |                      |   <Record Rx|
    |          |                 |                      |    frames at|
    |          |                 |                      |   TP2 (Rn1)>|
    |          |                 |                      |             |

Legend: just the one term this time ๐Ÿ“

  • G-ARP: Gratuitous ARP message

Discussion: a little chaos, a lot of learning ๐Ÿ’€

A TCP SYN attack should be launched from one of the emulated or simulated OpenFlow switches. Rn1 tells you the controller's Path Programming Rate while it's handling the denial-of-service attack. Stressful, but it's giving science ๐Ÿงช

The procedure above gives you the test steps to see how handling denial of service affects the Path Programming Rate. The same procedure can be adapted to check the effects on the other performance tests in this benchmarking test. Bestie, you're literally building a whole toolkit ๐Ÿซถ

A.7. Reliability ๐ŸŒธ

A.7.1. Controller Failover Time ๐Ÿฆ‹

Okay bestie, the first diagram picks up right where we left off ๐Ÿ’–

Procedure:

Test Traffic  Test Traffic  Network Device       OpenFlow      SDN
Generator TP1 Generator TP2                    Controller   Application
   |            |               |                       |             |
   |            |G-ARP (D1)     |                       |             |
   |            |-------------->|                       |             |
   |            |               |                       |             |
   |            |               |OFPT_PACKET_IN(D1)     |             |
   |            |               |---------------------->|             |
   |            |               |                       |             |
   |Traffic (S1..Sn,D1)         |                       |             |
   |--------------------------->|                       |             |
   |            |               |                       |             |
   |            |               |                       |             |
   |            |               |OFPT_PACKET_IN(S1,D1)  |             |
   |            |               |---------------------->|             |
   |            |               |                       |             |
   |            |               |FLOW_MOD(D1)           |             |
   |            |               |<----------------------|             |
   |            |               |FLOW_MOD(S1)           |             |
   |            |               |<----------------------|             |
   |            |               |                       |             |
   |            |Traffic (S1,D1)|                       |             |
   |            |<--------------|                       |             |
   |            |               |                       |             |
   |            |               |OFPT_PACKET_IN(S2,D1)  |             |
   |            |               |---------------------->|             |
   |            |               |                       |             |
   |            |               |FLOW_MOD(S2)           |             |
   |            |               |<----------------------|             |
   |            |               |                       |             |
   |            |               |OFPT_PACKET_IN         |             |
   |            |               |             (Sn-1,D1) |             |
   |            |               |---------------------->|             |
   |            |               |                       |             |
   |            |               |OFPT_PACKET_IN(Sn,D1)  |             |
   |            |               |---------------------->|             |
   |            |               |          .            |             |
   |            |               |          .            |<Bring down  |
   |            |               |          .            | the active  |
   |            |               |                       | controller> |
   |            |               |  FLOW_MOD(Sn-1)       |             |
   |            |               |    X<-----------------|             |
   |            |               |                       |             |
   |            |               |FLOW_MOD(Sn)           |             |
   |            |               |<----------------------|             |
   |            |               |                       |             |
   |            |Traffic (Sn,D1)|                       |             |
   |            |<--------------|                       |             |
   |            |               |                       |             |
   |            |               |                       |<Stop the    |
   |            |               |                       |test after   |
   |            |               |                       |recv. traffic|
   |            |               |                       |upon         |
   |            |               |                       |failure>     |

Legend:

G-ARP: Gratuitous ARP message

Discussion:

Okay so the gap between the last valid frame you receive before the traffic loss and the first frame you receive after it = the Controller Failover Time ๐Ÿฆ‹โœจ That's the number we're after!

If there's no frame loss during the Controller Failover Time, it can be deemed negligible ๐Ÿ’…๐ŸŒธ (no drama, no problem, iconic).

A.7.2. Network Re-provisioning Time ๐Ÿ‘‘

Procedure:

Test Traffic  Test Traffic   Network Devices     OpenFlow       SDN
Generator TP1 Generator TP2                     Controller   Application
  |             |                |                      |              |
  |             |G-ARP (D1)      |                      |              |
  |             |--------------->|                      |              |
  |             |                |                      |              |
  |             |                |OFPT_PACKET_IN(D1)    |              |
  |             |                |--------------------->|              |
  |             |G-ARP (S1)      |                      |              |
  |----------------------------->|                      |              |
  |             |                |                      |              |
  |             |                |OFPT_PACKET_IN(S1)    |              |
  |             |                |--------------------->|              |
  |             |                |                      |              |
  |Traffic (S1,D1,Seq. no (1..n))|                      |              |
  |----------------------------->|                      |              |
  |             |                |                      |              |
  |             |                |OFPT_PACKET_IN(S1,D1) |              |
  |             |                |--------------------->|              |
  |             |                |                      |              |
  |             | Traffic (D1,S1,|                      |              |
  |             | Seq. no (1..n))|                      |              |
  |             |--------------->|                      |              |
  |             |                |                      |              |
  |             |                |OFPT_PACKET_IN(D1,S1) |              |
  |             |                |--------------------->|              |
  |             |                |                      |              |
  |             |                |FLOW_MOD(D1)          |              |
  |             |                |<---------------------|              |
  |             |                |                      |              |
  |             |                |FLOW_MOD(S1)          |              |
  |             |                |<---------------------|              |
  |             |                |                      |              |
  |             | Traffic (S1,D1,|                      |              |
  |             |     Seq. no(1))|                      |              |
  |             |<---------------|                      |              |
  |             |                |                      |              |
  |             | Traffic (S1,D1,|                      |              |
  |             |     Seq. no(2))|                      |              |
  |             |<---------------|                      |              |
  |             |                |                      |              |
  |             |                |                      |              |
  |    Traffic (D1,S1,Seq. no(1))|                      |              |
  |<-----------------------------|                      |              |
  |             |                |                      |              |
  |    Traffic (D1,S1,Seq. no(2))|                      |              |
  |<-----------------------------|                      |              |
  |             |                |                      |              |
  |    Traffic (D1,S1,Seq. no(x))|                      |              |
  |<-----------------------------|                      |              |
  |             |                |                      |              |
  |             | Traffic (S1,D1,|                      |              |
  |             |     Seq. no(x))|                      |              |
  |             |<---------------|                      |              |
  |             |                |                      |              |
  |             |                |                      |              |
  |             |                |                      |  <Bring down |
  |             |                |                      | the switch in|
  |             |                |                      |    the active|
  |             |                |                      | traffic path>|
  |             |                |                      |              |
  |             |                |PORT_STATUS(Sa)       |              |
  |             |                |--------------------->|              |
  |             |                |                      |              |
  |             | Traffic (S1,D1,|                      |              |
  |             | Seq. no(n - 1))|                      |              |
  |             |  X<------------|                      |              |
  |             |                |                      |              |
  |Traffic (D1,S1,Seq. no(n - 1))|                      |              |
  |    X<------------------------|                      |              |
  |             |                |                      |              |
  |             |                |                      |              |
  |             |                |FLOW_MOD(D1)          |              |
  |             |                |<---------------------|              |
  |             |                |                      |              |
  |             |                |FLOW_MOD(S1)          |              |
  |             |                |<---------------------|              |
  |             |                |                      |              |
  |    Traffic (D1,S1,Seq. no(n))|                      |              |
  |<-----------------------------|                      |              |
  |             |                |                      |              |
  |             | Traffic (S1,D1,|                      |              |
  |             |     Seq. no(n))|                      |              |
  |             |<---------------|                      |              |
  |             |                |                      |              |
  |             |                |                      |<Stop the test|
  |             |                |                      |  after recv. |
  |             |                |                      |  traffic upon|
  |             |                |                      |   failover>  |

Legend:

G-ARP: Gratuitous ARP message Seq. no: Sequence number Sa: Neighbor switch of the switch that was brought down

Discussion:

So here's the vibe: the time difference between the last valid frame received before the traffic loss (packet with sequence number x) and the first frame received after the traffic loss (packet with sequence number n) = the Network Re-provisioning Time ๐ŸŒˆ๐Ÿ’œ

โš ๏ธ Bestie, this one's picky! The trial is valid only when the controller provisions the alternate path upon network failure. No controller doing the work = no valid trial ๐Ÿ™ˆ

Acknowledgments โœจ

The authors would like to thank the following individuals for providing their valuable comments regarding the earlier draft versions of this document: Al Morton (AT&T), Sandeep Gangadharan (HP), M. Georgescu (NAIST), Andrew McGregor (Google), Scott Bradner, Jay Karthik (Cisco), Ramki Krishnan (VMware), Boris Khasanov (Huawei), and Brian Castelli (Spirent) ๐Ÿซถ๐Ÿ’–

Authors' Addresses โœจ

Okay bestie, time to meet the squad behind this RFC ๐Ÿ’– Here are the five authors and where you can find them ๐Ÿฆ‹

Bhuvaneswaran Vengainathan ๐ŸŒธ Veryx Technologies Inc. 1 International Plaza, Suite 550 Philadelphia, PA 19113 United States of America

Email: bhuvaneswaran.vengainathan@veryxtech.com

Anton Basil ๐ŸŽ€ Veryx Technologies Inc. 1 International Plaza, Suite 550 Philadelphia, PA 19113 United States of America

Email: anton.basil@veryxtech.com

Mark Tassinari ๐Ÿงš Hewlett Packard Enterprise 8000 Foothills Blvd. Roseville, CA 95747 United States of America

Email: mark.tassinari@hpe.com

Vishwas Manral ๐Ÿ’œ NanoSec Co 3350 Thomas Rd. Santa Clara, CA 95054 United States of America

Email: vishwas.manral@gmail.com

Sarah Banks ๐Ÿ‘‘ VSS Monitoring 930 De Guigne Drive Sunnyvale, CA 94085 United States of America

Email: sbanks@encrypted.net

That's the whole RFC, bestie! ๐ŸŒˆโœจ Five authors, one spec, zero cap ๐Ÿ’…

๐Ÿ“ฆ where this page comes from