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¶
- Connect to all switches in the network (assumes there is a forwarding table constructed in all switches between orginator and the destination host).
- Write flows into the switches that will forward all SDNTrace messages to the controller by recognizing the special ETH_TYPE used.
- 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).
- Before a trace message arrives, at a port status change, retrieve all flow tables from all switches that are connected to the controller.
- Determine the destination MAC address for the to-be-traced packet from
flowspec
object. - 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.