WO2013029819A1 - System and method for latency monitoring - Google Patents

System and method for latency monitoring Download PDF

Info

Publication number
WO2013029819A1
WO2013029819A1 PCT/EP2012/060038 EP2012060038W WO2013029819A1 WO 2013029819 A1 WO2013029819 A1 WO 2013029819A1 EP 2012060038 W EP2012060038 W EP 2012060038W WO 2013029819 A1 WO2013029819 A1 WO 2013029819A1
Authority
WO
WIPO (PCT)
Prior art keywords
connection
latency
client device
server
status
Prior art date
Application number
PCT/EP2012/060038
Other languages
French (fr)
Inventor
Simon PONSFORD
Simon GUERRERO
William YIP
Original Assignee
Qatar Foundation
Hoarton, Lloyd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qatar Foundation, Hoarton, Lloyd filed Critical Qatar Foundation
Priority to EP12725696.4A priority Critical patent/EP2751968A1/en
Publication of WO2013029819A1 publication Critical patent/WO2013029819A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/29Flow control; Congestion control using a combination of thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/283Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/38Flow control; Congestion control by adapting coding or compression rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/752Media network packet handling adapting media to network capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25825Management of client data involving client display capabilities, e.g. screen resolution of a mobile phone
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6377Control signals issued by the client directed to the server or network components directed to server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/64322IP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6543Transmission by server directed to the client for forcing some client operations, e.g. recording

