Network interface device, packet transfer method, and program

The network interface device uses multiple queues to reorder packets based on sequence information, enhancing communication latency and reception performance by eliminating the need for conditional packet evacuation, thus addressing the slow operations of existing technologies.

JP7765055B1Active Publication Date: 2025-11-06NEC PLATFROMS LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2025018228
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2025-02-06
Publication Date
2025-11-06
Estimated Expiration
2045-02-06

Smart Images

  • Figure 0007765055000001_ABST
    Figure 0007765055000001_ABST
Patent Text Reader

Abstract

To provide a network interface device that can control the order of packets without requiring an operation to temporarily save packets according to conditions. [Solution] The network interface device comprises a packet storage unit, a distribution unit, and a flow management unit. M (M is an integer equal to or greater than 2) packet storage units are for storing packets. The distribution unit receives packets and assigns each packet to one of the M packet storage units based on sequence information attached to the received packets so as to rotate the use of the M packet storage units according to a predetermined rule, and stores the packet in the assigned packet storage unit. The flow management unit sequentially retrieves the packets from the M packet storage units in the order according to the rule, and forwards the retrieved packets to an external device.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a network interface device, a packet forwarding method, and a program. [Background technology]

[0002] In data communications, delays can occur in packet transmission. Packet delays can cause packets to be out of order in lower-level protocols (e.g., Internet Protocol (IP)). In such cases, packet order control in higher-level protocols (e.g., Transmission Control Protocol (TCP)) ensures the data order seen by application programs. Packet order control increases the load on network protocol stacks, including TCP. Because network protocol stacks also provide various other functions, it is desirable to reduce the load caused by packet order control as much as possible.

[0003] For example, Patent Document 1 describes a packet receiving device that is premised on packet retransmission control. The packet receiving device described in Patent Document 1 includes a reordering control unit and a buffer unit. The reordering control unit controls the reordering of received packets at a layer lower than the network protocol stack. The buffer unit stores out-of-order packets among the received packets in association with a flow. The reordering control unit determines whether the received packet is an in-order packet or an out-of-order packet. If the received packet is an in-order packet of a certain flow and out-of-order packets of that flow are stored in the buffer unit, the reordering control unit transfers the received packet to the network protocol stack, and then transfers all out-of-order packets of that flow stored in the buffer unit to the network protocol stack.

[0004] In other words, the packet receiving device described in Patent Document 1 reduces the load of packet sequence control at the TCP layer by temporarily evacuating out-of-order packets to a sequence control block using a sequence control unit added to a layer lower than the TCP layer, and then transmitting the evacuated packets to the TCP layer depending on certain conditions. [Prior art documents] [Patent documents]

[0005] [Patent Document 1] International Publication No. 2011 / 068186 Summary of the Invention [Problem to be solved by the invention]

[0006] However, the technique described in Patent Document 1 has the problem that the operation is slow because it is necessary to temporarily save packets in the sequence control block depending on the conditions.

[0007] In other words, the technology described in Patent Document 1 rearranges the order of packets by temporarily saving packets in a sequence control block. However, this method of Patent Document 1 has the problem that it takes a long time to perform the operation because it temporarily saves packets in a sequence control block depending on conditions and then sends the saved packets to the TCP layer depending on conditions.

[0008] An object of the present disclosure is to provide a network interface device, a packet forwarding method, and a program that solve the above-mentioned problems. [Means for solving the problem]

[0009] A network interface device according to one embodiment of the present disclosure comprises M (M is an integer greater than or equal to 2) packet storage units for storing packets, a distribution unit that receives packets and assigns each packet to one of the M packet storage units based on sequence information attached to the received packets so as to rotate the use of the M packet storage units according to a predetermined rule, and stores the packet in the assigned packet storage unit, and a flow management unit that sequentially retrieves the packets from the M packet storage units in the order according to the rule and forwards the retrieved packets to the outside.

[0010] In a packet forwarding method according to one embodiment of the present disclosure, a network interface device is provided with M (M is an integer greater than or equal to 2) packet storage units for storing packets, a distribution unit receives packets and assigns each packet to one of the M packet storage units based on sequence information attached to the received packets so as to rotate the M packet storage units according to a predetermined rule, and stores the packet in the assigned packet storage unit, and a flow management unit sequentially retrieves the packets from the M packet storage units in an order according to the rule and forwards the retrieved packets to the outside.

[0011] A program according to one embodiment of the present disclosure is a program for causing a computer to function as a network interface device that includes M (M is an integer greater than or equal to 2) packet storage units for storing packets, a distribution unit that receives packets and assigns each packet to one of the M packet storage units based on sequence information attached to the received packets so as to rotate the use of the M packet storage units according to a predetermined rule, and stores the packet in the assigned packet storage unit, and a flow management unit that sequentially retrieves the packets from the M packet storage units in an order according to the rule and forwards the retrieved packets to the outside. [Effects of the Invention]

[0012] According to the above aspect, there is no need to perform packet evacuation or the like, and it is possible to simplify the configuration of the network interface device. [Brief explanation of the drawings]

[0013] [Figure 1] 1 is a block diagram showing a schematic functional configuration of a system according to the present disclosure. [Figure 2] 1 is a schematic diagram showing the configuration of information managed internally by a flow management unit in a network interface device according to the present disclosure. [Figure 3] 1 is a schematic diagram illustrating the structure of a queue (packet storage unit) according to the present disclosure. [Figure 4] 10 is a flowchart illustrating an operation procedure when a network interface device according to the present disclosure forwards a received packet. [Figure 5] 10 is a flowchart illustrating a processing procedure for a timeout of packet reception in a network interface device according to the present disclosure. [Figure 6] 1 is a block diagram showing an example of the internal configuration of a computer when realizing a network interface device according to the present disclosure. [Figure 7] 1 is a block diagram showing a schematic functional configuration of a system according to the present disclosure. [Figure 8] 1 is a block diagram showing a schematic functional configuration of a network interface device according to the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0014] Each embodiment will be described below with reference to the drawings. In all drawings, the same or corresponding components are designated by the same reference numerals, and common descriptions will be omitted.

[0015] The embodiment described below enables rearrangement of the order of packets in an operation that uses multiple packet storage units (queues) to sequentially send packets to the TCP layer. Because it does not require the conditional evacuation of packets, it operates faster than conventional technology, resulting in improved communication latency. Note that the embodiment described below leaves retransmission control when a packet does not arrive to the TCP layer, and does not take into account environments where packets frequently do not arrive.

