# Patent

## Title
Architecture to enable keyboard, video and mouse (KVM) access to a target from a remote client

## Abstract

A keyboard, video and mouse over an Internet Protocol (IP) switch in which the master and target interfaces share the same IP address and access to the target interfaces from the client is via a Transmission Control Protocol/IP network. The master is able to determine into which switch port the target interface is connected by reading media access control address tables of a switch chipset. Such provides immediate association for a target interface, i.e., the Ethernet port number.

## Background
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS
Ser. No. 11/100,346 filed Apr. 6, 2005 entitled “SCALABLE, MULTI-CHANNEL REMOTE DEVICE MANAGEMENT SYSTEM”.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to a keyboard, video and mouse (KVM) access over an Internet Protocol (IP) switch to a target, e.g., a server, from a remote client (a user with a desktop PC or laptop or the like) connected via a Transmission Control Protocol/Internet Protocol (TCP/IP) network.
2. Description of Related Art
Conventionally, KVM-IP devices enable access over an IP switch for a remote client by doing the following:
1) Transport video: the KVM-IP device connects to the target's video output and digitizes it for transport over the digital TCP/IP network to the client. To minimize the amount of network traffic load, the video is usually compressed using any of a variety of methods.
2) Transport keyboard and mouse: the KVM-IP device also connects to the keyboard and mouse interfaces on the target (typically either PS2 or universal serial bus USB), and relays keystrokes and mouse movements from the client to the target.
3) Status: generally, the KVM-IP device monitors status of the target and conveys it to the client.
The hardware to implement the video transport (generically referred to as an analog/digital (A/D) channel) is expensive, which is why there are conventional KVM-IP devices that connect to more targets (N) than they have A/D channels (M) and use an N×M switch to multiplex the targets to the A/D channels. This constrains the system to only accessing M targets at a time, precluding some advanced features that require continuous access to all targets. Such a system is relatively easy to configure, however, because all the networking intelligence is centralized into a single box, as exemplified by the KX216 product of Raritan Computer (illustrated schematically in FIG. 1).
An alternate approach, illustrated in FIG. 2, is to use a KVM-IP device that provides a dedicated connection to a single target (e.g., a desktop computer or server) and optionally employ a KVM gateway/aggregation device such as the Command Center Secure Gateway provided by Raritan Computer. By using one KVM-IP device for each target, all targets may be monitored simultaneously, enabling advanced features. However, this type of deployment can be cumbersome, because a large number of independent TCP/IP devices must be administered. Some standard techniques can ease the burden (dynamic host configuration protocol (DHCP), centralized management systems such as CC Secure Gateway), but two problems remain:
1) Each KVM-IP device must at some point be manually identified and associated with its connected target.
2) Each KVM-IP device must consume an IP address on the network.
It would be preferable to maintain the performance and feature advantages of the latter solution while eliminating its disadvantages.
The KIMBLE system is a project done by Raritan Peppercon that takes a cluster of eight 1×1 KVM-IP devices, and enables them to share a single IP address and behave as a single 8×8 device. Configuring the KIMBLE system requires a cluster configuration tool, which is used to assign nodes to clusters, and distribute information about a cluster to each of its members. In other words, clusters do not self-configure.
The KIMBLE system cluster selects a master processor (“master”), which then becomes the cluster's portal to the outside world. The initial connection from the client is made to the master. This connection is used for authentication and authorization, and to retrieve information about the cluster. To create a KVM connection to a particular target, the client initiates a TCP connection to the master, using a special TCP port number assigned to that target.
The master routes the packets on this connection very simply, by inspecting the incoming port number and, via a table lookup, inserting the MAC address of the desired element. For the most part, the client is unaware that it is being served by a cluster rather than a single device, but this scheme does require that the cluster may be accessed on a number of different TCP ports.
Because all elements within the cluster share the same IP address, “normal” IP communication within the cluster is not possible. Instead, an intra-cluster communication is employed. That is, the KIMBLE system starts by assigning a special, private IP address (127.1.0.x) to each element in the cluster. These addresses have significance only within the cluster. Such addresses are not allowed on the wire. Each element knows the private IP address and MAC address of each other element in the cluster, and creates static address resolution protocol (ARP) table entries for each. This is necessary because it's not allowed to ARP these addresses on the wire. The responsibility thus falls on the cluster configuration tool to distribute this information to all the cluster elements at configuration time.
When sending to a destination element within the cluster, a source element internally sets its destination IP address to the destination's private address (say, 127.1.0.5). Before appearing on the wire, the Network Address Translation (NAT) function swaps the cluster IP address in for the destination IP address (by this time, the destination MAC address has already been correctly set in the packet). The packet is then sent on the wire to the destination, routed through the intervening Ethernet switching network via the MAC address.
The destination element, upon receiving the packet, looks at the source IP address. If it is equal to the cluster IP address, it substitutes the source's private IP address in for the source IP address of the packet. The packet is then passed to the TCP/IP stacks for normal processing.
In this way, the cluster elements communicate via their private IP addresses, while only the cluster IP address appears on the wire.
FIG. 6 shows the KIMBLE intra-cluster communication, although the representation is not literally accurate as to how the TCP/IP stacks work. It does illustrate adequately how the various translations take place along the path from point A to point B.
It would be desirable to provide high performance and a high level of features to a KVM-IP product, while keeping configuration as simple as “plug and play” so that the architecture, from a configuration standpoint, looks like a simple current-generation KX, but internally hides a full TCP/IP network to accomplish its goals.
SUMMARY OF THE INVENTION
One aspect of the invention resides in an architecture configured to hide its internal configuration of a full TCP/IP network and manage multiple target interface devices (or simply, “target interfaces”) without any need for individual configuration of multiple network devices. This is effected by allowing a master to obtain an association between target interfaces and corresponding port numbers of an Ethernet switch to hand off a socket of the TCP/IP network to the associated target interface. In this manner, a majority of the traffic between the target interface and a client bypasses the master and thus is not subject to performance constraints of the master.



