[go: up one dir, main page]

WO2011068186A1 - パケット受信装置、パケット通信システム、パケット順序制御方法 - Google Patents

パケット受信装置、パケット通信システム、パケット順序制御方法 Download PDF

Info

Publication number
WO2011068186A1
WO2011068186A1 PCT/JP2010/071644 JP2010071644W WO2011068186A1 WO 2011068186 A1 WO2011068186 A1 WO 2011068186A1 JP 2010071644 W JP2010071644 W JP 2010071644W WO 2011068186 A1 WO2011068186 A1 WO 2011068186A1
Authority
WO
WIPO (PCT)
Prior art keywords
packet
order
flow
received
protocol stack
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2010/071644
Other languages
English (en)
French (fr)
Inventor
真人 安田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011544322A priority Critical patent/JP5541293B2/ja
Publication of WO2011068186A1 publication Critical patent/WO2011068186A1/ja
Priority to US13/198,612 priority patent/US8773977B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

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

Definitions

  • the present invention relates to packet communication.
  • the present invention provides packet retransmission control (packet) in packet communication. It relates to retransmission control and packet reordering.
  • TCP Transmission Control Protocol
  • Packet retransmission control is known.
  • the transmission device transmits a packet to the reception device, and the reception device returns an acknowledgment to the transmission device when receiving the packet. With this confirmation response, the transmission device recognizes that the transmission packet has successfully reached the reception device. However, for example, when a packet is discarded in the network between the transmission device and the reception device, the transmission device does not receive an acknowledgment for the packet. If an acknowledgment is not received within a predetermined waiting time after sending a packet, the transmitting device transmits the packet to the receiving device again.
  • the predetermined waiting time is called “retransmission timeout (RTO: Retransmission Time Out)”.
  • Patent Document 1 Japanese Patent Laid-Open No. 2007-181127
  • Patent Document 2 Japanese Patent Laid-Open No. 2008-278014
  • Non-Patent Document 1 Patent Document 1 (Toru Takamichi et al. -High Speed MAC Technology for Terabit-Class LAN ", IEICE Communication Society Conference, 2008.)
  • Non-Patent Document 1 packet retransmission control is performed in a MAC (Media Access Control) layer lower than the transport layer.
  • the reason is as follows.
  • RTT Random Trip Time
  • FCT Flow ⁇ Completion Time
  • TCP is generally implemented in an OS (Operating System)
  • OS Operating System
  • Non-Patent Document 1 packet retransmission control is performed in the MAC layer, thereby reducing the retransmission timeout to the microsecond level.
  • Japanese Patent Laid-Open No. 2007-281808 discloses a technique related to packet order control.
  • the packet communication device described in Patent Literature 3 includes a rearrangement processing unit, a timer control unit, a retransmission counter, and a received packet order control unit.
  • the rearrangement processing means stays in the packet data rearrangement buffer and arranges the arrival packets in order.
  • the timer control means performs timer control that gives up the normal reception in the rearrangement processing means and leaves it to retransmission in the higher layer.
  • the retransmission counter counts the number of retransmissions of unreceived packets that are activated when a discontinuous reception waiting state occurs.
  • the received packet order control means abandons the reception waiting state and sends already received packets to the upper layer.
  • the TCP on the receiving side needs to perform packet order control.
  • This packet order control increases the load on the “network protocol stack” including TCP. Since the network protocol stack needs to provide various other functions, it is desirable to reduce the load due to packet order control as much as possible.
  • One object of the present invention is to reduce the load of packet order control on the network protocol stack.
  • a packet receiver in one aspect of the present invention, includes an acknowledgment unit that responds to the received packet received from the packet transmission device and returns an acknowledgment to the packet transmission device. If the packet transmission apparatus does not receive an acknowledgment for the transmission packet within a predetermined time after transmitting the transmission packet, the packet transmission apparatus retransmits the transmission packet.
  • the packet receiving apparatus further includes a network protocol stack having a function of performing order control of received packets, an order control unit that performs order control of received packets in a lower layer than the network protocol stack, and a buffer unit. Out-of-order packets among the received packets are stored in the buffer unit in association with the flow.
  • the order control unit determines whether the received packet is an In-Order packet or an Out-of-Order packet. When the received packet is an In-Order packet, the order control unit transfers the received packet to the network protocol stack. When the received packet is an In-Order packet of a flow and the Out-of-Order packet of the flow is stored in the buffer unit, the sequence control unit transfers the received packet to the network protocol stack. Then, all Out-of-Order packets of the flow stored in the buffer unit are transferred to the network protocol stack.
  • a packet communication system in another aspect of the present invention, includes a packet transmission device that transmits a transmission packet, and a packet reception device that receives a transmission packet from the packet transmission device as a reception packet.
  • the packet receiving apparatus includes an acknowledgment unit that returns an acknowledgment to the packet transmitting apparatus in response to the received packet. If the packet transmission apparatus does not receive an acknowledgment for the transmission packet within a predetermined time after transmitting the transmission packet to the packet reception apparatus, the packet transmission apparatus performs packet retransmission control to retransmit the transmission packet to the packet reception apparatus.
  • the packet receiving apparatus further includes a network protocol stack having a function of performing order control of received packets, an order control unit that performs order control of received packets in a lower layer than the network protocol stack, and a buffer unit. Out-of-order packets among the received packets are stored in the buffer unit in association with the flow.
  • the order control unit determines whether the received packet is an In-Order packet or an Out-of-Order packet. When the received packet is an In-Order packet, the order control unit transfers the received packet to the network protocol stack. When the received packet is an In-Order packet of a flow and the Out-of-Order packet of the flow is stored in the buffer unit, the sequence control unit transfers the received packet to the network protocol stack. Then, all Out-of-Order packets of the flow stored in the buffer unit are transferred to the network protocol stack.
  • a packet order control method in a packet receiving apparatus includes an acknowledgment unit that responds to the received packet received from the packet transmission device and returns an acknowledgment to the packet transmission device. If the packet transmission apparatus does not receive an acknowledgment for the transmission packet within a predetermined time after transmitting the transmission packet, the packet transmission apparatus retransmits the transmission packet.
  • the packet receiving apparatus further includes a network protocol stack having a function of controlling the order of received packets, and a buffer unit. Out-of-order packets among the received packets are stored in the buffer unit in association with the flow.
  • the packet order control method according to the present invention includes performing order control of received packets at a lower layer than the network protocol stack.
  • This order control includes (A) determining whether a received packet is an In-Order packet or an Out-of-Order packet, and (B) if the received packet is an In-Order packet, (C) If the received packet is an In-Order packet of a flow having a received packet and the Out-of-Order packet of the flow is stored in the buffer unit, the received packet is Transferring all Out-of-Order packets of the flow stored in the buffer unit to the network protocol stack after transferring to the network protocol stack.
  • a packet order control program that causes a packet receiver to execute packet order control processing.
  • the packet reception device includes an acknowledgment unit that responds to the received packet received from the packet transmission device and returns an acknowledgment to the packet transmission device. If the packet transmission apparatus does not receive an acknowledgment for the transmission packet within a predetermined time after transmitting the transmission packet, the packet transmission apparatus retransmits the transmission packet.
  • the packet receiving apparatus further includes a network protocol stack having a function of controlling the order of received packets, and a buffer unit. Out-of-order packets among the received packets are stored in the buffer unit in association with the flow.
  • the packet order control processing according to the present invention includes performing order control of received packets in a lower layer than the network protocol stack.
  • This order control includes (A) determining whether a received packet is an In-Order packet or an Out-of-Order packet, and (B) if the received packet is an In-Order packet, (C) If the received packet is an In-Order packet of a flow having a received packet and the Out-of-Order packet of the flow is stored in the buffer unit, the received packet is Transferring all Out-of-Order packets of the flow stored in the buffer unit to the network protocol stack after transferring to the network protocol stack.
  • FIG. 1 is a block diagram schematically showing a configuration of a packet communication system in an embodiment of the present invention.
  • FIG. 2 is a conceptual diagram showing the configuration of the data center.
  • FIG. 3 is a block diagram showing a configuration example of the server in the embodiment of the present invention.
  • FIG. 4 is a conceptual diagram showing an example of the sequence control data area in the embodiment of the present invention.
  • FIG. 5 is a conceptual diagram showing expected sequence number information in the embodiment of the present invention.
  • FIG. 6 is a conceptual diagram showing an example of entry information and a packet storage area in the embodiment of the present invention.
  • FIG. 7 is a flowchart showing packet order control processing in the embodiment of the present invention.
  • FIG. 8 is a flowchart showing step S100 in the embodiment of the present invention.
  • FIG. 1 is a block diagram schematically showing a configuration of a packet communication system in an embodiment of the present invention.
  • FIG. 2 is a conceptual diagram showing the configuration of the data center.
  • FIG. 3 is
  • FIG. 9 is a flowchart showing a first example of step S200 in the embodiment of the present invention.
  • FIG. 10 is a flowchart showing a second example of step S200 in the embodiment of the present invention.
  • FIG. 11 is a flowchart showing a third example of step S200 in the embodiment of the present invention.
  • FIG. 12 is a conceptual diagram showing another example of the sequence control data area in the embodiment of the present invention.
  • FIG. 13 is a flowchart showing a fourth example of step S200 in the embodiment of the present invention.
  • FIG. 14 is a flowchart showing packet order control processing in the embodiment of the present invention.
  • FIG. 15 is a block diagram showing an example of the configuration of the server in the embodiment of the present invention.
  • FIG. 15 is a block diagram showing an example of the configuration of the server in the embodiment of the present invention.
  • FIG. 16 is a block diagram showing another example of the configuration of the server in the embodiment of the present invention.
  • FIG. 17 is a block diagram showing still another example of the configuration of the server according to the embodiment of the present invention.
  • FIG. 18 is a block diagram illustrating a configuration example of the network device according to the embodiment of the present invention.
  • FIG. 1 is a block diagram schematically showing a configuration of a packet communication system 1 in the present embodiment.
  • the packet communication system 1 includes a transmission device (packet transmission device) TRN and a reception device (packet reception device) RCV.
  • the transmission device TRN and the reception device RCV are connected to each other via a network.
  • the transmission device TRN transmits a packet PKT (transmission packet) to the reception device RCV via the network.
  • Receiving device RCV receives packet PKT (received packet) from transmitting device TRN via the network.
  • the packet PKT sent from the transmission device TRN may not normally reach the reception device RCV.
  • a packet PKT may be discarded in the middle of the network due to a signal bit error.
  • a plurality of packets may be successively discarded due to network congestion (this is called “burst discard”).
  • the receiving device RCV includes the confirmation response unit 2.
  • the confirmation response unit 2 returns an acknowledgment ACK to the transmission device TRN in response to the received packet PKT.
  • the transmission device TRN does not receive an acknowledgment ACK for the packet PKT.
  • the transmitting device TRN transmits the packet PKT again to the receiving device RCV.
  • the receiving device RCV performs “packet order control” that rearranges the received packets PKT in order.
  • the received packet PKT is divided into “In-Order packet PKT-I” and “Out-of-Order packet PKT-O”.
  • the In-Order packet PKT-I is a packet received in the expected order.
  • the Out-of-Order packet PKT-O is a packet that is not in the expected order, and is received when the In-Order packet PKT-I is missing.
  • the order control of the received packet PKT is one of the functions of the network protocol stack 10.
  • the network protocol stack 10 is means for providing transport layer and network layer protocol functions.
  • the network protocol stack 10 provides a function of TCP / IP (Transport Control Protocol / Internet Protocol).
  • the network protocol stack 10 is a part of an OS (Operating System) kernel program executed by the processing device.
  • the network protocol stack 10 may be realized by hardware such as a TCP / IP offload engine.
  • the network protocol stack 10 has not only a packet order control function but also a packet retransmission control function.
  • the receiving device RCV includes an order control unit 3 and a buffer unit 4 separately from the network protocol stack 10.
  • the order control unit 3 controls the order of received packets PKT in a lower layer than the network protocol stack 10, for example, in a MAC (Media Access Control) layer.
  • the buffer unit 4 is used to temporarily store (buffer) the Out-of-Order packet PKT-O.
  • the order control unit 3 determines whether the received packet PKT is an In-Order packet PKT-I or an Out-of-Order packet PKT-O.
  • the order control unit 3 transfers the received packet PKT-I to the network protocol stack 10 of the upper layer.
  • the order control unit 3 stores the received packet PKT-O in the buffer unit 4 within a possible range. At this time, the received packet PKT-O is stored in the buffer unit 4 in association with the flow to which it belongs. That is, the Out-of-Order packet PKT-O is temporarily stored (buffered) in the buffer unit 4 in association with the flow.
  • the sequence control unit 3 transfers the In-Order received packet PKT-I to the network protocol stack 10 of the upper layer. After that, the sequence control unit 3 reads “all” Out-of-Order packets PKT-O of the same flow stored in the buffer unit 4 and reads these “all” Out-of-Order packets PKT-O. The data is sequentially transferred to the network protocol stack 10 of the upper layer.
  • packet order control is executed to some extent in the lower layer than the network protocol stack 10.
  • the packet order control opportunities in the network protocol stack 10 are reduced. That is, the load of packet order control on the network protocol stack 10 is reduced. Since the network protocol stack 10 needs to provide various other functions, it is preferable that the load due to packet order control is reduced.
  • the In-Order packet PKT-I when the In-Order packet PKT-I arrives, all packets PKT of the flow are sent to the network protocol stack 10 regardless of the alignment status of the packets PKT of the flow. Further, as will be described later, not only when the In-Order packet PKT-I arrives, but also at other occasions, all the Out-of-Order packets PKT-O stored in the buffer unit 4 are transferred to the network protocol stack 10. May be sent to. These means that packet order control is performed to some extent in the lower layer, but does not stick to it. The lower layer performs packet order control as much as possible, but in some cases, entrusts packet order control to the network protocol stack 10 of the upper layer.
  • the lower layer performs packet order control as far as possible, but in some cases, entrusts packet order control to the upper layer network protocol stack 10. Therefore, the order control unit 3 and the buffer unit 4 can be realized with a simple configuration. Further, the order control unit 3 and the buffer unit 4 can be easily mounted on the receiving device RCV. At this time, there is no need to modify the existing network protocol stack 10. Thus, according to the present embodiment, it is possible to reduce the load on the network protocol stack 10 and to reduce the cost.
  • a data center (Data Center).
  • a large number of servers SV are divided into a front end, a middle end, and a back end.
  • a network of switches SW is interposed between the front end and the middle end, and between the middle end and the back end.
  • a server SV that transmits a packet is the above-described transmitting device TRN
  • a server SV that receives the packet is the above-described receiving device RCV.
  • FIG. 3 shows a configuration example of one server SV (transmitting device TRN, receiving device RCV).
  • the server SV includes a program processing device 100 and a network interface device 200.
  • the program processing apparatus 100 includes a CPU (Central Processing Unit) and executes various software programs including applications and OS.
  • the network protocol stack 10 is a part of the OS kernel program and is realized by software.
  • the network protocol stack 10 has a TCP / IP function including packet retransmission control and packet order control.
  • Application performs network communication processing.
  • the data requested to be transmitted from the application is divided by the network protocol stack 10 for each size that can be transmitted to the network.
  • the divided data is given a transport layer header and sent to the network interface device 200 as a transmission packet.
  • the network interface device 200 is, for example, a NIC (Network Interface Card).
  • the network interface device 200 provides a MAC layer function lower than the network protocol stack 10.
  • the network interface device 200 includes a retransmission control block 20, an order control block 30, and a storage block 40.
  • the retransmission control block 20, the order control block 30, and the storage block 40 are realized by hardware.
  • the retransmission control block 20 performs packet retransmission control in a lower layer than the network protocol stack 10. Specifically, the retransmission control block 20 of the transmission device TRN receives the transmission packet PKT from the network protocol stack 10 of the upper layer. Subsequently, the retransmission control block 20 of the transmission apparatus TRN transmits the transmission packet PKT to the reception apparatus RCV, and stores a copy of the transmission packet PKT in the retransmission control data area 50 (retransmission buffer) in the storage block 40. . At this time, the retransmission control block 20 may add a header dedicated to the lower layer to the transmission packet PKT.
  • the retransmission control block 20 of the receiving device RCV receives the packet PKT from the transmitting device TRN, in response to the received packet PKT, the retransmission control block 20 returns a “lower layer acknowledgment ACK” to the retransmission control block 20 of the transmitting device TRN. That is, the retransmission control block 20 on the receiving side corresponds to the confirmation response unit 2 in FIG.
  • the reason why “lower layer acknowledgment ACK” is described here is to distinguish it from a normal acknowledgment processed by the network protocol stack 10.
  • packet retransmission control is performed by the network protocol stack 10 between the transmission device TRN and the reception device RCV, which is the same in this configuration example.
  • the retransmission control block 20 of the transmission apparatus TRN When receiving the “lower layer acknowledgment ACK” for the transmission packet PKT, the retransmission control block 20 of the transmission apparatus TRN releases (deletes) the transmission packet PKT temporarily stored in the retransmission control data area 50. . At this time, the retransmission control block 20 terminates without passing the “lower layer acknowledgment ACK” to the upper layer.
  • the retransmission control block 20 of the transmission apparatus TRN performs packet retransmission. . Specifically, the retransmission control block 20 of the transmission apparatus TRN reads the transmission packet PKT stored in the retransmission control data area 50 and transmits the transmission packet PKT again to the reception apparatus RCV.
  • the packet retransmission control is performed in the lower layer than the network protocol stack 10 for the following two reasons.
  • the first reason is that the lower layer retransmission control block 20 performs packet retransmission control, thereby reducing the load of packet retransmission control on the upper layer network protocol stack 10.
  • the second reason is to shorten the retransmission timeout (RTO) as much as possible.
  • RTT Red Trip Time
  • FCT Flow Completion Time
  • the network protocol stack 10 is implemented in the OS, the retransmission timeout cannot be reduced to the microsecond level in the packet retransmission control by TCP.
  • the unit time (Jiffies) in Linux is 10 milliseconds, the retransmission timeout cannot be shortened to less than 10 milliseconds in the standard TCP of Linux.
  • the retransmission control block 20 is provided in a lower layer than the network protocol stack 10. Then, packet retransmission control is performed with a retransmission timeout (eg, microsecond level) shorter than that in the case of the network protocol stack 10. Thereby, FCT is reduced and communication efficiency is improved.
  • a retransmission timeout eg, microsecond level
  • the order control block 30 of the network interface device 200 corresponds to the order control unit 3 in FIG. 1 and performs “packet order control” in a lower layer than the network protocol stack 10. Thereby, the load of packet order control applied to the network protocol stack 10 is reduced.
  • the packet order control process by the order control block 30 according to the present embodiment will be described in detail later (see section 3).
  • the storage block 40 is, for example, SRAM (Static Random Access Memory).
  • the storage block 40 has a retransmission control data area 50 and an order control data area 60.
  • the retransmission control data area 50 is a retransmission buffer used in packet retransmission control by the retransmission control block 20.
  • the sequence control data area 60 corresponds to the buffer unit 4 in FIG. 1 and is used in packet sequence control by the sequence control block 30.
  • FIG. 4 is a conceptual diagram showing the sequence control data area 60.
  • the sequence control data area 60 stores expected sequence number information 61 and at least one entry information 62.
  • the order control data area 60 has at least one packet storage area 65.
  • FIG. 5 is a conceptual diagram showing expected sequence number information 61.
  • the expected sequence number information 61 indicates “expected sequence number ESQN” for each flow, and indicates the correspondence between the flow identification information and the expected sequence number ESQN.
  • the flow identification information is information for specifying a flow, and is given as a combination of a source MAC address, a destination MAC address, a source IP address, a destination IP address, and the like. This flow identification information can be extracted from the header of the packet PKT.
  • the expected sequence number ESQN is the sequence number of the packet PKT that is expected to be received next.
  • the expected sequence number ESQN is expressed by the following equation (1).
  • the packet storage area 65 is a storage area having a predetermined capacity in which the Out-of-Order packet PKT-O is stored.
  • the entry information 62 is management information of the Out-of-Order packet PKT-O stored in the packet storage area 65.
  • the packet storage area 65 and entry information 62 are provided for each flow. That is, one packet storage area 65 is assigned to one flow, and an Out-of-Order packet PKT-O of a certain flow is stored in one packet storage area 65 assigned to the flow.
  • the packet storage area 65 may be provided for one flow or a plurality of flows. When a plurality of packet storage areas 65 are provided, it is possible to buffer a plurality of different flow Out-of-Order packets PKT-O in parallel.
  • FIG. 6 shows an example of entry information 62 and a packet storage area 65 relating to a certain flow.
  • the entry information 62 includes flow identification information, entry number, valid bit, head address, packet size, and the like.
  • the flow identification information indicates the flow to which the Out-of-Order packet PKT-O stored in the corresponding packet storage area 65 belongs.
  • the entry number is an identification number of each Out-of-Order packet PKT-O stored in the corresponding packet storage area 65. In this example, a maximum of N (N is a natural number) Out-of-Order packets PKT-O can be stored in one packet storage area 65.
  • the valid bit indicates whether each entry is in use or invalid.
  • the head address is an address in the packet storage area 65 and indicates the head of the storage destination of the Out-of-Order packet PKT-O of the corresponding entry.
  • the packet size indicates the size (packet length) of the Out-of-Order packet PKT-O stored in the corresponding entry.
  • two Out-of-Order packets PKT-O-1 and PKT-O-2 of a certain flow are buffered in the packet storage area 65.
  • the size (capacity) of the entire packet storage area 65 is Mbytes.
  • the start address of the packet storage area 65 is the reference address BA, the start address of the packet PKT-O-1 is “BA + 1000”, and the start address of the packet PKT-O-2 is “BA + 2500”.
  • FIG. 7 is a flowchart showing packet order control processing in the present embodiment.
  • Basic flow Step S10 The sequence control block 30 receives a packet PKT of a certain flow from the transmission device TRN. In the following description, it is assumed that this received packet PKT is a packet of the first flow.
  • Step S20 The order control block 30 extracts header information from the received packet PKT.
  • the header information includes a sequence number related to the received packet PKT, flow identification information, a packet size, and the like.
  • Step S30 The sequence control block 30 refers to the expected sequence number information 61 (see FIG. 5) in the storage block 40 and acquires the expected sequence number ESQN of the first flow.
  • Step S40 The sequence control block 30 determines whether the received packet PKT is an In-Order packet PKT-I based on the expected sequence number ESQN of the first flow and the sequence number of the received packet PKT. Specifically, the order control block 30 compares the expected sequence number ESQN with the sequence number of the received packet PKT. When the following conditional expression (2) is satisfied, that is, when the sequence number of the received packet PKT matches the expected sequence number ESQN, the sequence control block 30 converts the received packet PKT into an In-Order packet PKT-I. judge.
  • Step S50 When the received packet PKT is the In-Order packet PKT-I (step S40; Yes), the order control block 30 transfers the received packet PKT-I to the network protocol stack 10 of the upper layer.
  • Step S60 Subsequently, the order control block 30 refers to the entry information 62 in the storage block 40 to determine whether the Out-of-Order packet PKT-O of the same first flow has already been stored (buffered) in the packet storage area 65. Check whether or not. When the Out-of-Order packet PKT-O of the first flow is not stored in the packet storage area 65 (step S60; No), the process proceeds to step S90.
  • Step S70 When the Out-of-Order packet PKT-O of the first flow is stored in the packet storage area 65 (step S60; Yes), the sequence control block 30 uses the first flow stored in the packet storage area 65. The “all” Out-of-Order packets PKT-O are sequentially read. Then, the sequence control block 30 sequentially transfers “all” Out-of-Order packets PKT-O of the first flow to the network protocol stack 10 of the upper layer.
  • Step S80 After transferring all the Out-of-Order packets PKT-O of the first flow to the upper layer, the sequence control block 30 initializes the entry information 62 corresponding to the first flow. As a result, the packet storage area 65 previously allocated to the first flow is released and becomes an unused area.
  • Step S90 The sequence control block 30 calculates a new expected sequence number ESQN of the first flow according to the above equation (1), and updates the expected sequence number information 61.
  • Step S100 On the other hand, when the received packet PKT is not the In-Order packet PKT-I but the Out-of-Order packet PKT-O (step S40; No), the sequence control block 30 receives the received packet PKT- of the first flow. O is processed as follows.
  • FIG. 8 is a flowchart showing step S100 in the present embodiment.
  • Step S110 The order control block 30 calculates the “sequence difference value DIF” regarding the received packet PKT-O.
  • the sequence difference value DIF is an index indicating how much the received packet PKT-O deviates from the In-Order packet PKT-I.
  • the sequence difference value DIF is a difference between the sequence number of the received packet PKT-O and the expected sequence number ESQN, and is expressed by the following equation (3).
  • Step S120 Further, the order control block 30 refers to the entry information 62 in the storage block 40.
  • Step S130 The sequence control block 30 refers to the entry information 62 and checks whether there is a packet storage area 65 assigned to the same first flow as the received packet PKT-O. That is, the order control block 30 checks whether the Out-of-Order packet PKT-O of the same first flow has already been buffered.
  • Step S140 When the Out-of-Order packet PKT-O of the first flow is already buffered (step S130; Yes), the sequence control block 30 determines whether or not the received packet PKT-O can be additionally registered in the packet storage area 65. Find out.
  • a maximum of N (N is a natural number) Out-of-Order packets PKT-O can be stored in one packet storage area 65.
  • the order control block 30 refers to the valid bit in the entry information 62 to check the number of Out-of-Order packets PKT-O stored in the packet storage area 65 assigned to the first flow.
  • the sequence control block 30 stores the received packet PKT-O in the packet storage area 65. Judge that it is impossible to add.
  • the size (capacity) of the entire packet storage area 65 is Mbytes. If there is no more room to store the received packet PKT-O in the packet storage area 65 assigned to the first flow, the sequence control block 30 cannot add the received packet PKT-O to the packet storage area 65. to decide. For example, as described below, when the write address is determined according to the sequence difference value DIF, it is possible to determine whether the write address is based on the sequence difference value DIF, the packet size, and the capacity of the packet storage area 65.
  • Step S150 If the result of determination in step S140 is “possible” (step S140; Yes), the sequence control block 30 stores the received packet PKT-O in the packet storage area 65 assigned to the first flow.
  • the write address to the packet storage area 65 is determined according to the sequence difference value DIF calculated by the above equation (3). That is, the write address is calculated by shifting the address from the reference address BA by an amount corresponding to the sequence difference value DIF. As the sequence difference value DIF increases, the received packet PKT-O is stored in a later portion in the packet storage area 65.
  • the sequence control block 30 updates the entry information 62 relating to the first flow.
  • Step S160 On the other hand, when the result of determination in step S140 is “impossible” (step S140; No), the sequence control block 30 sends all Out-of-Order packets PKT-O of the first flow to the upper layer. Transfer to the network protocol stack 10 in order. The forwarded Out-of-Order packet PKT-O is received not only for all Out-of-Order packets PKT-O already stored in the packet storage area 65 assigned to the first flow, It also includes packet PKT-O. In this case, the packet of the first flow is transferred to the network protocol stack 10 without guaranteeing in-sequence delivery. Therefore, the network protocol stack 10 performs packet order control as usual.
  • Step S170 Further, the order control block 30 calculates a new expected sequence number ESQN of the first flow according to the above equation (1), and updates the expected sequence number information 61.
  • Step S180 Further, the order control block 30 initializes the entry information 62 corresponding to the first flow. As a result, the packet storage area 65 previously allocated to the first flow is released and becomes an unused area.
  • Step S190 Next, consider a case where there is no packet storage area 65 allocated to the first flow in step S130 (step S130; No). In this case, the order control block 30 refers to the entry information 62 and checks whether there is an unused packet storage area 65 in the order control data area 60. When there is an unused packet storage area 65 (step S190; Yes), the sequence control block 30 newly assigns the packet storage area 65 to the first flow, and executes the above-described step S150.
  • Step S200 On the other hand, when there is no unused packet storage area 65 in the sequence control data area 60 (step S190; No), it is because the Out-of-Order packet PKT-O of another flow occupies the packet storage area 65. Means that In this case, the order control block 30 executes Step S200.
  • Various algorithms of step S200 can be considered as exemplified below.
  • FIG. 9 shows a first example of step S200.
  • the first example is the simplest algorithm that prioritizes other flows that are already buffered.
  • there is only one packet storage area 65 and the Out-of-Order packet PKT-O of the second flow different from the first flow is already stored in the one packet storage area 65. think of.
  • the sequence control block 30 gives up the buffer of the received packet PKT-O of the first flow and transfers the received packet PKT-O of the first flow to the network protocol stack 10 of the upper layer (step S210). Further, the sequence control block 30 calculates a new expected sequence number ESQN of the first flow according to the above equation (1), and updates the expected sequence number information 61 (step S220). In this case, the network protocol stack 10 performs packet order control for the first flow.
  • FIG. 10 shows a second example of step S200.
  • the second example is an algorithm that prioritizes a newly received flow.
  • the number of packet storage areas 65 is only one, and the Out-of-Order packet PKT-O of the second flow different from the first flow is already stored in the one packet storage area 65. think of.
  • the sequence control block 30 sequentially transfers all the Out-of-Order packets PKT-O of the second flow stored in the packet storage area 65 to the network protocol stack 10 of the upper layer (Step). S230). That is, the packet of the second flow is transferred to the network protocol stack 10 without guaranteeing in-sequence delivery. Therefore, for the second flow, the network protocol stack 10 performs packet order control.
  • sequence control block 30 calculates a new expected sequence number ESQN of the second flow according to the above equation (1), and updates the expected sequence number information 61 (step S240). Further, the sequence control block 30 initializes the entry information 62 corresponding to the second flow (step S250). As a result, the packet storage area 65 previously allocated to the second flow is released and becomes an unused area. Thereafter, the sequence control block 30 newly assigns the unused packet storage area 65 to the first flow, and executes the above-described step S150.
  • FIG. 11 shows a third example of step S200.
  • the third example is a combination of the first example and the second example.
  • the number of packet storage areas 65 is only one, and the Out-of-Order packet PKT-O of the second flow different from the first flow is already stored in the one packet storage area 65. think of.
  • the sequence control block 30 refers to the entry information 62 related to the second flow and acquires the minimum sequence difference value DIF-m related to the second flow.
  • the minimum sequence difference value DIF-m is a value corresponding to the difference between the head address of the first packet PKT-O-1 and the reference address BA.
  • the order control block 30 compares the sequence difference value DIF of the first flow obtained from the current received packet PKT-O with the minimum sequence difference value DIF-m of the second flow (step S260).
  • step S270 When the sequence difference value DIF of the first flow is greater than or equal to the minimum sequence difference value DIF-m of the second flow (step S270; No), it means that the “second packet” is less in the second flow.
  • the sequence control block 30 performs the same process as in the first example with priority on the second flow (steps S210 to S220).
  • step S270 when the sequence difference value DIF of the first flow is smaller than the minimum sequence difference value DIF-m of the second flow (step S270; Yes), it means that the “first packet” is less in the first flow. .
  • the sequence control block 30 performs the same processing as in the second example, giving priority to the first flow (steps S230 to S250, S150).
  • the packet order control in the lower layer is preferentially performed for the flow with the smaller sequence difference DIF.
  • the packet discard includes a single packet discard due to a bit error and a burst discard due to network congestion.
  • the order control when a single packet is discarded is preferentially performed in the lower layer.
  • the sequence control data area 60 corresponds to a plurality of types of flows. As shown in FIG. 12, the sequence control data area 60 is provided with entry information 62 and packet storage areas 65 for a plurality of flows. Therefore, packet order control can be executed in parallel for a plurality of flows. For example, even if the entry information 62-1 and the packet storage area 65-1 are already assigned to the flow A, the entry information 62-2 and the packet storage area 65-2 can be assigned to another flow B.
  • FIG. 13 is a flowchart showing step S200 in the fourth example.
  • the order control block 30 attempts to release any one of the plurality of packet storage areas 65 in order to buffer the received packet PKT-O of the first flow.
  • the released packet storage area 65 is referred to as a “replace area”, and a flow assigned to the replace area is referred to as a “replace flow”.
  • the sequence control block 30 selects one replace area from the plurality of packet storage areas 65, that is, selects one replace flow from the plurality of existing flows (step S280).
  • this selection algorithm a random method or a round robin method can be considered.
  • the flow having the largest sequence difference value DIF may be selected as the replacement flow.
  • the sequence difference value DIF of the first flow to which the received packet PKT-O belongs may be maximum. In this case, there is no replacement flow (step S290; No), and the sequence control block 30 executes the same processing as in the first example (steps S210 to S220).
  • step S290 the sequence control block 30 performs the same processing as in the second example for the selected replacement flow (steps S230 to S250). That is, the order control block 30 transfers all the Out-of-Order packets PKT-O stored in the selected replacement area to the network protocol stack 10 and releases the replacement area. Thereafter, the order control block 30 newly assigns the replacement area that has become unused to the first flow, and executes step S150.
  • the sequence control block 30 has a timer for each packet storage area 65, and measures the “no-write period” for each packet storage area 65 (step S300).
  • the no-write period is an elapsed time since the last Out-of-Order packet PKT-O was written in the corresponding packet storage area 65.
  • the order control block 30 sequentially transfers all Out-of-Order packets PKT-O stored in the corresponding packet storage area 65 to the network protocol stack 10 (step S320). Further, the sequence control block 30 calculates a new expected sequence number ESQN of the corresponding flow according to the above equation (1), and updates the expected sequence number information 61 (step S330). Further, the sequence control block 30 initializes the entry information 62 of the corresponding flow and releases the corresponding packet storage area 65 (step S340).
  • the sequence control block 30 holds a “Re-Order flag” for each flow.
  • the initial value of the Re-Order flag is “0”.
  • the sequence control block 30 unconditionally determines the received packet as the In-Order packet PKT-I in step S40, and further relates to the flow concerned. Set the Re-Order flag to “1”.
  • the order control block 30 determines the In-Order packet PKT-I according to the conditional expression (2) in step S40.
  • the sequence control block 30 may transfer all Out-of-Order packets PKT-O stored in the packet storage area 65 to the network protocol stack 10 in response to various triggers. is there.
  • the sequence control block 30 resets the Re-Order flag of the corresponding flow to “0”. Thereafter, the packet of the same flow that is received first is unconditionally determined to be an In-Order packet PKT-I.
  • FIG. 15 shows an example of the configuration of a server in the present embodiment.
  • the server includes a program processing device 100 and a network interface device 200.
  • the program processing apparatus 100 includes a CPU 110 and a storage device 120.
  • the CPU 110 executes various software programs including applications and OS.
  • the network protocol stack 10 is a part of the OS kernel program and is realized by software.
  • the network interface device 200 is a network interface card (NIC) connected to the program processing device 100.
  • the network interface device 200 includes the retransmission control block 20, the order control block 30, and the storage block 40 described above. In this case, the retransmission control block 20, the order control block 30, and the storage block 40 are realized by hardware.
  • FIG. 16 shows another example of the configuration of the server in the present embodiment.
  • the network protocol stack 10 is realized by hardware such as a TCP / IP offload engine, and is incorporated in the network interface device 200. Others are the same as the example shown in FIG. The same effect can be obtained by this configuration example.
  • FIG. 17 shows still another example of the server configuration in the present embodiment.
  • the retransmission control block 20 and the order control block 30 are realized by software processing. More specifically, the retransmission control block 20 and the order control block 30 are provided as drivers, and the retransmission control block 20 and the order control block 30 are realized by the CPU 110 of the program processing apparatus 100 executing the drivers. There is no need to modify the existing OS or network protocol stack 10.
  • the driver (software) may be recorded on a computer-readable recording medium.
  • the storage device 120 of the program processing device 100 becomes the storage block 40. The same effect can be obtained by this configuration example.
  • FIG. 18 shows a configuration example in the case of a network device 300 such as an application router.
  • the network device 300 includes an application processing block 310 that executes an application, a network protocol stack 10, a retransmission control block 20, an order control block 30, and a storage block 40. These are all realized by hardware. The same effect can be obtained by this configuration example.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

 パケット再送制御が行われる環境下で、パケット受信装置は、ネットワークプロトコルスタックよりも下位層において受信パケットの順序制御を行う順序制御部と、バッファ部とを備える。バッファ部には、受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納される。順序制御部は、受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定する。受信パケットがあるフローのIn-Orderパケットであり、且つ、当該フローのOut-of-Orderパケットがバッファ部に格納されている場合、順序制御部は、当該受信パケットをネットワークプロトコルスタックに転送した後、バッファ部に格納されている当該フローの全てのOut-of-Orderパケットをネットワークプロトコルスタックに転送する。