[0016] In the embodiment described below, a network interface device below the TCP layer has multiple (e.g., four) packet storage units for receiving packets. The distribution unit (queue distribution unit) of the network interface device checks the sequence number of the received packet and distributes the packet to the multiple packet storage units for storage. The flow management unit sequentially checks these multiple packet storage units in a round-robin manner, and if a packet is found, forwards the data to the upper TCP layer. If a packet storage unit has not yet received a packet, it enters a wait state and suspends processing. When a packet arrives at the packet storage unit where processing was suspended, it forwards the data to the TCP layer and resumes round-robin processing. By forwarding data to the TCP layer in the order of the packets in the network interface device, data can be forwarded to the TCP layer without the need to temporarily store packets in a buffer or the like. This eliminates the need for rearrangement processing based on packet order control in TCP, shortening processing time and improving communication latency.

[0017] The embodiment described below is characterized in that it improves reception performance by rearranging the order of received packets, rather than from the viewpoint of not increasing the amount of storage capacity used.

[0018] Furthermore, the embodiment described below is characterized in that it improves reception performance by rearranging the order of received packets, rather than focusing on the processor that performs the processing.

[0019] In the following description, TCP stands for Transmission Control Protocol, IP stands for Internet Protocol, MAC address stands for Media Access Control address, and CPU stands for Central Processing Unit.

[0020] In the following description, a sequence number (order information) is a serial number assigned to a packet. In the following embodiment, each packet has a sequence number, and the order of the packets is controlled by this sequence number. This sequence number increases by one. The sequence number can be expressed, for example, as a fixed-length unsigned binary number. If the fixed-length unsigned binary number overflows, the sequence number may return to 0 and continue.

[0021] First Embodiment Hereinafter, an embodiment according to the present disclosure will be described with reference to the drawings.

[0022] FIG. 1 is a block diagram showing a schematic functional configuration of a system according to an embodiment. The illustrated system 100 receives packets transmitted from an external device and performs sequence control on the received packets. As shown in the figure, the system 100 includes a processing device 1 and a network interface device 2. At least some of the functions of the processing device 1 and the network interface device 2 can be implemented, for example, by a computer and a program. Each function constituting the processing device 1 and the network interface device 2 includes a storage means as necessary. The storage means is, for example, a program variable or memory allocated by the execution of a program. Non-volatile storage means such as a magnetic hard disk drive or a solid-state drive (SSD) may also be used as necessary. At least some of the functions of each functional unit may be implemented as a dedicated electronic circuit or the like, rather than by a program.

[0023] The network interface device 2 receives packets via the communication network. Although the packets are ordered, the order of the packets may be partially reversed within the communication network. In other words, multiple packets are sent from the sending side in a predetermined order. The order in which these packets are received by the network interface device 2 is not guaranteed. In other words, an earlier packet may be received by the network interface device 2 after a later packet.

[0024] The processing device 1 receives packets from the network interface device 2 and performs processing according to the received packets. The processing device 1 is configured to include a TCP layer processing unit 10. The TCP layer processing unit 10 receives packets from the network interface device 2 and performs communication protocol processing for the received packets. The processing performed by the TCP layer processing unit 10 includes, but is not limited to, a process of requesting the sender to retransmit a packet that did not arrive.

[0025] The network interface device 2 controls the order of packets by using multiple queues. The network interface device 2 receives packets from the outside, controls the order of the packets, and transfers the packets that have been order-controlled to the processing device 1.

[0026] The network interface device 2 includes queues 20, 21, 22, and 23, a queue distributor 25, and a flow manager .

[0027] Each of the queues 20, 21, 22, and 23 is a queue for at least temporarily holding packets. Note that each of the queues 20, 21, 22, and 23 may also be called a "packet storage unit." In other words, the queues 20, 21, 22, and 23 are four packet storage units for storing packets. The above four queues are rotated according to the sequence number of the packet. In other words, the queue that stores a packet is determined according to the remainder when the sequence number of the packet is divided by the number of queues (4 in this case). For example, queue 20 at least temporarily stores packets whose remainder is 0. Queue 21 at least temporarily stores packets whose remainder is 1. Queue 22 at least temporarily stores packets whose remainder is 2. Queue 23 at least temporarily stores packets whose remainder is 3.

[0028] Each of the queues 20, 21, 22, and 23 (packet storage units) can store multiple packets on a first-in, first-out basis, thereby allowing the queues 20, 21, 22, and 23 to buffer incoming packets.

[0029] The sequence number of a packet can be expressed in binary. In this case, the lowest two bits of the sequence number of a packet with a remainder of 0 are "00". The lowest two bits of the sequence number of a packet with a remainder of 1 are "01". The lowest two bits of the sequence number of a packet with a remainder of 2 are "10". The lowest two bits of the sequence number of a packet with a remainder of 3 are "11". In other words, if the number of queues is four, the queue in which a packet is stored is determined by the lowest two bits of the packet's sequence number expressed in binary.

[0030] The network interface device 2 of this embodiment manages one flow. The network interface device 2 has four queues for that one flow, and the queue distribution unit 25 distributes received packets to those four queues. However, in general, one flow may have M queues, where M is an integer equal to or greater than 2.

[0031] The queue distributor 25 receives a packet and distributes the packet to queues 20, 21, 22, and 23 according to the sequence number of the received packet. The queue distributor 25 may also be simply referred to as a "distributor." Specifically, if the remainder when the sequence number of a received packet is divided by 4 is 0 (i.e., the two least significant bits of the sequence number when expressed in binary are "00"), the queue distributor 25 distributes the packet to queue 20. If the remainder when the sequence number of a received packet is divided by 4 is 1 (i.e., the two least significant bits of the sequence number when expressed in binary are "01"), the queue distributor 25 distributes the packet to queue 21. If the remainder when the sequence number of a received packet is divided by 4 is 2 (i.e., the two least significant bits of the sequence number when expressed in binary are "10"), the queue distributor 25 distributes the packet to queue 22. Furthermore, if the remainder when the sequence number of the received packet is divided by 4 is 3 (i.e., if the lowest two bits of the sequence number expressed in binary are "11"), the queue distribution unit 25 distributes the packet to queue 23.

