Programmable delay in network optical systems
By programming delays in optical hardware based on data copies and cable lengths, the technology addresses fairness issues in fiber optic networks, ensuring synchronized data transmission and reducing manual cable adjustments.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- GOOGLE LLC
- Filing Date
- 2025-02-18
- Publication Date
- 2026-07-30
AI Technical Summary
Existing fiber optic networks face challenges in ensuring fairness in data transmission and reception, as it is difficult and costly to adjust cable lengths to synchronize data arrival times across different destinations.
Programmable delays are introduced into the optical hardware of fiber optic networks, determined based on the number of data copies and cable lengths, allowing for synchronous data transmission and reception without physical modifications.
This approach ensures synchronized data arrival across multiple destinations, reducing the need for manual cable adjustments and lowering material costs while maintaining efficiency in large-scale networks.
Smart Images

Figure 0007897970000002 
Figure 0007897970000003 
Figure 0007897970000004
Abstract
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 transmit 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 in terms of accuracy to lengthen or shorten the cable length. Furthermore, lengthening or shortening 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 present in the fiber network to mitigate unfairness in transmitting and receiving data. The delays can be programmed into the optical hardware after the introduction of the network. The delays can be determined based on the time it takes for the network switch to replicate the data being transmitted and / or the cable length. According to some examples, the delays can be programmed into one or both of the cable exit optical hardware and the cable entrance optical hardware. Programmable delays 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 relates to a method, which includes one or more processors identifying a plurality of cables in a network switch, and one or more processors determining the remaining number of copies of data for a given cable among the plurality of cables, the remaining number of copies being 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 the delay for each of the plurality of cables, the delay 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 including programming the optical hardware of 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 one or more processors programming the ingress optical hardware based on the delay of each cable and synchronously transmitting data through multiple cables based on the delay of each of the multiple cables.
[0005] The method may further include the replication engine copying data transmitted through multiple cables, the total number of copies created by the replication engine being equal to the total number of cables included in the multiple 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 delay based on the length of each cable. Determining the second delay involves one or more processors determining the length of each cable along the length of each cable. The method may further include determining the length of time the data travels, one or more processors comparing the times, and one or more processors determining a second delay for each of the multiple 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] Cable-specific delays may allow data transmitted through each cable to arrive synchronously at their respective destinations.
[0008] Another aspect of the present technology relates to a device comprising one or more processors, which may be configured to identify a plurality of cables in a network switch and to determine the remaining number of copies of data for a given cable among the plurality of cables, the remaining number of copies consisting of the total number of cables included in the plurality of cables minus the number of completed copies of data, and the one or more processors are further configured to determine the delay for each of the plurality of cables, the delay for each cable being based on the remaining number of copies of data for each cable and the length of time required to create each copy of data, and the one or more processors are further configured to program the optical hardware of each cable based on the delay.
[0009] Another aspect of this technology relates to a non-temporary storage medium. The storage medium includes instructions, which, when executed by one or more processors, cause one or more processors to identify a plurality of cables in a network switch, determine the number of remaining copies of data for a given cable among the plurality of cables, the number of remaining copies consisting of the total number of cables included in the plurality of cables minus the number of completed copies of data, and further cause one or more processors to determine the delay for each of the plurality of cables, the delay for each cable being based on the number of remaining copies of data for each cable and the length of time to create each copy of data, and further cause one or more processors to program the optical hardware of each cable based on the delay. [Brief explanation of the drawing]
[0010] [Figure 1] This is a block diagram of an example network in which all cables are of equal length, relating to an aspect of this disclosure. [Figure 2] This is a block diagram of an example network in which the lengths of the cables may differ, relating to an aspect of this disclosure. [Figure 3] This is a block diagram of an example network in which optical hardware is included at both ends of a cable, according to an aspect of this disclosure. [Figure 4] This is a block diagram of a system example relating to the aspect of this disclosure. [Figure 5] This is a flowchart illustrating an example of a method for programming delays according to the aspects of this disclosure. [Modes for carrying out the invention]
[0011] Detailed explanation This technology generally focuses on programming delays in fiber optic networks to mitigate unfairness in data transmission and reception. Programmable delays enable synchronous transmission and / or reception of data. This can mitigate unfairness where one destination or end-user receives data before another destination when the information is intended to be distributed synchronously.
[0012] The delay can be programmed into the optical hardware after the introduction of the fiber optic network. The optical hardware can be configured, for example, via an I2C bus. A fiber optic network may include multiple fiber optic cables, multiple network switches, and multiple optical hardware components. Delay can be programmed into either the exit optical hardware or the inlet optical hardware of the cable, or both. The amount of delay may be determined based on the cable imbalance between the network switch and the user hardware. Alternatively, the amount of delay may be determined based on the time it takes for the network switch to replicate the transmitted data. In some examples, delay may be programmed into the exit and / or inlet optical hardware to compensate for the varying lengths of the cables.
[0013] By determining and programming delay after the deployment of a fiber optic network, the delay can be determined based on real-time latency fluctuations within the system's cables. Furthermore, by programming the delay based on these real-time fluctuations, cable-specific delays can be efficiently determined and implemented. For example, programming the delay reduces the need to manually modify the fiber optic network, such as adding or subtracting fiber lengths. This allows for increased efficiency in correcting injustices while keeping material costs down, as the delay is programmed into the hardware, which is already part of the fiber optic network.
[0014] The programmable nature of delay makes it possible to scale and implement the system for large-scale data centers. For example, the delay of 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 gigabits per second, for example, 25 gigabits per second.
[0015] Figure 1 shows an example of a network configuration between a network switch and destination hardware. The network could be, for example, a fiber optic network, a copper or Ethernet network. Network 100 may include a network switch 102, optical hardware 106-114, multiple cables 116-124, and destination hardware 126-134. In some examples, the network switch 102 may be a "TOR" (Top of Rack) 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 cables 116-124. Cables 116-124 could be, for example, fiber optic cables, Ethernet cables, etc.
[0016] Data may be transmitted from network switch 102 to multiple destinations 126-134, or to end users, via cables 116-124. Network switch 102 may, in some examples, be a multicast leaf. To prevent the unfairness of destination hardware 126-134 receiving data via network switch 102 at different times, the data must arrive at destination hardware 126-134 at approximately the same time. The data may be, for example, a multicast packet. To ensure that the data arrives at destination hardware 126-134 at the same time, a delay may be determined for each cable 116-124. The delay may be determined after the introduction of the fiber optic network 100 and programmed into the optical hardware 106-114 before the data is transmitted from network switch 102 to destination hardware 126-134. The delay may be programmed to ensure the fairness that the data is received synchronously by destination hardware 126-134 once it is transmitted.
[0017] Multiple cables 116-124 can be connected to the network switch 102. Data can be transmitted from network switch 102 to destination hardware 126-134 via multiple cables 116-124. The order in which data is transmitted through cables 116-124 can be static. A static order can indicate that the order of transmission does not change between data transmissions. In some examples, determining a static order can determine individual cable delays rather than a uniform delay for all cables. For example, as shown in Figure 1, cable 116 may be the first in the static order, and cable 124 may be the last. In such an example, cable 118 would be second, cable 120 third, and cable 122 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 could be from right to left, with cable 124 being the first in the static order and cable 116 being the last, or it could be an order moving from the center to the right, with cable 120 being the first in the static order and cable 118 being the last. Therefore, ordering cables 116-124 from left to right is merely one example and not an exhaustive rule.
[0018] According to some examples, the delay for each cable 116-124 may differ based on its position in the static order of transmissions and the number of copies remaining to be created. For example, the delay of the first cable in the static order of transmissions is greater than the delay of the last cable in the static order of transmissions. 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 will be greater than the delay of cable 124. The delay may 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 must replicate the data. In some examples, the delay may be based on the number of copies remaining to be created after a copy for each cable has been created.
[0019] According to some examples, the remaining number of copies to be created can be based on the total number of cables connected to the network switch 102 minus the number of completed copies. As shown in Figure 1, there are five cables 116-124 in network 100. Using cable 118, which is the second cable in the static transmission order, two copies have already been created, for example, one for cable 116 and one for cable 118. After the copy for cable 118, there are three copies remaining to be created. To determine the delay of the second cable, for example, cable 118, the remaining number of copies, 3, can be multiplied by the time it takes the replication engine 104 to create 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 can be programmed into the exit and / or ingress optical hardware 106-114. For example, the data may be transmitted simultaneously, and the delay can be programmed into the ingress optical hardware 106-114 so that the data is received synchronously by the destination hardware 126-134. In another example, the delay can be programmed into the exit optical hardware 106-114 so 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 exit and ingress optical hardware 106-114 so that the data is received synchronously by the destination hardware 126-134.
[0021] For example, as shown in Figure 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 may be 4 nanoseconds, the delay of the second cable 118 may be 3 nanoseconds, and so on, and 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 of the subsequent cables 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 that 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 of the cables 116 - 124 are approximately equal. In an example where the lengths of the cables 116 - 124 are approximately equal, no delay for compensating the difference would 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 simply be a network switch such as an S2 switch and not a TOR, and the destination hardware 126 - 134 can be a TOR. In such an example, 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] FIG. 2 is a diagram showing another configuration example of the network. Network 200 is a network substantially the same as network 100 described in FIG. 1, and may include network switch 202, optical hardware 206-214, cables 226-234, and destination hardware 216-224. Network switch 202 can be, for example, a TOR leaf of a multicast tree. Destination hardware 216-224 may be consumer-oriented hardware or hardware located at the end user's location. Cables 226-234 are different from cables 116-124 in FIG. 1 in that the lengths of cables 226-234 can be different from each other. In such an example where the lengths of cables 226-234 are different from each other, the delay in data transmission from network switch 202 to destination hardware 216-224 can be based on the lengths of cables 226-234, in addition to or instead of, the time it takes for replication engine 204 to copy data for each of 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 side and / or ingress optical hardware. The delay programmed into the optical hardware based on the cable length may be an additional delay added to the delay determined based on the time it takes to copy the data, or an alternative delay.
[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 This allows us to determine the time it takes for data to travel from network switch 202 to each destination hardware 216-224, or the time it takes for data to travel from each destination hardware 216-224 to network switch 202. In some examples, in addition to or instead of this, the size of the data packet may be used to determine the speed at which the data packet travels through the cable.
[0028]
number
[0029] Using the configuration of network 200 in Figure 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 through 1 meter of cable, and the speed at which data travels is 0.2 meters / nanosecond. Based on the length of each cable and the speed at which data travels through each cable, the delay for each cable can be determined. The delay can be determined by comparing the time it takes for data to travel through each cable to the time it takes for data to travel through the longest cable in network 200. According to some examples, the difference in length of each cable compared to the length of the longest cable can be determined. If the speed at which data travels through the cable is known, the difference in length can be used to determine the delay.
[0030] In the configuration example in Figure 2, the longest cables are cable 230 and cable 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 the data travels, for example, 0.2 meters / nanosecond, the time it takes to transmit data through cables 230 and 234 is 15 nanoseconds longer compared to cable 226. The inlet optical hardware 206 can be programmed with a delay of 15 nanoseconds. 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 is 5 nanoseconds longer compared to cable 232. The inlet optical hardware 212 can be programmed with a delay of 75 nanoseconds. Data traveling via cable 234 travels an additional 2 meters compared to data traveling via cable 228. The time it takes for data to be transmitted via cables 230 and 234 is 10 nanoseconds longer compared to cable 228. The input optical hardware 208 can be programmed with a delay of 10 nanoseconds.
[0031] According to some examples, based on the length of the cable and the time it takes for the replication engine 204 to create a copy of the data being transmitted, the exit side and / or the inlet optical harness Delays can be programmed into the hardware. According to some examples, delays based on the replication engine 204 can be programmed into the exit optical hardware 206-214, and delays based on cable length can be programmed into the input optical hardware.
[0032] For example, the replication engine 204 may require 1 nanosecond to replicate data once. Based on the time it takes the replication engine 204 to create copies of the data for each of the cables 226-234, a delay of 4 nanoseconds may be programmed into the exit optical hardware 206 for cable 226, a delay of 3 nanoseconds may be programmed into the exit optical hardware 208 for cable 228, a delay of 2 nanoseconds may be programmed into the exit optical hardware 210 for cable 230, a delay of 1 nanosecond may be programmed into the exit optical hardware 212 for cable 232, and a delay of 0 nanoseconds may be programmed into the exit optical hardware 214 for cable 234. A delay of 0 nanoseconds for cable 234 may indicate that once the copy of the data for cable 234 is created by the replication engine 204, the data can be transmitted through all of the cables 226-234. Therefore, since all copies are created once the copy for cable 234 is created, no delay is required for cable 234. This delay, in addition to the delay based on cable length, can be programmed into the optical hardware 206-214.
[0033] According to some examples, the exit optical hardware may be programmed with a delay based on the cable length in addition to a 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 cable length. For example, input optical hardware 206 may be programmed with a delay of 15 nanoseconds based on the delay due to different cable lengths, and output optical hardware 206 may be programmed with a delay of 19 nanoseconds based on the delay due to different cable lengths and the replication engine. As another example, input optical hardware 208 may be programmed with a delay of 10 nanoseconds based on differences in cable lengths, and output optical hardware 208 may be programmed with a delay of 13 nanoseconds based on differences in cable lengths and the replication engine.
[0034] Cable length-based delays and / or delays 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 network 200 is deployed. Programming delays after network 200 is deployed allows for accurate determination of ingress delays or cable length-based delays. For example, the cable length after network 200 is deployed can be determined based on the time it takes for data to travel along the cable and the speed at which the data travels. This allows for accurate determination of cable length without relying on manually cutting cables to specific lengths. Determining and utilizing cable length after network 200 is deployed reduces the need to manually modify network 200. For example, it eliminates the need to install new cables of specific lengths or to lengthen or shorten existing cables. This allows for programmed delays into the hardware already present in network 200, reducing material costs while increasing the efficiency of correcting injustices in sending and receiving data on network 200.
[0035] Figure 3 shows another example of a network configuration. Network 300 is substantially similar to networks 100 and 200 described in Figures 1 and 2, and may include a network switch 302, optical hardware 306-310, cables 324-328, and destination hardware 312-316. Destination hardware 216-224 may be, for example, TORs. Destination hardware 312-316 are optical hardware Hardware 318-322 may each be included. The lengths of cables 324-328 may differ, as may cables 226-234. Delays determined based on the replication engine 304 and the lengths of cables 324-328 may be programmed into the ingress and / or egress optical hardware 306-310, and / or ingress and / or egress optical hardware 318-322. The programmed delays may mitigate injustices in unicast traffic between network switch 302 and destination hardware 312-316.
[0036] For example, cables 324 and 328 are of the same length, while cable 326 is a longer cable. In such an example, the inlet and / or outlet optical hardware 306, 310 may be programmed with a delay based on the cable length, while the inlet and / or outlet optical hardware 308, 318, 320, 322 are programmed with a delay of 0. In another example, the inlet and / or outlet optical hardware 318, 322 may be programmed with a delay based on the cable length, while the inlet and / or outlet optical hardware 306, 310, 318, 320 are programmed with a delay of 0.
[0037] According to some examples, for a particular link, the exit optical hardware at one end of the cable may be programmed with a delay, and the inlet optical hardware at the other end of the cable may be programmed with a delay of zero. This allows for further programming of the optical hardware to compensate for any asymmetry. According to some examples, programming a delay in the exit optical hardware at one end of the cable and a delay in the inlet optical hardware at the other end of the cable may compensate for any injustices in the printed circuit board ("PCB").
[0038] Figure 4 shows an example system in which the features described above and the features described herein may be implemented. Although several components are shown, these components are merely non-limiting examples, and other components may be further included or replaced. These figures should not be considered to limit the scope of this disclosure or the usefulness of the features described herein. In this example, 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, replication engine 412, and optical hardware 414. The network switch 402 may be, for example, a TOR, multicast leaf, or S2 switch.
[0040] The processor 404 may be a conventional processor, such as a commercially available microprocessor. Alternatively, one or more processors may be application-specific integrated circuits (ASICs) or other hardware-based processors. Although Figure 4 shows the processor, memory, and other elements of the network switch 402 functionally in the same block, a person skilled in the art will see 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 in the same physical enclosure). Similarly, memory may be a hard drive or other storage medium located in an enclosure different from the enclosure of the network switch 402. Thus, references to processors and computing devices may include references to sets of multiple processors, sets of multiple computing devices, or sets of multiple memories (which may or may not operate in parallel).
[0041] Memory 406 may store processor-accessible information, including instructions 408 that can be executed by processor 404. Memory 406 may be a type of memory that functions to store information accessible by processor 404, and includes non-temporary computer-readable media, or other media that store data that can be read using electronic devices, such as hard drives, memory cards, read-only memory ("ROM"), random access memory ("RAM"), optical discs, and other writable memories, as well as read-only memory. The subject matter disclosed herein may include various combinations of the above, thereby storing various parts of instructions 408 and data 410 on various types of media.
[0042] Memory 406 can be retrieved, stored, or modified by processor 404 in accordance with instruction 408. For example, although this disclosure is not limited by a particular data structure, data 410 may be stored in a computer register, relational database as a table, XML document, or flat file having several different fields and records. Data 410 may be formatted in a computer-readable format, such as binary values, ASCII, or Unicode, but is not limited to these. As a further example, data 410 may be stored as a bitmap consisting 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 drawing graphics. Data 410 may also include information sufficient to identify relevant information, such as numbers, descriptions, proprietary codes, pointers, or references to data stored in other memory (including other network locations), or information used by functions to compute relevant data.
[0043] Instruction 408 may be a set of instructions that are executed directly, such as machine code, or a set of instructions that are executed indirectly by the processor 404, such as a script. In this regard, the terms “instruction,” “application,” “step,” and “program” may be used synonymously herein. Instructions may be stored in a target code format for direct processing by the processor, in the language of other computing devices, including scripts, or in a collection of independent source code modules that are interpreted on demand and pre-compiled. Details of the functions, methods, and routines of instructions will be described later.
[0044] The replication engine 412 can copy data transmitted over multiple cables connected to a network switch. The replication engine 412 may require a predetermined period of time to replicate or copy the data. This predetermined period may depend 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 received synchronously by the destination hardware 416. For example, the replication engine 412 may create a total number of copies equal to the total number of cables minus one. The total number of copies may be equal to the total number of cables minus one because the original data is sent 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 the delay of one or more cables connected to the network switch 402 based on the time it takes for the replication engine 412 to create a copy. In such an example, the delay of a given cable may be determined based on the number of copies remaining to be created. The number of copies remaining may be determined based on the number of copies already created and the total number of copies yet to be created. For example, network switch 40 If there are 10 cables connected to 2, and the replication engine 412 has already created copies of the data for cables 1-6, then after creating a copy of the data for cable 6, the number of data copies to be created will be 4. To determine the delay for a given cable, the remaining number of copies to be created can be multiplied by the time it takes to create each copy.
[0046] According to some examples, the processor 404 may, in addition to or instead of this, determine the delay based on the length of the cables connected to the network switch 402. The processor 404 may determine the length of time it takes for data to travel through each cable. The delay may be determined by comparing the time it takes for data to travel through each cable. For example, the processor 404 may use the longest time it takes for data to travel through a cable as a baseline. The lengths of the remaining times may be compared to this longest time. The difference between the longest time and the time for each 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 consist of an input delay and / or an output delay.
[0048] The destination hardware 416 may comprise one or more processors 418, memory 420, instructions 422, data 424, optical hardware 426, and an I2C bus 430. These components may operate in the same or similar manner as the components described above in the network switch 402. In some examples, the destination hardware 416 may be end-user devices such as TOR, smartphones, laptops, desktops, home assistant devices, AR / VR glasses, or consumer hardware.
[0049] Figure 5 shows an example of a method for programming the optical hardware of each cable. The operations described below do not have to be performed in exactly the same order as described later. Rather, various operations may be processed in various orders, simultaneously, or omitted.
[0050] Block 502 identifies multiple cables in the network switch. These cables could be, for example, fiber optic cables. Each cable may provide a link between the network switch and a destination such as an end user or TOR (Top of Rack).
[0051] Block 504 determines the remaining number of copies of data for a given cable among several cables. The remaining number of copies may consist of the total number of cables included in the multiple cables, minus the number of completed copies of data. For example, a network switch has a replication engine. The replication engine can create copies of data transmitted through multiple cables. These copies may be created in an order corresponding to the order of the cables, the order in which they are transmitted, etc. To determine the remaining number of copies to be created, the number of copies already created may be subtracted from the total number of copies to be created.
[0052] Block 506 determines the delay for each of the multiple cables. The delay for each cable can be based on the number of remaining copies of the data for that cable and the amount of time required to create each copy of the data. The delay for each cable ensures that data transmitted through each cable arrives synchronously at its respective destination. For example, the delay of the first cable in a sequence is greater than that of the cables later in the sequence. The delay of the first cable in a sequence is greater because, after the copies for that cable have been created, there are more remaining copies to create than that of the last cable in the sequence.
[0053] In block 508, the optical hardware of each cable can be programmed based on each delay. For example, each cable may have inlet and / or outlet optical hardware at one or both ends of the cable. Delays can be programmed into the inlet and / or outlet optical hardware at one or both ends. Each delay allows data to be transmitted synchronously through multiple cables.
[0054] According to several 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, the delay can be determined. For example, a longer cable may have a longer length of time for data to travel along the cable length compared to a shorter cable. The time difference between the long and short cables can be added to the short cable as a delay. The inlet and / or outlet optical hardware at one or both ends of the cable can be programmed with a second delay determined based on the cable length.
[0055] Latency can be programmed after the network is deployed. Determining and programming latency after the network is deployed allows for latency to be determined based on real-time latency fluctuations within the network's cables. Furthermore, determining and programming latency after the network is deployed allows for efficient determination and implementation of per-cable latency. For example, programming per-cable latency reduces the need to manually modify the network's physical structure by adding or removing fibers or adding additional components. Latency can be programmed into the optical hardware, which is already part of the network; therefore, no additional components are needed to implement latency. In some examples, the programmable nature of latency makes it possible to scale the network and implement it in large data centers.
[0056] Programming a delay for each cable can mitigate unfairness in data transmission and reception. The delay allows for synchronous transmission and reception of data across the network, thus mitigating the unfairness of one destination receiving data before another.
[0057] Unless otherwise specified, the other embodiments described above are not mutually exclusive. However, various combinations may be implemented to achieve unique advantages. Since these and other modifications and combinations of the functions described above can be used without departing from the subject matter of the invention set forth in the appended claims, the descriptions of the embodiments above should be considered as examples, not as limiting the subject matter of the invention set forth in the appended claims. In addition, the provision of embodiments described herein, and the provision of sections expressed with words such as "such as" and "including," should not be interpreted as limiting the subject matter of the invention of the appended claims to specific embodiments. Rather, these embodiments are merely illustrative of one of many possible embodiments. Furthermore, identical or similar elements can be identified by the same reference numerals in various drawings.
Claims
1. It is a method, One or more processors identify multiple cables in a network switch, The method includes one or more processors determining the remaining number of data copies for a given cable among the plurality of cables, wherein the remaining number of copies is obtained by subtracting the number of completed data copies from the total number of cables included in the plurality of cables, and the method further includes: The method includes one or more processors determining the delay of each of the plurality of cables, wherein the delay of each cable is based on at least one of the length of each cable or the remaining number of copies of the data, and the method further includes: A method comprising one or more processors programming the optical hardware of each cable based on each of the delays.
2. A method, One or more processors identify multiple cables in a network switch, The method includes one or more processors determining the remaining number of data copies for a given cable among the plurality of cables, wherein the remaining number of copies is obtained by subtracting the number of completed data copies from the total number of cables included in the plurality of cables, and the method further includes: The one or more processors determine the delay of each of the multiple cables, The one or more processors include programming the optical hardware of each cable based on each of the delays, The delay of each of the aforementioned cables is The length of each cable and, The remaining number of copies of the data for each of the aforementioned cables, A method based on the length of time required to create each copy of the data.
3. The method according to claim 1, wherein the optical hardware includes an input optical hardware and an output optical hardware.
4. The method according to claim 3, wherein programming the optical hardware includes programming at least one of the inlet optical hardware or the outlet optical hardware.
5. When programming the optical hardware, the method is The one or more processors program the input optical hardware based on the delay of each cable, The method according to claim 3, further comprising transmitting the data synchronously through the plurality of cables based on the delay of each of the plurality of cables.
6. The method according to claim 1, further comprising a replication engine copying the data transmitted through the plurality of cables, wherein the total number of copies created by the replication engine is equal to the total number of cables included in the plurality of cables minus one.
7. The method according to claim 1, further comprising the one or more processors determining the length of each cable.
8. Determining the aforementioned delay means The one or more processors determine the length of time the data travels along the length of each cable, The one or more processors compare the length of time, The method according to claim 7, further comprising the one or more processors determining the delay of each of the plurality of cables based on the comparison.
9. The method according to claim 1, further comprising the one or more processors programming the optical hardware of each cable based on the delay of each cable.
10. The method according to claim 1, wherein the delay for each cable enables the data transmitted through each cable to arrive synchronously at each destination.
11. A program that, when executed by one or more processors, includes instructions that cause the one or more processors to perform the method described in any one of claims 1 to 10.
12. A storage device for storing the program described in claim 11, A device comprising one or more processors configured to execute the aforementioned program.