Programmable data center

Techniques are disclosed for providing a programmable data center, which includes a plurality of computers, a plurality of computing devices or resources, a programmable service fabric, and an operation controller. The computers act as computing hosts; the resources are associated with computing service providers; the programmable service fabric implements “virtual wires” represented by wavelengths to connect the hosts to the resources; and the operation controller manages operations of the data center. As customers desire a computing system for their applications, the customers provide their computing requirements identifying the number of hosts, the number of resources, etc., from which the operation controller creates a customized system from the utility data center. The operation controller, based on the provided requirements, selects the appropriate hosts, resources, and available wavelengths that implement the virtual wires, etc. The operation controller also programs the components of the programmable service fabric to convert the electrical signal to light waves, to create the light path for the light waves to travel to from the hosts to appropriate destinations, to reconvert the light waves to the electrical signals, to map these signals to the resources, etc. Embodiments of the invention including the virtual wire technologies provide both performance and security isolations between systems customized for individual customers.

FIELD OF THE INVENTION

The present invention relates generally to computing systems and, more specifically, to a programmable data center.

BACKGROUND OF THE INVENTION

In computing systems, computers and other resources may not reside at the same or neighboring physical locations. Some computers, e.g., hosting servers, may be at one location while the resources, such as the storage arrays, may be at various other locations remote from the hosts. Transferring data in these systems commonly uses the Ethernet and/or Fiber channel switches, which switch or route the data. However, Ethernet switches, like many other connection fabrics, use physical wires with associated technology-specific protocols, and a protocol is normally designed for a particular fabric, but does not work with another fabric. As a result, a fabric supports only one protocol. For example, an Ethernet fabric uses the Ethernet protocol to process Ethernet packets, a Fiber channel fabric uses the Fiber channel protocol to process Fiber channel packets, an Infiniband fabric uses the Infiniband protocol to process Infiniband packets, etc.

Current utility data centers typically include more than one type of fabric in which various systems customized for various customers may share the same fabric for the same technology, e.g., Ethernet fabric for Ethernet packets, Fiber channel for Fiber packets, etc. Unfortunately, systems sharing the same fabric may be able to interfere with operations of one another.

For almost all fabrics, when the number of resources increases, particularly in large-scale systems, transferring data between the resources is more complicated, and a fabric may encounter its limitation. This is because the high data volumes usually require complicated networking infrastructure, including hierarchical trees and/or meshes. In many cases, a simple bottleneck within a fabric may slow the whole system. For example, in a hierarchical tree, data from one side of the tree must traverse to the top node before arriving at its destination on the other side. A bottleneck at the top node thus can slow the data movements between the two sides and/or limit the ability to relocate resources from one side to another side. As the number of resources increases, the number of wires or cables connecting the resources also increases. Further, large-scale systems in data centers also tend to use expensive storage arrays to implement securities, to provide programmability features, virtual disk arrangements, etc. These storage arrays and their corresponding fabrics must support very high bandwidths to reduce performance interactions between systems.

Based on the foregoing, it is desirable that mechanisms be provided to solve the above deficiencies and related problems.

SUMMARY OF THE INVENTION

The present invention relates to techniques for providing a programmable data center, which, in one embodiment, includes a plurality of computers, a plurality of computing devices or resources, a programmable service fabric, and an operation controller. The computers act as computing hosts; the resources are associated with computing service providers; the programmable service fabric implements “virtual wires” represented by wavelengths to connect the hosts to the resources; and the operation controller manages operations of the data center.

The programmable service fabric in turn includes a plurality of programmable transponders of two different types, a plurality of multiplexers, a programmable optical switching fabric, and a plurality of de-multiplexers. A transponder of the first type converts electrical signals representing host services to light waves represented by tunable wavelengths. A multiplexer combines multiple light waves into one fiber. The switching fabric routes the combined light waves to the appropriate de-multiplexer, which de-aggregates the combined light waves to separate light waves. A transponder of the second type re-converts the separate light waves to electrical signals and maps these signals to appropriate ports or interfaces connected to the resources.

As customers desire a computing system for their applications, the customers provide their computing requirements identifying the number of hosts, the number of resources, etc., from which the operation controller creates a customized system from the data center. The operation controller, based on the provided requirements, selects the appropriate hosts, resources, and available wavelengths that implement the virtual wires, etc. The operation controller also programs the components of the programmable service fabric to convert the electrical signals to light waves, to create the light path for the light waves to travel to and from the hosts to appropriate destinations, to reconvert the light waves to the electrical signals, to map these signals to the resources, etc. Embodiments of the invention including the virtual wire technologies provide both performance and security isolations between systems customized for individual customers.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the invention 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 obscuring the invention.

