Napatech: Difference between revisions

From VoIPmonitor.org
(Add troubleshooting section for Napatech interfaces in DOWN state - covers interface status, libpcap verification, and rebuild instructions)
(Rewrite: consolidated structure, added quick reference table, streamlined config sections)
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Configuration & building ==
= Napatech Integration =
[[Category:Installation]]
[[Category:Configuration]]


= First Installation =
This guide covers building VoIPmonitor sniffer with Napatech SmartNIC support, configuration, and troubleshooting.


<kroki lang="mermaid">
%%{init: {'flowchart': {'nodeSpacing': 15, 'rankSpacing': 30}}}%%
flowchart LR
    A[Install Drivers] --> B[Build VoIPmonitor]
    B --> C[Configure]
    C --> D[Set systemd deps]
    D --> E[Start Service]
</kroki>


== Steps ==
== Prerequisites ==


* download latest Napatech drivers and untar it into e.g. /opt/napatech3
* Napatech drivers installed in <code>/opt/napatech3</code> (built per vendor documentation)
* build the driver
* Development libraries for compilation
* download the the sniffer's source
* Root access for driver operations


cd /usr/src
== Building VoIPmonitor with Napatech Support ==
git clone -b master https://github.com/voipmonitor/sniffer.git
    OR
git clone -b develop https://github.com/voipmonitor/sniffer.git
cd sniffer
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib


'''Note:''' The development branch is named <code>develop</code> (NOT "development"). Use <code>git checkout develop</code> to switch to it.
<syntaxhighlight lang="bash">
# Clone source and build
cd /usr/src
git clone -b develop https://github.com/voipmonitor/sniffer.git
cd sniffer


If you already have the repository cloned and want to switch to the develop branch:
# Configure with Napatech library paths
<pre>
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
cd /usr/src/sniffer
make
git fetch origin
git checkout develop
git pull
</pre>


Install all libraries that the configure needs.
# Verify linkage (MUST show /opt/napatech3/lib/libpcap.so.1)
ldd ./voipmonitor | grep pcap


* run make
# Install
* check it's built properly
cp ./voipmonitor /usr/local/sbin/voipmonitor
systemctl restart voipmonitor
</syntaxhighlight>


root@server:/usr/src/sniffer# ldd ./voipmonitor | grep pcap
{{Note|1=The development branch is named <code>develop</code> (not "development"). Use <code>git checkout develop</code> to switch to it.}}
libpcap.so.1 => /opt/napatech3/lib/libpcap.so.1 (0x00007fc0b69b0000)


* replace original binary in the /usr/local/sbin
== Upgrading ==
* run it


= Upgrade =
=== GUI Upgrade (v24.23+) ===


