Napatech: Difference between revisions

From VoIPmonitor.org
(Add troubleshooting for 1970-01-01 spool directory dates - set timeSource=OS in ntservice.ini)
(Add troubleshooting section for Napatech drivers not capturing traffic - ntstop/ntstart restart procedure)
Line 279: Line 279:
* Stream IDs are properly assigned
* Stream IDs are properly assigned
* Interface names (e.g., <code>napa0</code>) match what you use in <code>voipmonitor.conf</code>
* Interface names (e.g., <code>napa0</code>) match what you use in <code>voipmonitor.conf</code>
=== Troubleshooting: Napatech Drivers Not Capturing Traffic ===
If the VoIPmonitor sniffer is running but no calls are being captured, and you are using Napatech cards, the issue may be with the Napatech driver state. This can happen after driver crashes, system updates, or hardware resets.
<strong>Symptoms:</strong>
* VoIPmonitor GUI shows no calls (CDR list or Active Calls are empty)
* <code>tshark -i napa0</code> shows no packets
* Napatech interfaces are UP but not receiving data
* Restarting only VoIPmonitor service does not resolve the issue
<strong>Solution:</strong>
Restart the Napatech drivers to reset the capture engine:
<syntaxhighlight lang="bash">
# Step 1: Stop VoIPmonitor sniffer service
systemctl stop voipmonitor
# Step 2: Navigate to Napatech binary directory
cd /opt/napatech3/bin/
# Step 3: Stop Napatech drivers
./ntstop
# Step 4: Start Napatech drivers
./ntstart
# Step 5: Restart VoIPmonitor sniffer service
systemctl start voipmonitor
</syntaxhighlight>
If your system uses a different path for Napatech (e.g., <code>/opt/napatech</code> or <code>/opt/napatech3</code>), adjust the path in step 2 accordingly. You can locate the drivers with:
<syntaxhighlight lang="bash">
find /opt -name "ntstart" 2>/dev/null
</syntaxhighlight>
<strong>Verification:</strong>
After restarting the drivers, verify that traffic is being captured:
<syntaxhighlight lang="bash">
# Check if packets are being captured on the Napatech interface
tshark -i napa0 -Y "sip || rtp" -n -c 10
# Verify VoIPmonitor is processing calls
tail -f /var/log/syslog | grep voipmonitor
</syntaxhighlight>
If the issue persists after restarting the drivers, check the Napatech logs for error messages:
<syntaxhighlight lang="bash">
# View Napatech service logs
journalctl -u ntservice -n 50
# Or check log file if configured
tail -f /tmp/Log3G_*.log
</syntaxhighlight>