[0032] In other words, the queue distributor 25 receives packets, and allocates each packet to one of the four queues (packet storage units) based on the sequence number (order information) attached to the received packet so as to rotate the use of the four queues (packet storage units) according to a predetermined rule, and stores the packet in the allocated queue. Here, the "predetermined rule" is, for example, that the queue corresponding to the remainder when the sequence number of the packet is divided by 4 (the number of queues) is allocated to the packet.

[0033] The number of queues does not necessarily have to be 4. A case where the number of queues is M (where M is an integer of 2 or more) will be described later.

[0034] The flow management unit 26 manages the flow. Specifically, the flow management unit 26 extracts packets registered in queues 20 to 23 in the order of their sequence numbers and transfers these packets to the TCP layer processing unit 10 of the processing device 1. If some packets are missing because they were not received in order, the flow management unit 26 waits until the missing packets arrive. When the missing packets arrive and the packets can be extracted from the queue in order, the flow management unit 26 removes these packets from the queue and transfers them to the TCP layer processing unit 10 of the processing device 1.

[0035] In other words, the flow management unit 26 sequentially extracts packets from the four queues in accordance with the rule, and transfers the extracted packets to the outside.

[0036] Furthermore, when removing packets from a queue in the order according to the rule, if a packet has not yet arrived in the queue from which the next packet should be removed, the flow management unit 26 may wait for the packet to be stored in that queue before removing the packet from that queue. This allows the flow management unit 26 to remove packets from the queue in the order indicated by the sequence numbers, even if the packet order is changed in the communication network, and transfer the packets to the TCP layer processing unit 10 of the processing device 1 in that order.

[0037] At least a part of the process by which the flow management unit 26 extracts packets from the queue and sends them to the processing device 1 may be realized by a hardware circuit rather than by a program.

[0038] A specific example of the operation of the flow management unit 26 will be described. Assume a situation in which packets are transmitted from the transmitting device in order starting with sequence number 0 (binary notation: "00000000"). Packets received by the queue distribution unit 25 are registered in one of queues 20 to 23 according to the sequence number, as described above. Here, it is assumed that packets with sequence numbers 0 (binary notation: "00000000") to 10 (binary notation: "00001010") have already been removed from the queues by the flow management unit 26 and transferred to the TCP layer processing unit 10 of the processing device 1. The next packet with sequence number 11 (binary notation: "00001011") should be directed to queue 23 because the remainder when the sequence number is divided by 4 is 3 (binary notation: "11"). However, it is assumed that this packet has not yet been received by the queue distribution unit 25. The queue distributor 25 receives packets with sequence numbers 12 (binary notation "00001100") and 13 (binary notation "00001101") before the packet with sequence number 11, and registers them in the queues, respectively. The packet with sequence number 12 (binary notation "00001100") is directed to queue 20 because the remainder when its sequence number is divided by 4 is 0 (binary notation "00"). The packet with sequence number 13 (binary notation "00001101") is directed to queue 21 because the remainder when its sequence number is divided by 4 is 1 (binary notation "01"). In this state, the flow manager 26 will not remove packets with sequence numbers 12 or 13 from the queue until the packet with sequence number 11 is registered in the queue. Thereafter, when the queue distribution unit 25 receives a packet with sequence number 11 (binary notation "00001011") and registers it in the queue 23, the flow management unit 26 removes these already arrived packets numbered 11, 12, and 13 from the queue, and transfers them in order to the TCP layer processing unit 10 of the processing device 1.

[0039] 2 is a schematic diagram showing the configuration of information managed internally by the flow management unit 26. As shown in the figure, the flow management unit 26 has a flow management information storage unit 27. The flow management information storage unit 27 stores information necessary for flow management.

[0040] As shown in the figure, the flow management information storage unit 27 stores (1) flow identification information, (2) valid bit, (3) expected queue number, and (4) timeout value. The (1) flow identification information includes (1-1) destination MAC address, (1-2) source MAC address, (1-3) destination IP address, (1-4) source IP address, (1-5) destination port, and (1-6) source port.

[0041] The flow identification information (1) is information for identifying one flow. The flow management unit 26 extracts (1-1) destination MAC address, (1-2) source MAC address, (1-3) destination IP address, (1-4) source IP address, (1-5) destination port, and (1-6) source port from the packet received by the queue distribution unit 25, and writes and manages this in the flow identification information column (1). The information (1-1) to (1-6) is information such as addresses used during communication. In this embodiment, the flow management unit 26 manages only one flow.

[0042] The valid bit (2) is one bit of information that indicates whether the flow identification information (1) above is valid. When the valid bit is "0", it indicates that the flow identification information (1) is invalid. When the valid bit is "1", it indicates that the flow identification information (1) is valid.

[0043] The expected queue number in (3) is information indicating the queue in which the next packet to be sent to the TCP layer processing unit 10 of the processing device 1 will be registered. If the queue in which the next packet to be sent is registered is queue 20, the value of the expected queue number is "00" (binary representation). If the queue in which the next packet to be sent is registered is queue 21, the value of the expected queue number is "01" (binary representation). If the queue in which the next packet to be sent is registered is queue 22, the value of the expected queue number is "10" (binary representation). If the queue in which the next packet to be sent is registered is queue 23, the value of the expected queue number is "11" (binary representation). In other words, if the number of queues is four, the value of the expected queue number is the lower two bits of the sequence number (binary representation) of the next packet to be sent. The flow management unit 26 can monitor whether a packet is registered in the queue indicated by this expected queue number.

[0044] The timeout value in (4) is a value used to determine whether a packet arrival timeout has occurred. The system timer value held by the network interface device 2 continues to increase over time. The system timer value is a value indicating the current time. The timeout value is a value indicating the time at which a timeout occurs. When the system timer value exceeds the timeout value in (4) while the flow management unit 26 is waiting for a packet to arrive at the queue indicated by the expected queue number, the flow management unit 26 determines that a timeout has occurred. When a timeout has occurred, the flow management unit 26 performs the timeout processing described below.

[0045] In other words, the flow identification information (1) is information consisting of a combination of a packet's source address and destination address. The valid bit (2), the expected queue number (3), and the timeout value (4) are management information for the flow. The flow management unit 26 includes a flow management information storage unit 27 that stores flow identification information consisting of a combination of a packet's source address and destination address, and management information for the flow identified by the flow identification information.