Definitions

  • the present invention relates to systems and method for latency monitoring between client and server devices in a network.
  • An application sharing protocol enables multipoint device application sharing by allowing a view onto a host or shared device application executing at one site to be advertised within a session executing on other devices at other sites, particularly remote ones.
  • a device at each site can, under specified conditions, take control of the shared device application by sending remote keyboard and pointing device information for example.
  • a method for monitoring remote access connection latency between a client device and a server device comprising using a virtual channel between the client device and the server device to determine a value for the latency in a network connection therebetween.
  • the virtual channel may be used to transmit data representing the latency value between the client device and the server device using the network connection.
  • Such a method may further comprise compiling a limited running list of historic latency values, and using the list to determine an average value for the latency between the client device and server device.
  • Such a method may further comprise providing multiple threshold values representing respective different connection statuses, assigning a status for the connection using the average value, and incrementing or decrementing a counter associated with the statuses based on the assigned status to provide a current status for the connection.
  • Such a method may further comprise providing a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses.
  • Such a method may further comprise adjusting a parameter of the display device on the basis of the current status and according to the profile list.
  • the multiple display parameters may include a resolution and colour depth for the display device.
  • the latency value may be determined using a difference between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
  • the network connection may be a TCP connection.
  • a server device comprising a server component operable to receive data from a client device over a virtual channel, the data representing a value of latency in a network connection for remote access between the client device and the server device, and to use the latency value to update a visual representation of the latency for the client device.
  • the server component may be operable to use the virtual channel to transmit data representing the latency value between the client device and the server device using the network connection.
  • the server component may be operable to compile a limited running list of historic latency values, and to use the list to determine an average value of latency between the client device and server device.
  • the server component may be operable to provide multiple threshold values representing respective different connection statuses, to assign a status for the connection using the average value, and to increment or decrement a counter associated with the statuses based on the assigned status to provide a current status for the connection.
  • the server component may be operable to provide a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses.
  • the server component may be operable to adjust a parameter of the display device on the basis of the current status and according to the profile list.
  • the multiple display parameters include a resolution and colour depth for the display device.
  • the server component is operable to send data to the client device over the virtual channel, the data representing a time period between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
  • client device comprising a client device component operable to receive data from a server device over a virtual channel, the data representing a value of latency in a network connection for remote access between the client device and the server device.
  • the client component may be operable to receive a profile list including multiple display parameters for a display device of the client device, wherein the parameters represent respective connection statuses.
  • the client component may be operable to adjust a parameter of the display device on the basis of the current status and according to the profile list.
  • the multiple display parameters include a resolution and colour depth for the display device.
  • the client component may be operable to receive data from the server device over the virtual channel, the data representing a time period between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
  • Figure 1 is a schematic block diagram of a system according to an example
  • Figure 2 is a schematic block diagram of a system according to an example
  • Figure 3 is a schematic block diagram of a system according to an example
  • Figure 4 is a schematic block diagram of a system according to an example.
  • Figure 5 is a schematic block diagram of a monitor device according to an example.
  • An application sharing system typically uses server device and client side components which utilise technologies that are common to multiple implementations, such as implementations suitable for multiple different operating systems for example.
  • a system can use a number of discrete I/O endpoints within a data stream to provide multiple data channels.
  • the system can multiplex these data channels whilst handling buffering and transmission thereby making it possible for data to be transmitted bi-directionally using API calls to transmit data and to register callback mechanisms to handle reception of data for example.
  • the multiple discrete I/O endpoints define a set of virtual channels for the system which can be used internally to handle operations such as cut-and-paste operations to take place between the remote (server) and local (client) systems, and also for the redirection of sound and to share storage devices between the systems for example.
  • an application sharing system can utilise the remote desktop protocol, which is a known protocol to allow a user to remotely log in to a networked device.
  • a remote desktop services server runs which facilitates connection from suitable client side software which allows a user to remotely log in to the networked device operating as the server.
  • Client side components can present a desktop interface (application GUI) of the remote server system.
  • Remote desktop protocol allows the creation of virtual channels, which allow other devices, such as disc, audio, printers, and COM ports to be redirected. That is, the channels act as a replacement for these devices.
  • the channels connect to the client over a TCP (transmission control protocol) connection, and, as the channels are accessed for data, a client is informed of the request, which is then transferred over the TCP connection to the application.
  • TCP transmission control protocol
  • a method and system uses a virtual channel for bandwidth monitoring.
  • Latency data representing latency between server and client sides of a system can be provided or requested.
  • a request can come from an external monitoring application or device which uses data from the virtual channel for example.
  • latency data can be used to automatically and dynamically adjust characteristics at the client side of the system. For example, colour depth and/or screen resolution can be dynamically adjusted on the basis of the latency data in order to optimise use of available bandwidth and network speed.
  • FIG. 1 is a schematic block diagram of a system according to an example.
  • a server device 101 which can be a remote device, includes a server component 103 which provides remote connection functionality.
  • server component 103 can be a remote desktop protocol server application which allows applications or the desktop of the device 101 to be made accessible to a client device 105, which can be a remote client device - that is, a physically separated device which can be connected to the internet for example.
  • Server component 103 can authenticate client devices such as device 105, as well as making applications and the desktop of device 101 available remotely for viewing and interaction.
  • component 103 can restrict clients according to a level of access.
  • Server component 103 establishes a socket endpoint which listens for inbound connections on a TCP port, such as TCP port 3389 for example.
  • Client device 105 includes a client side application 107 for remote desktop services.
  • Application 107 allows a user of device 105 to remotely log in to a networked device running a remote desktop services server, such as device 101 for example.
  • Application 107 can present the desktop interface of device 101 on a display of the device 105 as if it were being accessed locally. Accordingly, control of certain or all applications and functions of device 101 can be provided at device 105.
  • Any input provided at client device 105 is redirected via component 107 over a network 109 to the server component 103 of server device 101 where all application execution takes place.
  • Network 109 can be the internet for example, or any other suitable network, such as a LAN.
  • the server and client devices can communicate over the network 109 using TCP for example. Accordingly, a connection between the client and the server can be a TCP connection.
  • the system of figure 1 uses cached glyphs and bitmaps for transmission across network 109.
  • most dialog boxes consist of text items, a series of gray, white, colored and so on rectangles, and light and dark shaded lines for a 3D effect.
  • these are not transmitted as comparative deltas from the previous screen, but are encoded as pattern bits and cached glyphs.
  • a gray dialog box background color can be drawn with "Draw color X at Xi , yi , x 2 , y 2 ".
  • Field compression can be enabled such that a second draw with only a change in the Xi , yi position would send an even smaller packet with a single bit representing the fields that have not changed, and the minimum possible number of bits to represent the delta change in the coordinates.
  • Text can be displayed using glyph caching. That is, the client can build up a required set of glyphs, and the server need only transmit a short hash value to display the text. Bitmap caching can work similarly.
  • component 103 includes or otherwise invocates a "system tray” application which is started at user login. This application periodically checks to see if it is running within a terminal services session, and if so, actively communicates with the client end of the connection, and displays an indicator in the system tray. It also allows the user to monitor a current latency (in milliseconds for example), and a current quality level classification of the connection or latency status which can be classified as "good", "average” or “poor” for example.
  • system tray application which is started at user login. This application periodically checks to see if it is running within a terminal services session, and if so, actively communicates with the client end of the connection, and displays an indicator in the system tray. It also allows the user to monitor a current latency (in milliseconds for example), and a current quality level classification of the connection or latency status which can be classified as "good", "average” or “poor” for example.
  • the component 107 can include the following:
  • this new virtual channel can support the passing of data to the system tray application of component 103 of device 101 , which can calculate and maintain average latency statistics.
  • a mechanism to communicate with an external connection monitoring application which can be launched by the virtual channel component and can request latency data for example.
  • FIG. 2 is a schematic block diagram of a system according to an example.
  • a virtual channel 201 enables communication of data between client 105 and server 101 via network 109.
  • data representing a latency of the connection between server 101 and client 105 can be provided over channel 201 .
  • channel 201 can be used to transmit messages which encode data representing at least the latency of the system.
  • three message types can be supported. These messages can start with a 16-bit "message type" value which uniquely identifies the type of message.
  • valid message types are:
  • MSG_READY - this is sent from the server 101 to the client 105 to notify it that a system tray application or component 103 on the server 101 is ready to receive messages.
  • the message contains no data except for the 16-bit message type.
  • MSG_REQUEST - this is sent from the client 105 to the server 101 and can include the following data:
  • 32 bit length - this is the size of all of the remaining data 32 bit timestamp - this is the length of time (such as the number of milliseconds) which has elapsed since a predetermined time (such as midnight on the 1 st January 1970 for example), according to the client system
  • connection status code 8 bit connection status code - one of CATEGORY_ESTABLISHING, CATEGORY_GOOD, CATEGORY_AVERAGE or CATEGORY_POOR
  • MSG_RESPONSE - this is sent from the server 101 to the client 105 in response to a MSG_REQUEST message and contains the same data as for the MSG_REQUEST message, except that the message type is MSG_RESPONSE.
  • component 103 when the application of component 103 starts, it defaults its connection status to CATEGORY_OFFLINE.
  • a system tray icon can be shown, displaying an offline status indicator (which can be grey in colour for example) with the word RDP or other similar identifier underneath it. Hovering a mouse pointer or pointer of another input device over the icon at this point can display a tooltip stating that no terminal services session is active.
  • the application can then check the session information to see if a user is logged in, such as using Terminal Services for example. If not, the application waits for a second, or other suitable predetermined period of time, then checks again. In an example, this checking process can repeat until a session is identified.
  • the application waits until an active session is identified. When this occurs, it connects to the virtual channel 201 and sends a MSG_READY message to the client 105.
  • the application then enters a loop, waiting for an incoming message from the client. If no message arrives within, for example, eight seconds, the MSG_READY message is sent and the loop is re-started. [0049] If a message arrives, it is parsed to make sure it is an MSG_REQUEST message. If not, an MSG_READY is sent to the client to reset it. Otherwise, the average latency and connection status are read from the message, and an MSG_RESPONSE is returned to the client 105.
  • the data read from the message is used to set the tooltip text for the tray application as well as the colour of the indicator, which can alter depending on a connection status or latency value - for example, green can indicate a good status, amber an average status, and red a poor status. Other alternatives are possible.
  • the application then returns to the start of the loop, awaiting the next MSG_REQUEST.
  • the application can enter a cycle of sleep-check-retry until the service is re-established, at which point it sends a RESTART message to the client 105 to advise it that communications had been interrupted. This loop can continue until the application is terminated, either by a system shutdown, user log off or by the user terminating the application from a Quit menu for example.
  • the current average latency and connection status are shown in the tooltip which appears when hovering over the icon in the system tray, and also via the colour of the system tray icon itself.
  • Right-clicking on the icon and selecting "Status" from the pop-up menu can display a dialog where this information is also shown and dynamically updated, without the need to keep hovering the mouse pointer over the system tray icon.
  • the application can exit when the user logs off, or the system is shut down. In an example, disconnecting from the session leaves the application running. The user may also manually shut down the application by right-clicking the icon in the system tray area and selecting "Quit" from the pop-up menu for example.
  • connection bar such as a connection bar specific to the Microsoft remote desktop protocol client for example, either in addition to or in place of system tray information. If a network connection is very slow, a system tray update may not be available for some time. However, it will be seen in the connection bar as this executes locally.
  • a remote desktop latency monitor such as an external monitor device or application, uses a remote desktop protocol compliant tool. The following activities can be carried out by the monitor:
  • command-line arguments can be passed to the process:
  • the parent process stores the file descriptor which represents the other end of the pipe, for use in communicating with the external monitoring component.
  • the tool can then start up normally. Whenever the tool receives incoming data on the virtual channel 201 , it can call the registered processing function to notify it of a new message. According to an example, messages can be handled as follows:
  • any existing list of latency values can be emptied.
  • a REQUEST message can then be sent to the server 101 containing the current timestamp (expressed in milliseconds since midnight on 1 st January 1970 as described above for example), along with a current average latency of zero and a connection status of ESTABLISHING.
  • a response message type is RESPONSE
  • the timestamp portion of the message is extracted and subtracted from the current system timestamp.
  • the resulting value represents the latency (or "ping time") of the connection during the request-response cycle.
  • the latency value is then added on to the end of a linked list of latencies.
  • a maximum of 100 latency values can be held, so if 100 have already been stored, the oldest is removed from the list before adding the latest one.
  • Other alternatives are possible including other predefined maximum numbers and the provision of a user selected maximum for example.
  • the average latency is recalculated by taking the mean of all of the values currently stored. In one example, these latency values are stored, either in a local file or externally in a database, in order that a longer term history of latency can be kept.
  • a new average latency value is calculated, it is used to determine whether the connection status should be changed.
  • a latency value of a maximum of 100ms is considered good.
  • One of 300ms or more is considered poor, and anything between the two is considered as average.
  • This classification is then used to increment an appropriate counter - either good, average or poor - to a maximum of ten or other suitable number which can be predefined or user selectable.
  • the other two counters are decremented, to a minimum of zero. If the increment to a counter has caused it to reach ten, the overall classification of the connection status is changed to match the appropriate level.
  • connection may have had ten consecutive "good" pings, resulting in the following counter values:
  • connection This classifies the connection as "good”.
  • the connection may start to degrade, resulting in the following values after, for example, six more pings:
  • connection is thus still classified as "good”, as it has not yet reached a stable enough sequence of pings to be re-classified. However, if the next seven (for example) pings are all poor, the counters are now:
  • connection is now re-classified as "poor”.
  • connection status avoids a status continually changing with spikes in the network traffic.
  • the system sleeps for around 1 second in order to avoid saturating a Terminal Services connection. It then sends a REQUEST message to the server 101 , containing the current timestamp (expressed in milliseconds since midnight on 1 st January 1970), along with the current average latency.
  • the system When a Terminal Services session is disconnected (either through network timeout, system shutdown or directly by the user), the system is notified by tool through a generic mechanism common to all virtual channels. In an example, it can use this notification to clear down any allocated memory before terminating. It can also send a termination signal to any external connection monitor process which may have been started.
  • FIG. 3 is a schematic block diagram of a system according to an example.
  • An external connection monitor 301 is a stand-alone device or application which can be launched when the virtual channel 201 is initialised.
  • Monitor 301 can be provided with or can request data about the connection between server 101 and client 105. More specifically, monitor 301 can be provided with or request latency data representing the latency of the connection which is established between the server 101 and the client 105.
  • the data can be used to carry out connection reconfiguration actions to mitigate latency issues.
  • reconfiguration actions can include reducing screen resolution or screen size at the client 105, and/or reducing a colour depth at the client 105.
  • monitor 301 can access a user's connection monitor profile 303.
  • profile 303 can be a text file consisting of a multiple sections representing respective hosts for which the user wishes to enable latency management. Within each section, three entries are provided representing each of the connection types GOOD, AVERAGE and POOR along with the screen bit depth and geometry considered appropriate for the classification. Such parameters can be configured by a user, or predefined. Any hosts not defined in profile 303 can be passively monitored.
  • the start of a host section in profile 303 can be identified by the token:
  • HOST hostname where hostname can either be the fully-qualified name of the system, or its IP address.
  • i. class is one of "GOOD”, “AVERAGE” or “POOR”;
  • width is the width of the screen in pixels
  • height is the height of the screen in pixels
  • iv. depth is the bit-depth of the screen.
  • connection monitor 301 parses the profile file 303 to identify whether there is an entry which matches either the fully-qualified remote host name or IP address, such data having been supplied as command line arguments when the process was started for example. If a matching entry is determined, the CONNECTION entries are parsed to establish a profile for handling latency changes for the connection and this profile can be stored in a memory of the monitor 301 . If no matching entry is found, a message can be output to a standard error output for the session to notify the user that proactive latency management will not take place. The process can then terminate.
  • monitor 301 when monitor 301 is initialised, it enters a request-response loop which sends a MONITOR_QUERY message to a virtual channel extension via the pipe associated with its standard output stream. It then waits for a response on the standard input stream. If no response is received within a pre-determined timeout period, the MONITOR_QUERY message is sent again.
  • MONITOR_RESPONSE a response is received, this is a MONITOR_RESPONSE message in an example. This message is parsed, and any resulting actions are taken and the process sends a new MONITOR_QUERY message. This activity repeats until a termination signal is received from the client.
  • the MONITOR_QUERY message consists of the following data:
  • the MONITOR_RESPONSE message consists of the following data:
  • MONITOR_RESPONSE When a MONITOR_RESPONSE message is received, it is analysed to determine whether the connection should be reconfigured. If the connection status code was CATEGORY_ESTABLISHING, no action is taken. Otherwise, if this is the first time a status has been received, the status is stored as the current connection status and the request-response loop continues.
  • Figure 4 is a schematic block diagram of a system according to an example. When the need for connection reconfiguration has been established, the following activities occur.
  • the stored profile in file 303 for the remote host is accessed to identify the requested screen geometry and depth for the current connection status for a display 405. If the geometry and depth are the same as for the previous connection status, no action is taken, and the request-response loop continues. If the geometry and depth are different, a system modal dialog box can be output to display 405 to indicate to the user that reconfiguration may take place. This dialog offers the options to either reconfigure the session, or to continue with the current session. Additionally, a checkbox can allow the user to switch off dynamic connection management for the remainder of the session.
  • the external monitor 301 is terminated - otherwise, the request-response loop continues.
  • connection monitor 301 sends a termination signal to the main process, using the process ID originally passed in on the command line. A new process is then created, using the original parameters supplied on the command line. The external monitor 301 process then terminates. [0086] Note that the external monitor process terminates itself if no profile is found for the current host; if the user cancels all dynamic connection management; or when it launches a new session.
  • a user can choose to change connection properties based upon the network latency data.
  • adaptation based on the latency data can be manual, such as by user intervention to alter one or more properties or parameters of the system they are interacting with, such as by altering a screen resolution for example, or automatic, such that automated adaption is used to alter one or more properties or parameters.
  • Connection data can be stored both locally for the end user and in a datacentre by a service provider for example.
  • FIG. 5 is a schematic block diagram of a monitor device according to an example.
  • Device 500 can include one or more processors, such as processor 501 , providing an execution platform for executing machine readable instructions such as software. Commands and data from the processor 501 are communicated over a communication bus 399.
  • the device 500 also includes a main memory 502, such as a Random Access Memory (RAM), where machine readable instructions may reside during runtime, and a secondary memory 505.
  • the secondary memory 505 includes, for example, a hard disk drive 507 and/or a removable storage drive 530, representing a floppy diskette drive, a magnetic tape drive, a compact disk drive, etc., or a nonvolatile memory where a copy of the machine readable instructions or software may be stored.
  • the secondary memory 505 may also include ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM).
  • ROM read only memory
  • EPROM erasable, programmable ROM
  • EEPROM electrically erasable, programmable ROM
  • latency data both current and historic as well as threshold values for example may be stored in the main memory 502 and/or the secondary memory 505.
  • the removable storage drive 530 reads from and/or writes to a removable storage unit 509 in a well-known manner.
  • the components and elements of device 500 are also representative of client device 105 and server device 101 .
  • a user can interface with the device 500 with one or more input devices 51 1 , such as a keyboard, a mouse, a stylus, and the like in order to provide user input data such as data representing a mitigating action.
  • the display adaptor 515 can interface with the communication bus 399 and the display 517 and receive display data from the processor 501 and convert the display data into display commands for the display 517.
  • a network interface 519 is provided for communicating with other systems and devices via the network. That is, in the case of the client device the network interface can be used to communicate with the server and vice versa. In the case of the monitor device, the interface can be used by the monitor device to communicate with the client and/or server as desired.
  • the system can include a wireless interface 521 for communicating with wireless devices in the wireless community.
  • the device 500 shown in figure 5 is provided as an example of a possible platform that may be used for client, server and monitor device for example, and other types of platforms may be used as is known in the art.
  • One or more of the steps described above may be implemented as instructions embedded on a computer readable medium and executed on the device 500.
  • the steps may be embodied by a computer program, which may exist in a variety of forms both active and inactive. For example, they may exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats for performing some of the steps.
  • any of the above may be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form.
  • suitable computer readable storage devices include conventional computer system RAM (random access memory), ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes.
  • Examples of computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running a computer program may be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of the programs on a CD ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general. It is therefore to be understood that those functions enumerated above may be performed by any electronic device capable of executing the above-described functions.
  • a profile 303 can reside in memory 502.
  • a set of latency values 505 can also be provided in memory 502.
  • a storage device 1 1 1 can include a HDD such as 505, or can be provided as a removable storage unit 509.
  • a method and system according to an example can serve to reduce support calls relating to remote desktop use by ensuring that end-users are made aware of issues relating to connectivity and when issues relate to the network rather than other factors for example. This is important for a service provider that may be supplying the server for the remote connection termination, but not the network. For example, statistical evidence can be available to both the user and the end user that the issue lies in the network. This is data that can be presented to the network provider.
  • a system and method according to an example therefore enables service providers to evaluate the quality of network connections for their customers' connections, and if desired to recommend how to improve the quality of the connection, or to find a suitable alternative network provider.
  • a method will also work where a Terminal Services Gateway server is used that allows incoming connections on a defined port, e.g. port 443 for HTTPS, which is then forwarded as port 3389 for RDP. Normal network tests will not change ports, so this provides a secure method of testing latency without opening ports or any additional firewall configuration at either end (client or server).
  • a Terminal Services Gateway server is used that allows incoming connections on a defined port, e.g. port 443 for HTTPS, which is then forwarded as port 3389 for RDP. Normal network tests will not change ports, so this provides a secure method of testing latency without opening ports or any additional firewall configuration at either end (client or server).
  • a method according to an example can be used as a "keep alive" to ensure that the connection is less likely to drop, e.g. might be used on a mobile wireless network such as UMTS (3G) or other network. It can also be applied to other virtual channel based remote display protocols such as ICA for example.
  • UMTS Universal Mobile Telecommunications
  • ICA virtual channel based remote display protocols
  • Service Providers can use latency data, statistical data derived from the latency data, and IP address data to understand the performance and experience of their client's connections. This can be used to demonstrate why a user should move from one Internet Service Provider to another, and also to determine where users are connecting from in the World.