FIG. 1Ashows a utility data center (UDC)100upon which embodiments of the invention may be implemented. UDC100includes a plurality of hosts110, a plurality interfaces or ports1105for hosts110, a programmable fabric170, a plurality of interfaces or ports1705for resources180, a plurality of computing resources180, and an operation controller190. Hosts110and resources180can be at different locations, and one may be remote from another one. UDC100may be used to implement a utility data center comparable to that provided by, e.g., Hewlett-Packard Company of Palo Alto, Calif. Interfaces1105and1705, depending on implementations may be divided into groups of sets, and each interface is therefore identified by two indices, e.g., an interface1105(1)(1), an interface1105(1)(2), and interface1105(N)(M), etc.

The Hosts

A host110is a computer, which, in general, provides processing power for computer services. A host110may be referred to as a node, a server, etc. A host110, usually via interface cards, is connected to one or a plurality of data interfaces or ports1105, each of which can adapt to a different technology or communication protocol for carrying data, such as the Ethernet, the Fiber channel, the Infiniband, the serial cables, etc.FIG. 1Ashows that interfaces1105are separate from host110and optical fabric170. However, interfaces1105can be part of optical fabric170and/or a host110. Similarly, interfaces1705, shown as separate from fabric170, may be part of fabric170.

Generally, signals appearing at interfaces1105are in the form of electrical signals, and fabric170converts these signals to light waves, routes these light waves to appropriate destinations, and re-converts the light waves to electrical signals to appear at interfaces or ports1705. Resources180connected to interfaces1705are generally computing resources, including, for example, the Ethernet or Fiber channel switches, routers, storage arrays, etc.

The Operation Controller

Operation controller190manages operations of UDC100, and, in one embodiment is implemented in software. However, operation controller190may be implemented in various ways such as firmware, hardware or circuitry, a combination of hardware and firmware, etc. Operation controller190may reside at any convenient location including, for example, a host110, a dedicated server, etc. Operation controller190, based on requirements provided by customers, can create a system customized for the customers. Operation controller190selects appropriate hosts110, resources180, and available wavelengths in fabric170that represent virtual wires to connect selected hosts110and resources180. Operation controller190creates the light paths for data to be transferred between hosts110and resources180, through appropriate components of UDC100and of fabric170. For example, operation controller190, via control interfaces of the components of fabric170, programs appropriate transponders to convert electrical signals to and from light waves, programs the switching fabric to route data from an input port to appropriate output ports, to command a multiplexer or de-multiplexer to aggregate or de-aggregate appropriate wavelengths, etc.

The Programmable Fabric

FIG. 1Bshows an embodiment of programmable fabric170that includes a plurality of first-type transponders120, a plurality of multiplexer130, a switching fabric140, a plurality of de-multiplexers150, and a plurality of second-type transponders160. Each set of a multiplexer130and a transponder120is associated with a set of interfaces1105, and each set of a de-multiplexer150and a transponder160is associated with a set of interfaces1705.

The Programmable Control Interfaces

In one embodiment, components of UDC100, e.g., interfaces1105and1705, transponders120and160, multiplexers130, switching fabric140, and de-multiplexers160, etc., are programmable, and are controllable by operation controller190. In general, each of these components includes a programmable control interface (not shown) for receiving inputs from operation controller190, and, based on the provided inputs and individual component operation, provides the desired outputs. Depending on the manufacturers and the type of individual components, the control interface of each component varies and is subject to a particular operation specification. Operation controller190, based on each specification and via the corresponding control interface, provides inputs to program the corresponding component, and thus achieve the desired results. Operation controller190may also use a protocol such as the Simple Network Management Protocol (SNMP) to effect the components' behavior. For example, operation controller190may use the SET command from the SNMP protocol to modify a switching table in switching fabric140, and thus cause the desired switching results.

The First-Type Transponder

A first-type transponder120converts electrical signals on a set of interfaces1105to light waves represented by wavelengths on lines1205. These electrical signals are manifestations of communication or service protocols such as the Ethernet, the Fiber channel, the Infiniband, etc. In one embodiment, inputs of a transponder120receive a particular protocol, e.g., the Ethernet, the Fiber channel, and, therefore, a host110having multiple protocols may require a set of transponders120, one for a particular protocol. However, in the example shown inFIG. 1Bthat inputs of a transponder120may receive multiple protocols, a host110may be associated with only one transponder120. Operation controller190, via the control interface of a transponder120, programs a transponder120to assign a wavelength to a service or to reclaim a wavelength that is no longer used, for later use. Typically, because a transponder120provides many wavelengths to be selected for a service signal, the wavelengths may be referred to as tunable. In one embodiment, via the tuple (electrical signal S, wavelength W), operation controller190commands a transponder120to map signal S of the desired protocol/service from an interface1105onto a specific light wave represented by a wavelength W. Transponder120can process light waves that support different data transfer rates such as 10 Gbits/second, 20 Gbits/second, 40 Gbits/second, etc. In one embodiment, a transponder120is manufactured by Cisco Systems of San Jose, Calif., such as the Cisco ONS 15540 ESP. Alternatively, a transponder120may be manufactured by Nortel Networks Corp. of Canada or of other manufacturers.

