NAL 2.0 Release Notes
Key Features
NAL Runtime and Drivers
- A Network Abstraction Layer that provides access to Network Interface Cards and their resources, such as queues and timestamping capabilities.
- Provides support for common INTEL IGB, 10GB, PCH, and E1000 NICs. For a complete list of NAL drivers, see the RTX64 NAL Supported NICs document.
- Provides a command line utility for configuring the NAL.
NAL SDK
- Provides a Real Time API (RtNal) function set supported by the RTX64 Network Abstraction Layer (NAL).
- Provides application callbacks used by the Real Time Network API (RtNal) function set.
- Provides structures, enumerations, and other data types used by the Real Time NAL API (RtNal) function set.
Samples
- NalDataStream sample that uses the NAL API to send and transmit data. (5384)
- NalTimeStamping sample that uses the NAL API to read the last timestamp for receive and/or transmit. (6294)
- NalMultiplePacketEx sample that shows how to send multiple packets with zero copy. (6384)
Notes
- The NAL cannot use the same physical interface as the RT-TCP/IP Stack. Note that there is no check for this. You must manually ensure that the NAL and RT-TCP/IP use different physical interfaces.
- When a new interface is configured, you should run RTX64Nal.rtss to configure the correct maximum number of receive and transmit queues for that interface, which can be printed by RtNalConfig.exe. RtNalConfig.exe can then be used to change the number of receive and transmit queues if needed.
- The Subsystem cannot be stopped when the RTX64 Network Abstraction Layer (NAL) is running. Attempts to stop the Subsystem in this scenario will result in an error message: The Subsystem cannot be stopped because the RTX64 Network Abstraction Layer (NAL) is currently running. Please stop the NAL with Real-time utility RtNalStop and try again.
- The driver queue object is used exclusively by a single application process.
- The NAL does not support the ability to set the NIC system timer.
- There is no binary or SDK compatibility with previous NAL BETA releases.
- Currently, only the RtNalI10GB and RtNalIGB drivers support timestamps.
- For NAL polling functions, the specified affinity mask should be a subset of the calling process.
- For the devices listed below, timestamps are retrieved from the packet descriptor, not the registers (6358):
- Intel® I210 Flash-less Copper-only Ethernet Controller
- Intel® I210 T1 Copper-only Ethernet Controller
- Intel® I211-AT Ethernet Controller
- Intel® I350 Quad/Dual PCIe Copper Ethernet Controller
- Intel® I350 Quad/Dual PCIe 1000BASE-KX/BX Ethernet Controller
- The NalDataStream sample prints an incorrect number of missing received packets if the packets are transmitted from multiple sources. (6834)
Known Issues
- The system may become unresponsive when a NAL application crashes in an application registered callback. (6790)
- An application cannot use both NAL APIs and RT-TCP/IP Stack APIs.
- The functions RtNalGetReceiveTimeStamp, RtNalSetReceiveTimeStampType, RtNalGetTransmitTimeStamp, and RtNalSetTransmitTimeStampType do not work in the RtNalIPCH, RtNal10GB and RtNalE1000 drivers. (6190, 6191)
- The RtNalIPCH driver does not support the functions RtNalSetReceiveFilterEntryEthertype, RtNalGetReceiveFilterEntryEthertype, or RtNalClearReceiveFilterEntryEthertype.
- The DMA ring buffer is emptied in RtNalConfigureQueue in the RtNalIGB and RtNalIPCH drivers. In the RtNalI10GB and RtNalE1000 drivers, the DMA ring buffer might contain stale data. The DataStream sample reads it out manually if DISCARD_INITIAL_RECEIVE is defined (by default this is not defined). However, the number of discarded packets might need to be increased for fast transfer rates.
- Using RtssKill or RTX64 Task Manager to terminate the RTX64 NAL process can cause the system to crash. To work around this issue, use the termination utility provided for the NAL process:
RtssRun RtNalStop.rtss
- The RtNalI10GB driver performs poorly on a 1 GB connection. In this scenario, you may experience slowness and missed packets. (7060)
- A NAL-dependent RtDll explicitly linked to an RTSS process hangs when an attempt is made to terminate it with RtssKill. To work around this issue, perform the following steps:
- Link
RtNal.lib
into the linking application. - Call RtNalInit in the linking application. You can ignore the error from the second call of RtNalInit (in the RtDll code).
The application should now terminate without issue. (7044)
- The NAL shutdown handler fails on Windows 10. To avoid this issue, use the termination utility provided with the NAL (
RtssRun RtNalStop.rtss
) to terminate all NAL applications before shutting down Windows 10. (7048)