This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2010-149866, filed on Jun. 30, 2010, the entire contents of which are incorporated herein by reference.
Embodiments of the present invention relate to a transfer apparatus and a transfer method.
A variety of communication techniques for transferring data are known. In one example, media data such as video or audio (sound) is transferred through a peer-to-peer (P2P) communication system or an application layer multicast (ALM) communication system. A transfer system in the P2P or the ALM includes transfer apparatuses called nodes that are arranged in a tree-like configuration. In the transfer system, data is successively relayed from the node at the tree top to nodes at lower layers. A vast amount of data is thus delivered.
Such a relay transfer is subject to a delay referred to as a relay delay. The relay delay occurs because data packets received from a node at an upper layer are accumulated on a buffer until the data packets are transferred to a lower node. This operation is performed to absorb a transfer jitter taking place between nodes. The relay delay increases as the number layers increases.
If a real-time transfer is performed, the data packet is preferably transferred to a lower layer as quick as possible. To this end, an error correction technique controlling a retransmission caused by a packet loss is used. Forward error correction (FEC) is available as one of the error correction techniques. In the forward error correction, abundant data is added to the data packet before the data packet is transmitted, and data failing to reach a receiver side is recovered from the abundant data.
In the forward error correction, the uppermost node inserts FEC packets in data packets when the data packets are transmitted to a lower-layer node. Such an FEC packet includes protective coverage information identifying a range of the data packets that are a protection target of an error correction operation of the FEC packet. A node at a lower layer references the protective coverage information, and recovers the data packet using the FEC packet having as the protection target the data packet if the data packet is missing. For example, WO2005-013542 (Feb. 10, 2005) describes such a technique.
If the media data is transferred at a constant bit rate (CBR), the FEC packets are inserted every constant number of data packets. The insertion intervals of the FEC packets remain constant. If the media data is transferred at a variable bit rate (VBR), the FEC packets are inserted every constant period of time. The insertion intervals of the FEC packets are variable. If the FEC packets are inserted at constant data packet intervals, the lower the transfer rate, the larger the transfer delay. For example, Japanese Laid-open Patent Publication No. 2008-11096 (Jan. 17, 2008) describes such a technique.
A transfer apparatus includes: a receiver to receive one of an error correction packet and a data packet, the error correction packet for recovering the data packet through error correction, and the data packet having protective coverage information written thereon, the protective coverage information identifying a protective coverage on the data packet recoverable through an error correction of the error correction packet; an updater to update the protective coverage information in accordance with an order of reception of the data packets received by the receiver unit; a generator to generate an error correction packet of the data packet identified by new protective coverage information updated by the updater unit; and a transmitter to transmit the data packet having the protective coverage information updated by the updater unit, and the error correction packet generated by the generator unit.
The object and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, as claimed.
These and/or other aspects and advantages will become apparent and more readily appreciated from the following description of the embodiments, taken in conjunction with the accompanying drawings of which:
Some of the problems of related art are described below first, followed by the discussion of the embodiments.
As described below, related art techniques noted in a previous section suffer from a problem in which a transfer delay increases if data packets are transferred at a variable bit rate.
If an error correction packet is missing, a transfer delay of a data packet to be protected by the error correction packet is prolonged.
Referring to
The node #2 is unable to detect that the FEC packet 1 has been missing until time TA at the reception of the FEC packet 2. This is because the insertion intervals of the FEC packets are not constant but variable. No technique other than referencing protective coverage information included in the FEC packet 2 is available to detect a missing FEC packet 1. Since the node #2 is unable to detect at the reception of the data packets 1-4 that the FEC packet 1 has been missing, the node #2 transfers the packets to the node #3 with the FEC packet 1 missing.
If any data packet is missing from among the data packets 1-4 between the node #2 and the node #3, the node #3 is unable to recover the missing packet. Referring to
Referring to
If the FEC packet 1 is missing in the node #2, and if the data packet 4 protected by the FEC packet 1 is missing at the lower-layer node #3, the transfer of the data packet 4 is delayed by a period from TB to TC, i.e., a time period equal to 7 packets.
The supportive use of a data transmitter apparatus is contemplated to detect the loss of an error correction packet quickly. An immediately preceding packet and a subsequent packet are transmitted, and a sequence number and a priority level of the immediately preceding packet are embedded in the subsequent packet. If such a data transmitter apparatus is in supportive use, it is contemplated that the sequence number of an FEC packet is embedded in a subsequent data packet before transmission. For example, Japanese Laid-open Patent Publication No. 2001-119437 (Apr. 27, 2001) discussed such a technique.
Even if such a data transmitter apparatus is in supportive use, a transfer delay may be increased in response to a subsequent retransmission of a data packet or an error correction packet.
If the data transmitter apparatus is in supportive use as illustrated in
The data packet 3 and the data packet 4 may now be missing between the node #2 and the node #3. At time TF when the FEC packet 1 is received, the node #3 detects the loss of the data packet 3 and the data packet 4. In this case, the node #3 suffers from the loss of two packets, which is beyond the error correction capability of the FEC packet. The node #3 needs one of the data packet 3 and the data packet 4 retransmitted. For this reason, the node #3 transmits to the node #2 a retransmission request of one of the data packet 3 and the data packet 4 at time TF when the FEC packet 1 is received.
If the retransmission request for the data packet 3 is placed, the node #3 receives a retransmitted data packet 3 at time TG at which RTT2 equal to a round-trip delay time between the node #2 and the node #3 has elapsed. The node #3 recovers the data packet 4 using the data packet 3 retransmitted and received, and the data packets 1 and 2 and the FEC packet 1 previously received.
If a retransmission is repeated between different nodes, the transfer delay increases by RTT unit. As illustrated in
Example embodiments of a transfer apparatus and a transfer method are described with reference to the drawings. The embodiments are not limited to those described herein.
The receiver unit 1a receives one of a data packet and an error correction packet for correcting the data packet through an error correction process. The data packet includes protective coverage information written therein for identifying a protective coverage on the data packet that can be recovered through an error correction of the error correction packet.
The updater unit 1b updates the protective coverage information on the data packet in accordance with the order of reception of the data packet received by the receiver unit 1a. The generator unit 1c generates an error correction packet of the data packet identified by new protective coverage information when the protective coverage information is updated by the updater unit 1b. The transmitter unit 1d transmits the data packet responsive to the protective coverage information updated by the updater unit 1b and the error correction packet generated by the generator unit 1c.
The transfer apparatus 1 of the first embodiment changes the protective coverage of the error correction packet on the data packet in accordance with the order of reception of the data packet before transferring the data packet, and then generates a new error correction packet in accordance with the protective coverage and then transfers the new error correction packet.
The transfer apparatus 1 of the first embodiment re-generates the error correction packet at the end of the reception of the data packet regardless of the error correction packet loss unless the data packet protected by the error correction packet is retransmitted. The transfer apparatus 1 of the first embodiment reduces the possibility that the data transfer to a lower-layer apparatus continues with the error correction packet missing, and controls an increase in the transfer delay caused by the error correction packet loss. Even if the transfer order of some of the data packets protected by the same error correction packet changes in response to the retransmission, the transfer apparatus 1 of the first embodiment re-organizes the protective coverage such that the data packets close to each other in the transfer order to a lower-layer transfer apparatus are close to each other. Even if retransmission repeatedly occurs between different transfer apparatuses, the transfer apparatus 1 reduces the possibility of increase in the transfer delay. The transfer apparatus 1 of the first embodiment thus controls the transfer delay caused when the data packet is transferred at a variable bit rate.
System Configuration
A transfer system of a second embodiment is described below.
The transfer system of
As illustrated in
The transfer apparatuses at nodes #1-#11 may be information processing apparatuses having a communication function. For example, the transfer apparatuses may include fixed terminals such as a personal computer, or a server, or mobile terminals such as a cellular phones, a personal handy system (PHS), or a personal digital assistant (PDA), for example. The transfer apparatuses also include network devices such as a layer 3 switch (L3 switch), a router, or a computer having a routing function, for example. If the node #1 through the node #11 are described without discriminating one from another, these are simply referred to as the node hereafter.
RTP Header
Realtime transport protocol (RTP) may be used as a transfer method of the media data in the system of
An RTP header attached the RTP packet to be transferred as the media data between the nodes of
A field labeled “M” refers to a marker bit indicating a boundary of application data in
FEC Packet
The node of
Configuration of the Transfer Apparatus
A transfer apparatus 10 of the second embodiment is described below.
The transfer apparatus 10 of
The packet receiver unit 11 receives one of the data packet and the FEC packet transmitted from an upper-layer node.
The packet transmitter unit 12 transmits one of the data packet and the FEC packet to a lower-layer node. For example, the packet transmitter unit 12 transmits the data packet and the FEC packet, stored on the buffer unit 14a, at a variable bit rate (VBR) used in encoding. The packets may be transferred at the variable bit rate here. Optionally, the packets may be transferred at a constant bit rate (CBR).
The retransmission communication unit 13 performs communications related to a retransmission with an upper-layer node. In one operation example, the retransmission communication unit 13 places a retransmission request of the data packet to an upper-layer node in response to an instruction from the packet loss determiner unit 17 to be discussed later. In another operation example, the retransmission communication unit 13 receives a data packet transmitted from the upper-layer node.
The buffer unit 14a accumulates packets received by one of the packet receiver unit 11 and the retransmission communication unit 13. The buffer unit 14a is also used to absorb a transfer jitter between nodes. The working memory 14b is used by the packet loss determiner unit 17, the FEC packet information modifier unit 18, and the FEC packet generation control unit 19.
One example of each of the buffer unit 14a and the working memory 14b is a semiconductor memory such as a random-access memory (RAM), a read-only memory (ROM), or a flash memory. Optionally, the buffer unit 14a may include a storage device such as a hard disk or an optical disk, for example.
The reproduction processor unit 15 performs a reproduction process of the data packet stored on the buffer unit 14a. If MPEG is used as a compression-encoding method for the media data, the reproduction processor unit 15 functions as an MPEG decoder for decoding the data packet. The reproduction processor unit 15 reproduces decoded media data via a display and an audio output unit (both not illustrated). The compression-encoding method of the media data is not limited to MPEG. Another compression-encoding method may also be used.
The FEC packet information adder unit 16 adds the FEC packet information to a data packet into which the media data is packetized. The FEC packet information may include the protective coverage on the data packet recovered through the error correction of the FEC packet, the sequence number attached by the FEC packet, and an additional sequence number attached in the order of reception of the data packets, for example. The addition of the FEC packet information is not performed on the node #2 and the node #9 and lower-layer nodes as illustrated in
With reference to
Referring back to
Each time one of the packet receiver unit 11 and the retransmission communication unit 13 receives a packet, the packet loss determiner unit 17 updates through an addition operation the number of receptions of the data packets stored on the working memory 14b. More specifically, the packet loss determiner unit 17 calculates a cumulative reception count of the data packets from the first reception of a packet to the current reception of a packet by referring to the working memory 14b. The packet loss determiner unit 17 thus determines the order of reception of the received packets.
A standard packet loss determination process is described below. The standard packet loss determination is performed if the packet receiver unit 11 receives a standard data packet rather than a retransmitted data packet. If a data packet is received, the packet loss determiner unit 17 determines whether the data packet is a first received packet. If the packet is a first received packet, the packet loss determiner unit 17 registers at the working memory 14b the FEC packet information including the additional sequence number, the protective coverage of the FEC packet, and the sequence number of the FEC packet. The packet loss determiner unit 17 makes a copy of the data packet and stores the copy onto the buffer unit 14a with the copy of the data packet different from the data packet to be transferred to a lower-layer node.
If the packet is not a first received packet, the packet loss determiner unit 17 determines whether the additional sequence number written in an RTP header of the currently received data packet and the additional sequence number of the immediately preceding received data packet are consecutive. In other words, the packet loss determiner unit 17 determines whether a difference between the additional sequence numbers of successively received data packets is 1. The presence or absence of a missing packet is determined by determining whether the additional sequence numbers are consecutive.
The packet loss determiner unit 17 references the FEC packet information stored on the working memory 14b and then determines whether the currently received data packet and the immediately preceding received data packet are identical to each other in terms of the protective coverage and the sequence number of the FEC packet. The packet loss determiner unit 17 performs this determination operation to determine whether the FEC packet information modifier unit 18 is to modify only the additional sequence number or to modify the FEC packet information together.
If the additional sequence numbers are consecutive, and if the protective coverage and the sequence number are identical to the respective counterparts thereof, the packet loss determiner unit 17 causes the FEC packet generation control unit 19 discussed below to XOR gate the currently received data packet. The packet loss determiner unit 17 then updates the additional sequence number stored on the working memory 14b to the additional sequence number of the currently received data packet. The packet loss determiner unit 17 determines whether the number of heretofore XOR gated data packets reaches the protective coverage of the FEC packet stored on the working memory 14b. If the number reaches the protective coverage of the FEC packet, the packet loss determiner unit 17 instructs the FEC packet generation control unit 19 to generate an FEC packet in accordance with the XOR gating results.
If the additional sequence numbers are consecutive, and if the protective coverage and the sequence number are not identical to the respective counterparts thereof, the packet loss determiner unit 17 makes a copy of the data packet to be used to generate a next FEC packet and then stores the copy on the buffer unit 14a. The packet loss determiner unit 17 registers on the working memory 14b the FEC packet information including the additional sequence number of the currently received data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet. The FEC packet information is registered to determine the packet loss related to a data packet protected by a next FEC packet subsequent to the FEC packet having protected the heretofore received data packets.
If the additional sequence numbers are not consecutive, and if the protective coverage and the sequence number are identical to the respective counterparts thereof, the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 determines whether the packet loss count has reached a value requiring retransmission within the protective coverage of the FEC packet written on the currently received data packet. For example, if the number of packets recoverable by the FEC packet is 1, the packet transmitter unit 12 determines whether the number of packet losses is 2 or larger. If the packet loss count has reached the value requiring retransmission within the protective coverage, the packet loss determiner unit 17 causes the retransmission communication unit 13 to transmit a retransmission request of missing data packets. The retransmission request requests the missing data packets to be transmitted starting with a data packet having the smallest additional sequence number. For example, the packet loss count may be 2. The packet loss determiner unit 17 leaves the packet count “1” recoverable by the FEC packet and causes the retransmission communication unit 13 to transmit a retransmission request of the other data packet. The packet loss determiner unit 17 then registers, in a retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet. The packet loss determiner unit 17 updates the additional sequence number stored on the working memory 14b to the additional sequence number of the currently received data packet.
If the additional sequence numbers are not consecutive, and if the protective coverage and the sequence number are not identical to the respective counterparts thereof, the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 determines whether the packet loss count has reached the value requiring retransmission within the protective coverage, immediately prior to the protective coverage of the FEC packet written on the currently received data packet, i.e., the protective coverage stored on the working memory 14b. If the packet loss count has reached the value requiring retransmission, the packet loss determiner unit 17 causes the retransmission communication unit 13 to transmit a retransmission request of missing data packets. The retransmission request requests the missing data packets to be transmitted starting with a data packet having the smallest additional sequence number. The packet loss determiner unit 17 then registers, in a retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet. The packet loss determiner unit 17 updates the FEC packet information stored on the working memory 14b to the additional sequence number of the currently received data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet.
Discussed below is the determination process of the packet loss performed if the packet receiver unit 11 receives the FEC packet. If the FEC packet is received, the packet loss determiner unit 17 acquires the sequence number of the data packet protected by the currently received FEC packet. The packet loss determiner unit 17 determines whether the sequence number of the previously received data packet is registered in a modification information list stored on the working memory 14b. The modification information list lists the sequence number of the data packet having the FEC packet information modified by the FEC packet information modifier unit 18 to be discussed later.
If the sequence number of the data packet is not registered in the modification information list, the packet loss determiner unit 17 searches the buffer unit 14a for the data packet corresponding to the sequence number of the data packet. If the sequence number of the data packet is registered in the modification information list, the packet loss determiner unit 17 searches the buffer unit 14a for the data packet corresponding to the sequence number of the data packet registered in the modification information list. In this case, the packet loss determiner unit 17 extracts the data packet prior to the modification of the FEC packet information and the data packet subsequent to the modification of the FEC packet information.
The packet loss determiner unit 17 determines whether the packet loss count has reached the value requiring retransmission within the protective coverage of the FEC packet written on the currently processed data packet. If the packet loss count has reached the value requiring retransmission, the packet loss determiner unit 17 causes the retransmission communication unit 13 to transmit a retransmission request of missing data packets. The retransmission request requests the missing data packets to be transmitted starting with a data packet having the smallest additional sequence number. The packet loss determiner unit 17 then registers, in the retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet.
If the packet loss count has not reached the value requiring retransmission, the packet loss determiner unit 17 further determines whether a packet loss is present within the protective coverage of the FEC packet written on the currently processed data packet. If a packet loss is present, the data packet may be recovered by the FEC packet. The packet loss determiner unit 17 thus causes the FEC packet generation control unit 19 discussed later to recover the data packet suffering from a packet loss in accordance with the currently received FEC packet. The packet loss determiner unit 17 then updates the FEC packet information stored on the working memory 14b to the additional sequence number of the currently recovered data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet.
The FEC packet information modifier unit 18 updates the FEC packet information on the data packet in accordance with the order of reception of the data packets received by the packet receiver unit 11 and the retransmission communication unit 13.
The packet receiver unit 11 may now receive a data packet, for example. If the packet loss determiner unit 17 detects a packet loss, the FEC packet information modifier unit 18 modifies the FEC packet information. An item of the FEC packet information to be modified is changed depending on whether a data packet and a subsequent data packet are identical in terms of the protective coverage and the sequence number of the FEC packet.
If the protective coverage and the sequence number are identical to the respective counterparts thereof, the FEC packet information modifier unit 18 modifies the additional sequence number of the FEC packet information written on the RTP header of the received data packet. More specifically, the FEC packet information modifier unit 18 writes the number of receptions stored on the working memory 14b, i.e., the order of reception of the data packet, onto a region of the additional sequence number assigned in the RTP header of the currently received data packet. The FEC packet information modifier unit 18 then registers the sequence number attached to the currently received data packet in the modification information list on the working memory 14b.
If the FEC packets are not identical in terms of the protective coverage and the sequence number, the FEC packet information modifier unit 18 performs a process described below. The FEC packet information modifier unit 18 modifies the additional sequence number written on the RTP header of the received data packet, and the protective coverage of the FEC packet and the sequence number of the FEC packet. The FEC packet information modifier unit 18 further registers the sequence number attached to the currently received data packet in the modification information list on the working memory 14b.
In order to modify all the FEC packet information, the FEC packet information modifier unit 18 writes the order of reception of the currently received data packet onto a region of the additional sequence number assigned to the RTP header. The FEC packet information modifier unit 18 further writes the protective coverage of the FEC packet and the sequence number of the FEC packet stored on the working memory 14b onto the RTP header.
If the FEC packet generation control unit 19 discussed later has recovered data packets, the FEC packet information modifier unit 18 modifies all the FEC packet information of the recovered data packets in another operation example. The FEC packet information modifier unit 18 then registers the sequence number attached to the currently received data packet in the modification information list on the working memory 14b.
If the retransmission communication unit 13 has received a retransmitted data packet, the FEC packet information modifier unit 18 modifies all the FEC packet information of the retransmitted packet in another operation example. The FEC packet information modifier unit 18 then registers the sequence number attached to the currently received data packet in the modification information list on the working memory 14b.
The FEC packet generation control unit 19 controls the generation of the FEC packet. In one operation example, the FEC packet generation control unit 19 XOR gates the data packet received by the packet receiver unit 11 and the data packet retransmitted and then received by the retransmission communication unit 13, in response to an instruction from the packet loss determiner unit 17. If the number of data packets having undergone the XOR gating operation reaches the protective coverage of the FEC packet stored on the working memory 14b, the FEC packet generation control unit 19 generates an FEC packet from the results of the XOR gating of the data packets. In yet another operation, the FEC packet generation control unit 19 recovers the data packet suffering from the packet loss within the protective coverage of the FEC packet using the FEC packet received by the packet receiver unit 11.
A variety of integrated circuits or electronic circuits may be employed as the packet receiver unit 11, the packet transmitter unit 12, the retransmission communication unit 13, the reproduction processor unit 15, the FEC packet information adder unit 16, the packet loss determiner unit 17, the FEC packet information modifier unit 18, and the FEC packet generation control unit 19. The integrated circuit may include an application specific integrated circuit (ASIC), for example. The electronic circuit may include a central processing unit (CPU), or a micro processing unit (MPU), for example.
Process Flow
A process flow of the transfer apparatus of the embodiment is described below.
Upon receiving a packet from an upper-layer node as illustrated in
If the received packet is a standard data packet (yes from S101), the data packet reception process from S103 to S133 of
The data packet reception process is discussed. If the received packet is a standard data packet (yes from S101), the packet loss determiner unit 17 acquires the FEC packet information written on the RTP header of the data packet (S103). For example, the packet loss determiner unit 17 acquires, as the FEC packet information, the additional sequence number, the protective coverage of the FEC packet, and the sequence number of the FEC packet.
The packet loss determiner unit 17 determines whether the data packet is a first received packet (S104). If the data packet is a first received packet (yes from S104), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 registers on the working memory 14b the FEC packet information including the additional sequence number, the protective coverage of the FEC packet, and the sequence number of the FEC packet (S105).
The packet loss determiner unit 17 makes a copy of the data packet to generate an FEC packet, separately from the data packet to be transferred to a lower-layer node, and then stores the copy of the data packet on the buffer unit 14a (S106). The FEC packet generation control unit 19 XOR gates the currently received data packet (S107). The FEC packet generation control unit 19 stores on the buffer unit 14a the currently received data packet as a data packet to be transferred (S108), and ends the process.
If the data packet is not a first received packet (no from S104), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 determines whether the additional sequence number written on the RTP header of the currently received data packet and the additional sequence number of the immediately preceding received data packet are consecutive (S109).
The packet loss determiner unit 17 further determines whether the currently received data packet and the immediately preceding received data packet are identical in terms of the protective coverage of the FEC packet and the sequence number of the FEC packet (S110 and S117).
If the additional sequence numbers are consecutive, and if the data packets are identical in terms of the protective coverage of the FEC packet and the sequence number of the FEC packet (yes from S110 or yes from S117), the FEC packet generation control unit 19 performs a process described below. The FEC packet generation control unit 19 XOR gates the currently received data packet (S111).
The FEC packet generation control unit 19 determines whether the number of data packets having undergone the XOR gating reaches the protective coverage of the FEC packet stored on the working memory 14b (S112). If the number of data packets having undergone the XOR gating does not reach the protective coverage of the FEC packet (no from S112), the FEC packet generation control unit 19 stores on the buffer 14a the currently generated FEC packets together with the data packets received by the packet receiver unit 11, and ends the processing. If the number of data packets having undergone the XOR gating reaches the protective coverage of the FEC packet (yes from S112), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S113).
The packet loss determiner unit 17 updates the additional sequence number stored on the working memory 14b to the additional sequence number of the currently received data packet (S114). The FEC packet generation control unit 19 stores on the buffer unit 14a the generated FEC packet together with the data packet currently received by the packet receiver unit 11 (S108). Processing thus ends.
If the additional sequence numbers are consecutive, and if the data packets are not identical in terms of the protective coverage of the FEC packet and the sequence number of the FEC packet (yes from S109 and no from S110), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 makes a copy of the data packet to be used to generate a next FEC packet and then stores the copy on the buffer unit 14a (S115).
The packet loss determiner unit 17 updates on the working memory 14b the FEC packet information including the additional sequence number of the currently received data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet (S116). The FEC packet generation control unit 19 stores on the buffer unit 14a the currently received data packet as a transfer data packet (S108).
If the additional sequence numbers are not consecutive, and if the data packets are identical in terms of the protective coverage of the FEC packet and the sequence number of the FEC packet (no from S109 and yes from S117), data packet reception processing from operations S117 to S133 illustrated in
The packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 determines whether the packet loss count has reached a value requiring retransmission within the protective coverage of the FEC packet written on the currently received data packet (S118). If the packet loss count has not reached the value requiring retransmission (no from S118), processing proceeds to S121.
If the packet loss count has reached the value requiring retransmission (yes from S118), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 causes the retransmission communication unit 13 to transmit a retransmission request for missing data packets (S119). The retransmission request requests the missing data packets to be transmitted starting with a data packet having the smallest additional sequence number. The packet loss determiner unit 17 then registers, in a retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet (S120).
The FEC packet information modifier unit 18 modifies the additional sequence number of the FEC packet information written on the RTP header of the received data packet (S121). The FEC packet information modifier unit 18 registers the sequence number assigned to the currently received data packet in the modification information list on the working memory 14b (S122).
The packet loss determiner unit 17 updates the additional sequence number stored on the working memory 14b to the additional sequence number of the currently received data packet (S123). The FEC packet generation control unit 19 XOR gates the currently received data packet (S124). The FEC packet generation control unit 19 stores the data packet received by the packet receiver unit 11 on the buffer unit 14a (S108), and ends the process.
If the additional sequence numbers are not consecutive, and if the protective coverage and the sequence numbers are not identical to their counterparts (no from S109 and no from S117), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 determines whether the packet loss count has reached the value requiring retransmission within the protective coverage, immediately prior to the protective coverage of the FEC packet written on the currently received data packet (S125). If the packet loss count has not reached the value requiring retransmission (no from S125), processing proceeds to S128.
If the packet loss count has reached the value requiring retransmission (yes from S125), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 causes the retransmission communication unit 13 to transmit a retransmission request for missing data packets (S126). The retransmission request requests the missing data packets to be transmitted starting with a data packet having the smallest additional sequence number. The packet loss determiner unit 17 then registers, in the retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet (S127).
The FEC packet information modifier unit 18 modifies the additional sequence number, the protective coverage of the FEC packet, and the sequence number of the FEC packet written on the RTP header of the received data packet (S128). The FEC packet information modifier unit 18 registers the sequence number assigned to the currently received data packet in the modification information list on the working memory 14b (S129).
The packet loss determiner unit 17 updates the FEC packet information stored on the working memory 14b to the additional sequence number of the currently received data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet (S130).
The FEC packet generation control unit 19 XOR gates the currently received data packet (S131). The FEC packet generation control unit 19 determines whether the number of XOR gated data packets has reached the protective coverage of the FEC packet stored on the working memory 14b (S132).
If the number of XOR gated data packets has reached the protective coverage of the FEC packet (yes from S132), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S133). The FEC packet generation control unit 19 stores, on the buffer unit 14a, the currently generated FEC packet together with the data packet received by the packet receiver unit 11 (S108). Processing thus ends.
If the number of XOR gated data packets has not reached the protective coverage of the FEC packet (no from S132), the FEC packet generation control unit 19 stores the data packet received by the packet receiver unit 11 on the buffer unit 14a (S108), and processing ends.
The FEC packet reception process is discussed further with reference to
The packet loss determiner unit 17 determines whether the sequence number of the previously received data packet is listed in the modification information list stored on the working memory 14b (S202).
If the sequence number of the previously received data packet is listed in the modification information list (yes from S202), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 searches the buffer unit 14a for the data packet having the unmodified FEC packet information and the data packet having the modified FEC packet information (S203).
If the sequence number of the previously received data packet is not listed in the modification information list stored on the working memory 14b (no from S202), the packet loss determiner unit 17 searches the buffer unit 14a for the data packet corresponding to the sequence number (S204).
The packet loss determiner unit 17 determines whether the packet loss count has reached a value requiring retransmission within the protective coverage of the FEC packet written on the currently hit data packet (S205).
If the packet loss count has reached the value requiring retransmission (yes from S205), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 determines whether the lost data packet, i.e., the packet as a retransmission request target, is registered in a retransmission waiting list stored on the working memory 14b (S206). If the lost packet data is not registered in the retransmission waiting list (no from S206), processing ends.
If the lost packet data is registered in the retransmission waiting list (yes from S206), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 causes the retransmission communication unit 13 to transmit a retransmission request for missing data packets (S207). The retransmission request requests the missing data packets to be transmitted starting with a data packet having the smallest additional sequence number. The packet loss determiner unit 17 then registers, in the retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet (S208). Processing thus ends.
If the packet loss count has not reached the value requiring retransmission (no from S205), the packet loss determiner unit 17 performs a process described below. The packet loss determiner unit 17 determines whether any packet loss is present in the protective coverage of the FEC packet written on the currently hit data packet (S209).
If no packet loss is present (no from S209), processing ends. If a packet loss is present (yes from S209), the FEC packet generation control unit 19 recovers the lost data packet using the currently received FEC packet (S210).
The FEC packet information modifier unit 18 modifies the additional sequence number, the protective coverage of the FEC packet, and the sequence number of the FEC packet written on the RTP header of the recovered data packet (S211). The FEC packet information modifier unit 18 registers the sequence number assigned to the recovered data packet in the modification information list on the working memory 14b (S212).
The packet loss determiner unit 17 updates the FEC packet information stored on the working memory 14b to the additional sequence number of the currently recovered data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet (S213).
The FEC packet generation control unit 19 XOR gates the recovered data packet (S214). The FEC packet generation control unit 19 determines whether the number of XOR gated data packets has reached the protective coverage of the FEC packet stored on the working memory 14b (S215).
If the number of XOR gated data packets has reached the protective coverage of the FEC packet (yes from S215), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S216). The FEC packet generation control unit 19 stores, on the buffer unit 14a, the currently generated FEC packet together with the currently recovered data packet (S217). Processing thus ends.
If the number of XOR gated data packets has not reached the protective coverage of the FEC packet (no from S215), the FEC packet generation control unit 19 stores the currently recovered data packet on the buffer unit 14a (S217). Processing ends.
The retransmission packet reception process is described below with reference to
The packet loss determiner unit 17 determines whether the sequence number of the retransmission data packet is present (registered) in the retransmission waiting list on the working memory 14b (S302). If the sequence number is not registered in the retransmission waiting list (no from S302), processing ends.
If the sequence number is registered in the retransmission waiting list (yes from S302), the packet loss determiner unit 17 deletes the sequence number of the retransmission data packet from the retransmission waiting list (S303).
The FEC packet information modifier unit 18 modifies the additional sequence number, the protective coverage of the FEC packet, and the sequence number of the FEC packet written on the RTP header of the retransmitted data packet (S304). The FEC packet information modifier unit 18 registers the sequence number assigned to the retransmitted data packet in the modification information list on the working memory 14b (S305).
The packet loss determiner unit 17 updates the FEC packet information stored on the working memory 14b to the additional sequence number of the currently retransmitted data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet (S306).
The FEC packet generation control unit 19 XOR gates the retransmitted data packet (S307). The FEC packet generation control unit 19 determines whether the number of XOR gated data packets has reached the protective coverage of the FEC packet stored on the working memory 14b (S308).
If the number of XOR gated data packets has reached the protective coverage of the FEC packet (yes from S308), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S309). The FEC packet generation control unit 19 stores, on the buffer unit 14a, the currently generated FEC packet together with the currently retransmitted data packet (S310). Processing thus ends.
If the number of XOR gated data packets has not reached the protective coverage of the FEC packet (no from S308), the FEC packet generation control unit 19 stores the currently retransmitted data packet on the buffer unit 14a (S310). Processing thus ends.
Advantages of the Second Embodiment
As described above, the transfer apparatus 10 of the second embodiment re-generates the error correction packet at the end of the reception of the data packet regardless of the error correction packet loss unless the data packet protected by the error correction packet is retransmitted. The transfer apparatus 10 of the second embodiment reduces the possibility that the data transfer to a lower-layer apparatus continues with the missing error correction packet unnoticed, and controls an increase in the transfer delay caused by the error correction packet loss. Even if the transfer order of some of the data packets protected by the same error correction packet changes in response to the retransmission, the transfer apparatus 10 of the second embodiment re-organizes the protective coverage such that the data packets close to each other in the transfer order to a lower-layer transfer apparatus are organized close to each other. Even if retransmission repeatedly occurs between different transfer apparatuses, the transfer apparatus 10 reduces the possibility of increase in the transfer delay. The transfer apparatus 10 of the second embodiment thus controls the transfer delay caused when the data packet is transferred at a variable bit rate.
When the data packet is received, the transfer apparatus 10 of the second embodiment determines the packet loss of the data packet using the additional sequence number included in the data packet. In response to the packet loss determination results, the transfer apparatus 10 of the second embodiment places the retransmission request of the data packet to an upper-layer node, and then receives a retransmitted data packet. The transfer apparatus 10 of the second embodiment updates the FEC packet information of the data packets in the order of reception of the data packets including the data packet retransmitted and then received. The transfer apparatus 10 of the second embodiment detects the presence or absence of the packet loss each time the data packet is received. The transfer apparatus 10 of the second embodiment controls the transfer delay caused with the data packet transferred at a variable bit rate while reducing the waiting time of the data packet.
Those advantages are described with reference a transfer example.
Referring to
The protective coverage of the FEC packet (4, 3, . . . ) is added to the field “FEC Coverage” of
As illustrated in
The node #2 XOR gates the data packets each time each of the data packets 1-4 is received. At time TK the protective coverage “4” of the FEC packet is reached, the calculation of the parity information of the FEC packet 1 is complete. Regardless of whether the FEC packet 1 is lost between the node #1 and the node #2, the node #2 can re-generate an FEC packet 1 and transmit the FEC packet 1 to a lower-layer node. The FEC packet 1 is transferred to a lower-layer node without the need for detecting the loss of the FEC packet 1. The second embodiment thus reduces the possibility that the data transfer continues to a lower-layer node with the FEC packet 1 remaining missing, and thus controls an increase in the transfer delay due to the loss of the FEC packet.
Referring to
The node #2 operates in a manner different from the related art technique as illustrated in
More specifically, the node #2 modifies the FEC packet information of the data packet 5. The node #2 rewrites the additional sequence number “5” of the data packet 5 to the order of reception “4” in the node #2. The node #2 further rewrites the protective coverage “3” of the FEC packet for the data packet 5 to the protective coverage “4” of the FEC packet stored on the working memory 14b. The node #2 rewrites the sequence number “2” of the FEC packet for the data packet 5 to the sequence number “1” of the FEC packet stored on the working memory 14b.
The node #2 then re-generates the FEC packet 1 in accordance with the data packet 1, the data packet 2, the data packet 3, and the data packet 5. At time TL at which the data packet 5 is received, the data packet 1 through the data packet 3 are already XOR gated. The XOR gated results are XOR gated with the data packet 5, and the FEC packet 1 is thus generated.
As the FEC packet information of the data packet 5 is modified, the node #2 updates the data packet 6 through the data packet 8 that are to arrive by the reception of the retransmitted data packet 4, i.e., increments the additional sequence numbers of the data packet 6 through the data packet 8 by one. The data packets 6-8 are XOR gated at the moment the data packet 8 is received. The protective coverage “3” of the FEC packet that is registered on the working memory 14b at the reception of the data packet 6 is thus satisfied. The node #2 causes the protective coverage “3” of the FEC packet for the data packet 8 to overwrite the protective coverage “3” of the FEC packet stored on the working memory 14b. The node #2 rewrites the sequence number “3” of the FEC packet for the data packet 8 to the sequence number “2” of the FEC packet stored on the working memory 14b. The node #2 then re-generates the FEC packet 2 using the XOR gating results of the data packets 6-8.
Upon receiving the retransmitted data packet 4, the node #2 rewrites the additional sequence number “4” of the data packet 4 as the order of reception “8” in the node #2. The node #2 further rewrites the protective coverage “4” of the FEC packet for the data packet 4 as the protective coverage “3.” The node #2 rewrites the sequence number “1” of the FEC packet for the data packet 4 to the sequence number “3.” The node #2 then re-generates the FEC packet 3 using the data packet 4, the data packet 9, and the data packet 10.
The FEC packet information is thus modified, and the FEC packet is re-generated. The node #2 transmits to the node #3 the data packets 1-3, the data packet 5, the FEC packet 1, the data packets 6-8, the FEC packet 2, the data packet 4, the data packets 9-10, . . . in that order.
The data packet 3 and the data packet 4 may be lost between the node #2 and the node #3. In the related art technique illustrated in
In accordance with the second embodiment, the data packet 4 is introduced into the FEC packet 3 that results from XOR gating the data packet 9 and the data packet 10 close in the order of reception at the node #2. For this reason, even if the data packet 3 and the data packet 4 are lost, the error correction capability of the FEC packet 1 and the FEC packet 3 is not exceeded. The node #3 recovers the data packet 3 using the FEC packet 1, and recovers the data packet 4 using the FEC packet 3. The transfer delay of the data packet is reduced to a period from TN to TP equal to a length of 4 packets.
Even if retransmission changes the transfer order of the data packet 4, out of the data packets 1-4 protected by the same FEC packet 1, the protective coverage of the FEC packet is reorganized such that the data packets close to each other in the transmission order to a lower-layer node fall within the same protective coverage. Even if packet losses are repeated between different nodes, the possibility of an increase in the transfer delay is reduced.
In accordance with the second embodiment, the packet loss is quickly detected by adding the additional sequence number as the FEC packet information to the data packet. The transfer apparatus is not limited to this method. The packet loss may be detected using another method. In accordance with a third embodiment, the packet loss is detected by adding the sequence number of the data packet protected by the FEC packet within the protective coverage of the FEC packet.
In comparison with the FEC packet information adder unit 16 of
As illustrated in
The packet loss determiner unit 22 is different from the packet loss determiner unit 17 of
The FEC packet information modifier unit 23 modifies the FEC packet information in the same manner as the FEC packet information modifier unit 18 of
Process Flow
The process flow of the transfer apparatus 20 of the third embodiment is described below.
A packet is received from an upper-layer node as illustrated in
If the received packet is a standard data packet (yes from S401), the data packet reception process from S403 to S424 of
The data packet reception process is discussed. If the received packet is a standard data packet (yes from S401), the packet loss determiner unit 22 acquires the FEC packet information written on the RTP header of the data packet (S403). For example, the packet loss determiner unit 22 acquires, as the FEC packet information, the sequence number of the data packet, the protective coverage of the FEC packet, and the sequence number of the FEC packet.
The packet loss determiner unit 22 determines whether the data packet is a first received packet (S404). If the data packet is a first received packet (yes from S404), the packet loss determiner unit 22 performs a process described below. The packet loss determiner unit 22 registers on the working memory 14b the FEC packet information including the protective coverage of the FEC packet, and the sequence number of the FEC packet (S405).
The packet loss determiner unit 22 makes a copy of the data packet to generate an FEC packet, separately from the data packet to be transferred to a lower-layer node, and then stores the copy of the data packet on the buffer unit 14a (S406). The FEC packet generation control unit 19 XOR gates the currently received data packet (S407). The FEC packet generation control unit 19 stores on the buffer unit 14a the currently received data packet as a data packet to be transferred (S408), and ends the process.
If the data packet is not a first received packet (no from S404), the packet loss determiner unit 22 performs a process described below. The packet loss determiner unit 22 determines the protective coverage of the FEC packet written on the RTP header of the currently received the data packet matches the protective coverage of the FEC packet on the immediately preceding received data packet (S409). The sequence number groups of the data packets, as the protective coverage of the FEC packet, are checked against each other.
If the protective coverage matches the counterpart thereof (yes from S409), the FEC packet generation control unit 19 XOR gates the currently received data packet (S410).
The FEC packet generation control unit 19 determines whether the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet stored on the working memory 14b (S411). If the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet, i.e., the protective coverage of the FEC packet has been reached (yes from S411), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S412).
The FEC packet generation control unit 19 stores on the buffer unit 14a the generated FEC packet together with the data packet received by the packet receiver unit 11 (S408). Processing thus ends.
If the sequence number of the XOR gated data packet does not match the protective coverage of the FEC packet stored on the working memory 14b (no from S411), the FEC packet generation control unit 19 stores on the buffer unit 14a the currently generated FEC packet together with the data packet received by the packet receiver unit 11 (S408) and ends the processing.
If the protective coverage fails to match the counterpart thereof (no from S409), data packet reception processing from operations S413 to S424 illustrated in
If the packet loss count has reached the value requiring retransmission (yes from S413), the packet loss determiner unit 22 performs a process described below. The packet loss determiner unit 22 causes the retransmission communication unit 13 to transmit a retransmission request of a predetermined number of data packets (S414). The retransmission request requests the data packets to be transmitted starting with a data packet having the smallest sequence number. The packet loss determiner unit 22 then registers, in the retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet (S415).
The FEC packet information modifier unit 23 modifies the protective coverage of the FEC packet and the sequence number of the FEC packet written on the RTP header of the received data packet to the counterparts thereof stored on the working memory 14b (S416). The FEC packet generation control unit 19 XOR gates the currently received data packet (S417).
The packet loss determiner unit 22 updates the FEC packet information stored on the working memory 14b to the protective coverage of the FEC packet and the sequence number of the FEC packet on the currently received data packet (S418).
If the packet loss count has not reached the value requiring retransmission (no from S413), the packet loss determiner unit 22 determines whether any packet loss takes place within the protective coverage stored on the working memory 14b (S419).
If any packet loss takes place within the protective coverage (yes from S419), the FEC packet information modifier unit 23 performs a process described below. The FEC packet information modifier unit 23 modifies the protective coverage of the FEC packet and the sequence number of the FEC packet written on the RTP header of the received data packet to the counterparts thereof stored on the working memory 14b (S420).
The FEC packet generation control unit 19 XOR gates the currently received data packet (S421). The FEC packet generation control unit 19 determines whether the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet stored on the working memory 14b (S422). If the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet, i.e., the protective coverage of the FEC packet has been reached (yes from S422), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S423).
The FEC packet generation control unit 19 stores on the buffer unit 14a the generated FEC packet together with the data packet received by the packet receiver unit 11 (S408). Processing thus ends.
If no packet loss is found within the protective coverage (no from S419), the packet loss determiner unit 22 calculates a data packet for use in generation of a next FEC packet (S424).
The packet loss determiner unit 22 updates the FEC packet information stored on the working memory 14b to the protective coverage and the sequence number of the FEC packet that is currently received (S418). The updated data is stored on the packet buffer (S408). Processing thus ends.
The FEC packet reception process is discussed further with reference to
The packet loss determiner unit 22 determines whether the packet loss count has reached a value requiring retransmission within the protective coverage of the FEC packet written on the currently hit data packet (S502).
If the packet loss count has reached the value requiring retransmission (yes from S502), the packet loss determiner unit 22 performs a process described below. The packet loss determiner unit 22 determines whether the lost data packet, i.e., the packet as a retransmission request target is registered in a retransmission waiting list stored on the working memory 14b (S503). If the lost packet data is registered in the retransmission waiting list (no from S503), processing thus ends.
If the lost packet data is unregistered in the retransmission waiting list (yes from S503), the packet loss determiner unit 22 performs a process described below. The packet loss determiner unit 22 causes the retransmission communication unit 13 to transmit a retransmission request of a specific number of data packets (S504). The retransmission request requests the data packets to be transmitted starting with a data packet having the smallest sequence number. The packet loss determiner unit 22 then registers, in the retransmission waiting list stored on the working memory 14b, information related to the retransmission-requested data packet, for example, the sequence number of the data packet (S505). Processing thus ends.
If the packet loss count has not reached the value requiring retransmission (no from S502), the packet loss determiner unit 22 performs a process described below. The packet loss determiner unit 22 determines whether any packet loss is present in the protective coverage of the FEC packet written on the currently hit data packet (S506).
If no packet loss is present (no from S506), processing ends. If a packet loss is present (yes from S506), the FEC packet generation control unit 19 recovers the lost data packet using the currently received FEC packet (S507).
The FEC packet information modifier unit 23 modifies the protective coverage of the FEC packet and the sequence number of the FEC packet written on the RTP header of the recovered data packet to the counterparts thereof stored on the working memory 14b (S508).
The packet loss determiner unit 22 updates the FEC packet information stored on the working memory 14b to the protective coverage of the FEC packet, and the sequence number of the FEC packet on the currently recovered data packet (S509).
The FEC packet generation control unit 19 XOR gates the recovered data packet (S510). The FEC packet generation control unit 19 determines whether the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet stored on the working memory 14b (S511). If the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet, i.e., the protective coverage of the FEC packet has been reached (yes from S511), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S512).
The FEC packet generation control unit 19 stores on the buffer unit 14a the generated FEC packet together with the currently restored data packet (S513). Processing thus ends.
If the protective coverage of the FEC packet has not been reached (no from S511), the FEC packet generation control unit 19 stores the currently recovered data packet on the buffer unit 14a (S513). Processing thus ends.
The retransmission packet reception process is described below with reference to
The packet loss determiner unit 22 determines whether the sequence number of the retransmitted data packet is registered in the retransmission waiting list on the working memory 14b (S602). If the sequence number is not registered in the retransmission waiting list (no from S602), processing ends.
If the sequence number is registered in the retransmission waiting list (yes from S602), the packet loss determiner unit 22 deletes the sequence number of the retransmitted data packet from the retransmission waiting list (S603).
The FEC packet information modifier unit 23 modifies the protective coverage of the FEC packet and the sequence number of the FEC packet written on the RTP header of the retransmitted data packet to the counterparts thereof written on the working memory 14b (S604).
The packet loss determiner unit 22 updates the FEC packet information stored on the working memory 14b to the protective coverage of the FEC packet and the sequence number of the FEC packet on the retransmitted data packet (S605).
The FEC packet generation control unit 19 XOR gates the retransmitted data packet (S606). The FEC packet generation control unit 19 determines whether the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet stored on the working memory 14b (S607). If the sequence number of the XOR gated data packet matches the protective coverage of the FEC packet (yes from S607), the FEC packet generation control unit 19 generates an FEC packet from the data packets heretofore XOR gated (S608).
The FEC packet generation control unit 19 stores on the buffer unit 14a the currently generated FEC packet together with the currently recovered data packet (S609). Processing thus ends.
If the protective coverage of the FEC packet has not been reached (no from S607), the FEC packet generation control unit 19 stores the currently recovered data packet on the buffer unit 14a (S608). Processing thus ends.
Advantages of the Third Embodiment
When the data packet is received, the transfer apparatus 20 of the third embodiment determines the packet loss of the data packet using the sequence number of the data packet included in the data packet. In response to the packet loss determination results, the transfer apparatus 20 of the third embodiment places the retransmission request of the data packet to an upper-layer node, and then receives a retransmitted data packet. The transfer apparatus 20 of the third embodiment updates the FEC packet information of the data packets in the order of reception of the data packets including the data packet retransmitted and then received. The transfer apparatus 20 of the third embodiment controls the transfer delay caused with the data packet transferred at a variable bit rate while reducing and/or minimizing a change in the header information of the data packet such as the RTP packet, for example.
Those advantages are described with reference a transfer example.
Referring to
When the FEC packet information is added, the sequence number of the data packet protected by the FEC packet is added to the field “FEC Coverage” and the FEC sequence number is added to the field “FEC ID” as illustrated in
As illustrated in
The node #2 XOR gates the data packets each time each of the data packets 1-4 is received. At time TQ the protective coverage “4” of the FEC packet is reached, the calculation of the parity information of the FEC packet 1 is complete. Regardless of whether the FEC packet 1 is lost between the node #1 and the node #2, the node #2 can re-generate an FEC packet 1 and transmit the FEC packet 1 to a lower-layer node. The FEC packet 1 is transferred to a lower-layer node without the need for detecting the loss of the FEC packet 1. The third embodiment thus reduces the possibility that the data transfer continues to a lower-layer node with the FEC packet 1 lost, and thus controls an increase in the transfer delay due to the loss of the FEC packet.
Referring to
The node #2 operates in a manner different from the related art technique of
More specifically, the node #2 requests the node #1 to retransmit the data packet 4. The node #2 then modifies the protective coverage of the FEC packet on the data packets 1-3 from “1,2,3,4” to “1,2,3,5.” The node #2 modifies the protective coverage of the FEC packet on the data packet 5 from “5,6,7” to “1,2,3,5.” The node #2 modifies the sequence number of the FEC packet on the data packet 5 from “FEC2” to “FEC1.” The node #2 further generate the FEC packet 1 in accordance with the data packets 1-3 and the data packet 5. The calculation of the XOR gating of the data packets 1-3 is already complete at time TR at which the data packet 5 is received. The node #2 XOR gates the calculation results and the data packet 5, thereby re-generating the FEC packet 1. The FEC header has “SN Base:1 and Mask: 0xE80000.” The node #2 starts transmitting the packets to the node #3 in response to the completion of the generation of the FEC packet 1.
The node #2 successively modifies the protective coverage of the FEC packet and the sequence number of the FEC packet on the data packet 5. More specifically, the node #2 modifies the protective coverage of the FEC packet on the data packet 8 from “8,9,10” to “6,7,8” and the sequence number of the FEC packet on the data packet 8 from “FEC3” to “FEC2.” The node #2 generates the FEC packet 2 using the data packets 6-8. The received FEC packet 2 becomes unnecessary and is thus discarded. The FEC header has “SN Base: 6 and Mask: 0xE00000.”
The node #2 receives the retransmitted data packet 4 and waits in standby until the data packet 10 is received, because the immediately preceding received data packet 8 has a protective coverage of “8,9,10” of the FEC packet and a sequence number “FEC3” of the FEC packet. The node #2 then modifies the protective coverage of the FEC packet on the data packet 4 from “1,2,3,4” to “4,9,10” and the sequence number of the FEC packet from “FEC1” to “FEC3.” The node #2 further modifies the protective coverage of the FEC packet on the data packets 9-10 from “8,9,10” to “4,9,10.” The node #2 instructs the FEC packet 3 to be generated in accordance with the data packet 4, and the data packets 9 and 10. The FEC header has “SN Base: 4 and Mask: 0x860000” at this point of time.
In accordance with the third embodiment, the data packet 4 is introduced into the FEC packet 3 that results from XOR gating the data packet 9 and the data packet 10 close in the order of reception at the node #2. For this reason, even if the data packet 3 and the data packet 4 are lost, the error correction capability of the FEC packet 1 and the FEC packet 3 is not exceeded. The node #3 recovers the data packet 3 using the FEC packet 1, and recovers the data packet 4 using the FEC packet 3. The transfer delay of the data packet is cut down to a period from TT to TU equal to a length of 4 packets.
Even if retransmission changes the transfer order of the data packet 4, out of the data packets 1-4 protected by the same FEC packet 1, the protective coverage of the FEC packet is reorganized such that the data packets close to each other in the transmission order to a lower-layer node fall within the same protective coverage. Even if packet losses are repeated between different nodes, the possibility of an increase in the transfer delay is reduced.
The transfer apparatuses of the embodiments have been discussed above. However, the invention may be implemented in a variety of embodiments other than the above-described embodiments. Other example embodiments that fall within the scope of the invention are described below.
In accordance with the second embodiment, the number of data packets protected by the FEC packet is used as the information indicative of the protective coverage of the FEC packet. The transfer apparatus is not limited to this method. For example, the additional sequence number may be substituted for by the sequence number of a media data packet protected by the FEC packet and a distance to the FEC packet (information indicative of the number of packets present).
In the transfer apparatus, a recoverable packet count of the FEC packet, i.e., the error correction capability may be added to the RTP header. The timing of sending a retransmission request to an upper-layer node may thus be determined if a packet loss is detected.
The elements in each transfer apparatus illustrated in the drawings are not necessarily physically configured as illustrated. The configuration of each transfer apparatus is not limited to the configuration illustrated in each of the drawings. The elements may be integrated or split in terms of function or physical structure by any unit depending on workload or usage. For example, the packet receiver unit 11, the packet transmitter unit 12, and the retransmission communication unit 13 are respectively function units, but these units in part or whole may be integrated into a unitary structure.
The above-described variety of processes may be performed by a computer such as a personal computer or a work station, which executes a prepared computer program.
The ROM 160 pre-stores a control program having the same function as that of the packet loss determiner unit 17, the FEC packet information modifier unit 18, and the FEC packet generation control unit 19 of the second embodiment. As illustrated in
The CPU 150 reads and executes the programs 160a-160c. As illustrated in
The CPU 150 executes the transfer program using the RAM 180, for example.
The data reproduction program is not necessarily stored on the HDD 170 or the ROM 160 from the start. For example, the program may be stored on a flexible disk loaded on the computer 100, for example, “movable physical media” including floppy disk, CD-ROM, DVD disk, magneto-optical disk, and IC card. The computer 100 may retrieve the program from one of these movable physical media and execute the program. Another computer or a server apparatus connected to the computer 100 via public telephone line, the Internet, local-area network (LAN), wide-area network (WAN), or the like may store the program, and the computer 100 may then retrieve the stored program for execution.
All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the principles of the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present inventions has been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
2010-149866 | Jun 2010 | JP | national |