CN111711566A - Receiving end disorder rearrangement method under multipath routing scene - Google Patents

Receiving end disorder rearrangement method under multipath routing scene Download PDF

Info

Publication number
CN111711566A
CN111711566A CN202010629313.9A CN202010629313A CN111711566A CN 111711566 A CN111711566 A CN 111711566A CN 202010629313 A CN202010629313 A CN 202010629313A CN 111711566 A CN111711566 A CN 111711566A
Authority
CN
China
Prior art keywords
bitmap
value
packet
msn
queue
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN202010629313.9A
Other languages
Chinese (zh)
Other versions
CN111711566B (en
Inventor
顾华玺
刁兴龙
相希睿
余晓杉
朱李晶
徐晓琪
马天阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN202010629313.9A priority Critical patent/CN111711566B/en
Publication of CN111711566A publication Critical patent/CN111711566A/en
Application granted granted Critical
Publication of CN111711566B publication Critical patent/CN111711566B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers

Abstract

The invention discloses a receiving end disorder rearrangement method applied to a multipath routing scene of a computing network, which mainly solves the problem of a large amount of redundant retransmission caused by the existing go-back-N mechanism and has the scheme that: constructing a receiving bitmap linked list and a sending bitmap linked list in a network card; when the request packet reaches the network card of the receiving end, the receiving end determines the serial number of the response packet, compares the expected receiving serial number of the receiving queue with the serial number of the request packet, and caches or executes or discards the request packet according to the comparison result; when the response packet reaches the network card of the sending end, the sending end determines the request packet, and determines to discard the response packet or edit the work queue element according to the type of the response packet, the MSN message number and the bitmap entry corresponding to the sending queue. The invention reduces the occupancy rate of network card storage resources, reduces the redundant retransmission of the sending end, improves the effective throughput, and can be used for the high-performance computing network to process the data of the receiving end under the multipath routing scene.

Description

Receiving end disorder rearrangement method under multipath routing scene
Technical Field
The invention belongs to the technical field of computational networks, and particularly relates to a receiving end disorder rearrangement method which can be used for processing receiving end data under a multipath routing scene by a high-performance computational network.
Background
Although the high performance computing HPC network ensures no packet loss as much as possible, in a multipath routing scenario, a data packet sent first may arrive at a receiving end later than a data packet sent later, which may further cause a problem of data packet disorder.
The current HPC network adopts a go-back-N mechanism to process the data packet disorder problem, once a receiving end judges that a certain arrived data packet is a disorder packet, namely the sequence number of the arrived data packet is not matched with the expected receiving number of the receiving end, the data packet is immediately discarded, and a NACK packet is fed back to a sending end. After receiving the NACK packet, the transmitting end retransmits not only the data corresponding to the sequence number indicated by the NACK packet, but also all data after the sequence number, which results in a large amount of redundant retransmission. The Go-back-N mechanism is too aggressive for the handling mechanism of out-of-order packets, triggering severe network overhead,
yuanwei Lu et al, in its published article "Multi-Path Transport for RDMA in datacenters" (15th UsenIX Symposium on Networked Systems Design and demodulation (NSDI' 18) pp.362), proposes a perceptual disorder multipath selection algorithm based on MP-RDMA, which is implemented by: firstly, tracking out-of-order data packets by using a bitmap and recording the arrival state of the data packets; then caching the data packet to an extra storage space opened up at the host; and then, actively deleting the slow path at the receiving end, and only selecting the fast path with similar delay to control the occurrence degree of the unordered data packet. The method has the disadvantages that extra storage space needs to be opened for out-of-order data packets, the delay overhead is increased by operations such as data query and the like, the quick response of the network card is not facilitated, and the low-delay requirement of a high-performance computing network is difficult to meet.
Jianjun Hu in its published article, "Study on an Improved GO-BACK-N ARQ Policy" (Computer Applications and Software vol.28, No.7, pp.230-232.2011.6), proposes an Improved GO-BACK-N ARQ method, which establishes a buffer at the originating end to realize fast retransmission of erroneous or lost packets, and introduces a timeout mechanism at the receiving end to avoid system deadlock. When the receiving end receives an error data packet, starting overtime, and discarding the packet and a plurality of packets later; each time an out-of-order packet is received, the packet is discarded. The method has the disadvantages that the provided scheme is only suitable for a common computing network, the improvement on the basis of the original communication protocol has limited improvement degree on the network throughput and the time delay, and the performance is poor in a high-performance computing network requiring high throughput and low delay.
Disclosure of Invention
The invention aims to provide a receiving end disorder rearrangement method in a multipath routing scene aiming at the defects of the prior art so as to reduce the occupancy rate of network card storage resources, reduce redundancy retransmission of a transmitting end and improve the effective throughput in a computing network.
In order to achieve the above purpose, the implementation steps of the invention comprise the following steps:
(1) constructing a receiving bitmap linked list in a network card of each network node, and distributing a bitmap entry for each receiving queue in an active state in the list to record the arrival state of a request packet of the receiving queue;
(2) constructing a sending bitmap linked list in a network card of each network node, and distributing a bitmap entry for each sending queue in an active state in the list to record the arrival state of a response packet of the sending queue;
(3) according to the position of the network card in the network, different operations are respectively executed on each sending end and each response end in the network card:
executing (4) to the receiving end;
for the transmitting end, executing (5);
(4) when the request packet reaches the network card of the receiving end, the receiving end takes the number of the accumulated sent request packets as the request serial number RPSN of the request packet, compares the expected receiving serial number eRPSN of the receiving queue with the RPSN, performs caching or executing or discarding operation on the request packet according to the comparison result, and determines the response serial number APSN of the response packet returned to the sending end;
(5) when the response packet reaches the network card of the sending end, the sending end takes the number of the accumulated executed response packets as a response serial number APSN, and determines to perform an alternative operation on the response packet according to the type of the response packet, the MSN message number of the response packet and the bitmap entry corresponding to the sending queue, namely to discard the response packet or edit a work queue element WQE according to the message number which can be completed by the sending end.
Compared with the prior art, the invention has the following advantages:
first, the occupancy rate of network card storage resources is low.
The invention adopts the bitmap chain table, only records the arrival state of the disordered data packet, and still normally executes the request/response content of the disordered data packet, thereby saving the storage overhead of the network card and reducing the resource occupancy rate of the network card;
and secondly, redundant retransmission of a sending end is reduced, and effective throughput is improved.
The invention judges whether the request packet arrives out of order after the receiving end receives the request packet of a certain message, and the available out-of-order packet is cached for the request packet which arrives out of order without directly discarding the out-of-order packet, thereby avoiding a large amount of redundant retransmission of the transmitting end and further improving the effective throughput of the network.
Drawings
FIG. 1 is a schematic flow chart of an implementation of the present invention;
FIG. 2 is a diagram of packet sequence numbers of request and response packets in accordance with the present invention;
FIG. 3 is a schematic diagram of a receiving end out-of-order reordering sub-process according to the present invention;
FIG. 4 is a diagram illustrating the transmitting-end out-of-order reordering sub-process in the present invention.
Detailed Description
Embodiments of the present invention will be described in further detail with reference to the accompanying drawings.
Referring to fig. 1, the implementation steps of this example are as follows:
step 1, constructing a receiving bitmap linked list.
And constructing a receiving bitmap linked list in the network card of each network node, and allocating a bitmap entry in the list for each receiving queue in an active state to record the arrival state of the request packet of the receiving queue. Wherein:
the network card of each network node is provided with a plurality of receiving ends, and each receiving end maintains a receiving queue respectively and is used for recording the information of the received request packet;
each receiving bitmap linked list comprises a plurality of bitmap entries;
each receiving queue respectively maintains a plurality of variables of next _ APSN and MSN:
the next _ APSN variable is used for encapsulating a sequence number field of a response packet;
when the response packet is sent from the receiving end, the receiving end assigns the MSN variable to the MSN field of the header of the response packet so as to transmit the MSN variable information of the receiving end to the sending end through the response packet, and the value of the MSN variable is also used as the MSN message number of the response packet;
the bitmap entry consists of a receiving queue identifier, a receiving bitmap gap array and a receiving bitmap header, wherein the receiving queue identifier is used for marking the corresponding bitmap entry so as to facilitate subsequent operation to index the bitmap entry in the receiving bitmap linked list;
the receiving bitmap gap array comprises N bitmap gap elements, wherein N is more than or equal to 1 and is used for recording the arrival state of a data packet arriving at a receiving end, each bitmap gap element occupies 2 bits, and when the value of the bitmap gap element is '00', the receiving bitmap gap array indicates that the gap recording state is empty and the corresponding data packet does not arrive; when the value is "01", it indicates that the corresponding packet has arrived; when the value is "10", it indicates that the tail packet has arrived; the initial values of all bitmap gap elements are set to be 00, and the tail data packet refers to a Write Last request packet or a ReadLast response packet;
the receiving bitmap header always points to the bitmap slot element corresponding to the expected receiving sequence number errpsn of the receiving queue.
And 2, constructing a bitmap sending linked list.
And constructing a sending bitmap linked list in the network card of each network node, and allocating a bitmap entry in the list for each sending queue in an active state to record the arrival state of a response packet of the sending queue. Wherein:
the network card of each network node is provided with a plurality of sending ends. Each sending end maintains a sending queue respectively and is used for recording the information of the sent request packet and the received response packet;
each sending queue respectively maintains a plurality of variables of next _ RPSN, MSN _ max, MSN _ min and SSN _ first _ Read and a Read operation information table:
the next _ RPSN variable is used for encapsulating the sequence number field of the header of the request packet, and the RPSN of any request packet subsequent to the Read request packet is only increased by 1 no matter how large the request data length of the current Read request packet is;
the MSN _ max variable is a message sequence number which is accumulated and confirmed by a receiving terminal, namely a sequence number of a storage space which is released by the receiving terminal, wherein the MSN of the ACK type packet does not exceed the MSN _ max variable value;
the MSN _ min variable is the current maximum achievable message sequence number of the sending end, and the MSN of the Response type Response packet is not less than the MSN _ min variable value;
the SSN _ first _ Read variable is the message sequence number of the first Read message in the Read request packet-containing messages which are sent by the sending end but the storage space is not released;
the Read operation information table is used for allocating an information table entry to each request packet of the Read operation, and each information table entry comprises four elements which are respectively: sending a sequence number, an initial response sequence number start _ APSN of a response packet, the number of the response packets and a virtual address;
each sending end bitmap entry consists of four parts, namely a sending queue identifier, a sending bitmap gap array, an eR _ APSN variable and a sending bitmap header:
the sending queue identification is used for marking the corresponding bitmap entry, so that the bitmap entry can be conveniently indexed in a sending bitmap linked list by subsequent operation;
the sending bitmap gap array comprises N bitmap gap elements, wherein N is more than or equal to 1 and is used for recording the arrival state of a data packet arriving at a sending end, each bitmap gap element occupies 2 bits, and when the value of the bitmap gap element is '00', the bitmap gap element indicates that the gap recording state is empty and the corresponding data packet does not arrive; when the value is "01", it indicates that the corresponding packet has arrived; when the value is "10", it indicates that the tail packet has arrived; the initial values of all bitmap gap elements are set to be 00, and the tail data packet refers to a Write Last request packet or a ReadLast response packet;
the eR _ APSN variable is used to indicate the response packet sequence number of the Read request that the send queue expects to receive;
the transmission bitmap header always points to the bitmap slot element corresponding to the response packet sequence number of the Read request expected to be received by the transmission queue.
And 3, executing different subsequent operations according to the position of the network card in the network.
Each network card is provided with a plurality of receiving ends and sending ends, each sending end sends a plurality of messages to the receiving ends, each message consists of a plurality of request packets, the sending ends wait for the feedback of the receiving ends after sending the request packets of a certain message, and release the storage space of the messages which are received in sequence or resend the messages which are not received in sequence according to the content of the response packets after receiving the feedback response packets.
For a single network card, when sending a request packet in a network, it plays the role of a receiving end, and when sending a response packet, it plays the role of a sending end, that is, the positions of the network cards are different, and the functions to be implemented are also different, so different subsequent operations need to be selected:
executing step 4 to the network card of the receiving end;
and 5, executing the step 5 to the network card of the sending end.
And 4, when the request packet reaches the network card of the receiving end, the receiving end takes the accumulated number of the executed response packets as the response serial number APSN of the response packets and executes out-of-order rearrangement processing.
The request packets and the response packets are in a non-one-to-one correspondence relationship on the serial numbers, one Read operation comprises one Read request packet, such as the request packet 1 in fig. 2, and one Read request packet occupies one request serial number RPSN; a Read request packet may return multiple Response packets, such as three Response packets 1, 2, and 3 in fig. 2, where each Response packet occupies one Response sequence number APSN, i.e., one request sequence number RPSN may correspond to multiple Response sequence numbers APSN.
Referring to fig. 3, the steps are specifically implemented as follows:
4.1) judging whether the request sequence number RPSN of the request packet exceeds the bitmap item KiRange that can be recorded:
if yes, directly discarding the request packet; otherwise, execute 4.2);
4.2) comparing the request sequence number RPSN of the request packet with the expected receiving sequence number eRPSN of the receiving queue of the receiving end:
if RPSN < eRPSN, then execute 4.3);
if RPSN > eRPSN, it indicates that the request packet arrives at the receiving queue in advance, and execute 4.4);
if RPSN is equal to errpsn, it indicates that the request packet arrives in the receive queue in order, and executes 4.10);
4.3) the receiving queue discards the request packet;
4.4) comparing the difference between RPSN and eRPSN with the bitmap entry KiSize of the bitmap void array length N:
if RPSN-eRPSN > N, perform 4.3);
if RPSN-eRPSN is less than or equal to N, executing 4.5);
4.5) further judging the OpCode field value of the request packet header:
if the value of the OpCode field of the header of the Request packet is 'Read Request' in the Infiniband protocol, executing 4.6)
If the value of the OpCode field of the request packet header is 'Write Last' or 'WriteOnly' in the Infiniband protocol, executing 4.3);
if the value of the OpCode field of the request packet header is 'Write First' or 'WriteIddle' in the Infiniband protocol, executing 4.7);
4.6) buffering the request packet at the network card and executing 4.8);
4.7) the receiving queue executes the request content of the request packet, and updates the value of the bitmap gap element corresponding to the request packet to be '01' in the bitmap gap array, wherein the distance n between the bitmap gap element corresponding to the request packet and the bitmap gap element pointed by the bitmap header is the difference between RPSN and the eRPSN of the receiving queue, and then 4.8) is executed;
4.8) further judging the value of the OpCode field of the header of the request packet:
if the value of the OpCode field of the request packet header is 'Write First' or 'WriteIddle' in the Infiniband protocol, executing 4.9);
if the value of the OpCode field of the request packet header is 'Write Only' or 'WriteLast' in the Infiniband protocol, executing 4.10);
if the value of the OpCode field of the header of the Request packet is 'Read Request' in the Infiniband protocol, executing 4.11);
4.9) increasing the eRPSN and the next _ APSN variables of the receiving queue by 1, pointing the bitmap header to the next bitmap gap element, and executing 4.12) updating the bitmap header;
4.10) incrementing the eRPSN, the next _ APSN variable and the MSN variable of the receiving queue by 1, pointing the bitmap header to the next bitmap gap element, and executing 4.12) updating the bitmap header;
4.11) increasing eRPSN and MSN variables of the receiving queue by 1, increasing APSN variables of the receiving queue by L, pointing a bitmap header to a next bitmap gap element, and executing 4.12) updating the bitmap header, wherein L is the quotient of the DMA Length field value of the request packet header and the MTU value of the network maximum transmission unit;
4.12) judging the value of the bitmap header currently pointing to the bitmap gap element:
if the value is 10, executing 4.13);
if "01", execute 4.14);
if "00", execute 4.15);
4.13) increasing eRPSN, next _ APSN variable and MSN variable of the receiving queue by 1, resetting the value of the current bitmap gap element, pointing the bitmap header to the next bitmap gap element, and returning to 4.12);
4.14) the eRPSN and next _ APSN variables of the receiving queue are increased by 1, the value of the current bitmap gap element is reset, the bitmap head points to the next bitmap gap element, and the return is 4.12);
4.15) searching a specific Read request packet in the network card cache space, wherein the specific Read request packet refers to a Read request packet with a response serial number RPSN being the same as the receiving queue eRPSN:
if the specific Read request packet is not found, exiting the bitmap header updating sub-process and waiting for the next trigger condition;
if the specific Read request packet is found, executing 4.16);
4.16) incrementing the eRPSN and MSN variables of the receiving queue by 1, incrementing the APSN variable of the receiving queue by L, pointing the bitmap header to the next bitmap slot element, and returning to 4.12), wherein L is the quotient of the DMA Length field value of the request packet header and the MTU value of the network maximum transmission unit.
And 5, when the response packet reaches the network card of the sending end, the sending end takes the accumulated number of the sent request packets as the request serial number RPSN of the request packets, and carries out-of-order rearrangement processing.
Referring to fig. 4, the specific flow of this step is as follows:
and 5.1) the transmitting end indexes the bitmap entry corresponding to the transmitting queue in the transmitting bitmap chain table according to the transmitting queue identification information.
5.2) judging the value of the OpCode field of the response packet header:
if the response packet is "Acknowledge", the response packet is an ACK type packet, and 5.3) is executed;
if the Response packet is "Read Response", the Response packet is a Response type packet, and 5.7 is executed);
5.3) comparing the MSN field value of the response packet header with the value of the send queue MSN _ max variable:
if MSN is less than or equal to MSN _ max, discarding the response packet;
if MSN > MSN _ max, execute 5.4);
5.4) the sending queue updates the value of the MSN _ max variable to the value of the MSN field at the head of the response packet, and detects whether a specific information table entry exists in the Read operation information table, wherein the specific information table entry refers to the information table entry of which the value of the sending sequence number element does not exceed the value of the MSN _ max variable:
if not, executing 5.5);
if so, perform 5.6);
5.5) the sending queue sets the value of the MSN _ min variable as the value of the MSN _ max variable, and then the sending queue releases the message sent by the sending end according to the value of the MSN _ min variable, namely, the WQE of the work queue element is completed according to the value of the MSN _ min variable;
5.6) reducing the value of the SSN _ first _ read variable by 1, setting the value of the MSN _ min variable as the reduced value of the SSN _ first _ read by the sending queue, and releasing the message sent by the sending end according to the value of the MSN _ min variable, namely completing the WQE of the work queue element according to the value of the MSN _ min variable;
5.7) compare the value of the MSN field of the response packet header with the value of the MSN _ max variable of the transmit queue:
if MSN > MSN _ max, the sending queue updates the value of the MSN _ max variable to the value of the MSN field at the head of the response packet, and then executes 5.8);
if MSN is less than or equal to MSN _ max, executing 5.8);
5.8) the sending queue executes the operation content of the response packet, updates the value of the bitmap gap element corresponding to the response packet in the bitmap gap array, and then judges whether the request sequence number APSN of the response packet is the same as the value of the eR _ APSN variable in the sending queue bitmap entry:
if the APSN is eR _ APSN, it indicates that the response packet arrives at the sender in sequence, and executes 5.9) update the bitmap header;
if APSN is not equal to eR _ APSN, the response packet arrives at the sending end out of order, and 5.6 is returned;
5.9) judging the value of the bitmap gap element currently pointed by the bitmap header:
if the number is '00', exiting the bitmap header updating sub-process and waiting for the next trigger condition;
if it is "01", the bitmap header is pointed to the next bitmap gap element, and 5.9) is returned;
if the value is 10, executing 5.10);
5.10) increasing the value of the MSN _ min variable of the sending queue by 1, and further judging whether an unfinished Read operation entry still exists in the Read operation information table:
if yes, the sending queue sets the value of the eR _ APSN variable as the value of the start _ APSN element in the entry, and meanwhile, the bitmap header points to the next bitmap gap element and returns to 5.9);
if not, the sending queue sets the value of the MSN _ min variable to the value of the MSN _ max variable, points the bitmap header to the next bitmap space element, and returns to 5.9).
The foregoing description is only an example of the present invention and is not intended to limit the invention, so that it will be apparent to those skilled in the art that various changes and modifications in form and detail may be made therein without departing from the spirit and scope of the invention.

