Programmable delay in networked optical system

By programming delays in the optical hardware of fiber networks based on data copies and cable lengths, the technology addresses the challenge of ensuring fairness in data transmission and reception, achieving synchronous data delivery and reducing costs.

JP2025081488AActive Publication Date: 2025-05-27GOOGLE LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2025024328
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-03-28
Filing Date
2025-02-18
Publication Date
2025-05-27
Estimated Expiration
2043-08-03

AI Technical Summary

Technical Problem

Existing network technologies face challenges in ensuring fairness in data transmission and reception, as it is difficult and costly to accurately adjust the length of physical cables to balance latency across different network paths.

Method used

The technology programs delays in the optical hardware of existing fiber networks, allowing for real-time adjustments based on the remaining number of data copies and cable lengths, ensuring synchronous data transmission and reception.

Benefits of technology

This approach effectively mitigates unfairness in data distribution by allowing for precise programming of delays in the optical hardware, reducing the need for manual adjustments and lowering material costs, while ensuring synchronous data delivery across large-scale networks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025081488000001_ABST
    Figure 2025081488000001_ABST
Patent Text Reader

Abstract

To provide a method, program, and device for programming delays in hardware existing within fiber networks to reduce the unfairness in transmitting and receiving data.SOLUTION: A method for programming delays includes identifying a plurality of cables existing at a network switch, determining a remaining number of copies of data for a given cable of the plurality of cables, determining a delay for each of the plurality of cables, and programming optical hardware for each of the cables based on the respective delays. The remaining number of copies is a number obtained by subtracting a number of completed copies of data from a total number of cables included in the plurality of cables.SELECTED DRAWING: Figure 5
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Background Fairness in transmitting and receiving data is based on the premise that all end users receive the same information at the same time and it takes the same amount of time to send information to all end users. To ensure fairness, the network usually changes the length of the physical cables within the network through which data is transmitted to increase or decrease the latency along a specific network path. It is difficult to accurately increase or decrease the cable length. Furthermore, increasing or decreasing the cable length is costly in terms of both labor and materials, especially in large-scale networks.

Summary of the Invention

[0002] Summary This technology generally aims to program delays in the hardware already existing in the fiber network to mitigate unfairness in transmitting and receiving data. The delay can be programmed into the optical hardware after the introduction of the network. The delay can be determined based on the time it takes for the network switch to duplicate the data being transmitted and / or the cable length. According to some examples, the delay can be programmed into one or both of the cable outlet optical hardware and the inlet optical hardware. Programmable delay can mitigate the unfairness that one destination or end user receives data earlier than 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 includes 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 data for a given cable among the plurality of cables, the remaining number of copies being composed of the total number of cables included in the plurality of cables minus the number of completed copies of data, and the method further includes one or more processors determining a latency for each cable of the plurality of cables, the latency for each cable being based on the remaining number of copies of data for each cable and the length of time to create each copy of data, and one or more processors further programming the optical hardware of each cable based on the latency.