[0046] FIG. 3 is a schematic diagram showing the structure of a queue. As described with reference to FIG. 1, in this embodiment, there are four queues: queues 20, 21, 22, and 23. The upper limit number of packets (number of entries) that can be stored in each queue may be fixed or variable. In the example shown, the upper limit number of packets that can be stored in each queue is fixed at 16. The number of entries may be other than 16. Each of the queues 20, 21, 22, and 23 is configured as a first-in, first-out (FIFO). A queue distributor 25 distributes packets and writes them to each queue. Packets are sequentially registered in each queue. Packets in the queue are sequentially retrieved in a FIFO manner. In the example shown in FIG. 3, packets 0 and 4 are registered in queue 20. No packets are registered in queue 21. Packet 2 is registered in queue 22. Packet 3 is registered in queue 23. In this state, flow management unit 26 can remove packet 0 from queue 20 and transfer it to TCP layer processing unit 10. Because packet 1 has not yet been registered in queue 21, flow management unit 26 does not remove packets 2 or 3 yet, but waits for the registration of packet 1. After packet 1 is registered in queue 21, flow management unit 26 can sequentially remove packets 1, 2, and 3 and transfer them to TCP layer processing unit 10.

[0047] If the queue overflows, that is, if there is no free space in the queue, the queue distributor 25 may give up on registering the packet in the queue and send the packet to the TCP layer processor 10 of the processing device 1.

[0048] Each of the queues 20, 21, 22, and 23 is realized using a data storage means and a queue control mechanism. Each of the queues 20, 21, 22, and 23 may be realized in the memory space of a computer, or may be realized as dedicated hardware.

[0049] 4 is a flowchart showing the operation procedure when the network interface device forwards a received packet. The operation will be explained below with reference to this flowchart.

[0050] In step S1, the network interface device 2 determines whether or not to continue processing. Processing will not be continued if, for example, an operator or the like instructs the network interface device 2 itself to stop. If processing will be continued (step S1: YES), the process proceeds to the next step S2. If processing will not be continued (step S1: NO), the entire process of this flowchart ends.

[0051] In step S2, the queue distributor 25 receives a packet. The queue distributor 25 passes flow identification information extracted from the header of the received packet to the flow manager 26. The flow identification information is as described with reference to FIG. 2.

[0052] In step S3, the flow management unit 26 determines whether there is a valid flow that matches the received packet. Specifically, the flow management unit 26 checks whether the flow identification information extracted from the received packet matches the flow identification information held in the flow management information storage unit 27 (FIG. 2) and whether the valid bit stored in the flow management information storage unit 27 indicates "valid." If there is a valid flow that matches the received packet (step S3: YES), the flow management unit 26 jumps to step S7. If there is no valid flow that matches the received packet (step S3: NO), the flow management unit 26 proceeds to the next step S4.

[0053] In step S4, the flow management unit 26 checks whether there is an invalid flow. That is, the flow management unit 26 determines whether there is flow management information in which the valid bit indicates "invalid." If there is an invalid flow (step S4: YES), the process proceeds to step S6. If there is no invalid flow (step S4: NO), the process proceeds to step S5.

[0054] In step S5, the flow management unit 26 transfers the packet received in step S2 to the TCP layer processing unit 10 of the processing device 1. After this step is completed, the process returns to step S1.

[0055] In step S6, the flow management unit 26 creates flow information. That is, the flow management unit 26 writes the flow information in the area for the invalid flow in the flow management information storage unit 27. Specifically, the flow management unit 26 writes data on (1) flow identification information, (2) valid bit, (3) expected queue number, and (4) timeout value, as described in FIG. 2. The flow identification information (1) stores information on the destination MAC address, source MAC address, destination IP address, source IP address, destination port, and source port extracted from the packet. The valid bit (2) is set to "1" (indicating that the flow is valid). The expected queue number (3) stores the queue number corresponding to the next packet expected. If the number of queues is four, the expected queue number is the value of the lowest two bits (binary representation) of the sequence number of the next packet expected. That is, the flow management unit 26 stores either "00," "01," "10," or "11" (all expressed in binary) as the expected queue number. The timeout value in (4) is set to the value of the timer that should be used for timeout. The flow management unit 26 acquires the timer value currently indicated by the system timer, i.e., the current time, and adds a predetermined length of time (a length determined appropriately according to the operating environment of the device) to the acquired timer value to determine the value of the timer that should be used for timeout. After the processing in step S6 is completed, the process proceeds to step S7.

[0056] If the value of the system timer exceeds this timeout value, the flow management unit 26 recognizes that a timeout has occurred and performs timeout processing. The procedure for timeout processing will be explained later with reference to another flowchart.

[0057] In step S7, the queue distributor 25 assigns the received packet to one of queues 20 to 23 according to the sequence number in the packet. If there are four queues, the queue distributor 25 assigns the packet to a queue according to the remainder when the sequence number is divided by 4. That is, if the remainder is 0 (i.e., the lowest two bits of the sequence number expressed in binary are "00"), the queue distributor 25 assigns the packet to queue 20. If the remainder is 1 (i.e., the lowest two bits of the sequence number expressed in binary are "01"), the queue distributor 25 assigns the packet to queue 21. If the remainder is 2 (i.e., the lowest two bits of the sequence number expressed in binary are "10"), the queue distributor 25 assigns the packet to queue 22. If the remainder is 3 (i.e., the lowest two bits of the sequence number expressed in binary are "11"), the queue distributor 25 assigns the packet to queue 23.

[0058] In step S8, the flow management unit 26 determines whether a packet has arrived at the queue indicated by the expected queue number of the flow (FIG. 2). If the packet has arrived at the queue indicated by the expected queue number (step S8: YES), the flow proceeds to the next step S9. If the packet has not arrived at the queue indicated by the expected queue number (step S8: NO), the flow returns to step S1.

[0059] In step S 9 , the flow management unit 26 extracts the packet from the queue indicated by the kitter queue number and transfers the packet to the TCP layer processing unit 10 of the processing device 1 .

[0060] Then, in step S10, the flow management unit 26 updates the flow information. Specifically, the flow management unit 26 advances the expected queue number (3) in the flow management information described in FIG. 2 by one. In other words, if the number of queues is four, the expected queue number is updated from "00" (binary) to "01" (binary), or from "01" (binary) to "10" (binary), or from "10" (binary) to "11" (binary), or from "11" (binary) to "00" (binary). The flow management unit 26 also updates the timeout value (4). In other words, the flow management unit 26 acquires the timer value currently indicated by the system timer and adds a predetermined length of time to the acquired timer value to determine the timer value that should be used for timeout.

[0061] When the process of step S10 is completed, the process returns to step S1 to process the next packet.