BRIEF DESCRIPTION OF THE DRAWINGS
For a better understanding of the present invention, reference is made to the following description and accompanying drawings, while the scope of the invention is set forth in the appended claims:
FIG. 1 is a schematic representation of a conventional master and target configuration employing a KX2 device of Raritan Computer.
FIG. 2 is a schematic representation of a conventional master and target configuration employing a KVM-IP gateway/aggregation device.
FIG. 3 is a schematic representation of a master and target configuration in accordance with the invention.
FIG. 4 is a schematic representation of FIG. 3, but further showing how the master has knowledge of the port number and MAC address of each available target (self-configuration) in accordance with the invention.
FIG. 5 is a schematic representation of FIG. 3, but further showing a KVM session establishment in accordance with the invention.
FIG. 6 is a schematic representation of an intra-cluster communication in accordance with the invention.
FIG. 7 is a schematic representation of the switch configuration blocking replies from anything other than the master.
FIG. 8 is a schematic representation of a VLAN configuration to contain a configuration request broadcast.
FIG. 9 is a schematic representation of a fixed master MAC address.



DETAILED DESCRIPTION OF THE INVENTION
The present invention is configured like the solution in FIG. 1, but performs like the solution in FIG. 2. Its basic architecture is shown in FIG. 3.
Each target interface contains a full A/D channel, and a TCP/IP endpoint. These devices connect to a master processor (“master”) via standard Ethernet. An Ethernet switch connects the target interfaces, the master, and the external network.
The configuration of the entire system (master+target interfaces) shares a single IP address, which is assigned to the master via standard methods (manual assignment or DHCP). Each target interface, at the time of power-up or initial connection, acquires its configuration from the master.
As part of the configuration process, the master is able to determine into which switch port the target interface is connected, by reading MAC address tables of the switch chipset. This provides an immediate association for a target interface: the Ethernet port number. A target interface that is, for example, connected to port 3, may be initially accessed via an item labeled “port 3” on a list of available targets. Therefore, after plugging the system together, the target interfaces do not need to be physically touched again except as needed for system maintenance.
Following configuration, the master has knowledge of the port number and MAC address of each available target interface. The architecture is illustrated in FIG. 4.
From the standpoint of access by clients (i.e., remote users) on the external network, the architecture 10 of the present invention is a single entity with a single IP address, which is “owned” by the master. To access any one of the connected target interfaces, the client first establishes a connection to the master; this is called the “master connection”. Over this master connection, the client is authenticated and authorized, and is then given pertinent information about the architecture 10, including the availability of each connected target interface.
Turning to FIG. 5, a connection to a particular target is initiated when the client makes a request over the master connection. The target interfaces are connected to individual ones of the targets and serve the KVM session to the client as required. The master negotiates for a KVM session ID with the selected target interface. The master then provides the client with the session ID; and configures its internal tables to note the association of the session ID with the chosen target interface.
Next, the client establishes a new connection with the master, gives the session ID in the first message. The master (via its tables) determines the target that is associated with that ID, then hands off its TCP/IP socket to the selected target interface. After handing off, the master forwards all future packets on this connection from the client to the target interface, until the connection is closed. The target interface sees the handed off connection as if it had been made directly, and uses the session ID to authorize the connection with the client. From then on, the target interface sends data directly to the client, through the Ethernet switch but not through the master. In this way, the majority of traffic (i.e. the video) from the target interface is not subject to the performance constraints of the master. All packets from the client to the target interface (such as mouse or keyboard inputs) must be routed through the master, but those are much lower in quantity, and therefore do not present a performance problem.
The handoff process described above is based on the TCP handoff technique which is a variant of TCP socket migration. TCP handoff or similar techniques are commonly applied for content-aware switching applications. For the present invention, a routing policy based on client requests is implemented to facilitate KVM session management.
The essence of the handoff process in accordance with the invention is to move a TCP/IP socket from the master to the target interface, so that the target interface functions as if it received the connection directly. The master receives the first packet, and uses its contents to determine to which target interface to route the connection. It then, over a separate connection, transfers the socket state to the target interface, along with the first packet. The target interface then starts the TCP/IP processing on the socket and data, and the application on the target interface has no idea what has happened. The process is similarly transparent to the client; as far as it is concerned it is still talking to the master.
Other approaches can solve such a problem, with different virtues and drawbacks. For example, the master could implement a proxy instead of using handoff. The same basic configuration approach would apply, though: one IP address for the whole system, and the client has no visibility of the separate existence of the target interfaces. With a proxy implementation, all traffic in both directions would need to pass through the master, creating a performance bottleneck that could be solved by increasing the performance of the hardware in the master.
Turning to FIG. 6, an intra-cluster communication embodiment of the invention is shown in which the same mechanism as the conventional KIMBLE system is adopted for intra-cluster communication purposes. The following explains how the IP addresses are managed inside the cluster for their internal communication.
The master is assigned a fixed private address (127.1.0.254), which may be considered a private IP address that is used for intra communication within the cluster, and each target interface is assigned a number according to its Ethernet switch port number (e.g., port 5 is given 127.1.0.5). In addition to the private IP address, the master is assigned a (public) cluster IP address. Note that many IP addresses may be bound on a single physical interface.
Intra-cluster communication always appears on the wire using the master's cluster IP address in that the Network Address Translation (NAT) functions, which perform the act of changing an address from one to another within a packet, are installed in the master and all target interfaces.
From the outside, a client sends a request to the master's public address. Such is routed to the respective target interface based on the contents of the request.
An external TCP/IP network sees only a single “device” with a single IP address. Despite this, the node of the architecture of the present invention internally works as a network of KVM-IP devices and is therefore able to provide full simultaneous connectivity to all targets, without any serious performance bottleneck in the master.
Initial contact between the master and the target interfaces is made via one of several possible methods, including:
1) DHCP: As represented in FIG. 7, the target interface broadcasts a DHCP request, which is answered by the master. A port-based VLAN is configured on the Ethernet switch to force all incoming traffic from the network to the Master Processor. Therefore, any attempt by an external agent to directly communicate to a Target Interface will effectively be blocked, including potential responses from other DHCP servers of the network.
2) DHCP w/VLAN: A virtual LAN is configured in the master's Ethernet switch, which includes only the master and the target interface switch ports, as represented in FIG. 8. Therefore, only the master will receive the request, and provide the configuration information in response.
3) Fixed master address: It is possible to provide the master processor with a second interface to the Ethernet switch using a fixed, known media access control (MAC) address, as represented in FIG. 9. This address is used only for target interface configuration, and is therefore kept invisible to the outside network. The target interface sends its configuration request directly to this MAC address, and the master may respond accordingly.
To establish communication between the target interface and the master node, a broadcast request mechanism like DHCP is adopted. The master, upon receiving such a request, identifies an originating requestor's switch port (by matching it with the MAC address), and returns to the requestor its needed configuration information. Such configuration information includes the master's (public) cluster IP address and the requestor's private IP address. In this way, configuration of the node is completely automatic from a deployment perspective. The requester denotes the target interfaces that request IP addresses from the master during initial configuration.
Target Interfaces do not need any public (just to distinguish over the private) IP addresses, because no client is sending packets to them directly. However target interfaces need their own IP addresses for internal communication with the master, so they use private IP addresses in the range 127.1.0.x. The NAT (network address translation) actually translates these private addresses into the master's (public) cluster IP address before putting the packets on the wire.
While the foregoing description and drawings represent the preferred embodiments of the present invention, it will be understood that various changes and modifications may be made without departing from the scope of the present invention.

