20  Link tuning

org.arl.unet.Services.LINK_TUNING

20.1 Overview

Underwater acoustic channels vary enormously with range, geometry and environment. A communication scheme (modulation, forward error correction, frame duration, bandwidth, etc.) that works well on one link may perform poorly on another. The LINK_TUNING service automates the selection of a good scheme for a given link.

The link tuner measures the quality of a link to a peer node by sending test frames and observing the resulting bit error rate, and then selects a physical-layer scheme that maximizes throughput while keeping errors acceptably low. Tuning to a peer is started with a LinkTuneReq (or the tune command); when tuning completes, the recommended scheme is reported as a LinkSchemeNtf. The chosen scheme can then be applied to the LINK (Chapter 18) and PHYSICAL (Chapter 17) services so that subsequent communication uses it. The default link tuner is accessed as tuner.

20.2 Messages

Agents providing this service honor the following requests:

  • LinkTuneReq – start tuning a link to a peer node

    Field Type Default Remarks
    to int -1 peer node address
  • LinkSchemeReq – set peer link scheme/power level, optionally with test frames

    Field Type Default Remarks
    powerLevel int
    schemeCode string
    test int 0
    to int -1

A LinkTuneReq is answered with an AGREE once tuning has started, or a REFUSE if tuning is already in progress or the request is invalid. Tuning then proceeds asynchronously, and its outcome is reported through notifications:

  • LinkSchemeNtf – recommended/changed link scheme (sent on tuning completion)

    Field Type Default Remarks
    powerLevel int
    schemeCode string
    to int 0
  • LinkPerformanceNtf – measured link performance

    Field Type Default Remarks
    bits int 0
    errors int[]
    powerLevel int
    rssi float[]
    schemeCode string
    to int 0

A LinkSchemeReq bypasses the tuning search and sets a peer’s link scheme and power level directly; if a number of test frames is requested, the resulting performance is measured and reported back as a LinkPerformanceNtf.

20.3 Parameters

  • policy :: String – tuning policy
  • schemeCode :: String – current scheme code
  • progress :: int (nullable) – tuning progress percentage
  • dataRate :: int – effective data rate of current scheme

20.4 Commands

  • tune – start link tuning

    Example:

    tune 74             // tune link to node 74
    

    A LinkSchemeNtf message is sent back to the shell when tuning is complete.

20.5 Examples

On an MF/HF node, tuning the link to a peer at address 74 is as simple as issuing a tune command. The transcript below is from a representative session on an MF modem (the exact scheme, power level and data rate depend on the channel):

> tune 74
OK

The tune command returns immediately once tuning has started. When tuning completes, a LinkSchemeNtf is delivered to the shell with the recommended scheme and power level:

LinkSchemeNtf:INFORM[to:74 schemeCode:3kFq2 powerLevel:-6]

You can monitor progress and inspect the resulting data rate while tuning:

> tuner.progress
100
> tuner.dataRate
642.0

20.6 Implementation

20.6.1 LinkTuner (tuner)

Class Services Capabilities Availability
LinkTuner LINK_TUNING commercial modems

The LINK_TUNING service is provided by the tuner agent, part of the modem firmware. It is loaded only on nodes operating at a carrier frequency of 24 kHz or above — currently the MF and HF bands; on lower-frequency nodes there is no tuner agent. The tuner and tune shell commands are added by the LinkTunerShellExt shell extension, which attaches to whichever agent advertises the LINK_TUNING service.

20.6.1.1 How it works

The tuner depends on the PHYSICAL (Chapter 17), BASEBAND (Chapter 27) and NODE_INFO (Chapter 14) services. When a LinkTuneReq (or the tune command) arrives, it sends a batch of test frames to the peer node (using a reserved protocol number shared with ECLink) and measures the resulting bit error rate and RSSI over a batch of frames. These measurements drive an OFDM tuning policy that searches the space of OFDM schemes for one that maximizes the effective data rate while keeping the bit error rate acceptably low, adjusting the transmit power level along the way. Once the policy converges, the chosen scheme is stored in the physical layer’s DATA channel scheme and reported back as a LinkSchemeNtf, so that the LINK and PHYSICAL services can use it for subsequent communication.

20.6.1.2 Parameters

In addition to the service-level parameters documented above, the tuner’s OFDM tuning policy exposes:

  • centerFrequency – center frequency (Hz)
  • frameDuration – target nominal frame duration (seconds)
  • maxBandwidth – maximum bandwidth (Hz)
  • maxDelaySpread – maximum delay spread (seconds)

20.6.1.3 Usage notes

  • The tuner is only loaded on MF/HF nodes; check that a tuner agent exists (agentForService(Services.LINK_TUNING)) before using the service.