[0062] 5 is a flowchart showing the procedure for processing a timeout. The procedure will be explained below with reference to this flowchart.

[0063] In step S21, the network interface device 2 determines whether or not to continue processing. Processing will not be continued if, for example, an operator or the like instructs the network interface device 2 itself to stop. If processing will be continued (step S21: YES), the process proceeds to the next step S22. If processing will not be continued (step S21: NO), the entire process of this flowchart ends.

[0064] In step S22, the flow management unit 26 checks whether a timeout has occurred in the flow. Here, the flow management unit 26 checks for a timeout for a flow whose valid bit indicates "1" (valid). The flow management unit 26 determines whether a timeout has occurred by checking whether the system timer value exceeds the timeout value (4) in the flow management information (FIG. 2). If a timeout has occurred in the flow, that is, if the system timer value has exceeded the timeout value for the flow (step S22: YES), the flow proceeds to the next step S23. If a timeout has not occurred in the flow, that is, if the system timer value has not exceeded the timeout value for the flow (step S22: NO), the flow returns to step S21.

[0065] If the process proceeds to step S23, i.e., if a timeout has occurred, in step S23, the flow management unit 26 transfers packets remaining in all queues (20, 21, 22, 23) in the flow in which the timeout occurred to the TCP layer processing unit 10 of the processing device 1.

[0066] Then, in step S24, the flow management unit 26 clears the valid bit (2) in the flow management information (FIG. 2) of that flow to 0. The valid bit of the flow is cleared to 0 only at the time of this timeout.

[0067] After step S24 is completed, the process returns to step S21.

[0068] In the processing procedure of this flowchart, a predetermined waiting time may be provided immediately before the determination in step S22.

[0069] As explained with reference to Figures 4 and 5, the flow management information includes a valid bit that indicates whether a flow identified by the flow identification information is valid or invalid. The flow management unit 26 then (1) writes the management information for the flow identified by the combination of the source address and the destination address that did not exist into the flow management information storage unit 27 when a packet is received. The flow management unit 26 also sets the valid bit in the management information to "valid." Furthermore, (2) for the flow for which the valid bit indicates "valid," if the arrival of the next packet to be retrieved in the packet storage unit times out, the flow management unit 26 sets the valid bit in the management information for the flow to "invalid." In this way, the flow management unit 26 dynamically enables and disables the flow management information.

[0070] The processing procedure has been described above with reference to Figures 4 and 5. By performing such processing, the network interface device 2 of the embodiment can control the order of received packets. In other words, when the network interface device 2 receives packets, even if a later packet (a packet with a relatively larger sequence number) is received before an earlier packet (a packet with a relatively smaller sequence number), the flow management unit 26 can extract the packets from the queue in the correct order according to the original sequence numbers and transfer them to the TCP layer processing unit 10 of the processing device 1.

[0071] When the number of queues is four, even if there is a reversal in the packet reception order (reception order in the queue distribution unit 25) with an order difference of three or less, the packets are transferred in the order of their sequence numbers when the flow management unit 26 transfers them to the TCP layer processing unit 10 of the processing device 1. In other words, it is guaranteed that the packets will follow the order of their sequence numbers when the TCP layer processing unit 10 receives them.

[0072] The network interface device 2 of this embodiment does not perform retransmission control when a packet is not delivered. Retransmission control when a packet has not arrived is performed in the processing of the TCP layer.

[0073] <Modification> Modifications of the above-described embodiment will be described below. Note that multiple modifications may be combined as appropriate, as long as they are possible to combine.

[0074] A general configuration with M queues (not limited to 4): The above describes the configuration and processing procedure of the network interface device 2 when the number of queues is four. In general, the number of queues may be M, where M is a natural number greater than or equal to two. When the number of queues is M, the queue distributor 25 divides the sequence number (order information) of a received packet by M, assigns the packet to one of the M queues according to the remainder, and stores the packet in the assigned queue. That is, if the M queues are assigned index values ​​of 0, 1, 2, . . . , M-1 for convenience, the queue distributor 25 divides the sequence number of a received packet by M, and stores the packet in the queue whose index value is the remainder. That is, as a rule, the sequence number (order information) is an integer value. The queue distributor 25 assigns the received packet to the queue corresponding to the remainder when the sequence number (order information) is divided by M, and stores the packet.

[0075] When the number of queues is M, even if there is a reversal of the packet reception order (reception order in the queue distributor 25) with an order difference of (M-1) or less, the packets are transferred in the order of their sequence numbers when the flow management unit 26 transfers them to the TCP layer processor 10 of the processing device 1. In other words, it is guaranteed that the packets will follow the order of their sequence numbers when the TCP layer processor 10 receives them.

[0076] If M is a power of 2: The above M may be a power of 2. That is, M = 2, 4, 8, 16, 32, 64, ... When M is the Nth power of 2 (N is an integer greater than or equal to 1), the calculation process of dividing the packet sequence number by M and finding the remainder can be performed by taking the lowest N bits of the sequence number expressed in binary. In other words, when M is a power of 2, the amount of processing by the processor (CPU, etc.) can be reduced. Furthermore, when the process of finding the remainder is performed by hardware (logic circuit), the circuit size can be reduced.

[0077] In other words, M is 2 to the Nth power (N is an integer equal to or greater than 1). The queue distributor 25 allocates the received packet to a queue corresponding to the value of the lowest N bits when the sequence number (order information) is expressed as a binary bit string.

[0078] Methods that do not rely on modulo division: In the above, when assigning a queue based on the sequence number of a packet, the sequence number is divided by M, and the packet is stored in the queue corresponding to the value of the remainder. In general, when assigning packets to queues, assignment by the remainder as described above is not necessarily performed. For example, if there are four queues (see Figure 1), the queues do not necessarily have to be assigned in the order of queue 20 ⇒ queue 21 ⇒ queue 22 ⇒ queue 23 ⇒ queue 20 ⇒ . . . As an example, the four queues may be rotated in the order of queue 23 ⇒ queue 21 ⇒ queue 20 ⇒ queue 22 ⇒ queue 23 ⇒ . . . The four queues may also be rotated in an order other than that shown here. The same applies to the general case where the number of queues is M (M is an integer greater than or equal to 2).

[0079] Queue Length: Above, we have explained the case where one queue can store 16 entries. In other words, we have explained the case where one queue has a length of 16. In general, the length of a queue can be 1 or more. Note that if the length of a queue is 1, the queue may not be called a "queue." Also, the length of each queue may not be fixed but may be variable.