Description

パケット受信装置、パケット通信システム、パケット順序制御方法
 本発明は、パケット通信に関する。特に、本発明は、パケット通信におけるパケット再送制御(packet
retransmission control)及びパケット順序制御(packet reordering)に関する。
 トランスポート層におけるTCP(Transmission Control Protocol)の役割の1つは、パケット通信の信頼性を確保することである。パケット通信の信頼性を確保するための技術として、「パケット再送制御(packet transmission control)」が知られている。
 具体的には、送信装置は受信装置にパケットを送信し、受信装置は、パケットを受信すると確認応答(acknowledgement)を送信装置に返信する。この確認応答をもって、送信装置は、送出パケットが受信装置に無事到達したことを認識する。しかしながら、例えば送信装置と受信装置との間のネットワークでパケットが廃棄された場合、送信装置は、当該パケットに対する確認応答を受け取らない。パケット送出後、所定の待ち時間以内に確認応答を受け取らない場合、送信装置は、当該パケットを受信装置に再度送信する。尚、上記所定の待ち時間は、「再送タイムアウト(RTO: Retransmission Time Out)」と呼ばれている。
 このようなパケット再送制御に関連する技術が、特許文献1(特開2007-181127号公報)、特許文献2(特開2008-278014号公報)、非特許文献1(高道
透 他,“Ultra-High Speed MAC Technology for Terabit-Class LAN”,電子情報通信学会通信ソサイエティ大会,2008年.)に記載されている。
 非特許文献1によれば、トランスポート層よりも下位のMAC(Media Access Control)層において、パケット再送制御が実施される。その理由は次の通りである。例として、データセンター内のネットワークのような、RTT(Round Trip Time)が非常に短いネットワークを考える。このようなネットワークでは、再送タイムアウトをマイクロ秒レベルにまで短縮することにより、FCT(Flow Completion Time)を減少させ、通信効率を向上させることができる。しかしながら、一般的にTCPはOS(Operating System)に実装されているため、TCPによるパケット再送制御では、再送タイムアウトをマイクロ秒レベルまで短縮できない。例えば、Linuxにおける単位時間(Jiffies)は10ミリ秒であるため、Linuxの標準的なTCPでは再送タイムアウトを10ミリ秒未満に短縮できない。このような問題を解決するために、非特許文献1によれば、MAC層においてパケット再送制御を実施し、それにより、再送タイムアウトをマイクロ秒レベルにまで短縮する。
 その一方で、上述のようなパケット再送制御が実施されると、受信装置に到着するパケットの順序が入れ替わってしまう。従って、受信装置は、受信パケットを順番通りに並べ替える必要がある。この処理が、「パケット順序制御(packet reordering)」である。このパケット順序制御も、TCPの機能の1つである。
 特許文献3(特開2007-281808号公報)は、パケット順序制御に関連した技術を開示している。特許文献3に記載されたパケット通信装置は、並べ替え処理手段と、タイマー制御手段と、再送カウンタと、受信パケット順序制御手段と、を備える。並べ替え処理手段は、到着パケットをパケットデータ並べ替え用バッファに滞留して、順序通りに並べる。一定時間内にパケットが到着しない場合には、タイマー制御手段は、並べ替え処理手段における正常受信を諦め、上位レイヤでの再送に任せるタイマー制御を行う。再送カウンタは、不連続受信待ち状態発生時に起動される未受信パケットの再送回数をカウントする。受信パケット順序制御手段は、再送カウンタによりカウントした再送回数が所定の再送回数に達したとき、受信待ち状態を諦め、既に受信済みのパケットを上位レイヤに送出する。
