Provided by: isochron_0.9~rc4-1_amd64 bug

NAME

       isochron-send - Start an isochron test in the role of a sender

SYNOPSIS

       isochron send [OPTIONS]

DESCRIPTION

       This command sends test packets using the specified transport (plain Ethernet or UDP).

OPTIONS

       -h, --help
              prints the short help message and exits

       -i, --interface <IFNAME>
              specify the network interface on which packets will be sent

       -d, --dmac <MACADDRESS>
              specify the destination MAC address to be used for the test packets.  Should coincide with the MAC
              address  that  the  receiver listens for.  Can be either unicast or multicast.  Necessary only for
              the L2 transport (plain Ethernet).  Optional if the --client option is  also  specified,  case  in
              which the sender can directly query the receiver for the destination MAC address it listens for.

       -A, --smac <MACADDRESS>
              specify the source MAC address to be used for the test packets.  Optional, defaults to the network
              interface’s unicast address.  Necessary only for the L2 transport.

       -p, --priority <NUMBER>
              specify  the  SO_PRIORITY  (traffic class) to communicate to the kernel for test packets.  Used by
              qdiscs such as tc-mqprio or tc-taprio.  Optional, defaults to 0.

       -P, --stats-port <NUMBER>
              specify the TCP port on which the receiver program is listening for  incoming  connections.   This
              socket is used for management and statistics.  Optional, defaults to port 5000.

       -b, --base-time <TIME>
              specify the scheduled transmission time for the first packet.  This can be further shifted forward
              and  backwards  in time with the --shift-time argument.  This time can be in the past, and in that
              case it is automatically advanced by an integer number of cycles until it becomes larger than  the
              current time by at least one second.  The time base is CLOCK_TAI.  Optional, defaults to 0.

       -a, --advance-time <TIME>
              specify the amount in advance of the scheduled packet transmission time that isochron will wake up
              at.   Optional,  defaults to the cycle time minus the window size, so that the sender will wake up
              at the earliest possible moment and have the longest possible amount of  time  for  preparing  for
              transmission.

       -S, --shift-time <TIME>
              shift  the  base time by the specified amount of nanoseconds, either in the past or in the future.
              Useful when enqueuing packets into a NIC which uses a tc-taprio qdisc and  the  time  slot  corre‐
              sponding  to  the  applications’s  traffic class is not the first one.  When used in this way, the
              base time of the application can be specified as equal to the base time of the tc-taprio schedule,
              and the shift time can be specified as the length of all time slots prior to the one in which  the
              application should enqueue.  Optional, defaults to 0.

       -c, --cycle-time <TIME>
              specify the interval between consecutive wakeup times for the purpose of sending a packet.

       -w, --window-size <TIME>
              in  case  the  NIC uses a tc-taprio schedule, specify the duration in nanoseconds of the time slot
              corresponding to the application’s priority.  This will prevent isochron from waking up too  early
              and potentially enqueuing the packet prematurely in its time slot from the previous cycle.  With a
              correctly  configured window size, the wakeup time will be set no earlier than the end of the pre‐
              vious time slot, making this condition impossible (assuming proper system clock  synchronization).
              Optional, defaults to 0.

       -n, --num-frames <NUMBER>
              specify  the  number  of packets to send for this test.  Optional, if left unspecified the program
              will run indefinitely, but will not collect logs.

       -s, --frame-size <NUMBER>
              specify the size of test frames.  The size is counted from the first octet of the destination  MAC
              address until the last octet of data before the FCS.

       -T, --no-ts
              disable the process of collecting TX timestamps.

       -v, --vid <NUMBER>
              insert  a  VLAN  header with the specified VLAN ID in the test packets.  The VLAN PCP is set to be
              equal to the priority configured with --priority.  This results in lower overhead compared to  us‐
              ing  a  kernel  VLAN interface to insert the VLAN tag.  Optional, defaults to no VLAN header being
              inserted.

       -C, --client <IPADDRESS>
              specify the IPv4 or IPv6 address at which the receiver is listening for management/statistics con‐
              nections.  Optional, defaults to not attempting to connect to the receiver.   In  this  case,  the
              sender  operates in a limited mode where it does not collect logs or check for the receiver’s sync
              status or expected destination MAC address.  The receiver will also not  log  packets  unless  the
              sender connects to it.

       -q, --quiet
              when  not  connected  to the receiver’s management/statistics socket, the sender will, by default,
              print the packets and their TX timestamps, to standard output at the end of the test.  This option
              suppresses the print.  Optional, defaults to false.

       -e, --etype <NUMBER>
              specify the EtherType for test packets sent using the L2 transport.  Optional, defaults to 0xdead.

       -o, --omit-sync
              when set, the sender will not monitor the local (and optionally remote, if --client is used) ptp4l
              and phc2sys processes for synchronization status, and will proceed to send  test  packets  regard‐
              less.  Optional, defaults to false.

       -y, --omit-remote-sync
              when  set, will only monitor the sync status of the local station.  The assumption is that the re‐
              ceiver interface is implicitly synchronized (shares the same PHC as  the  sender  interface),  and
              therefore  no  ptp4l  instance  runs on it, so the sync status cannot be monitored.  Optional, de‐
              faults to false.

       -m, --tracemark
              when set, the sender will write to the kernel’s ftrace buffer in order to mark the moment when  it
              wakes  up  for  transmitting  a packet, and the moment after the packet has been enqueued into the
              kernel.  The option is useful for debugging  latency  issues  together  with  trace-cmd  and  ker‐
              nelshark,  since  the  packet’s  sequence  number  is logged, and therefore, latencies reported by
              isochron report can be quickly be associated with the kernel trace buffer.  Optional, defaults  to
              false.

       -Q, --taprio
              when  set, the sender will record this information to the output file.  This changes the interpre‐
              tation of the logged data, for example TX timestamps with tc-taprio are expected to be higher than
              the scheduled transmission time, otherwise they are expected to be lower.  The option is  expected
              to be set when enqueuing to a NIC where tc-taprio is used as the qdisc.

       -x, --txtime
              when  set,  the  sender will use the SO_TXTIME socket option when enqueuing packets to the kernel.
              This also changes the interpretation of logged data similar to --taprio.  The TX time requested by
              the sender is equal to the scheduled transmission time for the packet.  This option is expected to
              be set when enqueuing to a NIC where tc-etf is used as the qdisc.

       -D, --deadline
              when set, this sets the SOF_TXTIME_DEADLINE_MODE flag for the data socket.  This can only be  used
              together  with  --txtime.  This option changes the kernel’s interpretation of the TX time, in that
              it is no longer the PTP time at which the packet should be sent, but rather the latest  moment  in
              time at which the packet should be sent.

       -f, --sched-fifo
              when  set,  the  program requests the kernel to change its scheduling policy to SCHED_FIFO for the
              duration of the test.

       -r, --sched-rr
              when set, the program requests the kernel to change its scheduling policy to SCHED_RR for the  du‐
              ration of the test.

       -H, --sched-priority <NUMBER>
              when  either  --sched-fifo  or  --sched-rr  is used, the program requests the kernel to change its
              scheduling priority for the duration of the test.

       -M, --cpu-mask <NUMBER>
              a bit mask of CPUs on which the sender thread is allowed to be scheduled.  The  other  threads  of
              the  program  are  not  affected by this selection.  Optional, defaults to the CPU affinity of the
              isochron process.

       -O, --utc-tai-offset <NUMBER>
              the program uses the CLOCK_TAI time base for its timers and for all reported timestamps, and  this
              option specifies the correction in seconds to apply to software timestamps, which are taken by the
              kernel  in  the  CLOCK_REALTIME  (UTC)  time  base.  If this option is present, isochron will also
              change the kernel’s CLOCK_TAI offset to the specified value, to ensure that its timers  fire  cor‐
              rectly.   If  the option is absent, isochron queries the kernel’s CLOCK_TAI offset and attempts to
              use that.  If isochron can also query the UTC offset from ptp4l’s  TIME_PROPERTIES_DATA_SET  using
              management  messages,  it  does that and compares that offset to the kernel’s UTC offset.  The UTC
              offset reported by ptp4l has the highest priority, and if the application  detects  that  this  is
              different  from  the  kernel’s CLOCK_TAI offset, it changes the kernel offset to the value queried
              from ptp4l.

       -J, --ip-destination <IPADDRESS>
              this option specifies the IPv4 or IPv6 address of the receiver, which will be placed in  the  test
              packet  datagrams.   Mandatory  if the UDP transport is used.  Note that when using the UDP trans‐
              port, the destination IP address should have a static entry in the kernel’s IP neighbor table,  to
              avoid  unpredictable  latencies  caused by the kernel’s neighbor resolution process.  The isochron
              program does not have control over which interface will be used for sending the test  packets,  so
              the  user should ensure that the kernel’s routing table will select the correct interface for this
              destination IP address.

       -2, --l2
              this option specifies that the plain Ethernet transport should be used for the test packets.   Op‐
              tional, defaults to true.  Cannot be used together with --l4.

       -4, --l4
              this  option specifies that the UDP transport should be used for test packets.  Optional, defaults
              to false.  Cannot be used together with --l2.

       -W, --data-port <NUMBER>
              if the UDP transport is used, this option specifies the destination UDP  port  for  test  packets.
              Optional, defaults to 6000.

       -U, --unix-domain-socket <PATH>
              isochron  queries  ptp4l’s state by creating and sending PTP management messages over a local UNIX
              domain socket.  This option specifies the path of this socket in the  filesystem.   Optional,  de‐
              faults to /var/run/ptp4l.

       -N, --domain-number <NUMBER>
              this  option  provides the domainNumber value to be used when constructing PTP management messages
              sent to the ptp4l process.  It must coincide with the domainNumber used  by  ptp4l,  otherwise  it
              will not respond to management messages.  Optional, defaults to 0.

       -t, --transport-specific <NUMBER>
              this  option provides the transportSpecific value to be used when constructing PTP management mes‐
              sages sent to the ptp4l process.  It must coincide with the transportSpecific used by ptp4l,  oth‐
              erwise  it will not respond to management messages.  Optional, defaults to 0.  Note that PTP vari‐
              ants such as IEEE 802.1AS/gPTP require this value to be set to a different value such as 1.

       -X, --sync-threshold <TIME>
              when the program is configured to monitor the sync status of ptp4l and phc2sys, this option speci‐
              fies the positive threshold in nanoseconds by which the absolute offset reported by these external
              programs is qualified as sufficient to start the test.  Mandatory unless --omit-sync is specified.

       -R, --num-readings <NUMBER>
              isochron monitors the synchronization quality between the NIC’s PTP Hardware Clock (PHC)  and  the
              system  time by successively reading the system time, the PHC time and the system time again, sev‐
              eral times in a row, and picking the group of 3 time readouts that took the least amount  of  time
              overall.   This  option specifies how many readouts should be performed before picking the fastest
              one.  Optional, defaults to 5.

       -F, --output-file <PATH>
              save the packet timestamps to a file that can be queried at a later time  using  isochron  report.
              Defaults  to  “isochron.dat”.  This requires the --client option, since logging only TX timestamps
              is not supported.

