Controller for use in network node and method for use in network node
By using data packets of controller and delay fields in network nodes, selecting network paths with the lowest latency or lower threshold delays, the problem of difficulty in selecting the best path in the prior art is solved, and efficient data transmission and networking are achieved Resource utilization.
Patent Information
- Application Number
- CN202280096277.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2022-05-19
- Publication Date
- 2024-12-27
AI Technical Summary
The prior art is difficult to select the best path among multiple network paths to minimize latency caused by congestion, affecting the performance and throughput of data transmission.
Using a controller in a network node, select the best path and avoid congestion path by generating packets containing delay fields, transmitting along multiple network paths and receiving response messages to determine the path with the lowest or lower delays , improve network performance and utilization.
Effectively select the best network path, reduce latency, improve data transmission performance and network throughput, optimize network resource utilization and cost-effectiveness.
Smart Images

Figure CN119213750A_ABST
Abstract
Description
Technical Field
[0001] The present invention relates generally to the field of data networks, and more particularly to a controller for use in a network node and a method for use in a network node for telemetry-based multipath transmission in a network. Background Art
[0002] In today's world, the Internet connects people from all over the world, and anyone can easily share information and communicate with the help of the Internet. The Internet provides a network for sharing data with multiple communication devices at high speed. Data is usually transmitted through transport protocols such as transport control protocol (TCP) or remote direct memory access (RDMA). The transport protocol is responsible for establishing the connection and ensuring that all data arrives safely. However, in some cases, the problem faced by the transport protocol is to select a suitable network path to transmit the data without encountering any delay. The delay in the network path is caused by many factors, including different network paths, different speeds (such as bandwidth), and different congestion states, which all affect the queuing delay along the router / switch. Therefore, it is very important to select the best network path among multiple network paths because it greatly affects the performance of the transport protocol. In addition, the transport protocol selects the network path by changing the fields in the packet header, such as the transport layer or Internet Protocol version 6 (IPv6) flow label field. Many transport protocols use in-band telemetry, and each router along the network path pushes telemetry data into the transit packet.
[0003] Conventionally, certain attempts have been made to select the best network path to transmit data, such as by using a network telemetry method. The network telemetry method uses a constant-sized telemetry field added to a data packet. The constant-sized telemetry field includes the transit delay along the network path updated by each router / switch. However, the network telemetry method does not meet the expectation of selecting a suitable network path to transmit data without any delay. Another method discloses a telemetry field with a performance bitmap added to the data packet. Each router along the network path updates the corresponding bit, indicating whether the current router is congested. In addition, the information collected from the routers is used by a central management entity in the network to report or correct the problem. However, the existing methods do not explicitly disclose the selection of the best network path to transmit data without encountering any delay. Therefore, there is a technical problem of how to select the best network path among multiple network paths to transmit data while minimizing the delay due to congestion.
[0004] Therefore, based on the above discussion, there is a need to overcome the above-mentioned shortcomings associated with traditional network path selection techniques. Summary of the invention
[0005] The present invention provides a controller for use in a network node and a method for use in a network node. The present invention provides a solution to the existing problem of how to select the best network path among multiple network paths to transmit data while minimizing delays due to congestion. The purpose of the present invention is to provide a solution that at least partially overcomes the problems encountered in the prior art and provides an improved controller and method for telemetry-based multipath transmission in a network.
[0006] One or more objects of the invention are achieved by what is presented in the attached independent claims. Advantageous implementations of the invention are further defined in the dependent claims.
[0007] In one aspect, the present invention provides a controller for use in a network node. The controller is used to determine one or more network paths from the network node to a destination node, the one or more network paths corresponding to a connection to the destination node. The controller is also used to generate a data packet for each of the one or more network paths. Each data packet includes a delay field, and each data packet is transmitted to the destination node along each of the one or more network paths. The controller is used to receive a response message for each of the data packets transmitted along the corresponding network path, wherein the response message includes a delay field indicating a delay along the network path, and determine which network path to use based on the delay field of the received response.
[0008] The controller is used in the network node. The controller is used to determine the one or more network paths from the network node to the destination node. In addition, the controller generates the data packet for each of the one or more network paths. Each data packet includes a delay field, and each data packet is transmitted to the destination node along each of the one or more network paths. In addition, the controller receives the response message for each of the data packets transmitted along the corresponding network path. The response message includes the delay field indicating the delay along the network path, and determines which network path to use based on the delay field of the received response. Determining one or more network paths with reduced congestion levels increases the throughput of the network. In addition, the controller improves the performance of the network. In addition, the controller provides multipath use of network paths and improves network utilization and cost-effectiveness.
[0009] In one implementation, the controller is configured to determine which network path to use based on the delay field of the received response by selecting the network path with the lowest delay.
[0010] Advantageously, determining the network path with the lowest latency to use improves the performance of data transmission, thereby further improving the overall throughput of the network nodes.
[0011] In another implementation, the controller is configured to determine which network path to use based on the delay field of the received response by selecting a network path having a delay below a threshold delay level.
[0012] Advantageously, selecting a network path having a delay below a threshold delay level enables data transmission over the network path while reducing delay. Furthermore, transmitting data over the network path while reducing delay improves performance of the data transmission.
[0013] In another implementation, the controller is further configured to determine which network path to use by determining that congestion exists in the network path and in response selecting another network path that does not include the congestion.
[0014] In such an implementation, it is advantageous to determine congestion in the one or more network paths and further select another network path that is not congested. Thus, the controller can improve the overall performance of the network.
[0015] In another implementation, the data packet further includes a congestion bitmap, and the controller is further configured to determine that congestion exists in the network path based on the congestion bitmap.
[0016] Advantageously, the congestion bitmap enables the controller to be aware of congestion in one or more network paths to further eliminate congested network paths for transmitting data packets.
[0017] In another implementation, the congestion bitmap includes an array of bits, wherein each bit in the array of bits corresponds to a hop in the network path, and a set bit in the array of bits indicates that the corresponding hop is congested.
[0018] Advantageously, the indication of hop congestion enables the controller to detect congested network paths, thereby eliminating congested network paths and improving network performance.
[0019] In another implementation, the congestion bitmap is carried in a payload of the data packet.
[0020] Advantageously, transmitting a data packet with a congestion bitmap in the payload enables the controller to maintain the performance of the network node during transmission of the data packet.
[0021] In another implementation, the congestion bitmap is carried in an Internet protocol version 6 (IPv6) header of the data packet.
[0022] Advantageously, the IPv6 header is used to transmit the data packet from one or more network paths and to measure delays in the one or more network paths.
[0023] In another implementation, the delay field is carried in the IPv6 header of the data packet.
[0024] The IPv6 header carries a delay field that advantageously enables a controller to measure the delay experienced by each network node in one or more network paths.
[0025] In another implementation, the delay field is carried in the payload of the data packet.
[0026] In this implementation, the controller is configured to maintain network performance throughout the packet transmission process by determining the delay via a delay field in each network node of the network path.
[0027] In another implementation, the response message carrying the delay field is an acknowledgment (ACK) message or a congestion notification message thereof.
[0028] Advantageously, the reply message enables the controller to select a network path based on the response message.
[0029] In another implementation, the response message carrying the delay field is a congestion notification message.
[0030] The congestion notification message enables the controller to select the network path based on the response message.
[0031] In another implementation, the controller is further configured to determine more than one network path to use.
[0032] Advantageously, the determination of more than one network path enables the controller to transmit data from multiple network paths to the destination node, thereby further improving the performance of the data transmission.
[0033] In another implementation, the controller is further configured to determine which network path to use when initiating the connection to the destination node.
[0034] Advantageously, a connection is initiated to a destination node so that data is transferred over a network path with less delay.
[0035] In another implementation, the controller is further configured to determine, at intervals, which network path to use for connection to the destination node.
[0036] In this implementation, the controller continuously checks the overall throughput (or performance) of the network paths to keep latency low and congestion levels low.
[0037] In another implementation, the controller is further configured to determine which network path to use for the connection to the destination node by determining that one network path has a low throughput and in response not using the network path when more than one network path is used.
[0038] By determining a network path with a low throughput, the controller is enabled to not use the network path to improve network path utilization and enhance data transmission performance.
[0039] In another implementation, the controller is further configured to determine which network path to use for the connection to the destination node by determining that the connection has a low throughput and in response determining an additional network path to use for the connection.
[0040] Advantageously, the determination of network paths having low throughput enables the controller to determine additional network paths to be used for connections to increase network path utilization and improve performance of the network.
[0041] In another aspect, the present invention provides a controller for use in a network node. The controller is configured to receive a data packet including a delay field, update the delay field with a current delay, and transmit the data packet to a next hop in a network path.
[0042] The controller is for use in the network node. The controller receives a data packet including a delay field, updates the delay field with a current delay, and optionally updates a congestion bitmap. In addition, the controller transmits the data packet to a next hop in a network path. The controller of the present invention ensures efficient and effective determination of a network path while reducing congestion. By detecting delays in intermediate network nodes, a controller of a network node is enabled to eliminate a network path including congestion.
[0043] In yet another aspect, the present invention provides a method for use in a network node. The controller is configured to receive a data packet including a delay field and generate a response message including the delay field. In addition, the controller is configured to set the delay field of the response message to the delay field of the received data packet and the delay of the network node. In addition, the controller is configured to determine a sending network node of the data packet and transmit the response message to the sending network node.
[0044] The controller receives a data packet including a delay field. In addition, the controller generates a response message including the delay field. Optionally, the response message includes a congestion bitmap. In addition, the delay field of the response message is set by the controller to the delay field of the data packet. In addition, the sending network node is determined by the controller, and the response message is sent by the controller to the sending network node that facilitates knowing congestion in one or more network paths.
[0045] In yet another aspect, a method for use in a network node is provided. The method includes determining one or more network paths from the network node to a destination node, the one or more network paths corresponding to a connection to the destination node. The method is used to generate a data packet for each of the one or more network paths, wherein each data packet includes a delay field, and transmit each data packet along each of the one or more network paths to the destination node. The method is used to receive a response message for each of the data packets transmitted along the corresponding network path. The response message includes a delay field indicating the delay along the network path, and determining which network path to use based on the delay field of the received response.
[0046] The method achieves all the advantages and technical effects of a controller for use in a network node of the present invention.
[0047] In yet another aspect, a method for use in a network node is provided. The method includes receiving a data packet including a delay field, updating the delay field with a current delay, and transmitting the data packet to a next hop in a network path.
[0048] The method achieves all the advantages and technical effects of a controller for use in a network node of the present invention.
[0049] In yet another aspect, a method for use in a network node is provided. The method comprises receiving a data packet including a delay field; generating a response message including the delay field; setting the delay field of the response message to the delay field of the received data packet and a delay of the network node; determining a sending network node of the data packet; and transmitting the response message to the sending network node.
[0050] The method achieves all the advantages and technical effects of a controller for use in a network node of the present invention.
[0051] It should be noted that all devices, elements, circuits, units and components described in this application can be implemented by software or hardware elements or any type of combination thereof. All steps performed by various entities described in this application and the functions described to be performed by various entities are intended to indicate that the corresponding entities are used to perform the corresponding steps and functions. Even in the description of the following specific embodiments, the specific functions or steps to be performed by the external entity are not reflected in the description of the specific detailed elements of the entity that performs the specific steps or functions, the technician should be aware that these methods and functions can be implemented in the corresponding software or hardware elements, or in any combination of such elements. It is understandable that the features of the present invention are easy to combine in various combinations without departing from the scope of the present invention as defined by the appended claims.
[0052] Additional aspects, advantages, features and objects of the present invention will become apparent from the accompanying drawings and detailed description of illustrative implementations interpreted in conjunction with the following appended claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0053] The above summary of the invention and the following detailed description of illustrative embodiments may be better understood when read in conjunction with the accompanying drawings. In order to illustrate the present invention, exemplary structures of the present invention are shown in the accompanying drawings. However, the present invention is not limited to the specific methods and tools disclosed herein. In addition, it should be understood by those skilled in the art that the accompanying drawings are not drawn to scale. Where possible, identical elements are represented by identical numerals.
[0054] Embodiments of the present invention will now be described by way of example only with reference to the following drawings, in which:
[0055] Figure 1 is a block diagram of a controller for use in a network node provided by one embodiment of the present invention;
[0056] Figure 2 is a flow chart of a method for use in a network node provided by an embodiment of the present invention;
[0057] Figure 3 is another block diagram of a controller for use in a network node provided by an embodiment of the present invention;
[0058] Figure 4 is another flow chart of a method for use in a network node provided by an embodiment of the present invention;
[0059] Figure 5 is another block diagram of a controller for use in a network node provided by an embodiment of the present invention;
[0060] Figure 6is another flow chart of a method for use in a network node provided by an embodiment of the present invention;
[0061] Figure 7 is a diagram of an example of an operation for performing path selection in one or more network paths provided by an embodiment of the present invention;
[0062] Figure 8 is a diagram of an example of path reallocation for existing connections provided by one embodiment of the present invention;
[0063] Fig. 9 is a diagram of an example of removing an existing path provided by an embodiment of the present invention;
[0064] Fig.10 is a diagram of a possible specification of a telemetry field provided by one embodiment of the present invention;
[0065] Fig.11 is a diagram of an example of telemetry in a data packet in an extension file provided by one embodiment of the present invention;
[0066] Fig.12 is a diagram of telemetry feedback from a destination node to a network node provided by one embodiment of the present invention.
[0067] In the drawings, underlined numbers are used to indicate the item in which the underlined number is located or an item adjacent to the underlined number. Non-underlined numbers are associated with the item identified by the line that associates the non-underlined number with the item. When a number is not underlined and has an associated arrow, the non-underlined number is used to identify the general item that the arrow points to. DETAILED DESCRIPTION
[0068] The following detailed description illustrates embodiments of the invention and ways in which these embodiments may be implemented. Although some modes of implementing the invention have been disclosed, those skilled in the art will recognize that there are other embodiments for implementing or practicing the invention.
[0069] Figure 1 FIG. 1 is a block diagram of a controller for use in a network node provided by an embodiment of the present invention. Figure 1 , a block diagram 100 is shown including a network node 102, a communication interface 112, a memory 114, and a destination node 118. The network node 102 includes a controller 104, one or more network paths 106, such as network path 106A to network path 106N. Data packets 108A to 108N and delay fields 110A to 110N are further shown.
[0070] The network node 102 may comprise suitable logic, circuitry, interfaces or code that may be operable to transmit a data packet via one of the one or more network paths 106. The one or more network paths 106 correspond to a path by which the network node 102 transmits a data packet (e.g., data packet 108A) and subsequent data packets (up to data packet 108N) to a destination node 118.
[0071] The controller 104 may comprise suitable logic, circuitry, interfaces, hardware, software or code for communicating a data packet (e.g., data packet 108A) and subsequent data packets (up to data packet 108N) from the network node 102 to the destination node 118. Examples of the controller 104 may include, but are not limited to, a central data processing device, a microprocessor, a microcontroller, a complex instruction set computing (CISC) processor, an application-specific integrated circuit (ASIC) processor, a reduced instruction set (RISC) processor, a very long instruction word (VLIW) processor, a state machine, and other processors or control circuits.
[0072] Each data packet from data packets 108A through 108N is transmitted by network node 102 to destination node 118. In one implementation, data packets 108A through 108N may correspond to data packets transmitted along each of one or more network paths 106. For example, data packet 108A is transmitted along network path 106A, and similarly, a subsequent network path (e.g., data packet 108N) is transmitted along network path 106N.
[0073] Each of the delay fields 110A to 110N stores a delay while traversing the network node 102 to reach the destination node 118. In one implementation, the delay fields 110A to 110N may correspond to the delay fields included in each of the data packets 108A to 108N. For example, the delay field 110A is included in the data packet 108A, the delay field 110N is included in the data packet 108N, and subsequent data packets are similar.
[0074] The communication interface 112 includes hardware or software for establishing communications between the controller 104, the memory 114, and the data packets 108A to 108N. Examples of the communication interface 112 may include, but are not limited to, a computer port, a network socket, a network interface controller (NIC), and any other network interface device.
[0075] The memory 114 may include suitable logic, circuitry, interfaces, or code for storing data used to generate relevant results. In one implementation, the memory 114 corresponds to a local memory, such as an electrically erasable programmable read-only memory (EEPROM), a random access memory (RAM), a read-only memory (ROM), a central processing unit (CPU) buffer memory, etc. In another implementation, the memory 114 corresponds to a disk memory, such as a hard disk drive (HDD), a flash memory, a solid-state drive (SSD), etc.
[0076] Destination node 118 corresponds to a final node to which network node 102 sends data packets (eg, data packet 108A and data packet 108N) via one or more network paths 106 .
[0077] A controller 104 is provided for use in the network node 102. The controller 104 is configured to provide telemetry-based multipath transmission in the network node 102.
[0078] In operation, the controller 104 is used to determine one or more network paths 106 from the network node 102 to the destination node 118, the one or more network paths 106 corresponding to the connection to the destination node 118. The one or more network paths 106 connect the network node 102 with the destination node 118 to transmit data packets, such as through Figure 7 108. In one example, controller 104 determines network path 106A from network node 102, which corresponds to a connection to destination node 118, to send data packet 108A. In another example, controller 104 determines a subsequent network path from network node 102, which corresponds to another connection to destination node 118, to send a subsequent data packet, and similarly, up to network path 106N and up to data packet 108N. Advantageously, the connection between one or more network paths 106 enables network node 102 to transmit data to destination node 118.
[0079] According to one embodiment, the controller 104 is further configured to determine more than one network path to use. In one example, the controller 104 determines the network path 106A and one or more subsequent network paths from the network node 102, the network path 106A and the one or more subsequent network paths corresponding to the connection to the destination node 118, such as in Figure 7 Advantageously, the determination of more than one network path enables the controller 104 to transmit data from multiple network paths to the destination node 118, thereby further improving the performance of the data transmission.
[0080] According to one embodiment, the controller 104 is further configured to determine which network path to use when initiating a connection to the destination node 118. After determining one or more network paths 106 connected to the destination node 118, the controller 104 determines a network path for initiating a connection with the destination node 118, such as Figure 7 In one example, the controller 104 determines the network path 106A to be used when initiating a connection to the destination node 118, and subsequent network paths are similar. Thus, the controller 104 is enabled to select the best network path to be used when initiating a connection to the destination node 118 from among the one or more network paths 106 determined to be connected to the destination node 118.
[0081] According to one embodiment, the controller 104 is also used to determine which network path to use for a connection to the destination node 118 at intervals. First, the controller 104 determines one or more network paths 106. Thereafter, the controller 104 determines a network path for initiating a connection to the destination node 118. After initiating a connection to the destination node 118, the controller 104 continuously determines the network path to use for the connection to the destination node 118 at intervals. In one example, the controller 104 determines the network path 106A to use for the connection to the destination node 118 at intervals. Similarly, the controller 104 determines the subsequent network path to use for the connection to the destination node 118 at intervals. By determining which network path to use for the connection to the destination node 118 at intervals, the controller 104 is able to continuously check the overall throughput (or performance) of the network path to maintain low latency and reduce congestion levels.
[0082] According to one embodiment, the controller 104 is also used to determine which network path to use for the connection to the destination node 118 when more than one network path is used. In addition, by determining that a network path has a low throughput, and in response, not using the network path. After determining one or more network paths 106, the controller 104 determines which network path is used for the connection to the destination node 118 from the determined one or more network paths. The controller 104 further determines that a network path has a low throughput. In addition, the controller 104 blocks the network path with low throughput. In one example, the network path 106A has a low throughput, and the controller 104 does not use the network path 106A, and the subsequent network paths are similar. Therefore, the determination of the network path with low throughput enables the controller 104 to not use the network path to improve the network path utilization and improve the performance of the network node 102.
[0083] According to one embodiment, the controller 104 is further configured to determine which network path to use for a connection to the destination node 118 by determining that the connection has a low throughput and in response determining an additional network path to be used for the connection. In one example, the controller 104 determines that the connection through the network path 106A has a low throughput. Therefore, the controller 104 determines an additional network path to be used for the connection, such as a subsequent network path. In another example, the controller 104 determines that the connection through the subsequent network path has a low throughput. Therefore, the controller 104 determines the additional network path to be used for the connection. Advantageously, the determination of the network path with a low throughput enables the controller 104 to determine the additional network path to be used for the connection to improve network path utilization and improve the performance of the network node 102.
[0084] The controller 104 is used to generate a data packet for each network path in the one or more network paths 106. In addition, each data packet includes a delay field. In one example, the network path 106A generates a data packet 108A including the delay field 110A. In another example, the network path 106N generates a subsequent data packet including a subsequent delay field, and similarly, until the data packet 108N. The delay field corresponds to a telemetry protocol between the network node 102 and the destination node 118, which reports the performance of each network path in the one or more network paths 106 to the network node 102. The delay field includes a transit delay in the transmission of the data packet from the network node 102 to the destination node 118. In addition, the delay field indicates the transit delay throughout the one or more network paths 106, as well as the congestion level along the one or more network paths 106, which is conducive to determining the best network path in the one or more network paths 106.
[0085] The controller 104 is configured to transmit each data packet along each network path in the one or more network paths 106 to the destination node 118. First, a data packet is generated for each network path in the one or more network paths 106, such as data packets 108A to 108N. Thereafter, each data packet in the data packets 108A to 108N (e.g., data packet 108A) and subsequent data packets are transmitted to the destination node 118 along each network path in the one or more network paths 106. In one example, data packet 108A is transmitted along network path 106A. Similarly, subsequent data packets are transmitted along subsequent network paths, and subsequent data packets are similar. Therefore, the controller 104 is enabled to send data packets through one or more network paths 106 and check for congestion in one or more network paths 106.
[0086] According to one embodiment, the data packet also includes a congestion bitmap. In addition, the controller 104 is further configured to determine the presence of congestion in the network path based on the congestion bitmap. In one implementation, the congestion bitmap corresponds to a bitmap indicating the congestion level of the network path. For example, the data packet 108A includes a congestion bitmap to determine the presence of congestion in the network path 106A. Similarly, subsequent data packets include a congestion bitmap to determine the presence of congestion in subsequent network paths. Advantageously, the congestion bitmap enables the controller 104 to determine the congestion in one or more network paths 106 to further eliminate congested network paths to transmit data packets 108A to 108N.
[0087] According to one embodiment, the congestion bitmap includes a bit array. In addition, each bit in the bit array corresponds to a hop in the network path, and a set bit in the bit array indicates that the corresponding hop is congested. Each bit and set bit in the bit array corresponding to a hop in the network path indicates congestion in the hop. Each bit and set bit in the bit array corresponding to a hop in the network path indicates that congestion occurs in the hop. Advantageously, each congested hop enables the controller 104 to detect a congested network path and eliminate the congested network path, which is conducive to improving the performance of the network node 102.
[0088] According to one embodiment, the congestion bitmap is carried in the payload of the data packet. For example, the data packet 108A and subsequent data packets include a congestion bitmap. In addition, the congestion bitmap indicates the congestion level of one or more network paths 106. Therefore, the transmission of the data packets 108A to 108N from the network node 102 to the destination node 118 includes the transmission of the congestion bitmap to continuously check the congestion level of the network path. Therefore, the congestion bitmap is carried in the payload of the data packet. For example, the congestion bitmap of the data packet 108A is carried in the payload of the data packet 108A. Advantageously, transmitting the data packet with the congestion bitmap in the payload enables the controller 104 to maintain the performance of the network node 102 during the transmission of the data packet.
[0089] According to one embodiment, the congestion bitmap is carried in an internet protocol version 6 (IPv6) header of the data packet. The IPv6 header corresponds to a segment routing internet protocol version 6 (SRv6) header. Each of the one or more network paths 106 determines a connection between the network node 102 and the destination node 118, which can be performed through segment routing or through different header fields (e.g., layer 4 ports or IPv6 flow labels) that cause network routers to forward data packets 108A to 108N through the one or more network paths 106 using equal-cost multipath routing (ECMP), such as in Fig.11 Advantageously, the IPv6 header is used to transmit the data packet from one or more network paths 106 and to measure the delay in one or more network paths 106.
[0090] According to one embodiment, the delay field is carried in the IPv6 header of the data packet. In one implementation, when the data packet is transmitted from the network node 102 to the destination node 118, the IPv6 header of the data packet carries the delay field, which is updated by adding the delay of each router in the corresponding network path that the data packet is traversing. Advantageously, the IPv6 header carries the delay field so that the controller 104 can measure the delay of each network node in one or more network paths 106.
[0091] According to one embodiment, the delay field 108 is carried in the payload of the data packet. In one implementation, the transmission of the data packet from the network node 102 to the destination node 118 includes the transmission delay field to continuously check the delay in the network path. Therefore, the delay field (e.g., the delay field 110A and the subsequent delay field) is carried in the payload of the data packet. For example, the delay field 110A of the data packet 108A is carried in the payload of the data packet 108A. Advantageously, by determining the delay on the delay field in each network node of the network path, transmitting the data packet with the delay field in the payload enables the controller 104 to improve the performance of the network throughout the data packet transmission process.
[0092] The controller 104 is also used to receive a response message for each of the data packets transmitted along the corresponding network path. The response message includes a delay field indicating the delay along the network path. In other words, the destination node 118 sends a response message after receiving each of the data packets. Thereafter, the controller 104 receives a response message including a delay field indicating the delay in one or more network paths 106. For example, the controller 104 receives a response message for the data packet 108A transmitted along the network path 106A. Advantageously, the indication of the delay along one or more network paths 106 enables the controller 104 to select the most appropriate network path with reduced delay.
[0093] According to one embodiment, the response message carrying the delay field is an acknowledgment (ACK) message or its congestion notification message. In one implementation, the response message (or telemetry information) including the delay field is an acknowledgment message sent through the transport layer in the transmission control protocol (TCP) or remote direct memory access (RDMA). In another implementation, the response message including the delay field is a congestion notification message sent through the transport layer in RDMA, such as Fig.12 Further shown and described. Advantageously, the response message carried by the delay field enables the controller 104 to select a network path based on the response message. According to another embodiment, the response message carrying the delay field is a congestion notification message. In one implementation, the response message including the delay field is a congestion notification message sent through the transport layer in RDMA, such as Fig.12 Advantageously, the congestion notification message enables the controller 104 to select a network path from the one or more network paths 106 .
[0094] The controller 104 is also used to determine which network path to use based on the delay field of the received response. When the response message is received by the controller 104, the information related to the delay stored in the delay field of the response message is analyzed by the controller 104. Thereafter, the controller 104 is used to determine a network path from one or more network paths 106. In one example, the controller 104 receives the response and further determines the network path 106A based on the delay field of the received response. Therefore, the controller 104 is enabled to use a path while the delay is reduced, thereby improving the performance of data transmission.
[0095] According to one embodiment, the controller 104 is further configured to determine which network path to use based on the delay field of the received response by selecting the network path with the lowest delay. In one example, the controller 104 is configured to use the network path 106A based on the delay field of the received response including the lowest delay field. In another example, the controller 104 is configured to use the subsequent network path based on the delay field of the received response including the lowest delay field. Advantageously, determining the network path with the lowest delay to use improves the performance of data transmission, thereby further improving the overall throughput of the network node.
[0096] According to one embodiment, the controller 104 is also used to determine which network path to use based on the delay field of the received response by selecting a network path with a delay below a threshold delay level. The threshold delay level corresponds to a delay level at which a network path including a delay is determined to be used. However, the controller 104 does not select a network path including a delay level above the threshold delay level for data transmission. In one example, the delay of the network path 106A is below the threshold delay level, and the controller 104 is used to use the network path 106A based on the delay field of the received response. In another example, the delay of the subsequent network path is below the threshold delay level, and the controller 104 is used to use the subsequent network path based on the delay field of the received response. Advantageously, selecting a network path with a delay below the threshold delay level enables data transmission through the network path while reducing delay. In addition, data transmission through the network path while reducing delay improves the performance of data transmission.
[0097] According to one embodiment, the controller 104 is also used to determine which network path to use by determining that there is congestion in the network path and in response selecting another network path that does not include congestion. In one example, the network path 106A is determined by the controller 104 to include congestion. Therefore, the controller 104 selects another network path, such as a subsequent network path to be used. Advantageously, determining the network path to be used by determining that there is congestion in the network path, and further selecting another network path that does not include congestion enables the controller 104 to improve network path utilization and improve the performance of the network node 102.
[0098] The controller 104 is used in the network node 102 to determine a network path from one or more network paths 106 for data transmission from the network node 102 to the destination node 118. In addition, the controller 104 generates a data packet for each network path in the one or more network paths 106. Each data packet includes a delay field for transmission to the destination node 118 along each network path in the one or more network paths 106, and the delay field provides a delay for each intermediate network node. Thereafter, the controller 104 receives a response message for each data packet in the data packets transmitted along the corresponding network path. The response message includes a delay field indicating the delay along the network path, and determines which network path to use based on the delay field of the received response, which increases the overall throughput of the network. In addition, the controller 104 provides multipath use of the network path, which improves network utilization and reduces costs.
[0099] Figure 2 FIG. 1 is a flow chart of a method for use in a network node provided by an embodiment of the present invention. Figure 1 Component Description Figure 2 . refer to Figure 2 , a flow chart of method 200 including steps 202 to 210 is shown. Figure 3 ) controller 104 is used to execute method 200.
[0100] A method 200 is provided for use in a network node 102. The method 200 provides telemetry-based multipath transmission in the network node 102.
[0101] At step 202, method 200 includes determining one or more network paths 106 from network node 102 to destination node 118, the one or more network paths 106 corresponding to a connection to destination node 118. One or more network paths 106 are used to connect network node 102 with destination node 118 to transmit data packets, such as via Figure 7 Advantageously, the connection between one or more network paths 106 enables network node 102 to transmit data to destination node 118.
[0102] At step 204, the method 200 further includes generating a data packet for each of the one or more network paths 106. Each data packet includes a delay field. The delay field corresponds to a telemetry protocol between the network node 102 and the destination node 118, which reports the performance of each of the one or more network paths 106 to the network node 102. The delay field includes a transit delay in the transmission of the data packet from the network node 102 to the destination node 118. In addition, the delay field indicates the transit delay throughout the one or more network paths 106, as well as the congestion level along the one or more network paths 106, which facilitates determining the best network path in the one or more network paths 106.
[0103] At step 206, the method 200 further includes transmitting each data packet along each of the one or more network paths 106 to the destination node 118. First, data packets 108A to 108N are generated for each of the one or more network paths 106. Thereafter, each data packet is transmitted to the destination node 118 along each of the one or more network paths 106. In one example, data packet 108A is transmitted along network path 106A. Similarly, subsequent data packets are transmitted along subsequent network paths, and the subsequent data packets are similar. Thus, the controller 104 is enabled to send data packets through the one or more network paths 106 and check for congestion in the one or more network paths 106.
[0104] At step 208, method 200 also includes receiving a response message for each of the data packets transmitted along the corresponding network path. In other words, destination node 118 sends a response message after receiving each of the data packets. Thereafter, method 200 includes receiving a response message including a delay field for a delay in one or more network paths 106. For example, controller 104 receives a response message for data packet 108A transmitted along network path 106A. Advantageously, the indication of the delay along one or more network paths 106 enables method 200 to select the most appropriate network path with reduced delay.
[0105] At step 210, the method 200 also includes determining which network path to use based on the delay field of the received response. When the response message is received by the controller 104, the information related to the delay stored in the delay field of the response message is analyzed by the controller 104. Thereafter, the method 200 includes determining a network path from the one or more network paths 106. Thus, the method 200 is enabled to use a path while reducing delays, thereby improving the performance of data transmission.
[0106] The method 200 is used in a network node 102 to determine a network path from one or more network paths 106 for data transmission from the network node 102 to a destination node 118. In addition, the method 200 includes generating a data packet for each network path in the one or more network paths 106. Each data packet includes a delay field for transmission to the destination node 118 through each network path in the one or more network paths 106, and the delay field provides a delay for each intermediate network node. Thereafter, the method 200 includes receiving a response message for each of the data packets transmitted along the corresponding network path. The response message includes a delay field indicating the delay along the network path, and determines which network path to use based on the delay field of the received response, which increases the overall throughput of the network. In addition, the method 200 provides multipath use of network paths, which improves network utilization and reduces cost effectiveness.
[0107] Steps 202 to 210 are merely illustrative, and other alternatives may be provided in which one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different order without departing from the scope of the claims herein.
[0108] Figure 3 FIG. 1 is another block diagram of a controller for use in a network node provided by an embodiment of the present invention. Figure 1 Component Description Figure 3 . refer to Figure 3 , a block diagram 300 including a network node 302 , a controller 304 , a data packet 306 , a delay field 308 , and a next hop 310 is shown.
[0109] Network node 302 is present in Figure 1 The network node 302 includes a controller 304 for controlling tasks performed by the network node 302. The data packet 306 corresponds to a packet generated by the network node 102 (or the sending network node). Figure 1 Data packet 306 also includes data packets corresponding to ( Figure 1 The delay field 308 of the delay field of the packet 306 is shown in FIG. 310. The next hop 310 corresponds to the next network node in the one or more network paths 106 through which the data packet 306 is transmitted to the destination node 118.
[0110] A controller 304 is provided for use in the network node 302. The network node 302 comprises the controller 304, which is also connected to a next hop 310. The controller 304 is used to provide telemetry based multipath transport in the network node 102.
[0111] In operation, the controller 304 is used to receive a data packet 306 including a delay field 308. The data packet 306 is generated for each network path in the one or more network paths 106. In addition, the data packet 306 includes the delay field 308. In one implementation, the delay field 308 corresponds to a telemetry protocol between the network node 302 and the destination node 118, which reports the performance of each network path in the one or more network paths 106 to the network node 102. In addition, the delay field 308 includes a transit delay in the transmission of the data packet 306 from the network node 302 to the next hop 310 until it reaches the destination node 118. In one implementation, the network node 302 receives the data packet 306 from the network node 102. In another implementation, the network node 302 receives the data packet 306 from the next hop 310 (or an intermediate network node). In addition, the transit delay throughout the one or more network paths 106 and the congestion level along the one or more network paths 106 indicated by the delay field 308 facilitate determining the network path to be used in the one or more network paths 106.
[0112] According to one embodiment, the data packet 306 also includes a congestion bitmap, and the controller 304 is further used to determine that the network node 302 has a congestion bitmap, and update the congestion bitmap in response. The congestion bitmap corresponds to a bitmap indicating the congestion level of the network path. For example, the data packet 306 includes the congestion bitmap to determine that there is congestion in the network node 302. Similarly, subsequent data packets include the congestion bitmap to determine that there is congestion in subsequent network paths. Advantageously, the congestion bitmap enables the controller 304 to determine congestion in one or more network paths 106 and eliminate congested network paths to transmit data packets.
[0113] According to one embodiment, the congestion bitmap includes a bit array. Each bit in the bit array corresponds to a hop in the network path, and a set bit in the bit array indicates that the corresponding hop is congested. Each bit and set bit in the bit array corresponding to a hop in the network path indicates congestion in the hop. Each bit and set bit in the bit array corresponding to a hop in the network path indicates that congestion occurs in the hop. Advantageously, each congested hop enables the controller 104 to detect a congested network path and eliminate the congested network path, which is conducive to improving the performance of the network node 102.
[0114] The controller 304 is also used to update the delay field 308 with the current delay and transmit the data packet 306 to the next hop 310 in the network path. First, the controller 304 detects the delay in the network node 302. Then, the controller 304 updates the delay field 308 with the current delay, and finally, transmits the data packet 306 to the next hop 310 in the network path. Therefore, the controller 304 is enabled to select a path with reduced delay and congestion, thereby further improving the overall performance of the network node 302.
[0115] The controller 304 is used in the network node 302 to provide the best possible network path from one or more network paths 106 for data transmission. The controller 304 receives a data packet 306 including a delay field 308 and further updates the delay field 308 with the current delay. In addition, the controller 304 transmits the data packet 306 to the next hop 310 in the network path. The controller 304 of the present invention ensures efficient and effective determination of the network path while reducing congestion. By detecting delays in intermediate network nodes, the controller 304 of the network node 302 is able to eliminate network paths including congestion.
[0116] Figure 4 FIG. 1 is another flow chart of a method for use in a network node provided by an embodiment of the present invention. Figures 1 to 3 Component Description Figure 2 . refer to Figure 2 , a flow chart of method 200 including steps 402 to 406 is shown. Figure 3 ) controller 304 is used to execute method 400.
[0117] A method 400 is provided for use in a network node 302. The network node 302 includes a controller 304, which is also connected to a next hop 310. The method 400 provides telemetry-based multipath transmission in the network node 102. At step 402, the method 400 includes receiving a data packet 306 including a delay field 308. The data packet 306 is generated for each network path in one or more network paths 106. In addition, the data packet 306 includes the delay field 308. In one implementation, the delay field 308 corresponds to a telemetry protocol between the network node 302 and the destination node 118, which reports the performance of each network path in the one or more network paths 106 to the network node 102. In addition, the delay field 308 includes a transit delay in the transmission of the data packet 306 from the network node 302 to the next hop 310 until it reaches the destination node 118. In one implementation, the network node 302 receives the data packet 306 from the network node 102. In another implementation, the network node 302 receives the data packet 306 from the next hop 310 (or intermediate network node). In addition, the transit delay throughout the one or more network paths 106 and the congestion level along the one or more network paths 106 indicated by the delay field 308 facilitate determining the network path to be used in the one or more network paths 106.
[0118] At step 404, method 400 further includes updating delay field 308 with the current delay. First, method 400 includes detecting a delay in network node 302. Then, method 400 includes updating delay field 308 with the current delay. Method 400 is used to determine the best possible network path for data transmission.
[0119] At step 406, the method 400 also includes transmitting the data packet 108 to the next hop 310 in the network path. First, the method 400 includes detecting a delay in the network node 302. Then, the method 400 includes updating the delay field 308 with the current delay, and finally, the method 400 includes transmitting the data packet 306 to the next hop 310 in the network path. Therefore, the method 400 includes selecting a path with reduced delay and congestion, thereby further improving the overall performance of the network node 302.
[0120] The method 400 is used in a network node 302 to provide the best possible network path from one or more network paths 106 for data transmission. The method 400 includes receiving a data packet 306 including a delay field 308, and further updating the delay field 308 with a current delay. In addition, the method 400 includes transmitting the data packet 306 to a next hop 310 in the network path. The method 400 ensures efficient and effective determination of the network path while reducing congestion. By detecting delays in intermediate network nodes, network paths including congestion are eliminated.
[0121] Steps 402 to 410 are merely illustrative, and other alternatives may be provided in which one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different order without departing from the scope of the claims herein.
[0122] Figure 5 FIG. 1 is another block diagram of a controller for use in a network node provided by an embodiment of the present invention. Figures 1 to 4 Component Description Figure 5 . refer to Figure 5 , a block diagram 500 including a network node 502 , a controller 504 , a response message 506 , a delay field 508 , a sending network node 510A, a sending network node 510B, a data packet 306 , and a delay field 308 is shown.
[0123] Network node 502 corresponds to ( Figure 1 The destination node 118 of the network node 502, and the controller 504 corresponds to the ( Figure 1 ) controller 104. Response message 506 corresponds to a message transmitted by destination node 118, wherein the updated delay field is included. In addition, delay field 508 of response message 506 is used to store the delay occurring in the network path. Sending network node 510A and sending network node 510B correspond to Figure 1 The network node 102 is configured to:
[0124] The controller 504 is configured to be used in the network node 502. In one implementation, the network node 502 corresponds to a destination node 118 of one or more network paths 106. The controller 504 is configured to provide telemetry-based multipath transmission in the network node 102.
[0125] In operation, the controller 504 is used to receive the data packet 306 including the delay field 308. The data packet 306 traverses one or more network paths 106 to reach the network node 502. In addition, the controller 504 in the network node 502 receives the data packet 306 including the delay field 308. In addition, the delay field 308 stores the value of the transit delay throughout the one or more network paths 106.
[0126] The controller 504 is further configured to generate a response message 506 including a delay field 508. The response message 506 is generated by the controller 504 when the data packet 306 is received. In addition, the response message 506 includes a delay field 508 that stores the performance of each of the one or more network paths 106. In one implementation, the delay field 508 indicates a congestion level along the one or more network paths 106, which facilitates determining the best network path of the one or more network paths 106.
[0127] The controller 504 also sets the delay field 508 of the response message 506 to the delay field 308 of the received data packet and the delay of the network node 502. For example, the delay field 308 stores a value of a transit delay throughout one or more network paths 106. In addition, the controller 504 is configured to set the delay field 508 to the delay field 308 of the data packet 306 to update the delay field 508. In one implementation, the response message 506 includes a congestion bitmap. The controller 504 also sets the delay of the network node 502, such as Figure 7 Further shown and described.
[0128] Controller 504 further determines the sending network node of data packet 306. After receiving data packet 306, controller 504 determines the sending network node from which data packet 306 came, such as sending network node 510A and sending network node 510B. In one example, the sending network node corresponds to the initial node that initiated the transmission of data packet 306. In one implementation, controller 504 determines that data packet 306 has arrived from sending network node 510A. In another implementation, controller 504 determines that data packet 306 has arrived from sending network node 510B.
[0129] The controller 504 is also used to transmit a response message 506 to the sending network node. After determining the sending network node, the controller 504 transmits the response message 506 to the sending network node to indicate the congestion level in one or more network paths 106. In one implementation, the controller 504 transmits the response message 506 to the sending network node 510A. In another implementation, the controller 504 transmits the response message 506 to the sending network node 510B. Advantageously, the generation of the response message 506 and the further transmission of the response message 506 to the sending network node enable the controller 104 to determine the congestion in one or more network paths 106.
[0130] The controller 504 receives the data packet 306 including the delay field 308. In addition, the controller 504 generates a response message 506 including the delay field 508. The response message is used to reply the network node 102. In addition, the controller 504 sets the delay field 508 of the response message 506 to the delay field 308 of the data packet 306 to update the delay field 508 according to the delay field 308 of the data packet 306. In addition, the sending network nodes such as the sending network node 510A and the sending network node 510B are determined by the controller 504. In addition, the response message 506 is sent to the sending network node 510A and the sending network node 510B by the controller 504 that helps determine the delay of each network path in one or more network paths 106. In addition, the response message 506 helps the controller 104 of the network node 102 to select the most suitable network path for transmitting any data. In addition, the controller 504 provides multi-path use of the network path, which improves network utilization and reduces cost effectiveness.
[0131] Figure 6 FIG. 1 is another flow chart of a method for use in a network node provided by an embodiment of the present invention. Figures 1 to 5 Component Description Figure 6 . refer to Figure 6 , a flow chart of a method 600 including steps 602 to 610 is shown. Figure 5 ) controller 504 is used to execute method 600.
[0132] A method 600 is provided for use in a network node 502. In one implementation, the network node 502 corresponds to a destination node 118 of one or more network paths 106. The method 600 is used to provide telemetry-based multipath transport in the network node 102. At step 602, the method 600 includes receiving a data packet 306 including a delay field 308. The data packet 306 traverses the one or more network paths 106 to reach the network node 502. In addition, the method 600 includes receiving the data packet 306 including the delay field 308. In addition, the delay field 308 stores a value of a transit delay traversing the one or more network paths 106.
[0133] At step 604, the method 600 further includes generating a response message 506 including a delay field 508. The response message 506 is generated by the controller 504 when the data packet 306 is received. In addition, the response message 506 includes a delay field 508 that stores the performance of each of the one or more network paths 106. In one implementation, the delay field 508 indicates a congestion level along the one or more network paths 106, which facilitates determining the best network path of the one or more network paths 106.
[0134] At step 606, method 600 further includes setting delay field 508 of response message 506 to delay field 308 of received data packet and delay of network node 502. Method 600 includes setting delay field 508 to delay field 308 of data packet 306 to update delay field 508. Method 600 also includes setting delay of network node 502, such as Figure 7 Further shown and described in .
[0135] At step 608, method 600 also includes determining a sending network node 502 for data packet 306. After receiving data packet 306, controller 504 determines a sending network node, such as sending network node 510A and sending network node 510B, from which data packet 306 came. In one example, the sending network node corresponds to an initial node that initiated transmission of data packet 306. In one implementation, method 600 includes determining that data packet 306 has arrived from sending network node 510A.
[0136] At step 610, the method 600 further includes transmitting the response message 506 to the sending network node. After determining the sending network node, the method 600 includes transmitting the response message 506 to the sending network node to indicate the level of congestion in the one or more network paths 106. Advantageously, the generation of the response message 506 and the further transmission of the response message 506 to the sending network node are used to determine the congestion in the one or more network paths 106.
[0137] Method 600 includes receiving a data packet 306 including a delay field 308. In addition, method 600 includes generating a response message 506 including the delay field 508. The response message is used to reply to the network node 102. In addition, the controller 504 sets the delay field 508 of the response message 506 to the delay field 308 of the data packet 306 to update the delay field 508 according to the delay field 308 of the data packet 306. In addition, the sending network nodes such as the sending network node 510A and the sending network node 510B are determined by the controller 504. In addition, the response message 506 is sent to the sending network node 510A and the sending network node 510B by the controller 504 that helps determine the delay of each network path in one or more network paths 106. In addition, the response message 506 helps the controller 104 of the network node 102 to select the most suitable network path for transmitting any data. In addition, method 600 provides multi-path use of network paths, which improves network utilization and reduces cost effectiveness.
[0138] Steps 602 to 610 are merely illustrative, and other alternatives may be provided in which one or more steps are added, one or more steps are deleted, or one or more steps are provided in a different order without departing from the scope of the claims herein.
[0139] Figure 7 FIG. 1 is a diagram of an example of an operation for performing path selection in one or more network paths provided by an embodiment of the present invention. Figures 1 to 6 Component Description Figure 7 . refer to Figure 7 , a flowchart 700 including a series of operations from 702A to 702C is shown. Figure 1 ) controller 104 is used to execute flowchart 700.
[0140] Provides the corresponding Figure 1 The sending network node 704 of the network node 102 (or sender) sends the data packet 306 through the controller 104 of the sending network node 704. In addition, a first network node 706A, a second network node 706B, a third network node 706C, a fourth network node 706D, a fifth network node 706E, and a sixth network node 706F are provided, which correspond to the intermediate network nodes through which the sending network node 704 transmits the data packet 306. In one implementation, each of the first network node 706A, the second network node 706B, the third network node 706C, the fourth network node 706D, the fifth network node 706E, and the sixth network node 706F corresponds to Figure 3 In addition, there is provided a network node 302 corresponding to Figure 5 The network node 502 (or Figure 1 The destination node 708 of the destination node 118) is used to receive the data packet 306 and further transmit the response message 506 to the sending network node 704.
[0141] In operation 702A, the sending network node 704 sends a data packet 306 (or a control message) with a delay field 308 (or a telemetry field) through each available network path. In one example, the available possible network paths for transmitting the data packet 306 are from the first network node 706A to the second network node 706B. Then, from the second network node 706B to the third network node 706C, and then to the fourth network node 706D. Thereafter, from the fourth network node 706D to the sixth network node 706F, and finally to the destination node 708. In another implementation, another possible network path includes the data packet 306 being transmitted from the first network node 706A to the second network node 706B. Then, from the second network node 706B to the fifth network node 706E, and then to the fourth network node 706D. Thereafter, from the fourth network node 706D to the sixth network node 706F, and finally to the destination node 708. Each intermediate node (or router) between the sending network node 704 and the destination node 708 updates the delay field 308 according to the transit delay of each transmission. In addition, at operation 702B, the destination node 708 sends a response message 506 to the sending network node 704. In one implementation, the response message 506 is transmitted through the same network path as the received data packet 306. In one example, the response message 506 includes a delay field 508 (or a telemetry field). Thereafter, at operation 702C, the sending network node 704 selects a network path based on the delay field 508 of the response message 506. In one example, the sending network node 704 selects a network path with the best performance and sends the data to the destination node 708. Therefore, selecting the network path with the best performance improves the overall network utilization and further improves the cost-effectiveness of the network path.
[0142] Figure 8 FIG. 1 is a diagram of an example of performing path selection among multiple network paths provided by an embodiment of the present invention. Figures 1 to 7 Component Description Figure 8 . refer to Figure 8 , a flowchart 800 including a series of operations from 802A to 802C is shown. Figure 1 ) controller 104 is used to execute flowchart 800.
[0143] At operation 802A, the sending network node 704 sends a data packet 306 (or a control message) including a delay field 308 (or a telemetry field) through a selected network path. In one example, the selected network path for transmitting the data packet 306 is from the first network node 706A to the second network node 706B. Then, from the second network node 706B through the third network node 706C to the fourth network node 706D. After that, from the fourth network node 706D to the sixth network node 706F, and finally to the destination node 708. However, the third network node 706C indicates a congestion level (or congestion) higher than the threshold congestion, so that the transit delay of the third network node 706C is high. Therefore, at operation 802B, the destination node 708 sends a response message 506 carrying the delay field 508 to the sending network node 704. In one implementation, the response message 506 carrying the delay field 508 is an acknowledgment (ACK) message or a congestion notification message thereof. Thereafter, at operation 802C, the sending network node 704 selects a new path with a low congestion level to avoid the congested network nodes (or routers), such as through the third network node 706C. Thus, the sending network node 704 reallocates the network path and sends the data packet 306 using the new network path.
[0144] Fig. 9 FIG. 1 is a diagram of an example of performing path selection among multiple network paths provided by an embodiment of the present invention. Figures 1 to 8 Component Description Fig. 9 . refer to Fig. 9 , a flowchart 900 including a series of operations from 902A to 902C is shown. Figure 1 ) controller 104 is used to execute flowchart 900.
[0145] At operation 902A, the sending network node 704 sends the data packet 306 with the delay field 308 (or telemetry field) through an available network path. In one example, the available possible network path for transmitting the data packet 306 is from the first network node 706A to the second network node 706B. Then, from the second network node 706B through the third network node 706C to the fourth network node 706D. Thereafter, from the fourth network node 706D to the sixth network node 706F, and finally to the destination node 708. In another implementation, another possible network path includes the data packet 306 being transmitted from the first network node 706A to the second network node 706B. Then, from the second network node 706B through the fifth network node 706E to the fourth network node 706D. Thereafter, from the fourth network node 706D to the sixth network node 706F, and finally to the destination node 708.
[0146] In addition, at operation 902B, the intermediate network node (e.g., the third network node 706C) indicates that the transit delay of the third network node 706C is high due to congestion. In one implementation, the destination node 708 also transmits the response message 506 to the sending network node 704. In one example, the response message 506 carries a delay field regarding congestion in one of the available network paths. Thereafter, at operation 702C, the sending network node 704 removes the network path including the congestion and uses the remaining network path for transmitting the data packet 306, for example, through the fifth network node 706E.
[0147] Fig.10 is a diagram of a possible specification of a telemetry field provided by one embodiment of the present invention. Figures 1 to 9 Component Description Fig.10 . refer to Fig.10 , a diagram 1000 including a namespace ID 1002 , a flag 1004 , an accumulated delay 1006 , a hop count 1008 , and a status bitmap 1010 is shown.
[0148] A namespace ID 1002 is provided, which provides a reference to ( Figure 7 ) sending network node 704, ( Figure 7 intermediate network nodes, Figure 7 The invention also provides a method for grouping network nodes such as destination nodes 708 of a network path to support different deployment methods for in-suite, operation administration, and maintenance (IOAM). In addition, a flag 1004 is provided to determine the telemetry (or operation code) function to indicate the presence of each telemetry field such as cumulative delay 1006 (or hop count 1008 or status bitmap). Cumulative delay 1006 is also provided to increase the transit delay updated by the intermediate network node (or transit node). In addition, a hop count 1008 that increases by each hop and a status bitmap 1010 corresponding to one bit for each hop are provided, and the status bitmap 1010 is used to indicate the congestion status of each intermediate network node along one or more network paths 106. The hop count 1008 is used by each intermediate network node as a pointer to the congestion bitmap. Figure 1000 is an example of an extension of IOAM, which includes a namespace ID 1002 that exists in all IOAM options. In addition, diagram 1000 specifies possible specifications for a telemetry field that provides a telemetry field format for intermediate network nodes that can be sent via various encapsulations (e.g., internet protocol version 6 (IPv6) extension headers).
[0149] Fig.11FIG. 1 is a diagram illustrating telemetry in a data packet in an extension field provided by an embodiment of the present invention. Figures 1 to 10 Component Description Fig.11 . refer to Fig.11 , a diagram 1100 including an Ethernet header 1102, an internet protocol version 6 (IPv6) header 1104, an IPv6 extension field with telemetry 1106, a layer 4 header 1108, and a payload 1110 is shown.
[0150] An Ethernet header 1102 including the addresses of the sending network node 706 and the destination node 708 is provided. In addition, an IPv6 header 1104 is provided to provide commands to the destination node 118. IPv6 corresponds to a segment routing internet protocol version 6 (SRv6) header, and an IPv6 extension field with telemetry 1106 provides encapsulation of the telemetry field. In one example, the layer 4 header 1108 indicates the presence of a delay. In addition, a payload 1110 is used to store information in the data packet 306.
[0151] Diagram 1100 provides an example of an IPv6 header 1104 present in a telemetry field. The telemetry field in diagram 1100 defines IOAM options that may be transmitted. For example, the telemetry field is transmitted over IPv6. Therefore, transmitting the telemetry field over IPv6 provides encapsulation of the telemetry field, which further improves the performance of data transmission.
[0152] Fig.12 FIG. 1 is a diagram of telemetry feedback from a destination node to a network node provided by one embodiment of the present invention. Figures 1 to 11 Component Description Fig.12 . refer to Fig.12 , shows a diagram 1200 including a delay bitmap 1202, an Ethernet header 1102, an IPv6 extension field with telemetry 1106, and a layer 4 header 1108. The delay bitmap 1202 indicates the delay of each intermediate network node along one or more network paths 106.
[0153] After transmitting the data packet 306 including the delay field 308 from the network node 102 to the destination node 118, telemetry feedback is transmitted from the destination node 118 to the network node 102 including a delay bitmap 1202 of the forward network path. In one implementation, the delay bitmap 1202 provides a backward telemetry indicator. The telemetry feedback is transmitted at the transport layer via an ACK message. In addition, the layer 4 1108 indicates the presence of the data packet 306 transmission. The ACK message includes a delay that enables the network node 102 to select one or more network paths 106 through the controller 104 for data transmission.
[0154] Without departing from the scope of the invention as defined by the appended claims, the embodiments of the invention described above may be modified in method. "Including", "combining", "having", "being", etc., used to describe and claim the present invention, are intended to be interpreted in a non-exclusive manner, that is, to allow items, components or elements that are not explicitly described to exist. References to the singular should also be interpreted as involving the plural. The word "exemplary" used herein means "as an example, instance or illustration". Any embodiment described as "exemplary" is not necessarily interpreted as being more preferred or more advantageous than other embodiments, or excluding the combination of features in other embodiments. The word "optionally" used herein means "provided in some embodiments and not provided in other embodiments". It should be understood that certain features of the present invention described in the context of a single embodiment for clarity may also be provided in a single embodiment by combination. On the contrary, the various features of the present invention described in the context of a single embodiment for clarity may also be provided individually or in any suitable combination or as any other described embodiment of the present invention.
Claims
1. A controller (104, 304, 504) for use in a network node (102, 302, 502), characterized in that: The controller (104, 304, 504) is used to: determining one or more network paths (106) from the network node (102, 302, 502) to a destination node (118), the one or more network paths (106) corresponding to a connection to the destination node (118); generating a data packet for each of the one or more network paths (106), wherein each data packet includes a delay field; transmitting each data packet along each of the one or more network paths (106) to the destination node (118); receiving a response message (506) for each of the data packets transmitted along the corresponding network path, wherein the response message (506) includes a delay field indicating a delay along the network path; A determination is made as to which network path to use based on the delay field of the received response.
2. The controller (104, 304, 504) according to claim 1, characterized in that: The controller (104, 304, 504) is further configured to determine which network path to use based on the delay field of the received response by selecting the network path with the lowest delay.
3. The controller (104, 304, 504) according to claim 1 or 2, characterized in that: The controller (104, 304, 504) is further configured to determine which network path to use based on the delay field of the received response by selecting a network path having a delay below a threshold delay level.
4. The controller (104, 304, 504) according to any one of the above claims, characterized in that: The controller (104, 304, 504) is further configured to determine which network path to use by determining that congestion exists in the network path and in response selecting another network path that does not include the congestion.
5. The controller (104, 304, 504) according to claim 4, characterized in that: The data packet also includes a congestion bitmap, and the controller (104, 304, 504) is further configured to determine that congestion exists in a network path based on the congestion bitmap.
6. The controller (104, 304, 504) according to claim 5, characterized in that: The congestion bitmap includes an array of bits, wherein each bit in the array of bits corresponds to a hop in the network path, and a set bit in the array of bits indicates that the corresponding hop is congested.
7. The controller (104, 304, 504) according to claim 5 or 6, characterized in that: The congestion bitmap is carried in the payload of the data packet.
8. The controller (104, 304, 504) according to claim 5 or 6, characterized in that: The congestion bitmap is carried in an Internet protocol version 6 (IPv6) header of the data packet.
9. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The delay field is carried in the IPv6 header of the data packet.
10. The controller (104, 304, 504) according to any one of claims 1 to 8, characterized in that: The delay field is carried in the payload of the data packet.
11. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The response message (506) carrying the delay field is an acknowledgment (ACK) message or a congestion notification message thereof (in RDMA).
12. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The response message (506) carrying the delay field is a congestion notification message.
13. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The controller (104, 304, 504) is also configured to determine more than one network path to use.
14. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The controller (104, 304, 504) is also used to determine which network path to use when initiating the connection to the destination node (104, 304, 504).
15. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The controller (104, 304, 504) is also configured to determine, at intervals, which network path to use for the connection to the destination node (104, 304, 504).
16. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The controller (104, 304, 504) is further configured to determine which network path to use for the connection to the destination node (118) when more than one network path is used by determining that one network path has a low throughput and in response not using the network path.
17. The controller (104, 304, 504) according to any one of the preceding claims, characterized in that: The controller (104, 304, 504) is further configured to determine which network path to use for the connection to the destination node (118) by determining that the connection has a low throughput and in response determining an additional network path to use for the connection.
18. A controller (104, 304, 504) for use in a network node (102, 302, 502), characterized in that: The controller (104, 304, 504) is used to: receiving a data packet (306) including a delay field (308); updating the delay field with the current delay (308); The data packet (306) is transmitted to the next hop (310) in the network path.
19. The controller (104, 304, 504) according to claim 18, characterized in that The data packet (306) further includes a congestion bitmap, and the controller (104, 304, 504) is further configured to determine that congestion exists in the network node (102, 302, 502) and to update the congestion bitmap in response.
20. The controller (104, 304, 504) according to claim 19, characterized in that The congestion bitmap includes an array of bits, wherein each bit in the array of bits corresponds to a hop in the network path, and a set bit in the array of bits indicates that the corresponding hop is congested.
21. A controller (104, 304, 504) for use in a network node (102, 302, 502), characterized in that: The controller (104, 304, 504) is used to: receiving a data packet (306) including a delay field (308); generating a response message (506) including a delay field (508); setting the delay field of the response message (506) to the delay field (308) of the received data packet (306) and the delay of the network node (102, 302, 502); Determining a sending network node (510A, 510B) of the data packet (306); The response message (506) is transmitted to the sending network node (510A, 510B).
22. A method (200) for use in a network node (102, 302, 502), characterized in that: The method (200) comprises: determining one or more network paths (106) from the network node (102, 302, 502) to a destination node (118), the one or more network paths (106) corresponding to a connection to the destination node (118); generating a data packet (306) for each of the one or more network paths (106), wherein each data packet includes a delay field; transmitting each data packet along each of the one or more network paths (106) to the destination node (118); receiving a response message (506) for each of the data packets transmitted along the corresponding network path, wherein the response message (506) includes a delay field (508) indicating a delay along the network path; A determination is made as to which network path to use based on the delay field of the received response.
23. A method (400) used in a network node (102, 302, 502), characterized in that: The method (400) comprises: receiving a data packet (306) including a delay field (308); updating the delay field with the current delay (308); The data packet (306) is transmitted to the next hop (310) in the network path.
24. The method (200) of claim 22, characterized in that: The network node (102, 302, 502) is the destination node (118), and the method (200) further comprises: generating a response message (506) including a delay field (508); setting the delay field (508) of the response message (506) to the delay field (508) of the received data packet (306) and the delay of the network node (102, 302, 502); Determining a sending network node (510A, 510B) of the data packet (306); The response message (506) is transmitted to the sending network node (510A, 510B).
25. A method (600) for use in a network node (102, 302, 502), characterized in that: The method (600) comprises: receiving a data packet (306) including a delay field (308); generating a response message (506) including a delay field (508); setting the delay field (508) of the response message (506) to the delay field (308) of the received data packet (306) and the delay of the network node (102, 302, 502); Determining a sending network node (510A, 510B) of the data packet (306); The response message (506) is transmitted to the sending network node (510A, 510B).
