Efficient trace route. Adapt active probing as done by Facebook (Petr Lapukhov) to use iOAM:
Approach is similar to what we've done for iOAM ping in IOS - send and receive path will be recorded in the packet, and a flag will tell the destination node to flip source and destination IP addresses.
See also:
https://code.facebook.com/posts/1534350660228025/netnorad-troubleshooting-networks-via-end-to-end-probing/
https://www.nanog.org/sites/default/files/Lapukhov_Move_Fast_Unbreak.pdf
https://github.com/facebook/UdpPinger/
https://github.com/facebook/fbtracert
https://tools.ietf.org/html/draft-lapukhov-dataplane-probe-01
Design:
Packet Format to be followed:
IPv6 Header ---- > HBH (iOAM) ---> UDP ---> Probe data(Follows header format as in draft-lapukhov-dataplane-probe-01)
2 new VPP nodes are added:
udp_ping_process
This will accept UDP ping configurations required - Source IPv6 address, Destination IPv6 address, Source port range, Destination port range and interval for which probes need to be sent. For each combination of source/destination ports, probe packets are sent.
udp-ping-local
This node registers with ip6_local to receive every local IPv6 packet with next header as HBH. If the packet is a udp probe(checked matching probe markers in udp payload), then sends a probe reply back to Source node. If its a Probe Reply, then analyses the reply and stores per flow data - Path map of packet traversal, Number of packets sent/received, Number of lost packets.
Refer to attached doc for more details.