[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 one or more processors programming the ingress optical hardware based on the latency of each cable and synchronously transmitting data via the plurality of cables based on the latency of each cable of the plurality of cables.

[0005] The method may further include a replication engine copying data transmitted via the plurality of cables, and the total number of copies created by the replication engine corresponds to the total number of cables included in the plurality of cables minus one.

[0006] The method may further include one or more processors determining the length of each cable and one or more processors determining a second latency based on the length of each cable. Determining the second latency includes one or more processors determining the de determining a length of time for data to move, one or more processors comparing the times, and one or more processors determining a second delay for each of a plurality of cables based on the comparison. The method may further include one or more processors programming the optical hardware of each cable based on the second delay of each cable.

[0007] The delay for each cable may enable data transmitted via each cable to reach its respective destination synchronously.

[0008] Another aspect of the technology is directed to a device including one or more processors. The one or more processors 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 among the plurality of cables, the remaining number of copies being composed of a number obtained by subtracting the number of completed copies of data from the total number of cables included in the plurality of cables, the one or more processors further being configured to determine a delay of each cable among the plurality of cables, the delay of each cable being based on the remaining number of copies of data for each cable and the length of time for creating each copy of data, and the one or more processors further being configured to program the optical hardware of each cable based on the delay.

[0009] Yet another aspect of the present technology is directed to a non-transitory storage medium. The storage medium includes 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 the remaining number of copies of data for a given cable among the plurality of cables, the remaining number of copies being composed of the total number of cables included in the plurality of cables minus the number of completed data copies, cause the one or more processors to further determine the latency of each cable among the plurality of cables, the latency of each cable being based on the remaining number of copies of data for each cable and the length of time to create each copy of the data, and cause the one or more processors to further program the optical hardware of each cable based on the latency.

Brief Description of the Drawings

[0010]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Mode for Carrying Out the Invention

[0011] Detailed Description This technology generally aims to program delays in an optical fiber network to mitigate unfairness when transmitting and receiving data. Programmable delays enable synchronous transmission and / or reception of data. This can mitigate the unfairness where one destination or end user receives data earlier than another when the information is intended to be distributed synchronously.

[0012] The delay can be programmed into the optical hardware after the introduction of the optical fiber network. The optical hardware can be configured via, for example, an I2C bus. For example, the optical fiber network can include multiple optical fiber cables, multiple network switches, multiple optical hardware, etc. The delay can be programmed into one or both of the exit optical hardware and the entrance optical hardware of the cable. The amount of delay can be determined based on the imbalance of the cables between the network switch and the user hardware. In addition to or instead of this, the amount of delay can be determined based on the time it takes for the network switch to replicate the transmitted data. According to some examples, the delay can be programmed into the exit-side and / or entrance optical hardware to compensate for the different lengths of the cables.

[0013] By determining and programming the delay after the introduction of the optical fiber network, the delay can be determined based on real-time latency variations within the cables of the system. Furthermore, by programming the delay based on this real-time variation, the delay for each cable can be efficiently determined and implemented. For example, programming the delay can reduce the need to manually modify the optical fiber network, such as adding or subtracting the lengths of the fibers. As a result, since the delay is programmed into the hardware that is already part of the optical fiber network, it is possible to reduce material costs while increasing the efficiency of correcting unfairness.

[0014] Due to the delay property of being programmable, the system can be scaled and implemented for large-scale data centers. For example, the delay of a specific channel may be determined and programmed based on measurement data. Also, programmable delay is suitable for use in high-speed data centers where data moves at speeds of gigabits per second, such as 25 gigabits per second.

[0015] FIG. 1 is a diagram showing a configuration example of a network between a network switch and destination hardware. The network can be, for example, an optical fiber network, a copper wire, or an Ethernet network. Network 100 may include network switch 102, optical hardware 106-114, a plurality of cables 116-124, and destination hardware 126-134. According to some examples, network switch 102 may be a "TOR" (Top of Rack) switch, and destination hardware 126-134 may be hardware for users or consumers. Network switch 102 may include a replication engine 104. Replication engine 104 may be configured to replicate or copy data and transmit it via cables 116-124. Cables 116-124 can be, for example, optical fiber cables, Ethernet cables, etc.

[0016] Data can be transmitted from network switch 102 to a plurality of destinations 126-134 or end users via cables 116-124. Network switch 102 can be, in some examples, a leaf of a multicast tree. To prevent the injustice of destination hardware 126-134 receiving data via network switch 102 at different times, the data must reach destination hardware 126-134 at approximately the same time. The data can be, for example, multicast packets. To ensure that the data reaches destination hardware 126-134 at the same time, the delay for each of cables 116-124 can be determined. The delay can be determined after the optical fiber network 100 is introduced and can be programmed into optical hardware 106-114 before the data is transmitted from network switch 102 to destination hardware 126-134. The delay can be programmed in an attempt to guarantee the fairness that the data is received synchronously by destination hardware 126-134 when it is transmitted.

[0017] A plurality of cables 116-124 can be connected to network switch 102. The data can be transmitted from the network switch 102 to the destination hardware 126-134 via a plurality of cables 116-124. The order in which data is transmitted via the cables 116-124 can be static. A static order can indicate that the order of transmission does not change during data transmission. According to some examples, by determining a static order, rather than determining a uniform delay for all cables, the delay for each individual cable can be determined. For example, as shown in FIG. 1, cable 116 can be the first in the static order, and cable 124 can be the last in the static order. In such an example, cable 118 is the second, cable 120 is the third, and cable 122 is the fourth. In this example, the static order of cables 116-124 is from left to right. In another example, the static order of cables 116-124 can be from right to left such that cable 124 is the first in the static order and cable 116 is the last in the static order, or it can be an order that moves from the center to the right such that cable 120 is the first in the static order and cable 118 is the last in the static order. Therefore, ordering cables 116-124 from left to right is merely an example and not a limitation.

[0018] According to some examples, the delay of each cable 116-124 can be different based on where its position is in the static order of transmission and the remaining number of copies to be created. For example, the delay of the cable that is the first in the static order of transmission is greater than the delay of the cable that is the last 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 of cable 116 is greater than the delay of cable 124. The delay can be determined based on the time required for the replication engine 104 to replicate the data and the number of times the replication engine 104 has to replicate the data. In some examples, the delay can be based on the remaining number of copies to be created after copies for each cable have been created.

[0019] According to some examples, the remaining number of copies to be created can be obtained based on the total number of cables connected to the network switch 102 minus the number of completed copies. 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, for instance, two copies, such as a copy for cable 116 and a copy for cable 118, have been created. After the copy for cable 118, the remaining number of copies to be created is three. To determine the delay of the second cable, for example, cable 118, the remaining number of copies, which is three, can be multiplied by the time it takes for the replication engine 104 to create a copy of the data.

[0020] Due to the delay, each of the cables 116-124 can receive a copy of the data from the replication engine 104 before the data is transmitted. In some examples, the delay for each of the cables 116-124 enables the data to be transmitted simultaneously and / or enables the data to be received synchronously by the destination hardware 126-134. The delay can be programmed into the egress and / or ingress optical hardware 106-114. For example, the data can be transmitted simultaneously, and the delay can 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, the delay can be programmed into the egress optical hardware 106-114 such that the data is transmitted with a delay but is received synchronously by the destination hardware 126-134. In yet another example, the delay can be programmed into both the egress optical hardware and the 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 for one replication, the delay of the first cable 116 can be 4 nanoseconds, the delay of the second cable 118 can be 3 nanoseconds, and so on, for the fifth cable 1 The delay of 24 can be 0 nanoseconds. Due to the 4 - nanosecond delay in the first cable 116, the replication engine 104 can replicate the data for each subsequent cable 118 - 124 in the order of transmission. By delaying the transmission of data via the first cable 116 by 4 nanoseconds, each of the remaining cables 118 - 124 can receive a copy of the data to be transmitted during this delay. Furthermore, by delaying the transmission of data via the first cable 116 by 4 nanoseconds, the last copy of the data for the last cable 124, for example, the fifth cable 124, is completed. Therefore, the delay in the first cable 116 can correspond to the time it takes for the replication engine 104 to copy the data for each of the remaining cables 118 - 124.

[0022] In addition to, or instead of, this, the delay can be based on the length of the fiber. For the purposes of the example in FIG. 1, the lengths of each cable 116 - 124 are approximately equal. In an example where the lengths of cables 116 - 124 are approximately equal, no delay for compensating the difference may be necessary.

[0023] After the delay period, the data can be transmitted from the network switch 102 to the destination hardware 126 - 134. Due to the delay for each of the cables 116 - 124, the data can be transmitted by the network switch 102 so that it can be received synchronously by the destination hardware 126 - 134.

[0024] In FIG. 1, a network is shown where the network switch 102 can be a TOR and the destination hardware 126 - 134 can be end - users. However, according to some examples, the network switch 102 can be simply a network switch such as an S2 switch and not a TOR, and the destination hardware 126 - 134 can be a TOR. In such examples, each of the destination hardware 126 - 134 can be a leaf of the multicast tree. The delay can be determined to compensate for the fan - out of the replication engine 104 from the network switch 102 to the destination hardware 126 - 134 (for example, each leaf of the multicast tree).

[0025] Figure 2 shows another configuration example of the network. Network 200 is a network substantially similar to 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 can be, for example, a TOR leaf of a multicast tree. The destination hardware 216-224 may be consumer-oriented hardware or hardware located at the end user's location. The cables 226-234 are different from the cables 116-124 in FIG. 1 in that the lengths of the cables 226-234 can be different from each other. In such an example where the lengths of the cables 226-234 are different from each other, the delay in data transmission from the network switch 202 to the destination hardware 216-224 can be based on the lengths of the cables 226-234, in addition to or instead of, the time it takes for the replication engine 204 to copy the data for each of the cables 226-234.

[0026] Data moving over a long cable will take more time to reach its destination compared to data moving over a short cable. To compensate for the difference in the length of time it takes for data to move over cables of different lengths, a delay can be programmed into the egress and / or ingress optical hardware. The delay programmed into the optical hardware based on the cable length may be an additional delay added to, or an alternative to, the delay determined based on the time it takes to copy the data.

[0027] The delay based on the cable length can be determined using kinematic equations. For example, if the speed at which a data packet moves along the cable and the length of the cable are known If so, the time it takes for data to move from the network switch 202 to each of the destination hardware 216-224, or the time it takes for data to move from each of the destination hardware 216-224 to the network switch 202, can be determined. According to some examples, in addition to or instead of this, the size of the data packet may be used when determining the speed at which the data packet passes through the cable.

[0028]

Number

[0029] As an example, using the configuration of the network 200 in FIG. 2, the length of cable 226 can be 100 meters, the length of cable 228 can be 101 meters, the length of cable 230 can be 103 meters, the length of cable 232 can be 112 meters, and the length of cable 234 can be 103 meters. Data can take 5 nanoseconds to move through 1 meter of cable, and the speed at which the data moves is 0.2 meters / nanosecond. Based on the length of each cable and the speed it takes for the data to move through each cable, the delay for each cable can be determined. The delay can be determined by comparing the time it takes for the data to move through each cable with the time it takes for the data to move through the longest cable in the network 200. According to some examples, the difference in the length of each cable compared to the length of the longest cable can be determined. If the speed at which the data moves through the cable is known, the difference in length can be used to determine the delay.

[0030] In the configuration example of FIG. 2, the longest cables are cable 230 and cable 234, both of which have a length of 103 meters. The data moving via cable 230 and cable 234 travels 3 meters more than the data moving through cable 226 which is 100 meters long. Based on the speed at which data travels, for example, 0.2 meters / nanosecond, the time taken to transmit data via cable 230 and 234 is 15 nanoseconds longer than that of cable 226. The ingress optical hardware 206 can be programmed with a 15 - nanosecond delay. The data moving via cable 230 and cable 234 travels 1 meter longer than the data moving through cable 232. The time taken to transmit data via cable 230 and 234 is 5 nanoseconds longer than that of cable 232. The ingress optical hardware 212 can be programmed with a 75 - nanosecond delay. The data moving via cable 1 and cable 234 travels 2 meters more than the data moving through cable 228. The time taken to transmit data via cable 230 and 234 is 10 nanoseconds longer than that of cable 228. The ingress optical hardware 208 can be programmed with a 10 - nanosecond delay.

[0031] According to some examples, based on the length of the cable and the time taken for the replication engine 204 to create a copy of the data being transmitted, a delay can be programmed into the egress - side and / or ingress optical hard ware. According to some examples, the delay based on the replication engine 204 can be programmed into the egress optical hardware 206 - 214, and the delay based on the cable length can be programmed into the ingress optical hardware.

[0032] As an example, the replication engine 204 may require 1 nanosecond for each replication of data. Based on the time it takes for the replication engine 204 to create a copy of the data for each of the cables 226 - 234, for cable 226, a delay of 4 nanoseconds may be programmed into the output optical hardware 206, for cable 228, a delay of 3 nanoseconds may be programmed into the output optical hardware 208, for cable 230, a delay of 2 nanoseconds may be programmed into the output optical hardware 210, for cable 232, a delay of 1 nanosecond may be programmed into the output optical hardware 212, and for cable 234, a delay of 0 nanoseconds may be programmed into the output optical hardware 214. The fact that the delay for cable 234 is 0 nanoseconds may indicate that when a copy of the data for cable 234 is created by the replication engine 204, the data can be transmitted via all of the cables 226 - 234. Thus, since all copies will be created when the copy for cable 234 is created, no delay is required for cable 234. This delay may be programmed into the optical hardware 206 - 214 in addition to the delay based on the length of the cable.

[0033] In some examples, the output optical hardware may be programmed with a delay based on the length of the cable in addition to the delay based on the time it takes for the replication engine to create the data, and the input optical hardware may be programmed with a delay based on the length of the cable. For example, for the input optical hardware 206, a delay of 15 nanoseconds may be programmed based on the delay due to the different lengths of the cable, and for the output optical hardware 206, a delay of 19 nanoseconds may be programmed based on the delay due to the different lengths of the cable and the replication engine. As another example, for the input optical hardware 208, a delay of 10 nanoseconds may be programmed based on the difference in the length of the cable, and for the output optical hardware 208, a delay of 13 nanoseconds may be programmed based on the difference in the length of the cable and the replication engine.

[0034] The delay based on the cable length and / or the delay based on the time it takes for the replication engine to copy data can be programmed into the optical hardware 206 - 214 via the I2C bus after the network 200 is introduced. By programming the delay after the network 200 is introduced, it becomes possible to accurately determine the delay on the ingress side or the delay based on the cable length. For example, the cable length after the network 200 is introduced can be determined based on the time it takes for data to move along the cable and the speed at which the data moves. This enables accurate determination of the cable length without relying on manually cutting the cable to a specific length. By determining and utilizing the cable length after the network 200 is introduced, it is possible to reduce the need to manually modify the network 200. For example, it may not be necessary to install a new cable of a specific length, or to lengthen or shorten the cable length. As a result, since the delay is programmed into the hardware already existing in the network 200, it is possible to increase the efficiency of correcting unfairness when transmitting and receiving data in the network 200 while suppressing material costs.

[0035] FIG. 3 is a diagram showing another configuration example of a network. The network 300 is a network substantially similar to the networks 100 and 200 described in FIGS. 1 and 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 can be, for example, a TOR. The destination hardware 312 - 316 is the optical har It may include software 318 to 322 respectively. The lengths of cables 324 to 328 may be different from each other, like cables 226 to 234. Delays determined based on the replication engine 304 and the lengths of cables 324 to 328 may be programmed into the entrance side and / or exit optical hardware 306 to 310, and / or the entrance side and / or exit optical hardware 318 to 322. The programmed delay can mitigate unfairness in unicast traffic between the network switch 302 and the destination hardware 312 to 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, delays based on the cable lengths may be programmed into the entrance side and / or exit optical hardware 306, 310, and delays of 0 may be programmed into the entrance side and / or exit optical hardware 308, 318, 320, 322. In another example, delays based on the cable lengths may be programmed into the entrance side and / or exit optical hardware 318, 322, and delays of 0 may be programmed into the entrance side and / or exit optical hardware 306, 310, 318, 320.

[0037] According to some examples, for a specific link, a delay may be programmed into the exit optical hardware at one end of the cable, and a delay of 0 may be programmed into the entrance optical hardware at the other end of the cable. This enables further programming of the optical hardware to compensate for the asymmetry of the optical hardware. According to some examples, by programming a delay into the exit optical hardware at one end of the cable and a delay into the entrance optical hardware at the other end of the cable, unfairness of the printed circuit board ("PCB") can be compensated.

[0038] Figure 4 is a diagram showing an example of a system in which the above-described features and the features described in this specification can be implemented. Although a plurality of components are illustrated, such components are merely non-limiting examples, and the system may further include other components or alternatively include other components. These diagrams should not be considered as limiting the scope of the present disclosure and the usefulness of the features described in this specification. In this example, system 400 may include network switch 402 and one or more destination hardware 416.

[0039] Network switch 402 may include one or more processors 404, memory 406, instructions 408, data 410, replication engine 412, and optical hardware 414. Network switch 402 may be, for example, a TOR, a leaf of a multicast tree, an S2 switch, or the like.

[0040] Processor 404 may be a conventional processor such as a commercially available microprocessor. Alternatively, one or more processors may be an application-specific integrated circuit (ASIC) or other hardware-based processor. Figure 4 shows the processor, memory, and other elements of network switch 402 within functionally the same block, but those skilled in the art will understand that a processor, computing device, or memory may actually include a plurality of processors, a plurality of computing devices, or a plurality of memories (which may or may not be stored within the same physical housing). Similarly, the memory may be a hard drive or other storage medium located in a housing different from the housing of network switch 402. Thus, references to processors or computing devices may be understood to 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] Memory 406 can store information accessible by a processor, including instructions 408 executable by processor 404. Memory 406 can be a type of memory that functions to store information accessible by processor 404, and can include a non-transitory computer-readable medium, or other media that stores data readable by an electronic device such as a hard drive, memory card, read-only memory (“ROM”), random access memory (“RAM”), optical disk, and other writable memory, as well as read-only memory. The subject matter disclosed herein can include the various combinations described above, whereby various portions of instructions 408 and data 410 are stored on various types of media.