特開2007-181127号公報 特開2008-278014号公報 特開2007-281808号公報
高道 透 他,"Ultra-High Speed MAC Technology forTerabit-Class LAN",電子情報通信学会通信ソサイエティ大会,2008年.
 上述の通り、パケット再送制御が行われる環境下では、受信側のTCPはパケット順序制御を実施する必要がある。このパケット順序制御は、TCPを含む「ネットワークプロトコルスタック(network protocol stack)」にかかる負荷を増大させる。ネットワークプロトコルスタックは他の様々な機能も提供する必要があるため、パケット順序制御による負荷をなるべく軽減することが望ましい。
 本発明の1つの目的は、ネットワークプロトコルスタックにかかるパケット順序制御の負荷を軽減することにある。
 本発明の1つの観点において、パケット受信装置が提供される。パケット受信装置は、パケット送信装置から受け取った受信パケットに応答して、確認応答をパケット送信装置に返信する確認応答部を備える。パケット送信装置は、送信パケットの送信後、所定の時間以内に当該送信パケットに対する確認応答を受け取らない場合、当該送信パケットを再送信する。パケット受信装置は、更に、受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、ネットワークプロトコルスタックよりも下位層において受信パケットの順序制御を行う順序制御部と、バッファ部と、を備える。バッファ部には、受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納される。順序制御部は、受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定する。受信パケットがIn-Orderパケットである場合、順序制御部は、当該受信パケットをネットワークプロトコルスタックに転送する。受信パケットがあるフローのIn-Orderパケットであり、且つ、当該フローのOut-of-Orderパケットがバッファ部に格納されている場合、順序制御部は、当該受信パケットをネットワークプロトコルスタックに転送した後、バッファ部に格納されている当該フローの全てのOut-of-Orderパケットをネットワークプロトコルスタックに転送する。
 本発明の他の観点において、パケット通信システムが提供される。パケット通信システムは、送信パケットを送信するパケット送信装置と、パケット送信装置からの送信パケットを受信パケットとして受け取るパケット受信装置と、を具備する。パケット受信装置は、受信パケットに応答して、確認応答をパケット送信装置に返信する確認応答部を備える。パケット送信装置は、パケット受信装置に送信パケットを送信した後、所定の時間以内に当該送信パケットに対する確認応答を受け取らない場合、当該送信パケットをパケット受信装置に再送信するパケット再送制御を行う。パケット受信装置は、更に、受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、ネットワークプロトコルスタックよりも下位層において受信パケットの順序制御を行う順序制御部と、バッファ部と、を備える。バッファ部には、受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納される。順序制御部は、受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定する。受信パケットがIn-Orderパケットである場合、順序制御部は、当該受信パケットをネットワークプロトコルスタックに転送する。受信パケットがあるフローのIn-Orderパケットであり、且つ、当該フローのOut-of-Orderパケットがバッファ部に格納されている場合、順序制御部は、当該受信パケットをネットワークプロトコルスタックに転送した後、バッファ部に格納されている当該フローの全てのOut-of-Orderパケットをネットワークプロトコルスタックに転送する。
 本発明の更に他の観点において、パケット受信装置におけるパケット順序制御方法が提供される。パケット受信装置は、パケット送信装置から受け取った受信パケットに応答して、確認応答をパケット送信装置に返信する確認応答部を備える。パケット送信装置は、送信パケットの送信後、所定の時間以内に当該送信パケットに対する確認応答を受け取らない場合、当該送信パケットを再送信する。パケット受信装置は、更に、受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、バッファ部と、を備える。バッファ部には、受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納される。本発明に係るパケット順序制御方法は、ネットワークプロトコルスタックよりも下位層において、受信パケットの順序制御を行うことを含む。この順序制御を行うことは、(A)受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定することと、(B)受信パケットがIn-Orderパケットである場合、当該受信パケットをネットワークプロトコルスタックに転送することと、(C)受信パケットがあるフローのIn-Orderパケットであり、且つ、当該フローのOut-of-Orderパケットがバッファ部に格納されている場合、当該受信パケットをネットワークプロトコルスタックに転送した後、バッファ部に格納されている当該フローの全てのOut-of-Orderパケットをネットワークプロトコルスタックに転送することと、を含む。
 本発明の更に他の観点において、パケット受信装置にパケット順序制御処理を実行させるパケット順序制御プログラムが提供される。パケット受信装置は、パケット送信装置から受け取った受信パケットに応答して、確認応答をパケット送信装置に返信する確認応答部を備える。パケット送信装置は、送信パケットの送信後、所定の時間以内に当該送信パケットに対する確認応答を受け取らない場合、当該送信パケットを再送信する。パケット受信装置は、更に、受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、バッファ部と、を備える。バッファ部には、受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納される。本発明に係るパケット順序制御処理は、ネットワークプロトコルスタックよりも下位層において、受信パケットの順序制御を行うことを含む。この順序制御を行うことは、(A)受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定することと、(B)受信パケットがIn-Orderパケットである場合、当該受信パケットをネットワークプロトコルスタックに転送することと、(C)受信パケットがあるフローのIn-Orderパケットであり、且つ、当該フローのOut-of-Orderパケットがバッファ部に格納されている場合、当該受信パケットをネットワークプロトコルスタックに転送した後、バッファ部に格納されている当該フローの全てのOut-of-Orderパケットをネットワークプロトコルスタックに転送することと、を含む。
 本発明によれば、ネットワークプロトコルスタックにかかるパケット順序制御の負荷を軽減することが可能となる。
 上記及び他の目的、長所、特徴は、次の図面と共に説明される本発明の実施の形態により明らかになるであろう。