The Multiplexer

A multiplexer130receives a plurality of light waves on lines1205as inputs, combines them into a single fiber, and outputs it on a line1305. In one embodiment, operation controller190uses the tuple, e.g., (input ports1, wavelengths W, output port O) to command a multiplexer130to aggregate light waves represented by wavelengths W on the input ports I to the specified output port O. Because the light waves at inputs1205may be from different technologies and/or services, the fiber on line1305in effect transports data from different technologies and/or services. Further, because the fiber on lines1305processes wavelengths without regard to the technology at interfaces1105, fabric170may be referred to as service or technology transparent, and the fiber on lines1305can support new services or technologies as long as they can be converted to light waves. Additionally, because the light waves on fibers1305effectively operate independently of one another even within the same fiber, these light waves do not interfere with one another, and thus provide security and performance isolations. Having only one output on a line1305, which becomes an input of switching fabric140, reduces the number of physical cables that would be used as inputs for switching fabric140and simplifies the tasks of switching fabric140. In one embodiment, a multiplexer130is implemented using one of the GigaMux Metro DWDM Transport Systems by Sorrento Networks of San Diego, Calif. In this embodiment, a multiplexer130can multiplex up to 64 input wavelengths onto a fiber.

The Optical Switching Fabric

Switching fabric140includes a plurality of input ports on lines1305and a plurality of output ports on lines1405. As shown inFIG. 1B, an input port corresponds to a multiplexer130, a transponder120, and a set of interfaces1105. Similarly, an output port corresponds to a de-multiplexer150, a transponder160, and a set of interfaces1705. However, in various embodiments, a transponder120or a transponder160may be replaced by a set of transponders120or a set of transponder160, respectively. Switching fabric140receives wavelengths at the input ports and “switches” or “routes” the wavelengths to the output ports on lines1405to be sent to the corresponding de-multiplexers150. In one embodiment, switching fabric140maintains a switching table for switching a particular wavelength to a particular output port. For example, switching fabric140, based on the switching table, routes a wavelength W1 to a predetermined output port O1, a wavelength W2 to a predetermined output port O2, a wavelength W3 to a predetermined output port O3, etc. These wavelengths may or may not be from the same input port I. Alternatively, operation controller190uses the tuple, e.g., (wavelength W, input port I, output port O) to program wavelength W to be switched from input port I to output port O. Other effective switching approaches for routing wavelengths are within the scope of the invention.

FIG. 1Bshows only one switching fabric140as an example. In various situations, switching fabric140may send data to one or more additional switching/routing fabric comparable to switching fabric140before the data reaches a de-multiplexer150. Alternatively, switching fabric140may include more than one switching layer in which a switching layer routes data to another layer, and the data is routed from an input port through the layers to the appropriate output port. Layers of switches increase the number of hosting servers and other resources such as switches, routers, and storage systems to be included in UDC100. Technologies used in switching fabric140vary, including, for example, reflecting mirrors, which are used to reflect the desired light wave from the input port to the appropriate output port. In one embodiment, switching fabric140is implemented using the Sorrento Networks' TeraMatrix wavelength switching platform, which includes optical switches having 4 input ports and 4 output ports to 512 input ports and 512 output ports for fibers, and up to 64 wavelengths per fiber. Operation controller190can program the TeraMatrix to allocate desired wavelengths. Switching fabric140may be referred to as an optical switching fabric because it processes light waves.

The De-Multiplexers

A de-multiplexer150de-aggregates the combined light waves on a line1405into separate light waves on lines1505. The combined light waves on a line1405may come from various locations and/or hosts110. Operation controller190may use the tuple, e.g., (wavelength W, output port O) to direct wavelength W to output port O. In one embodiment, the Sorrento Networks GigaMux Metro DWDM Transport System is used to implement a de-multiplexer150. As shown inFIG. 1B, a de-multiplexer150is associated with a transponder160and a set of interfaces1705, which are usually at the same or neighboring vicinity or physical locations, and any signal to be destined at one of these interfaces1705is sent to the associated de-multiplexer150.

The Second-Type Transponders

