Connected Clients Information (TR-098)

Overview

TR-098 (InternetGatewayDevice data model) is a legacy specification that provides basic connected client information. While limited compared to TR-181, it remains relevant for older CPE devices that haven’t been upgraded to newer data models.

TR-098 provides the following client information:

  • Hostname: Client device name

  • MAC Address: Client hardware identifier

  • IP Address: Assigned IP address

  • Connection Type: Ethernet or WiFi (with band and channel)

  • Additional Support Information: Vendor-specific details

TR-098 Limitations

Key Limitations of TR-098:

  1. No Radio Band Parameter: Band must be inferred from channel number

  2. No Channel Width: Cannot determine 20/40/80 MHz bandwidth

  3. No 6 GHz Support: Assumed TR-098 devices don’t support WiFi 6E

  4. No Mesh Support: Mesh topology detection requires custom X_ vendor-specific objects

  5. No Signal Strength: RSSI not available in standard TR-098 parameters

Connection Type Detection Flow

Diagram

TR-098 Parameter Reference

Parameter Path Description Type Example Value

InternetGatewayDevice.LANDevice.{i}.Hosts.Host.{j}.MACAddress

MAC address of the connected client device.

string (MAC format)

"00:11:22:33:44:55"

InternetGatewayDevice.LANDevice.{i}.Hosts.Host.{j}.IPAddress

IP address assigned to the client.

string (IP format)

"192.168.1.100"

InternetGatewayDevice.LANDevice.{i}.Hosts.Host.{j}.HostName

Hostname of the client device (if available).

string

"Johns-iPhone"

InternetGatewayDevice.LANDevice.{i}.Hosts.Host.{j}.Layer2Interface

Reference to the layer 2 interface the host is connected to. Used to determine connection type.

string (path reference)

"InternetGatewayDevice.LANDevice.1.WLANConfiguration.1."

InternetGatewayDevice.LANDevice.{i}.Hosts.Host.{j}.InterfaceType

Fallback parameter indicating connection interface type.

string

"Ethernet", "WiFi", "802.11"

InternetGatewayDevice.LANDevice.{i}.WLANConfiguration.{j}.Channel

WiFi channel number. Used to determine radio band.

unsignedInt

6 (2.4GHz), 36 (5GHz)

InternetGatewayDevice.LANDevice.{i}.WLANConfiguration.{j}.AssociatedDevice.{k}.AssociatedDeviceMACAddress

MAC address of a device associated with this WiFi interface.

string (MAC format)

"00:11:22:33:44:55"

InternetGatewayDevice.LANDevice.{i}.LANEthernetInterfaceConfig.{j}.

Ethernet interface configuration path (used for Layer2Interface matching).

object path

"InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.1."

Radio Band Detection

Since TR-098 does not provide a direct radio band parameter, the band must be inferred from the channel number:

Channel to Band Mapping

Channel Range Radio Band Notes

1-14

2.4 GHz

Standard 2.4 GHz channels (channel 14 Japan only)

36-165

5 GHz

Includes UNII-1, UNII-2A, UNII-2C, UNII-3 bands

N/A

6 GHz

Not supported in TR-098 devices

Implementation Example

def get_radio_band_from_channel(channel):
    """Determine radio band from TR-098 channel number"""
    if channel is None:
        return None

    if 1 <= channel <= 14:
        return "2.4GHz"
    elif 36 <= channel <= 165:
        return "5GHz"
    else:
        return None  # Unknown or invalid channel

Common Channel Numbers

2.4 GHz Band:

Ch 1 Ch 6 Ch 11 Ch 2 Ch 3 Ch 4 Ch 5

2412 MHz

2437 MHz

2462 MHz

2417 MHz

2422 MHz

2427 MHz

2432 MHz

5 GHz Band:

Ch 36 Ch 40 Ch 44 Ch 48 Ch 149 Ch 153

5180 MHz

5200 MHz

5220 MHz

5240 MHz

5745 MHz

5765 MHz

Connection Type Detection Logic

Step 1: Check Layer2Interface

The Layer2Interface parameter provides the most reliable connection type information:

# Ethernet connection
Layer2Interface = "InternetGatewayDevice.LANDevice.1.LANEthernetInterfaceConfig.1."
# Result: Ethernet

# WiFi connection
Layer2Interface = "InternetGatewayDevice.LANDevice.1.WLANConfiguration.2."
# Result: WiFi (check WLANConfiguration.2.Channel for band)

Pattern Matching: - LANEthernetInterfaceConfig.% → Ethernet - WLANConfiguration.% → WiFi

Step 2: Check AssociatedDevice List (Fallback)

If Layer2Interface is empty or "Self", search WiFi AssociatedDevice lists:

# Check if host MAC appears in any WLANConfiguration AssociatedDevice list
Host.MACAddress = "00:11:22:33:44:55"

WLANConfiguration.1.AssociatedDevice.1.AssociatedDeviceMACAddress = "00:11:22:33:44:55"
# Match found → Host is connected via WiFi on WLANConfiguration.1

Step 3: Use InterfaceType (Final Fallback)

If both methods fail, use the InterfaceType parameter directly:

