Implementation of SDNTrace Protocol

This is a work in progress with a demo implementation to illustrate ideas and expectations on a tracing tool for SDN deployments.

We have implemented this current work-in-progress version as a northbound application on RYU. We have tested and demonstrated our implementation during the GENI Engineering Conference 23, GEC23.

Algorithm of SDNTrace Protocol Demonstration

  1. Connect to all switches in the network (assumes there is a forwarding table constructed in all switches between orginator and the destination host).
  2. Write flows into the switches that will forward all SDNTrace messages to the controller by recognizing the special ETH_TYPE used.
  3. Write corresponding forwarding flow rules into the switches for the paths to be followed in the demonstration (i.e., the tcp and udp network packet paths).
  4. Before a trace message arrives, at a port status change, retrieve all flow tables from all switches that are connected to the controller.
  5. Determine the destination MAC address for the to-be-traced packet from flowspec object.
  6. Determine the type of the SDNTrace message: request or reply
    • If directly attached and trace type is request start TraceReply message construction.
    • If not directly attached and trace message type is reply: retrieve and append the hop Object ID (i.e., DPID) to the trace objects, compose the trace request packet and send back with the forwarding information to the switch.
    • If the message is a reply, forward the reply message on through the ingress port this message came from originally based on information retrieved from the existing Hop Object in the reply message.