A transponder160converts light waves on lines1505to electrical signals and maps them to appropriate interfaces1705. The electrical signals on interfaces1705correspond to the electrical signals on interfaces1105. For example, if a packet, e.g., packet P(1) on interface1105(1)(1) is an Ethernet packet, then after traveling through an embodiment of fabric170, packet P(1) appears, e.g., on interface1705(1)(1) as an Ethernet packet. Similarly, if a packet, e.g., packet P(2) on interface1105(1)(2) is an Infiniband packet, then, after traveling through optical fabric170, packet P(2) appears, e.g., on interface1705(2)(1), as an Infiniband packet, etc. Depending on embodiments, outputs of a transponder160may provide one or more than one protocol.

The Light Paths

To send data between a host, e.g., host110(1) and a resource, e.g., resource180(1), a light path between host110(1) and resource180(1) is established. Once the light path has been established, the data can be transferred between the hosts and the resources. This light path allows the light wave to traverse through an interface1105, a transponder120, a line1205, a multiplexer130, a line1305, switching fabric140, a line1405, a de-multiplexer150, a line1505, a transponder160, and an interface1705. When a system is created from UDC100, e.g., for use by an application of a customer, operation controller190identifies appropriate hosts110and resources180, and creates the light paths for carrying data between the identified hosts110and resources180. In one embodiment, the topology information regarding hosts110, resources180, and their connectivity is readable by operation controller190, and is typically included in a file. Alternatively, the information can be stored in other means also readable by operation controller190, such as a database, a file server, etc. This information usually includes the quantity of hosts110and of resources180, the type of each resource, the number and the kind of connections, etc. Operation controller190then regards hosts110, transponders120and160, multiplexers130, switching fabric140, de-multiplexers150, and resources180as a logical graph, and, through this graph, determines the paths for virtual wires connecting hosts110and resources180. In one embodiment, operation controller190uses Dijkstra's shortest-path algorithm for identifying such paths. In another embodiment, switching fabric140includes management software that can identify a path.

Operation controller190also identifies an available wavelength to assign to the corresponding electrical signal on interface1105for an identified path. A wavelength is available for use if it is not in conflict, e.g., not being used by other components or subsystems of UDC100along the path being established. Thus, a wavelength may be used more than once as long as each use is for a distinct path. Operation controller190also selects a wavelength that would reduce the likelihood of conflicts for wavelengths. To make available a wavelength, operation controller190may re-assign wavelengths between resources. For example, a system S1 can use either a wavelength W1 or W2, but a system S2 can only use wavelength W2. However, wavelength W2 is being used by system S1, and wavelength W1 is available, but cannot be used by system S2. Operation controller190then switches wavelength W1 to be used by system S1, and thus makes wavelength W2 available to be used by system S2.

Operation controller190also programs the appropriate components, e.g. transponders120and160, switching fabric140, multiplexer130, de-multiplexer150, etc., for each component to perform its corresponding operations. As a result, through these components, there are connectivity or “virtual wires” between hosts110and resources180.

When a customer seeks to add hosts110and/or resources180to an existing system, the customer provides relevant information, e.g., the quantity of hosts110and/or resources, the number and kind of connections, etc. Operation controller190adds the necessary virtual wires as described above. Similarly, when a customer seeks to remove a host110and/or a resource180, operation controller190identifies the affected virtual wires and programs the relevant component, e.g., optical switching fabric140, to discontinue their corresponding use of the wavelengths, and thus free these wavelengths for future use. In general, information to add or remove a virtual wire is readable by operation controller190, and may be stored in a file, a file server, a database, etc. To act accordingly, operation controller190keeps a record of the used and unused wavelengths in UDC100. Unused wavelengths are available to allocate to new applications and/or customers. The total number of wavelength for use in UDC100and for a system customized for an individual customer varies depending on embodiments of optical fabric170.

Features of the Utility Data Center

Features of UDC100appear in various embodiments. UDC100is service transparent because it, via programmable fabric170, processes light waves withoutregard to the packet protocols that have been converted into the light wave protocol and re-converted to the packet protocols. As long as a service signal can be converted into light waves and back to the service signal, that service can use fabric170. This is different from prior data center approaches in which a technology-specific fabric processes packets based on a protocol only associated with that fabric.

UDC100may be referred to as programmable because, based on the programmability of transponders120and160, multiplexer130, de-multiplexer160, etc., an arbitrary host110may be connected to an arbitrary resource180, and thus form a particular system for a particular customer. Further, a wavelength can be arbitrarily selected or programmed to correspond to a signal of an interface1105. As a result, using different sets of wavelengths and based on the programmability of the components in fabric170, various systems, e.g., one for a particular customer, having different configurations of hosts110and resources180may be created or “programmed” concurrently. For example, one customer may seek to have a single hosting server110connected to a storage array via a Fiber channel connection. Another customer may seek to have a multitude of Web, application, and database servers interconnected via Ethernet switches and routers, along with firewalls and load balancers. Servers110may also be interconnected with storage arrays and appliances using their corresponding protocols and fabric resources.