[0042] Memory 406 can be retrieved, stored, or modified by processor 404 according to instructions 408. For example, although not limited by a particular data structure, data 410 can be stored in a computer register, relational database as a table having a plurality of different fields and records, an XML document, or a flat file. Data 410 can be formatted in a computer-readable form such as binary values, ASCII, or Unicode, but is not limited thereto. As just one further example, data 410 can be stored as a bitmap composed of pixels. The bitmap can be stored compressed or uncompressed, and can be stored in various image formats (e.g., JPEG), vector-based formats (e.g., SVG), or computer instructions for rendering graphics. Also, data 410 can include information sufficient to identify relevant information such as numbers, descriptive text, proprietary codes, pointers, references to data stored in other memory (including other network locations), or information used by functions for computing relevant data.

[0043] Command 408 may be a set of directly executable instructions, such as machine code, or may be a set of instructions that are indirectly executed by processor 404, such as a script. In that regard, the terms "command", "application", "step", and "program" may be used synonymously herein. The instructions may be stored in object code format for direct processing by the processor, may be stored in the language of other computing devices including scripts, or may be stored as a collection of independent source code modules that are interpreted based on a request and pre-compiled. Details of the functions, methods, and routines of the instructions will be described later.

[0044] Replication engine 412 may copy data transmitted via a plurality of cables connected to the network switch. 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. Replication engine 412 may copy the data a sufficient number of times so that the data is received synchronously by destination hardware 416. For example, replication engine 412 may create a total number of copies corresponding to the number obtained by subtracting 1 from the total number of cables. The total number of copies may correspond to the number obtained by subtracting 1 from the total number of cables. Subtracting 1 is because the original of the data is transmitted to destination hardware 416.

