WO2022147762A1 - 一种数据包排序方法及装置 - Google Patents

一种数据包排序方法及装置 Download PDF

Info

Publication number
WO2022147762A1
WO2022147762A1 PCT/CN2021/070853 CN2021070853W WO2022147762A1 WO 2022147762 A1 WO2022147762 A1 WO 2022147762A1 CN 2021070853 W CN2021070853 W CN 2021070853W WO 2022147762 A1 WO2022147762 A1 WO 2022147762A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
data packet
sorting
sequence index
sorted
Prior art date
Application number
PCT/CN2021/070853
Other languages
English (en)
French (fr)
Inventor
唐德智
杨光宇
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to CN202180089046.3A priority Critical patent/CN116686270A/zh
Priority to PCT/CN2021/070853 priority patent/WO2022147762A1/zh
Publication of WO2022147762A1 publication Critical patent/WO2022147762A1/zh

Links

Images

Definitions

  • the present application relates to the field of communication technologies, and in particular, to a data packet sorting method and apparatus.
  • the source server usually distributes multiple data packets of the same data flow to multiple switching paths through load balancing to reduce the burst congestion of the switch.
  • the sequence in which the multiple data packets arrive at the destination server is inconsistent with the sequence in which they are sent from the source server.
  • the prior art provides a data packet sorting mechanism.
  • a sorting channel is statically configured for each data stream in the destination server, the destination server stores the data packets of the same data stream received in the corresponding sorting channel, and realizes the data packets of the data stream based on the sorting channel sorting.
  • this method is only suitable for networks with a small number of data flows that need to be sorted. For a network with a large number of data flows that need to be sorted, if a sorting channel is configured for each data flow, a large number of sorting is required. resources, thereby greatly increasing the cost of equipment.
  • the present application provides a data packet sorting method and device, which can realize the sharing of sorting resources by different data streams, thereby improving the utilization rate of sorting resources, thereby reducing equipment costs.
  • a first aspect provides a data packet sorting method, which is applied to a network card including at least one sorting channel.
  • the method includes: receiving a first data packet, and obtaining a first data flow identifier and a first sequence from the first data packet.
  • index, the first data stream identifier is used to identify the first data stream
  • the first data packet is the data packet of the first data stream
  • the first sequence index is used to indicate the sending order of the first data packet in the first data stream, that is, The sequence of the first data packet in the first data stream when the source server sends the first data stream; when it is determined that the first data packet needs to be sorted according to the first data stream identifier and the first sequence index, and the first data stream identifier does not exist
  • a first sorting channel is allocated for the first data stream identifier from at least one sorting channel; the data packets (including the first data packets) of the first data stream identifier received within the first time period are stored.
  • the data packets identified by the first data flow are sorted, and the sorting may be performed after the partial data packets identified by the first data flow arrive, or after the first data flow identification All data packets are sorted after they arrive; when the data packets identified by the first data flow are not received within the second time period, it can be considered that the transmission of the first data flow identification has ended.
  • the first sorting channel can be released, and the second time The segment is later than the first time segment.
  • the first data stream identifier and the first sequence index can be obtained from the first data packet, and the first data stream identifier and the first sequence index can be determined according to the first data stream identifier and the first sequence index.
  • a first sorting channel is allocated for the first data stream identifier, and based on the first sorting channel, the data packets of the first data stream identifier received within the first time period are sorted; If the data packet with the first data stream identifier is not received in the segment, it can be considered that the transmission of the first data stream identifier has ended, thereby releasing the first sorting channel, so that the first sorting channel can be dynamically allocated to different
  • the first sorting channel is shared by different data streams in different time periods, thereby greatly reducing the demand for sorting resources, improving the utilization rate of sorting resources, and reducing equipment costs.
  • determining that the first data packets need to be sorted according to the first data stream identifier and the first sequence index includes: querying a preset correspondence according to the first data stream identifier to obtain the first indication information, the preset correspondence is used to indicate the target sequence index of the desired target data packet for the sorting of each data stream identifier in the multiple data stream identifiers, that is, the multiple data streams identified by the multiple data stream identifiers are at the same time.
  • the first data stream can be any data stream among the multiple data streams; when the target sequence index indicated by the first indication information is different from the first sequence index, it is determined that the first data packet needs to be sorted, for example, the first data packet needs to be sorted.
  • the indication information is used to indicate the target sequence number of the target data packet identified by the first data stream and expected to be sequenced.
  • the method further includes: when the first sequence index of the first data packet is the same as the target sequence index, that is, the first data packet is the desired target data packet identified by the first data stream, then determining the first data packet The packets do not need to be sorted; in addition, the network card can directly output the first data packet.
  • the first data packet is stored in the first sorting channel, and the first data packet is directly output when sorting is not required.
  • the storage space occupied by the first sorting resource is further reduced.
  • the method further includes: when the first sequence index of the first data packet is different from the start sequence index , that is, the first data packet is not the starting data packet identified by the first data stream, then it is determined that the first data packet needs to be sorted, and the first sequence index is used to indicate the sending sequence of the first data packet in the first data stream.
  • the start sequence index refers to the sequence index of the first data packet in the sending sequence corresponding to the source server; when the first sequence index is the same as the start sequence index, that is, the first data packet is the start of the first data stream identifier data packet, it is determined that the first data packet does not need to be sequenced, and at this time, the network card can also directly output the first data packet.
  • the network card can also directly output the first data packet.
  • the method when it is determined that the first data packet does not need to be sorted, the method further includes: storing in the preset correspondence according to the first sequence index of the first data packet for indicating The target sequence index of the desired target data packet identified by the first data stream, for example, the first indication information is used to indicate the next sequence index of the first sequence index; or, after sorting the data packets identified by the first data stream , and update the first indication information according to the maximum order index of the sorted data packets, for example, the updated first indication information is used to indicate the next order index of the maximum order index.
  • the method further includes: storing in the preset correspondence according to the first sequence index of the first data packet for indicating The target sequence index of the desired target data packet identified by the first data stream, for example, the first indication information is used to indicate the next sequence index of the first sequence index; or, after sorting the data packets identified by the first data stream , and update the first indication information according to the maximum order index of the sorted data packets, for example, the updated first indication information is
  • the at least one sorting channel includes multiple sorting channels
  • allocating the first sorting channel for the first data stream identifier from the at least one sorting channel includes: selecting from the multiple sorting channels for the first sorting channel
  • the first data stream identifier is assigned a first sorting channel
  • the first sorting channel is any sorting channel that is not assigned a data stream identifier among the plurality of sorting channels.
  • sorting the data packets identified by the first data stream based on the first sorting channel includes: when the first sorting channel includes multiple data packets with consecutive sequence indices, the sequence When the index is greater than the target sequence index and is continuous with the target sequence index, the plurality of data packets are sorted according to the size relationship of the sequence index, and the target sequence index is the sequence index of the desired target data packet; further, when receiving When the target data packet is reached, the network card can sequentially output the target data packet and the sequenced multiple data packets, that is, after outputting the target data packet, directly output the sequenced multiple data packets.
  • the method further includes: if the data packet with the first data stream identifier is not received within the second time period, it may be considered that the transmission of the first data stream identifier has ended, and at this time, the Delete the first indication information in the preset correspondence.
  • the data packet identified by the first data stream is not received within the second time period, it means that the transmission of the first data stream is over, and the network card deletes the first indication information in the preset correspondence.
  • the subsequent network card can store the indication information of other data stream identifiers in the preset correspondence, so that the preset correspondence can be dynamically used to indicate the ordering of data streams in different time periods, thereby improving the The utilization of the preset correspondence.
  • a data packet sorting device comprising: a receiving unit, configured to receive a first data packet; a determining unit, configured to obtain a first data stream identifier and a first sequence index from the first data packet, and determine that the first data packet needs to be sorted according to the first data stream identifier and the first sequence index, the first data stream identifier is used to identify the first data stream, and the first data packet is the data packet of the first data stream; When the first data packet needs to be sorted and there is no corresponding sorting channel for the first data flow identifier, a first sorting channel is allocated for the first data flow identifier from at least one sorting channel; the sorting unit is used for sorting at the first time.
  • the data packets identified by the first data flow received in the segment are stored in the first sorting channel, and the data packets identified by the first data flow are sorted based on the first sorting channel; the release unit is used for when in the second time period When the data packet identified by the first data stream is not received, the first sorting channel is released, and the second time period is later than the first time period.
  • the determining unit is further configured to: query a preset correspondence relationship according to the first data stream identifier to obtain the first indication information, where the preset correspondence relationship is used to indicate multiple The target sequence index of the desired target data packet for the sorting of each data flow ID in the data flow IDs, and the first indication information is used to indicate the target sequence index of the desired target data packet for the sorting of the first data flow ID; when the first indication When the target sequence index indicated by the information is different from the first sequence index, it is determined that the first data packet needs to be sorted.
  • the determining unit is further configured to: when the first sequence index of the first data packet is the same as the target sequence index, that is, the first data packet is the desired target data packet in the first data stream identifier, then determine the first data packet.
  • the data packets do not need to be sequenced; at this time, the apparatus may further include: an output unit for outputting the first data packet.
  • the determining unit is further configured to: when the first sequence index of the first data packet is not the same as the starting sequence index At the same time, that is, the first data packet is not the start data packet identified by the first data stream, it is determined that the first data packet needs to be sorted, and the first sequence index is used to indicate the sending sequence of the first data packet in the first data stream.
  • the starting sequence index refers to the sequence index of the first data packet in the sending sequence corresponding to the source server; when the first sequence index is the same as the starting sequence index, that is, the first data packet is the beginning of the first data stream identifier. If the data packet is the first data packet, it is determined that the first data packet does not need to be sequenced; at this time, the apparatus may further include: an output unit for outputting the first data packet.
  • the determining unit is further configured to: when it is determined that the first data packet does not need to be sorted, store in the preset correspondence according to the first sequence index of the first data packet for indicating The target sequence index of the desired target data packets identified by the first data flow; or, after sorting the data packets identified by the first data flow, the first indication information is updated according to the maximum sequence index of the sorted data packets.
  • the at least one sorting channel includes multiple sorting channels
  • the allocation unit is further configured to: allocate a first sorting channel from the multiple sorting channels to the first data stream identifier, and the first sorting channel
  • the channel is any ordering channel that does not have a data flow ID assigned among the plurality of ordering channels.
  • the sorting unit is further configured to: the sorting unit is further configured to: when the first sorting channel includes multiple data packets with consecutive sequence indices, the sequence index is greater than the target sequence index and is the same as the target sequence index.
  • the sequential index is continuous, multiple data packets are sorted according to the size relationship of the sequential index, and the target sequential index is the sequential index of the desired target data packet for sorting.
  • the device further includes: an output unit, configured to output the target data packet and the sorted multiple data packets in sequence when the target data packet is received, that is, after outputting the target data packet, output the sorted multiple data packets Bag.
  • the determining unit is further configured to: when the data packet identified by the first data stream is not received within the second time period, it indicates that the transmission of the first data stream is over, and delete the pre-defined packet. Let the first indication information in the corresponding relationship be set.
  • a chip in another aspect of the present application, is provided, where the chip includes the second aspect or the data packet sorting apparatus provided in any possible implementation manner of the second aspect, for example, the chip is a network card.
  • a server in yet another aspect of the present application, includes a network card and a processor, the network card is configured to send a data packet to the processor, and the network card includes the second aspect or any of the possible second aspects.
  • the data packet sorting device provided by the implementation.
  • a computer-readable storage medium where instructions are stored in the computer-readable storage medium, and when the instructions are executed on a device, the device causes the device to perform the above first aspect or the first aspect.
  • Packet ordering method provided by any of the possible implementations.
  • a computer program product which, when the computer program product runs on a device, enables the device to execute the data provided by the first aspect or any possible implementation manner of the first aspect Packet sorting method.
  • any of the data packet sorting devices, servers, computer storage media or computer program products provided above are used to execute the data packet sorting method provided above. Therefore, the beneficial effects that can be achieved can be referred to above. The beneficial effects of the data packet sorting method provided in this paper will not be repeated here.
  • FIG. 1 is a schematic structural diagram of a data center network according to an embodiment of the present application.
  • FIG. 2 is a schematic structural diagram of a server according to an embodiment of the present application.
  • FIG. 3 is a schematic flowchart of a data packet sorting method provided by an embodiment of the present application.
  • FIG. 4 is a schematic flowchart of another data packet sorting method provided by an embodiment of the present application.
  • FIG. 5 is a schematic structural diagram of a network card according to an embodiment of the present application.
  • FIG. 6 is a schematic structural diagram of a data packet sorting apparatus according to an embodiment of the present application.
  • FIG. 7 is a schematic structural diagram of another apparatus for sorting data packets according to an embodiment of the present application.
  • At least one means one or more
  • plural means two or more.
  • And/or which describes the association relationship of the associated objects, indicates that there can be three kinds of relationships, for example, A and/or B, which can indicate: the existence of A alone, the existence of A and B at the same time, and the existence of B alone, where A, B can be singular or plural.
  • the character “/” generally indicates that the associated objects are an “or” relationship.
  • At least one item(s) below” or similar expressions thereof refer to any combination of these items, including any combination of single item(s) or plural items(s).
  • At least one (a) of a, b, or c can represent: a, b, c, a-b, a-c, b-c, or a-b-c, where a, b, c may be single or multiple .
  • words such as “first” and “second” are used to distinguish the same items or similar items with basically the same functions and functions.
  • the first threshold and the second threshold are only used to distinguish different thresholds, and the sequence of the first threshold is not limited. Those skilled in the art can understand that words such as “first” and “second” do not limit the quantity and execution order.
  • FIG. 1 is a schematic structural diagram of a data center network according to an embodiment of the present application.
  • the data center network includes an access layer, an aggregation layer, and a core layer.
  • the access layer includes multiple access nodes
  • the aggregation layer includes multiple aggregation nodes
  • the core layer includes multiple access nodes.
  • a core (core) node, and the downlink port of the access node is connected to the server that needs to exchange data traffic
  • the uplink port of the access node is connected to the downlink port of the aggregation node
  • the uplink port of the aggregation node is connected to the core node.
  • the aggregation layer and the access layer may be divided into multiple groups (pods), one pod may include multiple access nodes and multiple aggregation nodes, and each access node is fully connected to multiple aggregation nodes.
  • Multiple core nodes connected to the same sink node may be referred to as a core plane (plane), and each core plane may be connected to different sink nodes in each group respectively.
  • the network includes three pods, one pod includes three access nodes and four aggregation nodes, and each core plane includes two core nodes as an example for description.
  • the access nodes in Figure 1 can be represented as A1-A9
  • the sink nodes can be represented as B1-B12
  • the core nodes can be represented as C1-C8
  • the three pods are represented as pod1-pod3 respectively.
  • the access node A1 can send the data stream of the server to which it is connected to the access node A3 through the aggregation node B1.
  • the load balancing may include a packet (packet) balancing method.
  • the method of packet balancing refers to distributing multiple data packets of a data stream in multiple sending paths according to a certain load distribution principle, that is, multiple data packets of the same data stream are transmitted to the destination server through different sending paths. .
  • the order of the multiple data packets arriving at the destination server is inconsistent with the order in which they are sent from the source server, so the destination server needs to Sort packets received from different paths to get the initial order of packets in the stream. For example, in the data center network shown in FIG.
  • the total number from the source server to the destination server includes 8
  • the source server transmits the data packets of a data stream to the access node A2 in a packet-balanced manner, and the access node A2 can evenly distribute the data packets of the data stream to the aggregation nodes B1 to B4 in the same pod.
  • B1 evenly distributes the data packets it receives to the core nodes C1 and C2 connected to it, and C1 and C2 send them to B5; similarly, B2, B3, and B4 forward the data packets to B6, B7, and B8 accordingly.
  • the data packet ordering in this document may refer to ordering the data packets of the data flow sent in a packet-balanced manner.
  • the data center network shown in FIG. 1 above is only an example.
  • the number of pods included in the data center network the number of aggregation nodes and access nodes in each pod, and the number of core planes included in the network.
  • the number and the number of core nodes in each core plane are not specifically limited in this embodiment of the present application.
  • the number of different core planes in the network including core nodes may be the same or different, and the number of aggregation nodes and access nodes in different pods may be the same or different, which is not specifically limited in this embodiment of the present application.
  • FIG. 2 is a schematic structural diagram of a server provided by an embodiment of the application.
  • the server may include a processor 201 , a memory 202 and a network card 203 .
  • the processor 201 executes various functions of the server by running or executing software programs and/or modules stored in the memory and calling data stored in the memory.
  • the processor may include one or more modules, for example, including a central processing unit (CPU) and a network processor (NP), which may be composed of an application specific integrated circuit (ASIC). ) or field programmable gate array (field programmable gate array, FPGA) chip implementation.
  • CPU central processing unit
  • NP network processor
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • Memory 202 may be used to store data, software programs, and modules, and may be implemented by any type of volatile or non-volatile memory or combination thereof, such as static random access memory, electrically erasable programmable read-only memory, Erase programmable read only memory, programmable read only memory, read only memory, magnetic memory, flash memory, magnetic disk or optical disk, etc.
  • the network card 203 can be a network interface controller (NIC), and the server can send data streams to the access nodes in the data center network through the network card 203, and can also receive access in the data center network through the network card 203 data sent by the node.
  • NIC network interface controller
  • the structure of the server shown in FIG. 2 does not constitute a limitation on its structure.
  • the server may also include more or less components than shown, or combine some components, or arrange different components.
  • FIG. 3 is a schematic flowchart of a data packet sorting method provided by an embodiment of the present application. The method can be applied to the network card of the server shown in FIG. 2 , and the method includes the following steps.
  • S301 Receive a first data packet, and acquire a first data stream identifier and a first sequence index from the first data packet.
  • the network card may be the network card in the destination server in the transmission path from the source server to the target server, that is, the network card is the network card in the server for receiving the data stream, and the data stream may be the data divided according to the quintuple
  • a data packet with the same five-tuple is regarded as a data packet of the same data flow, where the five-tuple refers to the source IP address, source port, destination IP address, destination port and protocol number.
  • the network card can be used to receive one or more data streams, and the one or more data streams can be data streams sent by one or more source servers in a packet balancing manner in load balancing.
  • the first data stream identifier is used to represent the first data stream, and the first data stream may be any one of the one or more data streams.
  • the first sequence index is used to indicate the sending sequence of the first data packets, that is, the sending sequence of the first data packets in the first data stream when the source server of the first data stream sends the first data stream.
  • the first data packet can be any one of the multiple data packets, so that the network card can receive the first data packet, and obtain the first data stream identifier and the first sequence index from the first data packet, such as , the first data packet includes a flow identification flag bit and an index flag bit, and the network card can determine the first data flow identification and the first sequence index respectively according to the flow identification flag bit and the index flag bit.
  • S302 Determine whether the first data packet needs to be sorted according to the first data stream identifier and the first sequence index. If it is determined that sorting is required, execute S303a, and if it is determined that sorting is not required, execute S303b.
  • a preset correspondence relationship is queried according to the first data stream identifier to obtain the first indication information, where the preset correspondence relationship is used to indicate the desired ordering of each data stream identifier among the multiple data stream identifiers
  • the target sequence index of the target data packet is used to indicate the target sequence index of the desired target data packet identified by the first data stream; it is determined according to the first indication information whether the first data packet needs to be sorted, that is, according to the first Whether the first data packet needs to be sorted is determined by whether the target sequence index indicated by the indication information is the same as the first sequence index of the first data packet.
  • the target sequence index of the target data packets expected to be sorted is referred to as sorting information hereinafter.
  • the identifiers of multiple data streams in the same time period may refer to the identifiers of multiple data streams concurrently within a certain time period, that is, the multiple data streams are all in the same time period.
  • the preset corresponding relationship may be a preset corresponding relationship between the data stream identifier and the target sequence index of the target data packet expected to be sorted.
  • a buffer or memory may be integrated in the network card, and a section of storage space may be configured in the buffer or memory in advance to store the preset correspondence.
  • the capacity of the preset correspondence relationship can also be set in advance.
  • the preset correspondence relationship can be set to be used to store the data flow identifier among the 32,000 (32K) data stream identifiers and the sorting information of the data packets. Correspondence.
  • the sorting information of a data packet identified by a data flow may refer to the target sequence index of the target data packet currently sorted in the data packet identified by the data flow, so that the sorting information of the data packet identified by the first data flow may be Refers to the target sequence index of the target data packet that is currently ordered and expected in the data packet identified by the first data stream. For example, if the first data flow is identified as Flow_ID1, and the data packets with sequence index No.1 and No.2 in Flow_ID1 have been output in sequence (for example, the network card has been output to the processor of the destination server), then the desired destination of the current sequence is The destination sequence index of the packet is No.3.
  • the network card may query the preset correspondence according to the first data flow identifier. If the preset correspondence includes the sorting information of the data packets corresponding to the first data flow identifier, the network card may query the preset correspondence according to the first data flow identifier.
  • the first indication information used to indicate the ordering information of the data packets corresponding to the first data flow identifier is obtained from the preset correspondence.
  • the first indication information is used to indicate the target sequence index of the target data packet that is expected to be sorted in the first data stream identifier.
  • the first sequence index of the first data packet is different from the target sequence index, it is determined that the first data packet needs to be sorted; If the first sequence index is the same as the target sequence index, it is determined that the first data packet does not need to be sorted, so that the first data packet can be directly output to the processor of the destination server. For example, if the first data flow is identified as Flow_ID1, and the data packets with sequence index No.1 and No.2 in Flow_ID1 have been output in sequence (for example, the network card has been output to the processor of the destination server), then the desired destination of the current sequence is The target sequence index of the data packet is No.3, so the first indication information can be used to indicate No.3.
  • the network card may also determine the first data according to the first sequence index of the first data packet. Whether the package needs to be sorted.
  • the sequence index of a data packet is used to indicate the sending sequence of the data packet, that is, the sequence of the data packet when the source server sends multiple data packets of the data stream, and the first sequence index is used to indicate the first data packet. The order of transmission in the first data stream.
  • the start sequence index refers to the sequence index of the first data packet in the sending sequence corresponding to the source server, and the sequence index may be the sequence number of the data packet, for example, the sequence number of the data packet corresponding to the start sequence index Can be 1.
  • determining that the first data packet needs to be sorted may include determining that the first data packet needs to be sorted according to the first indication information, and determining that the first data packet needs to be sorted according to the first sequence index and the start sequence index of the first data packet.
  • the network card may allocate a first sorting channel for the first data stream identifier from multiple sorting channels, and The first data packet is stored in a first sorting channel, where the first sorting channel is any sorting channel that is not assigned a data flow identifier among the plurality of sorting channels. That is, the first sorting channel can be considered to be allocated for the first data flow ID when the network card first receives the data packet with the first data flow ID that needs to be sorted.
  • the multiple sorting channels may be set in advance, for example, a buffer or memory may be integrated in the network card, and a section of storage space may be configured in the buffer or memory in advance as the multiple sorting channels.
  • the number of the multiple sorting channels may be set in advance, for example, the number of the multiple sorting channels may be set to 2000 (2K).
  • S303b When it is determined that the first data packet does not need to be sorted, store the first indication information in the preset correspondence according to the first sequence index of the first data packet.
  • determining that the first data does not need to be sorted may include determining that the first data packet does not need to be sorted according to the first indication information, and determining that the first data packet does not need to be sorted according to the first sequence index and the starting sequence index of the first data packet.
  • the network card may update the first indication information in the preset correspondence according to the first sequence index of the first data packet, for example, update the first indication information to the next sequence index used to indicate the first sequence index.
  • the first sequence index of the first data packet is No. 1, then the first indication information may be updated to be No. 2 in the first data stream identifier with the target index of the target data packet expected to be sorted.
  • the preset correspondence does not exist in the preset correspondence for indicating the sequence information of the data packet identified by the first data stream.
  • the first indication information at this time, the network card may add first indication information to the preset correspondence according to the first order index of the first data packet, for example, add to the preset correspondence to indicate the first order The first indication information of the next sequential index of the index.
  • first sequence index of the first data packet is No1
  • first indication information may be added to the preset corresponding relationship, where the first indication information is used to indicate the desired target data packet identified by the first data stream in order.
  • the target index is No.2.
  • the network card can also directly output the first data packet, that is, the network card can output the first data packet to the processor of the destination server.
  • S304 Store the data packets identified by the first data flow received in the first time period in the first sorting channel, and sort the data packets identified by the first data flow based on the first sorting channel.
  • the network card may determine whether each data packet needs to be sorted according to the processing methods described in the above S301-S302, and after determining the data packet When sorting is required, it is stored in the first sorting channel, and when it is determined that the data packet does not need sorting, the data packet is output, and the first indication information in the preset corresponding relationship is updated.
  • the first time period may refer to the time period from when the network card first receives the data packet identified by the first data flow to the last time it receives the data packet identified by the first data flow. For example, if the first data stream identifier includes 100 data packets, the first time period may refer to the time period from when the network card receives the first data packet to the 100th data packet.
  • the network card may sort after some data packets identified by the first data flow arrive, or may sort all the data packets identified by the first data flow Sort by arrival.
  • the network card sorts the partial data packets identified by the first data flow after arrival, the network card can complete the sorting of all the data packets identified by the first data flow through multiple sorting.
  • sorting the data packets identified by the first data flow based on the first sorting channel may include: when the first sorting channel includes multiple data packets with consecutive sequence indices, the sequence index is greater than the target sequence When the index is continuous with the target sequence index, sort the multiple data packets according to the size relationship of the sequence index, for example, according to the sequence index from small to large or from large to small.
  • the target order index is the order index of the target packet expected by the order. In this way, when receiving the target data packet, the network card can sequentially output the target data packet and the sequenced multiple data packets, that is, after outputting the target data packet, directly output the sequenced multiple data packets.
  • the network card can sort the 4 data packets in ascending order of the sequential index, that is, arrange them as No.5, No.6, No.7 and No.8. After that, when the network card receives the target data packet No.4, the network card can sequentially output the target data packet and these 4 data in the order of No.4, No.5, No.6, No.7 and No.8 packaged to the processor of the destination server.
  • the network card may also update the first indication information in the preset corresponding relationship according to the largest sequence index in the multiple data packets. For example, if the maximum sequence index is No. 8, the network card updates the first indication information in the preset corresponding relationship to be No. 9 for indicating the target sequence index of the target data packet for which the first data stream identifier is expected to be sorted.
  • the network card After the network card outputs the data packets identified by the first data stream of the first sorting channel, if no other data packets identified by the first data stream are received within the second time period, it means that the transmission of the first data stream is over, and the The network card may release the first sorting channel, and the second time period is later than the first time period. After that, when the network card receives data packets of other data streams and needs to sort the data packets of other data streams, the first sorting channel can be reassigned to other data streams for sorting the data packets. Dynamically use the same sorting channel to sort packets of data streams in different time periods, thereby improving the utilization of the sorting channel.
  • the second time period can be set in advance, and those skilled in the art can set the preset time period according to experience or actual needs.
  • the second time period can be 5 minutes or 10 minutes, etc. This is not specifically limited.
  • the method further includes: S306.
  • S306 and S305 may be in no particular order. In FIG. 4 , an example is taken that S306 is located after S305 for description.
  • the network card After the network card outputs multiple data packets of the first sorting channel, if no other data packets identified by the first data stream are received within the second time period, it means that the transmission of the first data stream is over, and the network card can delete the pre-order Assume the first indication information in the corresponding relationship, that is, delete the first indication information in the preset corresponding relationship for indicating the ordering information of the data packets identified by the first data stream, so as to release the storage space in the preset corresponding relationship. For example, the network may delete the first indication information in the preset correspondence after releasing the first sorting channel.
  • the network card when it receives data packets of other data streams and needs to sort the data packets, it can store the indication information corresponding to the other data stream identifiers in the preset correspondence, that is, the data packets of other data stream identifiers
  • the sorting information is stored in the preset correspondence, so that the preset correspondence can be dynamically used to indicate the ordering of data packets of data streams in different time periods, thereby improving the utilization of the preset correspondence.
  • the network card may include: a flow table management unit 401 , a sorting judgment unit 402 and a channel management unit 403 .
  • the flow table management unit 401 may be configured to manage the preset correspondence, for example, store the first indication information corresponding to the first data stream identifier in the preset correspondence, or delete the first indication information.
  • the sorting judging unit 402 can be used to determine whether the received data packets need to be sorted.
  • the sorting judging unit 402 can determine whether the first data packets need sorting according to the first indication information obtained from the preset correspondence, and determine whether the first data packets need sorting. It is assumed that whether the first data packet needs to be sorted is determined according to the first sequence index of the first data packet when the first indication information does not exist in the corresponding relationship.
  • the channel management unit 403 may be configured to manage multiple sorting channels, for example, allocating the first sorting channel for the first data stream identifier, releasing the first sorting channel, and the like.
  • the flow table management unit 401 may query the preset correspondence according to the first data stream identifier; if there is a first indication in the preset correspondence information, the flow table management unit 401 may output the first indication information to the sorting judgment unit 402; if the first indication information does not exist in the preset correspondence, the flow table management unit 401 may notify the sorting judgment unit 402.
  • the sorting judgment unit 402 determines whether the first data packet needs to be sorted according to the size relationship between the target sequence index indicated by the first indication information and the first sequence index of the first data packet; or, the sorting judgment unit 402 When it is determined that there is no first indication information in the preset correspondence, determine whether the first data packet needs to be sorted according to the size of the first sequence index and the start sequence index of the first data packet. If the sorting determination unit 402 determines that the first data packet needs to be sorted, the first data packet is stored in the first sorting channel; if the sorting determination unit 402 determines that the first data packet does not need to be sorted, the first data packet is directly output.
  • the time flow table management unit 401 may update or add the first indication information in the preset correspondence according to the first sequence index.
  • the channel management unit 403 may allocate the first sorting channel for the first data stream identifier.
  • the network card receives other data packets identified by the first data stream, it can be processed in the above-mentioned manner, until the first sorting channel includes multiple data packets with consecutive sequence indices, and the sequence index is greater than the target sequence index and is the same as the target sequence index.
  • the target sequence index is continuous, the multiple data packets are sorted according to the size relationship of the sequence index, and the sorted multiple data packets are output after outputting the target data packet.
  • the flow table management unit 401 may further update the first indication information in the preset correspondence according to the largest sequence index in the multiple data packets. Finally, if the data packet identified by the first data flow is not received within the second time period, the channel management unit 403 may release the first sorting channel (optionally, the channel management unit 403 may notify the flow table management unit 401 that the first sorting channel has been released a sorting channel), the flow table management unit 401 may also delete the first indication information in the preset corresponding relationship.
  • the preset correspondence may be used to indicate the ordering information of multiple data stream identifiers that are concurrent at the same time, so that when a data packet with the first data stream identifier is received within the first time period, the The first indication information corresponding to the first data stream identifier in the preset correspondence determines whether the data packet needs to be sorted, and if sorting is required, the data packet is stored in the first sorting channel allocated for the first data stream identifier and sorted, and The first sorting channel is released when the data packet with the first data flow identifier is not received within the second time period, so that the first sorting channel can be dynamically assigned to different data flow identifiers in different time periods, so that different time periods The different data streams within the segment share the first ordering channel.
  • each sorting channel in the multiple sorting channels can be dynamically shared by multiple data streams in different time periods, and at different time Multiple data streams in a segment can also share the preset correspondence, thereby greatly reducing sorting resources and further reducing equipment costs.
  • the network card includes corresponding hardware structures and/or software modules for executing each function.
  • the present invention can be implemented in hardware or a combination of hardware and computer software. Whether a function is performed by hardware or computer software driving hardware depends on the specific application and design constraints of the technical solution. Skilled artisans may implement the described functionality using different methods for each particular application, but such implementations should not be considered beyond the scope of the present invention.
  • the network card may be divided into functional modules according to the foregoing method examples.
  • each functional module may be divided corresponding to each function, or two or more functions may be integrated into one processing module.
  • the above-mentioned integrated modules can be implemented in the form of hardware, and can also be implemented in the form of software function modules. It should be noted that, the division of modules in the embodiments of the present application is schematic, and is only a logical function division, and there may be other division manners in actual implementation.
  • FIG. 6 shows a possible schematic structural diagram of the data packet sorting device involved in the above embodiment
  • the device may be a network card, and the device includes: a receiving unit 501 , a determination unit 502 , an allocation unit 503 , a sorting unit 504 and a release unit 505 .
  • the receiving unit 501 is configured to perform the step of receiving the first data packet and other data packets identified by the first data stream in the first time period in S301 of the above method embodiments; the determining unit 502 is configured to perform the steps of the above method embodiments.
  • the first data stream identifier and the first sequence index are obtained from the first data packet, S302, and other technical processes described herein, etc.; the allocation unit 503 is configured to perform S303a in the above method embodiments; the sorting unit 504 uses In executing S304 in the foregoing method embodiments; the release unit 505 executes S305 in the foregoing method embodiments. Further, the apparatus may further include an output unit 506; wherein, the output unit 506 is configured to perform the step of outputting the first data packet and/or the sequenced multiple data packets. Further, the corresponding relationship between the functional structure shown in the device and each unit of the network card shown in FIG.
  • the determining unit 502 may correspond to the functions of the flow table management unit 401 and the sorting judging unit 402 in FIG. 5 .
  • the collection, allocation unit 503 and release unit 505 may correspond to the functions of the channel management unit 403 .
  • the above-mentioned determining unit 502, allocating unit 503, sorting unit 504 and releasing unit 505 may be processors, the receiving unit 501 may be a receiver, the output unit 506 may be a transmitter, and the transmitter and the receiver may constitute communication interface.
  • the device may be a network card, and the device includes: a processor 512 , a communication interface 513 , and a memory 511 and bus 514.
  • the processor 512 , the communication interface 513 , and the memory 511 are connected to each other through a bus 514 .
  • the processor 512 is configured to control and manage the actions of the device.
  • the processor 512 is configured to perform S301 in the foregoing method embodiments to obtain the first data stream identifier and the first data stream from the first data packet.
  • the communication interface 513 is used to support the apparatus to communicate, for example, to support the apparatus to receive the first data packet, output the first data packet, and/or output the sequenced multiple data packets, and the like.
  • the memory 511 is used to store program codes and data of the device.
  • the processor 512 may be a microprocessor, an application specific integrated circuit, a field programmable gate array or other programmable logic devices, transistor logic devices, hardware components or any combination thereof. It may implement or execute the various exemplary logical blocks, modules and circuits described in connection with this disclosure.
  • the processor may also be a combination that performs computing functions, such as a combination comprising one or more microprocessors, a combination of a digital signal processor and a microprocessor, and the like.
  • the bus 514 may be a peripheral component interconnect (PCI) bus or an extended industry standard architecture (EISA) bus or the like.
  • the first data stream identifier and the first sequence index may be obtained from the first data packet, and the When a data packet needs to be sorted, a first sorting channel is allocated for the first data stream identifier, and based on the first sorting channel, the data packets with the first data stream identifier received in the first time period are sorted; If the data packet with the first data stream identifier is not received within the second time period, it can be considered that the transmission of the first data stream identifier is completed, thereby releasing the first sorting channel, so that the first sorting channel can be dynamically allocated in different time periods. Identifying different data streams enables different data streams in different time periods to share the first sorting channel, thereby greatly reducing the demand for sorting resources, improving the utilization rate of sorting resources, and reducing equipment costs.
  • a chip is also provided, and the chip is used for executing the data packet sorting method provided herein.
  • the chip can be the network card shown in FIG. 5 , or the chip includes the data packet sorting device shown in FIG. 6 or FIG. 7 .
  • a server is also provided, and the structure of the server may be as shown in FIG. 2 , that is, the server may include a processor 201 and a network card 203 ;
  • the network card 203 may be any of the network cards or data packet sorting apparatuses provided above, and is used to execute the data packet sorting method provided herein.
  • the server may further include a memory 202 .
  • a computer-readable storage medium is also provided, and instructions are stored in the computer-readable storage medium, and when at least one processor of a device executes the instructions, the device causes the device to execute the instructions provided herein. packet ordering method.
  • a computer program product includes computer-executable instructions, and the computer-executable instructions are stored in a computer-readable storage medium; at least one processor of the device can be obtained from the computer Reading the storage medium reads the computer-executable instructions, which are executed by at least one processor to cause a device to implement the data packet ordering method provided herein.

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种数据包排序方法及装置,涉及通信技术领域,实现了不同数据流对于排序资源的共享,从而提高排序资源利用率,降低设备成本。该方法包括:接收第一数据包,并从所述第一数据包中获取第一数据流标识和第一顺序索引;当根据所述第一数据流标识和所述第一顺序索引确定所述第一数据包需要排序时,从所述至少一个排序通道中为所述第一数据流标识分配第一排序通道;将在第一时间段内接收到的所述第一数据流标识的数据包存储在所述第一排序通道中,并基于所述第一排序通道对所述第一数据流标识的数据包进行排序;当在第二时间段内未接收到所述第一数据流标识的数据包时,释放所述第一排序通道,所述第二时间段晚于所述第一时间段。

