Intermediate device and communication method
The introduction of an intermediate device with a retransmission unit and pseudo ACK mechanism addresses the performance degradation in long-distance RDMA networks by managing queues and retransmitting only lost packets, enhancing data transfer efficiency.
Patent Information
- Application Number
- PCT/JP2023/026085
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-07-14
- Publication Date
- 2025-01-23
AI Technical Summary
In long-distance networks using Remote Direct Memory Access (RDMA) for data transfer, the delay in request and response exchange leads to incomplete Work Queue Entries (WQEs) in Send Queues, causing an increase in the number of waiting Work Requests and deteriorating transfer performance.
An intermediate device is introduced between the sending and receiving devices, equipped with a control unit for packet forwarding and storage, a retransmission unit that detects packet loss and requests retransmission, and a pseudo ACK mechanism to manage queues, ensuring only lost packets are retransmitted, thereby reducing the burden on the communication system.
This solution effectively suppresses the deterioration in transfer performance by managing queues and retransmitting only lost packets, improving the efficiency of data transfer in long-distance networks.
Smart Images

Figure JP2023026085_23012025_PF_FP_ABST
Abstract
Description
Intermediate device and communication method
[0001] The present disclosure relates to an intermediate device and a communication method.
[0002] Remote Direct Memory Access (RDMA) is a communication protocol that enables high-speed and reliable data transfer between remote communication terminals. RDMA enables high-speed communication by directly accessing memory from the memory area of the sending device to the memory area of the receiving device. RDMA has a credit-based flow control function and performs retransmission control based on timer-out and packet loss detection, allowing for highly reliable communication.
[0003] InfiniBand Architecture Specification Volume 1, Release 1.4, April 7, 2020
[0004] RDMA is a data transfer model that uses a Queue Pair (QP) consisting of a Send Queue (SQ) and a Receive Queue (RQ). Data transfer requests are made in units called Work Requests (WR), and these requests are stored as Work Queue Entries (WQE) in the SQ or RQ. When processing of the WQE between QPs is completed, the WQE in the SQ or RQ is deleted, allowing the next WR to be processed.
[0005] In connection-based service types, an ACK must be received from the receiving side in order for the sending side to complete the WQE. If a long-distance network exists between the sending and receiving side, the exchange of requests and responses takes time, and incomplete WQEs accumulate in the SQ. This causes an increase in WRs waiting to be processed, resulting in a decrease in transfer performance.
[0006] The present disclosure has been made in view of the above, and aims to suppress degradation of transfer performance in long-distance networks.
[0007] An intermediate device according to one aspect of the present disclosure is an intermediate device disposed between a first device and a second device that transfer data using remote direct memory access, and includes: a first queue for storing transferred packets; a second queue for storing unprocessed packets; a control unit that receives and forwards packets to be transmitted from the first device to the second device and stores the packets in the first queue; and a retransmission unit that performs packet retransmission processing, wherein the retransmission unit requests retransmission of the lost packet when packet loss is detected, and after detecting packet loss, the control unit stores packets received up until the retransmission packet is received in the second queue, and when the retransmission packet is received, forwards the retransmission packet and stores it in the first queue, and after forwarding the retransmission packet, forwards the packets stored in the second queue and stores them in the first queue.
[0008] According to the present disclosure, it is possible to suppress a decrease in transfer performance in a long-distance network.
[0009] FIG. 1 is a diagram illustrating an example of the configuration of a communication system. FIG. 2 is a flowchart illustrating an example of the flow of a forwarding process. FIG. 3 is a flowchart illustrating an example of the flow of a forwarding process. FIG. 4 is a diagram illustrating the state of a queue when a packet is lost. FIG. 5 is a diagram illustrating the state of a queue when a packet is lost. FIG. 6 is a diagram illustrating the state of a queue when a packet is lost. FIG. 7 is a diagram illustrating an example of a Go-Back-N retransmission process. FIG. 8 is a diagram illustrating an example of a selective retransmission process. FIG. 9 is a diagram illustrating an example in which the retransmission process to be adopted varies depending on the location. FIG. 10 is a diagram illustrating an example in which an intermediate node is configured on a NIC. FIG. 11 is a diagram illustrating an example of the hardware configuration of an intermediate node.
[0010] Hereinafter, embodiments of the present disclosure will be described with reference to the drawings.
[0011] An example of the configuration of a communication system according to this embodiment will be described with reference to FIG. 1. The communication system shown in the figure includes a sending node 30 and a receiving node 50 that transfer data using RDMA, as well as intermediate nodes 10A and 10B that are disposed between the sending node 30 and the receiving node 50. The sending node 30 divides data into packets and transmits the packets to the receiving node 50 via the intermediate node 10A, a long-distance network, and the intermediate node 10B. The intermediate node 10A is disposed between the sending node 30 and the long-distance network, and the intermediate node 10B is disposed between the long-distance network and the receiving node 50. The intermediate nodes 10A and 10B are connected via the long-distance network. The sending node 30 and the receiving node 50 may be referred to as a requester and a responder, respectively.
[0012] When transferring data from the sending node 30 to the receiving node 50, the sending node 30 specifies the memory area of the data to be sent in the WQE and places it in the SQ, and the receiving node 50 specifies the memory area from which it wants to receive the data in the WQE and places it in the RQ. WQEs can be placed in the SQ or RQ up to the queue size of the SQ or RQ. When the processing of the WR between the QPs is completed successfully, the WQE is released from the SQ and RQ. In order for the sending node 30 to complete the WQE, it must receive an ACK from the receiving node 50. By receiving the ACK, the sending node 30 can confirm that the data was received successfully by the receiving node 50.
[0013] 1, during data transfer, the intermediate node 10A transmits a pseudo ACK to the transmitting node 30, and the transmitting node 30 releases the WQE of the SQ in response to the pseudo ACK. To prevent the transmitting node 30 from receiving duplicate responses, the intermediate node 10B discards the response from the receiving node 50.
[0014] If the intermediate node 10B discards the response, the transmitting node 30 will not be able to detect the packet retransmission request even if the receiving node 50 requests retransmission of the packet. The intermediate node 10B holds the packet in a queue until it receives an ACK from the receiving node 50, and responds to the packet retransmission request from the receiving node 50 instead of the transmitting node 30.
[0015] Furthermore, since the pseudo ACK increases the amount of data transmitted from the transmitting node 30, using the Go-Back-N retransmission method in the RDMA specification causes the retransmitted packets to constrain the communication bandwidth, resulting in a decrease in performance. Go-Back-N is a method of retransmitting all packets following a packet loss. The intermediate node 10B suppresses the amount of retransmitted packets by retaining in a queue the packets already received after the packet loss rather than discarding them, and requesting the retransmission of only the lost packets.
[0016] An example of the configuration of the intermediate nodes 10A and 10B will be described below.
[0017] The intermediate node 10A includes a forwarding unit 11 and a pseudo-response unit 12. The intermediate node 10B includes a forwarding unit 11 and a response discarding unit 13.
[0018] The forwarding unit 11 forwards packets transmitted and received between the sending node 30 and the receiving node 50. The forwarding unit 11 of the intermediate node 10A receives packets from the sending node 30 and forwards them to the intermediate node 10B. The forwarding unit 11 of the intermediate node 10B receives packets from the intermediate node 10A and forwards them to the receiving node 50. The forwarding units 11 of the intermediate nodes 10A and 10B have almost the same functions, so the functions of the forwarding units 11 of the intermediate nodes 10A and 10B will be explained together below.
[0019] The transfer unit 11 includes a control unit 111 , a forwarding queue 112 , a staging queue 113 , and a retransmission unit 114 .
[0020] The forwarding queue 112 is a queue that temporarily holds packets that have been forwarded. When an ACK is received from the destination node, the packet in the forwarding queue 112 is released. When a packet retransmission request is received from the destination node, the packet held in the forwarding queue 112 is retransmitted. The destination node is the intermediate node 10B in the case of the intermediate node 10A, and the receiving node 50 in the case of the intermediate node 10B.
[0021] The staging queue 113 is a queue that temporarily holds unprocessed packets that have been received but not yet transferred. When a packet loss is detected, the staging queue 113 holds packets received after the packet loss is detected until the lost packets are retransmitted.
[0022] The control unit 111 evaluates received packets based on the sequence number assigned to each packet and forwards or requests retransmission of the packets. Data is divided into packets with consecutive packet sequence numbers (PSNs) assigned and transmitted in the order of the PSNs. If the PSN of a received packet is the same as the expected PSN (hereinafter referred to as the ePSN), the control unit 111 stores the received packet in the forwarding queue 112 and then forwards it to the next node. If the PSN of a received packet is different from the ePSN, the control unit 111 stores the received packet in the staging queue 113. If the staging queue 113 holds a packet, the control unit 111 manages the PSN of the last packet stored in the staging queue 113 + 1 as an unprocessed PSN (hereinafter referred to as the oPSN). The oPSN indicates the PSN of a normal packet that may arrive before the retransmission packet is received. If the PSN of a received packet is neither the ePSN nor the oPSN, the control unit 111 determines that a packet loss has occurred.
[0023] When a retransmission packet is received, the control unit 111 stores the retransmission packet in the forwarding queue 112 and then forwards it to the next node, and moves the packet held in the staging queue 113 to the forwarding queue 112 and then forwards it to the next node.
[0024] The retransmission unit 114 requests retransmission of lost packets and retransmits packets in response to retransmission requests. The retransmission unit 114 of the intermediate node 10A retransmits packets in response to a retransmission request from the intermediate node 10B. The retransmission unit 114 of the intermediate node 10B requests the intermediate node 10A to retransmit packets. Furthermore, the retransmission unit 114 of the intermediate node 10A requests the sending node 30 to retransmit packets, and the retransmission unit 114 of the intermediate node 10B retransmits packets in response to a retransmission request from the receiving node 50.
[0025] The retransmission unit 114 requests retransmission of only the lost packets. Specifically, the retransmission unit 114 of the intermediate node 10B generates a Selective ACK (SACK) specifying the range of packets for which retransmission is requested, and transmits it to the intermediate node 10A. An extended version of a Negative ACK (NAK) is used for the SACK. The AETH field is extended so that it can be identified as a SACK. The ePSN is entered in the PSN field, which specifies the requested packet, and the PSN of the packet for which packet loss was detected is entered in the MSN field.
[0026] Upon receiving the SACK, the retransmission unit 114 retrieves the specified packet from the queue and retransmits it. Specifically, upon receiving the SACK from the intermediate node 10B, the retransmission unit 114 of the intermediate node 10A retrieves packets from PSN to MSN-1 from the forwarding queue 112 and retransmits them to the intermediate node 10B.
[0027] Since the intermediate nodes 10A and 10B can be either the receiving side or the transmitting side, the retransmitting units 114 of the intermediate nodes 10A and 10B have both the function of requesting packet retransmission and the function of retransmitting packets. If the retransmission methods differ between the transmitting side and the receiving side, the retransmitting unit 114 performs retransmission processing using a method that suits the retransmission method. For example, if the retransmission method between the transmitting node 30 and the intermediate node 10A is Go-Back-N, the retransmitting unit 114 transmits a retransmission request to the transmitting node 30 using a method that conforms to Go-Back-N. If the retransmission method between the receiving node 50 and the intermediate node 10B is Go-Back-N, the retransmitting unit 114 transmits a retransmission packet to the receiving node 50 using a method that conforms to Go-Back-N. If the retransmission method between the intermediate nodes 10A and 10B is selective retransmission, the retransmitting unit 114 performs retransmission processing using the retransmission method that uses SACK described above.
[0028] When the pseudo response unit 12 receives a request from the sending node 30 to the receiving node 50, it generates a pseudo ACK and returns it to the sending node 30. If a packet loss is detected, the intermediate node 10A requests the sending node 30 to retransmit the packet.
[0029] When the response discarding unit 13 receives a response from the receiving node 50 to the transmitting node 30, it discards the received response. When a retransmission request is received, the intermediate node 10B executes a retransmission process to the receiving node 50.
[0030] Although the pseudo-response unit 12 and the response discarding unit 13 are not essential components for the selective retransmission processing by the forwarding unit 11, the issues that arise when the intermediate nodes 10A and 10B are equipped with the pseudo-response unit 12 and the response discarding unit 13 can be resolved by having the intermediate nodes 10A and 10B be equipped with the above-mentioned forwarding unit 11.
[0031] An example of the flow of packet forwarding processing will be described with reference to the flowcharts of Figures 2 and 3. When the intermediate node 10 receives a packet, the processing of Figures 2 and 3 is executed. Here, the intermediate nodes 10A and 10B are not distinguished from each other and are referred to as the intermediate node 10.
[0032] In step S1, the intermediate node 10 determines whether or not a retransmission is in progress. "Retransmission in progress" refers to a state in which a lost packet is waiting to be retransmitted. The intermediate node 10 can determine whether or not a retransmission is in progress based on whether or not a packet is held in the staging queue 113. If a retransmission is in progress, the process proceeds to the flowchart of FIG. 3.
[0033] If retransmission is not in progress, in step S2, the intermediate node 10 determines whether the PSN of the received packet is ePSN.
[0034] If the PSN of the packet is ePSN, in step S3, the intermediate node 10 stores the packet in the forwarding queue 112 and forwards the packet to the next node. The intermediate node 10 increments the ePSN by 1. When the intermediate node 10 receives an ACK from the next node, it releases the packet stored in the forwarding queue 112.
[0035] If the PSN of the packet is different from the ePSN, the intermediate node 10 stores the packet in the staging queue 113 in step S4, and transmits a SACK to the source node in step S5. The intermediate node 10 sets the PSN of the packet stored in the staging queue 113 + 1 as the oPSN.
[0036] If a retransmission is in progress, the intermediate node 10 determines whether or not the retransmitted packet has been received in step S6 of Fig. 3. Whether or not the retransmitted packet has been received can be determined by whether or not the PSN of the received packet is ePSN.
[0037] If a retransmission packet is received, in step S7, the intermediate node 10 stores the packet in the forwarding queue 112 and forwards the packet to the next node.
[0038] In step S8, the intermediate node 10 moves the packets stored in the staging queue 113 to the forwarding queue 112 and forwards the moved packets to the next node. The intermediate node 10 sets the ePSN to the PSN of the last packet it forwarded + 1.
[0039] Packets moved from staging queue 113 to forwarding queue 112 are packets with consecutive PSNs starting from PSN+1 of the received packet. For example, if packets with PSNs of 3, 4, 5, and 7 are stored in staging queue 113 and a packet with PSN of 2 is received, the packets with PSNs of 3, 4, and 5 are moved from staging queue 113 to forwarding queue 112. The packet with PSN 7 remains in staging queue 113.
[0040] When the intermediate node 10 receives an ACK for the packet forwarded in steps S7 and S8, it releases the packet stored in the forwarding queue 112.
[0041] If the received packet is not a retransmission packet, in step S9, the packet is stored in the staging queue 113. The intermediate node 10 sets the PSN of the packet stored in the staging queue 113+1 to oPSN.
[0042] The intermediate node 10 repeats the above process to transfer the packet to the next node.
[0043] Next, an example of the state of the forwarding queue 112 and the staging queue 113 during packet transfer will be described with reference to FIGS.
[0044] First, with reference to FIG. 4, a basic operation when a packet loss occurs during packet transfer will be described.
[0045] In step S11, the intermediate node 10A transmits a request r1 (hereinafter referred to as r1), and the intermediate node 10B receives r1. The PSN of r1 is 1. Hereinafter, the PSN will be represented by the number following the r. The ePSN of the intermediate node 10B is 1. Since the staging queue 113 of the intermediate node 10B is empty, the oPSN is set to -1. The intermediate node 10B stores r1 in the forwarding queue 112 and forwards r1 to the next node. The intermediate node 10B sets the ePSN to 2.
[0046] In step S12, the intermediate node 10A transmits r2, but r2 is lost.
[0047] In step S13, the intermediate node 10A transmits r3, and the intermediate node 10B receives r3. Since the PSN and ePSN of r3 are different, the intermediate node 10B stores r3 in the staging queue 113. The intermediate node 10B sets the oPSN to 4.
[0048] In step S14, the intermediate node 10B transmits a retransmission request n2 for the packet with a PSN of 2 to the intermediate node 10A.
[0049] In step S15, the intermediate node 10A transmits r4, and the intermediate node 10B receives r4. The intermediate node 10B stores r4 in the staging queue 113. The intermediate node 10B sets the oPSN to 5.
[0050] In step S16, the intermediate node 10A transmits r5, and the intermediate node 10B receives r5. The intermediate node 10B stores r5 in the staging queue 113. The intermediate node 10B sets oPSN to 6.
[0051] In step S17, the intermediate node 10A transmits r2 in response to the retransmission request n2, and the intermediate node 10B receives r2. The intermediate node 10B stores r2 in the forwarding queue 112 and transfers r2 to the next node. The intermediate node 10B stores r3, r4, and r5 stored in the staging queue 113 in the forwarding queue 112 and transfers r3, r4, and r5 to the next node. The intermediate node 10B sets the ePSN to 6 and the oPSN to -1.
[0052] Through the above process, r1 to r5 transmitted by the intermediate node 10A are transferred to the next node, the intermediate node 10B.
[0053] Next, with reference to FIG. 5, an operation when consecutive packet losses occur will be described.
[0054] In step S21, the intermediate node 10A transmits r1, and the intermediate node 10B receives r1. The intermediate node 10B stores r1 in the forwarding queue 112 and forwards r1 to the next node. The intermediate node 10B sets the ePSN to 2.
[0055] In steps S22, S23, and S24, the intermediate node 10A transmits r2, r3, and r4, but r2, r3, and r4 are lost.
[0056] In step S25, the intermediate node 10A transmits r5, and the intermediate node 10B receives r5. Since the PSN and ePSN of r5 are different, the intermediate node 10B stores r5 in the staging queue 113. The intermediate node 10B sets the oPSN to 6.
[0057] In step S26, the intermediate node 10B transmits to the intermediate node 10A a retransmission request n2 for packets with PSNs of 2 to 4. Specifically, the intermediate node 10B generates and transmits a SACK in which the ePSN, 2, is entered in the PSN field and the PSN, 5, of r5 is entered in the MSN field.
[0058] In step S27, the intermediate node 10A transmits r2, r3, and r4 in response to the retransmission request n2, and the intermediate node 10B receives r2, r3, and r4. The intermediate node 10B stores r2, r3, and r4 in the forwarding queue 112, and forwards r2, r3, and r4 to the next node. The intermediate node 10B stores r5, which was stored in the staging queue 113, in the forwarding queue 112, and forwards r5 to the next node. The intermediate node 10B sets the ePSN to 6 and the oPSN to -1.
[0059] Through the above process, r1 to r5 transmitted by the intermediate node 10A are transferred to the next node, the intermediate node 10B.
[0060] Next, with reference to FIG. 6, the operation when different packet losses occur during retransmission will be described.
[0061] In step S31, the intermediate node 10A transmits r1, and the intermediate node 10B receives r1. The intermediate node 10B stores r1 in the forwarding queue 112 and forwards r1 to the next node. The intermediate node 10B sets the ePSN to 2.
[0062] In step S32, the intermediate node 10A transmits r2, but r2 is lost.
[0063] In step S33, the intermediate node 10A transmits r3, and the intermediate node 10B receives r3. Since the PSN and ePSN of r3 are different, the intermediate node 10B stores r3 in the staging queue 113. The intermediate node 10B sets the oPSN to 4.
[0064] In step S34, the intermediate node 10B transmits a retransmission request n2 for the packet with a PSN of 2 to the intermediate node 10A.
[0065] In step S35, the intermediate node 10A transmits r4, but r4 is lost.
[0066] In step S36, the intermediate node 10A transmits r5, and the intermediate node 10B receives r5. Since the PSN and ePSN of r5 are different, the intermediate node 10B stores r5 in the staging queue 113. The intermediate node 10B sets the oPSN to 6.
[0067] In step S37, the intermediate node 10B transmits a retransmission request n4 for the packet with a PSN of 4 to the intermediate node 10A.
[0068] In step S38, the intermediate node 10A transmits r6, and the intermediate node 10B receives r6. Since the PSN and ePSN of r6 are different, the intermediate node 10B stores r6 in the staging queue 113. The intermediate node 10B sets the oPSN to 7.
[0069] In step S39, the intermediate node 10A transmits r2 in response to the retransmission request n2, and the intermediate node 10B receives r2. The intermediate node 10B stores r2 in the forwarding queue 112 and transfers r2 to the next node. The intermediate node 10B stores r3, which is stored in the staging queue 113, in the forwarding queue 112 and transfers r3 to the next node. r5 and r6, which are stored in the staging queue 113, are not included because their PSNs are not consecutive to r3. The intermediate node 10B sets the ePSN to 4.
[0070] In step S40, the intermediate node 10A transmits r7, and the intermediate node 10B receives r7. Since the PSN and ePSN of r7 are different, the intermediate node 10B stores r7 in the staging queue 113. The intermediate node 10B sets the oPSN to 8.
[0071] In step S41, the intermediate node 10A transmits r4 in response to the retransmission request n4, and the intermediate node 10B receives r4. The intermediate node 10B stores r4 in the forwarding queue 112 and transfers r4 to the next node. The intermediate node 10B stores r5, r6, and r7 stored in the staging queue 113 in the forwarding queue 112 and transfers r5, r6, and r7 to the next node. The intermediate node 10B sets the ePSN to 8 and the oPSN to -1.
[0072] Through the above process, r1 to r7 transmitted by the intermediate node 10A are transferred to the node next to the intermediate node 10B.
[0073] Next, the difference between Go-Back-N and selective retransmission processing will be described with reference to FIGS.
[0074] An example of the Go-Back-N retransmission process will be described with reference to FIG.
[0075] A packet transmitted from the transmitting node 30 is forwarded from the intermediate node 10A to the intermediate node 10B. The intermediate nodes 10A and 10B are provided with a retransmission queue, which temporarily holds the packet to be forwarded. The retransmission queue is the forwarding queue 112 described above.
[0076] In step S51, the intermediate node 10B detects a packet loss and discards the packet received after detecting the packet loss.
[0077] In step S52, the intermediate node 10B transmits a Negative ACK (NAK) to the intermediate node 10A, specifying the lost PSN.
[0078] In step S53, the intermediate node 10A retransmits all packets from the specified PSN onwards, and the intermediate node 10B transfers the received packets to the receiving node 50.
[0079] In Go-Back-N, all packets following the lost packet are retransmitted, so that retransmission conflicts with normal packet transfer, resulting in a decrease in transfer efficiency. In particular, when the intermediate node 10A returns a pseudo ACK, the round trip time of normal packet transfer becomes shorter, making it more likely that normal packet transfer and retransmission conflict with each other.
[0080] An example of selective retransmission processing will be described with reference to FIG.
[0081] A packet transmitted from the transmitting node 30 is forwarded from the intermediate node 10A to the intermediate node 10B. The intermediate nodes 10A and 10B are provided with a retransmission queue, which temporarily holds the packet to be forwarded. The retransmission queue is the forwarding queue 112 described above.
[0082] In step S61, the intermediate node 10B detects a packet loss and stores the packets received after detecting the packet loss in a queue.
[0083] In step S62, the intermediate node 10B transmits a SACK to the intermediate node 10A, specifying the lost PSN.
[0084] In step S63, the intermediate node 10A retransmits only the packet with the specified PSN, and the intermediate node 10B transfers the received packet to the receiving node 50.
[0085] In step S64, the intermediate node 10B transfers the packet following the retransmitted packet from the queue to the receiving node 50.
[0086] In selective retransmission, only lost packets are retransmitted, which reduces the number of retransmitted packets, improves transfer efficiency, and shortens retransmission time.
[0087] Next, with reference to FIG. 9, an example in which different retransmission processes are adopted depending on the location of packet loss will be described.
[0088] Considering transparent operation, for example, Go-Back-N is adopted near the sending node 30 and near the receiving node 50, and selective retransmission is adopted for the intermediate nodes 10A and 10B because the retransmission cost is large.
[0089] A retransmission process using Go-Back-N is performed between the sending node 30 and the intermediate node 10A.
[0090] In step S71, when the intermediate node 10A detects Out-of-Sequence, it transmits a NAK to the transmitting node 30. The transmitting node 30 retransmits all packets from the specified number onwards. When the intermediate node 10A receives all packets without omission, it stores the received packets in a queue and transfers them to the intermediate node 10B.
[0091] Selective retransmission is performed between the intermediate nodes 10A and 10B.
[0092] In step S72, the intermediate node 10B detects the packet loss and stores the packets after the packet loss in a queue.
[0093] In step S73, the intermediate node 10B transmits a SACK requesting retransmission of the lost packet to the intermediate node 10A.
[0094] In step S74, the intermediate node 10A extracts the packet with the specified number from the queue and transmits it, and the intermediate node 10B stores the retransmitted packet in the queue and transfers it to the receiving node 50.
[0095] In step S75, the intermediate node 10B removes the packet following the retransmitted packet from the queue and transfers it to the receiving node 50.
[0096] Between the intermediate node 10B and the receiving node 50, a retransmission process is performed using Go-Back-N.
[0097] In step S76, when the receiving node 50 detects Out-of-Sequence, it transmits a NAK to the intermediate node 10B, which then removes all packets from the queue with the designated number and thereafter and retransmits them.
[0098] As described above, the intermediate nodes 10A and 10B are disposed between a first device and a second device that transfer data using remote direct memory access. The intermediate nodes 10A and 10B include a forwarding queue 112 that stores transferred packets, a staging queue 113 that stores unprocessed packets, a control unit 111 that receives and forwards packets transmitted from the transmitting node 30 to the receiving node 50 and stores the packets in the forwarding queue 112, and a retransmission unit 114 that performs packet retransmission. When a packet loss is detected, the retransmission unit 114 requests retransmission of the lost packet. After detecting a packet loss, the control unit 111 stores packets received up to the time of receiving a retransmission packet in the staging queue 113, and when a retransmission packet is received, the control unit 111 forwards the retransmission packet and stores it in the forwarding queue 112. After forwarding the retransmission packet, the control unit 111 forwards the packets stored in the staging queue 113 and stores them in the forwarding queue 112. As a result, only lost packets are retransmitted, reducing the number of retransmitted packets and preventing a decrease in transfer performance.
[0099] In response to a packet retransmission request, the retransmission unit 114 retrieves the requested packet from the forwarding queue 112 and retransmits it. This allows the intermediate nodes 10A and 10B to handle packet retransmission when a retransmission request is received. Even when the intermediate node 10A generates and transmits a pseudo ACK and the intermediate node 10B discards the response, it is possible to handle a retransmission request from the receiving node 50.
[0100] In the above, a configuration has been described in which intermediate nodes 10A and 10B are installed between the sending node 30 and the receiving node 50. However, as shown in FIG. 10 , the intermediate node 10A may be configured on the network interface card (NIC) of the sending node 30, and the intermediate node 10B may be configured on the NIC of the receiving node 50.
[0101] The intermediate nodes 10A and 10B may be configured as physical servers or virtual servers. Network devices such as switches or routers may have the functions of the intermediate nodes 10A and 10B.
[0102] The intermediate nodes 10A and 10B described above can be, for example, a general-purpose computer system including a central processing unit (CPU) 901, a memory 902, a storage 903, a communication device 904, an input device 905, and an output device 906, as shown in Fig. 11. In this computer system, the intermediate nodes 10A and 10B are realized by the CPU 901 executing a predetermined program loaded onto the memory 902. This program can be recorded on a computer-readable recording medium such as a magnetic disk, an optical disk, or a semiconductor memory, or can be distributed via a network.
[0103] 10A, 10B Intermediate node 11 Transfer unit 111 Control unit 112 Forwarding queue 113 Staging queue 114 Retransmission unit 12 Dummy response unit 13 Response discard unit 30 Sending node 50 Receiving node
Claims
1. An intermediate device disposed between a first device and a second device that transfer data using remote direct memory access, comprising: a first queue for storing transferred packets; a second queue for storing unprocessed packets; a control unit that receives and forwards packets transmitted from the first device to the second device and stores the packets in the first queue; and a retransmission unit that performs packet retransmission processing, wherein the retransmission unit requests retransmission of the lost packet when packet loss is detected, and after detecting packet loss, the control unit stores packets received before receiving a retransmitted packet in the second queue, forwards the retransmitted packet and stores it in the first queue when the retransmitted packet is received, and after forwarding the retransmitted packet, forwards packets stored in the second queue and stores them in the first queue.
2. An intermediate device according to claim 1, wherein said retransmission unit, in response to a request to retransmit a packet, retrieves the requested packet from said first queue and retransmits it.
3. An intermediate device as claimed in claim 1, wherein the control unit manages a first sequence number of a packet expected to arrive next and a maximum second sequence number of unprocessed packets, compares the sequence number of a received packet with the first sequence number and the second sequence number, and detects packet loss.
4. An intermediate device according to claim 1, further comprising a pseudo response generating unit that generates a pseudo response to a packet received from said first device and returns the pseudo response to said first device.
5. An intermediate device according to claim 1, comprising a response discarding unit that discards a response received from the second device.
6. A communications method executed by an intermediate device disposed between a first device and a second device that transfer data using remote direct memory access, the intermediate device comprising: a first queue for storing transferred packets; and a second queue for storing unprocessed packets, the intermediate device receives and forwards packets transmitted from the first device to the second device, and stores the packets in the first queue; when packet loss is detected, requests retransmission of the lost packet; after packet loss is detected, stores in the second queue packets received before receiving a retransmitted packet; when a retransmitted packet is received, forwards the retransmitted packet and stores it in the first queue; and after forwarding the retransmitted packet, forwards packets stored in the second queue and stores them in the first queue.
7. A communication method according to claim 6, wherein said intermediate device, in response to a request to retransmit a packet, retrieves the requested packet from said first queue and retransmits it.
Citation Information
Patent Citations
Improved TCP proxy method based on wide area network data compression
CN106936875A
TCP communication high speed device
JP2013247632A
Communication system, intermediate device, communication method, and program
WO2023058232A1