Abstract

A method for monitoring remote access connection latency between a client device (105) and a server device (101) comprises using a virtual channel between the client device (105) and the server device (101) to determine a value for the latency in a network connection therebetween.

Description

SYSTEM AND METHOD FOR LATENCY MONITORING
[0001 ] The present invention relates to systems and method for latency monitoring between client and server devices in a network.
BACKGROUND
[0002] An application sharing protocol enables multipoint device application sharing by allowing a view onto a host or shared device application executing at one site to be advertised within a session executing on other devices at other sites, particularly remote ones. A device at each site can, under specified conditions, take control of the shared device application by sending remote keyboard and pointing device information for example.
[0003] Application sharing protocols were originally intended for use over a local area network (LAN) where available bandwidth and latency were not typically an issue. However, the bulk of application sharing tool usage now takes place over wide area networks (WANs) such as the internet where such matters can affect the use of the tools, particularly over connections which exhibit high latency. Because latency over WANs can vary greatly, it is difficult to design a system whose graphical capabilities and frequency of updates are appropriate to the connection type being used.
SUMMARY
[0004] According to an aspect of the present invention, there is provided a method for monitoring remote access connection latency between a client device and a server device, comprising using a virtual channel between the client device and the server device to determine a value for the latency in a network connection therebetween.
[0005] In such a method, the virtual channel may be used to transmit data representing the latency value between the client device and the server device using the network connection. [0006] Such a method may further comprise compiling a limited running list of historic latency values, and using the list to determine an average value for the latency between the client device and server device.
[0007] Such a method may further comprise providing multiple threshold values representing respective different connection statuses, assigning a status for the connection using the average value, and incrementing or decrementing a counter associated with the statuses based on the assigned status to provide a current status for the connection.
[0008] Such a method may further comprise providing a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses.
[0009] Such a method may further comprise adjusting a parameter of the display device on the basis of the current status and according to the profile list.
[0010] In such a method, the multiple display parameters may include a resolution and colour depth for the display device.
[001 1 ] In such a method, the latency value may be determined using a difference between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
[0012] The network connection may be a TCP connection.
[0013] According to another aspect of the present invention, there is provided a server device comprising a server component operable to receive data from a client device over a virtual channel, the data representing a value of latency in a network connection for remote access between the client device and the server device, and to use the latency value to update a visual representation of the latency for the client device.
[0014] The server component may be operable to use the virtual channel to transmit data representing the latency value between the client device and the server device using the network connection.
[0015] The server component may be operable to compile a limited running list of historic latency values, and to use the list to determine an average value of latency between the client device and server device. [0016] The server component may be operable to provide multiple threshold values representing respective different connection statuses, to assign a status for the connection using the average value, and to increment or decrement a counter associated with the statuses based on the assigned status to provide a current status for the connection.
[0017] The server component may be operable to provide a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses.
[0018] The server component may be operable to adjust a parameter of the display device on the basis of the current status and according to the profile list.
[0019] The multiple display parameters include a resolution and colour depth for the display device.
[0020] The server component is operable to send data to the client device over the virtual channel, the data representing a time period between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
[0021 ] According to another aspect of the present invention, there is provided client device comprising a client device component operable to receive data from a server device over a virtual channel, the data representing a value of latency in a network connection for remote access between the client device and the server device.
[0022] The client component may be operable to receive a profile list including multiple display parameters for a display device of the client device, wherein the parameters represent respective connection statuses.
[0023] The client component may be operable to adjust a parameter of the display device on the basis of the current status and according to the profile list.
[0024] The multiple display parameters include a resolution and colour depth for the display device.
[0025] The client component may be operable to receive data from the server device over the virtual channel, the data representing a time period between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device. BRIEF DESCRIPTION OF THE DRAWINGS
[0026] An embodiment of the invention will now be described, by way of example only, and with reference to the accompanying drawings, in which:
[0027] Figure 1 is a schematic block diagram of a system according to an example;
[0028] Figure 2 is a schematic block diagram of a system according to an example;
[0029] Figure 3 is a schematic block diagram of a system according to an example;
[0030] Figure 4 is a schematic block diagram of a system according to an example; and
[0031 ] Figure 5 is a schematic block diagram of a monitor device according to an example.
DETAILED DESCRIPTION
[0032] An application sharing system typically uses server device and client side components which utilise technologies that are common to multiple implementations, such as implementations suitable for multiple different operating systems for example. A system can use a number of discrete I/O endpoints within a data stream to provide multiple data channels. The system can multiplex these data channels whilst handling buffering and transmission thereby making it possible for data to be transmitted bi-directionally using API calls to transmit data and to register callback mechanisms to handle reception of data for example. The multiple discrete I/O endpoints define a set of virtual channels for the system which can be used internally to handle operations such as cut-and-paste operations to take place between the remote (server) and local (client) systems, and also for the redirection of sound and to share storage devices between the systems for example.
[0033] In an example, an application sharing system can utilise the remote desktop protocol, which is a known protocol to allow a user to remotely log in to a networked device. Typically, at a server side, a remote desktop services server runs which facilitates connection from suitable client side software which allows a user to remotely log in to the networked device operating as the server. Client side components can present a desktop interface (application GUI) of the remote server system.
[0034] Remote desktop protocol allows the creation of virtual channels, which allow other devices, such as disc, audio, printers, and COM ports to be redirected. That is, the channels act as a replacement for these devices. Typically, the channels connect to the client over a TCP (transmission control protocol) connection, and, as the channels are accessed for data, a client is informed of the request, which is then transferred over the TCP connection to the application.
[0035] Currently the only way of checking network connectivity in a remote desktop protocol environment is for a user to leave the hosted virtual desktop application and be talked through a series of network tests by helpdesk personnel for example. This is difficult and time consuming. It is also not supported on the majority of thin client devices, so diagnostics are only possible where a user is connecting from a full PC and has access to network tools.
[0036] According to an example, a method and system uses a virtual channel for bandwidth monitoring. Latency data representing latency between server and client sides of a system can be provided or requested. A request can come from an external monitoring application or device which uses data from the virtual channel for example. In an example, latency data can be used to automatically and dynamically adjust characteristics at the client side of the system. For example, colour depth and/or screen resolution can be dynamically adjusted on the basis of the latency data in order to optimise use of available bandwidth and network speed.
[0037] Figure 1 is a schematic block diagram of a system according to an example. A server device 101 , which can be a remote device, includes a server component 103 which provides remote connection functionality. For example, server component 103 can be a remote desktop protocol server application which allows applications or the desktop of the device 101 to be made accessible to a client device 105, which can be a remote client device - that is, a physically separated device which can be connected to the internet for example. Server component 103 can authenticate client devices such as device 105, as well as making applications and the desktop of device 101 available remotely for viewing and interaction. In an example, component 103 can restrict clients according to a level of access.
[0038] Server component 103 establishes a socket endpoint which listens for inbound connections on a TCP port, such as TCP port 3389 for example. Client device 105 includes a client side application 107 for remote desktop services. Application 107 allows a user of device 105 to remotely log in to a networked device running a remote desktop services server, such as device 101 for example. Application 107 can present the desktop interface of device 101 on a display of the device 105 as if it were being accessed locally. Accordingly, control of certain or all applications and functions of device 101 can be provided at device 105.
[0039] Any input provided at client device 105 is redirected via component 107 over a network 109 to the server component 103 of server device 101 where all application execution takes place. Network 109 can be the internet for example, or any other suitable network, such as a LAN. The server and client devices can communicate over the network 109 using TCP for example. Accordingly, a connection between the client and the server can be a TCP connection.
[0040] In an example, the system of figure 1 uses cached glyphs and bitmaps for transmission across network 109. For example, most dialog boxes consist of text items, a series of gray, white, colored and so on rectangles, and light and dark shaded lines for a 3D effect. In an example, these are not transmitted as comparative deltas from the previous screen, but are encoded as pattern bits and cached glyphs. For instance, a gray dialog box background color can be drawn with "Draw color X at Xi , yi , x2, y2". Field compression can be enabled such that a second draw with only a change in the Xi , yi position would send an even smaller packet with a single bit representing the fields that have not changed, and the minimum possible number of bits to represent the delta change in the coordinates.
[0041 ] Text can be displayed using glyph caching. That is, the client can build up a required set of glyphs, and the server need only transmit a short hash value to display the text. Bitmap caching can work similarly.
[0042] According to an example, component 103 includes or otherwise invocates a "system tray" application which is started at user login. This application periodically checks to see if it is running within a terminal services session, and if so, actively communicates with the client end of the connection, and displays an indicator in the system tray. It also allows the user to monitor a current latency (in milliseconds for example), and a current quality level classification of the connection or latency status which can be classified as "good", "average" or "poor" for example.
[0043] The component 107 can include the following:
- An extension to a remote desktop protocol application to add a new virtual channel. In an example, this new virtual channel can support the passing of data to the system tray application of component 103 of device 101 , which can calculate and maintain average latency statistics.
- A mechanism to communicate with an external connection monitoring application, which can be launched by the virtual channel component and can request latency data for example.
[0044] Figure 2 is a schematic block diagram of a system according to an example. A virtual channel 201 enables communication of data between client 105 and server 101 via network 109. For example, data representing a latency of the connection between server 101 and client 105 can be provided over channel 201 . According to an example, channel 201 can be used to transmit messages which encode data representing at least the latency of the system. For example, three message types can be supported. These messages can start with a 16-bit "message type" value which uniquely identifies the type of message. In an example, valid message types are:
- MSG_READY - this is sent from the server 101 to the client 105 to notify it that a system tray application or component 103 on the server 101 is ready to receive messages. In an example, the message contains no data except for the 16-bit message type.
- MSG_REQUEST - this is sent from the client 105 to the server 101 and can include the following data:
16 bit message type (always MSG_REQUEST)
32 bit length - this is the size of all of the remaining data 32 bit timestamp - this is the length of time (such as the number of milliseconds) which has elapsed since a predetermined time (such as midnight on the 1 st January 1970 for example), according to the client system
32 bit average latency - this is the current average latency as calculated by the client application
8 bit connection status code - one of CATEGORY_ESTABLISHING, CATEGORY_GOOD, CATEGORY_AVERAGE or CATEGORY_POOR
MSG_RESPONSE - this is sent from the server 101 to the client 105 in response to a MSG_REQUEST message and contains the same data as for the MSG_REQUEST message, except that the message type is MSG_RESPONSE.
[0045] According to an example, when the application of component 103 starts, it defaults its connection status to CATEGORY_OFFLINE. A system tray icon can be shown, displaying an offline status indicator (which can be grey in colour for example) with the word RDP or other similar identifier underneath it. Hovering a mouse pointer or pointer of another input device over the icon at this point can display a tooltip stating that no terminal services session is active.
[0046] The application can then check the session information to see if a user is logged in, such as using Terminal Services for example. If not, the application waits for a second, or other suitable predetermined period of time, then checks again. In an example, this checking process can repeat until a session is identified.
[0047] The application waits until an active session is identified. When this occurs, it connects to the virtual channel 201 and sends a MSG_READY message to the client 105.
[0048] The application then enters a loop, waiting for an incoming message from the client. If no message arrives within, for example, eight seconds, the MSG_READY message is sent and the loop is re-started. [0049] If a message arrives, it is parsed to make sure it is an MSG_REQUEST message. If not, an MSG_READY is sent to the client to reset it. Otherwise, the average latency and connection status are read from the message, and an MSG_RESPONSE is returned to the client 105. According to an example, the data read from the message is used to set the tooltip text for the tray application as well as the colour of the indicator, which can alter depending on a connection status or latency value - for example, green can indicate a good status, amber an average status, and red a poor status. Other alternatives are possible. The application then returns to the start of the loop, awaiting the next MSG_REQUEST.
[0050] If at any point communication times out or a Terminal Services session is terminated, the application can enter a cycle of sleep-check-retry until the service is re-established, at which point it sends a RESTART message to the client 105 to advise it that communications had been interrupted. This loop can continue until the application is terminated, either by a system shutdown, user log off or by the user terminating the application from a Quit menu for example.
[0051 ] Therefore, in an example, the current average latency and connection status are shown in the tooltip which appears when hovering over the icon in the system tray, and also via the colour of the system tray icon itself. Right-clicking on the icon and selecting "Status" from the pop-up menu can display a dialog where this information is also shown and dynamically updated, without the need to keep hovering the mouse pointer over the system tray icon. The application can exit when the user logs off, or the system is shut down. In an example, disconnecting from the session leaves the application running. The user may also manually shut down the application by right-clicking the icon in the system tray area and selecting "Quit" from the pop-up menu for example. In an example, information relating to the latency of a connection can be made available in a connection bar, such as a connection bar specific to the Microsoft remote desktop protocol client for example, either in addition to or in place of system tray information. If a network connection is very slow, a system tray update may not be available for some time. However, it will be seen in the connection bar as this executes locally. [0052] According to an example, a remote desktop latency monitor, such as an external monitor device or application, uses a remote desktop protocol compliant tool. The following activities can be carried out by the monitor:
- callback functions are registered with the tool to allow it to be notified of incoming data and other significant events (such as system shutdown);
- an empty linked list is created to store data representing latency values, and the current average latency value is set to zero;
- an anonymous pipe mechanism is created, and the process is forked in two;
- a new child process ties its input and output streams to one end of the pipe, and then launches an external application such as an external monitor. The following command-line arguments can be passed to the process:
i. The fully-qualified host name and IP (Internet Protocol) address of the remote system
ii. The process ID of the main tool process.
iii. The original command line used to start the tool session (as a series of separate arguments)
[0053] The parent process stores the file descriptor which represents the other end of the pipe, for use in communicating with the external monitoring component.
[0054] The tool can then start up normally. Whenever the tool receives incoming data on the virtual channel 201 , it can call the registered processing function to notify it of a new message. According to an example, messages can be handled as follows:
[0055] If the message type is READY, any existing list of latency values can be emptied. A REQUEST message can then be sent to the server 101 containing the current timestamp (expressed in milliseconds since midnight on 1 st January 1970 as described above for example), along with a current average latency of zero and a connection status of ESTABLISHING.
[0056] If a response message type is RESPONSE, the timestamp portion of the message is extracted and subtracted from the current system timestamp. The resulting value represents the latency (or "ping time") of the connection during the request-response cycle. The latency value is then added on to the end of a linked list of latencies. In an example, a maximum of 100 latency values can be held, so if 100 have already been stored, the oldest is removed from the list before adding the latest one. Other alternatives are possible including other predefined maximum numbers and the provision of a user selected maximum for example. The average latency is recalculated by taking the mean of all of the values currently stored. In one example, these latency values are stored, either in a local file or externally in a database, in order that a longer term history of latency can be kept.
[0057] At this point, if an external monitoring application has been launched, the pipe is checked for inbound data. If a MONITOR_QUERY message is present, the current latency value and connection classification are sent back as a MONITOR_RESPONSE message to the file descriptor which connects to the anonymous pipe to the external monitor.
[0058] According to an example, three counts are held alongside the linked list, representing running totals of consecutive latencies, in order to establish an appropriate gauge for the quality of the connection. Whenever a new average latency value is calculated, it is used to determine whether the connection status should be changed. In the example, a latency value of a maximum of 100ms is considered good. One of 300ms or more is considered poor, and anything between the two is considered as average.
[0059] This classification is then used to increment an appropriate counter - either good, average or poor - to a maximum of ten or other suitable number which can be predefined or user selectable. The other two counters are decremented, to a minimum of zero. If the increment to a counter has caused it to reach ten, the overall classification of the connection status is changed to match the appropriate level.
[0060] For example, a connection may have had ten consecutive "good" pings, resulting in the following counter values:
i. GOOD: 10
ii. AVERAGE: 0
iii. POOR: 0
[0061 ] This classifies the connection as "good". [0062] The connection may start to degrade, resulting in the following values after, for example, six more pings:
i. GOOD: 4
ii. AVERAGE: 3
iii. POOR: 3
[0063] The connection is thus still classified as "good", as it has not yet reached a stable enough sequence of pings to be re-classified. However, if the next seven (for example) pings are all poor, the counters are now:
i. GOOD: 0
ii. AVERAGE: 0
iii. POOR: 10
[0064] The connection is now re-classified as "poor".
[0065] Using such a threshold mechanism to define a connection status avoids a status continually changing with spikes in the network traffic.
[0066] After processing, the system sleeps for around 1 second in order to avoid saturating a Terminal Services connection. It then sends a REQUEST message to the server 101 , containing the current timestamp (expressed in milliseconds since midnight on 1 st January 1970), along with the current average latency.
[0067] When a Terminal Services session is disconnected (either through network timeout, system shutdown or directly by the user), the system is notified by tool through a generic mechanism common to all virtual channels. In an example, it can use this notification to clear down any allocated memory before terminating. It can also send a termination signal to any external connection monitor process which may have been started.
[0068] Figure 3 is a schematic block diagram of a system according to an example. An external connection monitor 301 is a stand-alone device or application which can be launched when the virtual channel 201 is initialised. Monitor 301 can be provided with or can request data about the connection between server 101 and client 105. More specifically, monitor 301 can be provided with or request latency data representing the latency of the connection which is established between the server 101 and the client 105. In an example, the data can be used to carry out connection reconfiguration actions to mitigate latency issues. For instance, reconfiguration actions can include reducing screen resolution or screen size at the client 105, and/or reducing a colour depth at the client 105.
[0069] Upon initialisation, monitor 301 can access a user's connection monitor profile 303. In an example, profile 303 can be a text file consisting of a multiple sections representing respective hosts for which the user wishes to enable latency management. Within each section, three entries are provided representing each of the connection types GOOD, AVERAGE and POOR along with the screen bit depth and geometry considered appropriate for the classification. Such parameters can be configured by a user, or predefined. Any hosts not defined in profile 303 can be passively monitored.
[0070] According to an example, the start of a host section in profile 303 can be identified by the token:
/'. HOST hostname where hostname can either be the fully-qualified name of the system, or its IP address.
[0071 ] The end of a host section can be identified by the token:
i. END-HOST
[0072] Within a host section of profile 303, three entries are present, and can be on separate lines or separated/delimited by a suitable symbol or a delimiter such as a hashtag or other symbol for example. Each line can be formatted as follows:
i. CONNECTION class WIDTH width HEIGHT height DEPTH depth
[0073] where:
i. class is one of "GOOD", "AVERAGE" or "POOR";
ii. width is the width of the screen in pixels;
iii. height is the height of the screen in pixels; and
iv. depth is the bit-depth of the screen.
[0074] An example entry for the host "myhost.mydomain" might be:
i. HOST myhost.mydomain ii. CONNECTION GOOD WIDTH 1280 HEIGHT 1024 DEPTH
32
iii. CONNECTION AVERAGE WIDTH 1024 HEIGHT 768 DEPTH 24
iv. CONNECTION POOR WIDTH 800 HEIGHT 600 DEPTH 16 v. END-HOST
[0075] The connection monitor 301 parses the profile file 303 to identify whether there is an entry which matches either the fully-qualified remote host name or IP address, such data having been supplied as command line arguments when the process was started for example. If a matching entry is determined, the CONNECTION entries are parsed to establish a profile for handling latency changes for the connection and this profile can be stored in a memory of the monitor 301 . If no matching entry is found, a message can be output to a standard error output for the session to notify the user that proactive latency management will not take place. The process can then terminate.
[0076] According to an example, when monitor 301 is initialised, it enters a request-response loop which sends a MONITOR_QUERY message to a virtual channel extension via the pipe associated with its standard output stream. It then waits for a response on the standard input stream. If no response is received within a pre-determined timeout period, the MONITOR_QUERY message is sent again.
[0077] If a response is received, this is a MONITOR_RESPONSE message in an example. This message is parsed, and any resulting actions are taken and the process sends a new MONITOR_QUERY message. This activity repeats until a termination signal is received from the client.
[0078] According to an example, the MONITOR_QUERY message consists of the following data:
i. 16 bit Message type - which is MONITOR_QUERY ii. 32 bit Message length in bytes - always 6
[0079] The MONITOR_RESPONSE message consists of the following data:
i. 16 bit Message type - which is MONITOR_RESPONSE ii. 32 bit average latency - this is the current average latency as calculated by the client application. iii. 8 bit connection status code - one of
CATEGORY_ESTABLISHING, CATEGORY_GOOD, CATEGORY_AVERAGE or CATEGORY_POOR.
[0080] When a MONITOR_RESPONSE message is received, it is analysed to determine whether the connection should be reconfigured. If the connection status code was CATEGORY_ESTABLISHING, no action is taken. Otherwise, if this is the first time a status has been received, the status is stored as the current connection status and the request-response loop continues.
[0081 ] If this is not the first time a status has been received, the status code is compared to the stored status. If it is determined that the connection status has changed, a Connection Reconfiguration process initiates.
[0082] Figure 4 is a schematic block diagram of a system according to an example. When the need for connection reconfiguration has been established, the following activities occur.
[0083] The stored profile in file 303 for the remote host is accessed to identify the requested screen geometry and depth for the current connection status for a display 405. If the geometry and depth are the same as for the previous connection status, no action is taken, and the request-response loop continues. If the geometry and depth are different, a system modal dialog box can be output to display 405 to indicate to the user that reconfiguration may take place. This dialog offers the options to either reconfigure the session, or to continue with the current session. Additionally, a checkbox can allow the user to switch off dynamic connection management for the remainder of the session.
[0084] If the user elects to continue without any action, the dialog box is removed.
If the checkbox was selected, the external monitor 301 is terminated - otherwise, the request-response loop continues.
[0085] If the user elects to reconfigure the connection, the connection monitor 301 sends a termination signal to the main process, using the process ID originally passed in on the command line. A new process is then created, using the original parameters supplied on the command line. The external monitor 301 process then terminates. [0086] Note that the external monitor process terminates itself if no profile is found for the current host; if the user cancels all dynamic connection management; or when it launches a new session.
[0087] In an example, a user can choose to change connection properties based upon the network latency data. Accordingly, adaptation based on the latency data can be manual, such as by user intervention to alter one or more properties or parameters of the system they are interacting with, such as by altering a screen resolution for example, or automatic, such that automated adaption is used to alter one or more properties or parameters..
[0088] Connection data can be stored both locally for the end user and in a datacentre by a service provider for example.
[0089] Figure 5 is a schematic block diagram of a monitor device according to an example. Device 500 can include one or more processors, such as processor 501 , providing an execution platform for executing machine readable instructions such as software. Commands and data from the processor 501 are communicated over a communication bus 399. The device 500 also includes a main memory 502, such as a Random Access Memory (RAM), where machine readable instructions may reside during runtime, and a secondary memory 505. The secondary memory 505 includes, for example, a hard disk drive 507 and/or a removable storage drive 530, representing a floppy diskette drive, a magnetic tape drive, a compact disk drive, etc., or a nonvolatile memory where a copy of the machine readable instructions or software may be stored. The secondary memory 505 may also include ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM). In addition to software, latency data, both current and historic as well as threshold values for example may be stored in the main memory 502 and/or the secondary memory 505. The removable storage drive 530 reads from and/or writes to a removable storage unit 509 in a well-known manner.
[0090] The components and elements of device 500 are also representative of client device 105 and server device 101 . A user can interface with the device 500 with one or more input devices 51 1 , such as a keyboard, a mouse, a stylus, and the like in order to provide user input data such as data representing a mitigating action. For example, at the client side, the display adaptor 515 can interface with the communication bus 399 and the display 517 and receive display data from the processor 501 and convert the display data into display commands for the display 517. A network interface 519 is provided for communicating with other systems and devices via the network. That is, in the case of the client device the network interface can be used to communicate with the server and vice versa. In the case of the monitor device, the interface can be used by the monitor device to communicate with the client and/or server as desired. The system can include a wireless interface 521 for communicating with wireless devices in the wireless community.
] It will be apparent to one of ordinary skill in the art that one or more of the components of the device 500 may not be included and/or other components may be added as is known in the art. The device 500 shown in figure 5 is provided as an example of a possible platform that may be used for client, server and monitor device for example, and other types of platforms may be used as is known in the art. One or more of the steps described above may be implemented as instructions embedded on a computer readable medium and executed on the device 500. The steps may be embodied by a computer program, which may exist in a variety of forms both active and inactive. For example, they may exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats for performing some of the steps. Any of the above may be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form. Examples of suitable computer readable storage devices include conventional computer system RAM (random access memory), ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes. Examples of computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running a computer program may be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of the programs on a CD ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general. It is therefore to be understood that those functions enumerated above may be performed by any electronic device capable of executing the above-described functions.
[0092] According to an example, a profile 303 can reside in memory 502. A set of latency values 505 can also be provided in memory 502. A storage device 1 1 1 can include a HDD such as 505, or can be provided as a removable storage unit 509.
[0093] A method and system according to an example can serve to reduce support calls relating to remote desktop use by ensuring that end-users are made aware of issues relating to connectivity and when issues relate to the network rather than other factors for example. This is important for a service provider that may be supplying the server for the remote connection termination, but not the network. For example, statistical evidence can be available to both the user and the end user that the issue lies in the network. This is data that can be presented to the network provider.
[0094] A system and method according to an example therefore enables service providers to evaluate the quality of network connections for their customers' connections, and if desired to recommend how to improve the quality of the connection, or to find a suitable alternative network provider.
[0095] In an example, a method will also work where a Terminal Services Gateway server is used that allows incoming connections on a defined port, e.g. port 443 for HTTPS, which is then forwarded as port 3389 for RDP. Normal network tests will not change ports, so this provides a secure method of testing latency without opening ports or any additional firewall configuration at either end (client or server).
[0096] Where connectivity is poor, a method according to an example can be used as a "keep alive" to ensure that the connection is less likely to drop, e.g. might be used on a mobile wireless network such as UMTS (3G) or other network. It can also be applied to other virtual channel based remote display protocols such as ICA for example.
[0097] Service Providers can use latency data, statistical data derived from the latency data, and IP address data to understand the performance and experience of their client's connections. This can be used to demonstrate why a user should move from one Internet Service Provider to another, and also to determine where users are connecting from in the World.

