Software APIs
These software APIs are included:
-
NTAPI (Napatech application programming interface)
Napatech application programming interface is a stream-based, packet- or segment-based zero-copy API. User space libraries are included in binary, and the kernel space driver is included as open source (GPL-compliant).
-
NTPL (Napatech programming language)
Napatech programming language is a highly efficient interface, which optimizes the use of the FPGA resources. In the Link-Capture™ Software 12.11 release these functions are supported:
- Dynamic packet descriptors
- Filtering
- Stateful flow management (only applies to NT200A02 running on the 2 × 100 Gbit/s FM1 image, on the 2 × 40 Gbit/s FM1 image or on the 8 × 10 Gbit/s FM1 image, and to NT100A01 running on the 4 × 25/10 Gbit/s FM1 image or on the 4 × 10/1 Gbit/s FM1 image)
- Slicing
- Hash key definition
- Multi-CPU distribution
- Correlation key
- Deduplication (does not apply to NT40E3-4-PTP running on the capture/replay image nor to NT40A01 running on the 4 × 10/1 Gbit/s SLB image)
- Local retransmission
- IP fragment handling
-
libpcap
A libpcap source library is available for integration of libpcap applications.
-
WinPcap
A WinPcap source library is available for integration of WinPcap applications.
Tools
The Link-Capture™ Software 12.11 release includes a tools package with a number of binary tools that demonstrate the SmartNIC functionality. These tools are included:
- adapterinfo (displays information about the SmartNIC)
- capfileconvert (converts captured files to or from Napatech Link-Capture™ Software format)
- capfiledump (dumps a Napatech Link-Capture™ Software capture file in humanly readable format)
- capture (captures data to disk)
- config (configures links, time stamp values and sensor alarm levels)
- diagnostics (perform diagnostics on a SmartNIC)
- latency (not used)
- monitoring (queries the system port statistics)
- nimconfig (reads/writes values from/to the memory of network interface modules)
- ntinfo (collects information about the host buffer utilization once per second, and creates a host buffer utilization report)
- ntlog (reads out the driver log)
- ntpcap_capture (captures data received from a PCAP interface and stores it to disc in true PCAP file format.)
- ntpcap_replay (replays any captured PCAP or PCAPNG file)
- ntpl (sends NTPL code to a certain network stream)
- osmode (creates a virtual network device on top of Napatech Link-Capture™ Software Software)
- pktgen (performs traffic generation – does not apply to NT40A11 running on the capture image nor to NT40E3-4-PTP running on the capture image)
- pps_basic (synchronizes the SmartNIC against a PPS signal – does not apply to NT50B01)
- pps_endrun (synchronizes the SmartNIC against a PPS signal from an EndRun Præcis Cf CDMA receiver or an EndRun Præcis II CDMA receiver – does not apply to NT50B01)
- pps_oregano (synchronizes the SmartNIC against a PPS signal from an Oregano SYN1588 PCIe NIC – does not apply to NT50B01)
- pps_os (synchronizes the SmartNIC against a PPS signal using OS time as input – does not apply to NT400D11, NT50B01 and NT40A11)
- pps_ptp (enables PPS on all SmartNICs configured to run PPS – does not apply to NT400D11, NT50B01 and NT40A11)
- pps_symmetricom (synchronizes the SmartNIC against a PPS signal from a Microsemi SyncServer® – does not apply to NT400D11, NT50B01 and NT40A11)
- productinfo (displays product information about a SmartNIC)
- profiling (queries the system for profiling data)
- ptp_port_config (reads/writes values of selected PTP port parameters – does not apply to NT400D11, NT50B01 and NT40A11)
- readproperty (queries the properties of Napatech Link-Capture™ Software)
- replay (transmits a file with captured traffic – does not apply to NT40A11 running on the capture image nor to NT40E3-4-PTP running on the capture image)
- setup_wizard (configures the Napatech Link-Capture™ Software)
- supportinfo (dumps system information for support purposes)
- throughput (captures to server memory and shows the throughput)
- vpd (reads/writes VPD (vital product data) user data)
Examples
The Link-Capture™ Software 12.11 release includes an examples package for the SmartNICs with a number of code examples that use the SmartNIC functionality to illustrate how user applications can be made. These examples are included:
- bypass/config (not used)
- bypass/info (not used)
- bypass/watchdog (not used)
- config (is an example of how to use the configuration stream interface in NTAPI)
- event (is an example of how to use the event stream interface in NTAPI)
- eventMonitor (is an example of how to monitor events and dump information about them to the screen using the event stream interface in NTAPI)
- flowmatch/flowmatch_example_main (is an example that covers a number flow matching functionalities working together – only applies to NT200A02 running on the 2 × 100 Gbit/s FM1 image, on the 2 × 40 Gbit/s FM1 image or on the 8 × 10 Gbit/s FM1 image, and to NT100A01 running on the 4 × 25/10 Gbit/s FM1 image or on the 4 × 10/1 Gbit/s FM1 image)
- flow/flow_learn_span (is an example of how to program/learn new flows of received frames – only applies to NT200A02 running on the 2 × 100 Gbit/s FM1 image, on the 2 × 40 Gbit/s FM1 image or on the 8 × 10 Gbit/s FM1 image, and to NT100A01 running on the 4 × 25/10 Gbit/s FM1 image or on the 4 × 10/1 Gbit/s FM1 image)
- hashref/calc_single_hash (is an example of how to use the hash reference library to calculate hash values for some variants of key data)
- info (is an example of how to use the information stream interface in NTAPI)
- integration/systemd (contains a unit configuration for systemd)
- integration/sysv (contains a System V init script enabling ntservice to be started and stopped by a System V compatible init process)
- integration/upstart (contains a job file for Upstart, enabling ntservice to be controlled by Upstart)
- net/addPacket (is a legacy example of how to implement a simple VLAN tagging, using limited host-based transmission - only applies to NT40E3-4-PTP)
- net/analysis (is an example of how to perform real-time analysis of packets using the file network stream interface in NTAPI)
- net/capfileconvert (is an example of how to convert captured files)
- net/capture (is an example of how to capture to disk using the RX network stream interface in NTAPI)
- net/checksum (is an example of how to transmit packets where layer 3 and layer 4 checksums are recalculated based on control bits in the packet descriptor – only applies to NT200A02, NT100A01 and NT50B01 SmartNICs running on a test and measurement image)
- net/hostbuffer_poll (is an example of how to poll for host buffers attached)
- net/inline (not used)
- net/ipfdemo (is an example of how to use IP fragment handling)
- net/netflow (is an example of how to use the dynamic descriptor 1 to extract net flow information from a packet)
- net/numa (is an example of how to assign and use a host buffer on a NUMA mode)
- net/readcapfile (is an example of how to read a capture file using NTAPI)
- net/replay (not used)
- net/replay4GA (is an example of how to replay captured data onto a port using the TX network stream interface in NTAPI – does not apply to NT40A11 running on the capture image nor to NT40E3-4-PTP running on the capture image)
- net/replayGS (not used)
- net/streamidstatistics (is an example of how to get stream ID statistics that can be correlated with what the application receives)
- net/timestamp_inject (is an example of how to control injection of time stamps and FCS generation per packet using dynamic descriptor 3 – only applies to NT200A02, NT100A01 and NT50B01 SmartNICs running on a test and measurement image)
- net/transmit_multifunction (is an example of how to transmit different packet sizes at different rates on different ports by transmitting data in segments using NTAPI)
- net/transmit_on_timestamp (is an example of how to transmit packets on time stamp using the packet interface in NTAPI)
- net/transmit_on_timestamp_setclock (is an example of how to transmit a sequence of packets on time stamp multiple times using TXSETCLOCK to advance the delta with the duration of a single replay iteration)
- net/transmit_packet (is an example of how to transmit packets using the packet interface in NTAPI)
- net/transmit_pcap (is an example of how to transmit PCAP packets using the packet interface in NTAPI)
- net/transmit_segment (is an example of how to transmit segments using the standard packet descriptor and the TX network stream interface in NTAPI)
- net/transmit_segment_dyn_descr (is an example of how to transmit segments using a dynamic packet descriptor and the TX network stream interface in NTAPI)
- net/vlandemo (is an example of how to implement a simple VLAN tagging, using dynamic descriptor 3 and the inline transmission capabilities)
- pps (is an example of how to use PPS time synchronization – does not apply to NT400D11, NT50B01 and NT40A11)
- sensor (is an example of how to read sensors)
- stat (is an example of how to use the statistics stream interface in NTAPI)
- statUsage (is an example of how to use the statistics stream interface in NTAPI to read host buffer usage statistics)