{"id":1685,"date":"2019-10-04T11:14:20","date_gmt":"2019-10-04T18:14:20","guid":{"rendered":"https:\/\/portal.staylinked.com\/sl\/kb\/?post_type=ht_kb&#038;p=1685"},"modified":"2020-10-06T11:44:05","modified_gmt":"2020-10-06T18:44:05","slug":"client-server-connectivity","status":"publish","type":"ht_kb","link":"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/","title":{"rendered":"Client-Server Connectivity"},"content":{"rendered":"\n<p>The StayLinked Server is the key component in the StayLinked Host-based Telnet solution. As a telnet client, the StayLinked Server performs all transactions between itself and the telnet server. It also communicates input (keys, scans and touchscreen) and output (screen updates) to the remote device. StayLinked is designed to provide as much information as possible when there is any interruption or error. When the devices can freely communicate with the server, the server will present these messages in the form of eSPXXXX error codes. When the device cannot freely communicate with the server, it will display an Exclamation or Asterisk in the upper right of the screen, followed by [Linking] or [Out of Range] messages with a retry counter. This document aims to describe these events and possible troubleshooting steps. Some amount of these messages should be expected in nearly every wireless network, but troubleshooting may be necessary if these messages are appearing enough that your users are frequently interrupted.<\/p>\n\n\n\n<h2>All or Nothing<\/h2>\n\n\n\n<p>When all of your devices display these messages at the same time, following a predictable pattern, or at a certain time of the day, please contact StayLinked support for troubleshooting assistance. These simultaneous messages could be related to the performance tuning or operation of the StayLinked Server. If the issue is specific to a network segment, device model or specific location, the issue is almost invariably related to the network infrastructure. The StayLinked Server does not contain any options that can provide priority to any session over other sessions.<\/p>\n\n\n\n<h2>The Handshake<\/h2>\n\n\n\n<p>When a gun tries to connect to the server it\u2019s assigned a dedicated UDP port for that session. New sessions are assigned a new UDP port, while devices connecting to an existing session are redirected to the port for that session. One of the configuration options in the StayLinked Server is to use a \u2018Fixed Port Range\u2019. This fixed port range allows the Server to request a UDP port within the range, instead of allowing the server operating system to supply any random port. This is most often used in conjunction with firewall rules that secure different network segments.<\/p>\n\n\n\n<h3>Blacklisted Ports<\/h3>\n\n\n\n<p>You many notice in some of the StayLinked\nlogging that ports will be \u2018Blacklisted\u2019. In this instance, Blacklist is not a\nnegative term.<\/p>\n\n\n\n<p>When a handshake for a new session\nfails, the server will \u2018blacklist\u2019 that port number, just in case it was a\nproblem using that specific port over the network. If you have more ports in\nyour \u2018fixed port range\u2019 than guns, you may never need that particular port\nagain. If the range runs out of ports to use, the server will clear the\n\u2018non-preferred\u2019 list and try using them all again.<\/p>\n\n\n\n<p>In short, we ask the server operating system for a port. If the handshake fails, we skip that port again on subsequent connections unless it\u2019s needed.<\/p>\n\n\n\n<p>Handshakes fail all the time on a typical network. This feature was put in place in case some network appliance uses a particular port that would prevent it from working. In previous server versions, we would pick the next sequential port in a fixed port range. If that port failed because of some random network appliance, the clients would almost never be able to get connections working beyond that port number. <\/p>\n\n\n\n<p>We offer another technical reference document for the \u201c<a href=\"..\/knowledge-base\/err-host-timeout\/\">Err:Host Timeout<\/a>!\u201d message if these handshakes are failing too frequently. <\/p>\n\n\n\n<h2>Connectionless<\/h2>\n\n\n\n<p>Communications\nbetween the Client and Server are connectionless. This means that the device\nwill continue to display the last session screen until the user provides input\nor the server sends new display information. The Client and Server will not\ncommunicate if there are no transactions for a period of time. This is\naccomplished by operating under the UDP network protocol, with reliability\nadded by the StayLinked Client2Host Protocol. <\/p>\n\n\n\n<p>After the handshake with the server completes, devices will show the emulation screen presented by the telnet host. The client and server will confirm that they are synchronized after each transaction. As the user provides input, the client will queue these transactions in order and deliver them to the server as fast as the network allows. The client then clears them from the queue once the server has acknowledged receipt of that transaction.<\/p>\n\n\n\n<h3>Radio Power Management<\/h3>\n\n\n\n<p>Some devices have the option for aggressive radio power management. These PSP and Fast PSP power management protocols can have a direct impact on network performance, especially for small, fast packets like those used by StayLinked. We typically recommend that the device power management settings are used to conserve battery, and not the radio power management features. The device isn\u2019t very useful without the radio, so you might as well suspend the whole device if you want to save power. We have seen great success in reducing network interruptions by setting the radio to CAM mode in the radio profile power save options.<\/p>\n\n\n\n<h3>Quality of Service (QoS)<\/h3>\n\n\n\n<p>StayLinked clients communicate with the StayLinked server using the UDP network protocol. StayLinked enhances the transactions for reliable delivery. Many network appliances can offer packet prioritization based on the protocols in use. Since UDP is commonly used in streaming media, it can sometimes be the target of these QoS features. Allowing QoS to downgrade or restrict UDP packets used by StayLinked can negatively impact performance and result in a poor user experience. Be sure to disable these QoS services or configure exceptions for your StayLinked transactions for the best performance.<\/p>\n\n\n\n<h2>Asterisk vs. Exclamation<\/h2>\n\n\n\n<p>Most\ninterruptions in communication should be invisible to the user. These\ninterruptions will occur and resolve between inactivity or within a fast enough\ntime frame that the users are none the wiser. If the interruption persists for\ntwo seconds, a character will appear in the upper right corner of the display.\nThis character is a precursor to the one of the messages below.<\/p>\n\n\n\n<p>The\nAsterisk is a prelude to the [Linking] screen. This means that there has not\nbeen a successful synchronization between the client and server for at least four\nseconds. If the state persists, the screen is replaced with [Linking] after a\ntotal of 10 seconds.<\/p>\n\n\n\n<p>The Exclamation mark is a precursor to the [Out of Range] screen. This means that the device operating system is currently reporting that it is not associated to an access point for at least one second. If this state persists, it will be replaced with the [Out of Range] screen after a total of five seconds.<\/p>\n\n\n\n<h2>Linking<\/h2>\n\n\n\n<p>During the [Linking] screen, the retry counter represents each attempt to synchronize with the server. These requests are two seconds apart, and will continue until the Client and Server are able to successfully synchronize. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright\"><img loading=\"lazy\" width=\"240\" height=\"320\" src=\"https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1.jpg\" alt=\"\" class=\"wp-image-1688\" srcset=\"https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1.jpg 240w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1-225x300.jpg 225w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1-38x50.jpg 38w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1-45x60.jpg 45w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1-75x100.jpg 75w\" sizes=\"(max-width: 240px) 100vw, 240px\" \/><\/figure><\/div>\n\n\n\n<p>Devices operating behind a connection using a Network Address Translation (NAT) may display this screen when the NAT entry times out on the network appliance that is performing the NAT. This would affect devices that use a gateway, proxy, or shared network interface similar to what many home networks use for internet access. This message would never recover, requiring the user to press escape and reconnect with a standard handshake. Enabling the Server setting for \u2018Support for Client Dynamic NAT\u2019 will usually resolve this issue. <\/p>\n\n\n\n<h2>Out of Range<\/h2>\n\n\n\n<p>This message will appear three seconds after the exclamation. If it persists, you can use the StayLinked client\u2019s \u2018radio stats\u2019 option to view the MAC address of the access point reported by the radio. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright\"><img loading=\"lazy\" width=\"244\" height=\"323\" src=\"https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.2.jpg\" alt=\"\" class=\"wp-image-1689\" srcset=\"https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.2.jpg 244w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.2-227x300.jpg 227w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.2-38x50.jpg 38w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.2-45x60.jpg 45w, https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.2-76x100.jpg 76w\" sizes=\"(max-width: 244px) 100vw, 244px\" \/><\/figure><\/div>\n\n\n\n<p>If this appears on a new device, it could mean that the client installed does not match the hardware, making it unable to properly request the association status. This may also appear if the hardware manufacturer makes changes to the radio hardware during the lifecycle of the device. Devices can be configured to ignore the association status using the client setting always_in_range=1. This setting is best applied using the Scan2Command profile options in the Administrator. <\/p>\n\n\n\n<h2>Log File Records<\/h2>\n\n\n\n<p>We\ncan break these interruptions into two possible situations. The first is that\nthe server is not receiving transactions from the device and the second is that\nthe server is receiving the transactions, but the replies are not making it\nback to the device. There are a multitude of reasons that packets may not reach\nthe server, but the second scenario is different because you know the device is\nassociated and authenticated with an access point, has a valid network address\nand can probably communicate with other systems on your network. In either\ncase, the ping and tracert commands can be important tools in detecting network\nconnectivity. We typically recommend that these tests are completed from the StayLinked\nServer to the device, in order to confirm routing and other network variables\nfor the StayLinked Server operating system.<\/p>\n\n\n\n<p>The\nfollowing are sample events recorded in the staylink.log file from a client\ndevice.<\/p>\n\n\n\n<p>In this event, the client is connecting to the server and logging the server IP and port for this connection:<\/p>\n\n\n\n<p><code> 140401-215131.340:[i] reg_ip=10.162.21.10, reg_port=20050<\/code><\/p>\n\n\n\n<p>In this event, the client is reporting the Exclamation and then [Out of Range], including a confirmation from the device operating system that the MAC of the access point is blank:<\/p>\n\n\n\n<p><code>100321-011635.599:[i] &lt;- oor_beg<br>100321-011636.614:[i] &lt;- oor_max - AP=[00:00:00:00:00:00]<br>100321-011639.979:[i] &lt;- oor_end<\/code><\/p>\n\n\n\n<p>In this event, the client is reporting two interruptions, the first displays the [Linking] screen very briefly at the oos_max entry and then another interruption shortly thereafter. These current logs also show a ping of the gateway and server, confirming partial network connectivity:<\/p>\n\n\n\n<p><code>140401-131508.548:[i] &lt;- oos_beg<br>140401-131510.855:[i] gateway ping: reply from 10.133.1.1: time=3ms<br>140401-131510.889:[i] server ping: reply from 10.162.21.10: time=31ms<br>140401-131518.904:[i] &lt;- oos_max - AP=[00:08:A2:01:64:00]<br>140401-131519.893:[i] &lt;- oos_end<br>140401-131526.736:[i] &lt;- oos_beg<br>140401-131528.051:[i] gateway ping: reply from 10.133.1.1: time=2ms<br>140401-131528.087:[i] server ping: reply from 10.162.21.10: time=31ms<br>140401-131528.090:[i] &lt;- oos_end<\/code><\/p>\n\n\n\n<p>In this event, the client is reporting an interruption that displays [Linking] in which the user presses the escape key to cancel the retry attempts:<\/p>\n\n\n\n<p><code>140130-152938.077:[i] &lt;- oos_end<br>140130-155357.570:[i] &lt;- oos_beg<br>140130-155404.035:[i] &lt;- oos_max - AP=[54:78:1A:D1:70:10]<br>140130-155445.206:[i] &lt;- oos_abt<br>140130-155445.383:[i] &lt;- oos_end<br>140130-155445.383:[i] host disconnect, code=120<\/code><\/p>\n\n\n\n<p>From the Server perspective, the server will not be aware of packets that do not make it from the device. Once the device is displaying the exclamation or asterisk, these synchronization requests will be recorded in the StayLinkedManager log file as a query session status. The date and time are removed from this example for formatting.<\/p>\n\n\n\n<p><code>Processing Query Session ID Request from 192.186.83.7: 'A8~05~263EC~'<br>Results of Query Session ID Request from 192.186.83.7 for 263EC is 'Y'<\/code><\/p>\n\n\n\n<p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nAll log files are best reviewed with the\nassistance of StayLinked Support.\n\n\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The StayLinked Server is the key component in the StayLinked Host-based Telnet solution. As a telnet client, the StayLinked Server performs all transactions between itself and the telnet server. It also communicates input (keys, scans and touchscreen) and output (screen updates) to the remote device. StayLinked is designed to provide&#8230;<\/p>\n","protected":false},"author":7,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":[],"ht-kb-category":[59],"ht-kb-tag":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Client-Server Connectivity &ndash; StayLinked<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.staylinked.com\/knowledge-base\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Client-Server Connectivity &ndash; StayLinked\" \/>\n<meta property=\"og:description\" content=\"The StayLinked Server is the key component in the StayLinked Host-based Telnet solution. As a telnet client, the StayLinked Server performs all transactions between itself and the telnet server. It also communicates input (keys, scans and touchscreen) and output (screen updates) to the remote device. StayLinked is designed to provide...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/\" \/>\n<meta property=\"og:site_name\" content=\"StayLinked\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-06T18:44:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/portal.staylinked.com\/sl\/kb\/#website\",\"url\":\"https:\/\/portal.staylinked.com\/sl\/kb\/\",\"name\":\"StayLinked Knowledge Base\",\"description\":\"Partner Portal Resources and Support\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/portal.staylinked.com\/sl\/kb\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1.jpg\",\"contentUrl\":\"https:\/\/portal.staylinked.com\/sl\/kb\/wp-content\/uploads\/2019\/10\/Session-SpecificLogFile_1.1.jpg\",\"width\":240,\"height\":320},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/#webpage\",\"url\":\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/\",\"name\":\"Client-Server Connectivity &ndash; StayLinked\",\"isPartOf\":{\"@id\":\"https:\/\/portal.staylinked.com\/sl\/kb\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/#primaryimage\"},\"datePublished\":\"2019-10-04T18:14:20+00:00\",\"dateModified\":\"2020-10-06T18:44:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/client-server-connectivity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/portal.staylinked.com\/sl\/kb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Articles\",\"item\":\"https:\/\/portal.staylinked.com\/sl\/kb\/knowledge-base\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Client-Server Connectivity\"}]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/ht-kb\/1685"}],"collection":[{"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/comments?post=1685"}],"version-history":[{"count":0,"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/ht-kb\/1685\/revisions"}],"wp:attachment":[{"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/media?parent=1685"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/ht-kb-category?post=1685"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/portal.staylinked.com\/sl\/kb\/wp-json\/wp\/v2\/ht-kb-tag?post=1685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}