[0045] Processor 404 may determine that a delay is programmed into optical hardware 414. For example, processor 404 may determine the delay of one or more of the cables connected to network switch 402 based on the time it takes for replication engine 412 to create a copy. In such an example, the delay of a given cable may be determined based on the remaining number of copies to be created. The remaining number of copies may be determined based on the number of copies already created and the total number of copies to be created in the future. For example, network switch 40 If there are ten cables connected to 2 and the replication engine 412 has already created copies of the data for cables 1 to 6, after creating a copy of the data for cable 6, the number of data copies to be created from now on is four. To determine the delay of a given cable, the remaining number of copies to be created can be multiplied by the time taken to create each copy.

[0046] According to some examples, the processor 404 may, in addition to or instead of this, also determine the delay based on the length of the cable connected to the network switch 402. The processor 404 may determine the length of time it takes for the data to move based on the length of each cable. The delay can be determined by comparing the time it takes for the data to move through each cable. For example, the processor 404 may use the longest length of time it takes for the data to move through a cable as a baseline. The remaining lengths of time can be compared to this longest length of time. The difference between the longest length of time and the length of time for each cable can be programmed into the optical hardware as the delay for that cable.

[0047] The optical hardware 414 can be configured via the I2C bus 428. The optical hardware 414 can be composed of an ingress side delay and / or an egress side delay.