## Claims

1. An architecture to enable keyboard, video and mouse (KVM) access to a target from a remote client, comprising:
a master and a plurality of target interfaces that share a common Internet Protocol (IP) address on a network, the IP address being assigned to the master, the master including a processor and being arranged to provide a configuration;
an Ethernet switch having switch ports, individual ones of the target interfaces being connected to individual ones of the switch ports, the master being configured to determine into which ones of the switch ports the individual ones of the target interfaces are connected by reading addresses of at least one media access control (MAC) address table of a switch chipset so as to obtain an association between each of the target interfaces and corresponding port numbers of the Ethernet switch;
wherein the master is configured to allocate a session and assign a session identification in response to a request from the client to initiate a connection to a particular one of the target interfaces,
wherein the master is configured to take steps after completing allocation of the session and assignment of the session identification, the steps including notifying the particular one of the target interfaces of the session and the session ID over a direct Transmission Control Protocol/Internet protocol (TCP/IP) connection between the master and the particular one of the target interfaces, informing the client of the session identification and configuring internal tables to associate the session identification with the particular one of the target interfaces,
wherein the master receives a message from the client in which is given the session identification after the client establishes connection with the master, the master being configured to determine via the internal tables the particular one of the target interfaces that is associated with that session identification and then hands off a TCP/IP socket to the particular one of the target interfaces,
wherein the particular one of the target interfaces sends all data to the remote client without the data passing through the processor of the master after the hand off,
wherein the master is configured to answer initial configuration requests broadcast from the target interfaces, the Ethernet switch having a port-based virtual local area network (VLAN) configured to limit configuration request responses received by the target interfaces to responses generated by the master, and
wherein the port-based VLAN is configured to include only the master and one or more external ports providing sole communications access for external devices, so that no external device may communicate directly with the target interfaces.