Description

一种数据包排序方法及装置 技术领域
本申请涉及通信技术领域,尤其涉及一种数据包排序方法及装置。
背景技术
随着数据中心网络的带宽和规模的不断扩大,网络中数据流的数量越来越多。为了提升数据中心网络的性能,源服务器通常会将同一数据流的多个数据包通过负载均衡方式分发到多条交换路径上,以减轻交换器的突发拥塞。但是,由于该多条交换路径的转发延时不完全相同,导致该多个数据包到达目的服务器时的顺序与其从源服务器发出时的顺序不一致。
针对上述问题,现有技术提供了一种数据包排序机制。具体的,在目的服务器中静态的为每个数据流配置一个排序通道,目的服务器将接收到同一数据流的数据包存储在对应的排序通道中,并基于该排序通道实现该数据流的数据包的排序。但是,这种方式仅适用于需要排序的数据流的数量较少的网络中,对于需要排序的数据流的数量较多的网络,如果为每个数据流配置一个排序通道,则需要大量的排序资源,从而大大增加设备成本。
发明内容
本申请提供一种数据包排序方法及装置,可以实现不同数据流对于排序资源的共享,从而提高排序资源的利用率,进而降低设备成本。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种数据包排序方法,应用于包括至少一个排序通道的网卡中,该方法包括:接收第一数据包,并从第一数据包中获取第一数据流标识和第一顺序索引,第一数据流标识用于标识第一数据流,第一数据包是第一数据流的数据包,第一顺序索引用于指示第一数据包在第一数据流中的发送顺序,即源服务器发送第一数据流时第一数据包在第一数数据流中的顺序;当根据第一数据流标识和第一顺序索引确定第一数据包需要排序、且第一数据流标识不存在对应的排序通道时,从至少一个排序通道中为第一数据流标识分配第一排序通道;将在第一时间段内接收到的第一数据流标识的数据包(包括第一数据包)存储在所述第一排序通道中,并基于第一排序通道对第一数据流标识的数据包进行排序,可以在第一数据流标识的部分数据包到达后排序,也可以在第一数据流标识的所有数据包到达后排序;当在第二时间段内未接收到第一数据流标识的数据包时,可以认为第一数据流标识传输结束,此时可以释放第一排序通道,第二时间段晚于第一时间段。
上述技术方案中,当接收到第一数据包时,可以从第一数据包中获取第一数据流标识和第一顺序索引,并在根据第一数据流标识和第一顺序索引确定第一数据包需要排序时,为第一数据流标识分配第一排序通道,并基于第一排序通道对第一时间段内接收到的第一数据流标识的数据包进行排序;之后,若在第二时间段内未接收到第一数据流标识的数据包,则可以认为第一数据流标识传输结束,从而释放第一排序通道, 这样可以在不同的时间段内动态地将第一排序通道分配给不同的数据流标识,使得不同的时间段内不同数据流共享第一排序通道,从而大大降低了排序资源的需求量,提高排序资源的利用率,进而降低设备成本。
在第一方面的一种可能的实现方式中,根据第一数据流标识和第一顺序索引确定第一数据包需要排序,包括:根据第一数据流标识查询预设对应关系以获取第一指示信息,该预设对应关系用于指示多个数据流标识中每个数据流标识的排序期望的目标数据包的目标顺序索引,即该多个数据流标识所标识的多个数据流在同一时间段内均有数据包传输,或者该网卡在同一时间段内可以接收到该多个数据流的数据包,第一指示信息用于指示第一数据流标识的排序期望的目标数据包的目标顺序索引,第一数据流可以是该多个数据流中的任一数据流;当第一指示信息所指示的目标顺序索引与第一顺序索引不同时,确定第一数据包需要排序,比如,第一指示信息用于指示第一数据流标识的排序期望的目标数据包的目标序号。进一步的,该方法还包括:当第一数据包的第一顺序索引与该目标顺序索引相同时,即第一数据包是第一数据流标识的排序期望的目标数据包,则确定第一数据包不需要排序;此外,该网卡还可以直接输出第一数据包。上述可能的实现方式中,通过判断接收到第一数据包是否需要排序,并在需要排序时将第一数据包存储在第一排序通道中,在不需要排序时直接输出第一数据包,可以进一步降低第一排序资源占用的存储空间。
在第一方面的一种可能的实现方式中,若该预设对应关系中不存在第一指示信息,该方法还包括:当第一数据包的第一顺序索引与起始顺序索引不相同时,即第一数据包不是第一数据流标识的起始数据包,则确定第一数据包需要排序,第一顺序索引用于指示第一数据包在第一数据流中的发送顺序,该起始顺序索引是指源服务器对应的发送顺序中的第一个数据包的顺序索引;当第一顺序索引与该起始顺序索引相同时,即第一数据包是第一数据流标识的起始数据包,则确定第一数据包不需要排序,此时,该网卡还可以直接输出第一数据包。上述可能的实现方式中,通过判断第一数据包是否需要排序,并在后续确定需要排序时将第一数据包存储在第一排序通道中,在不需要排序时直接输出第一数据包,可以进一步降低第一排序资源占用的存储空间。
在第一方面的一种可能的实现方式中,当确定第一数据包不需要排序时,该方法还包括:根据第一数据包的第一顺序索引在该预设对应关系中存储用于指示第一数据流标识的排序期望的目标数据包的目标顺序索引,比如,第一指示信息用于指示第一顺序索引的下一个顺序索引;或者,在对第一数据流标识的数据包排序之后,根据排序后的数据包的最大顺序索引更新第一指示信息,比如,更新后的第一指示信息用于指示该最大顺序索引的下一个顺序索引。上述可能的实现方式中,通过在该预设对应关系中存储或更新第一指示信息,可以保证该预设对应关系的新鲜性和准确性性,从而便于后续接收到的数据包的排序判断。
在第一方面的一种可能的实现方式中,至少一个排序通道包括多个排序通道,从至少一个排序通道中为第一数据流标识分配第一排序通道,包括:从多个排序通道中为第一数据流标识分配第一排序通道,第一排序通道为该多个排序通道中未分配数据流标识的任一排序通道。上述可能的实现方式中,通过在确定第一数据包需要排序且第一数据流标识不存在对应的排序通道时分配第一排序通道,可以使得不同的时间段 内不同数据流共享第一排序通道,从而提高第一排序通道的利用率。
在第一方面的一种可能的实现方式中,基于第一排序通道对第一数据流标识的数据包进行排序,包括:当第一排序通道中包括顺序索引连续的多个数据包,该顺序索引大于目标顺序索引并与该目标顺序索引连续时,按照该顺序索引的大小关系对该多个数据包进行排序,该目标顺序索引是排序期望的目标数据包的顺序索引;进一步的,当接收到目标数据包时,该网卡可以依次输出目标数据包、排序后的多个数据包,即在输出目标数据包之后,直接输出排序后的多个数据包。上述可能的实现方式中,通过在第一排序通道中存储的多个数据包满足上述条件时对该多个数据包进行排序,可以保证该多个数据包能够尽快被输出,以避免排序通道中存储大量的数据包,这样可以降低排序通道占用的存储空间。
在第一方面的一种可能的实现方式中,该方法还包括:若在第二时间段内未接收到第一数据流标识的数据包,可以认为第一数据流标识传输结束,此时可以删除该预设对应关系中的第一指示信息。上述可能的实现方式中,若在第二时间段内未接收到第一数据流标识的数据包,则表示第一数据流传输结束,该网卡通过删除该预设对应关系中的第一指示信息,可以使得后续该网卡可以将其他数据流标识的指示信息存储在该预设对应关系中,这样可以动态地使用该预设对应关系对不同时间段内的数据流的排序进行指示,从而提高该预设对应关系的利用率。
第二方面,提供一种数据包排序装置,该装置包括:接收单元,用于接收第一数据包;确定单元,用于从第一数据包中获取第一数据流标识和第一顺序索引,并根据第一数据流标识和第一顺序索引确定第一数据包需要排序,第一数据流标识用于标识第一数据流,第一数据包是第一数据流的数据包;分配单元,用于在第一数据包需要排序且第一数据流标识不存在对应的排序通道时,从至少一个排序通道中为第一数据流标识分配第一排序通道;排序单元,用于将在第一时间段内接收到的第一数据流标识的数据包存储在第一排序通道中,并基于第一排序通道对第一数据流标识的数据包进行排序;释放单元,用于当在第二时间段内未接收到第一数据流标识的数据包时,释放第一排序通道,第二时间段晚于第一时间段。
在第二方面的一种可能的实现方式中,确定单元还用于:根据第一数据流标识查询预设对应关系以获取第一指示信息,预设对应关系用于指示同一时间段内的多个数据流标识中每个数据流标识的排序期望的目标数据包的目标顺序索引,第一指示信息用于指示第一数据流标识的排序期望的目标数据包的目标顺序索引;当第一指示信息所指示的目标顺序索引与第一顺序索引不同时,确定第一数据包需要排序。进一步的,确定单元还用于:当第一数据包的第一顺序索引与该目标顺序索引相同时,即第一数据包是第一数据流标识中排序期望的目标数据包,则确定第一数据包不需要排序;此时,该装置还可以包括:输出单元,用于输出第一数据包。
在第二方面的一种可能的实现方式中,若该预设对应关系中不存在第一指示信息,确定单元还用于:当第一数据包的第一顺序索引与起始顺序索引不相同时,即第一数据包不是第一数据流标识的起始数据包,则确定第一数据包需要排序,第一顺序索引用于指示第一数据包在第一数据流中的发送顺序,该起始顺序索引是指源服务器对应的发送顺序中的第一个数据包的顺序索引;当第一顺序索引与该起始顺序索引相同时, 即第一数据包是第一数据流标识的起始数据包,则确定第一数据包不需要排序;此时,该装置还可以包括:输出单元,用于输出第一数据包。
在第二方面的一种可能的实现方式中,确定单元还用于:当确定第一数据包不需要排序时,根据第一数据包的第一顺序索引在预设对应关系中存储用于指示第一数据流标识的排序期望的目标数据包的目标顺序索引;或者,在对第一数据流标识的数据包排序之后,根据排序后的数据包的最大顺序索引更新第一指示信息。
在第二方面的一种可能的实现方式中,至少一个排序通道包括多个排序通道,分配单元还用于:从多个排序通道中为第一数据流标识分配第一排序通道,第一排序通道为多个排序通道中未分配数据流标识的任一排序通道。
在第二方面的一种可能的实现方式中,排序单元还用于:排序单元还用于:当第一排序通道中包括顺序索引连续的多个数据包,顺序索引大于目标顺序索引并与目标顺序索引连续时,按照顺序索引的大小关系对多个数据包进行排序,目标顺序索引是排序期望的目标数据包的顺序索引。进一步的,该装置还包括:输出单元,用于在接收到目标数据包时,依次输出目标数据包、排序后的多个数据包,即在输出目标数据包之后,输出排序后的多个数据包。
在第二方面的一种可能的实现方式中,确定单元还用于:当在第二时间段内未接收到第一数据流标识的数据包时,则表示第一数据流传输结束,删除预设对应关系中的第一指示信息。
在本申请的又一方面,提供一种芯片,该芯片包括上述第二方面或者第二方面的任一种可能的实现方式所提供的数据包排序装置,比如,该芯片为网卡。
在本申请的又一方面,提供一种服务器,该服务器包括网卡和处理器,该网卡用于向该处理器发送数据包,该网卡包括上述第二方面或者第二方面的任一种可能的实现方式所提供的数据包排序装置。
在本申请的又一方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在设备上运行时,使得该设备执行上述第一方面或者第一方面的任一种可能的实现方式所提供的数据包排序方法。
在本申请的又一方面,提供一种计算机程序产品,当该计算机程序产品在设备上运行时,使得该设备执行上述第一方面或者第一方面的任一种可能的实现方式所提供的数据包排序方法。
可以理解地,上述提供的任一种数据包排序装置、服务器、计算机存储介质或者计算机程序产品均用于执行上文所提供的数据包排序方法,因此,其所能达到的有益效果可参考上文所提供的数据包排序方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种数据中心网络的结构示意图;
图2为本申请实施例提供的一种服务器的结构示意图;
图3为本申请实施例提供的一种数据包排序方法的流程示意图;
图4为本申请实施例提供的另一种数据包排序方法的流程示意图;
图5为本申请实施例提供的一种网卡的结构示意图;
图6为本申请实施例提供的一种数据包排序装置的结构示意图;
图7为本申请实施例提供的另一种数据包排序装置的结构示意图。
具体实施方式
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,本申请实施例采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一阈值和第二阈值仅仅是为了区分不同的阈值,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
图1为本申请实施例提供的一种数据中心网络的结构示意图。参见图1,该数据中心网络中包括接入层、汇聚层和核心层,接入层中包括多个接入(access)节点,汇聚层中包括多个汇聚(aggregation)节点,核心层包括多个核心(core)节点,且接入节点的下行端口与需要进行数据流量交换的服务器连接,接入节点的上行端口与汇聚节点的下行端口连接,汇聚节点的上行端口与核心节点连接。其中,汇聚层和接入层可以被划分为多个群组(pod),一个pod中可以包括多个接入节点和多个汇聚节点,且每个接入节点与多个汇聚节点全连接。与同一个汇聚节点连接的多个核心节点可以称为一个核心平面(plane),每个核心平面可以分别与各群组中的不同汇聚节点连接。图1中仅以该网络包括3个pod,一个pod内包括3个接入节点和4个汇聚节点,每个核心平面包括两个核心节点为例进行说明。图1中的接入节点可以表示为A1~A9,汇聚节点可以表示为B1~B12,核心节点可以表示为C1~C8,3个pod分别表示为pod1~pod3。
其中,当一个pod内不同接入节点连接的服务器之间进行数据流量交换时,可以通过与接入节点在同一pod内的汇聚节点实现,比如,接入节点A1和接入节点A3连接的服务器需要进行数据流量交换,则接入节点A1可以通过汇聚节点B1将其连接的服务器的数据流发送给接入节点A3。当不同pod内的接入节点连接的服务器之间进行数据流量交换时,可以通过与接入节点在同一pod内的汇聚节点、以及与汇聚节点连接的核心节点实现,比如,接入节点A1和接入节点A5连接的服务器需要进行数据流量交换,则接入节点A1可以将其连接的服务器的数据流发送给汇聚节点B1,由汇聚节点B1转发给核心节点C1,再由C1通过汇聚节点B5发送给接入节点A5。
通常,源服务器按照负载均衡(load balance,LB)的方式进行数据流量的交换时,该负载均衡可以包括按照包(packet)均衡的方式。其中,按照包均衡的方式是指将一个数据流的多个数据包按照一定的负载分配原则分发在多条发送路径中,即同一数 据流的多个数据包通过不同的发送路径传输至目的服务器。在按照包均衡发送数据包的方式下,由于该多条路径的转发延时不完全相同,导致该多个数据包到达目的服务器时的顺序与其从源服务器发出时的顺序不一致,从而目的服务器需要对从不同路径接收到的数据包进行排序,以得到该数据流中的数据包的初始顺序。比如,在图1所示的数据中心网络中,若接入节点A2所接入的服务器为源服务器,接入节点A5所接入的服务器为目的服务器,则从源服务器到目的服务器总共包括8条路径,源服务器按照包均衡的方式将一个数据流的数据包传输至接入节点A2,接入节点A2可以将该数据流的数据包均匀地分发给同一pod内的汇聚节点B1~B4,B1将其接收到的数据包均匀分发给与其连接的核心节点C1和C2,由C1和C2将其发送给B5;同理,B2、B3和B4将数据包对应转发送至B6、B7和B8;然后,B5、B6、B7和B8将接收到的数据包发送给接入节点A5,A5将接收到的数据包传输至目的服务器。本文中的数据包排序可以是指对按照包均衡的方式发送的数据流的数据包进行排序。
需要说明的是,上述图1所示的数据中心网络仅为示例性的,对于数据中心网络中包括的pod的数量、每个pod中汇聚节点和接入节点的数量、网络包括的核心平面的数量、以及每个核心平面中核心节点的数量,本申请实施例不作具体限定。另外,网络中不同核心平面包括核心节点的数量可以相同,也可以不同,以及不同pod中汇聚节点和接入节点的数量可以相同,也可以不同,本申请实施例对此不作具体限制。
图2为申请实施例提供的一种服务器的结构示意图。该服务器可以包括处理器201、存储器202和网卡203。其中,处理器201通过运行或执行存储在存储器内的软件程序和/或模块,以及调用存储在存储器内的数据,执行该服务器的各种功能。处理器可以包括一个或者多个模块,比如,包括中央处理单元(central processing unit,CPU)和网络处理器(network processor,NP),该网络处理器可以由专用集成电路(application specific integrated circuit,ASIC)或现场可编程门阵列(field programmable gate array,FPGA)芯片实现。存储器202可用于存储数据、软件程序以及模块,可以由任何类型的易失性或非易失性存储器或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘等。网卡203可以为网络接口控制器(network interface controller,NIC),该服务器可以通过网卡203向数据中心网络中的接入节点发送数据流,也可以通过该网卡203接收该数据中心网络中的接入节点发送的数据。
本领域技术人员可以理解,图2示出的服务器的结构并不构成对其结构的限定。在实际应用中,该服务器还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
图3为本申请实施例提供的一种数据包排序方法的流程示意图,该方法可应用于图2所示的服务器的网卡中,该方法包括以下几个步骤。
S301:接收第一数据包,并从第一数据包中获取第一数据流标识和第一顺序索引。
其中,该网卡可以为从源服务器至目标服务器的传输路径中的目的服务器中的网卡,即该网卡是用于接收数据流的服务器中的网卡,该数据流可以是按照五元组划分的数据流,比如,将五元组相同的数据包作为同一个数据流的数据包,这里的五元组是指源IP地址、源端口、目的IP地址、目的端口和协议号。该网卡可用于接收一个 或者多个数据流,该一个或者多个数据流可以是由一个或者多个源服务器按照负载均衡中的包均衡的方式发送的数据流。第一数据流标识用于表示第一数据流,第一数据流可以是该一个或者多个数据流中的任一数据流。第一顺序索引用于指示第一数据包的发送顺序,即第一数据流的源服务器发送第一数据流时第一数据包在第一数据流中的发送序。
具体的,当第一数据流的源服务器按照包均衡的方式通过数据中心网络向目的服务器发送第一数据流时,第一数据流中的多个数据包通过不同的传输路径被传输至该网卡,第一数据包可以为该多个数据包中的任一数据包,从而该网卡可以接收到第一数据包,并从第一数据包中获取第一数据流标识和第一顺序索引,比如,第一数据包中包括流标识标志位和索引标志位,则该网卡可以根据该流标识标志位和索引标志位分别确定第一数据流标识和第一顺序索引。
S302:根据第一数据流标识和第一顺序索引确定第一数据包是否需要排序。若确定需要排序则执行S303a,若确定不需要排序则执行S303b。
在一种可能的实施例中,根据第一数据流标识查询预设对应关系以获取第一指示信息,该预设对应关系用于指示多个数据流标识中每个数据流标识的排序期望的目标数据包的目标顺序索引,第一指示信息用于指示第一数据流标识的排序期望的目标数据包的目标顺序索引;根据第一指示信息确定第一数据包是否需要排序,即根据第一指示信息所指示的目标顺序索引与第一数据包的第一顺序索引是否相同来确定第一数据包是否需要排序。为便于描述,下文中将排序期望的目标数据包的目标顺序索引称为排序信息。
其中,在该预设对应关系中,同一时间段内的多个数据流标识可以是指在某一时间段内并发的多个数据流的标识,即该多个数据流在同一时间段内均有数据包传输,或者该网卡在同一时间段内可以接收到该多个数据流的数据包。
另外,该预设对应关系可以是事先设置的用于存储数据流标识与其排序期望的目标数据包的目标顺序索引之间的对应关系。该网卡中可以集成有缓存器或存储器,事先可以在该缓存器或存储器中配置一段存储空间用于存储该预设对应关系。该预设对应关系的容量也可以事先进行设置,比如,该预设对应关系可以被设置为用于存储32000(32K)个数据流标识中每个数据流标识与其数据包的排序信息之间的对应关系。
再者,一个数据流标识的数据包的排序信息可以是指该数据流标识的数据包中当前排序期望的目标数据包的目标顺序索引,从而第一数据流标识的数据包的排序信息可以是指第一数据流标识的数据包中当前排序期望的目标数据包的目标顺序索引。比如,第一数据流标识为Flow_ID1,Flow_ID1中顺序索引为No.1和No.2的数据包已经按序输出(比如,该网卡已输出至目的服务器的处理器),则当前排序期望的目标数据包的目标顺序索引为No.3。
具体的,该网卡可以根据第一数据流标识查询该预设对应关系,若该预设对应关系中包括第一数据流标识对应的数据包的排序信息,则该网卡根据第一数据流标识可以从该预设对应关系获取到用于指示第一数据流标识对应的数据包的排序信息的第一指示信息。第一指示信息用于指示第一数据流标识中排序期望的目标数据包的目标顺序索引,若第一数据包的第一顺序索引与该目标顺序索引不相同,确定第一数据包需 要排序;若第一顺序索引与该目标顺序索引相同,确定第一数据包不需要排序,从而可以直接将第一数据包输出至目的服务器的处理器中。比如,第一数据流标识为Flow_ID1,Flow_ID1中顺序索引为No.1和No.2的数据包已经按序输出(比如,该网卡已输出至目的服务器的处理器),则当前排序期望的目标数据包的目标顺序索引为No.3,从而第一指示信息可用于指示No.3。
可选的,在根据第一数据流标识查询预设对应关系之后,若该预设对应关系中不存在第一指示信息,该网卡还可以根据第一数据包的第一顺序索引确定第一数据包是否需要排序。其中,一个数据包的顺序索引用于指示该数据包的发送顺序,即源服务器发送该数据流的多个数据包时该数据包的顺序,第一顺序索引即为用于指示第一数据包在第一数据流中的发送顺序。具体的,当第一数据包的第一顺序索引与起始顺序索引相同时,则确定第一数据包不需要排序,这样可以直接输出第一数据包;当第一顺序索引与该起始顺序索引不相同时,则确定第一数据包需要排序。需要说明的是,该起始顺序索引是指源服务器对应的发送顺序中的第一个数据包的顺序索引,该顺序索引可以是数据包序号,比如,该起始顺序索引对应的数据包序号可以是1。
S303a:当确定第一数据包需要排序时,从至少一个排序通道中为第一数据流标识分配第一排序通道。这里的确定第一数据包需要排序可以包括根据第一指示信息确定第一数据包需要排序、以及根据第一数据包的第一顺序索引和起始顺序索引确定第一数据包需要排序的情况。
具体的,当确定第一数据包需要排序时,且第一数据流标识当前不存在对应的排序通道时,该网卡可以从多个排序通道中为第一数据流标识分配第一排序通道,并将第一数据包存储在第一排序通道中,第一排序通道为该多个排序通道中未分配数据流标识的任一排序通道。也即是,第一排序通道可以认为是该网卡在首次接收到第一数据流标识的需要排序的数据包时为第一数据流标识分配的。
需要说明的是,该多个排序通道可以是事先进行设置,比如,该网卡中可以集成有缓存器或存储器,事先可以在该缓存器或存储器中配置一段存储空间作为该多个排序通道。该多个排序通道的数量可以事先进行设置,比如,该多个排序通道的数量可以被设置为2000(2K)个。
S303b:当确定第一数据包不需要排序时,根据第一数据包的第一顺序索引在该预设对应关系中存储第一指示信息。这里确定第一数据不需要排序可以包括根据第一指示信息确定第一数据包不需要排序、以及根据第一数据包的第一顺序索引和起始顺序索引确定第一数据包不需要排序的情况。
具体的,当根据第一指示信息确定第一数据包不需要排序时,则该预设对应关系中已经存储有用于指示第一数据流标识的数据包的排序信息的第一指示信息;此时,该网卡可以根据第一数据包的第一顺序索引更新该预设对应关系中的第一指示信息,比如,将第一指示信息更新为用于指示第一顺序索引的下一个顺序索引。示例性的,第一数据包的第一顺序索引为No.1,则可以将第一指示信息更新为第一数据流标识中排序期望的目标数据包的目标索引为No.2。
当根据第一数据包的第一顺序索引和起始顺序索引确定第一数据包不需要排序时,则该预设对应关系中不存在用于指示第一数据流标识的数据包的排序信息的第一 指示信息;此时,该网卡可以根据第一数据包的第一顺序索引在该预设对应关系中添加第一指示信息,比如,在该预设对应关系中添加用于指示第一顺序索引的下一个顺序索引的第一指示信息。示例性的,第一数据包的第一顺序索引为No1,则可以在该预设对应关系中添加第一指示信息,第一指示信息用于指示第一数据流标识的排序期望的目标数据包的目标索引为No.2。
此外,在上述两种情况下,该网卡还可以直接输出第一数据包,即该网卡可以将第一数据包输出至目的服务器的处理器中。
S304:将在第一时间段内接收到的第一数据流标识的数据包存储在第一排序通道中,并基于第一排序通道对第一数据流标识的数据包进行排序。
当该网卡在第一时间段内接收到第一数据流标识的其他数据包时,该网卡可以按照上述S301-S302所描述的处理方式确定每个数据包是否需要排序,以及在确定该数据包需要排序时将其存储在第一排序通道中,在确定该数据包不需要排序时输出该数据包,并更新该预设对应关系中的第一指示信息。其中,第一时间段可以是指该网卡从首次接收到第一数据流标识的数据包至末次接收到第一数据流标识的数据包之间的时间段。比如,第一数据流标识包括100个数据包,则第一时间段可以是指该网卡从接收到第1个数据包至接收到第100个数据包之间的时间段。
当该网卡基于第一排序通道对第一数据流标识的数据包进行排序时,该网卡可以在第一数据流标识的部分数据包到达后排序,也可以在第一数据流标识的所有数据包到达后排序。该网卡在第一数据流标识的部分数据包到达后进行排序时,可以通过多次排序完成第一数据流标识的所有数据包的排序。
在一种可能的实施例中,基于第一排序通道对第一数据流标识的数据包进行排序可以包括:当第一排序通道中包括顺序索引连续的多个数据包,该顺序索引大于目标顺序索引并与该目标顺序索引连续时,按照该顺序索引的大小关系对该多个数据包进行排序,比如,按照该顺序索引从小到大的顺序或者从大到小的顺序对该多个数据包进行排序,该目标顺序索引是排序期望的目标数据包的顺序索引。这样,当接收到目标数据包时,该网卡可以依次输出目标数据包、排序后的多个数据包,即在输出目标数据包之后,直接输出排序后的多个数据包。比如,该目标顺序索引是No.4,该多个数据包的数量为4且对应的顺序索引分别为No.6、No.7、No.8和No.5,则No.6、No.7、No.8和No.5均大于No.4且与No.4连续,则该网卡可以将这4个数据包按照顺序索引从小到大的顺序进行排序,即将其排列为No.5、No.6、No.7和No.8。之后,当该网卡接收到目标数据包No.4时,该网卡可以按照No.4、No.5、No.6、No.7和No.8的顺序依次输出目标数据包和这4个数据包至目的服务器的处理器中。
进一步的,当该网卡输出排序后的多个数据包时,该网卡还可以根据该多个数据包中的最大顺序索引更新该预设对应关系中的第一指示信息。比如,最大顺序索引为No.8,则该网卡将该预设对应关系中的第一指示信息更新为用于指示第一数据流标识排序期望的目标数据包的目标顺序索引为No.9。
S305:当在第二时间段内未接收到第一数据流标识的数据包时,释放第一排序通道。
在该网卡输出第一排序通道的第一数据流标识的数据包后,若在第二时间段内未 接收到第一数据流标识的其他数据包,则表示第一数据流传输结束,从而该网卡可以释放第一排序通道,第二时间段晚于第一时间段。之后,当该网卡接收到其他数据流的数据包、且需要对其他数据流的数据包进行排序时,可以将第一排序通道再分配给其他数据流,用于进行数据包的排序,这样可以动态地使用同一排序通道对不同时间段内的数据流的数据包进行排序,从而提高排序通道的利用率。
需要说明的是,第二时间段可以事先进行设置,本领域技术人员可以根据经验或者实际需要设置该预设时长,比如,第二时间段可以为5分钟或10分钟等,本申请实施例对此不作具体限制。
进一步的,参见图4,该方法还包括:S306。S306和S305可以不分先后顺序,图4中以S306位于S305之后为例进行说明。
S306:当在第二时间段内未接收到第一数据流标识的数据包时,删除该预设对应关系中的第一指示信息。
在该网卡输出第一排序通道的多个数据包后,若在第二时间段内未接收到第一数据流标识的其他数据包,则表示第一数据流传输结束,该网卡可以删除该预设对应关系中的第一指示信息,即删除该预设对应关系中用于指示第一数据流标识的数据包的排序信息的第一指示信息,以释放该预设对应关系中的存储空间。比如,该网络可以在释放第一排序通道之后,删除预设对应关系中的第一指示信息。之后,当该网卡接收到其他数据流的数据包、且需要对数据包进行排序时,可以将其他数据流标识对应的指示信息存储在该预设对应关系中,即将其他数据流标识的数据包的排序信息存储在该预设对应关系中,这样可以动态地使用该预设对应关系对不同时间段内的数据流的数据包的排序进行指示,从而提高该预设对应关系的利用率。
为便于理解,下面以图5所示的网卡为例,对本申请实施例所提供的数据包的排序方法进行举例说明。如图5所示,该网卡可以包括:流表管理单元401、排序判断单元402和通道管理单元403。其中,流表管理单元401可用于管理该预设对应关系,比如,在该预设对应关系中存储第一数据流标识对应的第一指示信息,或者删除第一指示信息等。排序判断单元402可用于接收到的数据包是否需要排序,比如,排序判断单元402可以中根据从该预设对应关系中获取的第一指示信息确定第一数据包是否需要排序,以及在该预设对应关系中不存在第一指示信息时根据第一数据包的第一顺序索引确定第一数据包是否需要排序。通道管理单元403可用于管理多个排序通道,比如,为第一数据流标识分配第一排序通道、以及释放第一排序通道等。
具体的,当该网卡接收到第一数据流标识的第一数据包时,流表管理单元401可以根据第一数据流标识查询该预设对应关系;若该预设对应关系中存在第一指示信息,则流表管理单元401可以将第一指示信息输出给排序判断单元402;若该预设对应关系中不存在第一指示信息,则流表管理单元401可以通知排序判断单元402。排序判断单元402在接收到第一指示信息时根据第一指示信息所指示的目标顺序索引与第一数据包的第一顺序索引的大小关系确定第一数据包是否需要排序;或者,排序判断单元402在确定该预设对应关系中不存在第一指示信息时,根据第一数据包的第一顺序索引与起始顺序索引的大小确定第一数据包是否需要排序。若排序判断单元402确定第一数据包需要排序,则将第一数据包存储在第一排序通道中;若排序判断单元402 确定第一数据包不需要排序,则直接输出第一数据包,此时流表管理单元401可以根据第一顺序索引在该预设对应关系中更新或添加第一指示信息。当第一数据流标识不存在对应的排序通道时,通道管理单元403可以为第一数据流标识分配第一排序通道。之后,当该网卡接收到第一数据流标识的其他数据包时,可以按照上述方式进行处理,直到第一排序通道中包括顺序索引连续的多个数据包,该顺序索引大于目标顺序索引且与该目标顺序索引连续时,按照该顺序索引的大小关系对该多个数据包进行排序,并在输出目标数据包之后输出排序后的多个数据包。当输出排序后的多个数据包之后,流表管理单元401还可以根据该多个数据包中最大的顺序索引更新该预设对应关系中的第一指示信息。最后,若在第二时间段内未接收到第一数据流标识的数据包,通道管理单元403可以释放第一排序通道(可选的,通道管理单元403可以通知流表管理单元401已释放第一排序通道),流表管理单元401也可以删除该预设对应关系中的第一指示信息。
在本申请实施例中,该预设对应关系可用于指示同一时间并发的多个数据流标识的排序信息,从而在第一时间段内接收到第一数据流标识的数据包时,可以根据该预设对应关系中第一数据流标识对应的第一指示信息确定该数据包是否需要排序,若需要排序将该数据包存储在为第一数据流标识分配的第一排序通道中并排序,并在第二时间段内未接收到第一数据流标识的数据包时释放第一排序通道,从而可以在不同的时间段内动态地将第一排序通道分配为不同的数据流标识,使得不同时间段内的不同数据流共享第一排序通道。进一步的,通过该方法动态地管理多个排序通道和该预设对应关系,可以使得该多个排序通道中的每个排序通道动态地被不同时间段内的多个数据流共享,同时不同时间段内的多个数据流也可以共享该预设对应关系,从而大大降低了排序资源,进而可以降低设备成本。
上述主要从网卡的角度对本申请实施例提供的方案进行了介绍。可以理解的是,该网卡为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的网元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例可以根据上述方法示例对网卡进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的数据包排序装置的一种可能的结构示意图,该装置可以为网卡,该装置包括:接收单元501、确定单元502、分配单元503、排序单元504和释放单元505。其中,接收单元501用于执行上述方法实施例的S301中接收第一数据包、在第一时间段内第一数据流标识的其他数据包的步骤;确定单元502用于执行上述方法实施例的S301中从第 一数据包中获取第一数据流标识和第一顺序索引、S302、以及本文所描述的其他技术过程等;分配单元503用于执行上述方法实施例中的S303a;排序单元504用于执行上述方法实施例中的S304;释放单元505执行上述方法实施例中的S305。进一步的,该装置还可以包括输出单元506;其中,输出单元506用于执行输出第一数据包和/或排序后的多个数据包的步骤。进一步的,该装置所示的功能结构与图5所示的网卡的各单元之间的对应关系可以为:确定单元502可以对应图5中的流表管理单元401和排序判断单元402的功能的集合,分配单元503和释放单元505可以对应通道管理单元403的功能。
在硬件实现上,上述确定单元502、分配单元503、排序单元504和释放单元505可以为处理器,接收单元501可以为接收器,输出单元506可以为发送器,发送器与接收器可以构成通信接口。
图7所示,为本申请实施例提供的上述实施例中所涉及的数据包排序装置的一种可能的结构示意图,该装置可以为网卡,该装置包括:处理器512、通信接口513、存储器511以及总线514。处理器512、通信接口513以及存储器511通过总线514相互连接。在本申请实施例中,处理器512用于对该装置的动作进行控制管理,例如,处理器512用于执行上述方法实施例中的S301中从第一数据包中获取第一数据流标识和第一顺序索引的步骤、S302-S306,和/或用于本文所描述的技术的其他过程。通信接口513用于支持该装置进行通信,比如,支持该装置接收第一数据包、输出第一数据包、和/或输出排序后的多个数据包等。存储器511,用于存储该装置的程序代码和数据。
其中,处理器512可以是微处理器、专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线514可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。
在本申请实施例中,当接收到第一数据包时,可以从第一数据包中获取第一数据流标识和第一顺序索引,并在根据第一数据流标识和第一顺序索引确定第一数据包需要排序时,为第一数据流标识分配第一排序通道,并基于第一排序通道对第一时间段内接收到的第一数据流标识的数据包进行排序;之后,若在第二时间段内未接收到第一数据流标识的数据包,则可以认为第一数据流标识传输结束,从而释放第一排序通道,这样可以在不同的时间段内动态地将第一排序通道分配给不同的数据流标识,使得不同的时间段内的不同数据流共享第一排序通道,从而大大降低了排序资源的需求量,提高排序资源的利用率,进而降低设备成本。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在本申请的另一实施例中,还提供一种芯片,该芯片用于执行本文所提供的数据包排序方法。比如,该芯片可以为图5所述的网卡,或者该芯片包括图6或者图7所 示的数据包排序装置。
在本申请的另一实施例中,还提供一种服务器,该服务器的结构可以如图2所示,即该服务器可以包括处理器201和网卡203;其中,网卡203可用于向处理器201发送数据包,网卡203可以为上文所提供的任一种网卡或者数据包排序装置,用于执行本文所提供的数据包排序方法。可选的,该服务器还可以包括存储器202。
在本申请的另一实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当设备的至少一个处理器执行该指令时,使得该设备执行本文所提供的数据包排序方法。
在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施本文所提供的数据包排序方法。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (20)

  1. 一种数据包排序方法,其特征在于,应用于网卡中,所述网卡包括至少一个排序通道,所述方法包括:
    接收第一数据包,并从所述第一数据包中获取第一数据流标识和第一顺序索引;
    当根据所述第一数据流标识和所述第一顺序索引确定所述第一数据包需要排序时,从所述至少一个排序通道中为所述第一数据流标识分配第一排序通道;
    将在第一时间段内接收到的所述第一数据流标识的数据包存储在所述第一排序通道中,并基于所述第一排序通道对所述第一数据流标识的数据包进行排序;
    当在第二时间段内未接收到所述第一数据流标识的数据包时,释放所述第一排序通道,所述第二时间段晚于所述第一时间段。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述第一数据流标识和所述第一顺序索引确定所述第一数据包需要排序,包括:
    根据所述第一数据流标识查询预设对应关系以获取第一指示信息,所述预设对应关系用于指示多个数据流标识中每个数据流标识的排序期望的目标数据包的目标顺序索引,所述第一指示信息用于指示所述第一数据流标识的排序期望的目标数据包的目标顺序索引;
    当所述第一指示信息所指示的目标顺序索引与所述第一顺序索引不同时,确定所述第一数据包需要排序。
  3. 根据权利要求2所述的方法,其特征在于,所述方法还包括:
    当所述第一指示信息所指示的目标顺序索引与所述第一顺序索引相同时,确定所述第一数据包不需要排序。
  4. 根据权利要求2或3所述的方法,其特征在于,若所述预设对应关系中不存在所述第一指示信息,所述方法还包括:
    当所述第一数据包的所述第一顺序索引与起始顺序索引不相同时,确定所述第一数据包需要排序;
    当所述第一数据包的所述第一顺序索引与所述起始顺序索引相同时,确定所述第一数据包不需要排序。
  5. 根据权利要求2-4任一项所述的方法,其特征在于,所述方法还包括:
    当确定所述第一数据包不需要排序时,根据所述第一数据包的第一顺序索引在所述预设对应关系中存储用于指示所述第一数据流标识的排序期望的目标数据包的目标顺序索引;或者,
    在对所述第一数据流标识的数据包排序之后,根据排序后的数据包的最大顺序索引更新所述第一指示信息。
  6. 根据权利要求1-5任一项所述的方法,其特征在于,所述至少一个排序通道包括多个排序通道,所述从所述至少一个排序通道中为所述第一数据流标识分配第一排序通道,包括:
    从所述多个排序通道中为所述第一数据流标识分配第一排序通道,所述第一排序通道为所述多个排序通道中未分配数据流标识的任一排序通道。
  7. 根据权利要求1-6任一项所述的方法,其特征在于,所述基于所述第一排序通道对所述第一数据流标识的数据包进行排序,包括:
    当所述第一排序通道中包括顺序索引连续的多个数据包,所述顺序索引大于目标顺序索引并与所述目标顺序索引连续时,按照所述顺序索引的大小关系对所述多个数据包进行排序,所述目标顺序索引是排序期望的目标数据包的顺序索引。
  8. 根据权利要求7所述的方法,其特征在于,所述方法还包括:
    在接收到所述目标数据包时,依次输出所述目标数据包、排序后的多个数据包。
  9. 根据权利要求2-8任一项所述的方法,其特征在于,所述方法还包括:
    当在所述第二时间段内未接收到所述第一数据流标识的数据包时,删除所述预设对应关系中的所述第一指示信息。
  10. 一种数据包排序装置,其特征在于,该装置包括:
    接收单元,用于接收第一数据包;
    确定单元,用于从所述第一数据包中获取第一数据流标识和第一顺序索引,并根据所述第一数据流标识和所述第一顺序索引确定所述第一数据包需要排序;
    分配单元,用于在所述第一数据包需要排序时,从至少一个排序通道中为所述第一数据流标识分配第一排序通道;
    排序单元,用于将在第一时间段内接收到的所述第一数据流标识的数据包存储在所述第一排序通道中,并基于所述第一排序通道对所述第一数据流标识的数据包进行排序;
    释放单元,用于当在第二时间段内未接收到所述第一数据流标识的数据包时,释放所述第一排序通道,所述第二时间段晚于所述第一时间段。
  11. 根据权利要求10所述的装置,其特征在于,所述确定单元还用于:
    根据所述第一数据流标识查询预设对应关系以获取第一指示信息,所述预设对应关系用于指示多个数据流标识中每个数据流标识的排序期望的目标数据包的目标顺序索引,所述第一指示信息用于指示所述第一数据流标识的排序期望的目标数据包的目标顺序索引;
    当所述第一指示信息所指示的目标顺序索引与所述第一顺序索引不同时,确定所述第一数据包需要排序。
  12. 根据权利要求11所述的装置,其特征在于,所述确定单元还用于:
    当所述第一指示信息所指示的目标顺序索引与所述第一顺序索引相同时,确定所述第一数据包不需要排序。
  13. 根据权利要求11或12所述的装置,其特征在于,若所述预设对应关系中不存在所述第一指示信息,所述确定单元还用于:
    当所述第一数据包的所述第一顺序索引与起始顺序索引不相同时,确定所述第一数据包需要排序;
    当所述第一数据包的所述第一顺序索引与所述起始顺序索引相同时,确定所述第一数据包不需要排序。
  14. 根据权利要求11-13任一项所述的装置,其特征在于,所述确定单元还用于:
    当确定所述第一数据包不需要排序时,根据所述第一数据包的所述第一顺序索引 在所述预设对应关系中存储用于指示所述第一数据流标识的排序期望的目标数据包的目标顺序索引;或者,
    在对所述第一数据流标识的数据包排序之后,根据排序后的数据包的最大顺序索引更新所述第一指示信息。
  15. 根据权利要求10-14任一项所述的装置,其特征在于,所述至少一个排序通道包括多个排序通道,所述分配单元还用于:
    从所述多个排序通道中为所述第一数据流标识分配第一排序通道,所述第一排序通道为所述多个排序通道中未分配数据流标识的任一排序通道。
  16. 根据权利要求10-15任一项所述的装置,其特征在于,所述排序单元还用于:
    当所述第一排序通道中包括顺序索引连续的多个数据包,所述顺序索引大于目标顺序索引并与所述目标顺序索引连续时,按照所述顺序索引的大小关系对所述多个数据包进行排序,所述目标顺序索引是排序期望的目标数据包的顺序索引。
  17. 根据权利要求16所述的装置,其特征在于,所述装置还包括:
    输出单元,用于在接收到所述目标数据包时,依次输出所述目标数据包、排序后的多个数据包。
  18. 根据权利要求11-17任一项所述的装置,其特征在于,所述确定单元还用于:
    当在所述第二时间段内未接收到所述第一数据流标识的数据包时,删除所述预设对应关系中的所述第一指示信息。
  19. 一种服务器,其特征在于,所述服务器包括网卡和处理器,所述处理器用于接收所述网卡发送的数据包,所述网卡包括权利要求10-18任一项所述的数据包排序装置。
  20. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在设备上运行时,使得所述设备执行上述权利要求1-9任一项所述的数据包排序方法。