Claims

CLAIMS What is claimed is:
1 . A method for monitoring remote access connection latency between a client device and a server device, comprising: using a virtual channel between the client device and the server device to determine a value for the latency in a network connection therebetween.
2. A method as claimed in claim 1 , wherein the virtual channel is used to transmit data representing the latency value between the client device and the server device using the network connection.
3. A method as claimed in claim 1 , further comprising compiling a limited running list of historic latency values, and using the list to determine an average value for the latency between the client device and server device.
4. A method as claimed in claim 1 , further comprising: compiling a limited running list of historic latency values, and using the list to determine an average value for the latency between the client device and server device; providing multiple threshold values representing respective different connection statuses; assigning a status for the connection using the average value; and incrementing or decrementing a counter associated with the statuses based on the assigned status to provide a current status for the
5. A method as claimed in claim 1 , further comprising: compiling a limited running list of historic latency values, and using the list to determine an average value for the latency between the client device and server device; providing multiple threshold values representing respective different connection statuses; assigning a status for the connection using the average value; incrementing or decrementing a counter associated with the statuses based on the assigned status to provide a current status for the connection; and providing a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses.
6. A method as claimed in claim 1 , further comprising: compiling a limited running list of historic latency values, and using the list to determine an average value for the latency between the client device and server device; providing multiple threshold values representing respective different connection statuses; assigning a status for the connection using the average value; incrementing or decrementing a counter associated with the statuses based on the assigned status to provide a current status for the connection; providing a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses; and adjusting a parameter of the display device on the basis of the current status and according to the profile list.
7. A method as claimed in claim 1 , compiling a limited running list of historic latency values, and using the list to determine an average value for the latency between the client device and server device; providing multiple threshold values representing respective different connection statuses; assigning a status for the connection using the average value; incrementing or decrementing a counter associated with the statuses based on the assigned status to provide a current status for the connection; and providing a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses, and wherein the multiple display parameters include a resolution and colour depth for the display device.
8. A method as claimed claim 1 , wherein the latency value is determined using a difference between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
9. A method as claimed claim 1 , wherein the network connection is a TCP connection.
10. A server device comprising a server component operable to receive data from a client device over a virtual channel, the data representing a value of latency in a network connection for remote access between the client device and the server device, and to use the latency value to update a visual representation of the latency for the client device.
1 1 . A server device as claimed in claim 10, wherein the server component is operable to use the virtual channel to transmit data representing the latency value between the client device and the server device using the network connection.
12. A server device as claimed in claim 10, wherein the server component is operable to compile a limited running list of historic latency values, and to use the list to determine an average value of latency between the client device and server device.
13. A server device as claimed in claim 10, wherein the server component is operable to compile a limited running list of historic latency values, and to use the list to determine an average value of latency between the client device and server device, to provide multiple threshold values representing respective different connection statuses, to assign a status for the connection using the average value, and to increment or decrement a counter associated with the statuses based on the assigned status to provide a current status for the connection.
14. A server device as claimed in claim 10, wherein the server component is operable to compile a limited running list of historic latency values, and to use the list to determine an average value of latency between the client device and server device, to provide multiple threshold values representing respective different connection statuses, to assign a status for the connection using the average value, to increment or decrement a counter associated with the statuses based on the assigned status to provide a current status for the connection, and to provide a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses.
15. A server device as claimed in claim 10, wherein the server component is operable to compile a limited running list of historic latency values, and to use the list to determine an average value of latency between the client device and server device, to provide multiple threshold values representing respective different connection statuses, to assign a status for the connection using the average value, to increment or decrement a counter associated with the statuses based on the assigned status to provide a current status for the connection, to provide a profile list including multiple display parameters for a display device of the client device, and to adjust a parameter of the display device on the basis of the current status and according to the profile list wherein respective ones of the parameters map to respective ones of the connection statuses.
16. A server device as claimed in claim 10, wherein the server component is operable to compile a limited running list of historic latency values, and to use the list to determine an average value of latency between the client device and server device, to provide multiple threshold values representing respective different connection statuses, to assign a status for the connection using the average value, to increment or decrement a counter associated with the statuses based on the assigned status to provide a current status for the connection, and to provide a profile list including multiple display parameters for a display device of the client device, wherein respective ones of the parameters map to respective ones of the connection statuses, and wherein the multiple display parameters include a resolution and colour depth for the display device.
17. A server device as claimed in claim 10, wherein the server component is operable to send data to the client device over the virtual channel, the data representing a time period between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
18. A client device comprising a client device component operable to receive data from a server device over a virtual channel, the data representing a value of latency in a network connection for remote access between the client device and the server device.
19. A client device as claimed in claim 18, wherein the client component is operable to receive a profile list including multiple display parameters for a display device of the client device, the parameters representing respective connection statuses.
20. A client device as claimed in claim 18, wherein the client component is operable to receive a profile list including multiple display parameters for a display device of the client device, and to adjust a parameter of the display device on the basis of the current status and according to the profile list, the parameters representing respective connection statuses.
21 . A client device as claimed in claim 18, wherein the client component is operable to receive a profile list including multiple display parameters for a display device of the client device, the parameters representing respective connection statuses, and including a resolution and colour depth for the display device.
22. A client device as claimed in claim 18, wherein the client component is operable to receive data from the server device over the virtual channel, the data representing a time period between a timestamp in a message received by the server device from the client device and a current timestamp value of the server device.
PCT/EP2012/060038 2011-08-30 2012-05-29 System and method for latency monitoring WO2013029819A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP12725696.4A EP2751968A1 (en) 2011-08-30 2012-05-29 System and method for latency monitoring

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1114874.9 2011-08-30
GB1114874.9A GB2494126B (en) 2011-08-30 2011-08-30 System and method for latency monitoring