== AI Summary for RAG ==
== 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, time source configuration for correct timestamps, NTPL filtering, and troubleshooting for: spool directories with 1970-01-01 dates (set timeSource=OS), and Napatech interfaces in DOWN state (requires custom libpcap).
'''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, time source configuration for correct timestamps, NTPL filtering, and troubleshooting for: spool directories with 1970-01-01 dates (set timeSource=OS), Napatech interfaces in DOWN state (requires custom libpcap), and drivers not capturing traffic (restart with ntstop/ntstart commands).
'''Keywords:''' Napatech, compilation, git checkout develop, configure, upgrade_by_git, configure_param, ntpcap.ini, ntservice.ini, timeSource, 1970-01-01, timestamp, epoch time, NTPL filter, DOWN state, custom libpcap, interfaces, troubleshooting
'''Keywords:''' Napatech, compilation, git checkout develop, configure, upgrade_by_git, configure_param, ntpcap.ini, ntservice.ini, timeSource, 1970-01-01, timestamp, epoch time, NTPL filter, DOWN state, custom libpcap, interfaces, troubleshooting, ntstop, ntstart, no calls captured, driver restart
'''Key Questions:'''
'''Key Questions:'''
* How do I compile VoIPmonitor with Napatech support?
* How do I compile VoIPmonitor with Napatech support?
Line 290: Line 345:
* Why is tcpdump showing no packets on Napatech interfaces?
* Why is tcpdump showing no packets on Napatech interfaces?
* How do I verify voipmonitor is using Napatech libpcap?
* How do I verify voipmonitor is using Napatech libpcap?
* VoIPmonitor not capturing calls with Napatech, how do I restart the drivers?
* What do I do when ntstop or ntstart are located?

Revision as of 03:50, 6 January 2026

Configuration & building

First Installation

Steps

  • download latest Napatech drivers and untar it into e.g. /opt/napatech3
  • build the driver
  • download the the sniffer's source
cd /usr/src
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 develop (NOT "development"). Use git checkout develop to switch to it.

If you already have the repository cloned and want to switch to the develop branch:

cd /usr/src/sniffer
git fetch origin
git checkout develop
git pull

Install all libraries that the configure needs.

  • run make
  • check it's built properly
root@server:/usr/src/sniffer# ldd ./voipmonitor | grep pcap
	libpcap.so.1 => /opt/napatech3/lib/libpcap.so.1 (0x00007fc0b69b0000)
  • replace original binary in the /usr/local/sbin
  • run it

Upgrade

The GUI way (from the sensor's version 24.23)

Until sensor's version 24.23 was not possible to do the sensor's upgrade via 'upgrade_by_git' option because the configure script 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


  • set these options into 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
  • restart sniffer
  • do the upgrade via clicking in the GUI

The sniffer will perform (after click on UPGRADE in GUI) git pull,configure,make_clean,make, service voipmonitor stop, make install, service voipmonitor start.


The manual way

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


napatech drivers

Settings sample

  • in voipmonitor.conf
interface = napa0
# filter option must be commented out !!! E.g.
#filter = udp or (vlan and udp)
  • /opt/napatech3/config/ntpcap.ini
# Napatech default ntpcap.ini file
[Common]
Ntpl1 = "Assign[streamid=0;txport=0;txignore=true]=all"
[napa0 ]
StreamId = 0
Tx = 0
  • old version
[napa0]
Rx1="Assign[streamid=252;txport=0;txignore=true]=all"
Tx=0
  • /opt/napatech3/config/ntservice.ini
[System]
TimestampFormat = NATIVE_UNIX
TimestampMethod = EOF
HostBufferWaitMethod = 0
SDRAMFillLevelWarning = 0


[logging]
LogMask = 0x07
LogToFile = 0
LogFileName = /tmp/Log3G_%s.log
LogBufferWrap = wrap
[Adapter0]
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 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

TimesynConnectorExt1  = None
TimeSyncReferencePrioroity =OSTime

Hints

service file for voipmonitor

You need to add to voipmonitor's service file that napatech drivers (ntservice) needs to be started before the voipmonitor by modifiyng the service file

Filter traffic on Napatech card

If you want to filter a data directly in the Napatech card you can use this example as a starting point. (many thanks to Distributel for the example)

Create a file e.g /opt/napatech3/myfilter.ntpl

# Start NTPL
# Delete all existing filter
delete = all
# Setup UDP macros
DefineMacro("mUdpSrcPort", "Data[DynOffset=DynOffUDPFrame;Offset=0;DataType=ByteStr2]")
DefineMacro("mUdpDestPort", "Data[DynOffset=DynOffUDPFrame;Offset=2;DataType=ByteStr2]")
# Setup filters
# 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)
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
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


Start it with the command

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

Troubleshooting: Spool Directories with Date 1970-01-01

If spool directories are created with incorrect timestamps (e.g., 1970-01-01 instead of the current date) on sensors using Napatech cards, this indicates the Napatech card is providing Unix Epoch time (timestamp = 0) instead of the actual system time.

Solution:

1. Edit the Napatech configuration file

Edit /opt/napatech/bin3/ntservice.ini (or /opt/napatech3/config/ntservice.ini on some installations).

2. Add or modify the timeSource settings

For newer Napatech drivers, add this parameter to force the card to use system time:

timeSource = OS

For older driver configurations in the [Adapter0] section, you may need to adjust:

OsTimeSyncFailover = ENABLE
3. Restart the Napatech service
systemctl stop ntservice
systemctl start ntservice
4. Restart the voipmonitor sniffer service
systemctl restart voipmonitor
5. Verify the fix
# Check that new directories have correct dates
ls -ltd /var/spool/voipmonitor/*

Troubleshooting: Napatech Interfaces in DOWN State

If standard capture tools like tcpdump or tshark show no packets on Napatech interfaces, verify that the Napatech interfaces are not in a DOWN state.

1. Check interface status
# Check if Napatech interfaces are UP
ip link show napa0

# Check all Napatech interfaces
ip link show | grep napa

If the interfaces show a DOWN state instead of UP, continue with step 2.

2. Verify Napatech drivers are loaded
# Check if ntpcap module is loaded
lsmod | grep ntpcap

# Check Napatech driver service status
systemctl status ntservice

If the drivers are not loaded, start the service:

systemctl start ntservice
3. Check if custom libpcap is being used

The Napatech setup requires linking against a custom libpcap library provided by Napatech. Standard system libpcap will not work correctly with Napatech cards.

# Verify voipmonitor is linked against Napatech libpcap
ldd /usr/local/sbin/voipmonitor | grep pcap

Expected output should show something like:

libpcap.so.1 => /opt/napatech3/lib/libpcap.so.1 (0x00007f00b69b0000)

If it shows system libpcap (e.g., /lib/x86_64-linux-gnu/libpcap.so.1), you need to rebuild using the custom library.

4. Rebuild with custom libpcap

If voipmonitor is not using the Napatech libpcap, rebuild the sniffer:

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

After rebuilding, verify again with ldd /usr/local/sbin/voipmonitor | grep pcap.

5. Check ntpcap configuration

Incorrect ntpcap configuration can prevent interfaces from coming up properly. Review /opt/napatech3/config/ntpcap.ini:

cat /opt/napatech3/config/ntpcap.ini

Ensure:

  • Stream IDs are properly assigned
  • Interface names (e.g., napa0) match what you use in voipmonitor.conf

Troubleshooting: Napatech Drivers Not Capturing Traffic

If the VoIPmonitor sniffer is running but no calls are being captured, and you are using Napatech cards, the issue may be with the Napatech driver state. This can happen after driver crashes, system updates, or hardware resets.

Symptoms:

  • VoIPmonitor GUI shows no calls (CDR list or Active Calls are empty)
  • tshark -i napa0 shows no packets
  • Napatech interfaces are UP but not receiving data
  • Restarting only VoIPmonitor service does not resolve the issue

Solution:

Restart the Napatech drivers to reset the capture engine:

# Step 1: Stop VoIPmonitor sniffer service
systemctl stop voipmonitor

# Step 2: Navigate to Napatech binary directory
cd /opt/napatech3/bin/

# Step 3: Stop Napatech drivers
./ntstop

# Step 4: Start Napatech drivers
./ntstart

# Step 5: Restart VoIPmonitor sniffer service
systemctl start voipmonitor

If your system uses a different path for Napatech (e.g., /opt/napatech or /opt/napatech3), adjust the path in step 2 accordingly. You can locate the drivers with:

find /opt -name "ntstart" 2>/dev/null

Verification:

After restarting the drivers, verify that traffic is being captured:

# Check if packets are being captured on the Napatech interface
tshark -i napa0 -Y "sip || rtp" -n -c 10

# Verify VoIPmonitor is processing calls
tail -f /var/log/syslog | grep voipmonitor

If the issue persists after restarting the drivers, check the Napatech logs for error messages:

# View Napatech service logs
journalctl -u ntservice -n 50

# Or check log file if configured
tail -f /tmp/Log3G_*.log

AI Summary for RAG

Summary: Instructions for building VoIPmonitor sniffer with Napatech support. Clone with git clone -b develop or switch branch with git checkout develop, 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, time source configuration for correct timestamps, NTPL filtering, and troubleshooting for: spool directories with 1970-01-01 dates (set timeSource=OS), Napatech interfaces in DOWN state (requires custom libpcap), and drivers not capturing traffic (restart with ntstop/ntstart commands). Keywords: Napatech, compilation, git checkout develop, configure, upgrade_by_git, configure_param, ntpcap.ini, ntservice.ini, timeSource, 1970-01-01, timestamp, epoch time, NTPL filter, DOWN state, custom libpcap, interfaces, troubleshooting, ntstop, ntstart, no calls captured, driver restart Key Questions:

  • How do I compile VoIPmonitor with Napatech support?
  • How do I switch to the develop branch?
  • What configure options are needed for Napatech?
  • Napatech interfaces are in DOWN state, how do I fix it?
  • Why is tcpdump showing no packets on Napatech interfaces?
  • How do I verify voipmonitor is using Napatech libpcap?
  • VoIPmonitor not capturing calls with Napatech, how do I restart the drivers?
  • What do I do when ntstop or ntstart are located?