To help analyze taprio scheduling characteristics, we've developed a custom tool called 'dump-classifier'. dump-classifier =============== dump-classifier aims to ease the test/verification of how well an implementation runs 802.1Qbv-like schedules. How to compile -------------- * Dependencies: - libpcap-dev Just running 'make' should work, if all the dependencies are met: $ make How to run ---------- $ ./dump-classifier -s <BATCH FILE> -f <FILTER FILE> -d <DUMP FILE> <BATCH FILE> is a text file containg a batch file intended for use with 'tc -batch', this allows dump-classifier to use the same file used for configuring the qdiscs. Example: -----<cut qdisc replace dev enp3s0 parent root handle 100 taprio \ num_tc 3 \ map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \ queues 1@0 1@1 2@2 \ base-time 1536883100000000000 \ sched-entry S 01 300000 \ sched-entry S 02 300000 \ sched-entry S 04 400000 \ clockid CLOCK_TAI qdisc replace dev enp3s0 parent 100:1 etf \ offload delta 300000 clockid CLOCK_TAI qdisc replace dev enp3s0 parent 100:2 etf clockid CLOCK_TAI \ delta 300000 offload deadline_mode ----->end <FILTER FILE> allows different traffic classes to be indentified in a pcap dump file, it has the following format is contains a traffic class name and a pcap expression on each line, any traffic class that doesn't have a filter associated will be classified as "BE" (best effort). The order is important, as the first line will match the first traffic class (bit 0) in the gatemask parameter (the second field of each line of the schedule file), the second line will match the second traffic class (bit 1), and so on. Example: -----<cut talker :: ether dst aa:aa:aa:aa:aa:aa ----->end <BASE TIME> an absolute time in nanoseconds where the schedule started, if that time is before the timestamp of the first packet in the <DUMP FILE>, the schedule will run until it reaches that timestamp, packets that have a timestamp before basetime will be ignored. <DUMP FILE> is a dump file captured via tcpdump, with timestamp precision in nanoseconds, so captured using something like this: $ tcpdump -j adapter_unsynced --time-stamp-precision=nanos -i enp2s0 -w dump.pcap