FMADIO systems are designed to support a fully self contained loopback generation, capture and verify test without any additional equipment. This allows at the manufacturing QA stage each and every system is tested to meet the line rate packet capture performance specification without loosing a single bit of data.
The system uses the FMADIO Packet Blaster ( https://docs.fmad.io/docs/features-packet-blaster ) with the FMADIO capinfos2 software utility to confirm the packet count and size post capture.
The test is configured by looping back the 2 physical capture ports onto itself, as shown in the diagram below.
In the above Diagram
Packet Blaster
All FMADIO FPGA network cards have a built in packet generator, this allows for full sustained line rate traffic generation at any packet size. As generation is performance on the FPGA maximum network hardware utilization can be achieved.
In addition to line rate generation, every 32bit word of a packets data has a sequentially incrementing integer. This allows at the verification stage to check the total packet count and also every byte and bit of the generated data is present in the expected order at the verification stage.
NOTE: Packet Blaster adds an 4 byte FCS to the end of each packet. Thus to generate 64B line rate packets a packet size of 60B is required.
Loopback Cable
A loopback cable and transceiver is plugged into the QSFP28 ports, typically SR4 with an MPO MMF cable.
Packet Capture
Utilizing the FMAIDO packet capture function, the generated packet stream is captured to disk.
Verification
Finally after the packet capture has finished, a software verification step is performed, ensuring total number of packets and payload matches the expected values.
Example 1 - 64B line rate
Frist example is a 64B line rate 2 × 100G line rate example
On the packet blaster side run the below. This generates a 5Bn count @ 64B line rates packet stream, it roughly 300TB worth of data.
sudo stream_generate_f100 --2x100 --blaster --pktcnt 5e9 --pktsize 60
Example output shown below
After the capture has completed run the following
sudo stream_cat --chunked <capture name> | capinfos2 -v --seq --with-fcs --pcap-portid
The above checks the captured data is in sequence and the total number of packets is correct. Example output of a clean no error run is shown below.
when completed
NOTE: The SeqError count should be 1 (for a single port) as the first seq number miss-match occurs with the first packet only.
Example 2 - 8192B line rate
This example tests the data rate instead of the packet rate of the system.
Packet generation command per below, this generates about 400TB of data
sudo stream_generate_f100 --2x100 --blaster --pktcnt 50e6 --pktsize 8192
The verification command once capture has finished
sudo stream_cat --chunked asdf_20250626_0701 | capinfos2 -v --seq --with-fcs --pcap-portid
Example correct output of the verification stage