図1は、本発明の実施の形態におけるパケット通信システムの構成を概略的に示すブロック図である。 図2は、データセンターの構成を示す概念図である。 図3は、本発明の実施の形態におけるサーバの構成例を示すブロック図である。 図4は、本発明の実施の形態における順序制御データ領域の一例を示す概念図である。 図5は、本発明の実施の形態における期待シーケンス番号情報を示す概念図である。 図6は、本発明の実施の形態におけるエントリ情報及びパケット格納領域の一例を示す概念図である。 図7は、本発明の実施の形態におけるパケット順序制御処理を示すフローチャートである。 図8は、本発明の実施の形態におけるステップS100を示すフローチャートである。 図9は、本発明の実施の形態におけるステップS200の第1の例を示すフローチャートである。 図10は、本発明の実施の形態におけるステップS200の第2の例を示すフローチャートである。 図11は、本発明の実施の形態におけるステップS200の第3の例を示すフローチャートである。 図12は、本発明の実施の形態における順序制御データ領域の他の例を示す概念図である。 図13は、本発明の実施の形態におけるステップS200の第4の例を示すフローチャートである。 図14は、本発明の実施の形態におけるパケット順序制御処理を示すフローチャートである。 図15は、本発明の実施の形態におけるサーバの構成の一例を示すブロック図である。 図16は、本発明の実施の形態におけるサーバの構成の他の例を示すブロック図である。 図17は、本発明の実施の形態におけるサーバの構成の更に他の例を示すブロック図である。 図18は、本発明の実施の形態におけるネットワーク装置の構成例を示すブロック図である。
 添付図面を参照して、本発明の実施の形態を説明する。
 1.概要
 図1は、本実施の形態におけるパケット通信システム1の構成を概略的に示すブロック図である。パケット通信システム1は、送信装置(パケット送信装置)TRNと受信装置(パケット受信装置)RCVを備えている。送信装置TRNと受信装置RCVとは、ネットワークを介して互いに接続されている。送信装置TRNは、ネットワークを介して受信装置RCVにパケットPKT(送信パケット)を送信する。受信装置RCVは、ネットワークを介して送信装置TRNからパケットPKT(受信パケット)を受け取る。
 但し、送信装置TRNから送出されたパケットPKTが受信装置RCVに正常に届かない場合がある。例えば、信号のビットエラーにより、ネットワークの途中でパケットPKTが廃棄される場合がある。また、ネットワークの輻輳により、複数のパケットが連続して廃棄される場合がある(これは、「バースト廃棄」と呼ばれている)。
 このようなパケット廃棄に対処するため、「パケット再送制御」が実施される。具体的には、受信装置RCVは、確認応答部2を備えている。確認応答部2は、送信装置TRNからパケットPKTを受け取ると、その受信パケットPKTに応答して、確認応答ACKを送信装置TRNに返信する。ネットワークの途中であるパケットPKTが廃棄された場合、送信装置TRNは、当該パケットPKTに対する確認応答ACKを受け取らない。受信装置RCVにパケットPKTを送出した後、所定の再送タイムアウト(RTO)以内に当該パケットPKTに対する確認応答ACKを受け取らない場合、送信装置TRNは、当該パケットPKTを受信装置RCVに再度送信する。
 その一方で、パケット再送制御が実施されると、受信装置RCVに到着するパケットPKTの順序が入れ替わってしまう。従って、受信装置RCVは、受信パケットPKTを順番通りに並べ替える「パケット順序制御」を実施する。尚、受信パケットPKTは、「In-OrderパケットPKT-I」と「Out-of-OrderパケットPKT-O」に区分される。In-OrderパケットPKT-Iは、期待された順番で受け取るパケットである。一方、Out-of-OrderパケットPKT-Oは、期待された順番ではないパケットであり、In-OrderパケットPKT-Iが抜けた場合に受け取るパケットである。
 一般的に、受信パケットPKTの順序制御は、ネットワークプロトコルスタック10の機能の1つである。ネットワークプロトコルスタック10は、トランスポート層やネットワーク層のプロトコル機能を提供する手段である。例えば、ネットワークプロトコルスタック10は、TCP/IP(Transport Control Protocol / Internet Protocol)の機能を提供する。典型的には、ネットワークプロトコルスタック10は、処理装置によって実行されるOS(Operating System)のカーネルプログラムの一部である。あるいは、ネットワークプロトコルスタック10は、TCP/IPオフロードエンジンのようなハードウェアで実現されてもよい。尚、ネットワークプロトコルスタック10は、パケット順序制御の機能だけでなく、パケット再送制御の機能も有している。
 本実施の形態によれば、更に、ネットワークプロトコルスタック10よりも下位層においてもパケット順序制御が実施される。そのために、図1に示されるように、受信装置RCVは、ネットワークプロトコルスタック10とは別に、順序制御部3及びバッファ部4を備えている。順序制御部3は、ネットワークプロトコルスタック10よりも下位層において、例えばMAC(Media Access Control)層において、受信パケットPKTの順序制御を行う。バッファ部4は、Out-of-OrderパケットPKT-Oを一時的に格納(バッファ)するために利用される。
 より詳細には、順序制御部3は、送信装置TRNからパケットPKTを受け取ると、その受信パケットPKTがIn-OrderパケットPKT-IかOut-of-OrderパケットPKT-Oかを判定する。受信パケットPKTがIn-OrderパケットPKT-Iである場合、順序制御部3は、その受信パケットPKT-Iを上位層のネットワークプロトコルスタック10に転送する。一方、受信パケットPKTがOut-of-OrderパケットPKT-Oである場合、順序制御部3は、その受信パケットPKT-Oを、可能な範囲内でバッファ部4に格納する。このとき、受信パケットPKT-Oは、自身が属するフローと関連付けられて、バッファ部4に格納される。つまり、バッファ部4には、Out-of-OrderパケットPKT-Oがフローと関連付けられて一時的に格納(バッファ)される。
 更に、受信パケットPKTがあるフローのIn-OrderパケットPKT-Iであり、且つ、同じフローのOut-of-OrderパケットPKT-Oがバッファ部4に既に格納されている場合、順序制御部3は、次のような処理を行う。まず、順序制御部3は、In-Orderの受信パケットPKT-Iを上位層のネットワークプロトコルスタック10に転送する。その後、順序制御部3は、バッファ部4に格納されている同じフローの“全ての”Out-of-OrderパケットPKT-Oを読み出し、それら“全ての”Out-of-OrderパケットPKT-Oを上位層のネットワークプロトコルスタック10に順番に転送する。
 単一のパケットPKTが廃棄されていた場合を考える。この場合は、In-OrderパケットPKT-Iの到着により“パケット抜け”が解消され、当該フローの一連のパケットPKTは、順番通りにネットワークプロトコルスタック10に転送される。すなわち、下位層からネットワークプロトコルスタック10に対するインシーケンスデリバリ(ISD: In Sequence Delivery)が保証される。従って、ネットワークプロトコルスタック10においてパケット順序制御を行う必要がなくなり、ネットワークプロトコルスタック10にかかる負荷が軽減される。
 複数のパケットPKTが連続して廃棄されたバースト廃棄の場合を考える。この場合は、1個のIn-OrderパケットPKT-Iが到着しても、パケット抜けは完全には解消されない。しかしながら、本実施の形態によれば、このような場合であっても、バッファ部4に格納されている同じフローのOut-of-OrderパケットPKT-Oは全てネットワークプロトコルスタック10に転送される。すなわち、インシーケンスデリバリが保証されないまま、当該フローのパケットはネットワークプロトコルスタック10に転送される。この場合は、通常通り、ネットワークプロトコルスタック10がパケット順序制御を行う。
 以上に説明されたように、本実施の形態の受信装置RCVによれば、ネットワークプロトコルスタック10よりも下位層において、パケット順序制御がある程度実行される。その結果、ネットワークプロトコルスタック10におけるパケット順序制御の機会が減少する。すなわち、ネットワークプロトコルスタック10にかかるパケット順序制御の負荷が軽減される。ネットワークプロトコルスタック10は他の様々な機能も提供する必要があるため、パケット順序制御による負荷が軽減されることは好適である。
 更に、本実施の形態によれば、In-OrderパケットPKT-Iが到着した場合、当該フローのパケットPKTの整列状況に拘わらず、当該フローのパケットPKTは全てネットワークプロトコルスタック10に送られる。また、後述されるが、In-OrderパケットPKT-Iの到着時だけでなく他の機会にも、バッファ部4に格納されている全てのOut-of-OrderパケットPKT-Oがネットワークプロトコルスタック10に送られてもよい。これらのことは、パケット順序制御をある程度は下位層で行うが、それにいたずらに固執しないことを意味する。下位層は、できる範囲でパケット順序制御を行うが、場合によってはパケット順序制御を上位層のネットワークプロトコルスタック10に委ねる。
 比較例として、上記特許文献3(特開2007-281808号公報)に記載された方式を考える。比較例では、In-Orderパケットが到着した場合、順番通り整列したパケットだけが上位層に転送され、不連続な部分は上位層に転送されずバッファに残留する。つまり、バッファに格納されている全てのOut-of-Orderパケットが上位層に転送されるわけではない。この方式は、下位層において煩雑な処理が必要であり、受信装置に実装することが容易ではない。
 一方、本実施の形態によれば、下位層は、できる範囲でパケット順序制御を行うが、場合によってはパケット順序制御を上位層のネットワークプロトコルスタック10に委ねる。従って、順序制御部3及びバッファ部4を簡易な構成で実現することが可能である。また、順序制御部3及びバッファ部4を受信装置RCVに容易に実装することができる。このとき、既存のネットワークプロトコルスタック10を改変する必要もない。このように、本実施の形態によれば、ネットワークプロトコルスタック10にかかる負荷を軽減し、且つ、コストを抑えることが可能となる。
 2.構成例
 以下、本実施の形態を更に詳しく説明する。一例として、図2で示されるようなデータセンター(Data
Center)を考える。データセンターでは、多数のサーバSVが、フロントエンド、ミドルエンド、及びバックエンドに分かれて配置されている。フロントエンドとミドルエンドとの間、及び、ミドルエンドとバックエンドとの間には、スイッチSWのネットワークが介在している。このようなデータセンター内において、サーバSV間でパケット通信を行うことを考える。パケットを送信するサーバSVが上述の送信装置TRNであり、パケットを受信するサーバSVが上述の受信装置RCVである。
 図3は、1つのサーバSV(送信装置TRN、受信装置RCV)の構成例を示している。サーバSVは、プログラム処理装置100とネットワークインタフェース装置200を備えている。
 プログラム処理装置100は、CPU(Central Processing Unit)を備えており、アプリケーションやOSを含む各種ソフトウェア・プログラムを実行する。本構成例では、ネットワークプロトコルスタック10は、OSのカーネルプログラムの一部であり、ソフトウェアで実現されている。ネットワークプロトコルスタック10は、パケット再送制御及びパケット順序制御を含むTCP/IP機能を有している。
 アプリケーションは、ネットワーク通信処理を行う。アプリケーションから送信要求されたデータは、ネットワークプロトコルスタック10によって、ネットワークへ送出可能なサイズ毎に分割される。分割されたデータには、トランスポート層のヘッダが付与され、送信パケットとしてネットワークインタフェース装置200に送られる。
 ネットワークインタフェース装置200は、例えばNIC(Network Interface Card)である。このネットワークインタフェース装置200は、ネットワークプロトコルスタック10よりも下位層のMAC層の機能を提供する。また、図3に示されるように、ネットワークインタフェース装置200は、再送制御ブロック20、順序制御ブロック30、及び記憶ブロック40を備えている。これら再送制御ブロック20、順序制御ブロック30、及び記憶ブロック40は、ハードウェアで実現される。
 再送制御ブロック20は、ネットワークプロトコルスタック10よりも下位層においてパケット再送制御を行う。具体的には、送信装置TRNの再送制御ブロック20は、上位層のネットワークプロトコルスタック10から送信パケットPKTを受け取る。続いて、送信装置TRNの再送制御ブロック20は、送信パケットPKTを受信装置RCVに送信し、また、その送信パケットPKTのコピーを記憶ブロック40中の再送制御データ領域50(再送バッファ)に格納する。このとき、再送制御ブロック20は、下位層専用のヘッダを送信パケットPKTに付与しても構わない。
 受信装置RCVの再送制御ブロック20は、送信装置TRNからパケットPKTを受け取ると、その受信パケットPKTに応答して、“下位層の確認応答ACK”を送信装置TRNの再送制御ブロック20に返信する。つまり、受信側の再送制御ブロック20は、図1中の確認応答部2に相当している。尚、ここで“下位層の確認応答ACK”と記載したのは、ネットワークプロトコルスタック10によって処理される通常の確認応答と区別するためである。送信装置TRNと受信装置RCVとの間では、周知の通り、ネットワークプロトコルスタック10によってもパケット再送制御は行われており、それは本構成例でも同じである。
 送信装置TRNの再送制御ブロック20は、送信パケットPKTに対する“下位層の確認応答ACK”を受け取ると、再送制御データ領域50に一時的に格納しておいた当該送信パケットPKTを解放(消去)する。またこの時、再送制御ブロック20は、“下位層の確認応答ACK”を上位層に渡すことなく、終端する。一方、送信パケットPKTの送出後、所定の再送タイムアウト(RTO)以内に当該送信パケットPKTに対する“下位層の確認応答ACK”を受け取らない場合、送信装置TRNの再送制御ブロック20は、パケット再送を行う。具体的には、送信装置TRNの再送制御ブロック20は、再送制御データ領域50に格納しておいた当該送信パケットPKTを読み出し、その送信パケットPKTを受信装置RCVに対して再度送信する。
 本構成例において、ネットワークプロトコルスタック10よりも下位層においてパケット再送制御を行う理由は、次の2つである。1つ目の理由は、下位層の再送制御ブロック20がパケット再送制御を行うことにより、上位層のネットワークプロトコルスタック10にかかるパケット再送制御の負荷が軽減されることである。
 2つ目の理由は、再送タイムアウト(RTO)をなるべく短縮することである。例えば、図2で示されたデータセンター内のサーバ間通信の場合、RTT(Round Trip Time)は非常に短く、マイクロ秒レベルである。この場合、再送タイムアウトをマイクロ秒レベルにまで短縮することにより、FCT(Flow Completion Time)を減少させ、通信効率を向上させることができる。しかしながら、ネットワークプロトコルスタック10はOSに実装されているため、TCPによるパケット再送制御では、再送タイムアウトをマイクロ秒レベルまで短縮できない。例えば、Linuxにおける単位時間(Jiffies)は10ミリ秒であるため、Linuxの標準的なTCPでは再送タイムアウトを10ミリ秒未満に短縮できない。そこで、本構成例では、ネットワークプロトコルスタック10よりも下位層に再送制御ブロック20が設けられる。そして、ネットワークプロトコルスタック10の場合よりも短い再送タイムアウト(例:マイクロ秒レベル)で、パケット再送制御が実施される。それにより、FCTが減少し、通信効率が向上する。
 ネットワークインタフェース装置200の順序制御ブロック30は、図1中の順序制御部3に相当しており、ネットワークプロトコルスタック10よりも下位層において「パケット順序制御」を行う。これにより、ネットワークプロトコルスタック10にかかるパケット順序制御の負荷が軽減される。本実施の形態に係る順序制御ブロック30によるパケット順序制御処理は、後に詳しく説明される(第3節参照)。
 記憶ブロック40は、例えばSRAM(Static Random Access Memory)である。この記憶ブロック40は、再送制御データ領域50及び順序制御データ領域60を有している。再送制御データ領域50は、再送制御ブロック20によるパケット再送制御において利用される再送バッファである。順序制御データ領域60は、図1中のバッファ部4に相当しており、順序制御ブロック30によるパケット順序制御において利用される。
 図4は、順序制御データ領域60を示す概念図である。順序制御データ領域60には、期待シーケンス番号情報61と少なくとも1つのエントリ情報62が格納される。また、順序制御データ領域60は、少なくとも1つのパケット格納領域65を有している。
 図5は、期待シーケンス番号情報61を示す概念図である。期待シーケンス番号情報61は、フロー毎に「期待シーケンス番号ESQN」を示しており、フロー識別情報と期待シーケンス番号ESQNとの対応関係を示している。フロー識別情報は、フローを特定するための情報であり、送信元MACアドレス、宛先MACアドレス、送信元IPアドレス、宛先IPアドレス等の組み合わせで与えられる。このフロー識別情報は、パケットPKTのヘッダから抽出可能である。期待シーケンス番号ESQNは、次に受信が期待されるパケットPKTのシーケンス番号である。期待シーケンス番号ESQNは、次の式(1)で表される。
 式(1):[期待シーケンス番号ESQN]=[上位層に転送済みのパケットのシーケンス番号の最大値]+[その最大シーケンス番号のパケットのサイズ]
 パケット格納領域65は、Out-of-OrderパケットPKT-Oが格納される所定容量の記憶領域である。エントリ情報62は、パケット格納領域65に格納されているOut-of-OrderパケットPKT-Oの管理情報である。パケット格納領域65及びエントリ情報62は、フロー毎に設けられる。つまり、1つのフローに対して、1つのパケット格納領域65が割り当てられ、あるフローのOut-of-OrderパケットPKT-Oは、当該フローに割り当てられた1つのパケット格納領域65に格納される。パケット格納領域65は、1フロー分だけ設けられてもよいし、複数フロー分設けられてもよい。複数のパケット格納領域65が設けられる場合、複数の異なるフローのOut-of-OrderパケットPKT-Oを並列的にバッファしておくことができる。
 図6は、あるフローに関するエントリ情報62とパケット格納領域65の例を示している。エントリ情報62は、フロー識別情報、エントリ番号、有効ビット、先頭アドレス、パケットサイズ等を含んでいる。フロー識別情報は、対応するパケット格納領域65に格納されているOut-of-OrderパケットPKT-Oが属するフローを示す。エントリ番号は、対応するパケット格納領域65に格納されている各Out-of-OrderパケットPKT-Oの識別番号である。本例では、1つのパケット格納領域65に、最大N個(Nは自然数)のOut-of-OrderパケットPKT-Oを格納可能である。有効ビットは、各エントリが使用中か無効かを示す。先頭アドレスは、パケット格納領域65中のアドレスであり、該当するエントリのOut-of-OrderパケットPKT-Oの格納先の先頭を示す。パケットサイズは、該当するエントリに格納されているOut-of-OrderパケットPKT-Oのサイズ(パケット長)を示す。図6の例において、あるフローの2個のOut-of-OrderパケットPKT-O-1、PKT-O-2が、パケット格納領域65にバッファされている。そのパケット格納領域65全体のサイズ(容量)は、Mbytesである。パケット格納領域65の先頭アドレスは基準アドレスBAであり、パケットPKT-O-1の先頭アドレスは「BA+1000」であり、パケットPKT-O-2の先頭アドレスは「BA+2500」である。
 3.パケット順序制御処理
 以下、本実施の形態に係る順序制御ブロック30によるパケット順序制御処理を詳しく説明する。図7は、本実施の形態におけるパケット順序制御処理を示すフローチャートである。
 3-1.基本フロー
 ステップS10:
 順序制御ブロック30は、送信装置TRNから、あるフローのパケットPKTを受信する。以下の説明において、この受信パケットPKTは、第1フローのパケットであるとする。
 ステップS20:
 順序制御ブロック30は、受信パケットPKTからヘッダ情報を抽出する。ヘッダ情報は、当該受信パケットPKTに関するシーケンス番号、フロー識別情報、パケットサイズ等を含んでいる。
 ステップS30:
 順序制御ブロック30は、記憶ブロック40中の期待シーケンス番号情報61(図5参照)を参照して、第1フローの期待シーケンス番号ESQNを取得する。
 ステップS40:
 順序制御ブロック30は、第1フローの期待シーケンス番号ESQNと受信パケットPKTのシーケンス番号とに基づいて、受信パケットPKTがIn-OrderパケットPKT-Iか否かを判定する。具体的には、順序制御ブロック30は、期待シーケンス番号ESQNと受信パケットPKTのシーケンス番号との比較を行う。そして、次の条件式(2)が満たされる場合、すなわち、受信パケットPKTのシーケンス番号が期待シーケンス番号ESQNと一致した場合、順序制御ブロック30は、受信パケットPKTをIn-OrderパケットPKT-Iと判定する。
 式(2):[受信パケットのシーケンス番号] = [期待シーケンス番号ESQN]
 ステップS50:
 受信パケットPKTがIn-OrderパケットPKT-Iである場合(ステップS40;Yes)、順序制御ブロック30は、その受信パケットPKT-Iを上位層のネットワークプロトコルスタック10に転送する。
 ステップS60:
 続いて、順序制御ブロック30は、記憶ブロック40中のエントリ情報62を参照して、同じ第1フローのOut-of-OrderパケットPKT-Oがパケット格納領域65に既に格納(バッファ)されているか否かをチェックする。第1フローのOut-of-OrderパケットPKT-Oがパケット格納領域65に格納されていない場合(ステップS60;No)、処理は、ステップS90に進む。
 ステップS70:
 第1フローのOut-of-OrderパケットPKT-Oがパケット格納領域65に格納されている場合(ステップS60;Yes)、順序制御ブロック30は、そのパケット格納領域65に格納されている第1フローの“全ての”Out-of-OrderパケットPKT-Oを順番に読み出す。そして、順序制御ブロック30は、第1フローの“全ての”Out-of-OrderパケットPKT-Oを、上位層のネットワークプロトコルスタック10に順番に転送する。
 ステップS80:
 第1フローの全てのOut-of-OrderパケットPKT-Oを上位層に転送した後、順序制御ブロック30は、第1フローに対応していたエントリ情報62を初期化する。これにより、それまで第1フローに割り当てられていたパケット格納領域65が解放され、未使用領域となる。
 ステップS90:
 順序制御ブロック30は、上記式(1)に従って、第1フローの新たな期待シーケンス番号ESQNを算出し、期待シーケンス番号情報61を更新する。
 ステップS100:
 一方、受信パケットPKTがIn-OrderパケットPKT-Iではなく、Out-of-OrderパケットPKT-Oである場合(ステップS40;No)、順序制御ブロック30は、その第1フローの受信パケットPKT-Oを次のように処理する。
 3-2.PKT-Oの処理(ステップS100)
 図8は、本実施の形態におけるステップS100を示すフローチャートである。
 ステップS110:
 順序制御ブロック30は、受信パケットPKT-Oに関する「シーケンス差分値DIF」を算出する。シーケンス差分値DIFとは、受信パケットPKT-OがIn-OrderパケットPKT-Iからどれだけ逸脱しているかを示す指標である。例えば、シーケンス差分値DIFは、受信パケットPKT-Oのシーケンス番号と期待シーケンス番号ESQNとの間の差であり、次の式(3)で表される。
 式(3):[シーケンス差分値DIF]=[受信パケットのシーケンス番号]-[期待シーケンス番号ESQN]
 ステップS120:
 また、順序制御ブロック30は、記憶ブロック40中のエントリ情報62を参照する。
 ステップS130:
 順序制御ブロック30は、エントリ情報62を参照して、受信パケットPKT-Oと同じ第1フローに割り当てられているパケット格納領域65があるかどうかをチェックする。つまり、順序制御ブロック30は、同じ第1フローのOut-of-OrderパケットPKT-Oが既にバッファされているか否かを調べる。
 ステップS140:
 第1フローのOut-of-OrderパケットPKT-Oが既にバッファされている場合(ステップS130;Yes)、順序制御ブロック30は、そのパケット格納領域65に受信パケットPKT-Oを追加登録可能か否かを調べる。
 例えば、図6で示されたように、1つのパケット格納領域65には、最大N個(Nは自然数)のOut-of-OrderパケットPKT-Oを格納可能である。順序制御ブロック30は、エントリ情報62中の有効ビットを参照することによって、第1フローに割り当てられたパケット格納領域65に格納されているOut-of-OrderパケットPKT-Oの個数を調べる。第1フローに割り当てられたパケット格納領域65にN個のOut-of-OrderパケットPKT-Oが既に格納されている場合、順序制御ブロック30は、当該パケット格納領域65に受信パケットPKT-Oを追加不可能であると判断する。
 また、パケット格納領域65全体のサイズ(容量)は、Mbytesである。第1フローに割り当てられたパケット格納領域65に受信パケットPKT-Oを格納する余裕がもう無い場合、順序制御ブロック30は、当該パケット格納領域65に受信パケットPKT-Oを追加不可能であると判断する。例えば、次に説明されるように、書き込みアドレスがシーケンス差分値DIFに応じて決定される場合、シーケンス差分値DIF、パケットサイズ及びパケット格納領域65の容量に基づいて可否判定を行うことができる。
 ステップS150:
 ステップS140での判定の結果が「可能」である場合(ステップS140;Yes)、順序制御ブロック30は、第1フローに割り当てられているパケット格納領域65に受信パケットPKT-Oを格納する。ここで、図6に示されるように、パケット格納領域65への書き込みアドレスは、上記式(3)によって算出されたシーケンス差分値DIFに応じて決定される。つまり、書き込みアドレスは、基準アドレスBAからシーケンス差分値DIFに応じた分だけアドレスをシフトさせることにより算出される。シーケンス差分値DIFが大きくなるにつれて、受信パケットPKT-Oは、パケット格納領域65中のより後ろの部分に格納されることになる。受信パケットPKT-Oの格納と共に、順序制御ブロック30は、第1フローに関するエントリ情報62を更新する。
 ステップS160:
 一方、ステップS140での判定の結果が「不可能」である場合(ステップS140;No)、順序制御ブロック30は、第1フローの全てのOut-of-OrderパケットPKT-Oを、上位層のネットワークプロトコルスタック10に順番に転送する。転送されるOut-of-OrderパケットPKT-Oは、第1フローに割り当てられているパケット格納領域65に既に格納されている全てのOut-of-OrderパケットPKT-Oだけでなく、今回の受信パケットPKT-Oも含む。この場合、インシーケンスデリバリが保証されないまま、第1フローのパケットはネットワークプロトコルスタック10に転送される。よって、通常通り、ネットワークプロトコルスタック10がパケット順序制御を行う。
 ステップS170:
 また、順序制御ブロック30は、上記式(1)に従って、第1フローの新たな期待シーケンス番号ESQNを算出し、期待シーケンス番号情報61を更新する。
 ステップS180:
 また、順序制御ブロック30は、第1フローに対応していたエントリ情報62を初期化する。これにより、それまで第1フローに割り当てられていたパケット格納領域65が解放され、未使用領域となる。
 ステップS190:
 次に、上記ステップS130において、第1フローに割り当てられているパケット格納領域65が存在しない場合を考える(ステップS130;No)。この場合、順序制御ブロック30は、エントリ情報62を参照して、順序制御データ領域60中に未使用のパケット格納領域65があるかどうかを調べる。未使用のパケット格納領域65がある場合(ステップS190;Yes)、順序制御ブロック30は、そのパケット格納領域65を新たに第1フローに割り当て、上述のステップS150を実行する。
 ステップS200:
 一方、順序制御データ領域60中に未使用のパケット格納領域65がもう無い場合(ステップS190;No)、それは、他のフローのOut-of-OrderパケットPKT-Oがパケット格納領域65を占有していることを意味する。この場合、順序制御ブロック30は、ステップS200を実行する。ステップS200のアルゴリズムとしては、以下に例示されるように様々考えられる。
 <第1の例>
 図9は、ステップS200の第1の例を示している。第1の例は、既にバッファされている他フローを優先するという最も単純なアルゴリズムである。ここでは、パケット格納領域65の数は1つだけであり、第1フローとは異なる第2フローのOut-of-OrderパケットPKT-Oが当該1つのパケット格納領域65に既に格納されている場合を考える。
 この場合、順序制御ブロック30は、第1フローの受信パケットPKT-Oのバッファを諦めて、第1フローの受信パケットPKT-Oを上位層のネットワークプロトコルスタック10に転送する(ステップS210)。更に、順序制御ブロック30は、上記式(1)に従って、第1フローの新たな期待シーケンス番号ESQNを算出し、期待シーケンス番号情報61を更新する(ステップS220)。この場合、第1フローに関しては、ネットワークプロトコルスタック10がパケット順序制御を行う。
 <第2の例>
 図10は、ステップS200の第2の例を示している。第2の例は、第1の例とは逆に、新たに受信したフローを優先するというアルゴリズムである。ここでも、パケット格納領域65の数は1つだけであり、第1フローとは異なる第2フローのOut-of-OrderパケットPKT-Oが当該1つのパケット格納領域65に既に格納されている場合を考える。
 この場合、順序制御ブロック30は、当該パケット格納領域65に格納されている第2フローの全てのOut-of-OrderパケットPKT-Oを、上位層のネットワークプロトコルスタック10に順番に転送する(ステップS230)。すなわち、第2フローのパケットは、インシーケンスデリバリが保証されないまま、ネットワークプロトコルスタック10に転送される。よって、第2フローに関しては、ネットワークプロトコルスタック10がパケット順序制御を行う。
 また、順序制御ブロック30は、上記式(1)に従って、第2フローの新たな期待シーケンス番号ESQNを算出し、期待シーケンス番号情報61を更新する(ステップS240)。また、順序制御ブロック30は、第2フローに対応していたエントリ情報62を初期化する(ステップS250)。これにより、それまで第2フローに割り当てられていたパケット格納領域65が解放され、未使用領域となる。その後、順序制御ブロック30は、未使用となったパケット格納領域65を新たに第1フローに割り当て、上述のステップS150を実行する。
 <第3の例>
 図11は、ステップS200の第3の例を示している。第3の例は、第1の例と第2の例の組み合わせである。ここでも、パケット格納領域65の数は1つだけであり、第1フローとは異なる第2フローのOut-of-OrderパケットPKT-Oが当該1つのパケット格納領域65に既に格納されている場合を考える。
 まず、順序制御ブロック30は、第2フローに関するエントリ情報62を参照して、第2フローに関する最小のシーケンス差分値DIF-mを取得する。図6の例で言えば、最小シーケンス差分値DIF-mは、1番目のパケットPKT-O-1の先頭アドレスと基準アドレスBAとの差に応じた値である。そして、順序制御ブロック30は、今回の受信パケットPKT-Oから得られる第1フローのシーケンス差分値DIFと、第2フローの最小シーケンス差分値DIF-mとを比較する(ステップS260)。
 第1フローのシーケンス差分値DIFが第2フローの最小シーケンス差分値DIF-m以上の場合(ステップS270;No)、それは、第2フローの方が“パケット抜け”が少ないことを意味する。この場合、順序制御ブロック30は、第2フローの方を優先して、上記第1の例と同様の処理を実行する(ステップS210~S220)。
 一方、第1フローのシーケンス差分値DIFが第2フローの最小シーケンス差分値DIF-mより小さい場合(ステップS270;Yes)、それは、第1フローの方が“パケット抜け”が少ないことを意味する。この場合、順序制御ブロック30は、第1フローの方を優先して、上記第2の例と同様の処理を実行する(ステップS230~S250、S150)。
 このように、第3の例では、シーケンス差分DIFがより小さい方のフローに対して、下位層でのパケット順序制御が優先的に実施される。パケット廃棄には、ビットエラー等に起因する単一パケットの廃棄と、ネットワークの輻輳に起因するバースト廃棄がある。本例では、このうち単一パケットが廃棄された場合の順序制御を優先的に下位層で行うと言える。これにより、パケット抜けを早急に解消し、スループットの低下を効率的に抑制することができる。
 <第4の例>
 第4の例では、順序制御データ領域60が複数種類のフローに対応している。図12に示されるように、順序制御データ領域60には、エントリ情報62とパケット格納領域65が複数フロー分設けられている。よって、パケット順序制御を、複数フローに対して並列的に実行することができる。例えば、エントリ情報62-1とパケット格納領域65-1が既にフローAに割り当てられていたとしても、エントリ情報62-2とパケット格納領域65-2を別のフローBに割り当てることができる。
 図13は、第4の例におけるステップS200を示すフローチャートである。ここで、未使用のパケット格納領域65は無く、第1フローとは異なるフローのOut-of-OrderパケットPKT-Oがそれぞれのパケット格納領域65に既に格納されている場合を考える。この場合、順序制御ブロック30は、第1フローの受信パケットPKT-Oをバッファするために、複数のパケット格納領域65のいずれか1つを解放することを試みる。以下、解放されるパケット格納領域65は「リプレース領域」と参照され、そのリプレース領域に割り当てられているフローは「リプレースフロー」と参照される。
 まず、順序制御ブロック30は、複数のパケット格納領域65の中から1つのリプレース領域を選択する、すなわち、複数の既存フローの中から1つのリプレースフローを選択する(ステップS280)。この選択アルゴリズムとしては、ランダム方式やラウンドロビン方式が考えられる。また、上記第3の例と同様に、シーケンス差分値DIFが最も大きいものをリプレースフローとして選択してもよい。但し、受信パケットPKT-Oが属する第1フローのシーケンス差分値DIFが最大であることも考えられる。その場合は、リプレースフローは無しとなり(ステップS290;No)、順序制御ブロック30は、上記第1の例と同様の処理を実行する(ステップS210~S220)。
 それ以外の場合(ステップS290;Yes)、順序制御ブロック30は、選択したリプレースフローに対して、第2の例と同様の処理を実行する(ステップS230~S250)。つまり、順序制御ブロック30は、選択されたリプレース領域に格納されている全てのOut-of-OrderパケットPKT-Oをネットワークプロトコルスタック10に転送し、リプレース領域を解放する。その後、順序制御ブロック30は、未使用となったリプレース領域を新たに第1フローに割り当て、上記ステップS150を実行する。
 3-3.タイマー制御
 上述の処理と並行して、図14で示されるような処理が実施されてもよい。順序制御ブロック30は、パケット格納領域65毎にタイマーを有しており、各パケット格納領域65に関して「無書き込み期間」を計測する(ステップS300)。無書き込み期間とは、該当するパケット格納領域65に最後にOut-of-OrderパケットPKT-Oが書き込まれてからの経過時間である。
 あるパケット格納領域65(つまり、あるフロー)に関して、無書き込み期間が所定の閾値を超えたとする。つまり、あるフローに関してタイムアウトが発生したとする(ステップS310;Yes)。この場合、順序制御ブロック30は、該当パケット格納領域65に格納されている全てのOut-of-OrderパケットPKT-Oを順番にネットワークプロトコルスタック10に転送する(ステップS320)。更に、順序制御ブロック30は、上記式(1)に従って、該当フローの新たな期待シーケンス番号ESQNを算出し、期待シーケンス番号情報61を更新する(ステップS330)。また、順序制御ブロック30は、該当フローのエントリ情報62を初期化し、該当パケット格納領域65を解放する(ステップS340)。
 これにより、パケット格納領域65がいたずらに長い期間占有されることが防止される。結果として、順序制御ブロック30によるパケット順序制御の効率が向上する。また、記憶ブロック40の容量を小さくすることができる。
 3-4.Re-Orderフラグ
 尚、本実施の形態において、順序制御ブロック30は、フロー毎に「Re-Orderフラグ」を保持する。Re-Orderフラグの初期値は「0」である。受信パケットのフローに関するRe-Orderフラグが「0」である場合、順序制御ブロック30は、上記ステップS40において、受信パケットを無条件にIn-OrderパケットPKT-Iと判定し、更に、当該フローに関するRe-Orderフラグを「1」に設定する。一方、受信パケットのフローに関するRe-Orderフラグが「1」である場合、順序制御ブロック30は、上記ステップS40において、上記条件式(2)に従ってIn-OrderパケットPKT-Iの判定を行う。
 また、上述の通り、順序制御ブロック30は、様々なトリガーに応答して、パケット格納領域65に格納されている全てのOut-of-OrderパケットPKT-Oをネットワークプロトコルスタック10に転送する場合がある。このようなOut-of-OrderパケットPKT-Oの転送処理を行った場合、順序制御ブロック30は、該当フローのRe-Orderフラグを「0」に再設定する。その後、最初に受け取る同フローのパケットは、無条件にIn-OrderパケットPKT-Iと判定されることになる。
 4.様々な構成例
 図15は、本実施の形態におけるサーバの構成の一例を示している。サーバは、プログラム処理装置100及びネットワークインタフェース装置200を備えている。プログラム処理装置100は、CPU110と記憶装置120を備えている。CPU110は、アプリケーションやOSを含む各種ソフトウェア・プログラムを実行する。ネットワークプロトコルスタック10は、OSのカーネルプログラムの一部であり、ソフトウェアで実現されている。ネットワークインタフェース装置200は、プログラム処理装置100に接続されたネットワークインタフェースカード(NIC)である。このネットワークインタフェース装置200が、上述の再送制御ブロック20、順序制御ブロック30、及び記憶ブロック40を備えている。この場合、これら再送制御ブロック20、順序制御ブロック30、及び記憶ブロック40は、ハードウェアで実現される。
 図16は、本実施の形態におけるサーバの構成の他の例を示している。本構成例では、ネットワークプロトコルスタック10が、TCP/IPオフロードエンジンのようなハードウェアで実現されており、ネットワークインタフェース装置200に組み込まれている。その他は、図15で示された例と同じである。本構成例によっても、同じ効果が得られる。
 図17は、本実施の形態におけるサーバの構成の更に他の例を示している。本構成例では、再送制御ブロック20及び順序制御ブロック30が、ソフトウェア処理によって実現される。より詳細には、再送制御ブロック20及び順序制御ブロック30はドライバとして提供され、プログラム処理装置100のCPU110がそのドライバを実行することにより、再送制御ブロック20及び順序制御ブロック30が実現される。既存のOSやネットワークプロトコルスタック10に改変は不要である。尚、そのドライバ(ソフトウェア)は、コンピュータ読み取り可能な記録媒体に記録されていてもよい。また、プログラム処理装置100の記憶装置120が、記憶ブロック40となる。本構成例によっても、同じ効果が得られる。
 図18は、アプリケーションルータ等のネットワーク装置300の場合の構成例を示している。ネットワーク装置300は、アプリケーションを実行するアプリケーション処理ブロック310、ネットワークプロトコルスタック10、再送制御ブロック20、順序制御ブロック30、及び記憶ブロック40を備えている。これらは、全てハードウェアにより実現される。本構成例によっても、同じ効果が得られる。
 以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
 本出願は、2009年12月3日に出願された日本国特許出願2009-275930を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (16)

  1.  パケット送信装置から受け取った受信パケットに応答して、確認応答を前記パケット送信装置に返信する確認応答部と、
     前記受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、
     前記ネットワークプロトコルスタックよりも下位層において、前記受信パケットの順序制御を行う順序制御部と、
     前記受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納されるバッファ部と
     を備え、
     前記パケット送信装置は、送信パケットの送信後、所定の時間以内に前記送信パケットに対する前記確認応答を受け取らない場合、前記送信パケットを再送信し、
     前記順序制御部は、前記受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定し、
     前記受信パケットがIn-Orderパケットである場合、前記順序制御部は、前記受信パケットを前記ネットワークプロトコルスタックに転送し、
     前記受信パケットがあるフローのIn-Orderパケットであり、且つ、前記あるフローのOut-of-Orderパケットが前記バッファ部に格納されている場合、前記順序制御部は、前記受信パケットを前記ネットワークプロトコルスタックに転送した後、前記バッファ部に格納されている前記あるフローの全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送する
     パケット受信装置。
  2.  請求項1に記載のパケット受信装置であって、
     前記受信パケットは、第1フローのOut-of-Orderパケットであり、
     前記順序制御部は、前記バッファ部に前記第1フローのOut-of-Orderパケットが既に格納されているか否かを調べ、
     前記バッファ部に前記第1フローのOut-of-Orderパケットが既に格納されている場合、前記順序制御部は、前記バッファ部に前記受信パケットを追加可能か否かを調べ、
     前記バッファ部に前記受信パケットを追加可能である場合、前記順序制御部は、前記受信パケットを前記第1フローと関連付けて前記バッファ部に追加格納する
     パケット受信装置。
  3.  請求項2に記載のパケット受信装置であって、
     前記バッファ部に前記受信パケットを追加不可能である場合、前記順序制御部は、前記受信パケット及び前記バッファ部に既に格納されている前記第1フローの全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送する
     パケット受信装置。
  4.  請求項2又は3に記載のパケット受信装置であって、
     前記バッファ部には、前記第1フローのOut-of-Orderパケットを最大N個(Nは自然数)格納可能であり、
     N個の前記第1フローのOut-of-Orderパケットが既に前記バッファ部に格納されている場合、前記順序制御部は、前記バッファ部に前記受信パケットを追加不可能であると判断する
     パケット受信装置。
  5.  請求項2乃至4のいずれか一項に記載のパケット受信装置であって、
     前記バッファ部は、所定容量のパケット格納領域を有し、
     前記パケット格納領域には前記第1フローのOut-of-Orderパケットが既に格納されており、
     前記パケット格納領域に前記受信パケットを格納する余裕がない場合、前記順序制御部は、前記バッファ部に前記受信パケットを追加不可能であると判断する
     パケット受信装置。
  6.  請求項2乃至5のいずれか一項に記載のパケット受信装置であって、
     前記バッファ部は、少なくとも1つのパケット格納領域を有し、
     前記少なくとも1つのパケット格納領域は、それぞれ、1つのフローに割り当てられ、
     前記1つのフローのOut-of-Orderパケットは、前記割り当てられたパケット格納領域に格納される
     パケット受信装置。
  7.  請求項6に記載のパケット受信装置であって、
     前記パケット格納領域の数は1つであり、
     前記1つのパケット格納領域に前記第1フローと異なる第2フローのOut-of-Orderパケットが既に格納されている場合、前記順序制御部は、前記受信パケットを前記ネットワークプロトコルスタックに転送する
     パケット受信装置。
  8.  請求項6に記載のパケット受信装置であって、
     前記パケット格納領域の数は1つであり、
     前記1つのパケット格納領域に前記第1フローと異なる第2フローのOut-of-Orderパケットが既に格納されている場合、前記順序制御部は、前記1つのパケット格納領域に格納されている前記第2フローの全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送し、更に、前記受信パケットを前記第1フローと関連付けて前記1つのパケット格納領域に格納する
     パケット受信装置。
  9.  請求項6に記載のパケット受信装置であって、
     前記受信パケットのシーケンス番号と期待されるシーケンス番号との間の差は、シーケンス差分値であり、
     前記パケット格納領域の数は1つであり、
     前記1つのパケット格納領域に前記第1フローと異なる第2フローのOut-of-Orderパケットが既に格納されている場合、前記順序制御部は、前記第1フローと前記第2フローとの間で前記シーケンス差分値を比較し、
     前記第1フローの前記シーケンス差分値が前記第2フローの前記シーケンス差分値より大きい場合、前記順序制御部は、前記受信パケットを前記ネットワークプロトコルスタックに転送し、
     前記第1フローの前記シーケンス差分値が前記第2フローの前記シーケンス差分値より小さい場合、前記順序制御部は、前記1つのパケット格納領域に格納されている前記第2フローの全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送し、更に、前記受信パケットを前記第1フローと関連付けて前記1つのパケット格納領域に格納する
     パケット受信装置。
  10.  請求項6に記載のパケット受信装置であって、
     前記パケット格納領域の数は複数であり、
     前記複数のパケット格納領域に前記第1フローと異なるフローのOut-of-Orderパケットが既に格納されている場合、前記順序制御部は、前記複数のパケット格納領域のうちいずれか1つを選択し、
     前記順序制御部は、前記選択されたパケット格納領域に格納されている全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送し、更に、前記受信パケットを前記第1フローと関連付けて前記選択されたパケット格納領域に格納する
     パケット受信装置。
  11.  請求項1乃至10のいずれか一項に記載のパケット受信装置であって、
     OS(Operating System)を実行するプログラム処理装置と、
     前記プログラム処理装置に接続されたネットワークインタフェース装置と
     を備え、
     前記ネットワークプロトコルスタックは、前記OSに組み込まれており、
     前記順序制御部及び前記バッファ部は、前記ネットワークインタフェース装置に組み込まれている
     パケット受信装置。
  12.  請求項1乃至10のいずれか一項に記載のパケット受信装置であって、
     OS(Operating System)を実行するプログラム処理装置と、
     前記プログラム処理装置に接続されたネットワークインタフェース装置と
     を備え、
     前記ネットワークプロトコルスタックは、オフロードエンジンとして前記ネットワークインタフェース装置に組み込まれており、
     前記順序制御部及び前記バッファ部は、前記ネットワークインタフェース装置に組み込まれている
     パケット受信装置。
  13.  送信パケットを送信するパケット送信装置と、
     前記パケット送信装置からの前記送信パケットを受信パケットとして受け取るパケット受信装置と
     を具備し、
     前記パケット受信装置は、
      前記受信パケットに応答して、確認応答を前記パケット送信装置に返信する確認応答部と、
      前記受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、
      前記ネットワークプロトコルスタックよりも下位層において、前記受信パケットの順序制御を行う順序制御部と、
      前記受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納されるバッファ部と、
     を備え、
     前記パケット送信装置は、前記パケット受信装置に前記送信パケットを送信した後、所定の時間以内に前記送信パケットに対する前記確認応答を受け取らない場合、前記送信パケットを前記パケット受信装置に再送信するパケット再送制御を行い、
     前記順序制御部は、前記受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定し、
     前記受信パケットがIn-Orderパケットである場合、前記順序制御部は、前記受信パケットを前記ネットワークプロトコルスタックに転送し、
     前記受信パケットがあるフローのIn-Orderパケットであり、且つ、前記あるフローのOut-of-Orderパケットが前記バッファ部に格納されている場合、前記順序制御部は、前記受信パケットを前記ネットワークプロトコルスタックに転送した後、前記バッファ部に格納されている前記あるフローの全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送する
     パケット通信システム。
  14.  請求項13に記載のパケット通信システムであって、
     前記パケット送信装置は、ネットワークプロトコルスタックよりも下位層において前記パケット再送制御を行う再送制御部を備える
     パケット通信システム。
  15.  パケット受信装置におけるパケット順序制御方法であって、
     前記パケット受信装置は、
      パケット送信装置から受け取った受信パケットに応答して、確認応答を前記パケット送信装置に返信する確認応答部と、
      前記受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、
      前記受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納されるバッファ部と
     を備え、
     前記パケット送信装置は、送信パケットの送信後、所定の時間以内に前記送信パケットに対する前記確認応答を受け取らない場合、前記送信パケットを再送信し、
     前記パケット順序制御方法は、
     前記ネットワークプロトコルスタックよりも下位層において、前記受信パケットの順序制御を行うことを含み、
     前記順序制御を行うことは、
     前記受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定することと、
     前記受信パケットがIn-Orderパケットである場合、前記受信パケットを前記ネットワークプロトコルスタックに転送することと、
     前記受信パケットがあるフローのIn-Orderパケットであり、且つ、前記あるフローのOut-of-Orderパケットが前記バッファ部に格納されている場合、前記受信パケットを前記ネットワークプロトコルスタックに転送した後、前記バッファ部に格納されている前記あるフローの全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送することと
     を含む
     パケット順序制御方法。
  16.  パケット受信装置にパケット順序制御処理を実行させるパケット順序制御プログラムが記録されたコンピュータ読み取り可能な記録媒体であって、
     前記パケット受信装置は、
      パケット送信装置から受け取った受信パケットに応答して、確認応答を前記パケット送信装置に返信する確認応答部と、
      前記受信パケットの順序制御を行う機能を有するネットワークプロトコルスタックと、
      前記受信パケットのうちOut-of-Orderパケットがフローと関連付けられて格納されるバッファ部と
     を備え、
     前記パケット送信装置は、送信パケットの送信後、所定の時間以内に前記送信パケットに対する前記確認応答を受け取らない場合、前記送信パケットを再送信し、
     前記パケット順序制御処理は、
     前記ネットワークプロトコルスタックよりも下位層において、前記受信パケットの順序制御を行うことを含み、
     前記順序制御を行うことは、
     前記受信パケットがIn-OrderパケットかOut-of-Orderパケットかを判定することと、
     前記受信パケットがIn-Orderパケットである場合、前記受信パケットを前記ネットワークプロトコルスタックに転送することと、
     前記受信パケットがあるフローのIn-Orderパケットであり、且つ、前記あるフローのOut-of-Orderパケットが前記バッファ部に格納されている場合、前記受信パケットを前記ネットワークプロトコルスタックに転送した後、前記バッファ部に格納されている前記あるフローの全てのOut-of-Orderパケットを前記ネットワークプロトコルスタックに転送することと
     を含む
     コンピュータ読み取り可能な記録媒体。