[0048] The destination hardware 416 can include one or more processors 418, a memory 420, instructions 422, data 424, optical hardware 426, and an I2C bus 430. These components can operate in the same or similar manner as the components described above in the network switch 402. The destination hardware 416 can be, in some examples, an end-user device such as a TOR, smartphone, laptop, desktop, home assistant device, AR / VR glasses, or consumer hardware.

[0049] FIG. 5 is a diagram showing an example of a method for programming the optical hardware of each cable. The following operations do not have to be executed in exactly the same order as described later. Rather, various operations may be processed in various orders, may be processed simultaneously, or an operation may be omitted.

[0050] In block 502, a plurality of cables in the network switch are identified. These cables can be, for example, optical fiber cables. Each cable can provide a link between a destination such as an end user, a TOR (Top of Rack), and the network switch.

[0051] In block 504, the remaining number of copies of data for a given cable among the plurality of cables is determined. The remaining number of copies can be composed of the total number of cables included in the plurality of cables minus the number of completed data copies. For example, the network switch includes a replication engine. The replication engine can create copies of data transmitted via a plurality of cables. These copies can be created in an order corresponding to the order of the cables, the order of transmission, etc. To determine the remaining number of copies to be created, the number of created copies can be subtracted from the total number of copies to be created.

[0052] In block 506, the delay of each of the plurality of cables is determined. The delay of each cable can be based on the remaining number of copies of data for each cable and the length of time for creating each copy of the data. Due to the delay for each cable, the data transmitted via each cable can be delivered to each destination synchronously. For example, the delay of the first cable in the order of the cables is greater than that of the cables behind it in the order. The delay of the cable in the first position in the order is large because, after the copy of that cable is created, there are more remaining copies to be created than the cable in the last position in the order.

