Sniffer distributed architecture: Difference between revisions

From VoIPmonitor.org
(Add compression (server_type_compress) and failover documentation, link to Sniffer_configuration, improve diagram, streamline AI Summary)
(Add Dashboard Statistics section - explains empty widgets for forwarding sensors and how to enable local statistics with packetbuffer_sender)
Line 131: Line 131:
* Central server must reach remote sensors on TCP/5029
* Central server must reach remote sensors on TCP/5029
* Remote sensors must reach central server on TCP/60024
* Remote sensors must reach central server on TCP/60024
== Dashboard Statistics ==
Dashboard widgets (SIP/RTP/REGISTER counts) are generated based on the <code>packetbuffer_sender</code> configuration:
{| class="wikitable"
|-
! Configuration !! Where statistics appear !! Explanation
|-
| '''<code>packetbuffer_sender = yes</code>''' (Packet Mirroring) || Central server only || The sending sensor only captures and forwards raw packets. The central server performs all processing and statistics generation. Check the dashboard context for the central server, not the forwarding probe.
|-
| '''<code>packetbuffer_sender = no</code>''' (Local Processing) || Both sensor and central server || Each sensor processes traffic locally and generates its own statistics before sending CDRs to the central server.
If you are using Packet Mirroring mode and see empty dashboard widgets for the forwarding sensor, this is expected behavior. The sender sensor does not create database records or statistics.
'''Enabling Local Statistics on Forwarding Sensors:'''
If you need local statistics on a sensor that was previously configured to forward packets:
<syntaxhighlight lang="ini">
# On the forwarding sensor
packetbuffer_sender = no
</syntaxhighlight>
This will disable packet forwarding and enable full local processing. Be aware that this increases CPU and RAM usage on the local sensor since it must perform full SIP/RTP analysis instead of just capturing and forwarding.


== Data Storage Summary ==
== Data Storage Summary ==
Line 160: Line 185:


== AI Summary for RAG ==
== AI Summary for RAG ==
'''Summary:''' VoIPmonitor v20+ uses Client-Server architecture for distributed deployments with encrypted TCP connections (port 60024, zstd compression). Two modes: Local Processing (<code>packetbuffer_sender=no</code>) analyzes locally and sends CDRs, Packet Mirroring (<code>packetbuffer_sender=yes</code>) forwards raw packets. Supports failover with multiple server IPs. CDRs stored centrally; PCAPs on sensors (Local Processing) or centrally (Packet Mirroring).
'''Summary:''' VoIPmonitor v20+ uses Client-Server architecture for distributed deployments with encrypted TCP connections (port 60024, zstd compression). Two modes: Local Processing (<code>packetbuffer_sender=no</code>) analyzes locally and sends CDRs, Packet Mirroring (<code>packetbuffer_sender=yes</code>) forwards raw packets. Dashboard widgets for SIP/RTP/REGISTER counts: with Packet Mirroring, statistics appear only on central server (sender has empty widgets); with Local Processing, statistics appear on both sensor and central server. To enable local statistics on a forwarding sensor, set <code>packetbuffer_sender=no</code> (increases CPU/RAM usage). Supports failover with multiple server IPs. CDRs stored centrally; PCAPs on sensors (Local Processing) or centrally (Packet Mirroring).
'''Keywords:''' distributed architecture, client-server, server_destination, server_bind, packetbuffer_sender, local processing, packet mirroring, remote sensors, failover, encrypted channel, zstd compression
'''Keywords:''' distributed architecture, client-server, server_destination, server_bind, packetbuffer_sender, local processing, packet mirroring, remote sensors, failover, encrypted channel, zstd compression, dashboard widgets, statistics, empty dashboard
'''Key Questions:'''
'''Key Questions:'''
* How do I connect multiple VoIPmonitor sensors to a central server?
* How do I connect multiple VoIPmonitor sensors to a central server?
Line 168: Line 193:
* What is packetbuffer_sender and when should I use it?
* What is packetbuffer_sender and when should I use it?
* How do I configure failover for remote sensors?
* How do I configure failover for remote sensors?
* Why are dashboard widgets (SIP/RTP/REGISTER counts) empty for a sensor configured to forward packets?
* How do I enable local statistics on a forwarding sensor?

Revision as of 23:09, 4 January 2026


This guide explains how to deploy multiple VoIPmonitor sensors in a distributed architecture using the modern Client-Server mode.

Overview

VoIPmonitor v20+ uses a Client-Server architecture for distributed deployments. Remote sensors connect to a central server via encrypted TCP channel.

Mode What is sent Processing location Use case
Local Processing CDRs only Remote sensor Multiple sites, low bandwidth
Packet Mirroring Raw packets Central server Centralized analysis, low-resource remotes

The mode is controlled by a single option: packetbuffer_sender

For comprehensive deployment options including on-host vs dedicated sensors, traffic forwarding methods (SPAN, GRE, TZSP, VXLAN), and NFS/SSHFS alternatives, see VoIPmonitor Deployment & Topology Guide.

Client-Server Mode

Architecture

Configuration

Remote Sensor (client):

id_sensor               = 2                    # unique per sensor
server_destination      = central.server.ip
server_destination_port = 60024
server_password         = your_strong_password

# Choose one:
packetbuffer_sender     = no     # Local Processing: analyze locally, send CDRs
# packetbuffer_sender   = yes    # Packet Mirroring: send raw packets

interface               = eth0
sipport                 = 5060
# No MySQL credentials needed on remote sensors

Central Server:

server_bind             = 0.0.0.0
server_bind_port        = 60024
server_password         = your_strong_password

mysqlhost               = localhost
mysqldb                 = voipmonitor
mysqluser               = voipmonitor
mysqlpassword           = db_password

# If receiving raw packets (packetbuffer_sender=yes on clients):
sipport                 = 5060
# ... other sniffer options

Connection Compression

The client-server channel supports compression to reduce bandwidth usage:

# On both client and server (default: zstd)
server_type_compress = zstd

Available options: zstd (default, recommended), gzip, lzo, none

High Availability (Failover)

Remote sensors can specify multiple central server IPs for automatic failover:

# Remote sensor configuration with failover
server_destination = 192.168.0.1, 192.168.0.2

If the primary server becomes unavailable, the sensor automatically connects to the next server in the list.

Local Processing vs Packet Mirroring

Local Processing Packet Mirroring
packetbuffer_sender no (default) yes
Packet analysis On remote sensor On central server
PCAP storage On remote sensor On central server
WAN bandwidth Low (CDRs only) High (full packets)
Remote CPU load Higher Minimal
Use case Standard multi-site Low-resource remotes

PCAP Access in Local Processing Mode

When using Local Processing, PCAPs are stored on remote sensors. The GUI retrieves them via the central server, which proxies requests to each sensor's management port (TCP/5029).

Firewall requirements:

  • Central server must reach remote sensors on TCP/5029
  • Remote sensors must reach central server on TCP/60024

Dashboard Statistics

Dashboard widgets (SIP/RTP/REGISTER counts) are generated based on the packetbuffer_sender configuration:

Configuration Where statistics appear Explanation
packetbuffer_sender = yes (Packet Mirroring) Central server only The sending sensor only captures and forwards raw packets. The central server performs all processing and statistics generation. Check the dashboard context for the central server, not the forwarding probe.
packetbuffer_sender = no (Local Processing) Both sensor and central server Each sensor processes traffic locally and generates its own statistics before sending CDRs to the central server.

If you are using Packet Mirroring mode and see empty dashboard widgets for the forwarding sensor, this is expected behavior. The sender sensor does not create database records or statistics.

Enabling Local Statistics on Forwarding Sensors:

If you need local statistics on a sensor that was previously configured to forward packets:

# On the forwarding sensor
packetbuffer_sender = no

This will disable packet forwarding and enable full local processing. Be aware that this increases CPU and RAM usage on the local sensor since it must perform full SIP/RTP analysis instead of just capturing and forwarding.

Data Storage Summary

  • CDRs: Always stored in MySQL on central server
  • PCAPs:
    • Local Processing → stored on each remote sensor
    • Packet Mirroring → stored on central server

GUI Visibility

Remote sensors appear automatically when connected. To customize names or configure additional settings:

  1. Go to GUI → Settings → Sensors
  2. Sensors are identified by their id_sensor value

Legacy: Mirror Mode

Note: The older mirror_destination/mirror_bind options still exist but the modern Client-Server approach with packetbuffer_sender=yes is preferred as it provides encryption and simpler management.

Limitations

  • All sensors must use the same server_password
  • A single sniffer cannot be both server and client simultaneously
  • Each sensor requires a unique id_sensor (< 65536)
  • Time synchronization (NTP) is critical for correlating calls across sensors
  • Maximum allowed time difference between client and server: 2 seconds (configurable via client_server_connect_maximum_time_diff_s)

For a complete reference of all client-server parameters, see Sniffer Configuration: Distributed Operation.

AI Summary for RAG

Summary: VoIPmonitor v20+ uses Client-Server architecture for distributed deployments with encrypted TCP connections (port 60024, zstd compression). Two modes: Local Processing (packetbuffer_sender=no) analyzes locally and sends CDRs, Packet Mirroring (packetbuffer_sender=yes) forwards raw packets. Dashboard widgets for SIP/RTP/REGISTER counts: with Packet Mirroring, statistics appear only on central server (sender has empty widgets); with Local Processing, statistics appear on both sensor and central server. To enable local statistics on a forwarding sensor, set packetbuffer_sender=no (increases CPU/RAM usage). Supports failover with multiple server IPs. CDRs stored centrally; PCAPs on sensors (Local Processing) or centrally (Packet Mirroring). Keywords: distributed architecture, client-server, server_destination, server_bind, packetbuffer_sender, local processing, packet mirroring, remote sensors, failover, encrypted channel, zstd compression, dashboard widgets, statistics, empty dashboard Key Questions:

  • How do I connect multiple VoIPmonitor sensors to a central server?
  • What is the difference between Local Processing and Packet Mirroring?
  • Where are CDRs and PCAP files stored in distributed mode?
  • What is packetbuffer_sender and when should I use it?
  • How do I configure failover for remote sensors?
  • Why are dashboard widgets (SIP/RTP/REGISTER counts) empty for a sensor configured to forward packets?
  • How do I enable local statistics on a forwarding sensor?