[0080] Protocol type: Although the above description has been given taking TCP as an example, the present embodiment may generally be applied to processing packets of other protocols.

[0081] FIG. 6 is a block diagram showing an example of the internal configuration of a computer when the processing device 1 and the network interface device 2 are realized using a computer and a program. As shown in the figure, the computer includes a central processing unit 901, a RAM 902, an input / output port 903, input / output devices 904 and 905, and a bus 906. The computer itself can be realized using existing technology. The central processing unit 901 executes instructions contained in a program read from the RAM 902 or the like. In accordance with each instruction, the central processing unit 901 writes data to the RAM 902, reads data from the RAM 902, and performs arithmetic and logical operations. The RAM 902 stores data and programs. Each element contained in the RAM 902 has an address and can be accessed using the address. RAM is an abbreviation for "random access memory." The input / output port 903 is a port through which the central processing unit 901 exchanges data with external input / output devices. The input / output devices 904 and 905 are input / output devices. Input / output devices 904 and 905 exchange data with the central processing unit 901 via an input / output port 903. A bus 906 is a common communication path used within the computer. For example, the central processing unit 901 reads and writes data from and to RAM 902 via the bus 906. Also, for example, the central processing unit 901 accesses the input / output port via the bus 906.

[0082] At least some of the functions of the processing device 1 and the network interface device 2 in the above-described embodiments can be implemented by a computer. In this case, a program for implementing these functions may be recorded on a computer-readable recording medium and then loaded and executed by a computer system. Note that the term "computer system" as used herein includes hardware such as an OS and peripheral devices. Furthermore, the term "computer-readable recording medium" refers to portable media such as flexible disks, optical magnetic disks, ROMs, CD-ROMs, DVD-ROMs, and USB flash drives, as well as storage devices such as hard disks built into computer systems. In other words, a "computer-readable recording medium" may be a non-transitory computer-readable recording medium. Furthermore, the term "computer-readable recording medium" may also include media that temporarily and dynamically store programs, such as communication lines used when transmitting programs via networks such as the Internet or telephone lines, or media that store programs for a certain period of time, such as volatile memory within a computer system that serves as a server or client. The program may be designed to implement some of the above-described functions, or may be capable of implementing the above-described functions in combination with a program already stored in the computer system.

[0083] Second Embodiment Next, another embodiment according to the present disclosure will be described with reference to the drawings.

[0084] 7 is a block diagram showing a schematic functional configuration of a system according to an embodiment. Similar to the above-described system 100, the illustrated system 101 receives packets transmitted from an external device and performs sequence control on the received packets. As shown in the figure, the system 101 includes a processing device 1 and a network interface device 3.

[0085] The processing device 1 has been described with reference to another drawing.

[0086] The network interface device 3 controls the order of packets by using multiple queues. The network interface device 3 receives packets from the outside, controls the order of the packets, and transfers the packets after the order control to the processing device 1. The network interface device 3 of this embodiment controls multiple flows.

[0087] The network interface device 3 includes queues 20, 21, 22, 23, 30, 31, 32, and 33, a queue distributor 25, and a flow manager 26. The network interface device 3 controls multiple flows. Specifically, the network interface device 3 controls two flows. Therefore, the network interface device 3 includes multiple groups of queues (specifically, two groups). In the configuration shown in FIG. 7, the queues 20, 21, 22, and 23 belong to a first group. The queues belonging to the first group are provided to temporarily store packets of the first flow. The queues 30, 31, 32, and 33 belong to a second group. The queues belonging to the second group are provided to temporarily store packets of the second flow.

[0088] Although the network interface device 3 of this embodiment controls two flows, it may be configured to control three or more flows by providing three or more groups of queues. In other words, the network interface device 3 can control the order of flows in a number corresponding to the number of queue groups.

[0089] In addition, if the network interface device 3 receives flows that exceed the number of groups of implemented queues, it gives up on sequence control and sends the received packets of the excess flows directly to the TCP layer processing unit 10 of the processing device 1.

[0090] That is, in this embodiment, the flow management information storage unit 27 can store flow identification information and management information for each of the multiple flows. The network interface device 3 has a queue group for each of the multiple flows. The number of queues for each group may be the same or different. The queue distribution unit 25 and flow management unit 26 process packets independently for each flow. The queue distribution unit 25 determines to which flow the received packet belongs by referencing the address information of the packet. The queue distribution unit 25 assigns the packet to a queue belonging to that flow. In other words, the queue distribution unit 25 assigns the packet to a queue in the group corresponding to the flow to which the packet belongs. The flow management unit 26 extracts packets independently for each flow, starting from the queue with the expected queue number in the group corresponding to the flow, and forwards the extracted packets to the external TCP layer processing unit 10.

[0091] That is, the network interface device 3 of this embodiment can control the order of packets belonging to each of a plurality of flows.

[0092] Third Embodiment Next, another embodiment according to the present disclosure will be described with reference to the drawings.

[0093] 8 is a block diagram showing a schematic functional configuration of a network interface device according to an embodiment. As shown in the figure, the network interface device 4 includes M packet storage units 40-0 to 40-(m-1), a distribution unit 45, and a flow management unit 46. M is an integer equal to or greater than 2.

[0094] Each of the packet storage units 40-0 to 40-(m-1) stores a packet. Each of the packet storage units 40-0 to 40-(m-1) may be a queue that stores packets of multiple entries on a first-in, first-out basis.

[0095] The distribution unit 45 receives packets from the outside, and assigns each packet to one of the M packet storage units 40-0 to 40-(m-1) based on the sequence information attached to the received packet so as to rotate among the M packet storage units 40-0 to 40-(m-1) in accordance with a predetermined rule, and stores the packet in the assigned packet storage unit.

[0096] The flow management unit 46 sequentially retrieves the packets from the M packet storage units 40-0 to 40-(m-1) in accordance with the rule, and transfers the retrieved packets to the outside.

[0097] The detailed functions and operations of the distributor 45 (corresponding to the queue distributor 25) and the flow manager 46 (corresponding to the flow manager 26) are as described in the other embodiments.

[0098] The network interface device 4 of this embodiment controls the order of received packets. That is, the network interface device 4 outputs received packets to the outside in the order according to the sequence numbers assigned to the packets.

[0099] Although the present disclosure has been described above with reference to the embodiments, the present disclosure is not limited to the above-described embodiments. Various modifications that can be understood by those skilled in the art can be made to the configuration and details of the present disclosure within the scope of the present disclosure. Furthermore, each embodiment can be combined with other embodiments as appropriate.

