High data-rate UDP packets from a Teensy (4.1) microcontroller

Job ID: 32839624

Budget: $750 – $1,500 AUD

We are characterising a network for a real-time control system, and need a source of high rate random data that we can replicate many times to stress the system and generate reports on its performance.

This project involves creating a standalone C/C++ application that runs on a Teensy with an external Ethernet connection to generate a constant stream of 768 byte (data payload) UDP packets back to a central Linux control computer. The Linux machine will issue broadcast start/stop packets to the Teensy data source nodes, and the Teensy's must start/stop generating UDP packets accordingly. The code must be efficiently written, to generate a data rate per node of at least 72 Mbit/s, nearly saturating the 100Mbit/s Ethernet link.

The sketch illustrates the network communications.
* The Linux host issues a start (broadcast) packet, containing a byte representing "start" and a port number for the nodes to stream data back to.
* The node reads the packet, and begins generating 768 byte blocks of random data. As long as the data is "randomish", that's OK. Any simple random number generator is OK - as long as it generates 768 new bytes *per packet*
* The node then assembles a UDP datagram and transmits it back to the specified port.
* Datagrams are continuously generated at a rate of at least 72Mbit/s
* This continues until the host sends a "stop" broadcast packet.

We require the successful bidder/programmer to generate the C/C++ program for the Teensy, and the Linux scripts/test harness to demonstrate the operation of the system as per the above. You will require:

* A Teensy (v4.1),
* An Ethernet kit extension (for the Teensy),
* A Linux machine, and
* An Ethernet link between the two.