==The GUI way (from the sensor's version 24.23)==
Add to <code>/etc/voipmonitor.conf</code>:
<syntaxhighlight lang="ini">
upgrade_by_git = yes
git_folder = /usr/src/sniffer
configure_param = --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
</syntaxhighlight>


After restart, click '''UPGRADE''' in the GUI. The sniffer automatically performs: git pull → configure → make → install → restart.


Until sensor's version 24.23 was not possible to do the sensor's upgrade via 'upgrade_by_git' option because the configure script
=== Manual Upgrade ===
overwritten the adjusted Makefile and you built a binary with standard pcap libs (until you overwritten the orig libs). With 'configure_param' option you can adjust the Makefile creation for appropriate includes/libs


<syntaxhighlight lang="bash">
cd /usr/src/sniffer
git pull
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
make && make install
systemctl restart voipmonitor
</syntaxhighlight>


* set these options into voipmonitor.conf
== Configuration ==


upgrade_by_git = yes
=== VoIPmonitor Configuration ===
git_folder = /usr/src/sniffer
configure_param = --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib


* restart sniffer
In <code>/etc/voipmonitor.conf</code>:
* do the upgrade via clicking in the GUI
<syntaxhighlight lang="ini">
interface = napa0


The sniffer will perform (after click on UPGRADE in GUI) git pull,configure,make_clean,make, service voipmonitor stop, make install, service voipmonitor start.
# CRITICAL: BPF filter MUST be disabled - not compatible with Napatech NTPL
#filter = udp or (vlan and udp)
</syntaxhighlight>


{{Warning|1=The BPF <code>filter</code> option MUST be commented out when using Napatech. Use NTPL filtering instead (see [[#Traffic Filtering|Traffic Filtering]]).}}


==The manual way==
=== ntpcap.ini ===
cd /usr/src/sniffer
git checkout develop
git pull
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
make


* copy to the original directory and restart sensor
File: <code>/opt/napatech3/config/ntpcap.ini</code>
<syntaxhighlight lang="ini">
[Common]
Ntpl1 = "Assign[streamid=0;txport=0;txignore=true]=all"


[napa0]
StreamId = 0
Tx = 0
</syntaxhighlight>


= napatech drivers =
For older drivers, use:
<syntaxhighlight lang="ini">
[napa0]
Rx1="Assign[streamid=252;txport=0;txignore=true]=all"
Tx=0
</syntaxhighlight>


== Settings sample ==
=== ntservice.ini (Key Settings) ===


* in voipmonitor.conf
File: <code>/opt/napatech3/config/ntservice.ini</code>
interface = napa0


# filter option must be commented out !!! E.g.
Essential settings:
#filter = udp or (vlan and udp)
<syntaxhighlight lang="ini">
[System]
TimestampFormat = NATIVE_UNIX
TimestampMethod = EOF


* /opt/napatech3/config/ntpcap.ini
[Adapter0]
AdapterType = NT4E          # Match your card type
BusId = 00:07:00:00        # Match your PCI address
Profile = Capture
MaxFrameSize = 9018
</syntaxhighlight>


# Napatech default ntpcap.ini file
'''Time source configuration''' (to avoid 1970-01-01 timestamps):
[Common]
<syntaxhighlight lang="ini">
Ntpl1 = "Assign[streamid=0;txport=0;txignore=true]=all"
# Newer drivers:
timeSource = OS


[napa0 ]
# Older drivers (in [Adapter0] section):
StreamId = 0
OsTimeSyncFailover = ENABLE
Tx = 0
</syntaxhighlight>


* old version
=== Systemd Dependencies ===
[napa0]
Rx1="Assign[streamid=252;txport=0;txignore=true]=all"
Tx=0


* /opt/napatech3/config/ntservice.ini
VoIPmonitor must start AFTER Napatech drivers. Configure dependency:
<syntaxhighlight lang="bash">
systemctl edit voipmonitor
</syntaxhighlight>


[System]
Add:
TimestampFormat = NATIVE_UNIX
<syntaxhighlight lang="ini">
TimestampMethod = EOF
[Unit]
HostBufferWaitMethod = 0
After=ntservice.service
SDRAMFillLevelWarning = 0
Requires=ntservice.service
</syntaxhighlight>


For init.d systems, add to <code>/etc/init.d/voipmonitor</code> before binary execution:
<syntaxhighlight lang="bash">
/opt/napatech3/bin/ntstart.sh
sleep 60
</syntaxhighlight>


[logging]
See [[Systemd_for_voipmonitor_service_management#Dependency_Customization|systemd documentation]] for details.
LogMask = 0x07
LogToFile = 0
LogFileName = /tmp/Log3G_%s.log
LogBufferWrap = wrap


[Adapter0]
== Traffic Filtering ==
AdapterType = NT4E
BusId = 00:07:00:00
PacketDescriptor = NT
HostBuffersRx = [8,16,0]
HostBuffersTx = [8,16,0]
TimeSyncProtocol = NT
TimeSyncConnectorIn = Ext
TimeSyncConnectorOut = None
TimeSyncConnectorRepeat = None
TimeSyncTimeJumpThreshold = 1
TimeSyncTimeOffset = 0
MaxFrameSize = 9018
AltTPID = 0x8100
Profile = Capture
DiscardSize = 16
OsTimeSyncFailover = DISABLE


Timing source
To filter traffic on the Napatech card (hardware filtering), create an NTPL file.
In napatech where timestamp of packets is shifted to GMT and you want use system time instead:
GMT:
TimeSyncConnectorExt1 = PpsIn
System dependent:
TimeSyncConnectorExt1 = NttsIn


For new napatech drivers use following to set OS time for packets from napatech
Example <code>/opt/napatech3/myfilter.ntpl</code>:
TimesynConnectorExt1  = None
<syntaxhighlight lang="text">
TimeSyncReferencePrioroity =OSTime
delete = all


== Hints ==
# UDP port macros
=== service file for voipmonitor ===
DefineMacro("mUdpSrcPort", "Data[DynOffset=DynOffUDPFrame;Offset=0;DataType=ByteStr2]")
You need to add to voipmonitor's service file that napatech drivers (ntservice) needs to be started before the voipmonitor
DefineMacro("mUdpDestPort", "Data[DynOffset=DynOffUDPFrame;Offset=2;DataType=ByteStr2]")
[https://www.voipmonitor.org//doc/Systemd_for_voipmonitor_service_management#service_file_and_napatech_drivers by modifiyng the service file]


=== Filter traffic on Napatech card ===
# SIP filter (ports 5060, 5061)
If you want to filter a data directly in the Napatech card you can use this example as a starting point.
Assign[StreamId = 0] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
(many thanks to Distributel for the example)


Create a file e.g /opt/napatech3/myfilter.ntpl
# RTP filter (ports 10000-61743)
Assign[StreamId = 0] = (mUdpSrcPort == (0x2710..0xF12F))


# Start NTPL
# Deduplication
# Delete all existing filter
DeduplicationConfig[drop=duplicate] = GroupID == 0
delete = all
Define ckRecipe = CorrelationKey(Begin=StartOfFrame[0], End=EndOfFrame[0], DeduplicationGroupID=0)
Assign[StreamID=0; CorrelationKey=ckRecipe] = Port == 0
</syntaxhighlight>


# Setup UDP macros
Apply filter:
<syntaxhighlight lang="bash">
/opt/napatech3/bin/ntstart.sh -n myfilter.ntpl
</syntaxhighlight>


DefineMacro("mUdpSrcPort", "Data[DynOffset=DynOffUDPFrame;Offset=0;DataType=ByteStr2]")
== Troubleshooting ==
DefineMacro("mUdpDestPort", "Data[DynOffset=DynOffUDPFrame;Offset=2;DataType=ByteStr2]")


# Setup filters
=== Quick Reference ===
# The first line is the SIP filter. The second line is the RTP filter for our specific ports in HEX (10000-61743)


Assign[StreamId = 0] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
{| class="wikitable"
Assign[StreamId = 0] = (mUdpSrcPort == (0x2710..0xF12F))
! Problem !! Cause !! Solution
Assign[StreamId = 1] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
|-
Assign[StreamId = 1] = (mUdpSrcPort == (0x2710..0xF12F))
| Spool directories dated 1970-01-01 || Time source misconfigured || Set <code>timeSource = OS</code> in ntservice.ini
Assign[StreamId = 2] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
|-
Assign[StreamId = 2] = (mUdpSrcPort == (0x2710..0xF12F))
| No packets captured || Wrong libpcap linked || Verify <code>ldd voipmonitor</code> shows Napatech libpcap
Assign[StreamId = 3] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
|-
Assign[StreamId = 3] = (mUdpSrcPort == (0x2710..0xF12F))
| Sensor DOWN in GUI || ntservice not running || Start ntservice, add systemd dependency
# End NTPL
|-
| <code>RTE_ETH_MQ_TX_NONE</code> error || DPDK conflict || Set <code>#define HAVE_LIBDPDK 0</code> in config.h
|-
| <code>libpcap error no such device</code> || Driver not initialized || Add ntservice dependency, restart services
|}


# Enable Deduplication
=== Spool Directories with Date 1970-01-01 ===
DeduplicationConfig[drop=duplicate] = GroupID == 0
Define ckRecipe = CorrelationKey(Begin=StartOfFrame[0], End=EndOfFrame[0], DeduplicationGroupID=0)
Assign[StreamID=0,1,2,3; CorrelationKey=ckRecipe] = Port == 0,1,2,3


The Napatech card is providing Unix Epoch time instead of system time.


Start it with the command
<syntaxhighlight lang="bash">
# Fix in ntservice.ini (see Configuration section above)
# Then restart:
systemctl stop ntservice
systemctl start ntservice
systemctl restart voipmonitor


/opt/napatech3/bin/ntstart.sh -n myfilters.ntpl
# Verify:
ls -ltd /var/spool/voipmonitor/*
</syntaxhighlight>


=== Troubleshooting: Napatech Interfaces in DOWN State ===
=== Napatech Interfaces Not Capturing ===
If standard capture tools like <code>tcpdump</code> or <code>tshark</code> show no packets on Napatech interfaces, verify that the Napatech interfaces are not in a DOWN state.


;1. Check interface status:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Check if Napatech interfaces are UP
# Check interface status
ip link show napa0
ip link show napa0


# Check all Napatech interfaces
# Verify correct libpcap (MUST show /opt/napatech3/lib/libpcap.so.1)
ip link show | grep napa
ldd /usr/local/sbin/voipmonitor | grep pcap
 
# Restart drivers
systemctl stop voipmonitor
cd /opt/napatech3/bin/ && ./ntstop && ./ntstart
systemctl start voipmonitor
 
# Verify capture
tshark -i napa0 -Y "sip || rtp" -n -c 10
</syntaxhighlight>
</syntaxhighlight>
If the interfaces show a DOWN state instead of UP, continue with step 2.


;2. Verify Napatech drivers are loaded:
If libpcap shows system path instead of Napatech path, rebuild VoIPmonitor (see [[#Building VoIPmonitor with Napatech Support|Build section]]).
 
=== Sensor Shows as Down in GUI ===
 
Error: '''"The requested response from the sensor could not be retrieved"'''
 
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Check if ntpcap module is loaded
# Start ntservice
lsmod | grep ntpcap
systemctl start ntservice
 
# Check Napatech driver service status
systemctl status ntservice
systemctl status ntservice
</syntaxhighlight>
If the drivers are not loaded, start the service:
<syntaxhighlight lang="bash">systemctl start ntservice</syntaxhighlight>


;3. Check if custom libpcap is being used:
# Configure dependency (see Systemd Dependencies section)
The Napatech setup requires linking against a custom <code>libpcap</code> library provided by Napatech. Standard system libpcap will not work correctly with Napatech cards.
systemctl edit voipmonitor
# Add After= and Requires= for ntservice.service


<syntaxhighlight lang="bash">
# Reboot to apply
# Verify voipmonitor is linked against Napatech libpcap
reboot
ldd /usr/local/sbin/voipmonitor | grep pcap
</syntaxhighlight>
</syntaxhighlight>
Expected output should show something like:
<pre>
libpcap.so.1 => /opt/napatech3/lib/libpcap.so.1 (0x00007f00b69b0000)
</pre>


If it shows system libpcap (e.g., <code>/lib/x86_64-linux-gnu/libpcap.so.1</code>), you need to rebuild using the custom library.
{{Note|1=The <code>ntservice</code> must be running BEFORE <code>voipmonitor</code> starts. The systemd dependency configuration is critical.}}


;4. Rebuild with custom libpcap:
=== Compilation Errors (DPDK Conflict) ===
If voipmonitor is not using the Napatech libpcap, rebuild the sniffer:
 
If build fails with <code>RTE_ETH_MQ_TX_NONE was not declared</code>:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cd /usr/src/sniffer
# After running ./configure, edit config.h
git pull
# Change: #define HAVE_LIBDPDK 1
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
# To:    #define HAVE_LIBDPDK 0
 
make
make
make install
systemctl restart voipmonitor
</syntaxhighlight>
</syntaxhighlight>


After rebuilding, verify again with <code>ldd /usr/local/sbin/voipmonitor | grep pcap</code>.
== See Also ==


;5. Check ntpcap configuration:
* [[Sniffer_installation]] - General sniffer installation
Incorrect ntpcap configuration can prevent interfaces from coming up properly. Review <code>/opt/napatech3/config/ntpcap.ini</code>:
* [[DPDK]] - DPDK high-performance capture (alternative to Napatech)
* [[Systemd_for_voipmonitor_service_management]] - Service management details
* [[Scaling]] - Performance optimization
 
== AI Summary for RAG ==


<syntaxhighlight lang="bash">
'''Summary:''' Guide for building VoIPmonitor sniffer with Napatech SmartNIC support. Build process: clone source with <code>git clone -b develop</code>, configure with <code>--with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib</code>, and make. Verify build with <code>ldd voipmonitor | grep pcap</code> - must show Napatech libpcap path. For GUI upgrades (v24.23+), set <code>upgrade_by_git=yes</code> and <code>configure_param</code> in voipmonitor.conf. Configuration requires: <code>interface=napa0</code> in voipmonitor.conf (BPF filter must be disabled/commented), ntpcap.ini for stream assignment, ntservice.ini for adapter and time settings. Critical: set <code>timeSource=OS</code> in ntservice.ini to avoid 1970-01-01 timestamps. Systemd dependency on ntservice is mandatory - voipmonitor must start after ntservice. Troubleshooting covers: 1970-01-01 spool directories (time source), interfaces not capturing (wrong libpcap), sensor DOWN in GUI (ntservice not running), DPDK compilation errors (set HAVE_LIBDPDK=0).
cat /opt/napatech3/config/ntpcap.ini
</syntaxhighlight>


Ensure:
'''Keywords:''' Napatech, SmartNIC, high-performance capture, compilation, configure, upgrade_by_git, configure_param, ntpcap.ini, ntservice.ini, timeSource, 1970-01-01, NTPL filter, hardware filtering, libpcap, ntstop, ntstart, HAVE_LIBDPDK, systemd dependency, ntservice, sensor down, "The requested response from the sensor could not be retrieved"
* Stream IDs are properly assigned
* Interface names (e.g., <code>napa0</code>) match what you use in <code>voipmonitor.conf</code>


== AI Summary for RAG ==
'''Summary:''' Instructions for building VoIPmonitor sniffer with Napatech support. Clone with <code>git clone -b develop</code> or switch branch with <code>git checkout develop</code>, then configure with --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib and make. For GUI upgrades (v24.23+), set upgrade_by_git=yes and configure_param options. Includes ntpcap.ini, ntservice.ini config samples, NTPL filtering, and troubleshooting for Napatech interfaces in DOWN state (requires custom libpcap).
'''Keywords:''' Napatech, compilation, git checkout develop, configure, upgrade_by_git, configure_param, ntpcap.ini, ntservice.ini, NTPL filter, DOWN state, custom libpcap, interfaces, troubleshooting
'''Key Questions:'''
'''Key Questions:'''
* How do I compile VoIPmonitor with Napatech support?
* How do I compile VoIPmonitor with Napatech support?
* How do I switch to the develop branch?
* What configure options are needed for Napatech?
* What configure options are needed for Napatech?
* Napatech interfaces are in DOWN state, how do I fix it?
* How do I upgrade VoIPmonitor with Napatech via GUI?
* Why is tcpdump showing no packets on Napatech interfaces?
* Why are spool directories created with date 1970-01-01?
* How do I verify voipmonitor is using Napatech libpcap?
* How do I fix Napatech interfaces in DOWN state?
* VoIPmonitor not capturing calls with Napatech, how to fix?
* How do I restart Napatech drivers?
* How to fix RTE_ETH_MQ_TX_NONE compilation error?
* How to configure Napatech driver dependency in systemd?
* What does libpcap error no such device exists mean?
* Sensor shows as down in GUI with "The requested response from the sensor could not be retrieved"?
* How do I verify VoIPmonitor is using Napatech libpcap?
* How do I configure NTPL hardware filtering on Napatech?

Latest revision as of 16:48, 8 January 2026

Napatech Integration

This guide covers building VoIPmonitor sniffer with Napatech SmartNIC support, configuration, and troubleshooting.

Prerequisites

  • Napatech drivers installed in /opt/napatech3 (built per vendor documentation)
  • Development libraries for compilation
  • Root access for driver operations

Building VoIPmonitor with Napatech Support

# Clone source and build
cd /usr/src
git clone -b develop https://github.com/voipmonitor/sniffer.git
cd sniffer

# Configure with Napatech library paths
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
make

# Verify linkage (MUST show /opt/napatech3/lib/libpcap.so.1)
ldd ./voipmonitor | grep pcap

# Install
cp ./voipmonitor /usr/local/sbin/voipmonitor
systemctl restart voipmonitor

ℹ️ Note: The development branch is named develop (not "development"). Use git checkout develop to switch to it.

Upgrading

GUI Upgrade (v24.23+)

Add to /etc/voipmonitor.conf:

upgrade_by_git = yes
git_folder = /usr/src/sniffer
configure_param = --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib

After restart, click UPGRADE in the GUI. The sniffer automatically performs: git pull → configure → make → install → restart.

Manual Upgrade

cd /usr/src/sniffer
git pull
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
make && make install
systemctl restart voipmonitor

Configuration

VoIPmonitor Configuration

In /etc/voipmonitor.conf:

interface = napa0

# CRITICAL: BPF filter MUST be disabled - not compatible with Napatech NTPL
#filter = udp or (vlan and udp)

⚠️ Warning: The BPF filter option MUST be commented out when using Napatech. Use NTPL filtering instead (see Traffic Filtering).

ntpcap.ini

File: /opt/napatech3/config/ntpcap.ini

[Common]
Ntpl1 = "Assign[streamid=0;txport=0;txignore=true]=all"

[napa0]
StreamId = 0
Tx = 0

For older drivers, use:

[napa0]
Rx1="Assign[streamid=252;txport=0;txignore=true]=all"
Tx=0

ntservice.ini (Key Settings)

File: /opt/napatech3/config/ntservice.ini

Essential settings:

[System]
TimestampFormat = NATIVE_UNIX
TimestampMethod = EOF

[Adapter0]
AdapterType = NT4E          # Match your card type
BusId = 00:07:00:00         # Match your PCI address
Profile = Capture
MaxFrameSize = 9018

Time source configuration (to avoid 1970-01-01 timestamps):

# Newer drivers:
timeSource = OS

# Older drivers (in [Adapter0] section):
OsTimeSyncFailover = ENABLE

Systemd Dependencies

VoIPmonitor must start AFTER Napatech drivers. Configure dependency:

systemctl edit voipmonitor

Add:

[Unit]
After=ntservice.service
Requires=ntservice.service

For init.d systems, add to /etc/init.d/voipmonitor before binary execution:

/opt/napatech3/bin/ntstart.sh
sleep 60

See systemd documentation for details.

Traffic Filtering

To filter traffic on the Napatech card (hardware filtering), create an NTPL file.

Example /opt/napatech3/myfilter.ntpl:

delete = all

# UDP port macros
DefineMacro("mUdpSrcPort", "Data[DynOffset=DynOffUDPFrame;Offset=0;DataType=ByteStr2]")
DefineMacro("mUdpDestPort", "Data[DynOffset=DynOffUDPFrame;Offset=2;DataType=ByteStr2]")

# SIP filter (ports 5060, 5061)
Assign[StreamId = 0] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)

# RTP filter (ports 10000-61743)
Assign[StreamId = 0] = (mUdpSrcPort == (0x2710..0xF12F))

# Deduplication
DeduplicationConfig[drop=duplicate] = GroupID == 0
Define ckRecipe = CorrelationKey(Begin=StartOfFrame[0], End=EndOfFrame[0], DeduplicationGroupID=0)
Assign[StreamID=0; CorrelationKey=ckRecipe] = Port == 0

Apply filter:

/opt/napatech3/bin/ntstart.sh -n myfilter.ntpl

Troubleshooting

Quick Reference

Problem Cause Solution
Spool directories dated 1970-01-01 Time source misconfigured Set timeSource = OS in ntservice.ini
No packets captured Wrong libpcap linked Verify ldd voipmonitor shows Napatech libpcap
Sensor DOWN in GUI ntservice not running Start ntservice, add systemd dependency
RTE_ETH_MQ_TX_NONE error DPDK conflict Set #define HAVE_LIBDPDK 0 in config.h
libpcap error no such device Driver not initialized Add ntservice dependency, restart services

Spool Directories with Date 1970-01-01

The Napatech card is providing Unix Epoch time instead of system time.

# Fix in ntservice.ini (see Configuration section above)
# Then restart:
systemctl stop ntservice
systemctl start ntservice
systemctl restart voipmonitor

# Verify:
ls -ltd /var/spool/voipmonitor/*

Napatech Interfaces Not Capturing

# Check interface status
ip link show napa0

# Verify correct libpcap (MUST show /opt/napatech3/lib/libpcap.so.1)
ldd /usr/local/sbin/voipmonitor | grep pcap

# Restart drivers
systemctl stop voipmonitor
cd /opt/napatech3/bin/ && ./ntstop && ./ntstart
systemctl start voipmonitor

# Verify capture
tshark -i napa0 -Y "sip || rtp" -n -c 10

If libpcap shows system path instead of Napatech path, rebuild VoIPmonitor (see Build section).

Sensor Shows as Down in GUI

Error: "The requested response from the sensor could not be retrieved"

# Start ntservice
systemctl start ntservice
systemctl status ntservice

# Configure dependency (see Systemd Dependencies section)
systemctl edit voipmonitor
# Add After= and Requires= for ntservice.service

# Reboot to apply
reboot

ℹ️ Note: The ntservice must be running BEFORE voipmonitor starts. The systemd dependency configuration is critical.

Compilation Errors (DPDK Conflict)

If build fails with RTE_ETH_MQ_TX_NONE was not declared:

# After running ./configure, edit config.h
# Change: #define HAVE_LIBDPDK 1
# To:     #define HAVE_LIBDPDK 0

make

See Also

AI Summary for RAG

Summary: Guide for building VoIPmonitor sniffer with Napatech SmartNIC support. Build process: clone source with git clone -b develop, configure with --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib, and make. Verify build with ldd voipmonitor | grep pcap - must show Napatech libpcap path. For GUI upgrades (v24.23+), set upgrade_by_git=yes and configure_param in voipmonitor.conf. Configuration requires: interface=napa0 in voipmonitor.conf (BPF filter must be disabled/commented), ntpcap.ini for stream assignment, ntservice.ini for adapter and time settings. Critical: set timeSource=OS in ntservice.ini to avoid 1970-01-01 timestamps. Systemd dependency on ntservice is mandatory - voipmonitor must start after ntservice. Troubleshooting covers: 1970-01-01 spool directories (time source), interfaces not capturing (wrong libpcap), sensor DOWN in GUI (ntservice not running), DPDK compilation errors (set HAVE_LIBDPDK=0).

Keywords: Napatech, SmartNIC, high-performance capture, compilation, configure, upgrade_by_git, configure_param, ntpcap.ini, ntservice.ini, timeSource, 1970-01-01, NTPL filter, hardware filtering, libpcap, ntstop, ntstart, HAVE_LIBDPDK, systemd dependency, ntservice, sensor down, "The requested response from the sensor could not be retrieved"

Key Questions:

  • How do I compile VoIPmonitor with Napatech support?
  • What configure options are needed for Napatech?
  • How do I upgrade VoIPmonitor with Napatech via GUI?
  • Why are spool directories created with date 1970-01-01?
  • How do I fix Napatech interfaces in DOWN state?
  • VoIPmonitor not capturing calls with Napatech, how to fix?
  • How do I restart Napatech drivers?
  • How to fix RTE_ETH_MQ_TX_NONE compilation error?
  • How to configure Napatech driver dependency in systemd?
  • What does libpcap error no such device exists mean?
  • Sensor shows as down in GUI with "The requested response from the sensor could not be retrieved"?
  • How do I verify VoIPmonitor is using Napatech libpcap?
  • How do I configure NTPL hardware filtering on Napatech?