Claims (10)

1. A receiving end disorder rearrangement method under a multipath routing scene is characterized by comprising the following steps:
(1) constructing a receiving bitmap linked list in a network card of each network node, and distributing a bitmap entry for each receiving queue in an active state in the list to record the arrival state of a request packet of the receiving queue;
(2) constructing a sending bitmap linked list in a network card of each network node, and distributing a bitmap entry for each sending queue in an active state in the list to record the arrival state of a response packet of the sending queue;
(3) according to the position of the network card in the network, different operations are respectively executed on each sending end and each response end in the network card:
executing (4) to the receiving end;
for the transmitting end, executing (5);
(4) when the request packet reaches the network card of the receiving end, the receiving end takes the accumulated number of executed response packets as the response sequence number APSN of the response packet, compares the expected receiving sequence number eRPSN of the receiving queue with the request sequence number RPSN of the request packet, and performs caching or executing or discarding operation on the request packet according to the comparison result;
(5) when the response packet reaches the network card of the sending end, the sending end takes the number of the accumulated sent request packets as the request serial number RPSN of the request packet, and determines to perform an alternative operation on the response packet according to the type of the response packet, the MSN message number of the response packet and the bitmap entry corresponding to the sending queue, namely to discard the response packet, or to edit the WQE according to the MSN message number which can be completed by the sending end.
2. The method of claim 1, wherein the receive queue in (2):
each network card is provided with a plurality of receiving ends, and each receiving end maintains a receiving queue for recording the related information of the received request packet;
each receive queue maintains a plurality of variables, respectively next _ APSN and MSN:
the next _ APSN variable is used for encapsulating a sequence number field of a response packet;
when the response packet is sent from the receiving end, the receiving end assigns the MSN variable to the MSN field of the header of the response packet so as to transmit the MSN variable information of the receiving end to the sending end through the response packet, and the value of the MSN variable is also used as the MSN message number of the response packet.
3. The method of claim 1, wherein each receiving end bitmap entry in (2) consists of a receive queue identification, a receive bitmap slot array, and a receive bitmap header, wherein:
the receiving queue identification is used for marking a corresponding bitmap entry, so that subsequent operations can index the bitmap entry in a receiving bitmap linked list conveniently;
the receiving bitmap gap array comprises N bitmap gap elements, wherein N is more than or equal to 1 and is used for recording the arrival state of a data packet arriving at a receiving end, each bitmap gap element occupies 2 bits, and when the value of the bitmap gap element is '00', the receiving bitmap gap array indicates that the gap recording state is empty and the corresponding data packet does not arrive; when the value is "01", it indicates that the corresponding packet has arrived; when the value is "10", it indicates that the tail packet has arrived; the initial values of all bitmap gap elements are set to be 00, and the tail data packet refers to a Write Last request packet or a Read Last response packet;
the header of the receiving bitmap always points to the bitmap gap element corresponding to the expected receiving sequence number eRPSN of the receiving queue.
4. The method of claim 1, wherein each of the transmit queues in (3) maintains a next _ RPSN, MSN _ max, MSN _ min, and SSN _ first _ Read variables, respectively, and a Read operation information table:
the next _ RPSN variable is used for encapsulating a sequence number field of the header of the request packet, and the RPSN of any subsequent request packet of the Read request packet is only increased by 1 no matter how large the request data length of the current Read request packet is;
the MSN _ max variable is a message sequence number which is accumulated and confirmed by a receiving terminal, namely a sequence number released by the receiving terminal, wherein the MSN of the ACK type response packet does not exceed the MSN _ max variable value;
the MSN _ min variable is a message sequence number which can be completed by a sending end at present, and the MSN of the Response type Response packet is not less than the MSN _ min variable value;
the SSN _ first _ Read variable is a message sequence number of a first Read message in a message which is sent by a sending end but does not release a storage space and contains a Read request packet;
the Read operation information table is used for allocating an information table entry to each request packet of the Read operation, and each information table entry comprises four elements which are respectively: a transmission sequence number, a start response sequence number start _ APSN of the response packet, a response packet number, and a virtual address.
5. The method of claim 1, wherein each sender bitmap entry in (3) consists of four parts of a send queue identification, a send bitmap slot array, an eR APSN variable, and a send bitmap header:
the sending queue identification is used for marking the corresponding bitmap entry, so that the bitmap entry can be conveniently indexed in a sending bitmap linked list in subsequent operation;
the sending bitmap gap array comprises N bitmap gap elements, wherein N is more than or equal to 1 and is used for recording the arrival state of a data packet arriving at a sending end, each bitmap gap element occupies 2 bits, and when the value of the bitmap gap element is '00', the sending bitmap gap array indicates that the gap recording state is empty and the corresponding data packet does not arrive; when the value is "01", it indicates that the corresponding packet has arrived; when the value is "10", it indicates that the tail packet has arrived; the initial values of all bitmap gap elements are set to be 00, and the tail data packet refers to a Write Last request packet or a ReadLast response packet;
the eR _ APSN variable is used for indicating the response packet sequence number of the Read request expected to be received by the sending queue;
the sending bitmap header always points to the bitmap gap element corresponding to the response packet sequence number of the Read request expected to be received by the sending queue.
6. The method of claim 1, wherein the request packets described in (4) include a Read request packet and a Write request packet, wherein:
the Read request packet is further subdivided into various types of a Read first request packet, a Read Middle request packet, a Read only request packet and a Read last request packet according to the value of the OpCode field at the head part of the Read request packet;
the Write request packet is further subdivided into a plurality of types, according to the value of the OpCode field in the header thereof, a Write First request packet, a Write emiddle request packet, a Write Only request packet, and a Write Last request packet.
7. The method according to claim 1, wherein the different operations are performed on the request packet according to the result of comparing the expected receiving sequence number of the receiving-side receiving queue, eRPSN, with the request sequence number of the request packet in (4), and are implemented as follows:
(4a) judging whether the request sequence number RPSN of the request packet exceeds the bitmap item KiRange that can be recorded:
if yes, directly discarding the request packet; otherwise, executing (4 b);
(4b) judging the size of the request sequence number RPSN of the request packet and the expected receiving sequence number eRPSN of the receiving queue of the receiving end:
if RPSN < eRPSN, then (4c) is executed;
if RPSN > eRPSN, it shows that the request packet arrives at the receiving queue in advance, and execute (4 d);
if the RPSN is equal to eRPSN, the request packet arrives at the receiving queue in sequence, and the step (4j) is executed;
(4c) the receiving queue discards the request packet;
(4d) determining the difference between RPSN and eRPSN and the bitmap entry KiSize of the bitmap void array length N:
if RPSN-eRPSN > N, then (4c) is executed;
if RPSN-eRPSN is less than or equal to N, executing (4 e);
(4e) further judging the OpCode field value of the request packet header:
if the value of the OpCode field of the header of the request packet is 'ReadRequest', executing (4 f);
if the value of the OpCode field of the request packet header is "Write Last" or "Write one", then executing (4 c);
if the value of the OpCode field of the request packet header is 'Write First' or 'Write Middle', executing (4 g);
(4f) caching the request packet at the network card and executing (4 h);
(4g) the receiving queue executes the request content of the request packet, updates the value of the bitmap gap element corresponding to the request packet to be '01' in the bitmap gap array, and executes (4h) after the distance n between the bitmap gap element corresponding to the request packet and the bitmap gap element pointed by the bitmap head is the difference between RPSN and eRPSN in the receiving queue;
(4h) further judging the value of the OpCode field of the header of the request packet:
if the value of the OpCode field of the request packet header is 'Write First' or 'Write Middle', then executing (4 l);
if the value of the OpCode field of the request packet header is 'Write Only' or 'Write Last', executing (4 j);
if the value of the OpCode field of the header of the request packet is 'ReadRequest', executing (4 k);
(4i) incrementing the eRPSN and next _ APSN variables of the receiving queue by 1, pointing the bitmap header to the next bitmap gap element, and executing (4 l);
(4j) increasing the eRPSN, the next _ APSN variable and the MSN variable of the receiving queue by 1, pointing the head of the bitmap to the next bitmap gap element, and executing (4 l);
(4k) increasing eRPSN and MSN variables of the receiving queue by 1, increasing APSN variables of the receiving queue by L, directing a bitmap header to a next bitmap gap element, and executing (4L), wherein L is the quotient of the DMA Length field value of the request packet header and the MTU value of the network maximum transmission unit;
(4l) updating bitmap header.
8. The method of claim 7, wherein the bitmap header is updated in (4l) as follows:
(4l1) determine the value of the bitmap space element currently pointed to by the bitmap header:
if the result is 10, executing (4l 2);
if the result is '01', executing (4l 3);
if "00", execute (4l 4);
(4l2) incrementing the eRPSN, next _ APSN variable, MSN variable of the receive queue by 1, resetting the value of the current bitmap slot element, and pointing the bitmap header to the next bitmap slot element, returning (4l 1);
(4l3) increment the eRPSN, next _ APSN variable of the receive queue by 1, reset the value of the current bitmap slot element, and the bitmap header points to the next bitmap slot element, return (4l 1);
(4l4) searching a specific Read request packet in the network card cache space, wherein the specific Read request packet refers to a Read request packet with a response sequence number RPSN being the same as the receiving queue errpsn:
if the specific Read request packet is not found, exiting the bitmap header updating process and waiting for the next trigger condition;
if the specific Read request packet is found, executing (4l 5);
(4L5) increment both the eRPSN and MSN variables of the receive queue by 1, increment the APSN variable of the receive queue by L, pointing the bitmap header to the next bitmap slot element, and return (4L1), where L is the quotient of the DMA Length field value of the request packet header and the network maximum Transmission Unit MTU value.
9. The method according to claim 1, wherein in (5), according to the type of the response packet, the message number MSN of the response packet, and the bitmap entry corresponding to the transmission queue, it is determined to perform an alternative operation on the response packet, which is implemented as follows:
(5a) after the response packet reaches the network card of the sending end, the sending end indexes the bitmap entry corresponding to the sending queue in the sending bitmap linked list according to the sending queue identification information;
(5b) judging the value of the OpCode field of the response packet header:
if the response packet is 'acknowledgement', the response packet is an ACK type packet, and executing (5 c);
if the Response packet is 'ReadResponse', the Response packet is a Response type packet, and execution is carried out (5 g);
(5c) comparing the MSN field value of the response packet header with the value of the send queue MSN _ max variable:
if MSN is less than or equal to MSN _ max, discarding the response packet;
if MSN > MSN _ max, then (5d) is executed;
(5d) the sending queue updates the value of the MSN _ max variable to the value of the MSN field at the head of the response packet, and detects whether a specific information table entry exists in the Read operation information table, wherein the specific information table entry refers to the information table entry of which the value of the sending sequence number element does not exceed the value of the MSN _ max variable:
if not, executing (5 e);
if yes, executing (5 f);
(5e) the sending queue sets the value of the MSN _ min variable as the value of the MSN _ max variable, and then releases the message sent by the sending end according to the value of the MSN _ min variable, namely, the WQE of the work queue element is completed according to the value of the MSN _ min variable;
(5f) reducing the value of the SSN _ first _ read variable by 1, setting the value of the MSN _ min variable as the reduced value of the SSN _ first _ read by the sending queue, and releasing the message sent by the sending end according to the value of the MSN _ min variable, namely completing the WQE of a work queue element according to the value of the MSN _ min variable;
(5g) compare the value of the MSN field of the response packet header to the value of the transmit queue MSN _ max variable:
if MSN > MSN _ max, the sending queue updates the value of MSN _ max variable to the value of MSN field at the head of the response packet, and then executes (5 h);
if MSN is less than or equal to MSN _ max, executing (5 h);
(5h) the sending queue executes the operation content of the response packet, updates the value of the bitmap gap element corresponding to the response packet in the bitmap gap array, and then judges whether the request sequence number APSN of the response packet is the same as the value of the eR _ APSN variable in the bitmap entry of the sending queue:
if yes, then the response packet arrives at the sending end in sequence, and execute (5 i);
if APSN is not equal to eR _ APSN, the response packet arrives at the sending end out of order, and the step (5f) is returned;
(5i) the bitmap header is updated.
10. The method of claim 9, wherein the bitmap header in (5i) is updated by:
(5i1) judging the value of the bitmap gap element currently pointed by the bitmap header:
if the current gap state is '00', the current gap state is 'null', the bitmap header updating process is exited, and the next trigger condition is waited;
if the current slot state is '01', the current slot state is 'reached', and the bitmap header is pointed to the next bitmap slot element and returned (5i 1);
if the current gap state is '10', the current gap state is 'tail reached', and the step (5i2) is executed;
(5i2) increasing the value of the MSN _ min variable of the sending queue by 1, and further judging whether an unfinished Read operation item still exists in the Read operation information table:
if so, the send queue sets the value of the eR _ APSN variable to the value of the start _ APSN element in the entry, with the bitmap header pointing to the next bitmap slot element, and returns (5i 1);
if not, the send queue sets the value of the MSN _ min variable to the value of the MSN _ max variable and points the bitmap header to the next bitmap slot element, returning (5i 1).
CN202010629313.9A 2020-07-03 2020-07-03 Receiving end disorder rearrangement method under multipath routing scene Active CN111711566B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010629313.9A CN111711566B (en) 2020-07-03 2020-07-03 Receiving end disorder rearrangement method under multipath routing scene

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010629313.9A CN111711566B (en) 2020-07-03 2020-07-03 Receiving end disorder rearrangement method under multipath routing scene

