Keep-Alive Message

Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Keep-Alive Message

  • Creator
    Topic
  • #51858
    Jerry Magrann
    Participant

      I’ve been reading through different threads on this topic, but couldn’t find my answer, so here goes – we have a vendor sending an HL7 message through a VPN. There is a firewall between our sites and after being idle so long, the connection drops. Without making a change on the firewall, how would the vendor send a keep alive message at the TCP level, and how does Cloverleaf handle it? Does it look like an ACK message where I would insert a proc to kill the “keep alive” message?

      Using the mlp.pdl and running CIS 5.3 on AIX.

      Thanks!

    Viewing 5 reply threads
    • Author
      Replies
      • #72012
        Jim Kosloskey
        Participant

          Jerry,

          First of all this really should be fixed at the firewall – what are those people being paid for anyway?

          But the type of thing you are talking about is an application message that you and the sending system agree upon as far as construct.

          It can be anything you agree on as long as it does not actually look like a real message. I would suggest something short.

          So the vendor then has to have the capability to send that message if there has not been any mesage sent for some period of time. Most vendors do not have that capability.

          If you do get the message sent, in the Inbound Tps UPoC is where I would check for the message. Now you and the vendor need to agree if you need to acknowledge the ‘keep alive’ message. If you do, you need to create and return the acknowledgment then KILL the message (you would CONTINUE any other message). It may be your vendor does not want to have that message acknowledged. If that is the case then your logic needs to determine when to acknowledge and when not to.

          email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

        • #72013
          Russ Ross
          Participant

            Another option if you simply want to use what is in place is to have a scheduled robot script use the application to generate a message for a dummy patient as if someone had used the application interactively.

            This approach will also allow you to configure a last received alert on the receiving interface since you now can expect to receive a message on a regular basis.

            Now the nice thing about the last received alert is that it not only confirms the interface is working but also confirms all the moving parts in front of the interface are working.

            The peolpe on the receiving system will be informed to ignore the entries in their database for this dummy keep alive patient.

            Russ Ross
            RussRoss318@gmail.com

          • #72014
            Jerry Magrann
            Participant

              Thank you for the replies – I think the option that is going to happen is to have the vendor build a “KEEPALIVE” message that just consists of the MSH segment and I will catch it with a proc on the inbound and kill it.

              As to Networking and reconfiguring the firewall, because the router / firewall involves more than just this tunnel, it would be a global config change they were hesitent to make the config change.

              Thanks for the feedback and knowledge sharing!

            • #72015
              Michael Hertel
              Participant

                Jerry, to save yourself from going through hoops, I would suggest reading this post and try changing the tcp_keepidle parameter on your AIX box.

                https://usspvlclovertch2.infor.com/viewtopic.php?t=734&highlight=tcpkeepidle

                This portion of the post should be useful to you:

                On AIX —

                The default keepalive setting for AIX is 2 hours. We have a lot of remote connections and had smilar issues until I lowered it to 15 mins. Now we never have that problem (although remote connections go down for other reasons, obviously, so they aren’t hassle-free). The keepalive setting affects all of the cloverleaf sockets.

                To determine current keepalive setting:

                $ no -a | grep tcp_keepidle

              • #72016
                Kevan Riley
                Participant

                  [EDIT: it looks like Michael beat me to it… but since I typed all this, I am leaving it…]

                  If you are using AIX, we have had good experiences with setting the tcp_keepidle parameter.

                • #72017

                  In the past, I have used a cron and tcl to generate “heart beat” messages.

                  Cron

                  Code:

                  00,05,10,15,20,25,30,35,40,45,50,55 * * * * . ~/.profile.cron;/hci/bin/heartbeat.tcl testbno bno31 bno31bblab_out heartbeat_bb.hl7 >
                  /dev/null 2>&1

                  ~/.profile.cron

                  Code:

                  CL_INSTALL_DIR=/hci/quovadx/qdx5.6
                  PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.:/usr/local/bin:/usr/local/lib:/usr/local/scripts:${CL_INSTALL_DIR}/integrator/sbi
                  export PATH
                  setroot

                  /hci/bin/heartbeat.tcl

                  #!/hci/quovadx/qdx5.6/integrator/bin/tcl

                  global HciRoot

                  # Get args
                  set site [lindex $argv 0]
                  set process [lindex $argv 1]
                  set thread [lindex $argv 2]
                  set heartbeat [lindex $argv 3]

                  # Set up the environment for Cloverleaf commands
                  eval [exec $HciRoot/sbin/hcisetenv -root tcl $HciRoot $site]

                  # Send the heartbeat
                  catch {exec hcicmd -p $process
                  [code]#!/hci/quovadx/qdx5.6/integrator/bin/tcl

                  global HciRoot

                  # Get args
                  set site [lindex $argv 0]
                  set process [lindex $argv 1]
                  set thread [lindex $argv 2]
                  set heartbeat [lindex $argv 3]

                  # Set up the environment for Cloverleaf commands
                  eval [exec $HciRoot/sbin/hcisetenv -root tcl $HciRoot $site]

                  # Send the heartbeat
                  catch {exec hcicmd -p $process

                  -- Max Drown (Infor)

              Viewing 5 reply threads
              • The forum ‘Cloverleaf’ is closed to new topics and replies.