Napatech: Difference between revisions
No edit summary |
(Add troubleshooting section for Napatech interfaces in DOWN state - covers interface status, libpcap verification, and rebuild instructions) |
||
| (18 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
== Configuration & building == | == Configuration & building == | ||
= First Installation = | |||
== Steps == | |||
* download latest Napatech drivers and untar it into e.g. /opt/napatech3 | * download latest Napatech drivers and untar it into e.g. /opt/napatech3 | ||
| Line 6: | Line 11: | ||
cd /usr/src | cd /usr/src | ||
git clone https://github.com/voipmonitor/sniffer.git | git clone -b master https://github.com/voipmonitor/sniffer.git | ||
OR | |||
git clone -b develop https://github.com/voipmonitor/sniffer.git | |||
cd sniffer | cd sniffer | ||
./configure | ./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. | |||
If you already have the repository cloned and want to switch to the develop branch: | |||
<pre> | |||
cd /usr/src/sniffer | |||
git fetch origin | |||
git checkout develop | |||
git pull | |||
</pre> | |||
Install all libraries that the configure needs. | |||
* run make | * run make | ||
| Line 26: | Line 38: | ||
* run it | * run it | ||
== Settings == | = 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 | * in voipmonitor.conf | ||
interface = napa0 | interface = napa0 | ||
/opt/napatech3/config/ntpcap.ini | # filter option must be commented out !!! E.g. | ||
#filter = udp or (vlan and udp) | |||
# Napatech default ntpcap.ini file | |||
* /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] | [napa0] | ||
Rx1="Assign[streamid=252;txport=0;txignore=true]=all" | Rx1="Assign[streamid=252;txport=0;txignore=true]=all" | ||
Tx=0 | Tx=0 | ||
* /opt/napatech3/config/ntservice.ini | |||
[System] | [System] | ||
TimestampFormat = NATIVE_UNIX | TimestampFormat = NATIVE_UNIX | ||
TimestampMethod = EOF | TimestampMethod = EOF | ||
HostBufferWaitMethod = 0 | HostBufferWaitMethod = 0 | ||
SDRAMFillLevelWarning = 0 | SDRAMFillLevelWarning = 0 | ||
[logging] | [logging] | ||
LogMask = 0x07 | LogMask = 0x07 | ||
| Line 54: | Line 108: | ||
LogFileName = /tmp/Log3G_%s.log | LogFileName = /tmp/Log3G_%s.log | ||
LogBufferWrap = wrap | LogBufferWrap = wrap | ||
[Adapter0] | [Adapter0] | ||
AdapterType = NT4E | AdapterType = NT4E | ||
| Line 79: | Line 133: | ||
System dependent: | System dependent: | ||
TimeSyncConnectorExt1 = NttsIn | 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 | |||
[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 === | |||
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: Napatech Interfaces in DOWN State === | |||
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"> | |||
# Check if Napatech interfaces are UP | |||
ip link show napa0 | |||
# Check all Napatech interfaces | |||
ip link show | grep napa | |||
</syntaxhighlight> | |||
If the interfaces show a DOWN state instead of UP, continue with step 2. | |||
;2. Verify Napatech drivers are loaded: | |||
<syntaxhighlight lang="bash"> | |||
# Check if ntpcap module is loaded | |||
lsmod | grep ntpcap | |||
# Check Napatech driver service status | |||
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: | |||
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. | |||
<syntaxhighlight lang="bash"> | |||
# Verify voipmonitor is linked against Napatech libpcap | |||
ldd /usr/local/sbin/voipmonitor | grep pcap | |||
</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. | |||
;4. Rebuild with custom libpcap: | |||
If voipmonitor is not using the Napatech libpcap, rebuild the sniffer: | |||
<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> | |||
After rebuilding, verify again with <code>ldd /usr/local/sbin/voipmonitor | grep pcap</code>. | |||
;5. Check ntpcap configuration: | |||
Incorrect ntpcap configuration can prevent interfaces from coming up properly. Review <code>/opt/napatech3/config/ntpcap.ini</code>: | |||
<syntaxhighlight lang="bash"> | |||
cat /opt/napatech3/config/ntpcap.ini | |||
</syntaxhighlight> | |||
Ensure: | |||
* 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:''' | |||
* 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? | |||
Revision as of 23:46, 4 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: 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 invoipmonitor.conf
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, 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:
- 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?