UDC100using fabric170may also be referred to as providing virtual wires that replace the physical wires required by other approaches to connect hosts110and resources. Each wavelength allows connectivity or the transferring of data between a host110and a resource180, and therefore may be referred to as a virtual wire. In approaches using physical wires, as the number of hosts and/or resources increases, the number of wires increases. However, fabric170using light waves requires only some basic physical wires but can connect various different sets of hosts110and resources180.

A group of hosts110designed for a system and/or a customer can be securely isolated from another group of hosts110designed for a different system and/or customer. This is because, in general, the wavelengths used to transfer data between hosts110and resources180in a system are independent of the wavelengths of another system. Information from one wavelength does not propagate to another wavelength, even if the two wavelengths use the same fabric on a line1305. As a result, one wavelength cannot interfere with another wavelength. Additionally, hosts110have no control over the electrical signals that have been converted into light waves of different wavelengths. For example, once a transponder120is programmed to generate a set of wavelengths for a particular customer and/or host110, this host110has no control over that transponder120to change that set of wavelengths. Since hosts110cannot change the wavelengths, hosts110cannot change the data associated with the wavelengths.

Because systems created from UDC100can operate independently and their data is free from interference from one another, system performance can increase. Further, because each system is provided with a set of wavelengths to connect its customized hosts110and resources180, the connection architecture within the customized system is usually simple, and therefore also results in performance increase.

A First Exemplary Embodiment of the Utility Data Center

In this embodiment, UDC100includes1024hosts110and256resources180. Each host110includes two Ethernet interfaces1105, two fiber channel interfaces1105, one RAM server interface1105, and one console interface1105, and thus for a total of six interfaces1105. Consequently, the total number of Ethernet interfaces1105, the total number of Fiber channel interfaces1105, the total number of RAM server interfaces1105, and the total number of console interfaces1105in UDC100is 2048 (=1024 hosts×2 interfaces per host), 2048 (=1024 hosts×2 interfaces per host), 1024 (=1024 hosts×1 interface per host), and 1024 (=1024 host×1 interface per host), respectively. Six interfaces1105of a host110corresponds to a set of transponder120, a multiplexer130, and a line1305.

Switching fabric140includes two layers, e.g., layer one and layer two, in which each layer includes16switches having 64 inputs. At the input side, each switch of layer one is connected to 64 lines1305or 64 (=1024 hosts/16 switches) multiplexers130with one multiplexer per host while at the output side, four output fibers of a switch of layer one are connected to the inputs of each 16 switches of layer two. Thus switches of layer one have 64 outputs, and switches of layer two have 16 outputs that are connected to de-multiplexers150.

A Second Exemplary Embodiment of the Utility Data Center

In this embodiment, UDC100includes 4096 hosts110and 1024 resources180. Each host110includes two Ethernet interfaces1105, two fiber channel interfaces1105, one RAM server interface1105, and one console interface1105, and thus for a total of six interfaces1105. Consequently, the total number of Ethernet interfaces1105, the total number of Fiber channel interfaces1105, the total number of RAM server interfaces1105, and the total number of console interfaces1105in UDC100is 8192 (=4096 hosts×2 interfaces per host), 8192 (=4096 hosts×2 interfaces per host), 4096 (=4096 hosts×1 interface per host), and 4096 (=4096 hosts×1 interface per host),respectively. Six interfaces1105of a host110corresponds to a transponder120, a multiplexer130, and a line1305.

Switching fabric140includes two layers, e.g., layer one and layer two, in which each layer includes 64 switches having 64 inputs. At the input side, each switch of layer one is connected to 64 lines1305or 64 (=4096 hosts/64 switches per host) hosts via multiplexers130, with one multiplexer per host. At the output side, one output fiber of a switch of layer one is connected to 64 inputs of a switch of layer two. Layer-one and layer-two switches each have 64 output fibers.

Illustrative Steps for Programming a Customize System of the Data Center

FIG. 2Ashows a flowchart illustrating the steps for programming a system customized for use by an application of a customer, in accordance with one embodiment.

In step202, the customer provides a system topology identifying the number of hosts110, the number of resources180, and connectivity between those hosts and resources.

In step206, operation controller190selects hosts110and resources180that will be used to satisfy the customer's request.

In step208, operation controller190finds a path connecting a host110to a resource180.

In step212, operation controller190, among the set of wavelengths supported by UDC100, chooses an available wavelength that can be supported by the path to implement the connection. Operation controller190, if necessary, re-assigns wavelengths.