EXAMPLES

       To start an isochron sender with PTP synchronization and a tc-taprio qdisc:

              ip link set eth0 up && ip addr add 192.168.100.1/24 dev eth0
              ptp4l -i eth0 -2 -P --step_threshold 0.00002 &
              phc2sys -a -rr --step_threshold 0.00002 &
              tc qdisc add dev eth0 root taprio num_tc 5 \
                  map 0 1 2 3 4 \
                  queues 1@0 1@1 1@2 1@3 1@4 \
                  base-time 0 \
                  sched-entry S 10  50000 \
                  sched-entry S 0f 450000 \
                  flags 2
              taskset $((1 << 0)) isochron send \
                  --cpu-mask $((1 << 1)) \
                  --interface eth0 \
                  --cycle-time 0.0005 \
                  --frame-size 64 \
                  --num-frames 1000000 \
                  --client 192.168.100.2 \
                  --quiet \
                  --sync-threshold 2000 \
                  --output-file isochron.dat \
                  --taprio \
                  --priority 4 \
                  --sched-rr \
                  --sched-priority 98 \
                  --window-size 50000

AUTHOR

       isochron was written by Vladimir Oltean <vladimir.oltean@nxp.com>

SEE ALSO

       isochron(8) isochron-rcv(8) isochron-report(1)

COMMENTS

       This man page was written using pandoc (http://pandoc.org/) by the same author.

                                                                                                isochron-send(8)