Skip to content

Commit 4a1daae

Browse files
committed
2025.04.0
1 parent 292469e commit 4a1daae

File tree

4 files changed

+68
-4
lines changed

4 files changed

+68
-4
lines changed

ChangeLog

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
2025.04.0 07.04.2025
2+
====================
3+
- Added support for applying multiple filters on individual interfaces - interface_libpcap_filter. See doc/voipmonitor.conf for detailed explanation. This option allows to overcome ~2.2M PPS on AWS or other virtualisations without using DPDK where software interrupts is the bottleneck [VS-1683]
4+
- DPDK: Added support for multiple RX queues. Parameter dpdk_nb_rxq now defaults to 2 - set it to 1 in case of issues.
5+
- server_destination parameter now accepts multiple IP addresses for failover (e.g., server_destination = 1.2.3.4, 5.6.7.8) [VS-1686].
6+
- Added support for MP3 audio format [VS-653].
7+
- Added parameters to configure jitter buffer properties: jitterbuffer_f1_jbsize, jitterbuffer_f1_resync_threshold, jitterbuffer_f2_jbsize, jitterbuffer_f2_resync_threshold, jitterbuffer_adapt_jbsize, jitterbuffer_adapt_resync_threshold, saveaudio_jitterbuffer_jbsize, saveaudio_jitterbuffer_resync_threshold [VS-1634]
8+
- Reduced frequency of logging the message: "packetbuffer: MEMORY IS FULL".
9+
- Added logging for asynchronous write queue length (tacQ).
10+
- Added source and destination IP addresses into RTCP graphs [VG-2957].
11+
- Removed length limitation for callid during merging [VS-1684].
12+
- Ensured maximum ID values from registration tables are read before starting interface data processing.
13+
- new options: sql_errors_log_file and sql_errors_skip.
14+
- Fixed potential crash in TLS when the cipher suite is not found.
15+
- Fixed potential conflict in the declaration of the strstr function [VS-1692].
16+
- Fixed memory leak occurring when the packet buffer block contains no valid packets (up to 20GB per week on some installations, present since version 2024.12) [VS-1691].
17+
- Fixed string limitation when opt_callidmerge_header is encrypted and exceeds 128 bytes.
18+
19+
120
2025.02.2 17.02.2025
221
====================
322
- fix crash when creating audiograph - adding an error message handler to jpeg creation so that exit cannot be called [VS-1654]

config/voipmonitor.conf

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,16 @@ mysqldb = voipmonitor
209209
# log all sql errors
210210
#sql_log_all_errors = no
211211

212+
# log sql errors to some specific file
213+
#sql_errors_log_file = /path/to/log
214+
215+
# skip specific sql errors
216+
#sql_errors_skip = 1054, 1136
217+
218+
#manager command is supported for sql_errors_skip:
219+
# for set: echo 'sql_errors_skip 1054,1136' | nc 127.0.0.1 5029
220+
# for reset: echo 'sql_errors_skip' | nc 127.0.0.1 5029
221+
212222

213223
######## SQL Queues Fine Tuning
214224
# The sniffer uses a dynamically generated stored procedure, which concatenates a number of messages to mitigate network latency limitations.
@@ -303,9 +313,38 @@ mysqldb = voipmonitor
303313
# To listen on both eth0 and eth1:
304314
#interface = eth0,eth1
305315

316+
# interface_libpcap_filter #
317+
# Defines custom libpcap filters per network interface, allowing traffic load distribution across multiple virtual
318+
# interfaces, each handled by separate processing threads in VoIPmonitor. This significantly improves packet
319+
# processing performance in high-traffic environments by parallelizing the capture and processing workload.
320+
# this is typically needed for AWS EC2 instances which has limits 2.2M packets per second per one libpcap
321+
# instance (in this case DPDK should be better choice).
322+
# whenever there is 100% si (software interrupts) in TOP when reading packets from the interface (which can be seen also by
323+
# simply running tcpdump) you can use interface_libpcap_filter to split the traffic
324+
# syntax:
325+
# Multiple lines or semicolon-separated (;) entries are supported:
326+
#interface_libpcap_filter = <interface> : <libpcap_filter_expression>
327+
328+
# When multiple filters are defined for the same physical interface using interface_libpcap_filter,
329+
# VoIPmonitor internally creates multiple libpcap handler instances. Each handler independently applies its own
330+
# filter and captures matched packets. However, libpcap itself does not create additional kernel threads per filter.
331+
# Instead, VoIPmonitor initiates multiple user-space threads, each calling pcap_loop separately, thereby parallelizing
332+
# packet reading and processing in user space. This approach helps distribute CPU load effectively across available cores,
333+
# maximizing the packet processing capacity.
334+
335+
#In this example, traffic on interface eth0 is divided into two separate capture streams, each with
336+
# its own libpcap filter and processing thread.
337+
338+
#interface_libpcap_filter = eth0 : port 5060
339+
#interface_libpcap_filter = eth0 : not port 5060
340+
341+
#or combined:
342+
#interface_libpcap_filter = eth0 : port 5060; eth0 : not port 5060
343+
344+
306345
# Enable this setting to 'yes' if you require Ethernet encapsulation while sniffing on the 'any' interface.
307346
# This is necessary only if you need to merge PCAP files with differing encapsulations. Default: no
308-
# convert_dlt_sll2en10 = no
347+
#convert_dlt_sll2en10 = no
309348

310349
# To listen on all interfaces:
311350
#interface = any
@@ -468,7 +507,8 @@ interface = eth0
468507

469508
# Client-side settings
470509
# The IP address and port of the server sensor the client will connect to.
471-
#server_destination =
510+
# multiple IP addresses can be provided for failover needs
511+
#server_destination = 192.168.0.1, 192.168.0.2
472512
#server_destination_port = 60024
473513

474514
# Password for client's sensor authentication
@@ -2052,6 +2092,11 @@ dscp = yes
20522092
#default reset time interval in seconds
20532093
#dpdk_timer_reset_interval = 60
20542094

2095+
# number of rx queues
2096+
# default 2
2097+
# for higher traffic increase it accordingly
2098+
#dpdk_nb_rxq = 2
2099+
20552100
# Enable/disable interrupts stats, default yes
20562101
# On virtuozzo containers is not possible and should be disabled - set to no
20572102
#interrupts_counters = yes

voipmonitor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1074,7 +1074,7 @@ int opt_dpdk_read_usleep_type = 0;
10741074
int opt_dpdk_worker_usleep_if_no_packet = 1;
10751075
int opt_dpdk_worker_usleep_type = 0;
10761076
int opt_dpdk_nb_rx = 4096;
1077-
int opt_dpdk_nb_rxq = 1;
1077+
int opt_dpdk_nb_rxq = 2;
10781078
bool opt_dpdk_nb_rxq_rss = true;
10791079
int opt_dpdk_nb_tx = 1024;
10801080
int opt_dpdk_nb_mbufs = 1024;

voipmonitor_define.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define VOIPMONITOR_DEFINE_H
33

44

5-
#define RTPSENSOR_VERSION "2025.03.0"
5+
#define RTPSENSOR_VERSION "2025.04.0"
66
#define RTPSENSOR_BUILD_NUMBER "local_build"
77
#define NAT
88

0 commit comments

Comments
 (0)