[0053] In block 508, based on each delay, the optical hardware of each cable can be programmed. For example, each cable may include ingress and / or egress optical hardware at one or both ends of the cable. The ingress and / or egress optical hardware at one or both ends can be programmed with a delay. Each delay enables data to be synchronously transmitted via a plurality of cables.

[0054] According to some examples, the length of each cable can be determined. A second delay can be determined based on the length of each cable. For example, the length of time it takes for data to travel along the length of each cable can be determined. The respective times can be compared. Based on the comparison, a delay can be determined. For example, a long cable may have a greater length of time for data to travel its length compared to a short cable. The time difference between the long cable and the short cable can be added as a delay to the short cable. The ingress and / or egress optical hardware at one or both ends of the cable can be programmed with the second delay determined based on the length of the cable.

[0055] The delay can be programmed after the introduction of the network. By determining and programming the delay after the introduction of the network, the delay can be determined based on real-time latency variations within the network cables. Furthermore, by determining and programming the delay after the introduction of the network, the delay for each cable can be efficiently determined and implemented. For example, by programming the delay for each cable, the need to manually change the physical structure of the network, such as adding or removing fibers or adding additional components, can be reduced. The delay can 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 property of the delay being programmable enables the network to be scaled and implemented in large data centers.

[0056] By programming the delay for each cable, unfairness in data transmission and reception can be alleviated. The delay enables data to be transmitted and received synchronously in the network, thus alleviating the unfairness that one destination receives data earlier than another destination.