PCT/CN2021/070853 2021-01-08 2021-01-08 一种数据包排序方法及装置 WO2022147762A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202180089046.3A CN116686270A (zh) 2021-01-08 2021-01-08 一种数据包排序方法及装置
PCT/CN2021/070853 WO2022147762A1 (zh) 2021-01-08 2021-01-08 一种数据包排序方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/070853 WO2022147762A1 (zh) 2021-01-08 2021-01-08 一种数据包排序方法及装置

Publications (1)

Publication Number Publication Date
WO2022147762A1 true WO2022147762A1 (zh) 2022-07-14

Family

ID=82357603

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/070853 WO2022147762A1 (zh) 2021-01-08 2021-01-08 一种数据包排序方法及装置

Country Status (2)

Country Link
CN (1) CN116686270A (zh)
WO (1) WO2022147762A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102147766A (zh) * 2010-12-17 2011-08-10 曙光信息产业股份有限公司 一种维护tcp流表结构和乱序缓冲区的方法
US20120184330A1 (en) * 2011-01-17 2012-07-19 Texas Instruments Incorporated Selective protection based on sequence numbers in coexisting networks
CN106230744A (zh) * 2016-07-26 2016-12-14 京信通信系统(中国)有限公司 一种数据流乱序重组的方法及转发设备
CN107454276A (zh) * 2016-06-01 2017-12-08 中兴通讯股份有限公司 一种用户终端设备及其数据转发方法、及通信系统
CN110943933A (zh) * 2018-09-25 2020-03-31 华为技术有限公司 一种实现数据传输的方法、装置和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102147766A (zh) * 2010-12-17 2011-08-10 曙光信息产业股份有限公司 一种维护tcp流表结构和乱序缓冲区的方法
US20120184330A1 (en) * 2011-01-17 2012-07-19 Texas Instruments Incorporated Selective protection based on sequence numbers in coexisting networks
CN107454276A (zh) * 2016-06-01 2017-12-08 中兴通讯股份有限公司 一种用户终端设备及其数据转发方法、及通信系统
CN106230744A (zh) * 2016-07-26 2016-12-14 京信通信系统(中国)有限公司 一种数据流乱序重组的方法及转发设备
CN110943933A (zh) * 2018-09-25 2020-03-31 华为技术有限公司 一种实现数据传输的方法、装置和系统

