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

Figure CN117135113B_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). With multiple candidate outgoing ports, 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 of physical paths for transmitting data packets (i.e., passing through the same links), or even multiple identical sub-links, resulting in the failure of multiple physical paths. In other words, available bandwidth cannot be effectively utilized, and the reliability of physical path redundancy is reduced. 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:
[0005] 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;
[0006] 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 initial segmentation code values corresponding to each of the f link types; H is a positive integer.
[0007] Randomly generate encoding offset data corresponding to f link types respectively. Based on the encoding offset data corresponding to f link types respectively, perform encoding offset processing on H initial segment code values corresponding to f link types respectively to obtain H segment code values corresponding to f link types respectively.
[0008] 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 each of the f link types.
[0009] Based on H path codes, the target data packet is sent to the target server.
[0010] One embodiment of this application provides a multipath transmission method, the method comprising:
[0011] 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 segment code values obtained by encoding offset processing of the H initial segment code values corresponding to f link types respectively. The encoding offset data corresponding to the same link type is the same under different initial path codes; the H initial segment code values corresponding to the f link types are obtained by the source server encoding the f link types H times based on the number of independent links corresponding to the f link types respectively; a link type refers to the type of link traversed in one data hop; f is a positive integer; H is a positive integer;
[0012] 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.
[0013] One embodiment of this application provides a multipath transmission apparatus, which includes:
[0014] 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;
[0015] 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 initial segmentation code values corresponding to each of the f link types; H is a positive integer;
[0016] The encoding offset module is used to randomly generate encoding offset data corresponding to f link types respectively. Based on the encoding offset data corresponding to f link types respectively, the H initial segment code values corresponding to f link types are encoded and offset to obtain H segment code values corresponding to f link types respectively.
[0017] The encoding generation module is used to assemble H path codes from the H segment code values corresponding to the f link types respectively; each path code includes a segment code value corresponding to the f link types respectively.
[0018] The data sending module is used to send the target data packet to the target server based on H path encodings.
[0019] The link coding module includes:
[0020] The data acquisition unit is used to acquire the number of independent links corresponding to the i-th link type among f link types;
[0021] 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 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;
[0022] The second coding unit is used to perform cyclic coding on 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 initial segment code values corresponding to the i-th link type.
[0023] The code value acquisition unit is used to obtain H initial segment code values corresponding to the f link types when i is f.
[0024] The data transmission module includes:
[0025] The data acquisition unit is used to acquire the initial data packet;
[0026] The path selection unit is used to schedule the H path codes to obtain the target path code;
[0027] Information generation unit, used to generate path information fields based on target path encoding;
[0028] 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;
[0029] 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;
[0030] 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.
[0031] The path selection unit includes:
[0032] 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;
[0033] 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.
[0034] 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.
[0035] The information generation unit includes:
[0036] 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;
[0037] 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.
[0038] The device also includes:
[0039] 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.
[0040] 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.
[0041] The path checking module is used to detect and process H independent data paths in the path checking state;
[0042] The exception update module is used to update the exception data paths if there are exception data paths among the H independent data paths.
[0043] The path checking module includes:
[0044] 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;
[0045] 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.
[0046] 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.
[0047] The abnormal update module includes:
[0048] 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.
[0049] 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;
[0050] 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.
[0051] The encoding update unit is used to determine, if it receives probe confirmation data from the target server for the probe packet, the link type pointed to by the i-th link, which is used to receive data and is identified as L. i If the path switch malfunctions, replace the malfunctioning path code in the H path codes with the updated data path i to obtain the updated H path codes. Then, update the path status of the malfunctioning data path to the normal path status. i It refers to the remainder between the segment code value corresponding to the i-th link type in the abnormal path coding and the number of path switches used for receiving data pointed to by the i-th link type;
[0052] 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.
[0053] 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.
[0054] The device also includes:
[0055] The exception sending module is used to send exceptions if the Cth link type pointed to by the i-th link type is used to receive data. i If a path switch malfunctions, a switch malfunction message is sent to the management device, so that the management device can adjust the Cth path used for receiving data, as pointed to by the i-th link type. i Repair the path switches.
[0056] One embodiment of this application provides a multipath transmission apparatus, which includes:
[0057] 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 consist of segment code values obtained by encoding offset processing of the H initial segment code values corresponding to each of the f link types. The encoding offset data is the same for the same link type under different initial path codes. The H initial segment code values corresponding to each of the f link types are obtained by the source server encoding each of the f link types H times 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.
[0058] 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.
[0059] The data transmission module includes:
[0060] The packet data acquisition unit is used to obtain the path information field from the target data packet;
[0061] 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; the path information field is used to indicate the target path code.
[0062] The data sending unit is used to send target data packets to the target server based on the target output port.
[0063] 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.
[0064] The port determination unit includes:
[0065] 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;
[0066] The code value acquisition subunit is used to obtain the target segment code value corresponding to the update hop number in the encoding field;
[0067] The quantity acquisition subunit is used to acquire the number of candidate outgoing ports associated with the path switch;
[0068] The port determination subunit is used to determine the candidate output port corresponding to the remainder between the target segment code value and the number of candidates as the target output port.
[0069] One embodiment of this application provides a computer device, including a processor, a memory, and an input / output interface;
[0070] 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.
[0071] 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.
[0072] 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.
[0073] Implementing the embodiments of this application will have the following beneficial effects:
[0074] In this embodiment, 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; the number of independent links corresponding to each of the f link types is obtained, and H encoding operations are performed on each of the f link types based on the number of independent links to obtain H initial segment code values corresponding to each of the f link types; H is a positive integer; encoding offset data corresponding to each of the f link types is randomly generated, and encoding offset processing is performed on the H initial segment code values corresponding to each of the f link types based on the encoding offset data corresponding to each of the f link types to obtain H segment code values corresponding to each of the f link types; 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; the target data packet is sent to the target server based on the H path codes. Through the above process, f link types can be determined. That is, when a data packet is completely transmitted between node pairs (i.e., source server and destination server), the types of links it traverses 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 and destination servers can be obtained. This path code can be considered an indication of the actual physical path between the source and destination servers. Because 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. Simultaneously, encoding offsets are applied so that later path switches in the same network topology layer can also be used, maximizing the utilization of all path switches, reducing bandwidth contention between different connections, and increasing the available bandwidth of each connection. Attached Figure Description
[0075] 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.
[0076] Figure 1a This is a schematic diagram of a network topology for multipath transmission provided in an embodiment of this application;
[0077] Figure 1b This is a schematic diagram of a data transmission scenario provided in an embodiment of this application;
[0078] Figure 2This is a schematic diagram of a multipath transmission scenario provided in an embodiment of this application;
[0079] Figure 3 This is a flowchart of a multipath transmission method provided in an embodiment of this application;
[0080] Figure 4 This is a schematic diagram of a physical path provided in an embodiment of this application;
[0081] Figure 5a This application provides another physical path diagram.
[0082] Figure 5b This is a schematic diagram of an encoding offset scenario provided in an embodiment of this application;
[0083] Figure 6 This is a schematic diagram of a path scheduling scenario provided in an embodiment of this application;
[0084] Figure 7 This is a schematic diagram of a path information field provided in an embodiment of this application;
[0085] Figure 8 This is a schematic diagram of a path checking process provided in an embodiment of this application;
[0086] Figure 9 This is a schematic diagram of a switch data transmission process provided in an embodiment of this application;
[0087] Figure 10 This is a schematic diagram of a data interaction scenario provided in an embodiment of this application;
[0088] Figure 11 This is a schematic diagram of a multipath transmission device provided in an embodiment of this application;
[0089] Figure 12 This is a schematic diagram of another multipath transmission device provided in an embodiment of this application;
[0090] Figure 13 This is a schematic diagram of the structure of a computer device provided in an embodiment of this application. Detailed Implementation
[0091] 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.
[0092] If this application requires the collection of object data (such as user data), a prompt interface or pop-up window will be displayed before and during the collection process. This prompt interface or pop-up window is used to inform the user that data collection is in progress. The data acquisition steps will only begin after the user confirms the prompt interface or pop-up window; otherwise, the process will end. Furthermore, the acquired user data will be used in reasonable and legal scenarios or for legitimate purposes. Optionally, in scenarios where user data needs to be used but user authorization has not been obtained, authorization can be requested from the user, and the user data will only be used after authorization is granted.
[0093] 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.
[0094] 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.
[0095] Currently, the storage method of storage systems is as follows: Logical volumes are created. During the creation of a logical volume, 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.
[0096] 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.
[0097] 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.
[0098] In the embodiments of this application, please refer to Figure 1a , Figure 1a This 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 1aAs shown, a connection between any two devices (including servers and switches) represents a physical link between those two devices. 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 a 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.
[0099] This network topology can include one or at least two points of delivery (Pods), such as Figure 1a The transmission units 0 (Pod0), 1 (Pod1), 2 (Pod2), and 3 (Pod3) are defined. 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 1aIn 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 can 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.
[0100] 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 subsequent network topology changes, 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.
[0101] 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 1bAs 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. This 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.
[0102] 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 2 As 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 2As 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.
[0103] 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 initial segmentation 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 initial segment code values 2021 corresponding to link type 1, such as initial segment code value 11, initial segment code value 12, and initial segment code value 1H, etc.; based on the number of independent links 2, link type 2 is encoded H times to obtain H initial segment code values 2022 corresponding to link type 2, such as initial segment code value 21, initial segment code value 22, and initial segment code value 2H, etc.; ...; based on the number of independent links f, link type f is encoded H times to obtain H initial segment code values 202f corresponding to link type f, such as initial segment code value f1, initial segment code value f2, and initial segment code value fH, etc. Further, encoding offset data corresponding to each of the f link types can be generated, and encoding offset processing can be performed on the H initial segment code values corresponding to each of the f link types to obtain H segment code values corresponding to each of the f link types. For example, using the encoding offset data corresponding to link type 1, the H initial segment code values 2021 corresponding to link type 1 are encoded and offset to obtain H segment code values 2031; using the encoding offset data corresponding to link type 2, the H initial segment code values 2022 corresponding to link type 2 are encoded and offset to obtain H segment code values 2032; ...; using the encoding offset data corresponding to link type f, the H initial segment code values 202f corresponding to link type f are encoded and offset to obtain H segment code values 203f.
[0104] Furthermore, H path codes 204 can be formed from the H segment code values corresponding to the f link types, such as path code 1 composed of segment code value 11, segment code value 21, and segment code value f1; path code 2 composed of segment code value 12, segment code value 22, and segment code value f2; ...; path code H composed of segment code value 1H, segment code value 2H, and segment code value fH, etc. Further, the source server can send the target data packet to the target server 205 based on these H path codes 204.
[0105] 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. Simultaneously, encoding offset processing is applied to each initial segment code value, ensuring that when there are many devices (such as path switches) included in the same network topology layer, devices located further down the hierarchy can also be selected, fully utilizing path switches and increasing the available bandwidth of each connection.
[0106] 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.
[0107] 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.
[0108] 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:
[0109] Step S301: The source server obtains f link types.
[0110] 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.
[0111] 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.
[0112] 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 H initial segment code values corresponding to each of the f link types.
[0113] In this embodiment of the application, the source server can obtain the number of independent links corresponding to each of the f link types, and based on the number of independent links corresponding to each of the f link types, perform H encodings on each of the f link types to obtain H initial segment code values corresponding to each of the f link types.
[0114] Optional, 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, that is, the j-th segment code value corresponding to the i-th link type. In other words, this C... (i-1)(j-1) The value obtained from the initial encoding is used to represent the j-th initial segment code value corresponding to the i-th link type, C (i-1)(j-1) The value obtained after encoding offset processing is used to represent the j-th segment code value corresponding to the i-th link type. i is a positive integer less than or equal to f, and j is a positive integer less than or equal to H. That is, 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. iUsed to indicate the i-th link type, 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.
[0115] 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.
[0116] 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:
[0117] ① Access layer switch 12 → Aggregation layer switch 8 → Core layer switch 0 / 1 → Aggregation layer switch 32 → Access layer switch 39;
[0118] ② Access layer switch 12 → Aggregation layer switch 9 → Core layer switch 2 / 3 → Aggregation layer switch 33 → Access layer switch 39;
[0119] ③ Access layer switch 12 → Aggregation layer switch 10 → Core layer switch 4 / 5 → Aggregation layer switch 34 → Access layer switch 39;
[0120] ④ Access layer switch 12 → Aggregation layer switch 11 → Core layer switch 6 / 7 → Aggregation layer switch 35 → Access layer switch 39.
[0121] There can be N independent links between the server and the access layer switch, where N is a positive integer. For example... Figure 1a As 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.
[0122] 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 candidate outgoing 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 illustrated network topology shows 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 is located) and obtain the f link types based on this network topology. See the detailed description in step S301 for further details. 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; no limitation is imposed here.
[0123] 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 initial segmentation 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, from the multiples of the number of access links of the server, the largest multiple less than or equal to the number of aggregation layer switches included in a transmission unit can be obtained, and the largest multiple can be used to determine the number of encodings, etc., without limitation.
[0124] Specifically, 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 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. It can be considered that the i-th link type is continuously encoded, and p to q are sequentially determined as the H initial 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, using 0 to (H-1) to encode the i-th link type H times, we get H initial segment code values corresponding to the i-th link type, that is, p is 0 and q is H-1.
[0125] 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 initial segmentation 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 initial segmentation 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 assuming the base code value is determined to be "0, 1", the base code value "0, 1" is cyclically encoded to obtain H initial segmentation 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 initial 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 initial segmentation code values corresponding to the f link types respectively.
[0126] 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 initial 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 initial 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, that is, continuous coverage is performed to obtain H initial segment code values of the EU type, that is, “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 assuming it is "0". Using this basic code value "0", type AU is encoded H times to obtain H initial 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”. The CD type is encoded H times using this basic code value “0” to obtain the H initial segment code values of the CD type, i.e., “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 initial segment code values of the AD type, that is, “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” to obtain the H initial segment code values of the ED type, i.e., “C”. 50 =0, C 51 =0, C 52 =0, C 53 =0".
[0127] Optionally, the H initial segmentation code values corresponding to the f link types can be considered to form H initial path codes. For example, as Figure 1a or Figure 4 The network topology shown can be encoded as follows:
[0128] [Encoding identifier = 0, C] 00 =0, C 10 =0, C 20 =0, C 30 =0, C 40 =0, C 50 =0];
[0129] [Encoding identifier = 1, C] 01 =1,C 11 =1,C 21 =0, C 31 =0, C 41 =1,C 51 =0];
[0130] [Encoding identifier = 2, C] 02 =0, C 12 =2, C 22 =0, C 32 =0, C 42 =0, C 52 =0];
[0131] [Encoding identifier = 3, C] 03 =1,C 13 =3,C 23 =0, C 33 =0, C 43 =1,C 53 =0).
[0132] Step S303: Randomly generate encoding offset data corresponding to f link types respectively, and perform encoding offset processing on H initial segment code values corresponding to f link types based on the encoding offset data corresponding to f link types respectively, to obtain H segment code values corresponding to f link types respectively.
[0133] In this embodiment, taking the i-th link type as an example, the encoding offset data corresponding to the i-th link type can be obtained. Based on the encoding offset data corresponding to the i-th link type, encoding 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 encoding offset data corresponding to the i-th link type is 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 This is equivalent to updating the segment code value, and can also be written as C. i-1 =C i-1 +D i-1Here, 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.
[0134] Among them, such as Figure 1a The network topology shown may include a large number of path switches in some network topology layers. For example, assuming the aggregation layer includes more than H aggregation layer switches, mapping based on H initial segmentation code values will map to the first H aggregation layer switches. By performing encoding offset processing, all aggregation layer switches can be utilized, meaning existing path switches can be used as much as possible, reducing bandwidth contention between different connections and increasing the available bandwidth for each connection. Since the encoding offset data corresponding to the f link types is randomly generated, this encoding offset processing is connection-level, meaning it's a connection between a node pair (server to server). The encoding offset data for different connections is likely to be different. Within the same connection, the encoding offset data for the same link type is the same across all path codes, ensuring the independence of path codes. This effectively distributes traffic to all available access links / path switches, improving data processing efficiency and multi-path availability.
[0135] Optional, such as Figure 5b As shown, Figure 5b This is a schematic diagram of an encoding offset scenario provided in an embodiment of this application. For example... Figure 5bAs shown, for servers s0, s1, and s2, without encoding offset processing, they all point to aggregation layer switches a0 to a3 in the aggregation layer. Based on encoding offset processing, for s0, assuming the EU type encoding offset data is 1 (D1 = 1), the four segment code values from the access layer to the aggregation layer (EU type) are updated from "0, 1, 2, 3" to "1, 2, 3, 4" respectively, pointing to aggregation layer switches a1, a2, a3, and a4 respectively. For s1, assuming the EU type encoding offset data is 6 (D1 = 6), the four segment code values from the access layer to the aggregation layer (EU type) are updated from "0, 1, 2, 3" to "6, 7, 8, 9" respectively, pointing to aggregation layer switches a6, a7, a0, and a1 respectively. For s2, assuming the EU type encoding offset data is 3, i.e., D1 = 3, the four segment code values from the access layer to the aggregation layer (i.e., EU type) are updated from "0, 1, 2, 3" to "3, 4, 5, 6" respectively, pointing to aggregation layer switches a3, a4, a5, and a6. It can be seen that existing path switches can be fully utilized for data transmission, improving the reliability and availability of the path.
[0136] Step S304: Combine the H segment code values corresponding to the f link types into H path codes.
[0137] In this embodiment, 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 similarly, H path codes are obtained. Optionally, H encoding identifiers can be obtained, and 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.
[0138] Specifically, such as Figure 1a or Figure 4 The network topology shown can be encoded as follows:
[0139] [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];
[0140] [Encoding identifier = 1, C] 01 =1+D0,C 11 =1+D1,C21 =0+D2,C 31 =0+D3,C 41 =1+D4,C 51 =0+D5];
[0141] [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];
[0142] [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).
[0143] Optionally, invalid offset link types can be obtained, and the encoded offset data corresponding to these invalid offset link types can be set as default offset values, such as 0, to reduce complexity. Here, an invalid offset link type can be considered as a link type among f link types where the number of independent links is 1 and it is not connected to the cluster. In this case, one possible scenario is that the H path codes can be:
[0144] [Encoding identifier = 0, C] 00 =0+D0,C 10 =0+D1,C 20 =0+D2,C 30 =0, C 40 =0+D4,C 50 =0];
[0145] [Encoding identifier = 1, C] 01 =1+D0,C 11 =1+D1,C 21 =0+D2,C 31 =0, C 41 =1+D4,C 51 =0];
[0146] [Encoding identifier = 2, C] 02 =0+D0,C 12 =2+D1,C 22 =0+D2,C 32 =0, C 42 =0+D4,C 52 =0];
[0147] [Encoding identifier = 3, C] 03 =1+D0,C 13 =3+D1,C 23 =0+D2,C 33 =0, C 43 =1+D4,C 53 =0).
[0148] Optionally, this encoding offset processing can also be denoted as, C i-1 =C i-1 +D i-1 For example, C 10 =C 10 +D1, etc.
[0149] 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 equivalent multipath characteristic of 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.
[0150] Step S305: Based on H path codes, send the target data packet to the target server.
[0151] 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.
[0152] 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, C00 =0 is used to indicate that it refers to access layer switch 12, C 01 =1 is used to indicate that it refers to access layer switch 13, C 02 =0 is used to indicate that it refers to access layer switch 12, C 03 =1 is used to indicate a reference to access layer switch 13, etc. See the details below:
[0153] ① 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.
[0154] ②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.
[0155] ③ 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.
[0156] ④ 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.
[0157] See Figure 5a , Figure 5a This is another physical path diagram provided in an embodiment of this application. For example... Figure 5a 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:
[0158] ① Figure 5a 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.
[0159] ②For example Figure 5aThe 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.
[0160] ③ For example Figure 5a 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.
[0161] ④ For example Figure 5a The 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.
[0162] 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 segmentation code value corresponding to the 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 path coding 2 above 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 .
[0163] 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 p, where p 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.
[0164] 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 repeated.
[0165] 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.
[0166] 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.
[0167] 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 transmission. 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.
[0168] 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.
[0169] 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 below. 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:
[0170] 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.
[0171] 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 to the H path codes, 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.
[0172] 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.
[0173] 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.
[0174] Step S803: In the path check state, detect and process H independent data paths.
[0175] 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.
[0176] Step S804: If there is an abnormal data path among the H independent data paths, then update the abnormal data path.
[0177] 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 acknowledgement 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, it can be determined that the path switch indicating the abnormal path code for receiving data is abnormal. 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.
[0178] Specifically, the updated segment code value corresponding to the segment code value of the i-th link type in the abnormal path encoding can be obtained, and the segment code value corresponding to the i-th link type in the abnormal path encoding can be updated to the updated segment code value to obtain the updated path encoding 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 encoding to obtain the updated segment code value. In the updated data path i corresponding to the updated path encoding 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 link type L pointed to by the i-th link type is determined to be used for receiving data.i If a path switch malfunctions, replace the malfunctioning path code in the H path codes with the updated data path i to obtain the updated H path codes. Then, update the path status of the malfunctioning data path to the normal path status. L i This refers to the remainder between the segment code value corresponding to the i-th link type in the abnormal path coding and the number of path switches used to receive data, as indicated by the i-th link type. For example, assuming the segment code value corresponding to the i-th link type in the abnormal path coding is 1, and the updated segment code value is 2, if the detection based on the updated segment code value "2" is successful (i.e., data transmission is normal without using the path switch indicated by segment code value "1"), then it can be determined that the path switch indicated by segment code value "1" is abnormal. Assuming the i-th link type corresponds to 4 path switches [a, b, c, d], then it can be determined that L... i The value is 1, meaning the identifier is determined to be L. i The path switch is abnormal, specifically path switch b is abnormal.
[0179] If the source server does not receive confirmation data from the target server for the probe packet after the detection confirmation time threshold, then the (i+1)th link type is probed, with the initial value of i being 1; or, the (i-1)th link type is probed, with the initial value of i being f. When all link types corresponding to the f link types in the abnormal path coding have been probed, and the abnormal data path is in the path probing state, the abnormal path coding is determined to be invalid.
[0180] 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 using the values of 0 (i.e., the 4th and 6th segment codes). Specifically, assuming the detection offset is 1, the detection process can be as follows:
[0181] 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, C 51=0], using the updated path code 5, a probe packet is sent to the target server. If a PACK is received for this probe packet, the identifier is determined to be L5 (L5=1, i.e., C). 41 The target access layer switch (in the segment code value of the abnormal path coding) is abnormal, that is, C 41 The corresponding target access layer switch is malfunctioning. The malfunctioning data path in the H path codes can be replaced with updated path code 5, and the path status of the replaced malfunctioning data path can be updated to normal. If, after the probe confirmation time threshold, the source server does not receive probe confirmation data from the target server for the probe packet, it indicates that updated path code 5 is unavailable, and step 2) is executed.
[0182] 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 +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 this probe packet is received, the identifier is determined to be L3 (L3=0, i.e., C). 21 The core layer switch (in the segment code value of the abnormal path coding) is abnormal, that is, C 21 The corresponding core layer switch is malfunctioning. The malfunctioning data path in the H path codes can be replaced with updated path code 3, and the path status of the replaced malfunctioning data path can be updated to normal. If, after the probe confirmation time threshold, the source server does not receive probe confirmation data from the target server for the probe packet, it indicates that updated path code 3 is unavailable, and step 3) is executed.
[0183] 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, C 21 =0, C 31 =0, C 41 =1,C 51 =0], using the updated path encoding 2, a probe packet is sent to the target server. If a PACK is received for this probe packet, the identifier is determined to be L2 (L2=1, i.e., C). 11 The source aggregation layer switch (in the segment code value of the abnormal path coding) is abnormal, that is, C 11The corresponding source aggregation layer switch is malfunctioning. The malfunctioning data path in the H path codes can be replaced with updated path code 2, and the path status of the replaced malfunctioning data path can be updated to normal. If, after the probe confirmation time threshold, the source server does not receive probe confirmation data from the target server for the probe packet, it indicates that updated path code 2 is unavailable, and step 4 is executed.
[0184] 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, C 11 =1,C 21 =0, C 31 =0, C 41 =1,C 51 =0], using the updated path encoding 1, a probe packet is sent to the target server. If a PACK is received for this probe packet, the identifier is determined to be L1 (L1=1, i.e., C). 01 The source access layer switch (in the segment code value of the abnormal path coding) is abnormal, that is, C 01 The corresponding source access layer switch is malfunctioning. The malfunctioning data path in the H path codes can be replaced with updated path code 1, and the path status of the replaced malfunctioning data path can be updated to normal. If, after the probe confirmation time threshold, the source server does not receive probe confirmation data from the target server for the probe packet, it indicates that updated path code 1 is unavailable, and step 5 is executed.
[0185] 5) At this point, the detection of the abnormal path code is complete. The abnormal path code can be considered invalid, and an abnormal code message can be sent to the management device.
[0186] Setting the probe offset to 1 can be seen as a way to cyclically select the next candidate outgoing port on the path switch.
[0187] The above process significantly improves the recovery speed of path faults. 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, thus bypassing individual switch failures. Furthermore, as long as a usable physical path exists in the network, it can be found relatively quickly to maintain connection continuity, thereby improving the reliability and availability of data transmission. In this application, the selection of the outgoing port is directly based on the path code. This means that once the path code is determined, the devices traversed by that path code can be identified, i.e., the corresponding physical path can be obtained. This allows for direct location of the specific path switch experiencing the fault during fault detection, based on the above process, thereby improving the efficiency and accuracy of fault diagnosis and enhancing network security.
[0188] Optionally, if the i-th link type points to a link used for receiving data and is identified as L i If the path switch malfunctions, a switch malfunction message is sent to the management device, so that the management device can adjust the Lth path of the i-th link type used for receiving data. i Repairing each path switch can improve network repair efficiency and further enhance network security.
[0189] In this embodiment, 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; the number of independent links corresponding to each of the f link types is obtained, and H encoding operations are performed on each of the f link types based on the number of independent links to obtain H initial segment code values corresponding to each of the f link types; H is a positive integer; encoding offset data corresponding to each of the f link types is randomly generated, and encoding offset processing is performed on the H initial segment code values corresponding to each of the f link types based on the encoding offset data corresponding to each of the f link types to obtain H segment code values corresponding to each of the f link types; 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; the target data packet is sent to the target server based on the H path codes. Through the above process, f link types can be determined. That is, when a data packet is completely transmitted between node pairs (i.e., source server and destination server), the types of links it traverses 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 and destination servers can be obtained. This path code can be considered an indication of the actual physical path between the source and destination servers. Because 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. Simultaneously, encoding offsets are applied so that later path switches in the same network topology layer can also be used, maximizing the utilization of all path switches, reducing bandwidth contention between different connections, and increasing the available bandwidth of each connection.
[0190] 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:
[0191] Step S901: The path switch acquires the target data packet.
[0192] 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 segment code values obtained by encoding offset processing of the H initial segment code values corresponding to f link types respectively. The encoding offset data corresponding to the same link type is the same under different initial path codes. The H initial segment code values corresponding to the f link types are obtained by the source server encoding the f link types H times based on the number of independent links corresponding to the f link types respectively. A link type refers to the type of link traversed in a data hop. f is a positive integer. H is a positive integer.
[0193] Step S902: Based on the target path encoding indicated by the target data packet, send the target data packet to the target server.
[0194] In this embodiment, the path switch can obtain a path information field from the target data packet. Based on the path information field, it determines the target outgoing port from the candidate outgoing ports associated with the path switch. This 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 target segment code value corresponding to the updated hop count in the encoding field can be obtained. 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 51=0", and the update hop count is 1. Then, retrieve the target segment code value corresponding to the update hop count from this encoding field, which is C. hop The corresponding segment code value is denoted as ind, i.e., "C". 11 =1". Specifically, the number S of candidate outgoing ports associated with the path switch can be obtained. 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, S = |V|. Further, the candidate outgoing port corresponding to the remainder between the target segment code value and the number of candidates is determined as the target outgoing port. That is, the remainder between the target segment code value and the number of candidates is determined as the outgoing port index, and the candidate outgoing port corresponding to the outgoing port index is determined as the target outgoing port. Wherein, outgoing port index = ind%S, taking the above example as an example, ind = C 11 =1, assuming the candidate output port list V = [a, b, c, d], S = |V| = 4, then the output port index = ind%S = 1%4 = 1, and the candidate output port corresponding to the output port index, i.e., V[output port index] = V[1] = b.
[0195] 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 9 In 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.
[0196] 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.
[0197] In this embodiment, more comprehensive load balancing can be achieved, improving network utilization, alleviating the pressure on bottlenecks in multi-path schemes, reducing network traffic issues (such as packet loss), and lowering the probability of network failure. Due to the deterministic nature of path coding, the faulty path switch can be quickly located based on the path code. That is, when the independent data path corresponding to the path code fails, the specific path switch that failed can be directly located based on the results of the probing phase, thereby greatly improving the efficiency of network location.
[0198] 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 3The relevant description in step S304 assumes that the target path code is obtained, and the target outgoing port of the source server 1001 is 1 based on the target path code. A path information field is generated based on the hop count and the target path code, and this path information field is added to the header of the initial data packet to generate the target data packet 1002. Specifically, the 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 its target outgoing port, specifically to the path switch indicated by the next network topology layer of the source server. ② Taking a path switch 1003 as an example, this path switch 1003 can update the value of the hop count segment, i.e., obtain the hop count hop = hop + 1, and get the updated hop count, which can be considered the current hop count. The target segment code value corresponding to the updated hop count is obtained from the target data packet 1004. For example, assuming the updated hop count is 3, corresponding to the CD type, the target segment code value of the CD type field corresponding to the updated hop count 3 can be used for route mapping. Assuming the target segment code value is 2, the target output port is determined; the target output port corresponding to the target segment code value 2 is c. See [link to documentation] for details. 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.
[0199] 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, the transmission process of the data acknowledgment packet 1007 can be referred to the transmission process of the target data packet 1002.
[0200] Further, please see Figure 11 , Figure 11This 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 offset module 13, an encoding generation module 14, and a data transmission module 15.
[0201] 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;
[0202] 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 initial segment code values corresponding to each of the f link types; H is a positive integer;
[0203] The encoding offset module 13 is used to randomly generate encoding offset data corresponding to f link types respectively, and based on the encoding offset data corresponding to f link types respectively, to perform encoding offset processing on H initial segment code values corresponding to f link types respectively, to obtain H segment code values corresponding to f link types respectively.
[0204] The encoding generation module 14 is used to form H path codes from the H segment code values corresponding to the f link types respectively; each path code includes a segment code value corresponding to the f link types respectively.
[0205] The data sending module 15 is used to send the target data packet to the target server based on H path encodings.
[0206] The link coding module 12 includes:
[0207] Data acquisition unit 121 is used to acquire the number of independent links corresponding to the i-th link type among f link types;
[0208] 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 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;
[0209] 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 initial segment code values corresponding to the i-th link type.
[0210] The code value acquisition unit 124 is used to obtain H initial segment code values corresponding to f link types when i is f.
[0211] The data transmission module 15 includes:
[0212] Data acquisition unit 151 is used to acquire initial data packets;
[0213] The path selection unit 152 is used to perform path scheduling on H path codes to obtain the target path code;
[0214] Information generation unit 153 is used to generate path information fields based on target path encoding;
[0215] Packet update unit 154 is used to add the path information field to the header of the initial data packet to generate the target data packet;
[0216] The link selection unit 155 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.
[0217] The data sending unit 156 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.
[0218] The path selection unit 152 includes:
[0219] The request sending subunit 1521 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.
[0220] The path determination subunit 1522 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.
[0221] The path polling subunit 1523 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.
[0222] The information generation unit 153 includes:
[0223] The data determination subunit 1531 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.
[0224] The information component subunit 1532 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.
[0225] The device 1100 also includes:
[0226] The heartbeat sending module 16 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.
[0227] The status update module 17 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.
[0228] The path checking module 18 is used to detect and process H independent data paths in the path checking state;
[0229] The exception update module 19 is used to update the exception data path if there is an exception data path among the H independent data paths.
[0230] The path checking module 18 includes:
[0231] The inspection sending unit 181 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.
[0232] The normal determination unit 182 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.
[0233] The status update unit 183 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.
[0234] The anomaly update module 19 includes:
[0235] The anomaly acquisition unit 191 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.
[0236] The update acquisition unit 192 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;
[0237] The update probe unit 193 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.
[0238] The encoding update unit 194 is used to determine, if it receives probe confirmation data from the target server for the probe packet, the link type pointed to by the i-th link type, which is used to receive data and is identified as L. i If the path switch malfunctions, replace the malfunctioning path code in the H path codes with the updated data path i to obtain the updated H path codes. Then, update the path status of the malfunctioning data path to the normal path status. i It refers to the remainder between the segment code value corresponding to the i-th link type in the abnormal path coding and the number of path switches used for receiving data pointed to by the i-th link type;
[0239] The subsequent detection unit 195 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.
[0240] The invalid determination unit 196 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.
[0241] The device 1100 also includes:
[0242] The exception sending module 20 is used to send exceptions if the Cth link type pointed to by the i-th link type is used to receive data. i If a path switch malfunctions, a switch malfunction message is sent to the management device, so that the management device can adjust the Cth path used for receiving data, as pointed to by the i-th link type. i Repair the path switches.
[0243] This application provides a multipath transmission apparatus that can operate on a server. Any server acting as a source server can acquire f link types; f is a positive integer; a link type refers to the type of link traversed in a single data hop. The apparatus acquires 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, obtaining H initial segment code values corresponding to each of the f link types; H is a positive integer. It randomly generates encoding offset data corresponding to each of the f link types, and performs encoding offset processing on the H initial segment code values corresponding to each of the f link types based on the encoding offset data, obtaining H segment code values corresponding to each of the f link types. It then combines 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. Finally, 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 completely transmitted between node pairs (i.e., source server and destination server), the types of links it traverses 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 and destination servers can be obtained. This path code can be considered an indication of the actual physical path between the source and destination servers. Because 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. Simultaneously, encoding offsets are applied so that later path switches in the same network topology layer can also be used, maximizing the utilization of all path switches, reducing bandwidth contention between different connections, and increasing the available bandwidth of each connection.
[0244] Further, please see Figure 12 , Figure 12This 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.
[0245] 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 segment code values obtained by encoding offset processing of the H initial segment code values corresponding to f link types respectively. The encoding offset data corresponding to the same link type is the same under different initial path codes. The H initial segment code values corresponding to the f link types are obtained by the source server encoding the f link types H times based on the number of independent links corresponding to the f link types respectively. A link type refers to the type of link traversed in one data hop. f is a positive integer. H is a positive integer.
[0246] 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.
[0247] The data transmission module 22 includes:
[0248] Packet data acquisition unit 221 is used to acquire path information field from target data packet;
[0249] 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; the path information field is used to indicate the target path code.
[0250] The data sending unit 223 is used to send the target data packet to the target server based on the target output port.
[0251] 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.
[0252] The port determination unit 222 includes:
[0253] 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;
[0254] Code value acquisition subunit 2222 is used to obtain the target segment code value corresponding to the update hop number in the encoding field;
[0255] The quantity acquisition subunit 2223 is used to acquire the number of candidate outgoing ports associated with the path switch;
[0256] The port determination subunit 2224 is used to determine the candidate output port corresponding to the remainder between the target segment code value and the number of candidates as the target output port.
[0257] This application provides a multi-path transmission device that can operate in any path switch, achieving more comprehensive load balancing, improving network utilization, alleviating pressure on bottlenecks in multi-path schemes, reducing network traffic issues (such as packet loss), and lowering the probability of network failure. Due to the deterministic nature of path coding, the faulty path switch can be quickly located based on the path code. That is, when an independent data path corresponding to a path code fails, the specific faulty path switch can be directly located based on the results of the probing phase, thereby greatly improving the efficiency of network location.
[0258] 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.
[0259] The processor 1301, located in the server, can perform the following operations:
[0260] 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;
[0261] 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 initial segmentation code values corresponding to each of the f link types; H is a positive integer.
[0262] Randomly generate encoding offset data corresponding to f link types respectively. Based on the encoding offset data corresponding to f link types respectively, perform encoding offset processing on H initial segment code values corresponding to f link types respectively to obtain H segment code values corresponding to f link types respectively.
[0263] 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 each of the f link types.
[0264] Based on H path codes, the target data packet is sent to the target server.
[0265] The processor 1301 is located in the path switch and can perform the following operations:
[0266] 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 segment code values obtained by encoding offset processing of the H initial segment code values corresponding to f link types respectively. The encoding offset data corresponding to the same link type is the same under different initial path codes; the H initial segment code values corresponding to the f link types are obtained by the source server encoding the f link types H times based on the number of independent links corresponding to the f link types respectively; a link type refers to the type of link traversed in one data hop; f is a positive integer; H is a positive integer;
[0267] 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.
[0268] 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.
[0269] 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.
[0270] 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.
[0271] 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 involves multipath transmission. This embodiment of the application can determine f link types, meaning the types of links traversed when a data packet is completely transmitted between node pairs (i.e., source server and destination 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 and destination servers can be obtained. This path code can be considered an indication of the actual physical path between the source and destination servers. 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. Simultaneously, encoding offsets are applied so that later path switches in the same network topology layer can also be used, maximizing the utilization of all path switches, reducing bandwidth contention between different connections, and increasing the available bandwidth of each connection.
[0272] 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 9The 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.
[0273] 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.
[0274] 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 approaches allows for the determination of f link types. That is, when a data packet is completely transmitted between node pairs (i.e., source server and destination server), the types of links traversed are determined. These link types are encoded using the number of independent links corresponding to them, resulting in path codes representing the logical path of data packet transmission between the source and destination servers. This path code essentially represents the actual physical path between the source and destination servers. Because 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. Simultaneously, encoding offsets are applied so that later path switches in the same network topology layer can also be used, maximizing the utilization of all path switches, reducing bandwidth contention between different connections, and increasing the available bandwidth for each connection.
[0275] 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.
[0276] 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.
[0277] 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.
[0278] The steps in the method of this application embodiment can be adjusted, combined, or deleted according to actual needs.
[0279] The modules in the device of this application embodiment can be merged, divided, and deleted according to actual needs.
[0280] 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 single data hop; 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 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 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 initial segment code values corresponding to the i-th link type. When i is f, H initial segmentation code values corresponding to the f link types are obtained respectively; H is a positive integer; Randomly generate encoding offset data corresponding to each of the f link types. Based on the encoding offset data corresponding to each of the f link types, perform encoding offset processing on the H initial segment code values corresponding to each of the f link types to obtain the H segment code values corresponding to each of the f link types. 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.
2. 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.
3. The method as described in claim 2, 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.
4. The method as described in claim 2, 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 a probe confirmation data is received from the target server in response to the probe packet, then the link type pointed to by the i-th link, which is used to receive data and is identified as L, is determined. i If the path switch is faulty, replace the faulty path code in the H path codes with the updated data path i to obtain the updated H path codes, and update the path status of the faulty data path to the normal path status; L i It refers to the remainder between the segment code value corresponding to the i-th link type in the abnormal path coding and the number of path switches used for receiving data pointed to by the i-th link type; 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.
5. The method as described in claim 4, characterized in that, The method further includes: If the i-th link type points to a data receiving link and is identified as L i If the path switch malfunctions, a switch malfunction message is sent to the management device, so that the management device can adjust the Lth path for receiving data, as pointed to by the i-th link type. i Repair the path switches.
6. 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.
7. The method as described in claim 6, 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.
8. The method as described in claim 6, characterized in that, The path information field generated based on the target path encoding includes: Obtain the target path identifier from the target path code, and the segmentation code value of the link type pointed to by one or more path switches in the f link types; the one or more path switches include the access layer switch; Obtain the number of hops corresponding to the source server, and generate a path information field by combining the target path 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 number of hops corresponding to the source server.
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 segment code values obtained by encoding offset processing of H initial segment code values corresponding to f link types respectively, and the encoding offset data corresponding to the same link type is the same under different initial path codes; the H initial segment code values corresponding to the f link types respectively are obtained by the source server encoding the f link types H times based on the number of independent links corresponding to the f link types respectively; a link type refers to the type of link traversed in a data hop; f is a positive integer; H is a positive integer; wherein, the H initial segment code values corresponding to the link type with a number of independent links greater than or equal to H are obtained by encoding the link type H times using p to q, the difference between p and q is H-1, and q is greater than p; the H initial segment code values corresponding to the link type with a number of independent links less than H are obtained by cyclically encoding the link type based on the number of independent links corresponding to the link type. 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 is obtained from the target data packet, and the target outgoing port is determined from the candidate outgoing ports associated with the path switch based on the path information field; 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 includes: The value of the transmission hop number field in the path information field is updated to obtain the updated hop number; Obtain the target segment code value corresponding to the updated hop count in the encoding field, and obtain the number of candidate outgoing ports associated with the path switch; The candidate output port corresponding to the remainder between the target segment code value and the number of candidates is determined as the target output port.
12. A multipath transmission device, characterized in that, The device 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 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 initial segment code values corresponding to the f link types respectively; H is a positive integer; The encoding offset module is used to randomly generate encoding offset data corresponding to the f link types respectively, and based on the encoding offset data corresponding to the f link types respectively, to perform encoding offset processing on the H initial segment code values corresponding to the f link types respectively, to obtain the H segment code values corresponding to the f link types respectively. The encoding generation module is used to assemble H path codes from the H segment code values corresponding to the f link types respectively; each path code includes a segment code value corresponding to the f link types respectively; 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 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 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 initial segment code values corresponding to the i-th link type. When i is f, H initial segmentation code values corresponding to the f link types are obtained respectively.
13. 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 consist of segment code values obtained by encoding offset processing of H initial segment code values corresponding to f link types. The encoding offset data is the same for the same link type under different initial path codes. The H initial segment code values corresponding to the f link types are obtained by the source server encoding the f link types H times 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. Specifically, the H initial segment code values corresponding to link types with a number of independent links greater than or equal to H are obtained by encoding the link type H times using p to q, where the difference between p and q is H-1, and q is greater than p. The H initial segment code values corresponding to link types with a number of independent links less than H are obtained by cyclically encoding the link type based on the number of independent links corresponding to that link type. 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.
14. 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-11.
15. 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-11.
16. 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-11.
Citation Information
Patent Citations
Reliable transport of Ethernet packet data with wire-speed and packet data rate match
CN105900386A
Method and system for path monitoring using segment routing
US20140269266A1