PCT/JP2010/071644 2009-12-03 2010-12-03 パケット受信装置、パケット通信システム、パケット順序制御方法 Ceased WO2011068186A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011544322A JP5541293B2 (ja) 2009-12-03 2010-12-03 パケット受信装置、パケット通信システム、パケット順序制御方法
US13/198,612 US8773977B2 (en) 2009-12-03 2011-08-04 Packet receiving device, packet communication system, and packet reordering method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2009275930 2009-12-03
JP2009-275930 2009-12-03

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/198,612 Continuation US8773977B2 (en) 2009-12-03 2011-08-04 Packet receiving device, packet communication system, and packet reordering method

Publications (1)

Publication Number Publication Date
WO2011068186A1 true WO2011068186A1 (ja) 2011-06-09

Family

ID=44115032

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/071644 Ceased WO2011068186A1 (ja) 2009-12-03 2010-12-03 パケット受信装置、パケット通信システム、パケット順序制御方法

Country Status (3)

Country Link
US (1) US8773977B2 (ja)
JP (1) JP5541293B2 (ja)
WO (1) WO2011068186A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015050732A (ja) * 2013-09-04 2015-03-16 株式会社京三製作所 鉄道用通信システム、車上装置、地上装置及び通信制御方法
JP2015149560A (ja) * 2014-02-05 2015-08-20 富士通株式会社 制御装置及び制御方法
US11550939B2 (en) 2017-02-22 2023-01-10 Twist Bioscience Corporation Nucleic acid based data storage using enzymatic bioencryption
JP7765055B1 (ja) * 2025-02-06 2025-11-06 Necプラットフォームズ株式会社 ネットワークインターフェース装置、パケット転送方法、およびプログラム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9608899B2 (en) * 2011-11-21 2017-03-28 Qualcomm Incorporated Packet-based aggregation of data streams across disparate networking interfaces
CN102647353B (zh) * 2012-04-06 2015-01-21 华为技术有限公司 报文分片获取方法及装置
US10263916B2 (en) 2012-12-03 2019-04-16 Hewlett Packard Enterprise Development Lp System and method for message handling in a network device
US9015438B2 (en) 2012-12-03 2015-04-21 Aruba Networks, Inc. System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores
CN104113491A (zh) * 2013-04-22 2014-10-22 中兴通讯股份有限公司 一种数据传输方法及装置
US10992603B2 (en) * 2017-09-27 2021-04-27 Apple Inc. Block acknowledgement with out-of-order packets
US10531346B2 (en) * 2017-10-25 2020-01-07 Qualcomm Incorporated Techniques and apparatuses for compression enabled bearer management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005520435A (ja) * 2002-03-12 2005-07-07 クゥアルコム・インコーポレイテッド 通信システムにおいてデータの流れを制御する方法および装置
JP2006033019A (ja) * 2004-07-12 2006-02-02 Sony Ericsson Mobilecommunications Japan Inc 受信装置およびそのメモリ解放方法
JP2006211136A (ja) * 2005-01-26 2006-08-10 Matsushita Electric Ind Co Ltd データ処理装置およびデータ処理方法
JP2009171529A (ja) * 2008-01-21 2009-07-30 Fujitsu Ltd 受信装置及び通信データリオーダリング処理方法
JP2009213065A (ja) * 2008-03-06 2009-09-17 Nec Corp Tcpバッファコピー分散並列処理装置、方法及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738379B1 (en) * 2000-03-30 2004-05-18 Telefonaktiebolaget Lm Ericsson (Publ) Method of preserving data packet sequencing
US7206581B2 (en) * 2003-11-05 2007-04-17 Interdigital Technology Corporation Method and apparatus for processing data blocks during soft handover
US20060098662A1 (en) * 2004-11-09 2006-05-11 Sunil Gupta Memory and processor efficient network communications protocol
JP2007181127A (ja) 2005-12-28 2007-07-12 Ntt Docomo Inc 通信装置、通信方法及びプログラム
JP2007281808A (ja) 2006-04-05 2007-10-25 Matsushita Electric Ind Co Ltd パケット通信装置及びパケット通信方法
JP2008278014A (ja) 2007-04-26 2008-11-13 Mitsubishi Electric Corp 自動再送制御方法、送信装置および受信装置
US20090006521A1 (en) * 2007-06-29 2009-01-01 Veal Bryan E Adaptive receive side scaling
US20090172171A1 (en) * 2007-12-31 2009-07-02 Shai Amir Method and an apparatus for disguising digital content

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005520435A (ja) * 2002-03-12 2005-07-07 クゥアルコム・インコーポレイテッド 通信システムにおいてデータの流れを制御する方法および装置
JP2006033019A (ja) * 2004-07-12 2006-02-02 Sony Ericsson Mobilecommunications Japan Inc 受信装置およびそのメモリ解放方法
JP2006211136A (ja) * 2005-01-26 2006-08-10 Matsushita Electric Ind Co Ltd データ処理装置およびデータ処理方法
JP2009171529A (ja) * 2008-01-21 2009-07-30 Fujitsu Ltd 受信装置及び通信データリオーダリング処理方法
JP2009213065A (ja) * 2008-03-06 2009-09-17 Nec Corp Tcpバッファコピー分散並列処理装置、方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"TSG-RAN WG2 Meeting #62bis R2-083473, 2008.06. 23", article MOTOROLA ET AL.: "Stop of the reordering function" *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015050732A (ja) * 2013-09-04 2015-03-16 株式会社京三製作所 鉄道用通信システム、車上装置、地上装置及び通信制御方法
JP2015149560A (ja) * 2014-02-05 2015-08-20 富士通株式会社 制御装置及び制御方法
US11550939B2 (en) 2017-02-22 2023-01-10 Twist Bioscience Corporation Nucleic acid based data storage using enzymatic bioencryption
JP7765055B1 (ja) * 2025-02-06 2025-11-06 Necプラットフォームズ株式会社 ネットワークインターフェース装置、パケット転送方法、およびプログラム

