Data Innovations’ (DI’s) Instrument Manager (IM) offers connectivity that enables integration with virtually any instrument, LIS, or EMR/EHR regardless of vendor or discipline. This is done through a channel between devices called Connections. Connections can be setup using transmission control protocol (TCP) or directly via a serial port and is a way to identify which device is involved in the messaging.
When a TCP connection is established, it remains active until it is explicitly closed. Sometimes, if there is no communication for an extended period, it can be a challenge to determine if the connection is still valid or if one of the devices has dropped. This scenario is where TCP/IP Keep-Alive can be used to ensure that a connection remains established, even when no data is being transmitted.
What is TCP/IP Keep-Alive?
Keep-Alive messages are small, periodic empty packets sent over an idle connection that help to maintain the connection and detect
potential issues, such as unresponsive devices or broken connections. If the other device is connected and active, it responds with an acknowledgment packet. This exchange helps to maintain the connection and ensures both devices
are still reachable.
If a device does not receive a response to its Keep-Alive packet after a specified number of retries, it assumes the connection is no
longer valid and terminates it. This enables the device to detect broken connections and free up resources that were allocated to the idle connection.
Keep-Alive messages are optional in TCP and not enabled by default.
DI has determined that we will discontinue accepting driver changes to add TCP/IP Keep-Alive to individual drivers. These requests will no
longer receive approval. If you have previously received approval, we appreciate your understanding on this change of direction.
The reason for the change in approach to these requests are the following:
- This is a network-based problem at the site where the connection is being severed. As this is a common occurrence for many DI customer sites, we suggest adjusting registry settings so that connections are not terminated. The registry changes do not require coding of the application and have proven successful for sites who have made them. This information has been made available with customers during support encounters.
- Providing a programmatic change for each driver introduces risk and variation between drivers that can create unexpected outcomes in driver functionality.
- Lastly, DI is working to enhance IM (IM 2023 MR2 v9.00.20) to have the Keep-Alive feature in the core software, rather than having it in the drivers.
In the time between now and your upgrade to IM, we are encouraging customers to work with their site’s Information Technology (IT) or network team(s) on how to perform the modifications in the Windows registry or firewall to maintain that communication as the preferred method of addressing this network “Keep-Alive” issue.
By doing this, customers will be able to enable the keep-alive feature and ensure that the connection remains open for all connections from IM and would not require each driver to be enhanced to maintain that connection uptime.
CAUTION
Frequent Keep-Alive Causing Connection Issues:
DI has experienced site wide connection issues wherein the root cause was found to be Keep-Alive settings set to very low values. The frequent reconnections caused issues on the connected instrument/LIS that continued to worsen over time. In the worst cases, the Keep-Alive was set for one minute. The Keep-Alive setting is meant to address disconnects for connections that are sometimes idle for extended periods (multiple hours). DI advises a close collaboration with a site’s IT team to find the optimal value however try to aim to a setting of 15 minutes or greater to avoid this potential connection issue.
Additional Considerations
While pursuing Keep-Alive for a system, it is good to keep in mind what else may interfere or block TCP Keep-Alive packets from working. Here are a few components that might affect TCP Keep-Alive:
Virtual Private Network (VPN) Servers:
Although it is atypical that VPN servers block Keep-Alive packets, there may be a VPN configuration or protocol that could cause Keep-Alive packets to be inhibited. Examination of security policies, timeouts or other network-related issues should be pursued with the site’s IT team to maintain proper handling of Keep-Alive packets.
Network Address Translation (NAT) Devices:
If the NAT translation table entry for a specific connection expires or is removed, that could impact Keep-Alive packets. When the NAT device no longer has an active entry for a connection, it may not forward Keep-Alive packets correctly, causing the connection to be dropped. A site’s IT team will be able to review the NAT device’s timeout values and make sure they are configured to allow for Keep-Alive packets.
Firewalls:
Firewalls can block Keep-Alive packets, sometimes by applying strict security policies, by enforcing specific timeout values, or due to packet inspection. A site’s IT team should configure the firewall to allow these packets to pass through and ensure that timeout values are set to maintain active connections.
In summary, Connections are IM’s way to offer connectivity to external devices. One of the mechanisms is via TCP, which can be inadvertently closed by external devices or network components and impact the connection’s ability to process messages between IM and the device. A global server modification can be made by a site’s local IT team to enable TCP Keep-Alive to correct these disconnects. DI used to offer Keep-Alive on a per driver basis and has discontinued this as a solution. DI encourages close collaboration within a site to maintain the connection up-time.