Publications (1)

Publication Number Publication Date
WO2013029819A1 true WO2013029819A1 (en) 2013-03-07

Family

ID=44838856

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2012/060038 WO2013029819A1 (en) 2011-08-30 2012-05-29 System and method for latency monitoring

Country Status (3)

Country Link
EP (1) EP2751968A1 (en)
GB (1) GB2494126B (en)
WO (1) WO2013029819A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9130842B2 (en) 2011-08-30 2015-09-08 Qatar Foundation System and method for latency monitoring
CN110677312A (en) * 2019-08-15 2020-01-10 北京百度网讯科技有限公司 SDK packet delay monitoring method and system, computer device and readable medium

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104219229B (en) * 2014-08-18 2018-01-12 国家电网公司 The transmission method and device of virtual desktop data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090125838A1 (en) * 2007-11-12 2009-05-14 International Business Machines Corporation Bandwidth usage and latency reduction of remote desktop software based on preferred rendering of a user selected area
US20100011012A1 (en) * 2008-07-09 2010-01-14 Rawson Andrew R Selective Compression Based on Data Type and Client Capability

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070250625A1 (en) * 2006-04-25 2007-10-25 Titus Timothy G Real-time services network quality control
US8462681B2 (en) * 2009-01-15 2013-06-11 The Trustees Of Stevens Institute Of Technology Method and apparatus for adaptive transmission of sensor data with latency controls

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090125838A1 (en) * 2007-11-12 2009-05-14 International Business Machines Corporation Bandwidth usage and latency reduction of remote desktop software based on preferred rendering of a user selected area
US20100011012A1 (en) * 2008-07-09 2010-01-14 Rawson Andrew R Selective Compression Based on Data Type and Client Capability

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
LUBONSKI M ET AL: "An adaptation architecture to improve user-perceived QoS of multimedia services for enterprise remote desktop protocols", NEXT GENERATION INTERNET NETWORKS, 2005 ROME, ITALY 18-20 APRIL 2005, PISCATAWAY, NJ, USA,IEEE, 18 April 2005 (2005-04-18), pages 149 - 156, XP010798887, ISBN: 978-0-7803-8900-7, DOI: 10.1109/NGI.2005.1431660 *
RAMAMURTHY S ET AL: "OPTIMISING THIN CLIENTS FOR WIRELESS COMPUTING VIA LOCALIZATION OF KEYBOARD ACTIVITY", CONFERENCE PROCEEDINGS OF THE 2001 IEEE INTERNATIONAL PERFORMANCE, COMPUTING, AND COMMUNICATIONS CONFERENCE. (IPCCC). PHOENIX, AZ, APRIL 4 - 6, 2001; [IEEE INTERNATIONAL PERFORMANCE, COMPUTING AND COMMUNICATIONS CONFERENCE], NEW YORK, NY : IEEE, US, 4 April 2001 (2001-04-04), pages 249 - 252, XP001049959, ISBN: 978-0-7803-7001-2, DOI: 10.1109/IPCCC.2001.918659 *
See also references of EP2751968A1 *
SIVASUNDAR RAMAMURTHY: "OPTIMIZING THIN CLIENTS FOR WIRELESS COMPUTING VIA LOCALIZATION OF KEYBOARD ACTIVITY DURING HIGH NETWORK LATENCY", A DISSERTATION PRESENTED TO THE GRADUATE SCHOOL OF THE UNIVERSITY OF FLORIDA IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF SCIENCE, 1 January 2000 (2000-01-01), pages 1 - 105, XP055035532, Retrieved from the Internet <URL:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.1635&rep=rep1&type=pdf> [retrieved on 20120814], DOI: 10.1.1.26.1635 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9130842B2 (en) 2011-08-30 2015-09-08 Qatar Foundation System and method for latency monitoring
CN110677312A (en) * 2019-08-15 2020-01-10 北京百度网讯科技有限公司 SDK packet delay monitoring method and system, computer device and readable medium
CN110677312B (en) * 2019-08-15 2023-07-25 北京百度网讯科技有限公司 Time delay monitoring method and system for SDK (software development kit) package, computer equipment and readable medium

