Abstract:
According to one embodiment, a method and apparatus for providing services to clients of static or dynamic hardware. The apparatus comprising a network interface directly coupled with the apparatus&#39;s system memory and processors through an internal interconnect in order to provide direct communication to devices connected to the apparatus without the use of the network layer of the Open Systems Interconnection model. The network interface of the said apparatus is also configured to act as the network&#39;s DHCP host and residential gateway. The method includes when receiving a hardware change request from a client using the specified device in the request for the specified function requested without interrupting the services.

Description:
BACKGROUND 
       [0001]    Electronic devices are becoming increasingly mobile and advanced. Many cell phones today have their own operating systems, file systems, and run applications on an event driven basis through a graphical user interface (GUI). Tablets provide these functionalities as well and are easier to carry around than a personal computer (PC) but do not have as high of a capacity for memory storage and computing speed due to physical limitations. At the present time these devices all work independent of each other. For example, a tablet operates as a standalone device and the user session of the operator of said tablet cannot be seamlessly transferred to the operator&#39;s Smartphone, television, or PC. The present invention is designed to overcome the limitations of these devices by providing services to the client&#39;s and adapting to requested changes of hardware without interrupting the client&#39;s user session. 
       SUMMARY OF THE INVENTION 
       [0002]    Preferred embodiments of the invention include the electronics one skilled in the art would find in a traditional server but also includes a network interface comprising a plurality of PHYceivers interfaced to the apparatus&#39; system memory and processor through a switched fabric. However, it is to be understood by those skilled in the art that the claims of the present invention may be achieved with hardware or software or a combination thereof. The preferred embodiment will be assigned three data link layer addresses: one from the perspective of a wide area network (WAN), two from the perspective of a local area network (LAN)/wireless local area network (WLAN)—one for the server portion of the embodiment and one for the router portion of the embodiment. When a data frame is received from the LAN/WLAN the header will be extracted. It will be determined from the frame&#39;s header whether the payload is destined for the server or for the WAN and routed accordingly. The embodiment comprises one or more graphics processing units (GPUs) to provide rendering services for the clients. Clients connected to the embodiment are stored in a database along with data link layer addresses with information about the functionality of each piece of hardware the client is using and will dynamically create relationships between the clients and hardware. The embodiment will route communications between the server portion of the embodiment and the clients based upon these relationships. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0003]      FIG. 1  is an exemplary network architecture based upon prior art; 
           [0004]      FIG. 2  is an exemplary block diagram of an apparatus for providing services to clients on a network according to an embodiment of the present invention; 
           [0005]      FIG. 3  is an exemplary block diagram of a network interface of an apparatus suitable for providing services to clients of static or dynamic hardware on a network; 
           [0006]      FIG. 4  is an exemplary block diagram showing the interconnections of the data link layers; 
           [0007]      FIG. 5  is an exemplary control flowchart showing an operation of providing services to clients of static or dynamic hardware; 
           [0008]      FIG. 6  is an exemplary diagram showing usage information tables and relations stored on an apparatus suitable for providing services to clients of static or dynamic hardware on a network; 
           [0009]      FIG. 7  is an exemplary diagram of a user interface suitable for providing information about devices connected to an apparatus of the present invention and providing a means of sending a hardware change request to said apparatus; 
           [0010]      FIG. 8  is an exemplary diagram showing device usage before and after a hardware change request; 
           [0011]      FIG. 9  is an exemplary diagram showing an interconnect before and after a hardware change request. 
       
    
    
     DETAILED DESCRIPTION 
       [0012]    An embodiment of the invention will be described hereinafter with reference to the accompanying drawings. 
         [0013]      FIG. 1  is an exemplary network architecture based upon prior art. 
         [0014]    Referring to  FIG. 1 , a typical home network  100  is illustrated. The network consists of a cable modem  101 , a router  102 , and a number of clients  103 A-N. If say, for example, client  103 A is a home server with the capacity to provide services to other clients on the network; all communications from or to other clients must pass through the router  102  The home server  103 A would learn and keep a database of all the other client&#39;s  103 B-N network layer addresses and upon sending data to one of the client&#39;s would have to look up the address and wrap the data in a network layer header, then would have to wrap the packet with data link layer header and send this datagram to the router  102  The router  102  would then unwrap the data link layer header from the packet and check for errors. If no errors are found the router  102  would then look up the data link layer controller associated with the destination network layer address found in the network layer header, wrap the packet in a new data link layer header and finally forward the packet to the intended client. 
         [0015]      FIG. 2  is an exemplary block diagram of an apparatus for providing services to clients on a network according to an embodiment of the present invention. 
         [0016]    Referring to  FIG. 2 , the apparatus  200  includes a processor  201 , a graphics/memory controller hub (GMCH)  203 , and an I/O controller hub (ICH)  206 . The GMCH is connected to a network interface and to system memory  204 . System memory may comprise one or more synchronous dynamic random access memory (SDRAM), Double Data Rate SDRAM (DDSDRAM), or one of many other formats of main system memory. 
         [0017]      FIG. 3  is an exemplary block diagram of a network interface of an apparatus suitable for providing services to clients of static or dynamic hardware on a network. 
         [0018]    Referring to  FIG. 3 , the network interface  202  interfaces an apparatus of the present invention  200  with a wide area network (WAN)  307 , a local area network (LAN)  305 , and a wireless local area network (WLAN)  306 . The network interface  201  includes a plurality of PHYceivers (PHY)  301 A-N for connecting a plurality of data link layer controllers  302 A-N to a physical medium such as an optic fiber, a copper cable or an antenna. The data link layer controllers  302 A-N are connected to a queue controller/buffer memory  304  through a switching fabric  303 . The network interface  202  is configured to dynamically manage the connections between the data link layer controllers  302 A-N according to any hardware change requests  407  received by the apparatus of the present invention from clients on a network. The network interface  202  is also configured to act as the gateway between the LAN  305 /WLAN  306  and the WAN  307 . 
         [0019]      FIG. 4  is an exemplary block diagram showing the interconnections of the data link layers; 
         [0020]    Referring to  FIG. 4 , a server  200  is interconnected to a plurality of clients  401 A-N and a WAN  307 . Client devices  401 A-N are connected to the server  200  and are configured to maintain two unique data link layer addresses. The server  200  is configured to maintain three unique data link layer addresses. If a client  401 A-N wishes to transmit data directly to the server without the use of a network layer it transmits the data using its DL 2  address and the DL 2  address of the server  200 . If a client  401 A-N wishes to transmit data to a device on the WAN  307  it will use the transport layer protocol and network protocol of the WAN  307  and use the data link layer address DL 1  to transmit data to the server  200 . The server  200  will then forward the data on to the WAN  307  using its data link layer address DL 3 . When receiving packets from the WAN  307  the server  200  uses the network layer in order to determine which client the packet is intended for and forwards the packet to that client. The server  200  can transfer data directly to the clients  401 A-N with the use of the DL 2  addresses of the server  200  and receiving client  401 A-N. The server  200  transfers data to the WAN  307  using a transport layer and network layer and its DL 3  address. 
         [0021]      FIG. 5  is an exemplary control flowchart showing an operation of providing services to clients of static or dynamic hardware. 
         [0022]    Referring to  FIG. 5 , the apparatus begins listening on the network. Upon receiving a frame  501  the apparatus extracts the destination data link layer address  502  and determines if the frame is intended for the server  503 . If the frame is intended for the server  503  the apparatus extracts the source data link layer controller from the frame and looks up the client associated with this data link layer address  504 . If the frame consists of an interrupt  505  the parameters are sent to RAM and the processor is notified of the interrupt  506 . If the frame is not an interrupt  505  the apparatus will determine if the frame consists of a hardware change request  507 . If the frame does consist of a hardware change request  507  the request parameters are sent to RAM and the processor is notified. If the frame does not consist of a hardware change request  507  it is determined if the frame consists of a hardware info request  509 . If the frame does consist of a hardware info request  509  a user interface providing the information of other devices connected to the apparatus of the present invention and usage status of said devices and providing a means for sending a hardware change request is created and sent to the client  510 . If the frame does not consist of a hardware info request  509  it is determined if the frame consists of data transfer  511 . If the frame does consist of data transfer  511  it is determined if it is the first frame of the transfer  512 , the last frame of the transfer  514  or neither. If it is a first frame, the transfer is initialized  513 . If it is the last frame, the transfer is finalized. If it is neither the transfer is continued  516 . It is to be noted that in this context, data transfer is any communications between clients on a network and the apparatus of the present invention. If the frame does not consist of an interrupt, a hardware change request, a hardware info request or a data transfer an error message is sent to the client that sent the frame. 
         [0023]    If the frame is not intended for the server it is determined if the IP address of the packet is intended to be forwarded to another device on the LAN  518  or to a device on the WAN  520 . If the packet is intended for the LAN  518  the packet is forwarded to the device on the LAN associated with the received destination IP address  519 . If the packet is intended for the WAN  520  the packet is forwarded to the device on the WAN associated with the received destination IP address  521 . If the frame is not intended for the apparatus and the packet contained in the frame is not intended for the LAN or WAN an error message is sent to the client that sent the frame. 
         [0024]      FIG. 6  is an exemplary diagram showing usage information tables and relations stored on an apparatus suitable for providing services to clients of static or dynamic hardware on a network. 
         [0025]    Referring to  FIG. 6 , Usage Table  604  relates information about a client key, a device key and a function key. The client key corresponds to a client in the clients table  603 . The clients table  603  contains information about a key and a user id. The device key of the usage table  604  corresponds to a device in the device table  601 . The device table  601  contains information about a key, a device, a location, a DLL identifier, a NL identifier, and a usage status. The function key of the usage table  604  corresponds to a function in the function table  602 . The function table  602  contains information about a key and a function. In the example of  FIG. 5  according to the usage table  604 , client A is using a tablet as a keyboard and mouse while using the living room TV as a display. Client B is using a Smartphone as a display, mouse and keyboard while using the living room surround sound as an audio device. 
         [0026]      FIG. 7  is an exemplary diagram of a user interface suitable for providing information about devices connected to an apparatus of the present invention and providing a means of sending a hardware change request to said apparatus. 
         [0027]    Referring to  FIG. 7 , upon receiving a hardware info request the server  200  generates a user interface (UI)  701  and sends it to the client&#39;s display. The UI  701  consists of a plurality of graphical representations  702 A-N of all devices connected to the server  200  indicating the functionality(s) and usage status of each device. If a user wishes to use a device that is currently in use by another client, the user can click on the graphical representation of that device  702 A-N sending the client a message. If the client receiving the request agrees to the change the server  200  will generate a UI  701  for that client. The client can then choose to use an additional device for a function or quit the usage of the device that the original request was referencing. Then the server  200  will begin using the device of the user&#39;s hardware change request for the specified function. If the user wishes to use a device that is not being used at the time the request for info is made, a hardware change request is sent to the server via the UI  701  by clicking on the desired function of the desired device. 
         [0028]      FIG. 8  is an exemplary diagram showing device usage before and after a hardware change request; 
         [0029]    Referring to  FIG. 8 , three devices  801 A-N are connected to the server  200  two of which are in use. One device  801 A is in use by a client A  802 A and another device  801 N is in use by client B  802 B. Client A  801 A sends a hardware change request  507  to the server  200  specifying the third device  801 B to be used as the client&#39;s  801 A display. After the hardware change request is granted by the server  200  the third display  801 B is then used as the client&#39;s display. It is to be noted here that applications that the client A  802 A is running on the server  200  are not notified of this change and do not need to be. The operating system and network interface  202  work in conjunction with one another to completely abstract the device usage away from the applications. 
         [0030]      FIG. 9  is an exemplary diagram showing an interconnect before and after a hardware change request. 
         [0031]    Referring to  FIG. 9 , the network interface  202  is connected to the GMCH  203  through a number of lanes  1 - 13 . The server  200  is providing services to two clients. The services interact through a graphics output, data transfer, and interrupts. The GMCH  203  dedicates lane  8  of the interconnect to client B&#39;s graphics output, lane  9  to client B&#39;s data transfer and lane  10  to client B&#39;s interrupts. The GMCH  203  dedicates lane  11  of the interconnect to client A&#39;s graphics output, lane  12  to client A&#39;s data transfer and lane  13  to client A&#39;s interrupts. All of the interactions between client A and the server  200  are routed through the switching fabric to lanes  11 ,  12  and  13 . All of the interactions between client B and the server  200  are routed through the switching fabric to lanes  8 ,  9  and  10 . Upon receipt of a hardware change request from client A specifying a display on the LAN to be used, further graphical output from the server  200  to client A will be routed through the switching fabric to the display&#39;s PHY  301 C. 
         [0032]    While the present invention has been shown and described with reference to a certain preferred embodiment thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the present invention.