Publications (2)

Publication Number Publication Date
CN111711566A true CN111711566A (en) 2020-09-25
CN111711566B CN111711566B (en) 2021-07-27

Family

ID=72546399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010629313.9A Active CN111711566B (en) 2020-07-03 2020-07-03 Receiving end disorder rearrangement method under multipath routing scene

Country Status (1)

Country Link
CN (1) CN111711566B (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113300818A (en) * 2021-02-08 2021-08-24 阿里巴巴集团控股有限公司 Data transmission system and method
CN114090484A (en) * 2021-11-15 2022-02-25 深圳云豹智能有限公司 Remote direct data access method and device
CN114866343A (en) * 2022-07-04 2022-08-05 支付宝(杭州)信息技术有限公司 Data processing method and device
CN116708280A (en) * 2023-08-08 2023-09-05 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) Data center network multipath transmission method based on disorder tolerance
CN116915370A (en) * 2023-09-14 2023-10-20 珠海星云智联科技有限公司 Data retransmission method, device and system based on remote direct data access
WO2024022243A1 (en) * 2022-07-26 2024-02-01 中兴通讯股份有限公司 Data transmission method, network device, computer device, and storage medium

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555266A (en) * 1993-10-04 1996-09-10 Motorola, Inc. Method for reducing transmission delays in a packet transmission system
EP0785698B1 (en) * 1996-01-16 2005-07-13 AT&T Corp. Buffering of multicast cells in switching networks
CN101977100A (en) * 2005-06-29 2011-02-16 英特尔公司 Block acknowledgement using a scoreboard of temporary records
CN104935413A (en) * 2014-03-19 2015-09-23 夏普株式会社 Packet data convergence protocol PDCP entity and execution method thereof
US20150293793A1 (en) * 2014-04-09 2015-10-15 Samsung Electronics Co., Ltd. Method and apparatus for providing a preemptive task scheduling scheme in a real time operating system
CN107395639A (en) * 2017-08-29 2017-11-24 天津艾科仪科技有限公司 Intelligence obtains the method and system of video data in network
CN109714649A (en) * 2017-10-26 2019-05-03 北京航天长峰科技工业集团有限公司 The method of RTP-OVER-UDP packet loss and the treatment mechanism that reorders
CN111030927A (en) * 2019-11-20 2020-04-17 中国人民解放军国防科技大学 Network-on-chip routing method and network router with sequential perception
CN112165457A (en) * 2020-09-04 2021-01-01 苏州浪潮智能科技有限公司 Method, system and device for file rearrangement and readable storage medium

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5555266A (en) * 1993-10-04 1996-09-10 Motorola, Inc. Method for reducing transmission delays in a packet transmission system
EP0785698B1 (en) * 1996-01-16 2005-07-13 AT&T Corp. Buffering of multicast cells in switching networks
CN101977100A (en) * 2005-06-29 2011-02-16 英特尔公司 Block acknowledgement using a scoreboard of temporary records
CN104935413A (en) * 2014-03-19 2015-09-23 夏普株式会社 Packet data convergence protocol PDCP entity and execution method thereof
US20150293793A1 (en) * 2014-04-09 2015-10-15 Samsung Electronics Co., Ltd. Method and apparatus for providing a preemptive task scheduling scheme in a real time operating system
CN107395639A (en) * 2017-08-29 2017-11-24 天津艾科仪科技有限公司 Intelligence obtains the method and system of video data in network
CN109714649A (en) * 2017-10-26 2019-05-03 北京航天长峰科技工业集团有限公司 The method of RTP-OVER-UDP packet loss and the treatment mechanism that reorders
CN111030927A (en) * 2019-11-20 2020-04-17 中国人民解放军国防科技大学 Network-on-chip routing method and network router with sequential perception
CN112165457A (en) * 2020-09-04 2021-01-01 苏州浪潮智能科技有限公司 Method, system and device for file rearrangement and readable storage medium

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DANIEL LLORENTE 等: "《Buffer allocation for advanced packet segmentation in Network Processors》", 《2008 INTERNATIONAL CONFERENCE ON APPLICATION-SPECIFIC SYSTEMS, ARCHITECTURES AND PROCESSORS》 *
LI YAN 等: "《Synthetic Comparison and Management for Data with Multi Storage Types》", 《2019 IEEE 4TH INTERNATIONAL CONFERENCE ON BIG DATA ANALYTICS (ICBDA)》 *
朱小勇: "《TCP乱序重排功能对无线网络感知影响研究》", 《中国新通信》 *
韩晓鑫: "《TCP段乱序重排的硬件设计与实现》", 《信息技术》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113300818A (en) * 2021-02-08 2021-08-24 阿里巴巴集团控股有限公司 Data transmission system and method
CN114090484A (en) * 2021-11-15 2022-02-25 深圳云豹智能有限公司 Remote direct data access method and device
CN114090484B (en) * 2021-11-15 2023-08-08 深圳云豹智能有限公司 Remote direct data access method and device
CN114866343A (en) * 2022-07-04 2022-08-05 支付宝(杭州)信息技术有限公司 Data processing method and device
WO2024022243A1 (en) * 2022-07-26 2024-02-01 中兴通讯股份有限公司 Data transmission method, network device, computer device, and storage medium
CN116708280A (en) * 2023-08-08 2023-09-05 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) Data center network multipath transmission method based on disorder tolerance
CN116708280B (en) * 2023-08-08 2023-10-24 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) Data center network multipath transmission method based on disorder tolerance
CN116915370A (en) * 2023-09-14 2023-10-20 珠海星云智联科技有限公司 Data retransmission method, device and system based on remote direct data access
CN116915370B (en) * 2023-09-14 2023-12-19 珠海星云智联科技有限公司 Data retransmission method, device and system based on remote direct data access

