Welcome to Documentation for SDNTrace Protocol Design and Testing!

Demonstration setup for SDNTrace is composed of a topology of SDN devices, a controller, two end points that participate in the tracing of the path for individual flow definitions. Protocol Design section outlines problem statement, our motivation, design goals, and constraints. The Implementation of SDNTrace Protocol includes the algorithm and how the protocol has been implemented as a northbound application. Finally, GENI DEMO is where we explain the demonstration and the workflow of the experiment.



  1. To-be-traced packet: A data plane packet that represents a flow defined with L2-L7 header field(s) with possible path(s) to a destination host
  2. SDNTrace protocol: Message exchange mechanism and the associated message format designed to determine the path of a to-be-traced packet in a software-defined network
  3. NB App: The application that uses the RYU controller to run the SDNTrace protocol
  4. Originator (node): An end host that issues the trace request for a to-be-traced packet to a destination host
  5. Probe: An SDNTrace protocol packet, TraceRequest, that is sent by the originator node
  6. Hop Object ID: A preferred identification object for the nodes on the path of the to-be-traced packet from originator to destination node.

SDNTrace implementation in this repo is a northbound application (NB app) running on RYU controller. The originator node (probe is sent from this node) is running a packet generator that sends probe packets to the network while the NB app facilitates the creation of the reply packets with a hop object ID for each node on the path of the to-be-traced packet.

In the topology above, there are two paths carrying two different protocols. One is for UDP packets and another for TCP packet flow. This demonstration involves the identification of hop IDs as DPIDs of the OpenFlow switches on the path of each flow for tcp and udp protocols.

This document is divided into three parts:

  1. The protocol and its design decisions
  2. Implementation as a NB app on RYU controller
  3. The demonstration of its basic functionality on GENI testbed


Acknowledgment: This work was partially funded by National Science Foundation ACI grant award no. 1341019.

Disclaimer: Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.


Indices and tables