Also Published As

Publication number Publication date
EP2751968A1 (en) 2014-07-09
GB201114874D0 (en) 2011-10-12
GB2494126B (en) 2014-01-22
GB2494126A (en) 2013-03-06

Similar Documents

Publication Publication Date Title
US8688847B2 (en) System and method for network connection adaptation
US8990390B2 (en) Remote monitoring and controlling of network utilization
EP2474145B1 (en) Measuring attributes of client-server applications
US8427943B2 (en) Bandwidth-aware multicast load balancing on a multi-interface host
US20100281118A1 (en) Maintaining Connections Between Mobile Devices and Servers
US7689675B2 (en) System and method for communicating with console ports
US8086734B2 (en) Method of autonomic representative selection in local area networks
EP2145246A1 (en) Method and system for dynamic, three-dimensional network performance representation and analysis
US9130842B2 (en) System and method for latency monitoring
WO2003005658A1 (en) Method and apparatus for reporting total call quality
US20130054787A1 (en) System and Method for Latency Monitoring
WO2013029819A1 (en) System and method for latency monitoring
US8656013B2 (en) Real-time data monitoring based on data push
US20170034019A1 (en) Application centric network experience monitoring
EP2751969A1 (en) System and method for latency monitoring
GB2494127A (en) Monitoring latency in a remote access connection using a virtual channel
KR100506844B1 (en) Ip sharer detection method
US11909646B2 (en) Controlling network throughput using application-level throttling
CN113422716B (en) Mail security control method and system
JP2024041699A (en) Network delay monitoring system and monitoring method
CN115914288A (en) Message transmission method and device, storage medium and electronic device
CN116319701A (en) Streaming transmission method and device for audio and video, electronic equipment and medium
EP2498441A1 (en) A method and system for determining quality of experience

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12725696

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

REEP Request for entry into the european phase

Ref document number: 2012725696

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2012725696

Country of ref document: EP