Skip to content

NAME

xlso - generic transport-agnostic LTP link service output task

SYNOPSIS

xlso transport_endpoint_spec remote_engine_nbr

DESCRIPTION

xlso is a background "daemon" task that extracts LTP segments from the queue of segments bound for the indicated remote LTP engine and hands each one to a swappable transport backend. The transport seam (declared in xlsa.h, with five xport_* functions) lets a single output-daemon skeleton drive any byte-oriented or datagram lower layer – a UART, a SpaceWire link, an FPGA FIFO, a shared-memory ring, or any other medium – without changes to the engine coupling itself.

transport_endpoint_spec is parsed by the backend. The reference shared-memory backend (xport_shm) accepts shm:_name_ and uses /xlsa._name_ as the underlying POSIX shared-memory object name; the length-framed byte-stream backend (xport_serial) accepts serial:_/dev/path_. Backend selection is a build-time option (–with-xlsa-backend); see the in-tree DESIGN.md for details.

remote_engine_nbr is the LTP engine number of the peer.

Each "span" of LTP data interchange between the local LTP engine and a neighboring LTP engine requires its own link service output task, such as xlso. All link service output tasks are spawned automatically by ltpadmin in response to the 's' command that starts operation of the LTP protocol, and they are all terminated by ltpadmin in response to an 'x' (STOP) command.

EXIT STATUS

  • "0"

    xlso terminated normally, for reasons noted in the ion.log file. If this termination was not commanded, investigate and solve the problem identified in the log file and use ltpadmin to restart xlso.

  • "1"

    xlso terminated abnormally, for reasons noted in the ion.log file. Investigate and solve the problem identified in the log file, then use ltpadmin to restart xlso.

FILES

No configuration files are needed. The selected transport backend may consume environment variables for impairment/tuning knobs; see the ENVIRONMENT section below for the reference shared-memory backend.

ENVIRONMENT

When built with the reference shared-memory backend, xlso honors the following environment variables (all optional):

  • XLSA_DELAY_US

    One-way propagation delay per segment, microseconds.

  • XLSA_JITTER_US

    Uniform +/- jitter added to XLSA_DELAY_US, microseconds.

  • XLSA_DROP_PPM

    Drop probability, parts per million.

  • XLSA_RATE_BPS

    Emulated radio rate, bytes/sec. Zero means unlimited.

  • XLSA_SLOTS

    Rate-buffer depth in segments. Default 1024. All processes attached to the same ring must use the same value.

These knobs model the emulator's radio, not the LTP engine. ION's own contact-plan localXmitRate remains a separate number set via ionadmin; see DESIGN.md for the rationale.

DIAGNOSTICS

The following diagnostics may be issued to the ion.log log file:

  • xlso can't initialize LTP.

    ltpadmin has not yet initialized LTP protocol operations.

  • No such engine in database.

    remote_engine_nbr is invalid, or the applicable span has not yet been added to the LTP database by ltpadmin.

  • LSO task is already started for this span.

    Redundant initiation of xlso.

  • xlso can't open transport.

    The selected backend failed to bring up the lower layer. Check the endpoint spec and the backend-specific errtext in the log.

  • Segment too big for xlso transport.

    A span's maxSegmentSize exceeds XLSA_BUFSZ. Lower the maxSegmentSize in ltpadmin, or rebuild after raising XLSA_BUFSZ in xlsa.h.

  • xlso failed sending segment.

    The backend returned a fatal error. Inspect errtext and restart xlso.

BUGS

Report bugs to <https://github.com/nasa-jpl/ION-DTN/issues>

SEE ALSO

ltpadmin(1), ltpmeter(1), xlsi(1), udplso(1)