NDTS Gateway Installation
From Network for Advanced NMR
Gateway Installation
Prerequisites
- A Gateway UUID supplied by the NAN Repository administrator
- A Linux host (Ubuntu 20.04 or later recommended) reachable by all workstations
- TCP port 60195 open inbound from those workstations
Installation Steps
# Copy the .gz file to the gateway computer tar xf data-transport-gateway-<version>.tar.gz cd dtgateway-installer sudo ./install.sh # → You will be prompted only for the Gateway UUID
Firewall Note
Open port 60195 to each NDTS workstation; no other inbound ports are required.
Verifying the Service
sudo systemctl status data-transport-gateway # should show “active (running)” sudo systemctl start data-transport-gateway # start if not running
Updating the Gateway
# Run the same installer script from a newer package cd dtgateway-installer sudo ./install.sh # auto-detects an existing install; no prompts
Follow the directions above for verifying the service after updating the Gateway to ensure that the service is running.
Uninstalling the Gateway
sudo ./uninstall.sh # script is included inside every package
Rolling Back the Gateway
Obtain the desired older package and run its install.sh
.
Rolling back more than one or two versions is not recommended.
NDTS Gateway Configuration
Configuration Options
Option | Description | Default |
---|---|---|
log_file_path | Path to write the gateway log file | /opt/nandt-gateway/nan-gateway.log |
logging_level | Minimum severity written to the log (fatal → debug) | info |
logging_format | Python logging format string for each line |
%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s |
base_output_path | Directory used for incoming experiment data | /opt/nandt-gateway/data/received |
https_endpoint | HTTPS endpoint of the NDTS Receiver | https://receiver.usnan.org |
retry_limit | Attempts to forward each dataset to the Receiver | 5 |
retry_delay | Seconds to wait between retry attempts | 300 |
rsync_username | SSH/rsync account on the Receiver | nandt |
rsync_node | Node to which experiment files are rsync’d | receiver.usnan.org |
request_queue_size | Outstanding daemon connections accepted before new ones are rejected | 50 |
{ "log_file_path": "/opt/nandt-gateway/nan-gateway.log", "logging_level": "info", "logging_format": "%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s", "base_output_path": "/opt/nandt-gateway/data/received", "https_endpoint": "https://receiver.usnan.org", "retry_limit": 5, "retry_delay": 300, "rsync_username": "nandt", "rsync_node": "receiver.usnan.org", "request_queue_size": 50 }
Logging Levels
Level | Description |
---|---|
debug | Detailed diagnostic messages useful for troubleshooting |
info | Unusual or noteworthy events (recommended for production) |
warning | Unusual events that generally require no action |
error | Problems that must be addressed for normal operation |
fatal | Critical events after which the gateway shuts down |
NDTS Gateway Components
All files reside under /opt/nandt-gateway
unless noted. :contentReference[oaicite:1]{index=1}
main.py
– entry point for the Python service/etc/systemd/system/data-transport-gateway.service
– systemd unit filenan-gateway.log
– runtime log (path overridable vialog_file_path
)gateway_configuration.json
– configuration described abovedata/
received/
– transient storage for incoming experiment dataretransmitter.pid
– PID of the active retransmitter helperusers.dat
– current user / sample / project listuser_checksum.dat
– checksum that governs list refreshes
NDTS Operation
- Experiment transfer – Workstation daemons connect on TCP 60195, announce a dataset, and stream it to
received/
. Successful transfers spawn a **Transmitter** process that forwards the data to the receiver; on success the local copy is deleted. :contentReference[oaicite:2]{index=2} - Retransmit – At start-up and after each daemon heartbeat, a **Retransmitter** scans
received/
. If a dataset’s original retry window has expired, it launches a new Transmitter until delivery succeeds or the file is manually removed. - Heartbeat forwarding – Every daemon heartbeat is wrapped with the gateway UUID, local and UTC timestamps, then sent to the receiver by a short-lived **Heartbeat Transmitter**.
- User list propagation – Every 15 s the gateway requests an updated list from the receiver; if the checksum differs it saves the new list to
users.dat
and serves it to workstations on demand.
NDTS Logging
Logging level is controlled by the "logging_level"
key in gateway_configuration.json
.
Levels (high → low volume): fatal
, error
, warning
, info
, debug
.
Default is info
. The log file path defaults to /opt/nandt-gateway/nan-gateway.log
. :contentReference[oaicite:3]{index=3}
Example log excerpt:
2022-06-06 09:22:23,130 INFO main [61393]: Starting gateway retransmitter instance... 2022-06-06 09:22:23,132 INFO main [61393]: Starting gateway receiver network endpoint... 2022-06-06 09:23:12,829 INFO GatewayTransmitter [61512]: Heartbeat sent to https://receiver.usnan.org/heartbeat
:contentReference[oaicite:4]{index=4}