2. The architecture of claim 1, wherein the port-based VLAN is configured to include only the master and target switch ports so that only the master receives the initial configuration requests from the target interfaces to which the master responds to provide information concerning the configuration.

3. The architecture of claim 1, wherein the servers are dynamic host configuration protocol (DHCP) servers, and the initial configuration requests are DHCP requests.

4. The architecture of claim 1, wherein the master provides the configuration to enable access by a client to any one of the target interfaces, the client being on the network to enable establishing a connection with the master, the master being configured to authenticate and authorize the client over the connection to provide the client thereafter with information about availability of each of the target interfaces.

5. The architecture of claim 1, wherein the master is configured so that after handing off, the master forwards all future packets on the connection from the client to the particular one of the target interfaces until the connection is closed.

6. The architecture of claim 5, wherein the particular one of the target interfaces is configured to see the connection that is handed off as if made directly and uses the session identification to authorize the connection with the client server to thereafter send data directly to the client server through the Ethernet switch bypassing the master to thereby keep a majority of traffic from being subject to performance constraints of the master.

7. The architecture of claim 6, wherein the configuration is configured so that all packets from the client to the particular one of the target interfaces must be routed through the master.

8. The architecture of claim 7, wherein the packets are keyboard or mouse inputs.

9. A method of assembly of architecture to enable keyboard, video and mouse (KVM) access to a target from a remote client, comprising the steps of:
configuring a master and a plurality of target interfaces to share a common Internet Protocol (IP) address on a network;
assigning the IP address to the master, arranging the master to provide a configuration to each of the target interfaces, the master being a processor, wherein the master includes a processor;
connecting individual ones of the target interfaces to individual ones of the switch ports of an Ethernet switch;
configuring the master to determine into which ones of the switch ports the individual ones of the target interfaces are connected by reading addresses of at least one media access control (MAC) address table of a switch chipset so as to obtain an association between each of the target interfaces and corresponding port numbers of the Ethernet switch;
configuring the master to allocate a session and assigning a session identification in response to a request from the client to initiate a connection to a particular one of the target interfaces;
configuring the master to take steps after completing allocation of the session and assignment of the session identification, the steps including notifying the particular one of the target interfaces of the session and the session ID over a direct Transmission Control Protocol/Internet protocol (TCP/IP) connection between the master and the particular one of the target interfaces;
informing the client of the session identification and configuring internal tables to associate the session identification with the particular one of the target interfaces;
receiving a message from the client in which is given the session identification after the client establishes connection with the master, the master being configured to determine via the internal tables the particular one of the target interfaces that is associated with that session identification and then hand off a TCP/IP socket to the particular one of the target interfaces;
sending all data to the remote client from the particular one of the target interfaces to the remote client without the data passing through the processor of the master after the hand off;
configuring the master to answer initial configuration requests broadcast from the target interfaces; and
configuring the Ethernet switch in a port-based virtual local area network (VLAN) configuration operable to limit configuration request responses received by the target interfaces to the answers generated by the master,
wherein the step of configuring the Ethernet switch configures a port-based VLAN including only the master and one or more external ports providing sole communications access for external devices, so that no external device may communicate directly with the target interfaces.

