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 corresponding 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 previous 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 using 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 connections.  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 regardless.  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 receiver 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, defaults 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 kernelshark, 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 interpretation 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 duration 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 correctly.  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 transport, 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.  Optional, 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, defaults 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 messages  sent  to  the  ptp4l  process.   It  must  coincide  with  the
              transportSpecific  used  by  ptp4l,  otherwise  it  will  not respond to management
              messages.   Optional,  defaults  to  0.   Note  that  PTP  variants  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 specifies 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, several 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)