In step216, operation controller190programs the appropriate components of fabric170, and thus together with the chosen wavelength forms a virtual wire. For example, operation controller190commands a multiplexer130/a de-multiplexer150to aggregate/de-aggregate different wavelengths, commands switching fabric140to route the selected wavelengths, commands transponders120and160to convert the electrical signal to and from the corresponding wavelength, etc.

In step220, operation controller190repeats steps208to216to establish all connections or virtual wires between the identified hosts110and resources180, and the application can thus use these virtual wires to transfer data.

Adding a host110and/or a resource180to an existing system may invoke steps202to220in the above flowchart. Deprogramming transponder120to disallow the use of the selected wavelength removes the corresponding virtual wire or disconnects the corresponding host110and resource180.

Steps for Selecting a Wavelength

FIG. 2Bis a flowchart250illustrating the steps in selecting a wavelength, e.g., for use in the example ofFIG. 2A. A wavelength wfinalis finally selected for connectivity between a transponder120(y) and a de-multiplexer150(z). For illustration purposes, y equal 1. Since a host110and a resource180is appropriately connected to transponder120(1) and de-multiplexer150(z), respectively, wavelength wfinal, once selected, provides connectivity between transponder120(1) and de-multiplexer150(z).

In step252, for each transponder120(i) in all transponders120in fabric170, identify a set of wavelengths S(i) that is available within fabric170and that can support a light path between transponder120(i) and de-multiplexer150(z). Each set of wavelengths S(i) excludes wavelengths that are currently allocated for use within UDC100along the path between transponder120(i) and de-multiplexer150(z). For illustration purposes, sets of wavelengths S(1), S(2) and S(3) correspond to transponder120(1),120(2), and120(3) and include wavelengths W(1)(1), W(1)(2); wavelengths W(2)(1), W(2)(2), W(2)(3); and wavelength W(3)(1), respectively. In this example, it is assumed that wavelengths W(1)(1), W(2)(1) and W(3)(1) are identical while wavelengths W(1)(2) and W(2)(2) are identical.

In step256, for each wavelength w as supported by fabric170, and each transponder120(i), assign a first value 1 to countit(w,i) if, besides wavelength w, there is at least one other wavelength that can be used for a light path between transponder120(i) and de-multiplexer150(z), assign a second value 0 to countit(w,i) if wavelength w is the only wavelength that can be used for a light path between transponder120(i) and de-multiplexer150(z), and assign a third value −1 to countit(w,i) if wavelength w is not in the set of wavelengths S(i) or is not usable. The first value of 1 and the third value of −1 are used as an example only, different values are also efficient such as when the first value is equal to or greater than zero and the third value is less than zero.

In set S(1), for wavelength W(1)(1), countit(W(1)(1), 1) equals 1 because wavelength W(1)(2) can be used for a light path. For wavelength W(1)(2) countit(W(1)(2), 1) equals 1 because wavelength W(1)(1) can be used for a light path. For wavelength W(1)(3) not in set S(1), counit(W(1)(3), 1) equals −1 because wavelength W(1)(3) is not used in this example.

In set S(2), for wavelength W(2)(1), countit(W(2)(1), 2) equals 1 because wavelength W(2)(2) or W(2)(3) can be used for a light path. For wavelength W(2)(2), countit(W(2)(2), 2) equals 1 because wavelength W(2)(1) or W(2)(3) can be used for a light path. For wavelength W(2)(3), counit(W(2)(3), 2) equals 1 because wavelength W(2)(1) or W(2)(2) can be used for a light path.

In set S(3), for wavelength W(3)(1), countit(W(3)(1), 3) equals 0 because no other wavelength can be used for a light path. For wavelength W(3)(2) and W(3)(3), both countit(W(3)(2), 3) and countit(W(3)(3), 3) equal −1 because wavelength W(3)(2) or W(3)(3) are not usable.

In step260, for all wavelengths w in set S(y), and for n=0 to first value, calculate count(w,n) as the number of transponders120(i) when countit(w,i) equals to n, but i does not equal to y, which, in this example, is 1.

For all wavelengths in S(y) or S(1), count(W(*)(1), 0) equals 1, which is the number of transponders that have n=zero alternatives to wavelength W(*)(1), where * indicates the transponders120(i) not including i equal to y; count(W(*)(1), 1) equal 1, which is the number of transponders that have at least n=one alternative to wavelength W(*)(1). Similarly, count(W(*)(2), 0) and count(W(*)(2), 1) equal 0 and 1, respectively.