10. The method of assembly of claim 9, wherein the step of configuring the Ethernet switch configures a port-based VLAN including only the master and target switch ports so that only the master receives initial configuration requests from the target interfaces to which the master responds to provide information concerning the configuration.

11. The method of assembly of claim 9, wherein the servers are dynamic host configuration protocol (DHCP) servers, and the initial configuration requests are DHCP requests.

12. An architecture to enable keyboard, video and mouse (KVM) access to a target from a remote client, comprising:
a master and a plurality of target interfaces that share a common Internet Protocol (IP) address on a network, the IP address being assigned to the master, the master including a processor and being arranged to provide a configuration;
an Ethernet switch having switch ports, individual ones of the target interfaces being connected to individual ones of the switch ports, the master being configured to determine into which ones of the switch ports the individual ones of the target interfaces are connected by reading addresses of at least one media access control (MAC) address table of a switch chipset so as to obtain an association between each of the target interfaces and corresponding port numbers of the Ethernet switch;
wherein the master is configured to allocate a session and assign a session identification in response to a request from the client to initiate a connection to a particular one of the target interfaces,
wherein the master is configured to take steps after completing allocation of the session and assignment of the session identification, the steps including notifying the particular one of the target interfaces of the session and the session ID over a direct Transmission Control Protocol/Internet protocol (TCP/IP) connection between the master and the particular one of the target interfaces, informing the client of the session identification and configuring internal tables to associate the session identification with the particular one of the target interfaces,
wherein the master receives a message from the client in which is given the session identification after the client establishes connection with the master, the master being configured to determine via the internal tables the particular one of the target interfaces that is associated with that session identification and then hands off a TCP/IP socket to the particular one of the target interfaces,
wherein the particular one of the target interfaces sends all data to the remote client without the data passing through the processor of the master after the hand off, and
wherein the master has interfaces to the Ethernet switch that respectively use first and second MAC addresses, the first address comprising a public MAC address for communicating with the master on the Ethernet switch and the second address comprising a private, fixed MAC address arranged only for the master to receive target interface configuration requests so as to be kept invisible to the network, the target interface being configured to send initial configuration requests directly to the second MAC address.

13. A method of assembly of architecture to enable keyboard, video and mouse (KVM) access to a target from a remote client, comprising the steps of:
configuring master and a plurality of target interfaces to share a common Internet Protocol (IP) address on a network;
assigning the IP address to the master, arranging the master to provide a configuration to each of the target interfaces, the master being a processor, wherein the master includes a processor;
connecting individual ones of the target interfaces to individual ones of the switch ports of an Ethernet switch;
configuring the master to determine into which ones of the switch ports the individual ones of the target interfaces are connected by reading addresses of at least one media access control (MAC) address table of a switch chipset so as to obtain an association between each of the target interfaces and corresponding port numbers of the Ethernet switch;
configuring the master to answer a request broadcast from the target interfaces, providing the Ethernet switch with a configuration that blocks answers from other servers on the network from responding directly to the request broadcast from the target interfaces;
configuring the master to allocate a session and assigning a session identification in response to a request from the client to initiate a connection to a particular one of the target interfaces;
configuring the master to take steps after completing allocation of the session and assignment of the session identification, the steps including notifying the particular one of the target interfaces of the session and the session ID over a direct Transmission Control Protocol/Internet protocol (TCP/IP) connection between the master and the particular one of the target interfaces;
informing the client of the session identification and configuring internal tables to associate the session identification with the particular one of the target interfaces;
receiving a message from the client in which is given the session identification after the client establishes connection with the master, the master being configured to determine via the internal tables the particular one of the target interfaces that is associated with that session identification and then hand off a TCP/IP socket to the particular one of the target interfaces;
sending all data to the remote client from the particular one of the target interfaces to the remote client without the data passing through the processor of the master after the hand off; and
configuring the master with interfaces to the Ethernet switch that respectively use first and second MAC addresses, the first address comprising a public MAC address for communicating with the master on the Ethernet switch and the second address comprising a private, fixed MAC address arranged only for the master to receive target interface configuration requests so as to be kept invisible to the network; and
configuring the target interface to send initial configuration requests directly to the second MAC address.