Also Published As

Publication number Publication date
CN116686270A (zh) 2023-09-01

Similar Documents

Publication Publication Date Title
US11799764B2 (en) System and method for facilitating efficient packet injection into an output buffer in a network interface controller (NIC)
US10382362B2 (en) Network server having hardware-based virtual router integrated circuit for virtual networking
US11640362B2 (en) Procedures for improving efficiency of an interconnect fabric on a system on chip
US10530846B2 (en) Scheduling packets to destination virtual machines based on identified deep flow
US9294304B2 (en) Host network accelerator for data center overlay network
US6628615B1 (en) Two level virtual channels
US20130028083A1 (en) Router, method for controlling router, and program
CN107846443B (zh) 网络中的分布式处理
US20030026205A1 (en) Packet input thresholding for resource distribution in a network switch
CN100448221C (zh) 在计算机服务器中共享以太网适配器的方法和装置
US9106593B2 (en) Multicast flow reordering scheme
CN104468401A (zh) 一种报文处理方法和装置
US11303571B2 (en) Data communication method and data communications network
JP5834178B2 (ja) 半導体回路のバスシステム
CN113746751A (zh) 一种通信方法及装置
CN114666276B (zh) 一种发送报文的方法和装置
US10616116B1 (en) Network traffic load balancing using rotating hash
WO2022147762A1 (zh) 一种数据包排序方法及装置
US20230262001A1 (en) Enhanced virtual channel switching
CN112804166B (zh) 一种报文收发方法、装置及存储介质
Meyer et al. Low latency packet processing in software routers
CN114884902B (zh) 一种数据流传输方法、装置、网络设备及存储介质
US10992601B2 (en) Packet processing method and apparatus in multi-layered network environment
WO2020143509A1 (zh) 传输数据的方法和网络设备
KR102091152B1 (ko) 계층적 네트워크에서 다중코어를 이용한 패킷 처리 방법 및 그 장치

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 202180089046.3

Country of ref document: CN

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21916818

Country of ref document: EP

Kind code of ref document: A1