In step264, for each wavelength w in set S(y) or S(1), calculate weightedcount(w) that equals the sum of the product of count(w,n) and value n, for n=−1, 0, and 1 to first value.
Weightedcount(W(1)(1))=(count(W(1)(1),0)*(−1))+(count(W(1)(1), 1)*1)=(−1)+1=0.
Weightedcount(W(1)(2))=(count(W(1)(2), 0)*(−1))+(count(W(1)(2), 1)*1)=0+1=1.

In step268, select the wavelength w that corresponds to the largest weightedcount(w) as the wavelength wfinalfor use in connectivity between transponder120(i) and de-multiplexer150(z). In step264, because W(1)(2) is associated with the largest weighted count of 1, W(1)(2) is selected as the wavelength wfinal.

The above algorithm250helps to reduce contention for wavelengths. For example, if a wavelength w that corresponds to a smaller or the smallest weightedcount(w) is chosen as the wavelength Wfinal, then transponders120other than transponder120(y) had fewer or no options other than that wavelength w for the light path between transponder120(y) and de-multiplexer150(z).

Steps Illustrating Operation of the Data Center

FIG. 3is a flowchart illustrating the operational steps of a system created inFIG. 2A, in accordance with one embodiment. In this example, two hosts110(1) and110(2) seek to send two packets P(1) and P(2) to two devices180(1) and180(2) connected to two interfaces1705(1)(1) and1705(2)(1), respectively.

In step304, hosts110(1) and110(2) send packets P(1) and P(2) in the form of electrical signals onto appropriate interfaces, e.g., interfaces1105(1)(1) and1105(1)(2), respectively. For illustrative purposes, packet P(1) is an Ethernet packet, and packet P(2) is a Fiber channel packet. Consequently, interfaces1105(1)(1) and1105(1)(2) are the Ethernet and the Fiber channel interfaces, respectively.

In step308, transponder120(1) converts the electrical signal of packets P(1) and P(2) into light waves having wavelengths, e.g., lambda(1) and lambda(2) on line1205(1)(1) and1205(1)(2), respectively.

In step312, multiplexer130(1) passes lambda(1) and lambda(2) onto the fiber on line1305(1). In various situations, multiplexer130(1) may combine lambda(1) with lambda(2) and/or with other light waves represented by other lambdas.

In step316, switching fabric140, routes each lambda(1) and lambda(2) to an appropriate de-multiplexer150that is associated with the final destination of each lambda. For illustration purposes, switching fabric140routes lambda(1) to demultiplexer150(1) and lambda(2) to de-multiplexer150(2).

In step320, lambda(1) arrives at de-multiplexer150(1), and lambda(2) arrives at de-multiplexer150(2). At this point, each lambda may have been combined with other lambdas.

In step324, de-multiplexer150(1) de-aggregates the combined light waves on line1405(1) into separate light waves including lambda(1) on line1505(1)(1). Similarly, de-multiplexer150(2) de-aggregates the combined light waves on line1405(2) into separate light waves including lambda(2) on line1505(2)(1).

In step328, transponders160(1) and160(2) convert lambda(1) and lambda(2) to electrical signals representing packets P(1) and P(2), respectively. Transponders160(1) and160(2) also maps packets P(1) and P(2) to appropriate interfaces1705. That is, transponder160(1) maps packets P(1) to an Ethernet interface, e.g., interface1705(1)(1) connected to device180(1) while transponder160(2) maps packets P(2) to a Fiber channel interface, e.g., interface1705(2)(1) connected to device180(2). At this point, using fabric170as a connecting media, hosts110(1) and110(2) have successfully transmitted packets P(1) and P(2) to desired destination device180(1) and180(2).

Additional Explanation

In the above discussion, a host110may be considered a sender of data while a resource180may be considered a receiver of data. In that context, a resource180may be a sender sending data to a host110acting as a receiver. Consequently, inFIGS. 1A and 1B, a host110may be replaced by a resource, e.g.,180′, and a resource180may be replaced by a host, e.g.,110′. Thus, data may be sent by a resource180′ to a host110′, through an interface1105′, a transponder120′, a line1205′, a multiplexer130′, a line1305′, switch140′, a line1405′, a de-multiplexer150′, a transponder160′, and an interface1705′ in which an interface1105′, a transponder120′, a line1205′, a multiplexer130′, a line1305′, switch140′, a line1405′, a de-multiplexer150′, a transponder160′, and an interface1705′ are comparable to an interface1105, a transponder120, a line1205, a multiplexer130, a line1305, switch140, a line1405, a de-multiplexer150, a transponder160, and an interface1705, respectively. In one embodiment, both sets of components1105,120,130,140,150,160, and1705and1105′,120′,130′,140′,150′,160′, and1705′ are used in programmable fabric170for hosts and resources to communicate with one another.