[0100] According to any of the above-described embodiments, received packets are registered directly in a queue (packet storage unit) of the network interface device, and a specific packet is extracted from the queue and transferred to the external (upstream) side. This configuration enables efficient order control with simple control. It also improves packet latency.

[0101] Some or all of the above embodiments can be described as, but not limited to, the following supplementary notes.

[0102] (Appendix 1) M (M is an integer equal to or greater than 2) packet storage units for storing packets; a distribution unit that receives packets, allocates each of the packets to one of the M packet storage units based on sequence information attached to the received packets so that the M packet storage units are used in rotation according to a predetermined rule, and stores the packet in the allocated packet storage unit; a flow management unit that sequentially retrieves the packets from the M packet storage units in an order according to the rule and transfers the retrieved packets to an external device; A network interface device comprising:

[0103] (Appendix 2) when retrieving the packets from the packet storage units in the order according to the rule, if a packet has not yet arrived at the packet storage unit in the order in which it should be retrieved next, the flow management unit waits for the packet to be stored in the packet storage unit before retrieving the packet from the packet storage unit. 2. The network interface device of claim 1.

[0104] (Appendix 3) the order information is an integer number, the distribution unit allocates the packets to the packet storage unit corresponding to a remainder when the sequence information is divided by M. 3. The network interface device according to claim 1 or 2.

[0105] (Appendix 4) M is 2 to the Nth power (N is an integer equal to or greater than 1), the distribution unit allocates the packets to the packet storage units corresponding to values ​​of the lowest N bits when the sequence information is expressed as a binary bit string. 4. The network interface device of claim 3.

[0106] (Appendix 5) the packet storage unit is a queue capable of storing a plurality of the packets in a first-in, first-out manner; 5. A network interface device according to any one of claims 1 to 4.

[0107] (Appendix 6) The flow management unit flow identification information consisting of a combination of a source address and a destination address of the packet; management information for a flow identified by the flow identification information; a flow management information storage unit for storing the Equipped with 6. A network interface device according to any one of claims 1 to 5.

[0108] (Appendix 7) the management information includes a valid bit indicating whether the flow identified by the flow identification information is valid or invalid; The flow management unit (1) When a packet of a flow identified by a combination of the source address and the destination address that does not exist is received, the management information for the flow identified by the combination of the source address and the destination address is written to the flow management information storage unit, and the valid bit in the management information is set to “valid”; (2) for the flow for which the validity bit indicates “valid”, if the arrival of the packet to be retrieved next in the packet storage unit times out, set the validity bit in the management information for the flow to “invalid”; 7. The network interface device of claim 6.

[0109] (Appendix 8) the flow management information storage unit stores the flow identification information and the management information for each of a plurality of flows; a group of the packet storage units for each of the plurality of flows; the distribution unit allocates the received packet to the packet storage unit in a group corresponding to a flow to which the packet belongs; the flow management unit sequentially retrieves the packets from the packet storage units in the group corresponding to each flow, and transfers the retrieved packets to an external device. 8. The network interface device according to claim 6 or 7.

[0110] (Appendix 9) the network interface device is provided with M (M is an integer of 2 or more) packet storage units for storing packets; a distribution unit receives packets, and allocates each of the packets to one of the M packet storage units based on sequence information attached to the received packets so as to rotate the use of the M packet storage units in accordance with a predetermined rule, and stores the packets in the allocated packet storage unit; a flow management unit that sequentially retrieves the packets from the M packet storage units in an order according to the rule and transfers the retrieved packets to an external device; Packet forwarding method.

[0111] (Appendix 10) M (M is an integer equal to or greater than 2) packet storage units for storing packets; a distribution unit that receives packets, allocates each of the packets to one of the M packet storage units based on sequence information attached to the received packets so that the M packet storage units are used in rotation according to a predetermined rule, and stores the packet in the allocated packet storage unit; a flow management unit that sequentially retrieves the packets from the M packet storage units in an order according to the rule and transfers the retrieved packets to an external device; A program for causing a computer to function as a network interface device comprising:

[0112] (Appendix 11) when retrieving the packets from the packet storage units in the order according to the rule, if a packet has not yet arrived at the packet storage unit in the order in which it should be retrieved next, the flow management unit waits for the packet to be stored in the packet storage unit before retrieving the packet from the packet storage unit. 10. The packet forwarding method of claim 9.

[0113] (Appendix 12) the order information is an integer number, the distribution unit allocates the packets to the packet storage unit corresponding to a remainder when the sequence information is divided by M. 12. A packet forwarding method according to claim 9 or 11.

[0114] (Appendix 13) M is 2 to the Nth power (N is an integer equal to or greater than 1), the distribution unit allocates the packets to the packet storage units corresponding to values ​​of the lowest N bits when the sequence information is expressed as a binary bit string. 13. The packet forwarding method of claim 12.

[0115] (Appendix 14) the packet storage unit is a queue capable of storing a plurality of the packets in a first-in, first-out manner; 14. A packet forwarding method according to claim 9, or any of claims 11 to 13.

[0116] (Appendix 15) The flow management unit flow identification information consisting of a combination of a source address and a destination address of the packet; management information for a flow identified by the flow identification information; a flow management information storage unit for storing the Equipped with 15. A packet forwarding method according to claim 9, or any of claims 11 to 14.

[0117] (Appendix 16) the management information includes a valid bit indicating whether the flow identified by the flow identification information is valid or invalid; The flow management unit (1) When a packet of a flow identified by a combination of the source address and the destination address that does not exist is received, the management information for the flow identified by the combination of the source address and the destination address is written to the flow management information storage unit, and the valid bit in the management information is set to “valid”; (2) for the flow for which the validity bit indicates “valid”, if the arrival of the packet to be retrieved next in the packet storage unit times out, set the validity bit in the management information for the flow to “invalid”; 16. The packet forwarding method of claim 15.

[0118] (Appendix 17) the flow management information storage unit stores the flow identification information and the management information for each of a plurality of flows; a group of the packet storage units for each of the plurality of flows; the distribution unit allocates the received packet to the packet storage unit in a group corresponding to a flow to which the packet belongs; The flow management unit sequentially retrieves the packets from the packet storage unit in the group corresponding to each flow, and transfers the retrieved packets to an external device. 18. A packet forwarding method according to claim 16 or 17.

