Abstract:
A method, apparatus and system for supporting multiple diagnostic sessions include receiving multiple diagnostic session requests, verifying identification information for each requester, establishing a communications channel for each verified requester, and communicating the requested information to all of the verified requesters via the established communications channels.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS  
       [0001]     This patent application claims the benefit of U.S. Provisional Application Ser. No. 60/372,913, filed Apr. 16, 2002, which is incorporated herein by reference in its entirety. 
     
    
     FIELD OF THE INVENTION  
       [0002]     This invention relates to the field of bi-directional communication systems and, more specifically, to the simultaneous support of multiple sessions in a network device of a bidirectional communication system.  
       BACKGROUND OF THE INVENTION  
       [0003]     A Telnet server makes the Internet Protocol (IP) address of a Telnet client accessible to applications by writing the IP address into device associated space initialized when the virtual device at the server is associated with the physical device at the client. Applications retrieve this device IP address using an application program interface, and are thus enabled to do job routing, printer pass-thru, access control and so forth using TCP/IP networks.  
         [0004]     At the host end of the system, the Telnet server is coupled to the network via a transmission control protocol/internet protocol (TCP/IP) process, which provides information transport services; while at each Telnet client site a client is coupled to the network via a similar TCP/IP process. The Telnet server functions to note requests for specified services from Telnet clients and to service those requests. A plurality of application programs are provided at the host installation, and appropriate ones of these programs are selectively coupled to the Telnet server in response to Telnet client requests.  
         [0005]     The procedure in which a point-to-point link is established and information is exchanged between a host application and a Telnet client application is termed a session, and a session typically commences by the generation of a service request by a Telnet client at a client workstation. In response to the receipt of a request for service, the Telnet server establishes a memory structure using host system memory for controlling the service procedure and for retrieving, storing and forwarding information pertaining to the request for service.  
         [0006]     Typically, an authentication routine is initially called to determine whether the Telnet client requester is authorized to participate in the requested service, with the routine typically providing the client user ID and password at the client workstation which is then checked by the Telnet server at the host installation using an authentication application program routine. After the requester has been cleared by the authentication routine, the service requested is carried out in conjunction with the appropriate one or more application programs. Once the service is completed, the session is terminated.  
         [0007]     Multiple Service Operators (MSO) often need to get operating information on networked devices, such as deployed cable modems and customer premises equipment, for testing, diagnosis, and troubleshooting. To facilitate diagnostic analysis and information transfer, many Media Terminal Adaptor (MTA) vendors have implemented Telnet servers on their products (e.g., Voice over IP enabled cable modems and other network devices). The MTA Telnet servers can provide run time and long-term operating information to requesters. A limitation of the Telnet servers, though, is that they currently only support one Telnet session at a time, which limits the diagnostic collaboration between multiple vendor parties.  
       SUMMARY OF THE INVENTION  
       [0008]     The disadvantages heretofore associated with the prior art, are overcome by the present invention of a method and apparatus for supporting multiple Telnet sessions.  
         [0009]     In one embodiment of the present invention a method includes receiving multiple Telnet session requests, verifying identification information for each requester, establishing a communications channel for each verified requester, and communicating the requested information to all of the verified requesters via the established communications channels. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]     The principles of the present invention can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:  
         [0011]      FIG. 1  depicts a high level block diagram of a communications network including an embodiment of the present invention;  
         [0012]      FIG. 2  depicts a high level block diagram of an embodiment of a modem of the present invention suitable for use in the network system of  FIG. 1 ;  
         [0013]      FIG. 3  depicts a flow diagram of an authentication method for providing multiple Telnet sessions simultaneously, in accordance with the principles of the present invention; and  
         [0014]      FIG. 4  depicts a flow diagram of a sending method for providing multiple Telnet sessions simultaneously, in accordance with the principles of the present invention. 
     
    
       [0015]     To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures.  
       DETAILED DESCRIPTION OF THE INVENTION  
       [0016]     The present invention will be described within the context of a cable modem implementing Telnet server technology. However, it will be appreciated by those skilled in the relevant art that the present invention may also be implemented by various other network devices using communication sessions to diagnose, initialize, provision, and otherwise communicate with a network server. Thus, it is contemplated by the inventors that the present invention has broad applicability beyond the MTA described herein. In a preferred embodiment, the present invention advantageously provides a method and apparatus for a Telnet server supporting multiple sessions.  
         [0017]      FIG. 1  depicts a high level block diagram of a communications network including an embodiment of the present invention. The communications network  100  of  FIG. 1  comprises a subscriber terminal (illustratively a personal computer (PC))  110 , which communicates with a modem  120 , which communicates with a data service system (illustratively a Internet/Intranet service system (ISS))  130 , which communicates with remote Internet and Intranet systems  140 ,  150  via an interconnect network  160 . The ISS  130  provides Internet or Intranet service to its subscriber sites (e.g., subscriber terminal  110 ) via the modem  120 . Subscribers connect to the ISS  130  from their terminals (e.g., personal computers, Macintoshes, Web terminals and the like, typically including memory, processing and input/output functionality) via the interconnect network  160 .  
         [0018]     The ISS  130  comprises content servers (not shown) that store data for access from the subscriber terminals. The content servers support servers for Internet applications, such as electronic mail, bulletin boards, news groups, and World Wide Web access. In addition, the ISS  130  comprises web proxy servers (not shown) that allow a network administrator to restrict access to the remote Internet systems  140  or remote Intranet systems  150 . Another use of the proxy servers is to cache frequently accessed data from the Internet. The ISS  130  also comprises address assignment servers (not shown). The address assignment servers assign an address to the subscriber terminal  110  when it is first connected to the ISS  130 . The assigned address uniquely identifies the subscriber terminal  110  in the ISS  130 .  
         [0019]     The ISS  130  employs the Internet Protocol (IP) for data communication to and from various servers, as well as with the remote systems  140  and  150 . The Transmission Control Protocol (TCP) operates above the IP layer and ensures reliable delivery of information to the content servers in the ISS  130  and the remote systems  140  and  150 . The application protocols that operate above the TCP layer are specific to the applications being accessed by the subscriber terminal  110 . For example, the File Transfer Protocol (FTP) is used for file transfers and the Hyper Text Transport Protocol (HTTP) is used for web accesses. Each of the remote Internet systems  140  and/or each of the remote Intranet systems  150  typically include the same or similar servers and modules as those described above for the ISS  130 .  
         [0020]     The communications network of  FIG. 1  illustratively further includes a Telnet client  170  in the PC  110 , a Telnet client  180  in the ISS  130  and a Telnet server  190  in the modem  120 . One exemplary function of the Telnet server  190  within the modem  120  is to initiate a plurality of diagnostic tests to detect a fault within the network system and provide a requesting client(s)  170 ,  180  with run time and long-term operating information upon receiving a diagnostic request. The Telnet clients  170 ,  180  in the PC  110  and the ISS  130 , respectively and the Telnet server  190  in the modem  120  operatively communicate according to the Telnet logon protocol.  
         [0021]      FIG. 2  depicts a high level block diagram of an exemplary embodiment of a modem  120  comprising a diagnostic Telnet server  170 , in accordance with the principles of the present invention, suitable for use in the network system  100  of  FIG. 1 . The modem  120  of  FIG. 2  comprises a processor  210  as well as a memory  220  for storing control programs and information. The memory  220  of the modem  120  further comprises the Telnet server  190  including a web server  222  and a diagnostic engine  224 , the function of which are described below. The processor  210  cooperates with conventional support circuitry  230  such as power supplies, clock circuits, cache memory and the like as well as circuits that assist in executing the software routines stored in the memory  220 . As such, it is contemplated that some of the process steps discussed herein as software processes may be implemented within hardware, for example, as circuitry that cooperates with the processor  210  to perform various steps. The modem  120  also contains input-output circuitry  240  that forms an interface between the various functional elements communicating with the modem  120 . For example, in the embodiment of  FIG. 1 , the modem  120  communicates with the subscriber terminal  110  via a signal path S 1  and with the ISS  130  via signal path S 2 .  
         [0022]     Although the modem  120  of  FIG. 2  is depicted as a general purpose computer that is programmed to perform various control functions in accordance with the present invention, the invention can be implemented in hardware, for example, as an application specified integrated circuit (ASIC). As such, the process steps described herein are intended to be broadly interpreted as being equivalently performed by software, hardware, or a combination thereof. Furthermore, although the Telnet server  190  of  FIG. 2  is depicted as being located within the memory  220  of the modem  120 , the Telnet server  190  may be located outside of the memory  220  of the modem  120 , or may comprise a separate component in communication with the cable modem  120 , in accordance with the principles of the present invention.  
         [0023]     The web server  222  is implemented using known web server technologies. For example, in one embodiment, the web server  222  is implemented using the web server technology developed by Netscape Communications Corporation of Mountain View, Calif. In another embodiment, the web server  222  is implemented using the web server technology developed by Microsoft Corporation of Redmond, Wash.  
         [0024]     Referring to  FIG. 1 , when a diagnostic request from the Telnet client  170  in the PC  110  or the Telnet client  180  in the ISS  130  is communicated to the Telnet server  190  in the modem  120 , the web server  222  in the Telnet server  190  of the modem  120  decodes the diagnostic request. The web server  222  then parses and packages the data contained in the diagnostic request. That is, the web server  222  puts the decoded request in the proper data structure (e.g., the data structure specified by the Netscape Application Programming Interface from Netscape Communications Corp.). The processed request is then sent to the diagnostic engine  224  of the Telnet server  190  of the modem  120  via an intrahost communication socket. The intrahost communication socket is a communication protocol. In one embodiment, the intrahost socket is a UNIX domain socket. Alternatively, the socket may comprise other types of known sockets (e.g., INET socket). Thus, the web server  222  functions as a pass-through element that enables communication between the requesting device and the diagnostic engine  224 .  
         [0025]     The diagnostic engine  224  subsequently receives the processed data of the diagnostic request from the web server  222 . The diagnostic engine  224  functions to interpret the data within the diagnostic request. The diagnostic engine  224  then invokes the test routines that are specified in the diagnostic request. In an alternate embodiment of the present invention, the diagnostic engine  224  can function intelligently to determine which tests are to be invoked based on the information contained in the diagnostic request and based on the history information of the ISS  130 . The history information may include knowledge of previous troubleshooting experience and service topology information of the network system  100 . The test routines performed by the diagnostic engine  224 , when run, check various parts (including the servers and other components) of the clients  170 ,  180  in the PC  110  and the ISS  130 , respectively, and the cable modem  120  itself, according to the Telnet protocol.  
         [0026]     The diagnostic engine  224  receives the test results from the executed test routines and then correlates the test results to determine which components within the system are faulty or malfunctioning. The final test results are then sent to the requesting client for display via the web server  222 .  
         [0027]     The operation of the modem  120  will now be described in more detail. The modem of  FIG. 1  and  FIG. 2 , in accordance with the principles of the present invention, is capable of supporting multiple Telnet sessions, wherein each task can be opened or closed independently. The operation of the modem  120  comprises two threads operating substantially concurrently. In one embodiment of the present invention, a Telnet authentication task in the modem  120  waits for a client to logon. When a new client attempts to connect, the authentication task requests for a user ID and a password required for the client to gain access to the modem  120 . When the user ID and password are verified, the Telnet authentication task opens a socket and saves the session information, such as the client IP address and a listening port number. The authentication task then again waits for a new client to logon. The same authentication procedure is followed for each client attempting to logon to the modem  120 . If the number of clients reaches a maximum allowable number of clients, determined by the number of available slots that can be provided by the modem  120 , the authentication task will reject the next new client.  
         [0028]     Operating contemporaneously with the Telnet authentication task is a Telnet sending task. The Telnet sending task waits for the modem  120  to generate the relevant information in response to a request from a client. The generated information is then sent to all of the active Telnet clients. If a specific send function fails (i.e., a send failure in a specific socket), the modem  120  assumes that the client is no longer active (disconnected), and the Telnet sending task will make available the particular client slot associated with the failed send command to the next client attempting to logon. The authentication task which manages the clients&#39; logon procedure operates separate from the sending task. If a subsequent client attempts to log on while the Telnet server  190  is sending information to the current clients, the subsequent client is verified as described above and a request from the subsequent client is serviced individually in a subsequent sending task. The sending task will only send information to clients who were previously verified by the authentication task.  
         [0029]      FIG. 3  depicts a flow diagram of an authentication method for providing multiple Telnet sessions, simultaneously in accordance with the principles of the present invention. The method  300  is entered at step  302  in which an authentication task of the Telnet server of the modem receives a request from a client to logon. The method  300  then proceeds to step  304 .  
         [0030]     At step  304 , the method  300  requests for a user ID and a password required for the client to gain access to the modem. The method  300  then proceeds to step  306 .  
         [0031]     At step  306 , the method  300  determines if the user ID and password are valid. If the user ID and password are valid, the method  300  proceeds to step  308 . If the user ID and password are not valid, the method  300  rejects the client&#39;s attempt to logon and the method  300  is exited.  
         [0032]     At step  308 , the method  300  determines if there is an open socket available for the requesting client. If there is a socket available for the requesting client, the method  300  proceeds to step  310 . If a socket is not available for the requesting client, the method  300  rejects the client request and the method  300  is exited.  
         [0033]     At step  310 , the method  300  saves the session information such as, the client IP address and the client receiving port number. The method  300  then returns to step  302  to wait for a next Telnet client to log on.  
         [0034]      FIG. 4  depicts a flow diagram of a sending method for providing multiple Telnet sessions simultaneously in accordance with the principles of the present invention. The sending method  400  operates substantially concurrently with the authentication method  300 . The method  400  is entered at step  402  in which a sending task of the Telnet server of the modem awaits for the modem to generate the relevant information to be sent to the clients logged on. The method  400  then proceeds to step  404 .  
         [0035]     At step  404 , the method  400  then communicates the generated information to each of the active Telnet clients via a socket with the client destination IP address and receiving port number which were saved in step  310 . The method  400  then proceeds to step  406 .  
         [0036]     At step  406 , the method  400  determines if a send function failed to any of the Telnet clients. If a send function failed, the method  400  proceeds to step  408 . If there were no send function failures, the method  400  returns to step  402 .  
         [0037]     At step  408 , the method  400  assumes that the client, associated with the slot wherein the send function failed, is no longer active (disconnected), and the sending task will make available the particular client slot associated with the failed send command to the next client attempting to logon. The method  400  then returns to step  402 .  
         [0038]     While the forgoing is directed to some embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof. As such, the appropriate scope of the invention is to be determined according to the claims, which follow.