InterfaceType = "Ethernet"    → Ethernet connection
InterfaceType = "WiFi"        → WiFi connection
InterfaceType = "802.11"      → WiFi connection
InterfaceType = ""            → N/A (cannot determine)

Implementation Requirements

Extracting Client Information

# For each connected host
InternetGatewayDevice.LANDevice.1.Hosts.Host.1.MACAddress = "00:11:22:33:44:55"
InternetGatewayDevice.LANDevice.1.Hosts.Host.1.IPAddress = "192.168.1.100"
InternetGatewayDevice.LANDevice.1.Hosts.Host.1.HostName = "MyDevice"
InternetGatewayDevice.LANDevice.1.Hosts.Host.1.Layer2Interface = "InternetGatewayDevice.LANDevice.1.WLANConfiguration.1."
InternetGatewayDevice.LANDevice.1.Hosts.Host.1.InterfaceType = "WiFi"

# Get WiFi details from referenced WLANConfiguration
InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.Channel = 6
InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID = "MyNetwork"

Extracted Information: - MAC: 00:11:22:33:44:55 - IP: 192.168.1.100 - Hostname: MyDevice - Connection: WiFi - Band: 2.4 GHz (channel 6) - SSID: MyNetwork

WiFi Client with AssociatedDevice Lookup

# Host with empty Layer2Interface
InternetGatewayDevice.LANDevice.1.Hosts.Host.2.MACAddress = "AA:BB:CC:DD:EE:FF"
InternetGatewayDevice.LANDevice.1.Hosts.Host.2.IPAddress = "192.168.1.101"
InternetGatewayDevice.LANDevice.1.Hosts.Host.2.Layer2Interface = ""

# Search AssociatedDevice lists
InternetGatewayDevice.LANDevice.1.WLANConfiguration.2.AssociatedDevice.3.AssociatedDeviceMACAddress = "AA:BB:CC:DD:EE:FF"
# Found! Host is on WLANConfiguration.2

InternetGatewayDevice.LANDevice.1.WLANConfiguration.2.Channel = 36
# Band: 5 GHz

Mesh Topology Limitations

TR-098 does not support standard mesh topology detection.

Mesh network information (Controller/Satellite roles, backhaul type, topology relationships) is NOT available through standard TR-098 parameters.

Options for mesh detection on TR-098 devices:

  1. Custom X_ Objects: Vendors may implement proprietary parameters (e.g., X_VENDOR_MeshRole, X_VENDOR_BackhaulType)

  2. Upgrade to TR-181: Recommend device firmware upgrade to TR-181 data model

  3. External Detection: Use network discovery protocols or management system knowledge

  4. Manual Configuration: Configure mesh roles manually in management system

Vendor-Specific Extensions

Some vendors provide mesh information via custom parameters:

# Example vendor-specific mesh parameters (non-standard)
InternetGatewayDevice.X_VENDOR_Mesh.Enable = true
InternetGatewayDevice.X_VENDOR_Mesh.Role = "Controller"
InternetGatewayDevice.X_VENDOR_Mesh.BackhaulType = "WiFi"
InternetGatewayDevice.X_VENDOR_Mesh.ConnectedSatellites = 2

Note: These parameters vary by vendor and are not part of the TR-098 specification.

Comparison: TR-098 vs TR-181

Feature TR-098 TR-181

Host Information

Basic (MAC, IP, Hostname)

Extended (+ Active, AddressSource, DHCPClient)

Connection Type

Layer2Interface + fallbacks

Layer1Interface with explicit paths

Radio Band

Inferred from channel

Direct OperatingFrequencyBand parameter

Channel Width

Not available

CurrentOperatingChannelBandwidth

Signal Strength

Not available (standard)

SignalStrength in STA/AssociatedDevice

6 GHz Support

No

Yes

Mesh Topology

Custom X_ only

Full support (DataElements/MultiAP)

Common Issues and Debugging

Layer2Interface Empty for WiFi Clients

Symptom: WiFi clients have empty Layer2Interface

Solution: Use AssociatedDevice lookup as fallback

# Search all WLANConfiguration AssociatedDevice lists
for each WLANConfiguration:
    for each AssociatedDevice:
        if AssociatedDeviceMACAddress == Host.MACAddress:
            return "WiFi", WLANConfiguration.Channel

Unknown Channel Values

Symptom: Channel value doesn’t map to known band

Cause: Non-standard channel or DFS channel

Solution: Expand channel range or return "Unknown"

def get_radio_band_extended(channel):
    if 1 <= channel <= 14:
        return "2.4GHz"
    elif 32 <= channel <= 177:  # Extended 5 GHz range
        return "5GHz"
    else:
        return "Unknown"

InterfaceType Values Vary by Vendor

Symptom: Different devices return different InterfaceType values

Solution: Normalize common variations

def normalize_interface_type(interface_type):
    if interface_type is None or interface_type == "":
        return None

    lower = interface_type.lower()
    if "ethernet" in lower or "eth" in lower:
        return "Ethernet"
    elif "wifi" in lower or "wlan" in lower or "802.11" in lower:
        return "WiFi"
    else:
        return interface_type  # Return as-is