Introduction

The LayGO Data Line Monitor (DLM) API is designed to facilitate transparent real-time and off-line monitoring of data communication as it takes place inside the LayGO protocol stack. This is typically useful for protocol discovery and for network configuration troubleshooting. The DLM API implements the core functionality for passing data from the stack to monitor client programs. Since the details of the monitor-stack communication are encapsulated by the API, a variety of specialized monitor programs can easily be written relying on the same underlying functionality. In addition, the DLM API contains routines for saving monitored traffic to file and reading it back into an application.

This manual describes the DLM API and how to write client applications. No source code modification of the LayGO application program is required to monitor it. The program simply needs to be run with a DLM enabled version of the protcol stack. See Turning on the Tap for details.

DLM Architecture

The LayGO DLM architecture uses a client-server model to allow both local and remote monitoring (see diagram below).

DLM Architecture
The LayGO DLM architecture.

The architecture has 3 parts:

A LayGO DLM server is the connection point for both taps and monitors. The server should already be running when the application and monitor programs are started. The server is responsible for authenticating monitors and relaying data from the data tap inside the stack to the registered monitor sessions. The current implementation uses TCP/IP for data transport so the API can function between arbitrary points on a network. In order to insure confidentiality during remote monitoring, the data is automatically encrypted when sent from the server to the monitor. (The server will typically run on the same machine as the data tap, so data is not encrypted between tap and server.) A single monitor program can run multiple monitoring sessions simultaneously, to one or more protocol stacks. A single data stream can also be sent to more than 1 monitor at the same time.