« PreviousContinue »
DETECTING AN ACTIVE NETWORK NODE
USING AN INVALID PROTOCOL OPTION
FIELD OF THE INVENTION
The present invention relates generally to telecommunications. The invention relates more specifically to apparatus and methods for allowing either a client or host, which are communicating by way of an access server during a remote session, to know when the other has gone offline.
BACKGROUND OF THE INVENTION
Many telecommunication functions require computer users to connect to remote services to retrieve or transmit information. Increasingly, these remote services arc accessed using an asynchronous dial up connection. This class of functions may include, but is not limited to, dial up connections to the Internet, connections to bulletin boards, connections to internal and external databases and sending and receiving faxes. These functions are carried out during interactive, character-oriented communication sessions via a modem. This is typically known as outbound modem dialing.
To support remote login sessions, various computer manufacturers have developed facilities that allow their users to log in remotely from one computer to another. Within the Internet, the most commonly used method is a facility called "telnet," which is the name of the protocol used to support remote login sessions and also the name of the Transmission Control Protocol/Internet Protocol ("TCP/ IP") remote login program. TCP/IP refers to the suite of protocols that define the Internet. Originally designed for the UNIXTM operating system, TCP/IP software is now available for every major kind of computer operating system. To be on the Internet, a computer must have TCP/IP software. The telnet protocol defines how local and remote computers talk to each other to support a remote login session. A more complete discussion of remote login using telnet is described in D. Dem, "The Internet Guide For New Users," pp. 247-67 (McGraw Hill 1994).
Many computer users are connected to the Internet by access servers on local area networks or enterprise networks. An example of an access server is model number (AS5200), commercially available from Cisco Systems, Inc. To help defer the cost of installing and maintaining additional phone lines, which may be used very little per user, many equipment manufacturers have added the ability to establish remote sessions on the outbound ports of access servers and routers. These remote sessions are supported by an embedded telnet protocol operating in conjunction with other communication software, such as a communication port director.
To support remote sessions via an access server, as opposed to a direct personal computer/remote service connection, the telnet protocol has undergone revision. The name and the result of the process for disseminating information about a proposed standard on the Internet is known as Request for Comments ("RFC"). The standards are currently proposed and published on-line at http:http:// info.intcrnet.isi.edu/innotes/rfc/files/rfc2217.txt.
In RFC 2217, entitled "Telnet Com Port Control Option" and published in Oct. of 1997, the present inventor identified three new areas of functionality within the telnet protocol which needed updating to successfully support the needs of outbound modem dialing. A first new function is the ability for a client to send corn port configuration information to an access server which is connected to the outbound modem.
This ensures that data transmitted and received by the modem is formatted correctly at the byte level. A second new function is the ability for an access server to inform a client of any modem line or signal changes, such as carrier detect (RLSD) changes. This information is vital, since many client software packages use this information to determine if a session with a remote service has been established. The third new function provides the ability to manage flow control between the client and the access server which does not interfere with the flow control mechanisms used by the session between the client and the remote service.
The first new function is carried out by causing a client and server to negotiate a corn port configuration by exchanging messages. The negotiation of the corn port control option protocol uses the standard telnet negotiation protocol mechanism. This mechanism involves the exchange of messages that request an action (a "DO" or "DON'T" messages) and messages that respond to such requests ("WILL" or "WON'T" messages). RFC 2217 identifies the following negotiation messages having the following meanings:
IAC WILL COM-PORT-OPTION
The sender of this command is willing to send corn port control option commands.
IAC WONT COM-PORT-OPTION
The sender of this command refuses to send corn port control option commands.
IAC DO COM-PORT-OPTION
The sender of this command is willing to accept corn port control option commands.
LAC DONT COM-PORT-OPTION
The sender of this command refuses to accept corn port control option commands.
The client can send these commands at any time and at multiple times throughout a telnet session. Each command transmitted from the client to the access server must be acknowledged once the command has been processed by the access server. This confirmation informs the client of the value set at the access server after the processing of the command. This acknowledgment is not used to acknowledge the receipt of the command, which is handled at the TCP protocol layer. Its purpose is to inform the client of the value in use, which may be different than the value requested in the client's command. For example, the client may request a baud rate higher than the access server can provide. If the client does not receive an acknowledgment within a reasonable time, the client may wish to re-send the command or terminate the session.
Once DO and WILL commands have been negotiated, the client may send any of the following Corn-Port Control Option commands:
The following format may be used to send the commands: 15 IAC SB COM-PORT-OPTION COMMAND NAME<value>IAC SE or IAC SB COM-PORT-OPTION COMMAND NAME<text>IAC SE. "IAC" means Interpret As Command, and is denned for use in Telnet in RFC 854, character decimal code 255; "SB" means Subnegotiation
Begin, and is denned for character code 250; "SE" means Subnegotiation End, and is denned for character code 240. The Command Name can be any one of those listed above with the appropriate value or text inserted.
If a client sends a command and there is no acknowledgment by the access server within a reasonable time, the client 25 may wish to re-send the command or terminate the session to save system resources. Generally, a reasonable time period to re-send or terminate would be twice the delay acknowledgement ("delay ack") timer in TCP/IP If the delay ack timer is ten seconds, then the client would wait approxi- 30 mately 20 or 30 seconds before re-sending or terminating. This 20-30 second time period ensures that commands will not be re-sent or that the receiver will not be terminated unnecessarily in the event that the receiver is only slowing down or interrupted temporarily. 35
Unfortunately, when telnet operates as an embedded protocol to support remote TCP/IP sessions, there is no efficient way for either a client or an access server to know when a client or server at the opposite end of the connection has gone offline. In a past approach, a user would execute telnet 40 using a terminal interface, so that the user could type commands to the telnet program and view responses by the remote system. In this past approach, there are visual cues to indicate when either the client or access server had gone off-line. If a user of the client, a PC user for example, 45 depressed a key at the client machine and received no response, the user could surmise that the host had gone offline, and could thereafter terminate the session. Alternatively, the user could test whether the PC had stopped operating or crashed. In this context, a device is "off-line" 50 when it is disconnected, crashed, or otherwise logically or physically unavailable.
When telnet is operated as an embedded protocol within an access server or router, however, there are no visual cues. The telnet program is executed by the access server or router 55 within a network, but such devices do not provide a visual display to the end user when they are in operation. Currently, the only way to know whether the client or access server has gone off-line or become unavailable is to use a timeout mechanism. In some telnet systems, timeout code will 60 disconnect the access server and client after a pre-defined period of inactivity. This approach is a waste of system resources, however, because the access servers and/or outbound modems are occupied and unavailable during this period. Maintaining a TCP/IP connection for an Internet 65 activity using the telnet protocol, for example, ties up buffer space and control sources in operating systems on both ends.
Most systems have limited resources, and it is undesirable to leave open connections where there is no communication. Leaving an open telnet connection can also be a security breach.
Accordingly, it is desirable to have a method or system that enables a client or server to know immediately when the other has gone off-line. With such a method or system, the connection could be terminated or a recovery option could be implemented immediately.
One solution is to create a new protocol to handle this situation. However, this approach is undesirable because of the burden associated with creating and obtaining approval for a new standard. It is desirable to have a method or system that does not require development of a new system protocol and that could use the available telnet protocol options. Further, it is desirable to have a method that would allow a client or access server to let the other know it is "alive" on a frequent basis without requiring an inordinate amount of system resources.
SUMMARY OF THE INVENTION
The foregoing needs, and other needs and objectives that will become apparent from the description herein, are achieved by the present invention, which comprises, in one aspect, a method for a first computer process to determine that a second computer process is active during a communication session using a protocol that defines one or more request messages and one or more corresponding mandatory acknowledgment messages, comprising sending a command from the first computer process to the second computer process, in which the command comprises at least one parameter value that is invalid under the protocol; sending a response from the second computer process to the first computer process, in which the response indicates that the parameter value is invalid; and determining, at the first computer process, that the second computer process is active.
One feature of this aspect involves testing for immediate receipt of the response from the second computer process; and at the first computer process, determining that the second computer process is off-line when the response is not immediately received. A related feature is terminating the communication session when the second computer process does not immediately respond to the command. Another related feature is implementing a recovery procedure when the second computer process does not immediately respond to the command.
According to another feature, the first computer process is a client and the second computer process is an access server that executes the protocol in embedded fashion. In still another feature, the second computer process includes a corn port interface coupled to a modem interface, in which the modem interface is coupled to a remote service that provides information to the client.
Other aspects and features will become apparent from the following description and appended claims. In particular, the invention encompasses an apparatus and a computerreadable medium in the form of a carrier wave that are configured, in certain embodiments, to carry out the foregoing steps.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
FIG. 1 is a block diagram of a communication system;
FIG. 2 is a flow chart showing a method of notifying a client or server that a client or server has gone off-line, according to a preferred embodiment; and
FIG. 3 is a block diagram of a computer system that may 5 be used in the implementation of the invention.
DETAILED DESCRIPTION OF THE
A method of notifying a client or server that a client or 10 server has gone off-line is described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention is may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
OVERVIEW OF OPERATIONAL CONTEXT 20
FIG. 1 is a block diagram of a communication system 112 illustrating a client 100 that is coupled to a remote service 110 through access server 104. In the preferred embodiment, 25 the client 100 resides on a local area or enterprise network 102 supported by an access server 104. The client 100 may be any network device that can carry out a telnet session with the access server 104. Client 100 may specifically refer to a personal computer or any device having a communica- 30 tion port wherefrom data may be transferred. Client 100 may also refer to any software program on the computer or device that is used to contact and obtain data from a server software program, where the client and server are either located on the same premise or are in different locations separated by 35 a significant distance. Any client 100 programs may be designed to work with one or more specific kinds of server programs, and each server may require a specific kind of client.
The communication port traffic from the client 100 is 40 converted to a telnet session and sent to the access server 104. In the preferred embodiment, the access server 104 is any network device which accepts telnet sessions and passes the data received to a corn port, and passes data received from the communication port to the client 100 via the telnet 45 session. The access server 104 may be a computer, or a software package, which provides a specific kind of service to client software running on other computers. Access server 104 may therefore refer to a particular piece of software, or to the machine on which the software is running. A single 50 server machine could have several different server software packages running on it, thus providing many different servers to clients on the network.
In the preferred embodiment, the access server 104 will have a protocol interface, such as the telnet interface 104a 55 shown in FIG. 1. Access server 104 also has at least one communication port interface 104fc ("comport interface"), and an interface to a local area or enterprise network 102. The access server 104 may provide point-to-point protocol connections, meaning that the access server 104 uses a 60 regular telephone line and a modem to make network connections. Alternatively, the access server 104 may use any protocol which allows for connection to an external network such as the global, packet-switched network known as the Internet. 65
The modem 106 interfaced with the corn port interface 104fc can be any modem device that connects the server to
a public switched network by network connection 108, allowing the client to communicate with a remote service 110 through the phone system. Modem 106 may comprise a single modem device or a plurality ("bank") of modems. The remote service 110 can be any service that accepts dial-up connections, such as an Internet Service Provider, a bulletin board or even a fax machine.
In this configuration, access server 104 may provide selective access of client 100 to the remote service 110 or to network connection 108. For example, the access server 104 may be configured with appropriate software to authenticate client 100 when the client seeks to access the network connection. The access server 104 also may be a router or packet data switch.
Client 100 and access server 104 are examples of network nodes or computer processes with which embodiments of the invention may be used. The network nodes may be any element of a network. A client/server relationship among the nodes is not required. Client 100 and access server 104 may be implemented in hardware, software, or a combination of both hardware and software.
Preferably, access server 104 executes an embedded protocol that defines a communication session between client 100 and access server 104. Within the Internet, telnet is the most commonly used facility for supporting remote login sessions. The telnet protocol defines how local and remote computers talk to one another to support a communications session whereby a local computer remotely contacts and logs into the remote computer ("remote login session"). Telnet currently has approximately forty-five (45) on/off parameters that are set during a negotiation phase. In the negotiation phase, the client and access server determine the parameters which will later guide and facilitate the transfer and communication of data. The parameters include, for example, terminal speed, window size, display location, terminal location number, end of record, echo and other aspects of the communication session. The parameters may be set by issuing a command having the syntax "DO [value]", where "value" is a two-octet (2 bytes) value that can represent any value from 0-255.
Telnet has a standard negotiation mechanism. The negotiation mechanism involves communicating request and response messages between the client and server or between a local computer and a remote computer. The negotiation protocol uses four (4) commands in the form of WILL," WON'T", "DO" and "DON'T" commands:
I AC WILL [value]. The sender of this command is willing to send commands represented by "value".
I AC WONT [value]. The sender of this command refuses to send commands represented by "value".
IAC DO [value]. The sender of this command is willing to accept commands represented by "value".
IAC DONT [value]. The sender of this command refuses to accept commands represented by "value".
In the preferred embodiment, either the client 100 or access server 104 could generate the initial DO or WILL command. In response, either the client 100 or access server 104 responds with the WONT or DONT command.
Telnet is merely one example of a protocol that can be used with embodiments of the invention. No particular protocol is required. What is important is that the protocol defines a request-response mode of operation and defines a mandatory response when an invalid request or command is
received. For example, a first network node issues a request to a second network node, and the protocol dictates that the second network node shall respond with a message that acknowledges how the second network node is handling the request. The responsive message may be in the nature of an acknowledgment, a refusal, a success report, an error message, a confirmation, or the like. In one embodiment, the protocol may define a particular mandatory responsive message. In another embodiment, the protocol may define that the responsive message must be returned to the client promptly or immediately. These characteristics, however, are not required.
DETERMINING WHETHER CLIENT OR
SERVER IS OFF-LINE
There is no efficient way for either the client 100 or access server 104 to know whether the other is off-line. Prior to the use of telnet as an embedded protocol, the telnet prompt commands and responses could be viewed on a computer display as a user typed requests and received responses from a remote system. If a command was sent and there was no response, a client user could recognize this immediately and either re-send the command or terminate the session. When telnet is operated as an embedded protocol layered with other software, in an access server, router, or other device that does not have a visual user interface, there is no visual way for the client 100 or access server 104 to know whether the other is off-line, whether to recover or terminate the session, thereby saving system resources.
USE OF INVALID OPTION TO NOTIFY CLIENT OR SERVER THAT A DEVICE IS OFF-LINE
Telnet's four primary negotiating commands (DO, DONT, WILL, WONT) are used to negotiate the values of parameters prior to the transfer of data between a client and an access server. There are approximately 45 parameters currently defined in the telnet standards from among 255 available parameters. Approximately 210 available parameters are not currently defined by any RFC or other Internet standard, and are available for future use.
For the 45 parameters that are defined, if a DO command is executed on one end, from the client 100 for example, the access server 104 will respond with an appropriate WILL or WONT. For example, if the client 100 sends a "DO" command with the value "44", possibly followed by other parameter values, the access server 104 will respond with either a "WILL 44" message or a "WONT 44", depending on whether the access server can logically or physically implement the things required by a "44" parameter. The "DO 44" command represents the client 100 telling the access server 104 to set one or more parameters associated with the value "44" to those values that are included with the "DO 44" command. A "WILL 44" response from the access server 104 indicates that the access server 104 is willing to set the parameters and has set them. A WONT response, of course, indicates that the access server 104 cannot or is not willing to set the parameters. In the preferred embodiment, the client 100 can send these commands at any time and at multiple times throughout a telnet session. Each command transmitted from the client 100 to the access server 104 must be acknowledged once the command has been processed by the access server 104. Thus, an important aspect of the telnet protocol is that whenever a server receives a DO or DONT command, the server must respond with either a WILL message or a WONT message. Moreover, telnet requires that the server response must be immediate. This confirmation
informs the client 100 of the value set at the access server 104 after the processing of the command.
This acknowledgment is not used to acknowledge the receipt of the command, which is handled at the TCP
5 protocol layer. Instead, its purpose is to inform the client 100 of the value in use, which may be different than the value requested in the client's command. If an acknowledgment is not received by the client 100 within a reasonable time, the client 100 may wish to re-send the command or terminate
10 the session.
To determine whether the client 100 or access server 104 is on-line, the present approach utilizes the standard telnet negotiation protocol and leverages the fact that certain telnet command options, particularly 45-253, have not been allocated. In the preferred embodiment, the client 100 sends a DO [value] command to the access server 104, where "value" is any undefined telnet parameter value. For example, in one embodiment, "value" is a numeric value between 45 and 253.
Assume, for example, that a "DO 235" command is sent.
20 The client 100 is telling the access server 104 to carry out the telnet command represented by value "235". Since "235" is an undefined parameter value, it is invalid, and the access server 104 can only respond with the message "WONT 235", meaning that the access server cannot implement
25 parameter "235". The "WONT" response by the access server provides a positive signal to the client 100 that the access server 104 is on-line and operating. If the client 100 does not immediately receive a WONT message from the access server 104, the client knows immediately that the
30 access server 104 is off-line. Accordingly, recovery or termination procedures may be implemented immediately.
FIG. 2 is a block diagram showing a method of notifying a client or server that a client or server has gone off-line,
35 according to a preferred embodiment. In particular, FIG. 2 depicts messages exchanged between the dial out modules of the client 100 and access server 104. The process of FIG. 2 may be implemented as one or more computer programs, functions, subroutines, processes, methods and the like, either in stand-alone form or callable from another program or process.
In block 200, the client sends a command in a particular protocol, containing an invalid parameter, to the server. For example, the client sends a DO command using the telnet
45 protocol, with an invalid telnet parameter value, such as a numeric value between "45" and "253".
In block 201, the server receives the protocol command and extracts parameters from it. In block 202, the server tests whether the protocol command is valid based on the param
50 eters. It should be noted that the steps of block 201 and block 202 form a part of conventional telnet protocol processing at the server. Thus, the present process is advantageous in that it does not require any modification of server-side telnet processing.
55 If the test of block 202 is TRUE, then control is passed to block 208, in which the server processes or responds to the command, as appropriate depending on its contents. In the present process, from the perspective of the client, an error condition exists if control reaches block 208.
60 If the test of block 202 is FALSE, and the server is on-line, then the server immediately responds to the invalid command by sending a responsive message that refuses to process the command, as shown in block 204. For example, access server 104 responds to client 100 with a telnet WONT
In block 206, the client tests whether a response is received promptly from the server. The response by the