Multipath transmission method, apparatus, device, readable storage medium and program product
Patent Information
- Application Number
- CN202210550344.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-05-20
- Publication Date
- 2026-09-25
- Estimated Expiration
- 2042-05-20
AI Technical Summary
而在上述过程中,哈希结果往往是不均匀的,甚至可能会出现哈希极化的现象,使得可能出现传输数据包的物理路径有部分重叠(即经过相同的链路),甚至可能出现多条子链路完全一致的情况,导致多物理路径的失效,即,不能有效地利用可用带宽,减少了物理路径冗余的可靠性
在本申请实施例中,源服务器可以获取f个链路类型;f为正整数;一个链路类型是指在一次数据跳转中所经过的链路的类型;获取f个链路类型分别对应的独立链路数量,基于独立链路数量对f个链路类型分别进行H次编码,得到f个链路类型分别对应的H个分段码值;H为正整数;基于H次编码的编码顺序,将f个链路类型分别对应的H个分段码值组成H个路径编码;每个路径编码包括f个链路类型分别对应的一个分段码值;基于H个路径编码,将目标数据包发送至目标服务器。通过以上过程,可以确定f个链路类型,也就是说,数据包在节点对(即源服务器与目标服务器)之间进行一次完整发送时,所经过的链路的类型,通过这些链路类型所对应的独立链路数量,对f个链路类型分别进行编码,从而可以得到代表在源服务器与目标服务器之间进行数据包传输的逻辑路径的路径编码,可以相当于是源服务器与目标服务器之间的实际的物理路径的指代,由于该编码是基于独立链路数量的,使得得到的路径编码之间是相互独立的,不同的路径编码之间相当于是无重叠的,使得在进行数据包传输时,可以直接基于已有的路径编码进行传输,从而达到最大程度的带宽利用和传输的可靠性。
Smart Images