Also Published As

Publication number Publication date
US8773977B2 (en) 2014-07-08
US20110292945A1 (en) 2011-12-01
JP5541293B2 (ja) 2014-07-09
JPWO2011068186A1 (ja) 2013-04-18

Similar Documents

Publication Publication Date Title
JP5541293B2 (ja) パケット受信装置、パケット通信システム、パケット順序制御方法
CN115941616B (zh) 多路径rdma传输
US11012367B2 (en) Technologies for managing TCP/IP packet delivery
JP5816718B2 (ja) 通信装置、通信システム、およびデータ通信の中継方法
CN100385846C (zh) 优先协议数据单元的再传输以协助无线电链路控制再传输的系统及方法
US20220321472A1 (en) Method for transferring information across a data center network
US20060221825A1 (en) Congestion control network relay device and method
US10439940B2 (en) Latency correction between transport layer host and deterministic interface circuit
JP2001308947A (ja) 通信装置、中継装置および通信制御方法
JP2011119823A (ja) パケット中継装置および輻輳制御方法
US20130297774A1 (en) Avoiding delayed data
WO2011145557A1 (ja) パケット再送制御装置とパケット再送制御方法
US10461886B2 (en) Transport layer identifying failure cause and mitigation for deterministic transport across multiple deterministic data links
CN107852371A (zh) 数据分组网络
WO2019001484A1 (zh) 一种实现发送端调速的方法、装置和系统
US8769137B2 (en) Systems and methods for negotiated accelerated block option for trivial file transfer protocol (TFTP)
US10009409B2 (en) Retransmission control network node and related method
US8054847B2 (en) Buffer management in a network device
CN104012056A (zh) 减小归因于网络交换机处的聚播崩溃的tcp超时
US8418017B2 (en) Adaptive acknowledgment mechanism for network communication
JP5703048B2 (ja) 通信装置、通信装置の制御方法、およびプログラム
JP2007324700A (ja) 伝送制御方法
Kojo et al. Supporting low latency near the network edge and with challenging link technologies
JP2003198612A (ja) パケット通信ネットワークにおけるファイル転送方法
JP2006238059A (ja) パケット通信方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10834636

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011544322

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10834636

Country of ref document: EP

Kind code of ref document: A1