Programmable Delay in Networked Optical Systems
Patent Information
- Application Number
- JP2023127128
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2023-03-28
- Filing Date
- 2023-08-03
- Publication Date
- 2025-03-04
- Estimated Expiration
- 2043-08-03
Smart Images

Figure 0007639072000002 
Figure 0007639072000003 
Figure 0007639072000004
Abstract
Description
[Background technology]
[0001] background Fairness in transmitting and receiving data is based on the assumption that end users receive the same information at the same time and that it takes the same time to transmit information to all end users. To ensure fairness, networks typically change the length of physical cables in the network along which data is transmitted to increase or decrease latency along a particular network path. Lengthening or shortening cable lengths is difficult to achieve with precision. Furthermore, lengthening or shortening cable lengths is expensive, both in terms of manpower and materials, especially in large networks. Summary of the Invention
[0002] overview The technology is generally directed to programming delays in hardware already present in a fiber network to mitigate unfairness in transmitting and receiving data. The delays may be programmed into the optical hardware after the network is installed. The delays may be determined based on the length of the cable and / or the time it takes a network switch to replicate the data being transmitted. According to some examples, the delays may be programmed into one or both of the egress and ingress optical hardware of the cable. Programmable delays may mitigate unfairness in one destination or end user receiving data before another destination when the information is intended to be received synchronously.
[0003] One aspect of the present technology is directed to a method, the method including one or more processors identifying a plurality of cables in a network switch, the one or more processors determining a remaining number of copies of data for a given cable of the plurality of cables, the remaining number of copies comprising a total number of cables in the plurality of cables minus a number of completed copies of the data, the method further including one or more processors determining a delay for each cable of the plurality of cables, the delay for each cable based on the remaining number of copies of the data for each cable and an amount of time to create each copy of the data, and the one or more processors programming optical hardware for each cable based on the delay.
[0004] The optical hardware may include ingress optical hardware and egress optical hardware. Programming the optical hardware may include programming at least one of the ingress optical hardware or the egress optical hardware. When programming the optical hardware, the method may further include the one or more processors programming the ingress optical hardware based on a delay of each cable and synchronously transmitting data over the multiple cables based on a delay of each of the multiple cables.
[0005] The method may further include a replication engine copying data transmitted over the plurality of cables, wherein a total number of copies made by the replication engine corresponds to a total number of cables included in the plurality of cables minus one.
[0006] The method may further include the one or more processors determining a length of each cable, and the one or more processors determining a second delay based on the length of each cable. Determining the second delay may further include the one or more processors determining a length of time for data to travel along the length of each cable, the one or more processors comparing the times, and the one or more processors determining a second delay for each of the plurality of cables based on the comparison. The method may further include the one or more processors programming optical hardware for each cable based on the second delay for each cable.
[0007] The delay for each cable may allow data sent over each cable to arrive at each destination synchronously.
[0008] Another aspect of the present technology is directed to a device including one or more processors that may be configured to identify a plurality of cables in a network switch and determine a remaining number of copies of data for a given cable of the plurality of cables, the remaining number of copies comprising a total number of cables in the plurality of cables minus a number of completed copies of the data, the one or more processors further configured to determine a delay for each cable of the plurality of cables, the delay for each cable based on the remaining number of copies of the data for each cable and an amount of time to create each copy of the data, and the one or more processors further configured to program optical hardware for each cable based on the delay.
[0009] Yet another aspect of the present technology is directed to a non-transitory storage medium including instructions that, when executed by one or more processors, cause the one or more processors to identify a plurality of cables in a network switch, determine a remaining number of copies of data for a given cable of the plurality of cables, the remaining number of copies comprising a total number of cables in the plurality of cables minus a number of completed copies of the data, further cause the one or more processors to determine a delay for each cable of the plurality of cables, the delay for each cable based on the remaining number of copies of the data for each cable and an amount of time to create each copy of the data, and further cause the one or more processors to program optical hardware for each cable based on the delay. [Brief description of the drawings]
[0010] [Figure 1] FIG. 2 is a block diagram of an example network in which all cables are equal length, in accordance with an aspect of the present disclosure. [Diagram 2] FIG. 2 is a block diagram of an example network in which cables may have different lengths, in accordance with aspects of the present disclosure. [Diagram 3] FIG. 2 is a block diagram of an example network including optical hardware on both ends of a cable in accordance with an aspect of the present disclosure. [Figure 4] FIG. 1 is a block diagram of an example system according to an aspect of the present disclosure. [Diagram 5] FIG. 13 is a flow diagram of an example method for programming a delay in accordance with an aspect of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] Detailed Description The present technology is generally directed to programming delays in fiber optic networks to mitigate unfairness in transmitting and receiving data. Programmable delays allow data to be transmitted and / or received synchronously, which may mitigate unfairness in one destination or end user receiving data before another when the information is intended to be distributed synchronously.
[0012] The delay may be programmed into the optical hardware after the fiber optic network is installed. The optical hardware may be configured, for example, via an I2C bus. For example, a fiber optic network may include multiple fiber optic cables, multiple network switches, multiple optical hardware, etc. The delay may be programmed into one or both of the egress and ingress optical hardware of the cable. The amount of delay may be determined based on imbalance of the cable between the network switch and the user hardware. Additionally or alternatively, the amount of delay may be determined based on the time it takes the network switch to replicate data to be transmitted. According to some examples, the delay may be programmed into the egress and / or ingress optical hardware to compensate for different lengths of cable.
[0013] By determining and programming the delays after the fiber optic network is installed, the delays may be determined based on real-time latency variations within the cables of the system. Moreover, by programming the delays based on this real-time variation, the delays may be efficiently determined and implemented per cable. For example, programming the delays may reduce the need to manually modify the fiber optic network, such as adding or subtracting fiber lengths. This may reduce material costs and increase the efficiency of correcting unfairness, since the delays are programmed into hardware that is already part of the fiber optic network.
[0014] The programmable nature of the delay allows the system to be scaled and implemented for large data centers. For example, the delay for a particular channel may be determined and programmed based on measured data. Programmable delay is also suitable for use in high speed data centers where data travels at rates of gigabits per second, e.g., 25 gigabits per second.
[0015] FIG. 1 illustrates an example of a network configuration between a network switch and destination hardware. The network may be, for example, a fiber optic network, a copper wire, or an Ethernet network. The network 100 may include a network switch 102, optical hardware 106-114, a number of cables 116-124, and destination hardware 126-134. According to some examples, the network switch 102 may be a "Top of Rack" (TOR) switch, and the destination hardware 126-134 may be user or consumer hardware. The network switch 102 may include a replication engine 104. The replication engine 104 may be configured to replicate or copy data and transmit it via the cables 116-124. The cables 116-124 may be, for example, fiber optic cables, Ethernet cables, and the like.
[0016] Data may be transmitted from the network switch 102 to multiple destinations 126-134, or end users, via the cables 116-124. The network switch 102 may be a leaf of a multicast tree in some examples. To prevent unfairness in which the destination hardware 126-134 receive data via the network switch 102 at different times, the data must arrive at the destination hardware 126-134 at approximately the same time. The data may be, for example, a multicast packet. A delay for each cable 116-124 may be determined to ensure that the data arrives at the destination hardware 126-134 at the same time. The delay may be determined after the fiber optic network 100 is installed and may be programmed into the optical hardware 106-114 before the data is transmitted from the network switch 102 to the destination hardware 126-134. The delay may be programmed in an effort to ensure fairness in that the data is transmitted and received synchronously by the destination hardware 126-134.
[0017] A number of cables 116-124 may be coupled to the network switch 102. Data may be transmitted from the network switch 102 to destination hardware 126-134 via the number of cables 116-124. The order in which data is transmitted via the cables 116-124 may be static. The static order may indicate that the order of transmission does not change between data transmissions. According to some examples, by determining a static order, a delay for each individual cable may be determined rather than determining a uniform delay for all cables. For example, as shown in FIG. 1, cable 116 may be first in the static order and cable 124 may be last in the static order. In such an example, cable 118 is second, cable 120 is third, and cable 122 is fourth. In this example, the static order of the cables 116-124 is from left to right. In another example, the static order of cables 116-124 may be ordered from right to left, with cable 124 first in the static order and cable 116 last in the static order, or may be ordered moving from center to right, with cable 120 first in the static order and cable 118 last in the static order. Thus, ordering cables 116-124 from left to right is by way of example only and not limitation.
[0018] In some examples, the delay for each cable 116-124 may be different based on where it is in the static order of transmission and the number of copies remaining to make. For example, the delay for the first cable in the static order of transmission is greater than the delay for the last cable in the static order of transmission. For example, if cable 116 is the first cable in the static order and cable 124 is the last cable in the static order, the delay for cable 116 will be greater than the delay for cable 124. The delay may be determined based on the time required for replication engine 104 to replicate the data and the number of times replication engine 104 must replicate the data. In some examples, the delay may be based on the number of copies remaining to make after copies for each cable have been created.
[0019] According to some examples, the remaining number of copies to make may be based on the total number of cables coupled to the network switch 102 minus the number of copies completed. As shown in FIG. 1, there are five cables 116-124 in the network 100. Using cable 118, which is the second cable in the static order of transmission, as an example, two copies have been made, e.g., a copy for cable 116 and a copy for cable 118. After the copy for cable 118, the remaining number of copies to make is three. To determine the delay for the second cable, e.g., cable 118, the remaining number of copies, three, may be multiplied by the time it takes the replication engine 104 to make a copy of the data.
[0020] The delay allows each cable 116-124 to receive a copy of the data from the replication engine 104 before the data is transmitted. In some examples, the delay for each cable 116-124 allows the data to be transmitted simultaneously and / or received synchronously by the destination hardware 126-134. The delay may be programmed into the egress and / or ingress optical hardware 106-114. For example, the data may be transmitted simultaneously and a delay may be programmed into the ingress optical hardware 106-114 such that the data is received synchronously by the destination hardware 126-134. In another example, a delay may be programmed into the egress optical hardware 106-114 such that the data is transmitted with a delay but received synchronously by the destination hardware 126-134. In yet another example, a delay may be programmed into both the egress and ingress optical hardware 106-114 such that the data is received synchronously by the destination hardware 126-134.
[0021] As an example, as shown in FIG. 1, if there are five cables 116-124 and the replication engine 104 requires 1 nanosecond per replication, the delay for the first cable 116 may be 4 nanoseconds, the delay for the second cable 118 may be 3 nanoseconds, etc., and the delay for the fifth cable 124 may be 0 nanoseconds. The 4 nanosecond delay for the first cable 116 allows the replication engine 104 to replicate data for each subsequent cable 118-124 in the order in which they are transmitted. By delaying the transmission of data through the first cable 116 by 4 nanoseconds, each remaining cable 118-124 may receive a copy of the data to be transmitted during the delay. Furthermore, by delaying the transmission of data through the first cable 116 by 4 nanoseconds, the final copy of data for the last cable 124, e.g., the fifth cable 124, is completed. Therefore, the delay in the first cable 116 may correspond to the time it takes for the replication engine 104 to copy the data for each of the remaining cables 118-124.
[0022] Additionally or alternatively, the delay may be based on the length of the fiber. For purposes of the example of FIG. 1, the length of each cable 116-124 is approximately equal. In an example where the lengths of the cables 116-124 are approximately equal, no delay would be needed to compensate for the differences.
[0023] After a delay period, the data may be transmitted from the network switch 102 to the destination hardware 126-134. The delays for each cable 116-124 allow the data to be transmitted by the network switch 102 so that it can be synchronously received by the destination hardware 126-134.
[0024] 1 illustrates a network in which the network switch 102 may be a TOR and the destination hardware 126-134 may be end users, according to some examples, the destination hardware 126-134 may be a TOR such that the network switch 102 is simply a network switch, such as an S2 switch, and not a TOR. In such examples, each of the destination hardware 126-134 may be a leaf of a multicast tree. A delay may be determined to compensate for the fan-out of the replication engine 104 from the network switch 102 to the destination hardware 126-134 (e.g., each leaf of the multicast tree).
[0025] FIG. 2 illustrates another example of a network configuration. The network 200 may be substantially similar to the network 100 described in FIG. 1 and may include a network switch 202, optical hardware 206-214, cables 226-234, and destination hardware 216-224. The network switch 202 may be, for example, a TOR leaf of a multicast tree. The destination hardware 216-224 may be consumer hardware or may be hardware at an end user's location. The cables 226-234 differ from the cables 116-124 of FIG. 1 in that the cables 226-234 may have different lengths. In such an example where the cables 226-234 have different lengths, the delay in transmitting data from the network switch 202 to the destination hardware 216-224 may be based on the length of the cables 226-234, in addition to or instead of the time it takes the replication engine 204 to copy data for each of the cables 226-234.
[0026] Data traveling a long cable will take longer to reach its destination compared to data traveling a short cable. Delays can be programmed into the egress and / or ingress optical hardware to compensate for the difference in the amount of time it takes for data to travel down cables of different lengths. The delays programmed into the optical hardware based on the length of the cable can be in addition to or in place of a delay determined based on the time it takes to replicate the data.
[0027] Delay based on the length of the cable may be determined using kinematic equations. For example, knowing the speed at which a data packet travels along the cable and the length of the cable, one can determine the time it takes for the data to travel from the network switch 202 to the respective destination hardware 216-224 or the time it takes for the data to travel from the respective destination hardware 216-224 to the network switch 202. In some examples, the size of the data packets may also or alternatively be used in determining the speed at which the data packets travel through the cable.
[0028]
number
[0029] Using the configuration of network 200 of FIG. 2 as an example, cable 226 may be 100 meters long, cable 228 may be 101 meters long, cable 230 may be 103 meters long, cable 232 may be 112 meters long, and cable 234 may be 103 meters long. Data may take 5 nanoseconds to travel 1 meter of cable, resulting in a speed at which data travels of 0.2 meters / ns. Based on the length of each cable and the speed at which it travels each cable, a delay for each cable may be determined. The delay may be determined by comparing the time it takes data to travel each cable against the time it takes data to travel through the longest cable in network 200. According to some examples, the difference in the length of each cable compared to the length of the longest cable may be determined. Knowing the speed at which data travels through the cables, the difference in length may be used to determine the delay.
[0030] In the example configuration of FIG. 2, the longest cables are cables 230 and 234, both of which are 103 meters long. Data traveling through cables 230 and 234 travels an additional 3 meters compared to data traveling through cable 226, which is 100 meters long. Based on the speed at which data travels, e.g., 0.2 meters / ns, the time it takes to transmit data through cables 230 and 234 takes 15 nanoseconds longer compared to cable 226. Ingress optical hardware 206 may be programmed with a 15 nanosecond delay. Data traveling through cables 230 and 234 travels 1 meter longer compared to data traveling through cable 232. The time it takes to transmit data through cables 230 and 234 takes 5 nanoseconds longer compared to cable 232. Ingress optical hardware 212 may be programmed with a 75 nanosecond delay. Data traveling through cables 1 and 234 travels an additional 2 meters compared to data traveling through cable 228. The time it takes for data to be transmitted over cables 230 and 234 takes 10 nanoseconds longer compared to cable 228. The ingress optical hardware 208 may be programmed with a 10 nanosecond delay.
[0031] According to some examples, delays may be programmed into the egress and / or ingress optical hardware based on the length of the cable and the time it takes for the duplication engine 204 to make a copy of the data to be transmitted. According to some examples, delays based on the duplication engine 204 may be programmed into the egress optical hardware 206-214 and delays based on the length of the cable may be programmed into the ingress optical hardware.
[0032] As an example, the replication engine 204 may require 1 nanosecond to replicate data. Based on the time it takes the replication engine 204 to create a copy of the data for each of the cables 226-234, for cable 226, the egress optical hardware 206 may be programmed with a 4 nanosecond delay, for cable 228, the egress optical hardware 208 may be programmed with a 3 nanosecond delay, for cable 230, the egress optical hardware 210 may be programmed with a 2 nanosecond delay, for cable 232, the egress optical hardware 212 may be programmed with a 1 nanosecond delay, and for cable 234, the egress optical hardware 214 may be programmed with a 0 nanosecond delay. A 0 nanosecond delay for cable 234 may indicate that once a copy of the data for cable 234 is created by the replication engine 204, the data can be sent over all of the cables 226-234. Thus, no delay is required for cable 234 since once a copy for cable 234 is created, all copies are created. This delay can be programmed into the optical hardware 206-214 in addition to the delay based on the length of the cable.
[0033] According to some examples, the egress optical hardware may be programmed with a delay based on the length of the cable in addition to a delay based on the time it takes the replication engine to create the data, and the ingress optical hardware may be programmed with a delay based on the length of the cable. For example, the ingress optical hardware 206 may be programmed with a 15 nanosecond delay based on the delay due to the different cable lengths, and the egress optical hardware 206 may be programmed with a 19 nanosecond delay based on the delay due to the different cable lengths and the replication engine. As another example, the ingress optical hardware 208 may be programmed with a 10 nanosecond delay based on the difference in cable lengths, and the egress optical hardware 208 may be programmed with a 13 nanosecond delay based on the difference in cable lengths and the replication engine.
[0034] Delays based on cable length and / or delays based on the time it takes the replication engine to copy data may be programmed into the optical hardware 206-214 via the I2C bus after the network 200 is installed. Programming the delays after the network 200 is installed allows for precise determination of ingress delays or delays based on cable length. For example, the length of the cable after the network 200 is installed may be determined based on the time it takes data to travel along the cable and the speed at which the data travels. This allows for precise determination of cable length without relying on manually cutting the cable to a specific length. Determining and utilizing cable length after the network 200 is installed may reduce manual modifications to the network 200. For example, new cables of a specific length may not need to be installed, or cable lengths may not need to be lengthened or shortened. This allows for more efficient correction of unfairness in sending and receiving data in the network 200 while reducing material costs since delays are programmed into hardware already present in the network 200.
[0035] FIG. 3 is a diagram showing another example of a network configuration. The network 300 is substantially similar to the networks 100 and 200 described in FIG. 1 and FIG. 2, and may include a network switch 302, optical hardware 306-310, cables 324-328, and destination hardware 312-316. The destination hardware 216-224 may be, for example, a TOR. The destination hardware 312-316 may include optical hardware 318-322, respectively. The lengths of the cables 324-328 may be different, such as the cables 226-234. A delay determined based on the duplication engine 304 and the lengths of the cables 324-328 may be programmed into the ingress and / or egress optical hardware 306-310 and / or the ingress and / or egress optical hardware 318-322. The programmed delay may mitigate unfairness in unicast traffic between the network switch 302 and the destination hardware 312-316.
[0036] As an example, cables 324 and 328 are cables of the same length and cable 326 is a longer cable. In such an example, the ingress and / or egress optical hardware 306, 310 may be programmed with a delay based on the length of the cable and the ingress and / or egress optical hardware 308, 318, 320, 322 may be programmed with a delay of zero. In another example, the ingress and / or egress optical hardware 318, 322 may be programmed with a delay based on the length of the cable and the ingress and / or egress optical hardware 306, 310, 318, 320 may be programmed with a delay of zero.
[0037] According to some examples, for a particular link, the egress optical hardware at one end of the cable may be programmed with a delay and the ingress optical hardware at the other end of the cable may be programmed with a delay of zero. This allows the optical hardware to be further programmed to compensate for asymmetries in the optical hardware. According to some examples, programming a delay into the egress optical hardware at one end of the cable and a delay into the ingress optical hardware at the other end of the cable could compensate for printed wiring board ("PCB") inequities.
[0038] 4 is a diagram illustrating an example system in which the features described above and herein may be implemented. Although several components are illustrated, such components are merely non-limiting examples and may further or alternatively include other components. These diagrams should not be considered as limiting the scope of the disclosure and the usefulness of the features described herein. In this example, the system 400 may include a network switch 402 and one or more destination hardware 416.
[0039] The network switch 402 may comprise one or more processors 404, memory 406, instructions 408, data 410, a replication engine 412, and optical hardware 414. The network switch 402 may be, for example, a TOR, a leaf of a multicast tree, an S2 switch, or the like.
[0040] The processor 404 may be a conventional processor, such as a commercially available microprocessor. Alternatively, one or more of the processors may be application specific integrated circuits (ASICs) or other hardware-based processors. While FIG. 4 depicts the processor, memory, and other elements of the network switch 402 as being within the same functional block, one skilled in the art will appreciate that a processor, computing device, or memory may actually include multiple processors, multiple computing devices, or multiple memories (which may or may not be stored within the same physical enclosure). Similarly, a memory may be a hard drive or other storage medium located in a different enclosure than the enclosure of the network switch 402. Thus, it will be appreciated that references to a processor or computing device may include references to a collection of multiple processors, a collection of multiple computing devices, or a collection of multiple memories (which may or may not operate in parallel).
[0041] The memory 406 may store information accessible by the processor, including instructions 408 that may be executed by the processor 404. The memory 406 may be any type of memory operable to store information accessible by the processor 404, including non-transitory computer readable media or other media for storing data that may be read using electronic devices, such as hard drives, memory cards, read only memory ("ROM"), random access memory ("RAM"), optical disks, and other writable and read only memory. The subject matter disclosed herein may include various combinations of the above, whereby various portions of the instructions 408 and data 410 are stored on various types of media.
[0042] The memory 406 may be retrieved, stored, or modified by the processor 404 according to the instructions 408. For example, although the disclosure is not limited by a particular data structure, the data 410 may be stored in a computer register, a relational database as a table with multiple different fields and records, an XML document, or a flat file. The data 410 may be formatted in a computer readable format, such as, but not limited to, binary values, ASCII, or Unicode. By way of further example only, the data 410 may be stored as a bitmap made up of pixels. The bitmap may be stored compressed or uncompressed, and may be stored in various image formats (e.g., JPEG), vector-based formats (e.g., SVG), or computer instructions for rendering graphics. The data 410 may also include information sufficient to identify the relevant information, such as numbers, descriptive text, proprietary codes, pointers, references to data stored in other memories (including other network locations), or information used by a function to calculate the relevant data.
[0043] The instructions 408 may be a set of instructions that are executed directly, such as machine code, or may be a set of instructions that are executed indirectly by the processor 404, such as a script. In this regard, the terms "instructions," "applications," "steps," and "programs" may be used interchangeably herein. The instructions may be stored in object code format for direct processing by the processor, in other computing device languages including scripts, or in a collection of separate source code modules that are interpreted and precompiled upon request. The functions, methods, and routines of the instructions are described in more detail below.
[0044] The replication engine 412 may copy data transmitted over multiple cables coupled to the network switch. The replication engine 412 may require a predetermined period of time to replicate or copy the data. The predetermined period of time may be based on the size or amount of data to be copied. The replication engine 412 may copy the data a sufficient number of times so that the data is synchronously received by the destination hardware 416. For example, the replication engine 412 may create a total number of copies equivalent to the total number of cables minus one. The total number of copies may correspond to the total number of cables minus one. The subtraction of one is because the original copy of the data is transmitted to the destination hardware 416.
[0045] The processor 404 may determine that a delay is programmed into the optical hardware 414. For example, the processor 404 may determine a delay for one or more of the cables coupled to the network switch 402 based on the time it takes the replication engine 412 to create a copy. In such an example, the delay for a given cable may be determined based on the number of copies remaining to be made. The number of copies remaining may be determined based on the number of copies already created and the total number of copies remaining to be made. For example, if there are ten cables coupled to the network switch 402 and the replication engine 412 has created copies of data for cables 1-6, after creating a copy of data for cable 6, the number of copies remaining to be made is four. To determine the delay for a given cable, the number of copies remaining to be made may be multiplied by the time it takes to create each copy.
[0046] According to some examples, the processor 404 may additionally or alternatively determine the delay based on the length of the cables coupled to the network switch 402. The processor 404 may determine the amount of time it takes for data to travel the length of each cable. The amount of time it takes for data to travel each cable may be compared to determine the delay. For example, the processor 404 may use the longest amount of time it takes data to travel the cable as a baseline. The remaining amount of time may be compared to this longest amount of time. The difference between the longest amount of time and the amount of time per cable may be programmed into the optical hardware as the delay for that cable.
[0047] The optical hardware 414 may be configured via an I2C bus 428. The optical hardware 414 may be configured with ingress and / or egress delays.
[0048] The destination hardware 416 may include one or more processors 418, memory 420, instructions 422, data 424, optical hardware 426, and an I2C bus 430. These components may operate the same or similarly to the components described above in the network switch 402. The destination hardware 416 may be, in some examples, a TOR, an end user device such as a smartphone, a laptop, a desktop, a home assistant device, AR / VR glasses, consumer hardware, etc.
[0049] 5 illustrates an example method for programming the optical hardware of each cable. The operations described below do not have to be performed in the exact order described below. Rather, various operations may be processed in different orders, may be processed simultaneously, or operations may be omitted.
[0050] At block 502, a number of cables in a network switch are identified. These cables may be, for example, fiber optic cables. Each cable may provide a link between a destination, such as an end user, a Top of Rack (TOR), etc., and the network switch.
[0051] At block 504, a remaining number of copies of the data for a given cable of the plurality of cables is determined. The remaining number of copies may consist of a total number of cables in the plurality of cables minus a number of completed copies of the data. For example, a network switch includes a duplication engine. The duplication engine may create copies of the data to be transmitted over the plurality of cables. These copies may be created in an order corresponding to the order of the cables, in order of transmission, etc. To determine the remaining number of copies to be created, the number of copies that have been created may be subtracted from the total number of copies to be created.
[0052] At block 506, a delay for each of the multiple cables is determined. The delay for each cable may be based on the remaining number of copies of the data for each cable and the amount of time to create each copy of the data. The delay for each cable allows data transmitted over each cable to reach its respective destination synchronously. For example, the delay for a cable that is first in the cable sequence is greater than a cable that is later in the cable sequence. The delay for a cable that is first in the sequence is greater because, after a copy is created for that cable, it has more copies remaining to create than a cable that is last in the sequence.
[0053] At block 508, optical hardware for each cable may be programmed based on the delays. For example, each cable may include ingress and / or egress optical hardware at one or both ends of the cable. Delays may be programmed into the ingress and / or egress optical hardware at one or both ends. The delays allow data to be transmitted synchronously over multiple cables.
[0054] According to some examples, a length of each cable may be determined. A second delay may be determined based on the length of each cable. For example, a length of time it takes data to travel along the length of each cable may be determined. The respective times may be compared. Based on the comparison, a delay may be determined. For example, a long cable may have a greater length of time for data to travel the length of the cable compared to a short cable. The time difference between the long cable and the short cable may be added to the short cable as a delay. Ingress and / or egress optical hardware at one or both ends of the cable may be programmed with the second delay determined based on the length of the cable.
[0055] The delay may be programmed after the network is deployed. By determining and programming the delay after the network is deployed, the delay may be determined based on real-time latency variations in the cables of the network. Furthermore, by determining and programming the delay after the network is deployed, the delay per cable may be efficiently determined and implemented. For example, programming the delay per cable may reduce the need to manually change the physical structure of the network, such as by adding or removing fiber or adding additional components. The delay may be programmed into the optical hardware that is already part of the network. Thus, no additional components are required to implement the delay. According to some examples, the programmable nature of the delay allows the network to be scaled to be implemented in large data centers.
[0056] Programmable delays on each cable can be used to mitigate unfairness when sending and receiving data: delays allow data to be sent and received synchronously across the network, mitigating the unfairness of one destination receiving data before another.
[0057] Unless otherwise stated, the other embodiments described above are not mutually exclusive. However, they may be implemented in various combinations to achieve unique advantages. These and other variations and combinations of the features described above may be utilized without departing from the subject matter of the invention as set forth in the appended claims, and therefore the description of the embodiments described above should be taken as examples, rather than as limitations on the subject matter of the invention as set forth in the appended claims. In addition, the provision of the embodiments described herein, and the provision of clauses expressed with words such as "such as," "including," and the like, should not be construed as limiting the subject matter of the appended claims to any particular embodiment. Rather, these embodiments are merely illustrative of only one of many possible implementations. Moreover, the same reference numbers in various drawings may identify the same or similar elements.
Claims
1. 1. A method comprising: one or more processors identifying a plurality of cables in a network switch; and one or more processors determining a remaining number of copies of the data for a given cable of the plurality of cables, the remaining number of copies comprising a total number of cables in the plurality of cables minus a number of completed copies of the data, the method further comprising: the one or more processors determining a delay for each of the plurality of cables; The delay of each cable is the remaining number of copies of data for each of the cables; and and a length of time to create each copy of the data, the method further comprising: The method further comprising the one or more processors programming optical hardware of each of the cables based on each of the delays.
2. The method of claim 1 , wherein the optical hardware includes entrance optical hardware and exit optical hardware.
3. The method of claim 2 , wherein programming the optical hardware comprises programming at least one of the entrance optical hardware or the exit optical hardware.
4. When programming the optical hardware, the method further comprises: said one or more processors programming said ingress optical hardware based on said delay of each said cable; 3. The method of claim 2, further comprising: synchronously transmitting the data over the multiple cables based on the delay of each of the multiple cables.
5. 2. The method of claim 1, further comprising: a replication engine copying the data transmitted over the plurality of cables, a total number of copies made by the replication engine corresponding to a total number of cables included in the plurality of cables minus one.
6. The method comprises: the one or more processors determining a length of each cable; The method of claim 1 , further comprising: the one or more processors determining a second delay based on a length of each of the cables.
7. Determining the second delay comprises: the one or more processors determining a length of time for the data to travel along a length of each of the cables; said one or more processors comparing said lengths of time; The method of claim 6 , further comprising the one or more processors determining the second delay for each of the plurality of cables based on the comparison.
8. The method of claim 6 , further comprising the one or more processors programming the optical hardware of each of the cables based on the second delay of each of the cables.
9. The method of claim 1 , wherein the delay for each cable enables the data transmitted over each cable to arrive at each destination synchronously.
10. A program comprising instructions which, when executed by one or more processors, cause the one or more processors to perform a method according to any one of claims 1 to 9.
11. A storage device for storing the program according to claim 10; and one or more processors configured to execute the program.
Citation Information
Patent Citations
Optical packet switching device and optical switch control method
JP2008235986A
Electronic device for generating synchronization signals
JP2008503887A
System and method for continuous measurement of transit latency in individual data switches and multi-device topologies
US20160277272A1