Programmable delay in networked optics
By programming delays in fiber optic networks and adjusting optical hardware based on the number of data copies and cable length, the problem of unfair data transmission and reception in fiber optic networks is solved, enabling synchronous reception of information by end users and reducing adjustment costs.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- GOOGLE LLC
- Filing Date
- 2023-07-20
- Publication Date
- 2026-07-31
AI Technical Summary
In existing fiber optic networks, the unfairness in data transmission and reception is difficult to adjust precisely, resulting in inconsistent information reception times for end users, and the adjustment process is costly in terms of labor and materials.
The delay is determined by programming the delay in the optical hardware, based on the number of data copies and the cable length, and the optical hardware is programmed to synchronize data transmission and reception. The processor identifies the cable and determines the delay, the copy engine copies the data, and the optical hardware is configured via the I2C bus.
It enables synchronous data transmission and reception in the deployed fiber optic network, reduces unfairness among end users, lowers adjustment costs, and is suitable for large data centers and high-speed data transmission.
Smart Images

Figure CN116707647B_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to programmable delays in networked optics. Background Technology
[0002] Fairness in data transmission and reception is based on the premise that end users receive the same information simultaneously and that it takes the same amount of time to send the information to all end users. To ensure fairness, networks typically modify the length of the physical cables that transmit data within the network to increase or decrease the latency along a given network path. Increasing or decreasing cable length is difficult in terms of precision. Furthermore, increasing or decreasing cable length is expensive in terms of both labor and materials, especially in large-scale networks. Summary of the Invention
[0003] This technology typically involves programming the delay in existing hardware within a fiber optic network to reduce unfairness in transmitting and receiving data. Delay can be programmed in the optical hardware after network deployment. The delay can be determined based on the time it takes for the networking switch to replicate the data to be transmitted and / or the cable length. According to some examples, the delay can be programmed at either or both of the optical hardware at the cable's exit and entry points. Programmable delays reduce the unfairness of one destination or end user receiving data before another when synchronized information reception is desired.
[0004] One aspect of this technology relates to a method comprising: identifying a plurality of cables at a network switch by one or more processors; determining, by the one or more processors, the number of remaining copies of data for a given cable among the plurality of cables, wherein the number of remaining copies includes the total number of cables among the plurality of cables minus the number of completed copies of the data; determining, by the one or more processors, a delay for each of the plurality of cables, wherein the delay of a respective cable is based on: the remaining number of copies of the data for the respective cable, and the time length for making each copy of the data; and programming, by the one or more processors, optical hardware for the respective cable based on the respective delay.
[0005] The optical hardware may include inlet optical hardware and outlet optical hardware. Programming the optical hardware may include programming at least one of the inlet optical hardware or the outlet optical hardware. When programming the optical hardware, the method may further include: programming the inlet optical hardware by the one or more processors based on the delay of the respective cables; and synchronously transmitting the data via the plurality of cables based on the delay of each of the plurality of cables.
[0006] The method may further include copying the data to be transmitted via the plurality of cables by a replication engine, wherein the total number of copies made by the replication engine corresponds to the total number of cables in the plurality of cables minus 1.
[0007] The method may further include: determining the length of each cable by the one or more processors; and determining a second delay by the one or more processors based on the length of each cable. Determining the second delay may further include: determining the time length by which the data travels along the length of each cable by the one or more processors; comparing the time lengths by the one or more processors; and determining a second delay for each of the cables by the one or more processors based on the comparison. The method may further include programming optical hardware for the respective cable by the one or more processors based on the second delay for the respective cable.
[0008] The delay used for each cable allows data transmitted via the corresponding cable to arrive at the appropriate destination synchronously.
[0009] Another aspect of this technology relates to a device comprising one or more processors. The one or more processors may be configured to: identify a plurality of cables at a network switch; determine the number of remaining copies of data for a given cable among the plurality of cables, wherein the number of remaining copies includes the total number of cables among the plurality of cables minus the number of completed copies of the data; determine a delay for each of the plurality of cables, wherein the delay of the respective cable is based on: the remaining number of copies of the data for the respective cable, and the time length for creating each copy of the data; and program optical hardware for the respective cable based on the respective delay.
[0010] Another aspect of this technology relates to a non-transitory storage medium comprising instructions that, when executed by one or more processors, cause the one or more processors to: identify a plurality of cables at a network switch; determine the number of remaining copies of data for a given cable among the plurality of cables, wherein the number of remaining copies includes the total number of cables among the plurality of cables minus the number of completed copies of the data; determine a delay for each of the plurality of cables, wherein the delay of a corresponding cable is based on: the remaining number of copies of the data for the corresponding cable, and the time length for creating each copy of the data; and program optical hardware for the corresponding cable based on the corresponding delay. Attached Figure Description
[0011] Figure 1 This is a block diagram of an exemplary network in accordance with aspects of this disclosure, where all cables are of equal length.
[0012] Figure 2 This is a block diagram of an exemplary network in which the cable length can be varied according to aspects of this disclosure.
[0013] Figure 3 This is a block diagram of an exemplary network according to aspects of this disclosure, wherein both ends of the cable include optical hardware.
[0014] Figure 4 This is a block diagram of an exemplary system according to aspects of this disclosure.
[0015] Figure 5 This is a flowchart of an exemplary method for programming a delay according to aspects of this disclosure. Detailed Implementation
[0016] This technology typically involves programming delays in fiber optic networks to reduce unfairness in the transmission and reception of data. Programmable delays allow for the synchronous transmission and / or reception of data. This can reduce the unfairness of one destination or end user receiving data before another when information needs to be distributed synchronously.
[0017] After deploying a fiber optic network, latency can be programmed in the optical hardware. The optical hardware can be configured, for example, via an I2C bus. For example, a fiber optic network may include multiple fiber optic cables, networking switches, optical hardware, etc. Latency can be programmed at either or both of the cable's exit and entry optical hardware. The amount of latency can be determined based on cable inequality between the networking switch and the user hardware. Additionally or alternatively, the amount of latency can be determined based on the time taken by the networking switch to copy the data to be transmitted. According to some examples, latency can be programmed at the exit and / or entry optical hardware to compensate for different cable lengths.
[0018] By determining and programming delays after the fiber optic network is deployed, delays can be determined based on real-time delay differences within the system's cables. Furthermore, by programming delays based on real-time differences, the delay for each cable can be efficiently determined and implemented. For example, delay programming reduces the need for manual modifications to the fiber optic network, such as adding or removing fiber lengths. This improves the efficiency of correcting unfairness while reducing material costs, as the delay is programmed into the hardware already part of the fiber optic network.
[0019] The programmable nature of latency allows systems to be scaled and implemented for large data centers. For example, latency can be determined and programmed for a specific channel based on measured data. Programmable latency is also suitable for high-speed data centers where data propagates at gigabits per second (e.g., 25 Gbps / sec).
[0020] Figure 1The illustration depicts an exemplary network configuration between a networking switch and destination hardware. The network can be, for example, a fiber optic network, copper, or Ethernet. Network 100 may include a networking switch 102, optical hardware 106-114, multiple cables 116-124, and destination hardware 126-134. According to some examples, the networking switch 102 may be a top-of-rack (“TOR”) switch, and the destination hardware 126-134 may be user or client hardware. The networking switch 102 may include a replication engine 104. The replication engine 104 can be configured to replicate or copy data to be transmitted via cables 116-124. Cables 116-124 may be, for example, fiber optic cables, Ethernet cables, etc.
[0021] Data can be transmitted from network switch 102 via cables 116-124 to multiple destinations 126-134 or end users. In some examples, network switch 102 may be a leaf node of a multicast tree. To prevent unfairness in which destination hardware 126-134 receives data via network switch 102 at different times, the data should arrive at destination hardware 126-134 substantially simultaneously. The data may be, for example, multicast packets. To ensure simultaneous arrival of data at destination hardware 126-134, the delay for each cable 116-124 can be determined. The delay can be determined after the fiber optic network 100 has been deployed and programmed in optical hardware 106-114, before transmitting data from network switch 102 to destination hardware 126-134. The delay can be programmed to attempt to ensure fairness in that data is received synchronously by destination hardware 126-134 once it is transmitted.
[0022] Multiple cables 116-124 can be coupled to a networking switch 102. Data can be transmitted from the networking switch 102 to destination hardware 126-134 via multiple cables 116-124. The order in which data is transmitted via cables 116-124 can be static. A static order indicates that the transmission order does not change between data transmissions. According to some examples, by determining the static order, the delay of each individual cable can be determined, rather than the aggregate delay of all cables. For example, as... Figure 1As shown, cable 116 can be the first in the static order, and cable 124 can be the last. In such an example, cable 118 would be the second, cable 120 the third, and cable 122 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; the static order of cables 116-124 can be shifted from the center to the right, such that cable 120 is the first in the static order and cable 118 is the last, and so on. Therefore, the left-to-right order of cables 116-124 is merely an example and is not intended to be limiting.
[0023] According to some examples, each cable 116-124 may have different delays based on its position in the static transfer sequence and the number of remaining copies to be made. For example, a cable at the beginning of the static transfer sequence will have a greater delay than a cable at the end of the static transfer sequence. For example, if cable 116 is the first cable in the static sequence and cable 124 is the last cable in the static sequence, then cable 116 will have a greater delay than cable 124. The delay can be determined based on the amount of time required for replication engine 104 to copy data and the number of times replication engine 104 must copy data. In some examples, the delay can be determined based on the number of remaining copies to be made after making copies for the corresponding cables.
[0024] Based on some examples, the number of remaining copies to be made can be determined by subtracting the number of completed copies from the total number of cables coupled to the networking switch 102. For example... Figure 1 As shown, there are five cables 116-124 in network 100. As an example, using cable 118, the second cable in the static transmission sequence, two copies have already been made, for example, copies for cables 116 and 118. The number of remaining copies to be made after the copy of cable 118 is 3. To determine the delay of the second cable, such as cable 118, the number of remaining copies, 3, can be multiplied by the time it takes for the replication engine 104 to make copies of the data.
[0025] 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 can allow data to be transmitted and / or received synchronously by the destination hardware 126-134 simultaneously. The delay can be programmed into the exit and / or entry optical hardware 106-114. For example, data can be transmitted simultaneously, and the delay can be programmed at the entry 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 at the exit optical hardware 106-114 such that data is transmitted with a delay but received synchronously by the destination hardware 126-134. In yet another example, the delay can be programmed at both the exit and entry optical hardware 106-114 such that the data is received synchronously by the destination hardware 126-134.
[0026] As an example, if there are five cables, such as cable 116-124, then... Figure 1 As shown, and since the replication engine 104 requires 1 ns for each copy, the delay of the first cable 116 can be 4 ns, the delay of the second cable 118 can be 3 ns, and so on, while the delay of the fifth cable 124 can be 0 ns. The 4 ns delay at the first cable 116 allows the replication engine 104 to copy the data of each subsequent cable 118-124 in the order of transmission. By delaying the data transmission via the first cable 116 by 4 ns, each of the remaining cables 118-124 can receive a copy of the data to be transmitted during the delay period. Furthermore, by delaying the data transmission via the first cable 116 by 4 ns, the final copy of the data of the last cable 124, such as the fifth cable 124, may have already been completed. Therefore, the delay at the first cable 116 can correspond to how long it will take the replication engine 104 to make a data copy for each of the remaining cables 118-124.
[0027] Delay can be additionally or alternatively based on the length of the optical fiber. Figure 1 The purpose of the example shown is that each cable 116-124 is substantially the same length. In an example where the lengths of cables 116-124 are substantially equal, a delay may not be needed to compensate for the differences.
[0028] After the delay period, data can be transmitted from the network switch 102 to the destination hardware 126-134. The delay of each cable 116-124 allows data to be transmitted by the network switch 102 and thus received synchronously by the destination hardware 126-134.
[0029] Although Figure 1The illustration shows that network switch 102 can be a TOR and destination hardware 126-134 can be network 100 of end users; however, according to some examples, destination hardware 126-134 can be a TOR, making network switch 102 simply a network switch such as an S2 switch instead of a TOR. In such examples, each destination hardware 126-134 can be a leaf in a multicast tree. Latency can be determined to compensate for the fanout from network switch 102 to destination hardware 126-134 (e.g., each leaf in the multicast tree) by replication engine 104.
[0030] Figure 2 Another exemplary network configuration is illustrated. Network 200 is essentially similar to the reference configuration. Figure 1 The described network 100 includes network 200 which may include a networking switch 202, optical hardware 206-214, cables 226-234, and destination hardware 216-224. The networking switch 202 may be, for example, a TOR leaf in a multicast tree. The destination hardware 216-224 may be client hardware or hardware at the location of the end user. Cables 226-234 and... Figure 1 The difference between cables 116-124 is that cables 226-234 can have different lengths. In the example where cables 226-234 have different lengths, the latency for transmitting data from the networking switch 202 to the destination hardware 216-224 can be determined based on the length of cables 226-234, in addition to the time spent by the replication engine 204 copying the data of each cable 226-234, or instead of the time spent by the replication engine 204 copying the data of each cable 226-234.
[0031] Data traveling via a longer cable may take longer to reach its destination compared to data traveling via a shorter cable. To compensate for the difference in time taken for data to travel over different cable lengths, a delay can be programmed into the exit and / or entrance optical hardware. The delay programmed into the optical hardware based on cable length can supplement or replace a delay determined based on the time taken to replicate the data.
[0032] Kinematic equations can be used to determine delays based on cable length. For example, given the speed at which data packets travel along the cable and the length of the cable, the time it takes for data to travel from the networking switch 202 to the corresponding destination hardware 216-224 can be determined, and vice versa. According to some examples, the size of the data packets can be used additionally or alternatively when determining the speed at which data packets travel through the cable.
[0033] Using kinematic equations, the time it takes for data to travel along each cable can be determined. For example, kinematic equations, such as... Here, Δx corresponds to the cable distance, v corresponds to the initial speed of the data traveling through the cable, and t corresponds to the time taken for the data to travel the cable length. The time taken for the data to travel through each cable can be compared to determine the delay. As an example, if it takes 516 ns to travel 105m and 492 ns to travel 100m, a delay of 24 ns can be added to the 100m inlet or outlet optics. Even with different cable lengths, the delay can allow end users to receive data synchronously. This can reduce unfairness in both unicast and multicast services.
[0034] use Figure 2 Taking network 200 configuration as an example, cable 226 can be 100 meters long, cable 228 can be 101 meters long, cable 230 can be 103 meters long, cable 232 can be 112 meters long, and cable 234 can be 103 meters long. Data traveling 1 meter of cable may take 5 ns, allowing a data travel speed of 0.2 m / ns. Based on the length of each cable and the speed at which data travels through each cable, the delay of each cable can be determined. The delay can be determined by comparing the time it takes for data to travel on the corresponding cable with the time it takes for data to travel through the longest cable of network 200. Based on some examples, the difference between the cable length and the longest cable length can be determined. Knowing the speed at which data travels through the cables, the length difference can be used to determine the delay.
[0035] exist Figure 2 In the exemplary configuration, the longest cables are cables 230 and 234, both 103 meters long. Data traveling via cables 230 and 234 travels 3 meters longer than data traveling via cable 226 (100 meters long). Based on the data travel speed, for example 0.2 m / ns, transmitting data via cables 230 and 234 will take 15 ns longer than data traveling via cable 226. This 15 ns delay can be programmed into the ingress optical hardware 206. Data traveling via cables 230 and 234 travels 1 meter longer than data traveling via cable 232. Transmitting data via cables 230 and 234 will take 5 ns longer than data traveling via cable 232. A 75 ns delay can be programmed into the ingress optical hardware 212. Data traveling via cables 230 and 234 travels 2 meters longer than data traveling via cable 228. Transmitting data via cables 230 and 234 will take 10 ns longer than via cable 228. This 10 ns delay can be programmed into the inlet optical hardware 208.
[0036] According to some examples, delays can be programmed into the exit and / or inlet optical hardware based on the cable length and the time taken by the replication engine 204 to make a copy of the data to be transmitted. According to some examples, delays based on the replication engine 204 can be programmed into the exit optical hardware 206-214, while delays based on the cable length can be programmed into the inlet optical hardware.
[0037] As an example, replication engine 204 may require 1 ns for each data copy. Based on the time taken by replication engine 204 to create a copy of the data for each cable 226-234, a 4 ns delay can be programmed into the exit optical hardware 206 for cable 226, a 3 ns delay into the exit optical hardware 208 for cable 228, a 2 ns delay into the exit optical hardware 210 for cable 230, a 1 ns delay into the exit optical hardware 212 for cable 232, and a 0 ns delay into the exit optical hardware 214 for cable 234. The 0 ns delay for cable 234 indicates that data can be transmitted via all cables 226-234 once a copy of the data for cable 234 has been created by replication engine 204. Therefore, since all copies are created once a copy for cable 234 is made, cable 234 may not require a delay. This delay can be programmed into the optical hardware 206-214 in addition to a delay based on cable length.
[0038] According to some examples, in addition to the delay based on the time spent copying data by the replication engine, a delay based on cable length can also be programmed into the exit optical hardware, and a delay based on cable length can also be programmed into the entry optical hardware. For example, entry optical hardware 206 can be programmed to have a delay of 15 ns based on the delay caused by the difference in cable length, while exit optical hardware 206 can be programmed to have a delay of 19 ns based on the difference in cable length and the delay caused by the replication engine. As another example, entry optical hardware 208 can be programmed to have a delay of 10 ns based on the difference in cable length, while exit optical hardware 208 can be programmed to have a delay of 13 ns based on the difference in cable length and the replication engine.
[0039] After network 200 is deployed, delays based on cable length and / or the time spent by the replication engine copying data can be programmed in optical hardware 206-214 via the I2C bus. By programming the delays after network 200 deployment, the ingress delay or the delay based on cable length can be accurately determined. For example, the cable length after network 200 deployment 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 the cable length, rather than relying on manually cutting the cable to a specific length. By determining and using the cable length once network 200 is deployed, manual modifications to network 200 are reduced. For example, it is not necessary to install new cables of a specific length, and increasing or decreasing the cable length would be unnecessary, etc. This improves the efficiency of correcting unfairness when transmitting and receiving data in network 200, while reducing material costs because the delays are programmed into the hardware pre-existing in network 200.
[0040] Figure 3 Another exemplary network configuration is illustrated. Network 300 is essentially similar to the reference configuration. Figure 1 and Figure 2 Networks 100 and 200 are described such that network 300 may include networking switch 302, optical hardware 306-310, cables 324-328, and destination hardware 312-316. Destination hardware 316-224 may be, for example, TOR. Destination hardware 312-316 may include corresponding optical hardware 318-322. Similar to cables 226-234, cables 324-328 may have different lengths. The latency determined based on the replication engine 304 and the length of cables 324-328 can be programmed to the ingress and / or egress optical hardware 306-310 and / or the ingress and / or egress optical hardware 318-322. The programmed latency can reduce unfairness in unicast traffic between networking switch 302 and destination hardware 312-316.
[0041] As an example, cables 324 and 328 can have the same length, while cable 326 can have a longer length. In such an example, a cable length-based delay can be programmed in the inlet and / or outlet optical hardware 306, 310, while zero delay is programmed in the inlet and / or outlet optical hardware 308, 318, 320, 322. In another example, a cable length-based delay can be programmed in the inlet and / or outlet optical hardware 318, 322, while zero delay is programmed in the inlet and / or outlet optical hardware 306, 310, 318, 320.
[0042] According to some examples, for a specific link, a delay can be programmed in the exit optical hardware at one end of the cable, while zero delay can be programmed in the entry optical hardware at the other end of the cable. This allows the optical hardware to be further programmed to compensate for asymmetries in the optical hardware. According to some examples, programming the delay in the exit optical hardware at one end of the cable and the delay in the entry optical hardware at the other end of the cable can compensate for printed circuit board (“PCB”) unfairness.
[0043] Figure 4 An exemplary system that can implement the features described above and herein is illustrated. While several components are shown, such components are merely non-limiting examples and other components may be additionally or alternatively included. The accompanying drawings should not be construed as limiting the scope of this disclosure or the usefulness of the features described herein. In this example, system 400 may include a networking switch 402 and one or more destination hardware 416.
[0044] The network switch 402 may include one or more processors 404, memory 406, instruction set 408, data processing unit 410, replication engine 412, and optical hardware 414. The network switch 402 may be, for example, a TOR, a leaf node of a multicast tree, an S2 switch, etc.
[0045] Processor 404 can be any conventional processor, such as a commercially available microprocessor. Alternatively, one or more processors can be application-specific integrated circuits (ASICs) or other hardware-based processors. Although Figure 4 While the processor, memory, and other components of the networking switch 402 are functionally shown as being housed in the same block, those skilled in the art will understand that a processor, computing device, or memory may actually include multiple processors, computing devices, or memories that may or may not be housed in the same physical enclosure. Similarly, memory may be a hard disk drive or other storage medium located in a different enclosure than that of the networking switch 402. Therefore, references to processors or computing devices will be understood to include references to a collection of processors or computing devices or memories that may or may not operate in parallel.
[0046] Memory 406 may store information accessible by a processor, including instructions 408 executable by processor 404. Memory 406 may be a type of memory operable to store information accessible by processor 404, including non-transitory computer-readable media or other media storing data readable by means of an electronic device, such as hard disk drives, memory cards, read-only memory (“ROM”), random access memory (“RAM”), optical discs, and other writable and read-only memories. The subject matter disclosed herein may include different combinations of the foregoing, whereby different portions of instructions 408 and data 410 are stored on different types of media.
[0047] Memory 406 can be retrieved, stored, or modified by processor 404 according to instructions 408. For example, although this disclosure is not limited to a particular data structure, data 410 can be stored in a computer register, or in a relational database, as a table, XML document, or flat file with multiple different fields and records. Data 410 can also be formatted in a computer-readable format (such as, but not limited to, binary values, ASCII, or Unicode). As a further example only, data 410 can be stored as a bitmap composed of pixels, which are stored in compressed or uncompressed or various image formats (e.g., JPEG), vector-based formats (e.g., SVG), or computer instructions for drawing graphics. Furthermore, data 410 can include information sufficient to identify relevant information, such as numbers, descriptive text, proprietary code, pointers, references to data stored in other memory (including other network locations), or information used by functions to calculate relevant data.
[0048] Instruction 408 can be any set of instructions, such as machine code, that is directly executed by processor 404, or any set of instructions, such as scripts, that is indirectly executed. In this regard, the terms "instruction," "application," "step," and "program" are used interchangeably herein. Instructions can be stored in object code format for direct processor processing, or in any other computing device language, including sets of scripts or standalone source code modules that are interpreted on demand or pre-compiled. The functionality, methods, and routines of the instructions are explained in more detail below.
[0049] The replication engine 412 can copy data to be transmitted via multiple cables coupled to a network switch. The replication engine 412 may require a predetermined time period to copy or reproduce data. The predetermined time period can be based on the size or amount of data to be copied. The replication engine 412 can copy data a sufficient number of times so that the data can be received synchronously by the destination hardware 416. For example, the replication engine 412 can create a total number of copies corresponding to the total number of cables minus one. The total number of copies may correspond to the total number of cables minus one. The minus one may be due to the original copy of the data being transmitted to the destination hardware 416.
[0050] Processor 404 can determine the latency to be programmed in optical hardware 414. For example, processor 404 can determine the latency of one or more cables coupled to networking switch 402 based on the time taken by replication engine 412 to create copies. In such an example, the latency can be determined based on the number of remaining copies to be created for a given cable. The number of remaining copies can be determined based on how many copies have already been created and the total number of copies to be created. For example, if there are ten cables coupled to networking switch 402 and replication engine 412 has already created copies of data for cables 1-6, then after creating a copy of data for cable 6, there are four remaining copies of data to be created. The number of remaining copies to be created can be multiplied by the amount of time taken to create each copy to determine the latency of a given cable.
[0051] According to some examples, processor 404 may additionally or alternatively determine latency based on the length of the cable coupled to networking switch 402. Processor 404 may determine the time taken for data to travel each length of the cable. The time taken for data to travel each cable can be compared to determine latency. For example, processor 404 may use the longest time taken for data to travel along the cable as a baseline. The remaining time can be compared to the longest time. The difference between the longest time and the corresponding cable length can be programmed into optical hardware as the latency of that cable.
[0052] Optical hardware 414 can be configured via I2C bus 428. Optical hardware 414 can be configured with ingress and / or egress delays.
[0053] Destination hardware 416 may include one or more processors 418, memory 420, instruction set 422, data transfer 424, optical hardware 426, and I2C bus 430. These components may operate in the same or similar manner as those described above with reference to networking switch 402. In some examples, destination hardware 416 may be a TOR, an end-user device such as a smartphone, laptop computer, desktop computer, home assistant device, AR / VR glasses, or consumer hardware.
[0054] Figure 5 An exemplary method for programming the optical hardware of a corresponding cable is illustrated. The following operations need not be performed in the exact order described below. Instead, various operations can be processed in different orders or simultaneously, and some operations can be omitted.
[0055] In box 502, identify the multiple cables at the network switch. These cables can be, for example, fiber optic cables. Each cable provides a link between the network switch and a destination such as an end user, rack top, etc.
[0056] In box 504, determine the number of remaining copies of data for a given cable among multiple cables. The number of remaining copies may include the total number of cables among the multiple cables minus the number of completed copies of the data. For example, a network switch may include a replication engine. The replication engine can create copies of data to be transmitted via multiple cables. Copies may be created in an order corresponding to the order of the cables, the order of transmission, etc. To determine the number of remaining copies to be created, the number of copies already created can be subtracted from the total number of copies to be created.
[0057] In box 506, the delay of each of the multiple cables can be determined. The delay of a given cable can be based on the number of remaining copies of the data for that cable and the time length for making each copy of the data. The delay of each cable can allow data transmitted via that cable to arrive at its corresponding destination synchronously. For example, a cable at the beginning of a cable sequence may have a greater delay than a cable later in the sequence. A cable at the beginning of a sequence may have a greater delay than a cable at the end of a sequence because there are more remaining copies to be made after the copy for that cable has been made.
[0058] In box 508, the optical hardware of a given cable can be programmed based on a corresponding delay. For example, each cable may include inlet and / or outlet optical hardware at one or both ends of the cable. The inlet and / or outlet optical hardware at one or both ends can be programmed with delays. The delays can allow data to be transmitted synchronously via multiple cables.
[0059] Based on 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 corresponding time lengths can be compared. Based on this comparison, a delay can be determined. For example, a longer cable may have a longer time length for data to travel the cable length compared to a shorter cable. The time difference between the longer and shorter cables can be added as a delay to the shorter cable. The second delay determined based on the cable length can be programmed into the inlet and / or outlet optical hardware at one or both ends of the cable.
[0060] Latency can be programmed after network deployment. Determining and programming latency after network deployment allows for latency determination based on real-time latency differences within the network's cables. Furthermore, determining and programming latency after network deployment allows for efficient determination and implementation of latency for each cable. For example, programming the latency of each cable reduces the need for manually altering the network's physical structure—such as by adding or removing fiber optic cables or by adding additional components. Latency can be programmed into the optical hardware already part of the network. Therefore, implementing latency requires no additional components. Based on several examples, the programmable nature of latency allows networks to be scaled and implemented in large data centers.
[0061] By programming the delay on a per-cable basis, unfairness in transmitting and receiving data can be mitigated. Delay allows data to be transmitted and received synchronously over the network, thus reducing the unfairness of one destination receiving data before another.
[0062] Unless otherwise stated, the foregoing alternative examples are not mutually exclusive, but can be implemented in various combinations to achieve unique advantages. Since these and other variations and combinations of the features discussed above can be utilized without departing from the subject matter defined by the claims, the foregoing description of the examples should be understood illustratively rather than restrictively by the subject matter defined by the claims. Furthermore, the examples provided herein, as well as clauses phrased with "such as," "comprising," etc., should not be construed as limiting the subject matter of the claims to the specific examples; rather, these examples are intended only to illustrate one of many possible implementations. Moreover, the same reference numerals in different figures can identify the same or similar elements.
Claims
1. A method executed by one or more processors, comprising: Identify multiple cables at the network switch; Determine the number of remaining copies of the data to be made after each given cable in the plurality of cables, wherein the number of remaining copies of the data for each given cable includes the total number of cables in the plurality of cables minus the number of copies of the data that have been made before the given cable; Determine the corresponding first delay for each of the plurality of cables. The corresponding first delay for each cable is based on: The number of remaining copies of the data for the cable, and The length of time required to create each copy of the data; and For each of the plurality of cables, the optical hardware of the cable is programmed based on the corresponding first delay of the cable.
2. The method according to claim 1, wherein, Programming the optical hardware includes programming at least one of the inlet optical hardware and the outlet optical hardware.
3. The method according to claim 1, wherein, The optical hardware includes inlet optical hardware and outlet optical hardware, and Programming the optical hardware includes: The inlet optical hardware is programmed based on the corresponding first delay of each cable; and The copies of the data are transmitted synchronously via the multiple cables based on their corresponding delays.
4. The method according to claim 1, wherein, The copies of the data to be transmitted via the plurality of cables are created by a replication engine, wherein the total number of copies created by the replication engine corresponds to the total number of cables in the plurality of cables minus 1.
5. The method of claim 1, further comprising, for each of the plurality of cables: Determine the length of the cable; and The second delay is determined based on the length of the cable.
6. The method according to claim 5, wherein, Determining the second delay for each cable further includes: Determine the length of time the data travels along the length of the cable; The time length for the cable is compared with the time required for the data to travel via the longest of the plurality of cables; and The second delay of the cable is determined based on the comparison.
7. The method of claim 5, further comprising programming the optical hardware of the cable based on a second delay of each cable.
8. The method according to claim 1, wherein, The corresponding first delay of each cable allows copies of the data transmitted via the plurality of cables to arrive at their respective destinations synchronously.
9. A network switch, comprising: One or more processors, the one or more processors being configured to perform operations, the operations including: Identify the multiple cables at the network switch; Determine the number of remaining copies of the data to be made after each given cable in the plurality of cables, wherein the number of remaining copies of the data for each given cable includes the total number of cables in the plurality of cables minus the number of copies of the data that have been made before the given cable; Determine the corresponding first delay for each of the plurality of cables. The corresponding first delay for each cable is based on: The number of remaining copies of the data for the cable, and The length of time required to create each copy of the data; and For each of the plurality of cables, the optical hardware of the cable is programmed based on the corresponding first delay of the cable.
10. The network switch according to claim 9, wherein, Programming the optical hardware includes programming at least one of the inlet optical hardware and the outlet optical hardware.
11. The network switch according to claim 9, wherein, The optical hardware includes inlet optical hardware and outlet optical hardware, and Programming the optical hardware includes: The inlet optical hardware is programmed based on the corresponding first delay of each cable; and The copies of the data are transmitted synchronously via the multiple cables based on their corresponding delays.
12. The network switch of claim 9, further comprising a replication engine configured to create copies of the data to be transmitted via the plurality of cables, wherein, The total number of copies created by the replication engine corresponds to the total number of cables in the plurality of cables minus 1.
13. The network switch according to claim 9, wherein, The operation further includes, for each of the plurality of cables: Determine the length of the cable; as well as The second delay is determined based on the length of the cable.
14. The network switch according to claim 13, wherein, Determining the second delay further includes: Determine the length of time the data travels along the length of the cable; The time length for the cable is compared with the time required for the data to travel via the longest of the plurality of cables; and The second delay of the cable is determined based on the comparison.
15. The network switch according to claim 13, wherein, The operation further includes programming the optical hardware of the cable based on the second delay of each cable.
16. The network switch according to claim 9, wherein, The corresponding first delay of each cable allows copies of the data transmitted via the plurality of cables to arrive at their respective destinations synchronously.
17. A non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processors of a network switch, cause the one or more processors to perform operations, the operations including: Identify the multiple cables at the network switch; Determine the number of remaining copies of the data to be made after each given cable in the plurality of cables, wherein the number of remaining copies of the data for the given cable includes the total number of cables in the plurality of cables minus the number of copies of the data that have been made before the given cable; Determine the corresponding first delay for each of the plurality of cables. The corresponding first delay for each cable is based on: The number of remaining copies of the data for the cable, and The length of time required to create each copy of the data; and For each of the plurality of cables, the optical hardware of the cable is programmed based on the corresponding first delay of the cable.
18. The non-transitory computer-readable storage medium according to claim 17, wherein, The optical hardware includes inlet optical hardware and outlet optical hardware.