[0119] (Appendix 18) when retrieving the packets from the packet storage units in the order according to the rule, if a packet has not yet arrived at the packet storage unit in the order in which it should be retrieved next, the flow management unit waits for the packet to be stored in the packet storage unit before retrieving the packet from the packet storage unit. 10. The program described in Appendix 10.

[0120] (Appendix 19) the order information is an integer number, the distribution unit allocates the packets to the packet storage unit corresponding to a remainder when the sequence information is divided by M. 10. The program of claim 18.

[0121] (Appendix 20) M is 2 to the Nth power (N is an integer equal to or greater than 1), the distribution unit allocates the packets to the packet storage units corresponding to values ​​of the lowest N bits when the sequence information is expressed as a binary bit string. 19. The program described in Appendix 19.

[0122] (Appendix 21) the packet storage unit is a queue capable of storing a plurality of the packets in a first-in, first-out manner; 10. A program according to any one of claims 18 to 20.

[0123] (Appendix 22) The flow management unit flow identification information consisting of a combination of a source address and a destination address of the packet; management information for a flow identified by the flow identification information; a flow management information storage unit for storing the Equipped with 10. A program according to any one of claims 18 to 21.

[0124] (Appendix 23) the management information includes a valid bit indicating whether the flow identified by the flow identification information is valid or invalid; The flow management unit (1) When a packet of a flow identified by a combination of the source address and the destination address that does not exist is received, the management information for the flow identified by the combination of the source address and the destination address is written to the flow management information storage unit, and the valid bit in the management information is set to “valid”; (2) for the flow for which the validity bit indicates “valid”, if the arrival of the packet to be retrieved next in the packet storage unit times out, set the validity bit in the management information for the flow to “invalid”; 22. The program of claim 1.

[0125] (Appendix 24) the flow management information storage unit stores the flow identification information and the management information for each of a plurality of flows; a group of the packet storage units for each of the plurality of flows; the distribution unit allocates the received packet to the packet storage unit in a group corresponding to a flow to which the packet belongs; the flow management unit sequentially retrieves the packets from the packet storage units in the group corresponding to each flow, and transfers the retrieved packets to an external device. 22. The program of claim 23. [Explanation of symbols]

[0126] 1 Processing equipment 2,3,4 Network Interface Device 10 TCP layer processing section 20, 21, 22, 23 Queue (packet storage section) 25 Queue Distribution Unit (Distribution Unit) 26 Flow Management Department 27 Flow management information storage unit 30, 31, 32, 33 Queue (packet storage) 40-0, 40-1, , 40-(M-1) Packet storage unit 45 Distribution section 46 Flow Management Department 100,101 system 901 Central Processing Unit 902 RAM 903 Input / Output Ports 904,905 Input / Output Devices 906 Bus

Claims

1. M (M is an integer equal to or greater than 2) packet storage units for storing packets; a distribution unit that receives packets, allocates each of the packets to one of the M packet storage units based on sequence information attached to the received packets so that the M packet storage units are used in rotation according to a predetermined rule, and stores the packet in the allocated packet storage unit; a flow management unit that sequentially retrieves the packets from the M packet storage units in an order according to the rule and transfers the retrieved packets to an external device; A network interface device comprising:

2. when retrieving the packets from the packet storage units in the order according to the rule, if a packet has not yet arrived at the packet storage unit in the order in which it should be retrieved next, the flow management unit waits for the packet to be stored in the packet storage unit before retrieving the packet from the packet storage unit. The network interface device according to claim 1 .

3. the order information is an integer number, the distribution unit allocates the packets to the packet storage units corresponding to the remainder when the sequence information is divided by M; The network interface device according to claim 1 .

4. M is 2 to the Nth power (N is an integer equal to or greater than 1), the distribution unit allocates the packets to the packet storage units corresponding to values ​​of the lowest N bits when the sequence information is expressed as a binary bit string. The network interface device according to claim 3 .

5. the packet storage unit is a queue capable of storing a plurality of the packets in a first-in, first-out manner; The network interface device according to claim 1 .

6. The flow management unit flow identification information consisting of a combination of a source address and a destination address of the packet; management information for a flow identified by the flow identification information; a flow management information storage unit for storing the Equipped with The network interface device according to claim 1 .

7. the management information includes a valid bit indicating whether the flow identified by the flow identification information is valid or invalid; The flow management unit (1) When a packet of a flow identified by a combination of the source address and the destination address that does not exist is received, the management information for the flow identified by the combination of the source address and the destination address is written to the flow management information storage unit, and the valid bit in the management information is set to “valid”; (2) for the flow for which the validity bit indicates “valid”, if the arrival of the packet to be retrieved next in the packet storage unit times out, the validity bit in the management information for the flow is set to “invalid”; The network interface device according to claim 6.

8. the flow management information storage unit stores the flow identification information and the management information for each of a plurality of flows; a group of the packet storage units for each of the plurality of flows; the distribution unit allocates the received packet to the packet storage unit in a group corresponding to a flow to which the packet belongs; the flow management unit sequentially retrieves the packets from the packet storage units in the group corresponding to each flow, and transfers the retrieved packets to an external device. The network interface device according to claim 6.

9. the network interface device includes M (M is an integer of 2 or more) packet storage units for storing packets; a distribution unit included in the network interface device receives packets, and allocates each of the packets to one of the M packet storage units based on sequence information attached to the received packets so as to rotate the use of the M packet storage units in accordance with a predetermined rule, and stores the packets in the allocated packet storage unit; a flow management unit included in the network interface device sequentially extracting the packets from the M packet storage units in an order according to the rule, and transferring the extracted packets to an external device; Packet forwarding method.

10. M (M is an integer equal to or greater than 2) packet storage units for storing packets; a distribution unit that receives packets, allocates each of the packets to one of the M packet storage units based on sequence information attached to the received packets so that the M packet storage units are used in rotation according to a predetermined rule, and stores the packet in the allocated packet storage unit; a flow management unit that sequentially retrieves the packets from the M packet storage units in an order according to the rule and transfers the retrieved packets to an external device; A program for causing a computer to function as a network interface device comprising:

Citation Information

Patent Citations

  • Communication control apparatus

    JP2009232244A

  • Variable-length packet switch

    JP2011024275A

  • Apparatus, method, and program for measuring number of table entries

    JP7444249B2

  • Packet reception apparatus, packet communication system, and packet sequence control method

    WO2011068186A1

  • JPP7444249B