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)