[0057] Unless otherwise specified, the above other embodiments are not mutually exclusive. However, they can be implemented in various combinations to achieve unique advantages. These and other variations and combinations of the functions described above can be utilized without departing from the subject matter of the invention as indicated by the appended claims. Therefore, the description of the above embodiments is not intended to limit the subject matter of the invention as indicated by the appended claims, but should be regarded as an example. In addition, the provision of the embodiments described herein and the provision of sections expressed in words such as "such as" and "including" should not be construed as limiting the subject matter of the invention of the appended claims to specific embodiments. Rather, these embodiments merely illustrate only one of many possible embodiments. Furthermore, the same or similar elements can be identified by the same reference numerals in various drawings.

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 device, comprising: one or more processors, the one or more processors Identify multiple cables in a network switch, configured to determine 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 one or more processors further comprising: configured to determine 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 one or more processors further A device configured to program optical hardware of each of the cables based on each of the delays.

11. The device of claim 10 , wherein the optical hardware includes entrance optical hardware and exit optical hardware.

12. The device of claim 11 , wherein programming the optical hardware includes programming at least one of the entrance optical hardware or the exit optical hardware.

13. When programming the optical hardware, said one or more processors programming said ingress optical hardware based on said delay of each said cable; 12. The device of claim 11, further comprising: synchronously transmitting the data over the multiple cables based on the delay of each of the multiple cables.

14. 11. The device of claim 10, further comprising a duplication engine configured to copy the data transmitted through the plurality of cables, wherein a total number of copies made by the duplication engine corresponds to a total number of cables in the plurality of cables minus one.

15. The one or more processors: Determine the length of each cable, The device of claim 10 , further configured to determine a second delay based on a length of each cable.

16. When determining the second delay, the one or more processors: determining a length of time for the data to travel along the length of each of the cables; Comparing the times; The device of claim 15 , further configured to determine the second delay for each of the plurality of cables based on the comparison.

17. 16. The method of claim 15, wherein the one or more processors are further configured to program the optical hardware of each of the cables based on the second delay of each of the cables. Devices listed.

18. 11. The device of claim 10, wherein the delay for each cable enables the data transmitted over each cable to arrive at each destination synchronously.

19. A non-transitory storage medium, the storage medium including instructions that, when executed by one or more processors, cause the one or more processors to: Identify multiple cables on a network switch, 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; and causing the one or more processors to further: determining a cable 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, to the one or more processors, A storage medium for programming optical hardware of each of said cables based on each of said delays.

20. 20. The storage medium of claim 19, wherein the optical hardware includes ingress optical hardware and egress optical hardware.

Citation Information

Patent Citations

  • Arriving packet synchronization method and system

    JP2012253506A

  • Communication system

    JP2013058882A