Figure CN117135114B_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of computer technology, and in particular to a multipath transmission method, apparatus, device, readable storage medium, and program product. Background Technology
[0002] In a data center network, there are multiple physical paths between any two server nodes, and these paths are often of equal length. In larger networks (where the number of aggregation layer switches and core layer planes increases), the number of physical links between two different network layers will be even greater. Generally, a switch first uses its routing table to obtain candidate outgoing ports based on the destination Internet Protocol (IP). When multiple candidate outgoing ports are available, the switch hashes the five-tuple (source / destination IP, source / destination port number, and protocol number) of the packet header to select a candidate outgoing port. This ensures that packets with the same five-tuple will be sent from the same outgoing port; in other words, packets with the same five-tuple generally follow the same physical path. This routing configuration allows a node to route different data flows (from the source server and the destination server) along different paths, thus achieving load balancing. In the aforementioned process, hash results are often uneven, and hash polarization may even occur. This can lead to partial overlap in the physical paths of transmitted data packets (i.e., passing through the same links), or even multiple sub-links being completely identical. This can result in the failure of multiple physical paths, meaning that available bandwidth cannot be effectively utilized, reducing the reliability of physical path redundancy. Furthermore, the duplication of sub-links within a physical path means that if a failure occurs in a duplicate sub-link, the entire physical path, including the failed sub-link, will be interrupted, reducing link availability. Summary of the Invention
[0003] This application provides a multipath transmission method, apparatus, device, readable storage medium, and program product that can improve link reliability and availability.
[0004] One embodiment of this application provides a multipath transmission method, the method comprising: The source server obtains f link types; f is a positive integer; a link type refers to the type of link traversed in a single data hop; Obtain the number of independent links corresponding to each of the f link types. Based on the number of independent links, encode each of the f link types H times to obtain H segment code values corresponding to each of the f link types; H is a positive integer. Based on the encoding order of H encodings, H path codes are formed by combining the H segment code values corresponding to the f link types respectively; each path code includes one segment code value corresponding to the f link types respectively. Based on H path codes, the target data packet is sent to the target server.
[0005] One embodiment of this application provides a multipath transmission method, the method comprising: The path switch acquires the target data packet; the target data packet is sent by the source server based on H path codes; the H path codes are composed of H segment code values corresponding to each of the f link types, based on the encoding order of H encodings; the H segment code values corresponding to each of the f link types are obtained by the source server performing H encodings on each of the f link types based on the number of independent links corresponding to each of the f link types; a link type refers to the type of link traversed in a single data hop; f is a positive integer; H is a positive integer; Based on the target path code indicated by the target data packet, the target data packet is sent to the target server; H path codes include the target path code.
[0006] One embodiment of this application provides a multipath transmission apparatus, which includes: The link acquisition module is used by the source server to obtain f link types; f is a positive integer; a link type refers to the type of link traversed in a single data hop; The link coding module is used to obtain the number of independent links corresponding to each of the f link types, and to perform H encoding operations on each of the f link types based on the number of independent links, thereby obtaining H segment code values corresponding to each of the f link types; H is a positive integer; The encoding generation module is used to form H path codes from the H segment code values corresponding to the f link types, based on the encoding order of H encodings; each path code includes a segment code value corresponding to the f link types. The data sending module is used to send the target data packet to the target server based on H path encodings.
[0007] The link coding module includes: The data acquisition unit is used to acquire the number of independent links corresponding to the i-th link type among f link types; The first coding unit is used to encode the i-th link type H times using p to q if the number of independent links corresponding to the i-th link type is greater than or equal to H, to obtain H segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f; the difference between p and q is H-1, and q is greater than p; The second coding unit is used to cyclically encode the i-th link type by using the number of independent links corresponding to the i-th link type if the number of independent links corresponding to the i-th link type is less than H, so as to obtain H segment code values corresponding to the i-th link type. The code value acquisition unit is used to obtain H segment code values corresponding to the f link types when i is f.
[0008] The link coding module includes: The initial encoding unit is used to obtain the number of independent links corresponding to the i-th link type among f link types. Based on the number of independent links corresponding to the i-th link type, the i link types are encoded H times to obtain H initial segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f. The encoding offset unit is used to obtain the encoding offset data corresponding to the i-th link type. Based on the encoding offset data corresponding to the i-th link type, the H initial segment code values corresponding to the i-th link type are encoded and offset respectively to obtain the H segment code values corresponding to the i-th link type. This code value acquisition unit is also used to obtain H segment code values corresponding to the f link types when i is f.
[0009] The data transmission module includes: The data acquisition unit is used to acquire the initial data packet; The path selection unit is used to schedule the H path codes to obtain the target path code; Information generation unit, used to generate path information fields based on target path encoding; The packet update unit is used to add the path information field to the header of the initial data packet to generate the target data packet; The link selection unit is used to obtain the segment code value of the local uplink from the target path code, and determine the independent link corresponding to the local uplink based on the segment code value of the local uplink; the local uplink refers to the link type from the source server to the access layer switch; The data sending unit is used to send the target data packet to the access layer switch based on the independent link corresponding to the local uplink, so that the access layer switch can send the target data packet to the target server based on the path information field in the target data packet.
[0010] The path selection unit includes: The request sending subunit is used to request the sending of data packets to the polling data path; the independent data paths corresponding to the H path codes include the polling data path; the polling data path refers to the data path currently being polled; The path determination subunit is used to determine the path code corresponding to the polling data path as the target path code if the polling data path meets the bandwidth transmission conditions. The path polling subunit is used to determine the next independent data path of the polling data path as the polling data path if the polling data path does not meet the bandwidth transmission conditions, and then return to execute the process of requesting to send data packets to the polling data path.
[0011] The information generation unit includes: The data determination subunit is used to obtain the target code identifier from the target path code, and the segment code value of the link type pointed to by one or more path switches in f link types; the one or more path switches include access layer switches; The information component sub-unit is used to obtain the number of transmission hops corresponding to the source server, and to generate a path information field by combining the target encoding identifier, the segmentation code value of the link type pointed to by one or more path switches in f link types, and the number of transmission hops corresponding to the source server.
[0012] The device also includes: The heartbeat sending module is used by the source server to send heartbeat packets to the target server in the independent data paths corresponding to H path codes, based on the heartbeat detection period. The status update module is used to update the path status of H independent data paths to path check status if the source server does not receive the heartbeat confirmation data sent by the target server after the heartbeat confirmation time threshold is exceeded. The path checking module is used to detect and process H independent data paths in the path checking state; The exception update module is used to update the exception data paths if there are exception data paths among the H independent data paths.
[0013] The path checking module includes: The check sending unit is used in the path check state to send a check packet from the source server to the target server based on the j-th independent data path; j is a positive integer less than or equal to H; The normal determination unit is used to determine that the forward data path of the j-th independent data path is normal if the source server receives the check confirmation data sent by the target server, wait for the reverse data path of the j-th independent data path to be updated, and determine the j-th independent data path as a normal data path when the reverse data path after the j-th independent data path is updated is normal. The status update unit is used to update the path status of the j-th independent data path to the path detection status if the source server does not receive the heartbeat confirmation data sent by the target server after the check and confirmation time threshold, thus determining that the j-th independent data path is an abnormal data path; the path detection status is used to indicate that there is a fault in the path switch corresponding to the j-th independent data path.
[0014] The abnormal update module includes: The anomaly acquisition unit is used to acquire the anomaly path code corresponding to the anomaly path if there is an anomaly path among the H independent data paths; the path status of the anomaly path is the path detection status. The update acquisition unit is used to acquire the updated segment code value corresponding to the segment code value of the i-th link type in the abnormal path encoding, update the segment code value corresponding to the i-th link type in the abnormal path encoding to the updated segment code value, and obtain the updated path encoding i corresponding to the abnormal data path; i is a positive integer less than or equal to f; The update probe unit is used to send probe packets from the source server to the target server in the update data path i corresponding to the update path code i. The encoding update unit is used to replace the abnormal path code in the H path codes with the updated data path i if it receives the probe confirmation data of the target server for the probe packet, so as to obtain the updated H path codes and update the path status of the abnormal data path to the normal path status. The subsequent detection unit is used to detect the (i+1)th link type if the source server does not receive detection confirmation data for the detection packet from the target server after the detection confirmation time threshold has elapsed. The invalid determination unit is used to determine that the abnormal path code is invalid when all link types corresponding to the f link types in the abnormal path code have been detected and the abnormal data path is in the path detection state.
[0015] One embodiment of this application provides a multipath transmission apparatus, which includes: The data acquisition module is used by the path switch to acquire target data packets. The target data packets are sent by the source server based on H path codes. The H path codes are composed of H segment code values corresponding to each of the f link types, encoded by the source server according to the encoding order of H encodings. The H segment code values corresponding to each of the f link types are obtained by the source server performing H encodings on each of the f link types based on the number of independent links corresponding to each of the f link types. A link type refers to the type of link traversed in a single data hop. f is a positive integer; H is a positive integer. The data sending module is used to send the target data packet to the target server based on the target path code indicated by the target data packet; the H path codes include the target path code.
[0016] The data transmission module includes: The packet data acquisition unit is used to obtain the path information field and the five-tuple from the target data packet; The port determination unit is used to determine the target outgoing port from the candidate outgoing ports associated with the path switch based on the path information field and the five-tuple; the path information field is used to indicate the target path code; The data sending unit is used to send target data packets to the target server based on the target output port.
[0017] The path information field includes a transmission hop number segment and an encoding field; the value of the encoding field is determined according to the target path encoding indicated by the path information field. The port determination unit includes: The hop count update subunit is used to update the value of the transmission hop count field in the path information field to obtain the updated hop count; The hash retrieval subunit is used to obtain the first hash of the quintuple; The code value acquisition subunit is used to obtain the target segment code value corresponding to the update hop number in the encoding field; The port determination subunit is used to determine the target outgoing port from the candidate outgoing ports associated with the path switch based on the first hash and the target segment code value.
[0018] Specifically, this hash-based sub-unit is used for: Perform equivalent multipath hashing on the quintuple to obtain the first hash of the quintuple; This port identifies the sub-unit, including: The quantity acquisition subunit is used to acquire the number of candidate output ports associated with the path switch and to acquire the sum of the first hash and the target segment code value. The port determination subunit is used to determine the candidate output port corresponding to the remainder of the sum of the data and the number of candidates as the target output port.
[0019] One embodiment of this application provides a computer device, including a processor, a memory, and an input / output interface; The processor is connected to a memory and an input / output interface, respectively. The input / output interface is used to receive and output data, the memory is used to store computer programs, and the processor is used to call the computer programs so that the computer device containing the processor executes the multipath transmission method in one aspect of the embodiments of this application.
[0020] One aspect of this application provides a computer-readable storage medium storing a computer program adapted to be loaded and executed by a processor, such that a computer device having the processor performs the multipath transmission method of one aspect of this application.
[0021] One aspect of this application provides a computer program product or computer program, which includes computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform the methods provided in various optional embodiments of this application. In other words, when the computer instructions are executed by the processor, they implement the methods provided in various optional embodiments of this application.
[0022] Implementing the embodiments of this application will have the following beneficial effects: In this embodiment, the source server can obtain f link types; f is a positive integer; a link type refers to the type of link traversed in a single data hop; obtain the number of independent links corresponding to each of the f link types, and perform H encodings on each of the f link types based on the number of independent links to obtain H segment code values corresponding to each of the f link types; H is a positive integer; based on the encoding order of the H encodings, combine the H segment code values corresponding to each of the f link types into H path codes; each path code includes one segment code value corresponding to each of the f link types; based on the H path codes, send the target data packet to the target server. Through the above process, f link types can be determined. That is, when a data packet is sent completely between a node pair (i.e., the source server and the destination server), the types of links it passes through are determined. By encoding each of these link types with the number of independent links, a path code representing the logical path of data packet transmission between the source server and the destination server can be obtained. This path code can be considered as an indication of the actual physical path between the source server and the destination server. Since this encoding is based on the number of independent links, the resulting path codes are independent of each other, and different path codes are essentially non-overlapping. This allows data packet transmission to be directly based on existing path codes, thereby maximizing bandwidth utilization and transmission reliability. Attached Figure Description
[0023] To more clearly illustrate the technical solutions in the embodiments of this application or the prior art, the drawings used in the description of the embodiments or the prior art will be briefly introduced below. Obviously, the drawings described below are only some embodiments of this application. For those skilled in the art, other drawings can be obtained based on these drawings without creative effort.
[0024] Figure 1a This is a schematic diagram of a network topology for multipath transmission provided in an embodiment of this application; Figure 1bThis is a schematic diagram of a data transmission scenario provided in an embodiment of this application; Figure 2 This is a schematic diagram of a multipath transmission scenario provided in an embodiment of this application; Figure 3 This is a flowchart of a multipath transmission method provided in an embodiment of this application; Figure 4 This is a schematic diagram of a physical path provided in an embodiment of this application; Figure 5 This application provides another physical path diagram. Figure 6 This is a schematic diagram of a path scheduling scenario provided in an embodiment of this application; Figure 7 This is a schematic diagram of a path information field provided in an embodiment of this application; Figure 8 This is a schematic diagram of a path checking process provided in an embodiment of this application; Figure 9 This is a schematic diagram of a switch data transmission process provided in an embodiment of this application; Figure 10 This is a schematic diagram of a data interaction scenario provided in an embodiment of this application; Figure 11 This is a schematic diagram of a multipath transmission device provided in an embodiment of this application; Figure 12 This is a schematic diagram of another multipath transmission device provided in an embodiment of this application; Figure 13 This is a schematic diagram of the structure of a computer device provided in an embodiment of this application. Detailed Implementation
[0025] The technical solutions of the embodiments of this application will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this application, and not all embodiments. Based on the embodiments of this application, all other embodiments obtained by those of ordinary skill in the art without creative effort are within the scope of protection of this application.
[0026] Optionally, this application may use cloud storage technology to store the data involved in this application, such as the path codes obtained by each server, and may use big data technology for data transmission.
[0027] Among them, cloud storage is a new concept that has been extended and developed from the concept of cloud computing. A distributed cloud storage system (hereinafter referred to as a storage system) refers to a storage system that uses cluster applications, grid technology and distributed storage file systems to bring together a large number of storage devices of various types in the network (storage devices are also called storage nodes) to work together through application software or application interfaces to provide data storage and business access functions to the outside world.
[0028] Currently, the storage method in storage systems is as follows: Logical volumes are created, and during creation, physical storage space is allocated to each logical volume. This physical storage space may consist of a single storage device or the disks of several storage devices. Clients store data on a logical volume, which means storing the data on the file system. The file system divides the data into many parts, each part being an object. Each object contains not only the data but also additional information such as a data identifier (ID, ID entity). The file system writes each object to the physical storage space of that logical volume and records the storage location information of each object. Therefore, when a client requests access to data, the file system can allow the client to access the data based on the storage location information of each object.
[0029] The process by which a storage system allocates physical storage space to a logical volume is as follows: the physical storage space is pre-divided into strips according to the capacity estimate of the objects stored in the logical volume (this estimate often has a large margin relative to the actual capacity of the objects to be stored) and the grouping of Redundant Array of Independent Disks (RAID). A logical volume can be understood as a strip, thus allocating physical storage space to the logical volume.
[0030] Big data refers to data sets that cannot be captured, managed, and processed within a certain timeframe using conventional software tools. It represents massive, rapidly growing, and diverse information assets that require new processing models to achieve stronger decision-making, insightful discovery, and process optimization capabilities. With the advent of the cloud era, big data has attracted increasing attention. Big data requires specialized technologies to effectively process large amounts of data within a tolerable timeframe. Technologies suitable for big data include massively parallel processing databases, data mining, distributed file systems, distributed databases, cloud computing platforms, the internet, and scalable storage systems.
[0031] In the embodiments of this application, please refer to Figure 1a , Figure 1aThis is a schematic diagram of a network topology for multipath transmission provided in an embodiment of this application. The network topology in this embodiment can be considered as consisting of a server and various types of switches. Optionally, the various types of switches can be collectively referred to as path switches. Optionally, such as... Figure 1a As shown, this network topology can include servers, access layer, aggregation layer, and core layer, that is to say, Figure 1a In a network topology, various types of switches can be considered, including access layer switches, aggregation layer switches, and core layer switches. Two types of switches that can directly exchange data can be considered adjacent. For example, an access layer switch can be considered an adjacent switch to an aggregation layer switch, and specifically, an input adjacent switch to that aggregation layer switch; a core layer switch can be considered an adjacent switch to an aggregation layer switch, and specifically, an output adjacent switch to that aggregation layer switch; an aggregation layer switch is an adjacent switch to both access layer switches and core layer switches, and can be considered an output adjacent switch to an access layer switch and an input adjacent switch to a core layer switch. For example... Figure 1a As shown, a connection between any two devices (including servers and switches) represents a physical link between them. For example, the connection between access layer switch 12 and server 0 represents a physical link between server 0 and access layer switch 12. A physical link can be considered bidirectional, meaning that the two devices connected by the physical link can send and receive data from each other. Optionally, the physical path between any pair of nodes (i.e., two servers, which can be called a source server and a destination server) can consist of multiple physical links. For example, a physical path from server 0 to server 15 is "server 0 -> access layer switch 12 -> aggregation layer switch 8 -> core layer plane 0 (core layer switch 0 / core layer switch 1) -> aggregation layer switch 32 -> access layer switch 39 -> server 15". This physical path includes physical links "server 0 -> access layer switch 12", "access layer switch 12 -> aggregation layer switch 8", ... and "access layer switch 39 -> server 15", etc. The reverse of the above physical path can be considered as the physical path from server 15 to server 0.
[0032] This network topology can include one or at least two points of delivery (Pods), such as Figure 1aThe transmission units are Pod0, Pod1, Pod2, and Pod3. A transmission unit can be considered as a unit used for data transmission and can consist of a server and a switch. This transmission unit may include one or at least two servers, one or at least two access layer switches, and one or at least two aggregation layer switches. Figure 1a This is a possible network topology diagram. The core layer can include one or at least two planes, such as... Figure 1a As shown, it may include plane 0, plane 1, plane 2, and plane 3, etc., and each plane may include one or at least two core layer switches, such as... Figure 1a In this application, plane 0 may include core layer switch 0 and core layer switch 1, plane 1 may include core layer switch 2 and core layer switch 3, etc., plane 2 may include core layer switch 4 and core layer switch 5, etc., and plane 3 may include core layer switch 6 and core layer switch 7, etc. Optionally, generally, the number of planes included in the core layer can be the same as the number of aggregation layer switches included in a transmission unit. This is because the aggregation layer and the core layer interact with data based on planes. Of course, depending on requirements, the number of planes included in the core layer can also be different from the number of aggregation layer switches included in a transmission unit. That is to say, the number of devices or clusters (such as transmission units or planes) involved in this application are not limited, such as the number of servers, access layer switches, and aggregation layer switches included in a transmission unit, the number of core layer switches included in a plane, and the number of transmission units (such as core layer switches, access layer switches, and aggregation layer switches) included in the network topology. Figure 1a The value in the middle is 4, but it could also be 5 or 3, etc.), and the number of planes included in the core layer of the network topology (e.g., Figure 1a The number of independent links (e.g., 4, 8, or 9, etc.) is not limited in this application and can be varied based on network deployment. Optionally, the number of independent links for servers or path switches can also be determined based on network deployment, such as... Figure 1a In this context, the number of independent links for this server is 2, meaning that server 0 corresponds to 2 independent links, such as "server 0—access layer switch 12" and "server 0—access layer switch 13," etc. Therefore, the number of independent links for this server can be considered to be N, where N is a positive integer. These independent links can be considered to be the physical links mentioned above.
[0033] Optionally, when sending data packets, the access layer switch associated with the source server sending the data packet can be designated as the source access layer switch, and the aggregation layer switch associated with the source server sending the data packet can be designated as the source aggregation layer switch; the access layer switch associated with the target server receiving the data packet can be designated as the target access layer switch, and the aggregation layer switch associated with the target server receiving the data packet can be designated as the target aggregation layer switch, and so on. Of course, if the network topology changes subsequently, that is, if the layers included in the network topology or the devices (such as switches or servers) included in each layer change, the scheme in this application can also be adopted.
[0034] Further options can be found in Figure 1b , Figure 1b This is a schematic diagram of a data transmission scenario provided in an embodiment of this application. For example... Figure 1b As shown, under a single connection, the sending and receiving sides can send data packets via logical paths corresponding to the obtained H path codes. A connection can be considered a pair of nodes (two servers), where H is a positive integer. For example, when a source server and a target server need to communicate, a connection can be established between them, denoted as connection 1. Connection 1 includes multiple physical paths for data transmission between the source and target servers. The source server in connection 1 can determine the target physical path for transmission within the multiple physical paths included in connection 1 based on the H logical paths. Within the target physical path, the data packet is sent to the target server in connection 1 via the network side (i.e., the path switch). For instance, assuming the source server determines to send data based on logical path 2, the source server can send the data to the network side via logical path 2, and the target server can receive the data packet from the network side via logical path 2.
[0035] For details, please see Figure 2 , Figure 2 This is a schematic diagram of a multipath transmission scenario provided in an embodiment of this application. For example... Figure 2 As shown, the source server can obtain f link types, where f is a positive integer. A link type refers to the type of link traversed in a single data hop. In other words, it represents the path segmentation between various devices involved in a complete data transmission process. A link type associates two types of devices, such as servers or switches. Alternatively, it can be said that two adjacent layers in the network topology can form a link type (or path segment). It can be assumed that any complete data transmission process can be composed of physical links corresponding to f link types. For example... Figure 2As shown in the diagram, the network topology is assumed to include network topology layer 1, network topology layer 2, network topology layer 3, and network topology layer 4, etc. That is, a complete data transmission process can go through "server—first type switch—second type switch—server". The path formed by the devices traversed in this data transmission process can be called a link hop path, which can be considered as follows: Figure 2 The network topology shown includes server 2011 in network topology layer 1, first-type switch 2012 in network topology layer 2, second-type switch 2013 in network topology layer 3, and server 2014 in network topology layer 4, etc. A link hop path can be considered as the hop path through the network topology layers during a single data transmission. A link hop path can include multiple link types, and a single data transmission process can include multiple data hops. For example... Figure 2 As shown, network topology layer 1 and network topology layer 2 form a link type (which can be referred to as link type 1), network topology layer 2 and network topology layer 3 form a link type (which can be referred to as link type 2), and so on.
[0036] Specifically, in one possible scenario, the source server can obtain the f link types and the number of independent links corresponding to each of the f link types, such as the number of independent links 1 corresponding to link type 1, the number of independent links 2 corresponding to link type 2, and the number of independent links f corresponding to link type f, etc. Further, based on the number of independent links corresponding to each of the f link types, the f link types can be encoded H times to obtain H segment code values corresponding to each of the f link types, where H is a positive integer. For example, based on the number of independent links 1, link type 1 is encoded H times to obtain H segment code values 2021 corresponding to link type 1, such as segment code value 11, segment code value 12, and segment code value 1H, etc.; based on the number of independent links 2, link type 2 is encoded H times to obtain H segment code values 2022 corresponding to link type 2, such as segment code value 21, segment code value 22, and segment code value 2H, etc.; ...; based on the number of independent links f, link type f is encoded H times to obtain H segment code values 202f corresponding to link type f, such as segment code value f1, segment code value f2, and segment code value fH, etc. Furthermore, based on the encoding order of H encodings, H segment code values corresponding to the f link types can be combined to form H path codes 203. For example, path code 1 can be formed by segment code value 11, segment code value 21, and segment code value f1; path code 2 can be formed by segment code value 12, segment code value 22, and segment code value f2; ...; path code H can be formed by segment code value 1H, segment code value 2H, and segment code value fH, etc. Furthermore, the source server can send the target data packet to the target server 204 based on these H path codes 203.
[0037] Through the above process, when sending data packets, the source server can encode each of the f link types based on the number of independent links corresponding to each link type, obtaining H segment code values corresponding to each of the f link types. These H segment code values can then be combined to form H path codes, where each of these H path codes can be considered a logical path from the source server to the destination server, and each of these H logical paths can be considered an independent path. This allows the source server to directly send data packets based on these H path codes. Since the multiple paths (i.e., the H logical paths) are independent of each other, the utilization of multiple paths can be maximized, thereby improving the reliability and availability of the links.
[0038] It is understood that, with the development of technology, the server or switch mentioned in the embodiments of this application can be an electronic device, including but not limited to mobile phones, tablets, desktop computers, laptops, PDAs, in-vehicle devices, augmented reality / virtual reality (AR / VR) devices, head-mounted displays, smart TVs, wearable devices, smart speakers, digital cameras, webcams, and other mobile internet devices (MIDs) with network access capabilities, or terminal devices in scenarios such as trains, ships, and flights. The server mentioned above can be an independent physical server, a server cluster or distributed system composed of multiple physical servers, or a cloud server providing basic cloud computing services such as cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communication, middleware services, domain name services, security services, vehicle-to-everything (V2X) communication, content delivery networks (CDNs), and big data and artificial intelligence platforms.
[0039] Optionally, the data involved in the embodiments of this application may be stored in a computer device, or may be stored based on cloud storage technology or a blockchain network, without limitation.
[0040] Further, please see Figure 3 , Figure 3 This is a flowchart of a multipath transmission method provided in an embodiment of this application. Figure 3 As shown, the source server can be any server, and the target server can be any server other than the source server. Figure 3 In the described method embodiment, the multipath transmission process includes the following steps: Step S301: The source server obtains f link types.
[0041] In this embodiment, the source server can obtain f link types, where f is a positive integer. These link types can also be considered path segments. A link type refers to the type of link traversed in a single data hop. Specifically, the source server can obtain the link hop path, the number of network topology layers indicated by the link hop path, and determine the number of link types, which is f. Specifically, based on the network topology layers indicated by the link hop path, the link hop path can be segmented to obtain f link types. For example, such as... Figure 1a The network topology shown has a link hop path of "server—access layer—aggregation layer—core layer—aggregation layer—access layer—server". Based on the network topology layers indicated by this link hop path, the link hop path is segmented to obtain f link types. These f link types can include: Local Uplink (LU) composed of "server—access layer"; Edge Uplink (EU) composed of "access layer—aggregation layer"; Aggregation Uplink (AU) composed of "aggregation layer—core layer"; Core Downlink (CD) composed of "core layer—aggregation layer"; Aggregation Downlink (AD) composed of "aggregation layer—access layer"; and Edge Downlink (ED) composed of "access layer—server". When any two servers interact with data, multiple physical links can correspond to each link type. For example, such as... Figure 1a In the network topology shown, when server 0 and server 15 are exchanging data, the physical links corresponding to the LU type can include "server 0 - access layer switch 12" and "server 0 - access layer switch 13", etc. Assuming that server 0 sends the target data packet to server 15 through access layer switch 12, the physical links corresponding to the EU type can include "access layer switch 12 - aggregation layer switch 8", "access layer switch 12 - aggregation layer switch 9", "access layer switch 12 - aggregation layer switch 10", and "access layer switch 12 - aggregation layer switch 11", etc.
[0042] A physical path can include multiple physical links, and each physical link can correspond to a link type. For example, taking a physical path from server 0 to server 15 as “Server 0 -> Access Layer Switch 12 -> Aggregation Layer Switch 8 -> Core Layer Switch 0 -> Aggregation Layer Switch 32 -> Access Layer Switch 38 -> Server 15”, it includes physical links corresponding to the LU type as “Server 0 -> Access Layer Switch 12”, the EU type as “Access Layer Switch 12 -> Aggregation Layer Switch 8”, the AU type as “Aggregation Layer Switch 8 -> Core Layer Switch 0”, the CD type as “Core Layer Switch 0 -> Aggregation Layer Switch 32”, the AD type as “Aggregation Layer Switch 32 -> Access Layer Switch 38”, and the ED type as “Access Layer Switch 38 -> Server 15”, etc.
[0043] Step S302: Obtain the number of independent links corresponding to each of the f link types, and encode each of the f link types H times based on the number of independent links to obtain the H segment code values corresponding to each of the f link types.
[0044] In this embodiment, the source server can obtain the number of independent links corresponding to each of the f link types. Based on the number of independent links corresponding to each of the f link types, it performs H encoding operations on each of the f link types to obtain H segmentation code values corresponding to each of the f link types. Optionally, C can be used. (i-1)(j-1) This represents the segment code value of the j-th encoding corresponding to the i-th link type, i.e., the j-th segment code value corresponding to the i-th link type, where i is a positive integer less than or equal to f, and j is a positive integer less than or equal to H. In other words, the segment code value can be represented starting from the default value; for example, if C exists... 00 This is used to represent the first segment code value corresponding to the first link type; or, in other words, using C... ij This represents the segment code value of the j-th encoding corresponding to the i-th link type, i.e., the j-th segment code value corresponding to the i-th link type. Here, i is a positive integer less than or equal to f, and j is a positive integer less than or equal to H. In other words, the segment code value can be represented from the beginning, for example, C 11 This is used to represent the first segment code value corresponding to the first link type. Similarly, C can be used. i Used to indicate the type of the i-th link, or using C i-1 Used to indicate the i-th link type. The above is only an optional representation; other representations can also be used to represent the i-th link type, or the j-th segment code value of the i-th link type. No limitation is imposed here. Optionally, in the following embodiments of this application, C is used. (i-1)(j-1)This represents the j-th segment code value corresponding to the i-th link type, using C. i-1 This is used as an example to describe the i-th link type.
[0045] For example, such as Figure 1a The network topology shown can be represented by the f link types as [C0, C1, C2, C3, C5], which represent the first link type (LU type), the second link type (EU type), the third link type (AU type), the fourth link type (CD type), the fifth link type (AD type), and the sixth link type (ED type), respectively. C0 is used for the server to select the access link locally, and C1 to C5 represent the routing on the switch.
[0046] In this network topology, switches are arranged in a highly regular hierarchical manner. There are multiple physical paths between any pair of servers, and the length (or hop count) of these physical paths can be considered the same, essentially determined by f link types, such as... Figure 1a The network topology shown, from the source server to the target server, can be considered to include multiple regional physical paths, where the path from the access layer switch of the source server to the access layer switch of the target server can be considered to include multiple independent (i.e., non-overlapping) regional physical paths. Optionally, [the following can be used]. Figure 1a Regarding the number of servers and switches of various types shown, assuming the source server is server 0 and the target server is server 15, taking access layer switch 12 of source server 0 to access layer switch 39 of target server 15 as an example, it can be considered that access layer switch 12 and access layer switch 39 can obtain 4 independent regional physical paths, as shown below: ① Access layer switch 12 → Aggregation layer switch 8 → Core layer switch 0 / 1 → Aggregation layer switch 32 → Access layer switch 39; ② Access layer switch 12 → Aggregation layer switch 9 → Core layer switch 2 / 3 → Aggregation layer switch 33 → Access layer switch 39; ③ Access layer switch 12 → Aggregation layer switch 10 → Core layer switch 4 / 5 → Aggregation layer switch 34 → Access layer switch 39; ④ Access layer switch 12 → Aggregation layer switch 11 → Core layer switch 6 / 7 → Aggregation layer switch 35 → Access layer switch 39.
[0047] There can be N independent links between the server and the access layer switch, where N is a positive integer. For example... Figure 1aAs shown, there are two access links between the server and the access layer switch, meaning that... Figure 1a In this context, N is 2, which is equivalent to 2 independent links corresponding to the server. From the access layer switch of the source server to the access layer switch of the target server, the number of completely non-overlapping physical paths can be considered to be 4. The switch that sends data from the source server is called the source switch, and the switch that receives data from the target server is called the target switch. In other words, a physical path can be "source server -> source access layer switch -> source aggregation layer switch -> core layer switch -> target aggregation layer switch -> target access layer switch -> target server", etc., and will not be repeated hereafter.
[0048] Specifically, the number of independent links corresponding to each of the f link types can be obtained. This number of independent links can be considered as the number of access links (i.e., physical links) associated with a transmitting device of the corresponding link type to the next network topology layer. For example, the number of independent links for the i-th link type is the number of access links associated with a transmitting device of the i-th link type to the next network topology layer. See also Figure 4 , Figure 4 This is a physical path diagram provided in an embodiment of this application, such as... Figure 4As shown, each server corresponds to 2 independent links. This means that the sending device of the LU type is a server, and the number of independent links corresponding to this LU type is 2, so C0 indication can be used. For example, the sending device of the EU type is an access layer switch. An access layer switch has 4 access links, meaning 4 access links point to the next network topology layer (i.e., the aggregation layer), pointing to aggregation layer switches 8, 9, 10, and 11 respectively. A port list [a, b, c, d] can be used to represent these 4 access links. That is, the access layer switch can see that all four candidate outgoing ports [a, b, c, d] can transmit data to the target server. Therefore, the number of independent links corresponding to the EU type can be considered 4, and C1 indication can be used. For example, in an AU-type transmitting device, the next network topology layer after the aggregation layer is the core layer. This core layer is connected in planes, meaning that connecting from the aggregation layer switch to any core layer switch within a plane has no impact on subsequent physical link selection. Furthermore, aggregation layer switches typically connect to a plane within the core layer. Therefore, during network deployment, the number of planes included in the core layer is generally the same as the number of aggregation layer switches included in a transmission unit. Thus, the number of independent links for this AU type can be considered as 1. This 1 independent link count indicates that data packets can be sent to the corresponding plane. In any core layer switch within a plane; optionally, if the number of planes included in the core layer is different from the number of aggregation layer switches included in a transmission unit, that is, if an aggregation layer switch can point to multiple planes in the core layer, the number of core layer planes pointed to by the aggregation layer switch can be determined as the number of independent links corresponding to the AU type; or, the number of core layer switches included in a plane in the core layer can be obtained, and the number of core layer switches included in the plane can be determined as the number of independent links corresponding to the AU type; of course, if an aggregation layer switch can point to multiple planes in the core layer, the total number of core layer switches included in the multiple planes can be determined as the number of independent links corresponding to the AU type. And if... Figure 4As shown, when a core layer switch in the core layer connects to the aggregation layer, given a specific core layer switch, it will point to an aggregation layer switch within the transmission unit where the target server resides. When a target access layer switch is determined, there is exactly one access link pointing to the target server; therefore, the number of independent links for this CD type can be considered to be 1, and the number of independent links for this ED type can also be considered to be 1. For the AD type, the sending-side device is the target aggregation layer switch. This target aggregation layer switch has two access links pointing to the next network topology layer. That is, in the next network topology layer, there are two target access layer switches that can connect to the target server; therefore, the number of independent links for this AD type can be considered to be 2. The above is only a partial summary. Figure 4 The network topology shown illustrates the f link types and the number of independent links corresponding to each link type. The source server can obtain the network topology (i.e., the specific architecture of the network topology where the source server resides) and, based on this topology, obtain the f link types. See step S301 for a detailed description; the f link types are obtained from the network topology hierarchy indicated by the link hop paths in the network topology. The number of independent links corresponding to each of the f link types can be obtained based on the network topology, without limitation.
[0049] Furthermore, based on the number of independent links corresponding to each of the f link types, H encodings can be performed on each of the f link types to obtain H segment code values corresponding to each of the f link types. Optionally, the number of encodings submitted by the business object (such as business personnel) can be obtained, i.e., the value of H, which is used to determine the number of encodings; or, the number of aggregation layer switches included in a transmission unit can be obtained, and the number of encodings can be determined based on the number of aggregation layer switches, i.e., the value of H can be used to determine the number of encodings. For example, H (i.e., the number of encodings) can be determined as a positive integer less than or equal to the number of aggregation layer switches; or, the number of access links of the server can be obtained, and a multiple of the number of access links of the server can be used to determine the number of encodings. Optionally, an even multiple of the number of access links of the server can be used to determine the number of encodings; or, the largest multiple less than or equal to the number of aggregation layer switches included in a transmission unit can be obtained from the multiples of the number of access links of the server, and the largest multiple can be used to determine the number of encodings, etc., without limitation.
[0050] In one encoding method (1), taking the i-th link type as an example, the number of independent links corresponding to the i-th link type is obtained. If the number of independent links corresponding to the i-th link type is greater than or equal to H, then the i-th link type is encoded H times using p to q to obtain the H segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f; the difference between p and q is H-1, and q is greater than p. Here, it can be considered that the i-th link type is continuously encoded, and p to q are sequentially determined as the H segment code values corresponding to the i-th link type, for example, C (i-1)0 =p,C (i-1)1 =p+1,…,C (i-1)(H-1) =q. For example, the i-th link type is encoded H times using 0 to (H-1) to obtain the H segment code values corresponding to the i-th link type, that is, p is 0 and q is H-1.
[0051] If the number of independent links corresponding to the i-th link type is less than H, then the number of independent links corresponding to the i-th link type is used to perform cyclic encoding on the i-th link type to obtain H segment code values corresponding to the i-th link type. Specifically, a base code value can be determined based on the number of independent links corresponding to the i-th link type, and this base code value is cyclically encoded to obtain H segment code values corresponding to the i-th link type. For example, assuming the number of independent links corresponding to the i-th link type is 2, then the base code value is assumed to be "0, 1", and the base code value "0, 1" is cyclically encoded to obtain H segment code values corresponding to the i-th link type, for example, C (i-1)0 =0, C (i-1)1 =1, C (i-1)3 =0, ...; For example, assuming the number of independent links corresponding to the i-th link type is 1, then assuming the basic code value is determined to be "2", the basic code value "2" is cyclically encoded to obtain H segment code values corresponding to the i-th link type, for example, C (i-1)0 =2, C (i-1)1 =2, ..., C (i-1) (H-1) =2. When i is f, we obtain H segment code values corresponding to the f link types respectively.
[0052] For example, if the independent link corresponding to the LU type is N, the LU type can be encoded H times from 0 to (N-1) to obtain H segment code values corresponding to the LU type. Figure 1a or Figure 4 Taking the network topology shown as an example, N is 2, and H is assumed to be 4. Since N is less than H, the basic code value of the LU type can be obtained, assumed to be "0, 1". This basic code value "0, 1" is used to encode the LU type H times, that is, to perform interleaving overlay coding, to obtain H segment code values of the LU type, namely "C". 00 =0, C 01=1, C 02 =0, C 03 =1”; The number of independent links of the EU type is 4, which is equal to H. The EU type can be encoded H times from p to q, i.e., continuous coverage, to obtain H segmented code values of the EU type, i.e., “C”. 10 =0, C 11 =1, C 12 =2, C 13 =3”; The number of independent links of type AU is 1, which is less than H. This means that there are no special requirements for the encoding of type AU. The basic code value of type AU can be obtained. This basic code value can be a random value, such as "0". Using this basic code value "0", type AU is encoded H times to obtain H segment code values of type AU, that is, "C". 20 =0, C 21 =0, C 22 =0, C 23 =0”; The number of independent links corresponding to the CD type is 1, which is less than H. The basic code value of the CD type can be obtained. This basic code value can be a random value, such as assuming it is “0”. Using this basic code value “0”, the CD type is encoded H times to obtain H segment code values of the CD type, that is, “C”. 30 =0, C 31 =0, C 32 =0, C 33 =0”; The number of independent links corresponding to the AD type is 2, which is less than H. The basic code value of the AD type can be obtained, assumed to be “0,1”. The AD type is encoded H times using this basic code value “0,1”, that is, interleaving and overlay coding is performed to obtain the H segment code values of the AD type, namely “C”. 40 =0, C 41 =1, C 42 =0, C 43 =1”; The number of independent links corresponding to the ED type is 1, which is less than H. The basic code value of the ED type can be obtained. This basic code value can be a random value, such as assuming it is “0”. The ED type is encoded H times using this basic code value “0”, resulting in H segment code values of the ED type, i.e., “C”. 50 =0, C 51 =0, C 52 =0, C 53 =0".
[0053] In one encoding method (2), taking the i-th link type as an example, the number of independent links corresponding to the i-th link type is obtained. Based on the number of independent links corresponding to the i-th link type, the i-th link type is encoded H times to obtain the H initial segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f. Specifically, if the number of independent links corresponding to the i-th link type is greater than or equal to H, then the i-th link type is encoded H times using p to q to obtain the H initial segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f; the difference between p and q is H-1, and q is greater than p. If the number of independent links corresponding to the i-th link type is less than H, then the i-th link type is cyclically encoded using the number of independent links corresponding to the i-th link type to obtain the H initial segment code values corresponding to the i-th link type. For details, please refer to encoding method (1). It can be considered that the H initial segment code values corresponding to the f link types respectively form the H initial path codes. Furthermore, the coding offset data corresponding to the i-th link type can be obtained. Based on the coding offset data corresponding to the i-th link type, coding offset processing is performed on the H initial segment code values corresponding to the i-th link type to obtain the H segment code values corresponding to the i-th link type. For example, the coding offset data corresponding to the i-th link type can be denoted as D. i-1 In other words, we can consider that the encoded offset data is added to each of the H initial segment code values corresponding to the i-th link type to obtain H segment code values, which can be denoted as C. i-1 =X+D i-1 Here, X represents the initial segment code value for the i-th link type. When i is f, H segment code values corresponding to f link types are obtained respectively. The encoded offset data corresponding to different link types can be the same or different.
[0054] Step S303: Based on the encoding order of H encodings, H path codes are formed by combining the H segment code values corresponding to the f link types respectively.
[0055] In this embodiment, based on the encoding order of H encoding, H path codes can be formed by combining the H segment code values corresponding to each of the f link types. That is, the j-th segment code value corresponding to each of the f link types is used to form the j-th path code, and so on, resulting in H path codes. Optionally, H encoding identifiers can be obtained, and based on the encoding order of H encoding, the H encoding identifiers and the H segment code values corresponding to each of the f link types can be combined to form H path codes.
[0056] Specifically, such as Figure 1a or Figure 4 In the network topology shown, under one encoding method (1), the H paths can be encoded as follows: [Encoding identifier=0, C] 00 =0, C 10 =0, C 20 =0, C 30 =0, C 40 =0, C 50 =0]; [Encoding identifier=1, C] 01 =1, C 11 =1, C 21 =0, C 31 =0, C 41 =1, C 51 =0]; [Encoding identifier=2, C] 02 =0, C 12 =2, C 22 =0, C 32 =0, C 42 =0, C 52 =0]; [Encoding identifier=3, C] 03 =1, C 13 =3, C 23 =0, C 33 =0, C 43 =1, C 53 =0].
[0057] Under one encoding method (2), the H paths can be encoded as follows: [Encoding identifier=0, C] 00 =0+D0,C 10 =0+D1, C 20 =0+D2,C 30 =0+D3,C 40 =0+D4,C 50 =0+D5]; [Encoding identifier=1, C] 01 =1+D0,C 11 =1+D1,C 21 =0+D2,C 31 =0+D3,C 41 =1+D4,C 51 =0+D5]; [Encoding identifier=2, C] 02 =0+D0,C 12 =2+D1,C 22 =0+D2,C 32 =0+D3,C 42 =0+D4,C 52 =0+D5]; [Encoding identifier=3, C] 03=1+D0,C 13 =3+D1,C 23 =0+D2,C 33 =0+D3,C 43 =1+D4,C 53 =0+D5].
[0058] Through the above process, it can be seen that the logical paths corresponding to different path codes are independent of each other, and there is essentially no overlap between the logical paths corresponding to different path codes. This allows for the full utilization of bandwidth by leveraging the characteristics of equivalent multipath in data center networks. Physically, in a network with two access links, bandwidth can be increased by up to 100%, and in a network with N access links, bandwidth can be increased by up to (N-1)*100%. In congested scenarios during production operations, multiple independent logical paths can significantly increase the available bandwidth of connections, with an average increase of over 100%. Furthermore, due to the independence of the logical paths, a failure of a server access link may result in a maximum of (H / N) path failures, while a failure of a non-server access link may result in a maximum of one path failure, thus significantly improving the reliability and availability of data transmission.
[0059] Step S304: Based on H path codes, send the target data packet to the target server.
[0060] In this embodiment, a target path code can be obtained from H path codes. Specifically, path scheduling can be performed on the H path codes to obtain the target path code. Based on the target path code, the target data packet is sent to the target server. The path scheduling can include, but is not limited to, congestion scheduling, equal scheduling (scheduling so that each path code's corresponding independent data path sends data packets of the same amount), or random scheduling.
[0061] Among them, see Figure 4 As shown, Figure 4 This is a schematic diagram of an independent path provided in an embodiment of this application, such as... Figure 4 As shown, servers 0 to 15 can include multiple independent physical paths, which can be considered to correspond to the logical paths corresponding to H path codes. For example, taking the LU type as an example, C 00 =0 is used to indicate a reference to access layer switch 12, C. 01 =1 is used to indicate a reference to access layer switch 13, C. 02 =0 is used to indicate a reference to access layer switch 12, C. 03 =1 is used to indicate a reference to access layer switch 13, etc. See below for details: ① Figure 4 The path indicated by the black solid line in the figure can be server 0 → access layer switch 12 → aggregation layer switch 8 → core layer switch 0 / 1 → aggregation layer switch 32 → access layer switch 38 → server 15. ②For example Figure 4 The path indicated by the short black dashed line in the diagram can be: Server 0 → Access Layer Switch 13 → Aggregation Layer Switch 9 → Core Layer Switch 2 / 3 → Aggregation Layer Switch 33 → Access Layer Switch 39 → Server 15. ③ For example Figure 4 The path indicated by the long black dashed line in the image can be: Server 0 → Access Layer Switch 12 → Aggregation Layer Switch 10 → Core Layer Switch 4 / 5 → Aggregation Layer Switch 34 → Access Layer Switch 38 → Server 15. ④ For example Figure 4 The path indicated by the black dotted line in the diagram can be: Server 0 → Access Layer Switch 13 → Aggregation Layer Switch 11 → Core Layer Switch 6 / 7 → Aggregation Layer Switch 35 → Access Layer Switch 39 → Server 15.
[0062] See Figure 5 , Figure 5 This is another physical path diagram provided in an embodiment of this application. For example... Figure 5 As shown, assuming the number of independent links for a server is 1, then there can be multiple independent physical paths between server 0 and server 15. These multiple physical paths can be as follows: ① Figure 5 The path indicated by the black solid line in the figure can be server 0 -> access layer switch 12 -> aggregation layer switch 8 -> core layer switch 0 / 1 -> aggregation layer switch 32 -> access layer switch 39 -> server 15. ②For example Figure 5 The path indicated by the short black dashed line in the diagram can be: Server 0 → Access Layer Switch 12 → Aggregation Layer Switch 9 → Core Layer Switch 2 / 3 → Aggregation Layer Switch 33 → Access Layer Switch 39 → Server 15. ③ For example Figure 5 The path indicated by the long black dashed line in the image can be: Server 0 → Access Layer Switch 12 → Aggregation Layer Switch 10 → Core Layer Switch 4 / 5 → Aggregation Layer Switch 34 → Access Layer Switch 39 → Server 15. ④ For example Figure 5The path indicated by the black dotted line in the diagram can be: Server 0 → Access Layer Switch 12 → Aggregation Layer Switch 11 → Core Layer Switch 6 / 7 → Aggregation Layer Switch 35 → Access Layer Switch 39 → Server 15.
[0063] Specifically, the source server can obtain the initial data packet, perform path scheduling on H path codes to obtain the target path code, and send the target data packet to the target server based on the target path code. Specifically, a path information field can be generated based on the target path code. This path information field is added to the header of the initial data packet to generate the target data packet. The segment code value of the local uplink (i.e., local uplink type, LU type) is obtained from the target path code. Based on the segment code value of the local uplink, the independent link corresponding to the local uplink is determined; that is, the independent link is determined from the access links corresponding to the local uplink. The local uplink refers to the link type from the source server to the access layer switch (i.e., the source access layer switch). For example, assuming the obtained target path code is path code 2, the segment code value of the local uplink (or local uplink type) is obtained from path code 2 as 0 (i.e., C). 02 =0), based on the segment code value corresponding to this local uplink, the independent link corresponding to the local uplink is determined to be "Server 0 -> Access Layer Switch 12". This independent link corresponding to the local uplink can be considered as a physical link from the server to the access layer. Based on the independent link corresponding to the local uplink, the target data packet is sent to the access layer switch (here referring to the source access layer switch). Taking the above path coding 2 as an example, the source access layer switch is access layer switch 12, so that the access layer switch (here referring to the source access layer switch) sends the target data packet to the target server based on the path information field in the target data packet. Specifically, the sending process of the target data packet by the source access layer switch can be found in [link to documentation]. Figure 6 .
[0064] Optionally, when scheduling the H path codes to obtain the target path code, a request is made to send a data packet to the polling data path. The independent data paths corresponding to the H path codes include the polling data path. The polling data path refers to the currently polled data path (i.e., the logical path). For example, this polling data path is denoted as data path k, where k is a positive integer less than or equal to H. The idle bandwidth of this polling data path can be obtained. If the idle bandwidth is greater than or equal to the data transmission threshold, the polling data path is determined to meet the bandwidth transmission condition; if the idle bandwidth is less than the data transmission threshold, the polling data path is determined not to meet the bandwidth transmission condition. Alternatively, the available bandwidth of the polling data path can be obtained. If the available bandwidth is greater than the data packet space occupied by the initial data packet, the polling data path is determined to meet the bandwidth transmission condition; if the available bandwidth is less than or equal to the data packet space occupied by the initial data packet, the polling data path is determined not to meet the bandwidth transmission condition. Alternatively, each of the H path codes corresponds to a path control module. This path control module is used to schedule the corresponding path code. If the path control module corresponding to the polled data path grants permission to send data, then the polled data path is determined to meet the bandwidth transmission condition; if the path control module corresponding to the polled data path rejects data transmission, then the polled data path is determined to not meet the bandwidth transmission condition, and so on. Alternatively, the historical transmission count of the historical data packets transmitted by the independent data paths corresponding to the H path codes can be obtained. If the historical transmission count of the polled data path is less than the maximum value among the H historical transmission counts, then the polled data path is determined to meet the bandwidth transmission condition; if the historical transmission count of the polled data path is the maximum value among the H historical transmission counts, then the polled data path is determined to not meet the bandwidth transmission condition, and so on. No restrictions are imposed here.
[0065] Furthermore, if the polling data path meets the bandwidth transmission condition, the path code corresponding to the polling data path is determined as the target path code, and the next independent data path of the polling data path is determined as the polling data path. If the polling data path does not meet the bandwidth transmission condition, the next independent data path of the polling data path is determined as the polling data path, and the process of requesting to send data packets to the polling data path is returned. For example, if the polling data path is data path k, and the polling data path meets the bandwidth transmission condition, the path code corresponding to data path k is determined as the target path code, the target data packet is sent to the target server based on the target path code, and the polling data path is switched to the next independent data path, i.e., k = (k+1)%H is executed for the next round of data packet sending. If the polling data path does not meet the bandwidth transmission condition, the polling data path is switched to the next independent data path, i.e., k = (k+1)%H is executed, and the process of requesting to send data packets to the polling data path is re-executed.
[0066] For example, please see Figure 6 , Figure 6 This is a schematic diagram of a path scheduling scenario provided in an embodiment of this application, such as... Figure 6 As shown, there are H path codes, assuming H is 4. These H path codes correspond to independent data path 1 (i.e., logical path 1), independent data path 2 (i.e., logical path 2), independent data path 3 (i.e., logical path 3), and independent data path 4 (i.e., logical path 4), respectively. The target path code can be determined from these H path codes. Based on the segment code value corresponding to the local uplink in the target path code, the independent link corresponding to the local uplink can be determined. For example, assuming the path code corresponding to logical path 2 is determined to be the target path code, then access link 2 is determined to be the independent link corresponding to the local uplink. Optionally, this cyclic path scheduling can be as follows: Figure 6 As shown by the dotted lines, "Logical path 1 -> Logical path 2 -> Logical path 3 -> Logical path 4 -> Logical path 1", etc., are not restricted here.
[0067] Through the above process, the source server can evenly distribute the transmission load across multiple independent logical paths (i.e., independent data paths). The actual load within each logical path can be controlled by the path control module, or by the path scheduling process. This allows for better utilization of network bandwidth, achieving load balancing and improving data transmission efficiency and path availability. For example, if logical paths 1 to 4 correspond to theoretical rates of 3Gbps, 2Gbps, 4Gbps, and 1Gbps respectively, then the actual transmission bandwidth of these four logical paths is equal to their theoretical rates. The total bandwidth at the sending end is the total transmission bandwidth of these logical paths, 10Gbps, significantly increasing the available bandwidth of the paths.
[0068] When generating the path information field based on the target path code, the hop count corresponding to the source server can be obtained. The target path code and the hop count corresponding to the source server are then used to generate the path information field. Alternatively, since the source server will determine the target path code and generate the target data packet, and then send the target data packet to the source access layer switch, it can be assumed that the segmentation code value of the local uplink (i.e., the link type corresponding to the source server) will not be used in subsequent data transmissions. The target code identifier and the segmentation code value of the link type pointed to by one or more path switches in the f link types can be obtained from the target path code; one or more path switches include access layer switches. Figure 1a or Figure 4In the network topology shown, one or more path switches include a source access layer switch, a source aggregation layer switch, a core layer switch, a target aggregation layer switch, and a target access layer switch. The link type pointed to by the source access layer switch is EU type, the link type pointed to by the source aggregation layer switch is AU type, the link type pointed to by the core layer switch is CD type, the link type pointed to by the target aggregation layer switch is AD type, and the link type pointed to by the target access layer switch is ED type. The hop count corresponding to the source server is obtained. The target encoding identifier, the segmentation code value of the link type pointed to by one or more path switches in the f link types, and the hop count corresponding to the source server are used to generate a path information field, which reduces the data size of the data packets to a certain extent.
[0069] Optionally, the path information field may include a transmission hop number segment and an encoding field. Optionally, the path information field may also include an encoding identifier field. The encoding field is determined based on the target path encoding indicated by the path information field; that is, it is a field obtained from the target path encoding during the generation of the path information field; or it is a field obtained from the target encoding identifier and the segmentation code value of the link type pointed to by one or more path switches in the f link types, etc. For example, please refer to... Figure 7 , Figure 7 This is a schematic diagram of a path information field provided in an embodiment of this application. For example... Figure 7 As shown, with Figure 1a or Figure 4 The network topology shown in the figure indicates that the path information field may include an encoding identifier field 701, a transmission hop number field 702, an EU type field 703, an AU type field 704, a CD type field 705, an AD type field 706, and an ED type field 707. The encoding identifier field 701 represents the encoding identifier of the target path encoding. The transmission hop number field 702 represents the number of hops the target data packet has currently traversed. For example, the value of the transmission hop number field 702 can be initialized, such as setting it to 0, to indicate that the target data packet has not yet been transmitted. The EU type field 703, AU type field 704, CD type field 705, AD type field 706, and ED type field 707 constitute the encoding field. The width of each field included in the path information field can vary, for example... Figure 7 In this context, the width of each field (such as the encoding identifier field 701, the transmission hop number field 702, and the encoding field, etc.) can be 4 bits, 8 bits, or 16 bits, etc., and there is no restriction here.
[0070] Furthermore, the source server can also check and maintain the independent data paths corresponding to the H path codes. These independent data paths can be considered as logical paths; see details in [link to documentation]. Figure 8 , Figure 8 This is a schematic diagram of a path checking process provided in an embodiment of this application. Figure 8 As shown, the process may include the following steps: In step S801, the source server sends heartbeat packets to the target server in the independent data paths corresponding to the H path codes, based on the heartbeat detection period.
[0071] In this embodiment, the source server can periodically send heartbeat packets to the target server in each independent data path corresponding to each path code. If the target server receives the heartbeat packet, it will send heartbeat acknowledgment data (HACK) to the source server. The acknowledgment data is called the acknowledgment character, or ACK for short. If the source server receives the HACK, it determines that the H path codes are normal; that is, the H path codes can be considered to be in a normal path state, or in other words, the H path codes are normal path codes. Since the source server knows which path code the heartbeat packet is based on when sending it, if it receives the HACK corresponding to that heartbeat packet, it can determine that the path code that sent the heartbeat packet is a normal path code. Further, see step S802. For example, suppose a heartbeat packet is sent to the target server based on the independent data path corresponding to the j-th path code. If a HACK is received from the target server for the heartbeat packet corresponding to the j-th independent data path, then the j-th path code is determined to be a normal path code.
[0072] Step S802: If the heartbeat confirmation time threshold is exceeded and the source server does not receive the heartbeat confirmation data sent by the target server, then the path status of the H independent data paths is updated to path check status.
[0073] In this embodiment, if the heartbeat confirmation time threshold is exceeded and the source server does not receive heartbeat confirmation data sent by the target server, the path status of the H independent data paths is updated to path check status. Specifically, the source server can obtain the data path to be detected corresponding to the heartbeat packet that exceeds the heartbeat confirmation time threshold, and update the path status of the data path to be detected to path check status. The H independent data paths include the data path to be detected. The path check status indicates that the data path to be detected may have a fault, but does not necessarily have a fault, and further inspection is required. For example, suppose the source server sends a heartbeat packet to the target server based on the independent data path corresponding to the j-th path encoding. If the heartbeat confirmation time threshold is exceeded and the source server does not receive a HACK from the target server for the heartbeat packet corresponding to the j-th independent data path, the path status of the j-th independent data path is updated to path check status. At this time, the j-th independent data path is the path to be detected.
[0074] Step S803: In the path check state, detect and process H independent data paths.
[0075] In this embodiment, during the path checking state, the source server can perform detection processing on the data path to be detected. If an anomaly is detected in the data path to be detected, it is determined that the data path to be detected is an abnormal data path, that is, there is an abnormal data path among the H independent data paths. For example, assuming the data path to be detected is the j-th independent data path, the source server can send a check packet to the target server based on the j-th independent data path; j is a positive integer less than or equal to H. If the target server receives the check packet, the target server will send a check packet acknowledgement character (CACK) to the source server for the check packet. Specifically, the target server will reply with a CACK for all independent data paths. Therefore, when the source server receives the CACK from the target server for the check packet, it can be considered that the target server can receive data based on the j-th independent data path, that is, the forward data path of the j-th independent data path is normal. Specifically, if the source server receives the check confirmation data sent by the target server, it indicates that the target server has received the check packet sent by the source server, confirms that the forward data path of the j-th independent data path is normal, and waits for the reverse data path of the j-th independent data path to be updated. If the reverse data path of the j-th independent data path is normal after the update, the j-th independent data path is determined to be a normal data path. If the source server does not receive the heartbeat confirmation data sent by the target server after the check confirmation time threshold, it indicates that the target server has not received the check packet sent by the source server based on the j-th independent data path, and the forward data path of the j-th independent data path is abnormal. The path status of the j-th independent data path can be updated to the path probe status, and the j-th independent data path is determined to be an abnormal data path. The path probe status is used to indicate that there is a fault in the path switch corresponding to the j-th independent data path.
[0076] Step S804: If there is an abnormal data path among the H independent data paths, then update the abnormal data path.
[0077] In this embodiment, if an abnormal data path exists among the H independent data paths, the abnormal path code corresponding to the abnormal data path is obtained; the path status of the abnormal data path is the path probing status. Further, the f segment code values included in the abnormal path code can be updated respectively to obtain f updated path codes. Based on the f updated path codes, a probe packet is sent to the target server. If the source server does not receive the probe packet acknowledge character (PACK) for each of the f updated path codes, the abnormal path code is determined to be invalid. Optionally, the source server can send an encoding abnormality message to the management device. This encoding abnormality message can include the abnormal path code. Upon receiving the encoding abnormality message, the management device can change the source port number or target port number in the 5-tuple based on the encoding abnormality message and restart the probing process, i.e., send a path probing message to the source server. This path probing message includes the abnormal data path and the updated source port number or target port number, etc. The source server can re-probe the abnormal data path based on the updated source port number or target port number. If a PACK is received from the target server, the abnormal path code in the H path codes is replaced with the updated path code corresponding to the PACK, resulting in the updated H path codes. Optionally, the process of probing the segment code values corresponding to the f link types in the abnormal data path can be performed sequentially from the target server to the source server, or sequentially from the source server to the target server. Optionally, the link types with a single independent link and non-cluster access can be excluded from probing. The core layer interacts on a plane basis; the aggregation layer to the core layer corresponds to a plane within the core layer. This plane can include at least one core layer switch. In this case, the number of independent links from the aggregation layer to the core layer (i.e., AU type) can be considered as one, but it is a cluster access.
[0078] Specifically, the updated segment code value corresponding to the segment code value of the i-th link type in the abnormal path code can be obtained, and the segment code value corresponding to the i-th link type in the abnormal path code can be updated to the updated segment code value to obtain the updated path code i corresponding to the abnormal data path; i is a positive integer less than or equal to f. For example, a probe offset can be added to the segment code value corresponding to the i-th link type in the abnormal path code to obtain the updated segment code value. In the updated data path i corresponding to the updated path code i, the source server sends a probe packet to the target server. If the target server receives probe confirmation data for the probe packet, the abnormal path code in the H path codes is replaced with the updated data path i to obtain the updated H path codes, and the path status of the abnormal data path is updated to the normal path status. If the source server does not receive probe confirmation data for the probe packet from the target server after the probe confirmation time threshold, the (i+1)-th link type is probed, and the initial value of i is 1, or the (i-1)-th link type is probed, and the initial value of i is f. When all link types corresponding to the f link types in the abnormal path coding have been detected and the abnormal data path is in the path detection state, the abnormal path coding is determined to be invalid coding.
[0079] For example, suppose the obtained exception encoding path is [encoding identifier=1, C] 01 =1, C 11 =1, C 21 =0, C 31 =0, C 41 =1, C 51 =0], where, assuming the number of independent links of CD type and ED type is 1, and non-cluster access, then C can be omitted. 31 =0 and C 51 The detection is performed at =0 (i.e., the 4th and 6th segment code values). Specifically, assuming the detection offset is 1, the detection process can be as follows: 1) Change the 5th segment code value to obtain the update path code 5 corresponding to the abnormal data path [code identifier=1, C] 01 =1, C 11 =1, C 21 =0, C 31 =0, C 41 =1+1,C 51=0], using the updated path code 5, a probe packet is sent to the target server. If a PACK is received for the probe packet, it is determined that the target access layer switch is abnormal. The abnormal data path in the H path codes can be replaced with the updated path code 5, and the path status of the replaced abnormal data path is updated to the normal path status. If the source server does not receive probe confirmation data from the target server for the probe packet after the probe confirmation time threshold, it means that the updated path code 5 is unavailable, and 2) is executed.
[0080] 2) Change the third segment code value to obtain the update path code 3 corresponding to the abnormal data path [code identifier=1, C] 01 =1, C 11 =1, C 21 =0+1, C 31 =0, C 41 =1, C 51 =0], using the updated path code 3, a probe packet is sent to the target server. If a PACK for the probe packet is received, it is determined that there is an anomaly in the core layer switch. The abnormal data path in the H path codes can be replaced with the updated path code 3, and the path status of the replaced abnormal data path is updated to the normal path status. If the source server does not receive probe confirmation data from the target server for the probe packet after the probe confirmation time threshold, it means that the updated path code 3 is unavailable, and 3) is executed.
[0081] 3) Change the second segment code value to obtain the update path code 2 corresponding to the abnormal data path [code identifier = 1, C] 01 =1, C 11 =1+1,C 21 =0, C 31 =0, C 41 =1, C 51 =0], using the updated path code 2, a probe packet is sent to the target server. If a PACK is received for the probe packet, it is determined that there is an anomaly in the source aggregation layer switch. The abnormal data path in the H path codes can be replaced with the updated path code 2, and the path status of the replaced abnormal data path is updated to the normal path status. If the source server does not receive probe confirmation data from the target server for the probe packet after the probe confirmation time threshold, it means that the updated path code 2 is unavailable, and step 4 is executed.
[0082] 4) Change the first segment code value to obtain the update path code 1 corresponding to the abnormal data path [code identifier = 1, C 01 =1+1,C 11 =1, C 21 =0, C 31 =0, C 41 =1, C51 =0], using the updated path code 1, a probe packet is sent to the target server. If a PACK is received for the probe packet, it is determined that the source access layer switch is abnormal. The abnormal data path in the H path codes can be replaced with the updated path code 1, and the path status of the replaced abnormal data path can be updated to the normal path status. If the source server does not receive probe confirmation data from the target server for the probe packet after the probe confirmation time threshold, it means that the updated path code 1 is unavailable, and step 5 is executed.
[0083] 5) At this point, the detection of the abnormal path code is complete. The abnormal path code can be considered invalid, and an encoding error message can be sent to the management device.
[0084] Setting the probe offset to 1 can be seen as a way to cyclically select the next candidate outgoing port on the path switch.
[0085] The above process can significantly improve the recovery speed of path failures. Specifically, when encountering path anomalies, the abnormal path code can be changed to quickly and effectively bypass the abnormal path switch. This is equivalent to probing various link types, which can bypass the failure of a single switch. At the same time, as long as there is an available physical path in the network, it can be found relatively quickly to maintain the connection and improve the reliability and availability of data transmission.
[0086] In this embodiment, the source server can obtain f link types; f is a positive integer; a link type refers to the type of link traversed in a single data hop; obtain the number of independent links corresponding to each of the f link types, and perform H encodings on each of the f link types based on the number of independent links to obtain H segment code values corresponding to each of the f link types; H is a positive integer; based on the encoding order of the H encodings, combine the H segment code values corresponding to each of the f link types into H path codes; each path code includes one segment code value corresponding to each of the f link types; based on the H path codes, send the target data packet to the target server. Through the above process, f link types can be determined. That is, when a data packet is sent completely between a node pair (i.e., the source server and the destination server), the types of links it passes through are determined. By encoding each of these link types with the number of independent links, a path code representing the logical path of data packet transmission between the source server and the destination server can be obtained. This path code can be considered as an indication of the actual physical path between the source server and the destination server. Since this encoding is based on the number of independent links, the resulting path codes are independent of each other, and different path codes are essentially non-overlapping. This allows data packet transmission to be directly based on existing path codes, thereby maximizing bandwidth utilization and transmission reliability.
[0087] Further, see Figure 9 , Figure 9 This is a schematic diagram of a switch data transmission process provided in an embodiment of this application, such as... Figure 9 As shown, the path switch can be any switch that receives the target data packet, such as... Figure 1a In the network topology shown, the path switch can be any one of the following: an access layer switch (or source access layer switch) on the source server side, an aggregation layer switch (or source aggregation layer switch) on the source server side, a core layer switch, an aggregation layer switch (or target aggregation layer switch) on the target server side, or an access layer switch (or target access layer switch) on the target server side. The process may include the following steps: Step S901: The path switch acquires the target data packet.
[0088] In this embodiment, the path switch acquires the target data packet. For example, if the path switch is a source access layer switch, it acquires the target data packet sent by the source server; if the path switch is a source aggregation layer switch, it acquires the target data packet sent by the source access layer switch; if the path switch is a core layer switch, it acquires the target data packet sent by the source aggregation layer switch; if the path switch is a target aggregation layer switch, it acquires the target data packet sent by the core layer switch; and if the path switch is a target access layer switch, it acquires the target data packet sent by the target aggregation layer switch. The target data packet is sent by the source server based on H path codes. The H path codes are composed of H segment code values corresponding to each of the f link types, based on the encoding order of H encodings. The H segment code values corresponding to each of the f link types are obtained by the source server performing H encodings on each of the f link types based on the number of independent links corresponding to each of the f link types. A link type refers to the type of link traversed in a single data hop; f is a positive integer; and H is a positive integer.
[0089] Step S902: Based on the target path encoding indicated by the target data packet, send the target data packet to the target server.
[0090] In this embodiment, the path switch can obtain the path information field and the 5-tuple from the target data packet. Based on the path information field and the 5-tuple, it determines the target outgoing port from the candidate outgoing ports associated with the path switch. The path information field is used to indicate the target path encoding. Specifically, the path information field includes a transmission hop number segment and an encoding field; the value of the encoding field is determined according to the target path encoding indicated by the path information field. The path switch can update the value of the transmission hop number segment in the path information field to obtain the updated hop count. That is, the value 'hop' of the transmission hop number segment is updated to indicate that the target data packet has undergone one data hop, i.e., hop = hop + 1. For example, taking the source access layer switch as an example, if the value of the transmission hop number segment received by the access layer switch is 0, the value of the transmission hop number segment is updated to 1. Further, the first hash of the 5-tuple can be obtained to obtain the target segment code value corresponding to the updated hop count in the encoding field. The execution order of the two is not restricted here. Specifically, the target segment code value corresponding to the updated hop count in the encoding field can be obtained. For example, assuming the encoding field is "C 11 =1, C 21 =0, C 31 =0, C 41 =1, C 51If the value is 0 and the update hop count is 1, then the target segment code value corresponding to the update hop count, which is C, is retrieved from this encoding field. hop The corresponding segment code value is denoted as ind, i.e., "C". 11 =1". Specifically, the 5-tuple (source IP, destination IP, source port number, destination port number, and protocol number) can be obtained from the target data packet. Equivalent multipath hashing is then performed on the 5-tuple to obtain its first hash (shift). Optionally, the initial hash value of the 5-tuple can be obtained, and the offset between this initial hash value and the candidate number can be determined as the first hash of the 5-tuple. Alternatively, the first hash of the 5-tuple can be obtained directly. Further, the target outgoing port can be determined from the candidate outgoing ports associated with the path switch based on the first hash and the target segment code value. Specifically, the candidate number S of the candidate outgoing ports associated with the path switch can be obtained, and the first hash and the target segment code value can be obtained. The sum of the code values. Optionally, the path switch can maintain a candidate outgoing port list V, which includes candidate outgoing ports corresponding to devices in the next network topology layer of the path switch. The number S of candidate outgoing ports included in the candidate outgoing port list V is obtained, where S = |V|. Further, the candidate outgoing port corresponding to the remainder between the sum of the data and the number of candidates is determined as the target outgoing port. That is, the remainder between the sum of the data and the number of candidates is determined as the outgoing port index, and the candidate outgoing port corresponding to this index is determined as the target outgoing port. Wherein, outgoing port index = (ind + shift) % S. Taking the above example, ind = C 11 =1, assuming the candidate output port list V=[a, b, c, d], S=|V|=4, assuming the first hash shift is 2, then the output port index = (ind+shift)%S=(1+2)%4=3, and the candidate output port corresponding to the output port index, i.e., V[output port index]=V[3]=d.
[0091] Furthermore, based on the target egress port, the target data packet is sent to the target server. Specifically, based on the target egress port, the target data packet is sent to the device in the next network topology layer of the path switch. That is, the path switch to the device in the next network topology layer indicated by the target egress port constitutes a physical link. For example, assuming the path switch is a source access layer switch, the target data packet can be sent to the source aggregation layer switch based on the target egress port; assuming the path switch is a source aggregation layer switch, the source aggregation layer switch, upon receiving the target data packet, can... Figure 9In each step of the process, the target output port corresponding to the source aggregation layer switch is determined, and based on the target output port corresponding to the source aggregation layer switch, the target data packet is sent to the core layer switch; ...; assuming that the path switch is the target access layer switch, the target access layer switch receives the target data packet sent by the target aggregation layer switch and can, based on... Figure 9 Each step in the process involves determining the target outgoing port corresponding to the target access layer switch, and then sending the target data packet to the target server based on the target outgoing port. For example... Figure 4 As shown in the figure, it is assumed that the source access layer switch (i.e. access layer switch 12) maintains a candidate outgoing port list V, V=[8, 9, 10, 11]. Assuming that the target outgoing port is determined to be 8, the target data packet can be sent to the aggregation layer switch 8 based on the target outgoing port 8. A physical link is formed between the access layer switch 12 and the aggregation layer switch 8.
[0092] Since different data streams have different 5-tuples, even if different data streams correspond to the same path code, after the first hash offset of the 5-tuple, they can be distributed across different candidate output ports, resulting in a good load balancing effect. Furthermore, within a transmission unit, path switches at the same network topology layer use the same hash function and hash seed. For example, the four access layer switches in transmission unit 0 need to use the same hash function and hash seed, and the four aggregation layer switches in transmission unit 0 need to use the same hash function and hash seed, etc.
[0093] Furthermore, the source server and the destination server are relative; the destination server can also send data packets or ACK packets to the source server using H path codes. Specifically, when the destination server receives a target data packet, it can obtain the target code identifier from the target data packet, obtain the acknowledgment path code based on the target code identifier, and send a data acknowledgment packet for the target data packet to the source server based on the independent data path corresponding to the acknowledgment path code. The sending process of this data acknowledgment packet is the same as the sending process of the target data packet described above. Optionally, when the destination server sends a data packet to the source server, the destination server at this time can be considered as the source server; the specific sending process can be found above. Figure 3 and Figure 9 The data transmission process is shown.
[0094] In this embodiment, the combination of 5-tuples and path coding can achieve more adequate load balancing, improve network utilization, alleviate the pressure on bottlenecks in multi-path schemes, reduce network traffic problems (such as packet loss), and lower the probability of network failure.
[0095] Further, see Figure 10, Figure 10 This is a schematic diagram of a data interaction scenario provided in an embodiment of this application. For example... Figure 10 As shown, this application can be applied to data center networks, and may include end-side (servers) and network-side (switches, etc.), such as... Figure 10 As shown, source server 1001, path switch 1003, and destination server 1005, etc. Optionally, this end-side can operate at the transport layer, etc. In this application, the number of packets sent on each independent data path is proportional to the available bandwidth of that independent data path, and the total bandwidth of the data stream that can be transmitted between the node pairs is equivalent to the sum of the available bandwidths of the independent data paths between the node pairs. Specifically, ① source server 1001 can perform path scheduling, such as congestion scheduling, equal scheduling (scheduling so that each path-coded independent data path sends the same amount of data packets), or random scheduling, etc. For details, please refer to [link to relevant documentation]. Figure 3 The relevant description in step S304 assumes that the target path code is obtained, and the target outgoing port of source server 1001 is obtained as 1 based on the target path code, or the target outgoing port of source server 1001 is obtained as 1 based on the target path code and the 5-tuple. A path information field is generated based on the hop count and the target path code, and the path information field is added to the header of the initial data packet to generate target data packet 1002. Specifically, target data packet 1002 can be found in target data packet 1004. The source server sends the target data packet to the path switch based on the target outgoing port of the source server, specifically to the path switch indicated by the next network topology layer of the source server. ② Taking a path switch 1003 as an example, path switch 1003 can obtain the 5-tuple from the target data packet 1004 and perform route mapping on the 5-tuple, as shown by the solid line in ②, that is, obtain the first hash of the 5-tuple. The value of the hop count field is updated, that is, the hop count hop = hop + 1 is obtained, and the updated hop count can be considered as the current hop count. Obtain the target segment code value corresponding to the update hop number from the target data packet. For example, assuming the update hop number is 3, corresponding to the CD type, the target segment code value of the CD type field corresponding to update hop number 3 can be used for route mapping, as shown by the dotted line in ②. Based on the first hash and the target segment code value, determine the target outgoing port, assumed to be outgoing port d. See details in [link to documentation]. Figure 9 The relevant description is shown in step S902. The target data packet can continue to be sent based on the target outgoing port. The processing of the target data packet by other path switches along the route can be seen in ②. Finally, the target data packet is sent to the target server 1005.
[0096] Furthermore, ③ the target server 1005 can obtain the target encoding identifier from the target data packet 1006, perform path scheduling based on the target encoding identifier, and determine the target outgoing port of the target server, assuming the determined target outgoing port is 1. Here, target data packet 1006 is an abbreviation, and other fields include all fields not explicitly represented in the target data packet, such as partial encoding fields, transmission hop number segments, etc. Different labels are used for the target data packets in this application because the value of the transmission hop number segment changes based on the number of data hops during transmission, while the actual structure and specific content of the target data packet remain unchanged. ④ The target server 1005 can generate a data acknowledgment packet 1007 for the target data packet based on the target encoding identifier, and send the data acknowledgment packet 1007 to the source server 1001 based on the target encoding identifier, such as... Figure 10 The process indicated by the dashed lines between the various devices, and the transmission process of the data acknowledgment packet 1007 can be found in the transmission process of the target data packet 1002.
[0097] Further, please see Figure 11 , Figure 11 This is a schematic diagram of a multipath transmission device provided in an embodiment of this application. The multipath transmission device can be a computer program (including program code, etc.) running on a computer device; for example, the multipath transmission device can be application software. This device can be used to execute corresponding steps in the method provided in the embodiments of this application. Figure 11 As shown, the multipath transmission device 1100 can be used for Figure 3 Specifically, the computer device in the corresponding embodiment may include: a link acquisition module 11, a link encoding module 12, an encoding generation module 13, and a data transmission module 14.
[0098] Link acquisition module 11 is used by the source server to acquire f link types; f is a positive integer; a link type refers to the type of link traversed in a single data hop; Link coding module 12 is used to obtain the number of independent links corresponding to each of the f link types, and to perform H encoding operations on each of the f link types based on the number of independent links to obtain H segment code values corresponding to each of the f link types; H is a positive integer; The encoding generation module 13 is used to form H path codes from the H segment code values corresponding to the f link types based on the encoding order of H encodings; each path code includes a segment code value corresponding to the f link types. The data sending module 14 is used to send the target data packet to the target server based on H path encodings.
[0099] The link coding module 12 includes: Data acquisition unit 121 is used to acquire the number of independent links corresponding to the i-th link type among f link types; The first coding unit 122 is used to encode the i-th link type H times using p to q if the number of independent links corresponding to the i-th link type is greater than or equal to H, so as to obtain H segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f; the difference between p and q is H-1, and q is greater than p; The second coding unit 123 is used to cyclically encode the i-th link type by using the number of independent links corresponding to the i-th link type if the number of independent links corresponding to the i-th link type is less than H, so as to obtain H segment code values corresponding to the i-th link type. The code value acquisition unit 124 is used to obtain H segment code values corresponding to f link types when i is f.
[0100] The link coding module 12 includes: The initial encoding unit 125 is used to obtain the number of independent links corresponding to the i-th link type among the f link types, and based on the number of independent links corresponding to the i-th link type, to perform H encodings on the i-th link type to obtain H initial segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f. The encoding offset unit 126 is used to obtain the encoding offset data corresponding to the i-th link type, and based on the encoding offset data corresponding to the i-th link type, to perform encoding offset processing on the H initial segment code values corresponding to the i-th link type to obtain the H segment code values corresponding to the i-th link type. The code value acquisition unit 124 is also used to obtain H segment code values corresponding to the f link types when i is f.
[0101] The data transmission module 14 includes: Data acquisition unit 141 is used to acquire initial data packets; The path selection unit 142 is used to perform path scheduling on H path codes to obtain the target path code; Information generation unit 143 is used to generate path information fields based on target path encoding; Packet update unit 144 is used to add the path information field to the header of the initial data packet to generate the target data packet; Link selection unit 145 is used to obtain the segment code value of the local uplink from the target path code, and determine the independent link corresponding to the local uplink based on the segment code value of the local uplink; the local uplink refers to the link type from the source server to the access layer switch. The data sending unit 146 is used to send the target data packet to the access layer switch based on the independent link corresponding to the local uplink, so that the access layer switch can send the target data packet to the target server based on the path information field in the target data packet.
[0102] The path selection unit 142 includes: The request sending subunit 1421 is used to request the sending of data packets to the polling data path; the independent data paths corresponding to the H path codes include the polling data path; the polling data path refers to the data path currently being polled. The path determination subunit 1422 is used to determine the path code corresponding to the polling data path as the target path code if the polling data path meets the bandwidth transmission conditions. The path polling subunit 1423 is used to determine the next independent data path of the polling data path as the polling data path if the polling data path does not meet the bandwidth transmission conditions, and return to the process of requesting to send data packets to the polling data path.
[0103] The information generation unit 143 includes: The data determination subunit 1431 is used to obtain the target code identifier from the target path code, and the segment code value of the link type pointed to by one or more path switches in f link types; the one or more path switches include access layer switches; The information component subunit 1432 is used to obtain the number of transmission hops corresponding to the source server, and generate a path information field by combining the target encoding identifier, the segment code value of the link type pointed to by one or more path switches in f link types, and the number of transmission hops corresponding to the source server.
[0104] The device 1100 also includes: The heartbeat sending module 15 is used by the source server to send heartbeat packets to the target server in the independent data paths corresponding to the H path codes, based on the heartbeat detection period. The status update module 16 is used to update the path status of H independent data paths to path check status if the source server does not receive the heartbeat confirmation data sent by the target server after the heartbeat confirmation time threshold is exceeded. The path checking module 17 is used to detect and process H independent data paths in the path checking state; The exception update module 18 is used to update the exception data path if there is an exception data path among the H independent data paths.
[0105] The path checking module 17 includes: The inspection sending unit 171 is used to send an inspection packet from the source server to the target server based on the j-th independent data path during the path inspection state; j is a positive integer less than or equal to H. The normal determination unit 172 is used to determine that the forward data path of the j-th independent data path is normal if the source server receives the check confirmation data sent by the target server, wait for the reverse data path of the j-th independent data path to be updated, and determine the j-th independent data path as a normal data path when the reverse data path after the j-th independent data path is updated is normal. The status update unit 173 is used to update the path status of the j-th independent data path to the path detection status if the source server does not receive the heartbeat confirmation data sent by the target server after the check confirmation time threshold, thus determining that the j-th independent data path is an abnormal data path; the path detection status is used to indicate that there is a fault in the path switch corresponding to the j-th independent data path.
[0106] The exception update module 18 includes: The anomaly acquisition unit 181 is used to acquire the anomaly path code corresponding to the anomaly data path if there is an anomaly data path among the H independent data paths; the path status of the anomaly data path is the path detection status. The update acquisition unit 182 is used to acquire the updated segment code value of the segment code value corresponding to the i-th link type in the abnormal path code, update the segment code value corresponding to the i-th link type in the abnormal path code to the updated segment code value, and obtain the updated path code i corresponding to the abnormal data path; i is a positive integer less than or equal to f; The update probe unit 183 is used to send a probe packet from the source server to the target server in the update data path i corresponding to the update path code i. The encoding update unit 184 is used to replace the abnormal path code in the H path codes with the updated data path i if it receives the probe confirmation data of the target server for the probe packet, so as to obtain the updated H path codes and update the path status of the abnormal data path to the normal path status. The subsequent detection unit 185 is used to detect the (i+1)th link type if the source server does not receive detection confirmation data for the detection packet from the target server after the detection confirmation time threshold has elapsed. The invalid determination unit 186 is used to determine that the abnormal path code is invalid when all the link types corresponding to the f link types in the abnormal path code have been detected and the abnormal data path is in the path detection state.
[0107] This application provides a multipath transmission device that can operate on a server. Any server acting as a source server can obtain f link types, where f is a positive integer; a link type refers to the type of link traversed in a single data hop. The device obtains the number of independent links corresponding to each of the f link types, and performs H encoding operations on each of the f link types based on the number of independent links to obtain H segment code values corresponding to each of the f link types, where H is a positive integer. Based on the encoding order of the H encoding operations, the H segment code values corresponding to each of the f link types are combined to form H path codes; each path code includes one segment code value corresponding to each of the f link types. Based on the H path codes, the target data packet is sent to the target server. Through the above process, f link types can be determined. That is, when a data packet is sent completely between a node pair (i.e., the source server and the destination server), the types of links it passes through are determined. By encoding each of these link types with the number of independent links, a path code representing the logical path of data packet transmission between the source server and the destination server can be obtained. This path code can be considered as an indication of the actual physical path between the source server and the destination server. Since this encoding is based on the number of independent links, the resulting path codes are independent of each other, and different path codes are essentially non-overlapping. This allows data packet transmission to be directly based on existing path codes, thereby maximizing bandwidth utilization and transmission reliability.
[0108] Further, please see Figure 12 , Figure 12 This is a schematic diagram of another multipath transmission device provided in an embodiment of this application. The multipath transmission device can be a computer program (including program code, etc.) running on a computer device; for example, the multipath transmission device can be application software. This device can be used to execute corresponding steps in the method provided in the embodiments of this application. Figure 12 As shown, the multipath transmission device 1200 can be used for Figure 9 Specifically, the computer device in the corresponding embodiment may include a data acquisition module 21 and a data transmission module 22.
[0109] The data acquisition module 21 is used by the path switch to acquire the target data packet. The target data packet is sent by the source server based on H path codes. The H path codes are composed of H segment code values corresponding to each of the f link types, based on the encoding order of H encodings. The H segment code values corresponding to each of the f link types are obtained by the source server performing H encodings on each of the f link types based on the number of independent links corresponding to each of the f link types. A link type refers to the type of link traversed in a single data hop. f is a positive integer. H is a positive integer. The data sending module 22 is used to send the target data packet to the target server based on the target path code indicated by the target data packet; the H path codes include the target path code.
[0110] The data transmission module 22 includes: Packet data acquisition unit 221 is used to obtain path information field and 5-tuple from target data packet; The port determination unit 222 is used to determine the target outgoing port from the candidate outgoing ports associated with the path switch based on the path information field and the five-tuple; the path information field is used to indicate the target path code; The data sending unit 223 is used to send the target data packet to the target server based on the target output port.
[0111] The path information field includes a transmission hop number segment and an encoding field; the value of the encoding field is determined according to the target path encoding indicated by the path information field. The port determination unit 222 includes: The hop count update subunit 2221 is used to update the value of the transmission hop count field in the path information field to obtain the updated hop count; Hash retrieval subunit 2222 is used to retrieve the first hash of the quintuple; Code value acquisition subunit 2223 is used to acquire the target segment code value corresponding to the update hop number in the encoding field; The port determination subunit 2224 is used to determine the target outgoing port from the candidate outgoing ports associated with the path switch based on the first hash and the target segment code value.
[0112] Specifically, the hash acquisition subunit 2222 is used for: Perform equivalent multipath hashing on the quintuple to obtain the first hash of the quintuple; This port identifies subunit 2224, which includes: The quantity acquisition subunit 222a is used to acquire the number of candidate output ports associated with the path switch and to acquire the data sum of the first hash and the target segment code value; The port determination subunit 222b is used to determine the candidate output port corresponding to the remainder between the sum of the data and the number of candidates as the target output port.
[0113] This application provides a multipath transmission device that can operate in any path switch. By combining the five-tuple with path coding, it can achieve more adequate load balancing, improve network utilization, alleviate the pressure on bottlenecks in multipath schemes, reduce network traffic problems (such as packet loss), and lower the probability of network failure.
[0114] See Figure 13 , Figure 13 This is a schematic diagram of the structure of a computer device provided in an embodiment of this application. Figure 13 As shown, the computer device in this embodiment may include one or more processors 1301, a memory 1302, and an input / output interface 1303. The processor 1301, memory 1302, and input / output interface 1303 are connected via a bus 1304. The memory 1302 stores a computer program, which includes program instructions. The input / output interface 1303 receives and outputs data, such as for data interaction between a server and a path switch, and for data interaction between path switches. The processor 1301 executes the program instructions stored in the memory 1302.
[0115] The processor 1301, located in the server, can perform the following operations: The source server obtains f link types; f is a positive integer; a link type refers to the type of link traversed in a single data hop; Obtain the number of independent links corresponding to each of the f link types. Based on the number of independent links, encode each of the f link types H times to obtain H segment code values corresponding to each of the f link types; H is a positive integer. Based on the encoding order of H encodings, H path codes are formed by combining the H segment code values corresponding to the f link types respectively; each path code includes one segment code value corresponding to the f link types respectively. Based on H path codes, the target data packet is sent to the target server.
[0116] The processor 1301 is located in the path switch and can perform the following operations: The path switch acquires the target data packet; the target data packet is sent by the source server based on H path codes; the H path codes are composed of H segment code values corresponding to each of the f link types, based on the encoding order of H encodings; the H segment code values corresponding to each of the f link types are obtained by the source server performing H encodings on each of the f link types based on the number of independent links corresponding to each of the f link types; a link type refers to the type of link traversed in a single data hop; f is a positive integer; H is a positive integer; Based on the target path code indicated by the target data packet, the target data packet is sent to the target server; H path codes include the target path code.
[0117] In some feasible implementations, the processor 1301 may be a central processing unit (CPU), but it can also be other general-purpose processors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. The general-purpose processor may be a microprocessor or any conventional processor.
[0118] The memory 1302 may include read-only memory and random access memory, and provides instructions and data to the processor 1301 and input / output interface 1303. A portion of the memory 1302 may also include non-volatile random access memory. For example, the memory 1302 may also store device type information.
[0119] In practice, the computer device can perform actions such as these through its built-in functional modules. Figure 3 or Figure 9 For details on the implementation methods provided for each step, please refer to [the relevant documentation / document / etc.]. Figure 3 or Figure 9 The implementation methods provided for each step are not elaborated here.
[0120] This application provides a computer device including a processor, an input / output interface, and a memory. The processor retrieves a computer program from the memory and executes it. Figure 3 Each step of the method shown performs multipath transmission operations. The embodiments of this application can determine f link types, that is, the types of links traversed when a data packet is completely transmitted between node pairs (i.e., source server and target server). By encoding each of these link types with the number of independent links corresponding to them, a path code representing the logical path of data packet transmission between the source server and target server can be obtained. This path code can be considered as a representation of the actual physical path between the source server and target server. Since this encoding is based on the number of independent links, the resulting path codes are independent of each other, and different path codes are essentially non-overlapping. This allows data packet transmission to be directly based on existing path codes, thereby maximizing bandwidth utilization and transmission reliability.
[0121] This application also provides a computer-readable storage medium storing a computer program adapted to be loaded and executed by a processor. Figure 3 or Figure 9 For details on the multipath transmission methods provided in each step, please refer to the [link / document / document / etc.]. Figure 3 or Figure 9 The implementation methods provided for each step are not repeated here. Furthermore, the beneficial effects of using the same method are also not repeated. For technical details not disclosed in the computer-readable storage medium embodiments involved in this application, please refer to the description of the method embodiments of this application. As an example, a computer program may be deployed to execute on a single computer device, or on multiple computer devices located in one location, or on multiple computer devices distributed across multiple locations and interconnected via a communication network.
[0122] The computer-readable storage medium can be a multipath transmission device provided in any of the foregoing embodiments or an internal storage unit of the computer device, such as a hard disk or memory of the computer device. The computer-readable storage medium can also be an external storage device of the computer device, such as a plug-in hard disk, smart media card (SMC), secure digital (SD) card, flash card, etc., provided on the computer device. Furthermore, the computer-readable storage medium can include both internal storage units and external storage devices of the computer device. The computer-readable storage medium is used to store the computer program and other programs and data required by the computer device. The computer-readable storage medium can also be used to temporarily store data that has been output or will be output.
[0123] This application also provides a computer program product or computer program, which includes computer instructions stored in a computer-readable storage medium. A processor of a computer device reads the computer instructions from the computer-readable storage medium and executes the computer instructions, causing the computer device to perform... Figure 3 or Figure 9The method provided among the various optional modes allows for the determination of f link types. That is, when a data packet is sent completely between a node pair (i.e., the source server and the destination server), the types of links it traverses are determined. By encoding each of the f link types with the number of independent links corresponding to these link types, a path code representing the logical path of data packet transmission between the source server and the destination server can be obtained. This path code can be considered as an indication of the actual physical path between the source server and the destination server. Since this encoding is based on the number of independent links, the resulting path codes are independent of each other, and different path codes are essentially non-overlapping. This allows data packet transmission to be directly based on existing path codes, thereby maximizing bandwidth utilization and transmission reliability.
[0124] The terms "first," "second," etc., in the specification, claims, and drawings of this application are used to distinguish different objects, not to describe a specific order. Furthermore, the term "comprising," and any variations thereof, are intended to cover non-exclusive inclusion. For example, a process, method, apparatus, product, or device that includes a series of steps or units is not limited to the listed steps or modules, but may optionally include steps or modules not listed, or may optionally include other step units inherent to these processes, methods, apparatuses, products, or devices.
[0125] Those skilled in the art will recognize that the units and algorithm steps of the various examples described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, computer software, or a combination of both. To clearly illustrate the interchangeability of hardware and software, the components and steps of each example have been generally described in terms of functionality. Whether these functions are implemented in hardware or software depends on the specific application and design constraints of the technical solution. Those skilled in the art can use different methods to implement the described functions for each specific application, but such implementations should not be considered beyond the scope of this application.
[0126] The methods and related apparatus provided in this application are described with reference to the method flowcharts and / or structural diagrams provided in this application. Specifically, each block of the method flowcharts and / or structural diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, special-purpose computer, embedded processor, or other programmable multipath transmission device to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable multipath transmission device, create means for implementing the functions specified in one or more blocks of the flowcharts and / or one or more blocks of the structural diagrams. These computer program instructions can also be stored in a computer-readable storage medium capable of directing a computer or other programmable multipath transmission device to operate in a particular manner, such that the instructions stored in the computer-readable storage medium produce an article of manufacture including instruction means that implement the functions specified in one or more blocks of the flowcharts and / or one or more blocks of the structural diagrams. These computer program instructions may also be loaded onto a computer or other programmable multipath transport device to cause a series of operational steps to be performed on the computer or other programmable device to produce a computer-implemented process, such that the instructions, which execute on the computer or other programmable device, provide steps for implementing the functions specified in one or more flowcharts and / or one or more blocks in the structural diagram.
[0127] The steps in the method of this application embodiment can be adjusted, combined, or deleted according to actual needs.
[0128] The modules in the device of this application embodiment can be merged, divided, and deleted according to actual needs.
[0129] The above-disclosed embodiments are merely preferred embodiments of this application and should not be construed as limiting the scope of this application. Therefore, any equivalent variations made in accordance with the claims of this application shall still fall within the scope of this application.
Claims
1. A multipath transmission method, characterized in that, The method includes: The source server obtains f link types; f is a positive integer; a link type refers to the type of link traversed in a data hop. A link type is associated with two types of devices and is used to indicate two network topology levels where data hops occur during data transmission. Obtain the number of independent links corresponding to each of the f link types, and perform H encoding operations on each of the f link types based on the number of independent links to obtain H segment code values corresponding to each of the f link types; H is a positive integer; Based on the encoding order of the H encodings, the H segment code values corresponding to the f link types are used to form H path codes; each path code includes a segment code value corresponding to the f link types. Based on the H path codes, the target data packet is sent to the target server; The step of obtaining the number of independent links corresponding to each of the f link types, and performing H encoding operations on each of the f link types based on the number of independent links to obtain H segment code values corresponding to each of the f link types, includes: Obtain the number of independent links corresponding to the i-th link type among the f link types; If the number of independent links corresponding to the i-th link type is greater than or equal to H, then the i-th link type is encoded H times using p to q to obtain H segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f; the difference between p and q is H-1, and q is greater than p; If the number of independent links corresponding to the i-th link type is less than H, then the number of independent links corresponding to the i-th link type is used to perform cyclic encoding on the i-th link type to obtain H segment code values corresponding to the i-th link type. When i is f, H segment code values corresponding to the f link types are obtained respectively.
2. The method as described in claim 1, characterized in that, The step of obtaining the number of independent links corresponding to each of the f link types, and performing H encoding operations on each of the f link types based on the number of independent links to obtain H segmentation code values corresponding to each of the f link types, further includes: Obtain the number of independent links corresponding to the i-th link type among the f link types. Based on the number of independent links corresponding to the i-th link type, perform H encodings on the i-th link type to obtain H initial segmentation code values corresponding to the i-th link type; i is a positive integer less than or equal to f. Obtain the encoding offset data corresponding to the i-th link type. Based on the encoding offset data corresponding to the i-th link type, perform encoding offset processing on the H initial segment code values corresponding to the i-th link type to obtain the H segment code values corresponding to the i-th link type. When i is f, H segment code values corresponding to the f link types are obtained respectively.
3. The method as described in claim 1, characterized in that, The step of sending the target data packet to the target server based on the H path codes includes: Get the initial data packet; Path scheduling is performed on the H path codes to obtain the target path code, and a path information field is generated based on the target path code; The path information field is added to the header of the initial data packet to generate the target data packet; Obtain the segment code value of the local uplink from the target path code, and determine the independent link corresponding to the local uplink based on the segment code value of the local uplink; the local uplink refers to the link type from the source server to the access layer switch; Based on the independent link corresponding to the local uplink, the target data packet is sent to the access layer switch, so that the access layer switch sends the target data packet to the target server based on the path information field in the target data packet.
4. The method as described in claim 3, characterized in that, The step of scheduling the H path codes to obtain the target path code includes: Send a data packet to the polling data path request; the independent data paths corresponding to the H path codes include the polling data path; the polling data path refers to the currently polled data path; If the polling data path meets the bandwidth transmission condition, then the path code corresponding to the polling data path is determined as the target path code; If the polling data path does not meet the bandwidth transmission conditions, then the next independent data path of the polling data path is determined as the polling data path, and the process of requesting to send data packets to the polling data path is returned.
5. The method as described in claim 3, characterized in that, The path information field generated based on the target path encoding includes: Obtain the target code identifier from the target path code, and the segment code value of the link type to which one or more path switches point in the f link types; the one or more path switches include the access layer switch; Obtain the transmission hop count corresponding to the source server, and generate a path information field by combining the target encoding identifier, the segmentation code value of the link type pointed to by the one or more path switches in the f link types, and the transmission hop count corresponding to the source server.
6. The method as described in claim 1, characterized in that, The method further includes: The source server sends heartbeat packets to the target server in the independent data paths corresponding to the H path codes, based on the heartbeat detection period. If the heartbeat confirmation time threshold is exceeded and the source server does not receive the heartbeat confirmation data sent by the target server, the path status of the H independent data paths will be updated to path check status. In the path inspection state, the H independent data paths are inspected and processed. If there is an abnormal data path among the H independent data paths, then the abnormal data path is updated.
7. The method as described in claim 6, characterized in that, The process of detecting the H independent data paths in the path inspection state includes: In the path check state, the source server sends a check packet to the target server based on the j-th independent data path; j is a positive integer less than or equal to H; If the source server receives the check confirmation data sent by the target server, it determines that the forward data path of the j-th independent data path is normal, waits for the reverse data path of the j-th independent data path to be updated, and when the reverse data path after the update of the j-th independent data path is normal, it determines that the j-th independent data path is a normal data path. If the source server does not receive heartbeat confirmation data from the target server after the check and confirmation time threshold, the path status of the j-th independent data path is updated to path detection status, and the j-th independent data path is determined to be an abnormal data path; the path detection status is used to indicate that there is a fault in the path switch corresponding to the j-th independent data path.
8. The method as described in claim 6, characterized in that, If an abnormal data path exists among the H independent data paths, then updating the abnormal data path includes: If there is an abnormal data path among the H independent data paths, then the abnormal path code corresponding to the abnormal data path is obtained; the path status of the abnormal data path is the path detection status. Obtain the updated segment code value corresponding to the segment code value of the i-th link type in the abnormal path encoding, update the segment code value corresponding to the i-th link type in the abnormal path encoding to the updated segment code value, and obtain the updated path encoding i corresponding to the abnormal data path; i is a positive integer less than or equal to f; In the update data path i corresponding to the update path code i, the source server sends a probe packet to the target server; If the target server receives detection confirmation data for the probe packet, the abnormal path code in the H path codes is replaced with the updated data path i to obtain the updated H path codes, and the path status of the abnormal data path is updated to the normal path status. If the source server does not receive the detection confirmation data for the detection packet from the target server after the detection confirmation time threshold, then the (i+1)th link type is detected. When all link types corresponding to the f link types in the abnormal path code have been detected, and the abnormal data path is in the path detection state, the abnormal path code is determined to be an invalid code.
9. A multipath transmission method, characterized in that, The method includes: The path switch acquires the target data packet; the target data packet is sent by the source server based on H path codes; the H path codes are composed of H segment code values corresponding to f link types respectively, based on the encoding order of H encodings by the source server; the H segment code values corresponding to the f link types are obtained by the source server performing H encodings on the f link types respectively based on the number of independent links corresponding to the f link types; a link type refers to the type of link traversed in a data hop, and a link type is associated with two types of devices, used to indicate two network topology layers where data hops occur during data transmission; the H segment code values corresponding to a link type are obtained by directly performing H encodings on the link type when the number of independent links corresponding to the link type is greater than or equal to H, and by cyclically encoding the link type using the number of independent links corresponding to the link type when the number of independent links corresponding to the link type is less than H; f is a positive integer; H is a positive integer. Based on the target path code indicated by the target data packet, the target data packet is sent to the target server; the H path codes include the target path code.
10. The method as described in claim 9, characterized in that, The step of sending the target data packet to the target server based on the target path encoding indicated by the target data packet includes: The path information field and the five-tuple are obtained from the target data packet. Based on the path information field and the five-tuple, the target outgoing port is determined from the candidate outgoing ports associated with the path switch. The path information field is used to indicate the target path encoding. Based on the target output port, the target data packet is sent to the target server.
11. The method as described in claim 10, characterized in that, The path information field includes a transmission hop number segment and an encoding field; the value of the encoding field is determined according to the target path encoding indicated by the path information field. The step of determining the target outgoing port from the candidate outgoing ports associated with the path switch based on the path information field and the five-tuple includes: The value of the transmission hop number field in the path information field is updated to obtain the updated hop number; Obtain the first hash of the quintuple, and obtain the target segment code value corresponding to the update hop number in the encoding field; Based on the first hash and the target segment code value, the target outgoing port is determined from the candidate outgoing ports associated with the path switch.
12. The method as described in claim 11, characterized in that, Obtaining the first hash of the quintuple includes: Perform equivalent multipath hashing on the quintuple to obtain the first hash of the quintuple; The step of determining the target outgoing port from the candidate outgoing ports associated with the path switch based on the first hash and the target segment code value includes: Obtain the number of candidate outgoing ports associated with the path switch, and obtain the sum of the first hash and the target segment code value; The candidate output port corresponding to the remainder of the sum of the data and the number of candidates is determined as the target output port.
13. A multipath transmission device, characterized in that, The device includes: The link acquisition module is used by the source server to acquire f link types; f is a positive integer; a link type refers to the type of link traversed in a data hop. A link type is associated with two types of devices and is used to indicate two network topology levels where data hops occur during data transmission. The link coding module is used to obtain the number of independent links corresponding to the f link types respectively, and to perform H encoding operations on the f link types based on the number of independent links respectively, to obtain H segment code values corresponding to the f link types respectively; H is a positive integer; The encoding generation module is used to form H path codes from the H segment code values corresponding to the f link types, based on the encoding order of the H encodings; each path code includes a segment code value corresponding to the f link types. The data sending module is used to send the target data packet to the target server based on the H path codes; The link coding module is used for: Obtain the number of independent links corresponding to the i-th link type among the f link types; If the number of independent links corresponding to the i-th link type is greater than or equal to H, then the i-th link type is encoded H times using p to q to obtain H segment code values corresponding to the i-th link type; i is a positive integer less than or equal to f; the difference between p and q is H-1, and q is greater than p; If the number of independent links corresponding to the i-th link type is less than H, then the number of independent links corresponding to the i-th link type is used to perform cyclic encoding on the i-th link type to obtain H segment code values corresponding to the i-th link type. When i is f, H segment code values corresponding to the f link types are obtained respectively.
14. A multipath transmission device, characterized in that, The device includes: The data acquisition module is used by the path switch to acquire target data packets. The target data packets are sent by the source server based on H path codes. The H path codes are composed of H segment code values corresponding to each of the f link types, based on the encoding order of H encodings. The H segment code values corresponding to each of the f link types are obtained by the source server performing H encodings on each of the f link types based on the number of independent links corresponding to each of the f link types. A link type refers to the type of link traversed in a single data hop. A link type associates two types of devices and is used to indicate two network topology levels where data hops occur during data transmission. The H segment code values corresponding to a link type are obtained by directly performing H encodings on the link type when the number of independent links corresponding to that link type is greater than or equal to H, and by cyclically encoding the link type using the number of independent links corresponding to that link type when the number of independent links corresponding to that link type is less than H. f is a positive integer; H is a positive integer. The data sending module is used to send the target data packet to the target server based on the target path code indicated by the target data packet; the H path codes include the target path code.
15. A computer device, characterized in that, Includes processor, memory, and input / output interfaces; The processor is connected to the memory and the input / output interface respectively, wherein the input / output interface is used to receive data and output data, the memory is used to store computer programs, and the processor is used to call the computer programs so that the computer device executes the method according to any one of claims 1-8, or executes the method according to any one of claims 9-12.
16. A computer-readable storage medium, characterized in that, The computer-readable storage medium stores a computer program adapted to be loaded and executed by a processor to cause a computer device having the processor to perform the method of any one of claims 1-8, or the method of any one of claims 9-12.
17. A computer program product comprising a computer program / instructions, characterized in that, When the computer program / instructions are executed by the processor, they implement the method according to any one of claims 1-8, or perform the method according to any one of claims 9-12.
Citation Information
Patent Citations
Wireless sensor network reliable data transmission method based on network coding
CN107959551A
Multipath coding apparatus and related techniques
CN112385159A