Page 1
Ethernet Time-Sensitive Networking on Linux* for 3rd Gen Intel® Xeon® Processor Scalable Family, Codename Ice Lake-D 1700/2700 White Paper Revision 1.0 August 2022 Intel Confidential Document Number: ...
Page 2
Notice: This document contains information on products in the design phase of development. The information here is subject to change without notice. Do not finalize a design with this information. Int...
Page 3
Contents 1 Overview ............................................................................................. 5 1.1 Introduction to Time-Sensitive Networking ..................................... ...
Page 4
Revision History Revision Number Description Date 1.0 • Initial release of the document. August 2022 4 Document Number: 739015, Revision: 1.0 Intel Confidential
Page 5
1 Overview This document is designed to help engineers who are already familiar with working in a Linux* command-line environment. This document provides Linux command line guide to help user understa...
Page 6
1.2 Introduction to Linux* Ethernet Time- Sensitive Networking 1.2.1 TSN Reference Software Reference DOC: Intel® RDC Doc ID 616446 iotg_tsn_ref_sw: https://github.com/intel/iotg_tsn_ref_sw.git tsn-ta...
Page 7
1.3 Terminology Term Description AV Audio Video Credit-Based Shaper Gigabit Ethernet g PTP Generalized Precision Time Protocol Institute of Electrical and Electronics Engineers NIC Network Interface C...
Page 8
Detail CRB information as below: CPU: Genuine Intel® Atom C1130 processor System: Linux YOCTO Intel-Corei7-64 5.15.24-intel-ese-standard-lts NIC: Intel Corporation Intel® Ethernet Controller I225-LM (...
Page 9
1.4.2 Disable NTP Clock Sync • Disable NTP clock sync for boards connected to internet to prevent interrupt with clock sync between boards. Command: timedatectl set-ntp 0 • Check and confirm NTP is di...
Page 10
2 IEEE 802.1AS and System Time Synchronization 2.1 Objectives • Achieve time synchronization between Board A and B. • Synchronize each platform's system clock with PHC (PTP hardware clock) using hardw...
Page 11
2.4 Steps 2.4.1 Synchronize Board A and B’s PTP Hardware Clock Step 1: Run ptp4l on master board. Board A Command: ptp4l -i enp1s0 -m -H Step 2: Run ptp4l on slave board. Board B Command: ptp4l -i enp...
Page 12
3 IEEE 802.1Qav: Credit- Based Shaper 3.1 Objective Transmit UDP packets using a talker application, which specifies SO_PRIORITY, and limits the transfer rate using MQPRIO and CBS qdiscs. A listener r...
Page 13
Step 4: Setup 4 traffic classes mapping. Refer to MQPRIO. Board A Command: tc qdisc replace dev enp3s0 handle 100: parent root mqprio num_tc 4 map 0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 queues 1@0 1@1 1@2 1@...
Page 14
4 Time-Based Scheduling (TBS) 4.1 Objective Transmit a UDP packet precisely at 1ms intervals. The listener board shows the time between packets. 4.2 Reference This chapter uses the following tools: ...
Page 15
Step 3: Different platforms and network controllers may have different number of queues that support Earliest Transmit Time First (ETF). Follow the steps below to configure ETF on one queue on relevan...
Page 16
5 IEEE 802.1 Qbu – Frame Preemption 5.1 Objective Configure a single queue to use frame preemption (FPE) on two platforms. Note: FPE requires both platforms network interface to be FPE-capable to work...
Page 17
Example Output: Step 2: Setup TAPRIO and set Queue 2 – 3 to be the preemptible queue and Queue 0 - 1 to be express queue. BASE= $(date +%s%N) echo "$BASE" tc qdisc add dev <interface> ...
Page 18
6 IEEE 802.1 Qbv – Time Aware Shaper (TAS) 6.1 Objective Transmit 4 streams of iperf UDP traffic using TAPRIO qdisc to limit the bandwidth of each stream. A listener board captures the transmitted pac...
Page 19
Step 3: Setup TAPRIO qdisc. Start the schedule 5 seconds into the future. Refer to configuration in relevant platform setup section below: Board A Command: tc qdisc add dev enp1s0 parent root handle 1...
Page 20
Step 7: Since we cannot modify iperf3’s socket priority, use net_prio cgroups to control which hardware transmits queue each iperf3 instance is using. Board A Command: mkdir -p /sys/fs/cgroup/net_prio...
Page 21
6.4.2 Verifying Qbv Using Wireshark* Step 1: Use Wireshark* to analyze the pcap. 1) Add New Graph. 2) Insert Filter: A. “udp.dstport == 5100” B. “udp.dstport == 5101” C. “udp.dstport == 5102” D. “udp....