Also Published As

Publication number Publication date
CN111711566B (en) 2021-07-27

Similar Documents

Publication Publication Date Title
CN111711566B (en) Receiving end disorder rearrangement method under multipath routing scene
US11855881B2 (en) System and method for facilitating efficient packet forwarding using a message state table in a network interface controller (NIC)
US11934340B2 (en) Multi-path RDMA transmission
US8244906B2 (en) Method and system for transparent TCP offload (TTO) with a user space library
US8416768B2 (en) Method and system for transparent TCP offload with best effort direct placement of incoming traffic
US6493343B1 (en) System and method for implementing multi-pathing data transfers in a system area network
KR100850254B1 (en) Reducing number of write operations relative to delivery of out-of-order rdma send messages
US20070208820A1 (en) Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations
US20080043750A1 (en) Apparatus and method for in-line insertion and removal of markers
US8223788B1 (en) Method and system for queuing descriptors
CN112953967A (en) Network protocol unloading device and data transmission system
US7298749B2 (en) Completion coalescing by TCP receiver
US7773620B2 (en) Method, system, and program for overrun identification
CN113572582B (en) Data transmission and retransmission control method and system, storage medium and electronic device
US7822051B1 (en) Method and system for transmitting packets
CN114363260B (en) Data flow scheduling system for data center network
JP5761193B2 (en) Communication apparatus, communication system, packet retransmission control method, and packet retransmission control program
CN116722884A (en) Network interface supporting remote data direct access protocol
CN117879768A (en) RDMA long-distance communication retransmission method and system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant