Napatech: Difference between revisions

From VoIPmonitor.org
(Review: přidány kategorie, opraveno formátování kódu (pre->syntaxhighlight), použita šablona Tip)
(Rewrite: consolidated structure, added quick reference table, streamlined config sections)
 
(2 intermediate revisions by the same user not shown)
Line 5: Line 5:
This guide covers building VoIPmonitor sniffer with Napatech SmartNIC support, configuration, and troubleshooting.
This guide covers building VoIPmonitor sniffer with Napatech SmartNIC support, configuration, and troubleshooting.


== First Installation ==
<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>


=== Prerequisites ===
== Prerequisites ==
* Download latest Napatech drivers and untar into <code>/opt/napatech3</code>
* Build the Napatech driver according to vendor documentation
* Install required development libraries


=== Build Steps ===
* Napatech drivers installed in <code>/opt/napatech3</code> (built per vendor documentation)
* Development libraries for compilation
* Root access for driver operations
 
== Building VoIPmonitor with Napatech Support ==


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Clone the sniffer source
# Clone source and build
cd /usr/src
cd /usr/src
git clone -b develop https://github.com/voipmonitor/sniffer.git
git clone -b develop https://github.com/voipmonitor/sniffer.git
Line 22: Line 30:
# Configure with Napatech library paths
# Configure with Napatech library paths
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
# Install missing dependencies if configure reports errors, then run make
make
make
</syntaxhighlight>
'''Note:''' The development branch is named <code>develop</code> (NOT "development"). Use <code>git checkout develop</code> to switch to it.
If you already have the repository cloned and want to switch to the develop branch:
<syntaxhighlight lang="bash">
cd /usr/src/sniffer
git fetch origin
git checkout develop
git pull
</syntaxhighlight>
=== Verify Build ===


Check that voipmonitor is linked against Napatech's libpcap:
# Verify linkage (MUST show /opt/napatech3/lib/libpcap.so.1)
<syntaxhighlight lang="bash">
ldd ./voipmonitor | grep pcap
ldd ./voipmonitor | grep pcap
</syntaxhighlight>
Expected output:
<syntaxhighlight lang="text">
libpcap.so.1 => /opt/napatech3/lib/libpcap.so.1 (0x00007fc0b69b0000)
</syntaxhighlight>
=== Install and Run ===


<syntaxhighlight lang="bash">
# Install
# Replace original binary
cp ./voipmonitor /usr/local/sbin/voipmonitor
cp ./voipmonitor /usr/local/sbin/voipmonitor
# Restart the service
systemctl restart voipmonitor
systemctl restart voipmonitor
</syntaxhighlight>
</syntaxhighlight>


== Upgrade ==
{{Note|1=The development branch is named <code>develop</code> (not "development"). Use <code>git checkout develop</code> to switch to it.}}
 
== Upgrading ==


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


From sensor version 24.23, you can perform upgrades via the GUI using the <code>upgrade_by_git</code> option. The <code>configure_param</code> option ensures the Makefile is created with appropriate includes/libs.
Add to <code>/etc/voipmonitor.conf</code>:
 
Add these options to <code>/etc/voipmonitor.conf</code>:
<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
upgrade_by_git = yes
upgrade_by_git = yes
Line 72: Line 53:
</syntaxhighlight>
</syntaxhighlight>


After restarting the sniffer, click '''UPGRADE''' in the GUI. The sniffer will automatically perform: git pull → configure → make clean → make → stop → make install → start.
After restart, click '''UPGRADE''' in the GUI. The sniffer automatically performs: git pull → configure → make → install → restart.


=== Manual Upgrade ===
=== Manual Upgrade ===
Line 78: Line 59:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
cd /usr/src/sniffer
cd /usr/src/sniffer
git checkout develop
git pull
git pull
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
make
make && make install
make install
systemctl restart voipmonitor
systemctl restart voipmonitor
</syntaxhighlight>
</syntaxhighlight>


== Napatech Driver Configuration ==
== Configuration ==


=== VoIPmonitor Configuration ===
=== VoIPmonitor Configuration ===
Line 94: Line 73:
interface = napa0
interface = napa0


# IMPORTANT: BPF filter option must be commented out!
# CRITICAL: BPF filter MUST be disabled - not compatible with Napatech NTPL
#filter = udp or (vlan and udp)
#filter = udp or (vlan and udp)
</syntaxhighlight>
</syntaxhighlight>


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


File: <code>/opt/napatech3/config/ntpcap.ini</code>
File: <code>/opt/napatech3/config/ntpcap.ini</code>
Line 110: Line 91:
</syntaxhighlight>
</syntaxhighlight>


For older Napatech driver versions:
For older drivers, use:
<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
[napa0]
[napa0]
Line 117: Line 98:
</syntaxhighlight>
</syntaxhighlight>


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


File: <code>/opt/napatech3/config/ntservice.ini</code>
File: <code>/opt/napatech3/config/ntservice.ini</code>
Essential settings:
<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
[System]
[System]
TimestampFormat = NATIVE_UNIX
TimestampFormat = NATIVE_UNIX
TimestampMethod = EOF
TimestampMethod = EOF
HostBufferWaitMethod = 0
SDRAMFillLevelWarning = 0
[logging]
LogMask = 0x07
LogToFile = 0
LogFileName = /tmp/Log3G_%s.log
LogBufferWrap = wrap


[Adapter0]
[Adapter0]
AdapterType = NT4E
AdapterType = NT4E         # Match your card type
BusId = 00:07:00:00
BusId = 00:07:00:00         # Match your PCI address
PacketDescriptor = NT
Profile = Capture
HostBuffersRx = [8,16,0]
HostBuffersTx = [8,16,0]
TimeSyncProtocol = NT
TimeSyncConnectorIn = Ext
TimeSyncConnectorOut = None
TimeSyncConnectorRepeat = None
TimeSyncTimeJumpThreshold = 1
TimeSyncTimeOffset = 0
MaxFrameSize = 9018
MaxFrameSize = 9018
AltTPID = 0x8100
Profile = Capture
DiscardSize = 16
OsTimeSyncFailover = DISABLE
</syntaxhighlight>
</syntaxhighlight>


=== Time Source Configuration ===
'''Time source configuration''' (to avoid 1970-01-01 timestamps):
<syntaxhighlight lang="ini">
# Newer drivers:
timeSource = OS


By default, Napatech uses GMT timestamps. To use system time instead:
# Older drivers (in [Adapter0] section):
 
OsTimeSyncFailover = ENABLE
'''For newer Napatech drivers:'''
<syntaxhighlight lang="ini">
TimesynConnectorExt1 = None
TimeSyncReferencePriority = OSTime
</syntaxhighlight>
</syntaxhighlight>


'''Alternative for older drivers:'''
=== Systemd Dependencies ===
<syntaxhighlight lang="ini">
# For GMT (external PPS):
TimeSyncConnectorExt1 = PpsIn


# For system-dependent time:
VoIPmonitor must start AFTER Napatech drivers. Configure dependency:
TimeSyncConnectorExt1 = NttsIn
<syntaxhighlight lang="bash">
systemctl edit voipmonitor
</syntaxhighlight>
</syntaxhighlight>


{{Tip|1=If spool directories are created with incorrect dates (e.g., <code>1970-01-01</code>), see [[#Spool Directories with Date 1970-01-01|troubleshooting section below]].}}
Add:
 
== Systemd Service Configuration ==
 
You need to ensure Napatech drivers (ntservice) start before VoIPmonitor. See [[Systemd_for_voipmonitor_service_management#Dependency_Customization|systemd service file configuration]] for adding:
 
<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
[Unit]
After=ntservice.service
After=ntservice.service
Requires=ntservice.service
Requires=ntservice.service
</syntaxhighlight>
</syntaxhighlight>


== Traffic Filtering on Napatech Card ==
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>
 
See [[Systemd_for_voipmonitor_service_management#Dependency_Customization|systemd documentation]] for details.
 
== Traffic Filtering ==


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


Example: <code>/opt/napatech3/myfilter.ntpl</code>
Example <code>/opt/napatech3/myfilter.ntpl</code>:
<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
# Start NTPL
# Delete all existing filter
delete = all
delete = all


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


# Setup filters
# SIP filter (ports 5060, 5061)
# SIP filter (ports 5060, 5061)
Assign[StreamId = 0] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
Assign[StreamId = 0] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
# RTP filter (ports 10000-61743 in HEX)
 
# RTP filter (ports 10000-61743)
Assign[StreamId = 0] = (mUdpSrcPort == (0x2710..0xF12F))
Assign[StreamId = 0] = (mUdpSrcPort == (0x2710..0xF12F))
Assign[StreamId = 1] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
Assign[StreamId = 1] = (mUdpSrcPort == (0x2710..0xF12F))
Assign[StreamId = 2] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
Assign[StreamId = 2] = (mUdpSrcPort == (0x2710..0xF12F))
Assign[StreamId = 3] = (mUdpSrcPort == 5060, 5061) AND (mUdpDestPort == 5060, 5061)
Assign[StreamId = 3] = (mUdpSrcPort == (0x2710..0xF12F))
# End NTPL


# Enable Deduplication
# Deduplication
DeduplicationConfig[drop=duplicate] = GroupID == 0
DeduplicationConfig[drop=duplicate] = GroupID == 0
Define ckRecipe = CorrelationKey(Begin=StartOfFrame[0], End=EndOfFrame[0], DeduplicationGroupID=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
Assign[StreamID=0; CorrelationKey=ckRecipe] = Port == 0
</syntaxhighlight>
</syntaxhighlight>


Apply the filter:
Apply filter:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
/opt/napatech3/bin/ntstart.sh -n myfilter.ntpl
/opt/napatech3/bin/ntstart.sh -n myfilter.ntpl
Line 222: Line 177:
== Troubleshooting ==
== Troubleshooting ==


=== Spool Directories with Date 1970-01-01 ===
=== Quick Reference ===


If spool directories are created with incorrect timestamps (e.g., <code>1970-01-01</code>), the Napatech card is providing Unix Epoch time instead of actual system time.
{| class="wikitable"
! Problem !! Cause !! Solution
|-
| Spool directories dated 1970-01-01 || Time source misconfigured || Set <code>timeSource = OS</code> in ntservice.ini
|-
| No packets captured || Wrong libpcap linked || Verify <code>ldd voipmonitor</code> shows Napatech libpcap
|-
| Sensor DOWN in GUI || ntservice not running || Start ntservice, add systemd dependency
|-
| <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
|}


'''Solution:'''
=== Spool Directories with Date 1970-01-01 ===


1. Edit <code>/opt/napatech3/config/ntservice.ini</code>
The Napatech card is providing Unix Epoch time instead of system time.


2. For newer drivers, add:
<syntaxhighlight lang="ini">
timeSource = OS
</syntaxhighlight>
For older drivers, in the <code>[Adapter0]</code> section:
<syntaxhighlight lang="ini">
OsTimeSyncFailover = ENABLE
</syntaxhighlight>
3. Restart services:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Fix in ntservice.ini (see Configuration section above)
# Then restart:
systemctl stop ntservice
systemctl stop ntservice
systemctl start ntservice
systemctl start ntservice
systemctl restart voipmonitor
systemctl restart voipmonitor
</syntaxhighlight>


4. Verify fix:
# Verify:
<syntaxhighlight lang="bash">
ls -ltd /var/spool/voipmonitor/*
ls -ltd /var/spool/voipmonitor/*
</syntaxhighlight>
</syntaxhighlight>


=== Napatech Interfaces in DOWN State ===
=== Napatech Interfaces Not Capturing ===
 
If <code>tcpdump</code> or <code>tshark</code> show no packets on Napatech interfaces:


1. Check interface status:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Check interface status
ip link show napa0
ip link show napa0
ip link show | grep napa
</syntaxhighlight>
2. Verify drivers are loaded:
<syntaxhighlight lang="bash">
lsmod | grep ntpcap
systemctl status ntservice
</syntaxhighlight>


3. Verify voipmonitor uses Napatech libpcap:
# Verify correct libpcap (MUST show /opt/napatech3/lib/libpcap.so.1)
<syntaxhighlight lang="bash">
ldd /usr/local/sbin/voipmonitor | grep pcap
ldd /usr/local/sbin/voipmonitor | grep pcap
</syntaxhighlight>


Expected output should show <code>/opt/napatech3/lib/libpcap.so.1</code>, NOT system libpcap.
# Restart drivers
 
4. If using system libpcap, rebuild voipmonitor:
<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>
 
=== Drivers Not Capturing Traffic ===
 
'''Symptoms:'''
* GUI shows no calls
* <code>tshark -i napa0</code> shows no packets
* Interfaces are UP but not receiving data
 
'''Solution:''' Restart Napatech drivers:
<syntaxhighlight lang="bash">
systemctl stop voipmonitor
systemctl stop voipmonitor
cd /opt/napatech3/bin/
cd /opt/napatech3/bin/ && ./ntstop && ./ntstart
./ntstop
./ntstart
systemctl start voipmonitor
systemctl start voipmonitor
</syntaxhighlight>


Verify traffic capture:
# Verify capture
<syntaxhighlight lang="bash">
tshark -i napa0 -Y "sip || rtp" -n -c 10
tshark -i napa0 -Y "sip || rtp" -n -c 10
</syntaxhighlight>
</syntaxhighlight>


If issues persist, check logs:
If libpcap shows system path instead of Napatech path, rebuild VoIPmonitor (see [[#Building VoIPmonitor with Napatech Support|Build section]]).
<syntaxhighlight lang="bash">
journalctl -u ntservice -n 50
tail -f /tmp/Log3G_*.log
</syntaxhighlight>
 
=== Compilation Errors with DPDK Headers ===


If compilation fails with errors like <code>RTE_ETH_MQ_TX_NONE was not declared</code>, system DPDK libraries are conflicting with Napatech SDK.
=== Sensor Shows as Down in GUI ===


'''Solution:''' Disable DPDK support in <code>config.h</code>:
Error: '''"The requested response from the sensor could not be retrieved"'''


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Run configure first
# Start ntservice
./configure --with-dpdk-include=/opt/napatech3/include --with-dpdk-lib=/opt/napatech3/lib
systemctl start ntservice
systemctl status ntservice


# Edit config.h - change:
# Configure dependency (see Systemd Dependencies section)
#define HAVE_LIBDPDK 1
systemctl edit voipmonitor
# To:
# Add After= and Requires= for ntservice.service
#define HAVE_LIBDPDK 0


# Then compile
# Reboot to apply
make
reboot
</syntaxhighlight>
</syntaxhighlight>


=== Service Startup Order (init.d) ===
{{Note|1=The <code>ntservice</code> must be running BEFORE <code>voipmonitor</code> starts. The systemd dependency configuration is critical.}}


If VoIPmonitor fails with <code>libpcap error no such device exists</code> after upgrade, Napatech drivers may not be initialized when VoIPmonitor starts.
=== Compilation Errors (DPDK Conflict) ===
 
If build fails with <code>RTE_ETH_MQ_TX_NONE was not declared</code>:


'''For init.d systems:''' Edit <code>/etc/init.d/voipmonitor</code> and add before voipmonitor binary execution:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
/opt/napatech3/bin/ntstart.sh
# After running ./configure, edit config.h
sleep 60
# Change: #define HAVE_LIBDPDK 1
# To:    #define HAVE_LIBDPDK 0
 
make
</syntaxhighlight>
</syntaxhighlight>


'''For systemd systems:''' Add to the service unit file:
== See Also ==
<syntaxhighlight lang="ini">
After=ntservice.service
Requires=ntservice.service
</syntaxhighlight>


See [[Systemd_for_voipmonitor_service_management#Dependency_Customization|systemd documentation]] for details.
* [[Sniffer_installation]] - General sniffer installation
* [[DPDK]] - DPDK high-performance capture (alternative to Napatech)
* [[Systemd_for_voipmonitor_service_management]] - Service management details
* [[Scaling]] - Performance optimization


== AI Summary for RAG ==
== AI Summary for RAG ==


'''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. For GUI upgrades (v24.23+), set <code>upgrade_by_git=yes</code> and <code>configure_param</code> in voipmonitor.conf. Configuration requires: interface=napa0 in voipmonitor.conf (BPF filter must be disabled), ntpcap.ini for stream assignment, ntservice.ini for adapter settings. Time source configuration: set <code>timeSource=OS</code> for system time. Troubleshooting covers: 1970-01-01 spool directories (time source misconfiguration), interfaces in DOWN state (requires Napatech libpcap), drivers not capturing (restart with ntstop/ntstart), DPDK compilation errors (set HAVE_LIBDPDK=0 in config.h), service startup order (add ntservice dependency).
'''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).


'''Keywords:''' Napatech, SmartNIC, compilation, configure, upgrade_by_git, configure_param, ntpcap.ini, ntservice.ini, timeSource, 1970-01-01, NTPL filter, libpcap, ntstop, ntstart, HAVE_LIBDPDK, systemd, init.d
'''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:'''
'''Key Questions:'''
Line 366: Line 283:
* How to configure Napatech driver dependency in systemd?
* How to configure Napatech driver dependency in systemd?
* What does libpcap error no such device exists mean?
* 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?