In an alternative embodiment, each component of programmable data center100and of programmable fabric170may function in both directions between hosts and resources. For example, a transponder120may convert electrical data on lines1105to wavelengths on lines1205, and from wavelengths on line1205to electrical data on lines1105. A transponder160may convert wavelengths on lines1505to electrical data on lines1705, and from electrical data on lines1705to wavelengths on line1505. A multiplexer130may multiplex wavelengths on lines1205to a line1305, and de-multiplex the combined wavelength on a line1305to separate wavelengths on lines1205. A de-multiplexer150may de-multiplex the combined wavelengths on a line1405to separate wavelengths on lines1505, and multiplexes wavelengths on lines1505to a line1405. Switching fabric140may route wavelengths on a line1305to a line1405, and on a line1405to a line1305, etc.

Computer System Overview

FIG. 4is a block diagram showing a computer system400upon which an embodiment of the invention may be implemented. For example, computer system400may be implemented to operate as a host110, to perform functions in accordance with the techniques described above, etc. In one embodiment, computer system400includes a central processing unit (CPU)404, random access memories (RAMs)408, read-only memories (ROMs)412, a storage device416, and a communication interface420, all of which are connected to a bus424.

CPU404controls logic, processes information, and coordinates activities within computer system400. In one embodiment, CPU404executes instructions stored in RAMs408and ROMs412, by, for example, coordinating the movement of data from input device428to display device432. CPU404may include one or a plurality of processors.

RAMs408, usually being referred to as main memory, temporarily store information and instructions to be executed by CPU404. Information in RAMs408may be obtained from input device428or generated by CPU404as part of the algorithmic processes required by the instructions that are executed by CPU404.

ROMs412store information and instructions that, once written in a ROM chip, are read-only and are not modified or removed. In one embodiment, ROMs412store commands for configurations and initial operations of computer system400.

Storage device416, such as floppy disks, disk drives, or tape drives, durably stores information for use by computer system400.

Communication interface420enables computer system400to interface with other computers or devices. Communication interface420may be, for example, a modem, an integrated services digital network (ISDN) card, a local area network (LAN) port, etc. Those skilled in the art will recognize that modems or ISDN cards provide data communications via telephone lines while a LAN port provides data communications via a LAN. Communication interface420may also allow wireless communications.

Bus424can be any communication mechanism for communicating information for use by computer system400. In the example ofFIG. 4, bus424is a media for transferring data between CPU404, RAMs408, ROMs412, storage device416, communication interface420, etc. In one embodiment, bus424is implemented using optical fabric170.

Computer system400is typically coupled to an input device428, a display device432, and a cursor control436. Input device428, such as a keyboard including alphanumeric and other keys, communicates information and commands to CPU404. Display device432, such as a cathode ray tube (CRT), displays information to users of computer system400. Cursor control436, such as a mouse, a trackball, or cursor direction keys, communicates direction information and commands to CPU404and controls cursor movement on display device432.

Computer system400may communicate with other computers or devices through one or more networks. For example, computer system400, using communication interface420, communicates through a network440to another computer444connected to a printer448, or through the world wide web452to a server456. The world wide web452is commonly referred to as the “Internet.” Alternatively, computer system400may access the Internet452via network440.

Computer system400may be used to implement the techniques described above. In various embodiments, CPU404performs the steps of the techniques by executing instructions brought to RAMs408. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the described techniques. Consequently, embodiments of the invention are not limited to any one or a combination of software, firmware, hardware, or circuitry.

Instructions executed by CPU404may be stored in and/or carried through one or more computer-readable media, which refer to any medium from which a computer reads information. Computer-readable media may be, for example, a floppy disk, a hard disk, a zip-drive cartridge, a magnetic tape, or any other magnetic medium, a CD-ROM, a CD-RAM, a DVD-ROM, a DVD-RAM, or any other optical medium, paper-tape, punch-cards, or any other physical medium having patterns of holes, a RAM, a ROM, an EPROM, or any other memory chip or cartridge. Computer-readable media may also be coaxial cables, copper wire, fiber optics, acoustic or electromagnetic waves, capacitive or inductive coupling, etc. As an example, the instructions to be executed by CPU404are in the form of one or more software programs and are initially stored in a CD-ROM being interfaced with computer system400via bus424. Computer system400loads these instructions in RAMs408, executes some instructions, and sends some instructions via communication interface420, a modem, and a telephone line to a network, e.g. network440, the Internet452, etc. A remote computer, receiving data through a network cable, executes the received instructions and sends the data to computer system400to be stored in storage device416.

In the foregoing specification, the invention has been described with reference to specific embodiments thereof. However, it will be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded as illustrative rather than as restrictive.