Sniffer distributed architecture: Difference between revisions
(Fix: Replace non-existent Note/Warning templates with plain text) |
(Update to modern Client-Server architecture with packetbuffer_sender, mark mirror_destination as legacy) |
||
| Line 1: | Line 1: | ||
{{DISPLAYTITLE:Distributed Architecture: Client-Server | {{DISPLAYTITLE:Distributed Architecture: Client-Server Mode}} | ||
This guide explains how to deploy multiple VoIPmonitor sensors in a distributed architecture. | This guide explains how to deploy multiple VoIPmonitor sensors in a distributed architecture using the modern Client-Server mode. | ||
== Overview == | == Overview == | ||
VoIPmonitor | VoIPmonitor v20+ uses a '''Client-Server architecture''' for distributed deployments. Remote sensors connect to a central server via encrypted TCP channel. | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Mode !! What is sent !! Use case | ! Mode !! What is sent !! Processing location !! Use case | ||
|- | |- | ||
| ''' | | '''Local Processing''' || CDRs only || Remote sensor || Multiple sites, low bandwidth | ||
|- | |- | ||
| '''Packet Mirroring''' || Raw packets || Central analysis, | | '''Packet Mirroring''' || Raw packets || Central server || Centralized analysis, low-resource remotes | ||
|} | |} | ||
The mode is controlled by a single option: <code>packetbuffer_sender</code> | |||
For comprehensive deployment options including on-host vs dedicated sensors, traffic forwarding methods (SPAN, GRE, TZSP, VXLAN), and NFS/SSHFS alternatives, see [[Sniffing_modes|VoIPmonitor Deployment & Topology Guide]]. | |||
== Client-Server Mode == | |||
=== Architecture === | |||
<kroki lang="plantuml"> | <kroki lang="plantuml"> | ||
| Line 31: | Line 33: | ||
} | } | ||
rectangle "Sensor A" as A | rectangle "Remote Sensor A" as A | ||
rectangle "Sensor B" as B | rectangle "Remote Sensor B" as B | ||
rectangle "Central Server" as S | rectangle "Central Server" as S | ||
database "MySQL" as DB | database "MySQL" as DB | ||
A -down-> S : | A -down-> S : encrypted TCP/60024 | ||
B -down-> S : | B -down-> S : encrypted TCP/60024 | ||
S -right-> DB | S -right-> DB : CDRs | ||
note bottom of | note bottom of S | ||
note | packetbuffer_sender=no → receives CDRs | ||
packetbuffer_sender=yes → receives raw packets | |||
end note | |||
@enduml | @enduml | ||
</kroki> | </kroki> | ||
| Line 47: | Line 51: | ||
=== Configuration === | === Configuration === | ||
''' | '''Remote Sensor (client):''' | ||
<syntaxhighlight lang="ini"> | <syntaxhighlight lang="ini"> | ||
server_destination = central.server.ip | id_sensor = 2 # unique per sensor | ||
server_destination = central.server.ip | |||
server_destination_port = 60024 | server_destination_port = 60024 | ||
server_password = | server_password = your_strong_password | ||
== Packet Mirroring | # 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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
''' | '''Central Server:''' | ||
<syntaxhighlight lang="ini"> | <syntaxhighlight lang="ini"> | ||
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 | |||
packetbuffer_sender = yes | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Local Processing vs Packet Mirroring == | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! !! Local Processing !! Packet Mirroring | ||
|- | |- | ||
| <code>packetbuffer_sender | | '''<code>packetbuffer_sender</code>''' || <code>no</code> (default) || <code>yes</code> | ||
|- | |- | ||
| | | '''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 | |||
== | == 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: | |||
# Go to '''GUI → Settings → Sensors''' | |||
# Sensors are identified by their <code>id_sensor</code> value | |||
== Legacy: Mirror Mode == | |||
'''Note:''' The older <code>mirror_destination</code>/<code>mirror_bind</code> options still exist but the modern Client-Server approach with <code>packetbuffer_sender=yes</code> is preferred as it provides encryption and simpler management. | |||
== Limitations == | == Limitations == | ||
* <code> | * All sensors must use the same <code>server_password</code> | ||
* A single sniffer cannot be both server and client simultaneously | |||
* | * Each sensor requires a unique <code>id_sensor</code> (< 65536) | ||
* Time synchronization (NTP) is critical for correlating calls across sensors | |||
== AI Summary for RAG == | == AI Summary for RAG == | ||
'''Summary:''' VoIPmonitor | '''Summary:''' VoIPmonitor v20+ uses Client-Server architecture for distributed deployments. Remote sensors connect to a central server via encrypted TCP (port 60024). Two modes are available: Local Processing (<code>packetbuffer_sender=no</code>) where sensors analyze packets locally and send only CDRs, or Packet Mirroring (<code>packetbuffer_sender=yes</code>) where sensors forward raw packets to the central server for processing. CDRs are always stored centrally; PCAPs are stored on remote sensors in Local Processing mode or centrally in Packet Mirroring mode. The legacy <code>mirror_destination</code>/<code>mirror_bind</code> approach is superseded by the modern Client-Server mode. | ||
'''Keywords:''' distributed architecture, client-server | '''Keywords:''' distributed architecture, client-server, server_destination, server_bind, packetbuffer_sender, local processing, packet mirroring, remote sensors, central server, multi-site, encrypted channel | ||
'''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? | ||
* What is the difference between | * What is the difference between Local Processing and Packet Mirroring? | ||
* Where are CDRs and PCAP files stored in distributed mode? | * Where are CDRs and PCAP files stored in distributed mode? | ||
* How do I | * What is packetbuffer_sender and when should I use it? | ||
* How do I configure remote sensors to send raw packets to central server? | |||
Revision as of 14:26, 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
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
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:
- Go to GUI → Settings → Sensors
- Sensors are identified by their
id_sensorvalue
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
AI Summary for RAG
Summary: VoIPmonitor v20+ uses Client-Server architecture for distributed deployments. Remote sensors connect to a central server via encrypted TCP (port 60024). Two modes are available: Local Processing (packetbuffer_sender=no) where sensors analyze packets locally and send only CDRs, or Packet Mirroring (packetbuffer_sender=yes) where sensors forward raw packets to the central server for processing. CDRs are always stored centrally; PCAPs are stored on remote sensors in Local Processing mode or centrally in Packet Mirroring mode. The legacy mirror_destination/mirror_bind approach is superseded by the modern Client-Server mode.
Keywords: distributed architecture, client-server, server_destination, server_bind, packetbuffer_sender, local processing, packet mirroring, remote sensors, central server, multi-site, encrypted channel
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 remote sensors to send raw packets to central server?