This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2010-133514, filed on Jun. 11, 2010, the entire contents of which are incorporated herein by reference.
The embodiments discussed herein are related to a packet transmitting apparatus and a packet transmitting method, and non-transitory computer-readable recording medium storing a packet transmitting program for implementing the packet transmitting apparatus in a central processing unit.
One of the problems related to the streaming delivery such as moving image delivery is a burst problem. For example, if a large number of packets are delivered in a short period time, a buffer (queue) of relays (including a switch, a router, and a converter) and a transmission destination apparatus overflow. An overflow packet is discarded, and as a result, a reproduced image in the moving image delivery is subject to an image disturbance. This is referred to as the burst problem.
Techniques called traffic shaving and traffic policing to alleviate the burst problem are known. In the traffic shaving technique, a packet to be transmitted is temporarily stored on a buffer, and is then transferred at a constant time interval. In the traffic policing technique, packets are discarded if traffic increases above a constant rate.
An underflow (a scarce state of packets dwelling on the queue) causes a failure in the transmission of the packets at regular intervals. Traffic shaving is implemented to cause a large number of packets to continuously dwell on a queue and to prevent underflow. For this reason, in traffic shaving, the transmission is performed in a state that a delay of time corresponding to a large number of packets dwelling on the queue continuously occurs. If the transmission is interrupted for a certain period of time for any reason in traffic shaving, the number of packets dwelling on the queue is increased even more.
Packet discarding tends to occur in traffic policing. Since a large number of packets are unlikely to be discarded at a time in traffic policing, the possibility of a large image distortion is small. But a small-scale image distortion is still likely to happen because of a small number of discarded packets.
Related arts are described in Japanese Laid-open Patent Publication Nos. 2004-186882 and 2007-13449.
A packet transmitting apparatus including a receiving unit for receiving a packet; a determining unit for determining whether an elapsed time t is longer than a first threshold time X·T1, the elapsed time t is a time elapsed from the transmission time of a packet transmitted earlier than the latest transmitted packet by X−1 packets, X being the number of packets that a minimum storage capacity queue can store, the minimum storage capacity queue is a queue having a smallest storing capacity among queues for temporarily storing received packets on a transmission pass to the transmission destination apparatus, and T1 being a time interval with which packets stored in the minimum storage capacity queue are successively extracted; and a transmitting unit for transmitting the unsent packet without delaying the transmission of the unsent packet when the determining unit determines that the elapsed time t is longer than the first threshold time X·T1, and transmitting the unsent packet after delaying the transmission of the unsent packet when the elapsed time determining unit determines that the elapsed time t is shorter than the first threshold time X·T1.
The object and advantages of the various embodiments 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 various embodiments, as claimed.
The embodiments of the invention are described below.
As illustrated in
The packet transmitting apparatus 10 of
The packet receiving unit 11 receives a packet.
If a condition to be discussed later is satisfied, the waiting control unit 12 performs a waiting process. In the waiting process, the waiting control unit 12 delays the transmission of a packet received by the packet receiving unit 11 rather than causing the packet transmitting unit 13 to transmit the packet immediately.
The packet transmitting unit 13 transmits the packet transferred from the waiting control unit 12 to a transmission destination apparatus (not illustrated).
The packet transmitting apparatus 10 of
X: represents a number of packets that a minimum storage capacity queue permits to be stored. The minimum storage capacity queue is a queue having a smallest storage capacity among the queues that temporarily store received packets. The queues dwell on a transmission path before the received packets are transmitted to the transmission destination apparatus. The transmission path is described later with reference to a second embodiment.
T1: represents a time interval with which packets stored in the minimum storage capacity queue are successively extracted.
t: represents an elapsed time lasting to the present time from the transmission time of a packet transmitted earlier than the latest transmitted packet by X−1 packets.
X·T1: represents a first threshold time, where X·T1 is the product of the multiplicand X and the multiplier T1.
The elapsed time determining unit 14 determines whether the elapsed time t is longer than the first threshold time X·T1.
If the elapsed time determining unit 14 determines that the elapsed time t is shorter than the first threshold time X·T1, the waiting control unit 12 performs the waiting process to delay the transmission of the packet transferred from the packet receiving unit 11.
If the elapsed time determining unit 14 determines that the elapsed time t is longer than the first threshold time X·T1, the packet transmitting unit 13 transmits an unsent packet with the waiting process of the waiting control unit 12 skipped. In such a case, the packet transmitting unit 13 transmits the unsent packet after directly receiving the unsent packet from the waiting control unit 12. If the elapsed time determining unit 14 determines that the elapsed time t is shorter than the first threshold time X·T1, the packet transmitting unit 13 transmits the unsent packet after the waiting control unit 12 has performed the waiting process.
More parameters are defined herein.
T: represents a packet mean reception time interval of the packet receiver 11.
T2: represents a time interval satisfying condition of T1<T2<T. for example, T2=(T1+T)/2.
More specifically, if the elapsed time determining unit 14 determines that the elapsed time t is shorter than the first threshold time X·T1, the waiting control unit 12 performs the waiting process to keep the transmission of the unsent packet waiting for a waiting time of (a second threshold time X·T−the elapsed time t) starting with the present time.
The packet transmitting apparatus 10 of
By referencing the control table 15a, the elapsed time determining unit 14 determines the transmission time of the packet transmitted earlier by X−1 packets, and calculates the elapsed time t. The elapsed time determining unit 14 then determines whether the elapsed time t is longer than the first threshold time X·T1.
If a plurality of packet transmission destinations are present, transmission times of packets transmitted to the transmission destinations are listed respectively on the spaces of the transmission destinations in the control table 15a. The control table updating unit 16 then updates the transmission times in the control table 15a on a per transmission destination basis.
If a transmission destination is known, the known transmission destination is recorded as an initial setting in the control table 15a. If no transmission destination is known, the control table updating unit 16 is caused to monitor the transmission destination of a packet. When a packet to be transmitted to a new transmission destination is detected, a new space corresponding to the new transmission destination is added to the control table 15a.
A specific example of the control table 15a is described later with reference to the second embodiment.
The packet transmitting apparatus 10 of
The measurement unit 17 has three functions as below. (1) The measurement unit 17 functions as a mean reception time interval calculating unit to calculate a packet mean reception time interval T. (2) The measurement unit 17 functions as a storage capacity packet count detecting unit to calculate a storage capacity packet count X. (3) The measurement unit 17 functions as a queue extraction time detecting unit to detect the time interval T1.
The measurement unit 17 performs the process described below in order to calculate (1) packet mean reception time interval T. The measurement unit 17 calculates the mean value of reception time intervals of a plurality of packets successively received by the packet receiving unit 11. The calculated mean value is the packet mean reception time interval T.
In order to calculate (2) storage capacity packet count X, the measurement unit 17 performs the process described below. More specifically, the measurement unit 17 causes the packet transmitting unit 13 to repeat a process to transmit a plurality of packets to the transmission destination apparatus substantially at the same time with the number of packets transmitted substantially at the same time successively changed, and the measurement unit 17 detects a maximum packet count free from a retransmission request. The maximum packet count free from a retransmission request is the storage capacity packet count X of the minimum storage capacity queue out of the queues dwelling on a transmission path before the received packets are transmitted to the transmission destination apparatus.
In order to calculate (3) time interval T1, the measurement unit 17 performs the process as described below. The measurement unit 17 causes the packet transmitting unit 13 to repeat a process to transmit a plurality of packets with specific time intervals with the number of packets and the specific time interval changed. The measurement unit 17 thus detects the shortest time interval with which no retransmission request is detected if the number of packet is increased. The shortest time interval is the time interval T1.
The packet transmitting apparatus 10 of the first embodiment illustrated in
The values T, X, and T1 thus determined by the measurement unit 17 are used in the process performed by the waiting control unit 12 and the elapsed time determining unit 14 and serve as indexes of the values of transmission times recorded in the control table 15a in the control table storage unit 15. The control table 15a is described in connection with the second embodiment described below.
The packet transmitting apparatus 10 has been described. The process performed by the packet transmitting apparatus 10 may also be understood as a packet transmitting method. The packet transmitting apparatus 10 of
The first embodiment has been discussed. The second embodiment is discussed below.
A packet is captured into an encoder 21 from content 20 (moving image content here). A delivery server 30 receives the packet from the encoder 21. The encoder 21 may represent a content storage device. The content storage device may accumulate a large number of content units, and stream-delivers packets, each representing a content unit responsive to a request to a request source.
The packet arrived at the delivery server 30 is received by an adaptor A, and then by a driver A. The driver A then transfers the packet to Internet Protocol (IP), and further to Transmission Control Protocol (TCP). User Datagram Protocol (UDP) may also be used instead of TCP. TCP is used in the embodiment in principle.
TCP is a protocol for unicast transmission. One port number thus indicates one transmission destination apparatus. In TCP, if a packet is missing on a transmission path, a retransmission process of the packet is performed.
In UDP, multi-cast transmission is typically performed, and one port number indicates a plurality of transmission destination apparatuses. No retransmission process is performed in standard operation in UDP. A transmission source can become aware of a missing packet if a packet loss detection program is introduced in a transmission destination apparatus. The packet loss detection program returns detection results if a packet loss is detected.
The packet handed to TCP of the delivery server 30 is routed to an application program, and then proceeds to TCP, and then IP in reverse. The packet proceeds to a driver B, and then an adaptor B. The packet is then transmitted from the delivery server 30 to a transmission destination apparatus (one of client terminals 50_1, 50_2, . . . , 50_n).
The packet transmitted from the delivery server 30 passes via a relay A41, Internet 42 (or an exclusive line), and one of relays B 43_1, 43_2, . . . and is then received by one of the client terminals 50_1, 50_2, . . . , 50_n. The received packet is visualized into an image by one of video apparatuses 51_1, 51_2, . . . , 51_n−1, 51_n, . . . connected to that client terminal.
The delivery server 30 includes hardware elements, performing an arithmetic operation, such as unillustrated CPU and memory.
The driver A, IP, TCP (UDP), and the application program illustrated in
The function performed by the driver B is discussed first, followed by the discussion of modification of the embodiment.
In the discussion that follows, the parameters X, T, T1, T2, and t remain unchanged from those described with reference to the first embodiment. Parameters X, T, and T1 are those already known by a user, and specified by configuration properties of the driver B. Alternatively, the parameters X, T, and T1 may be determined using a method to be discussed later, and specified by the user or the application software.
The discussion here is based on the premise that the transmission destination port and the variety of parameters are already known by the user, and specified by the configuration properties of the driver B. Alternatively, the transmission destination port and the variety of parameters may be known by the application program, and the application program may specify the transmission destination port, and the variety of parameters to the driver B.
A “transmission destination port number” in the control table of
A “packet number X−1 packets earlier” is the packet number of a packet transmitted earlier than the latest transmitted packet by X−1 packets. The packet number is specified by any number of from 0 to X−1. Each time a packet is transmitted, the packet number is incremented as follows: 0→1→ . . . →X−1. Upon reaching X−1, the packet number reverts back to zero (0). Here, 0, 1, . . . , X−1 respectively correspond to time (0), time (1), . . . , time (X−1). As illustrated in
A “latest packet number” is a packet number of a latest transmitted packet. The “latest packet number” is circularly updated in the order of 0→1→ . . . →X−1→0→1→ . . . “X−1” is recorded at each of the “latest packet numbers” as initial values in
“Time (0),” “time (1),” . . . , “time (X−1)” are transmission times of the transmitted packets of the packet numbers 0, 1, . . . , X−1. Initial values of the transmission times are all “S” in
If one unsent packet is transmitted, the present time is recorded at time responsive to a packet number recorded at the “latest packet number”, and 1 is added to the “packet number X−1 packets earlier” and to the “latest packet number.” If a value of “latest packet number” X−1 with 1 added thereto changes to X, the packet number turns to 0.
It is assumed that the minimum storage capacity queue having the smallest storage capacity is present in each of the relays B43_1, 43_2, . . . in
The driver B performs the transmission process of
The transmission process includes a queuing and non-streaming-delivery packet transmitting operation (operation S01), and a transmission thread operation (S02).
In
It is determined whether a packet currently being transmitted is a TCP/UDP packet, and whether a port number is a port number listed in the control table (see
If the condition in operation S11 is satisfied, the packet is registered in a queue in which packets to be transmitted are arranged (operation S12). If no transmission thread has been started, a transmission thread is started (operation S13). The transmission thread is a program that performs the process of the transmission thread unit (operation S02) of
The condition in operation S11 may not be satisfied, if the packet to be transmitted is a packet other than the TCP/UDP packet as a control target. Even if the packet to be transmitted is a TCP/UDP packet, the packet may have a port number other than the port numbers registered in the control table as control targets. In such cases, processing proceeds to operation S14. The packet transmission process similar to related art technique is performed.
The process described above is repeated to all the packets to be transmitted (operation S15).
It is assumed herein that the transmission thread is initially in a sleep state (operation S21).
If the transmission thread is triggered in operation S15 of
One packet is first extracted from the queue (operation S22). Then, the elapsed time t from the transmission time of the packet transmitted earlier than the latest transmitted packet by X−1 packets down to the latest transmitted packet is calculated (operation S23). The control table of
The elapsed time t thus calculated is compared with the first threshold time X·T1 (operation S24). If t≦X·T1, waiting is needed, and the waiting time is (X·T2−t) (operation S25). If t>X·T1, no waiting is needed, and operation S25 is skipped.
The present time as the transmission time is recorded at time (the latest packet number) (operation S26) in the control table (see
In the control table, 1 is added to the packet number X−1 packets earlier, and the latest packet number (operation S28). If the addition of 1 results in a value higher than X−1, the packet number reverts back to 0.
It is then determined in operation S29 whether an unsent packet remains in the queue. If a packet remains in the queue, processing returns to operation S22. One of the unsent packets is then extracted, and the process described above is repeated.
If it is then determined in operation S29 that no unsent packet remains in the queue, processing returns to operation S21. The transmission thread is back into a sleep state.
The length from the head to the tail of the X consecutive packets is longer than X·T1 in the process of
If the length from the head to the tail of the X consecutive packets is longer than X·T1, at least one empty space is available in the queue of the relay B when any one packet arrives at the relay B. This fact is explained as below. At least an interval of X·T1 is present between one packet and a preceding packet earlier than the one packet by X−1 packets. When the preceding packet earlier than the one packet by X−1 packets arrives at the relay B, the preceding packet earlier than the one packet by X−1 packets may be registered at the tail of the queue of the relay B. When the one packet arrives at the relay B, the packet earlier than the one packet by X−1 packets is already extracted out of the relay B. At the moment any packet arrives at the relay B, at least one empty space is available in the queue of the relay B. The queue of the relay B is thus prevented from overflowing in the process of
A packet transmission operation example of the packet transmission process of
Symbols used in the discussion of
The meanings of the parameters T, X, T1, T2, and t are identical to those described with reference to the first embodiment.
Here, ms stands for milliseconds. The parameters here are T=10 ms, and the queue of the relay B is a minimum storage capacity queue with X=8, T1=4 ms, and T2=6 ms.
Q1 is a queue of IP of the delivery server 30. In Q1 column, “no,” “1,” “2,” and the like refer to the packet counts of the packets arranged in the queue Q1.
Q2 is a queue of the driver B of the delivery server 30. In the Q2 column, “no,” “100,” and the like (see
Times Z+10−0 ms, Z+20−0 ms, . . . (see
Times Z+10+0 ms, Z+20+0 ms, . . . (see
The packets discussed here have the same transmission destination port number, transmission destination port number 28001.
At time Z ms, several packets have been transmitted. Prior to time Z ms, packets are received with equal time intervals of 10 ms, pass queues Q1 and Q2, and then are transmitted also with equal time intervals of 10 ms from the delivery server 30. Subsequent to time Z ms, packets arrive at the queue Q1 with equal time intervals. It is assumed that packets arrive at the queue Q1 at times Z+10−0 ms, Z+20−0 ms, . . . , slightly earlier than times Z+10 ms, Z+20 ms, . . . , respectively.
From any time point somewhere between time Z ms and time Z+10 ms (time Z+5 ms, for example) to time Z+100−0 ms, it is assumed that the CPU is not assigned the transmission process of the driver B but is assigned a software program that is unrelated to the packet transmission and has a higher priority. In such case, the transmission process may be suspended.
The packet transmission performed without adjusting the transmission intervals is illustrated in
With reference to
In this case, two packets (10−8=2) are discarded at the relay B having the minimum storage capacity (X=8).
In traffic shaving, packets are temporarily stored in the queue, and the packets are then transmitted with equal time intervals as described above. In the operation example of
With reference to
After packets are transmitted from 30, no packet loss takes place on the transmission path. An interrupted packet delivery is likely to cause an image distortion. Q2 stores packets larger in number than the packets prior to the interruption. The transmission process is further delayed accordingly in general operation.
Specific examples of the transmission process of
The packet having arrived at IP at time Z−0 ms is immediately transferred to the driver B. The driver B performs the “queuing and non-streaming-delivery packet transmitting operation” of
Processing then proceeds to operation S21, operation S22, and operation S23 as illustrated in
Since the first threshold time X·T1 is X·T1=8×4=32 ms, t=70 ms>X·T1=32 ms. It is thus determined in operation S24 that the magnitude determination is a false branch (waiting not needed). The waiting process is not performed in operation S25. The present time is recorded at time (latest packet number)=time (0) (operation S26). The packet extracted from the queue Q2 is immediately transmitted (operation S27). In the control table, 1 is added to the packet number 7 packets earlier and the latest packet number, which become 2 and 1, respectively (operation S28).
Since the driver B is not assigned the CPU from any time point somewhere between time Z and time Z+10 ms (time Z+5 ms, for example) to time Z+100−0 ms, the packet transmission process is suspended. At time Z+100−0 ms, 10 packets dwell on the queue Q1 of IP.
At time Z+10+0 ms, the driver B is assigned back the CPU, and the transmission process resumes. 10 packets dwelling on the queue Q1 of IP are transferred to the drive B, and the transmission process of
The determination results from operation S11 of
The elapsed time t calculated in operation S23 of
packet number 1: t=Z+100 ms−time (2)=Z+100−(Z−60)=160 ms>32 ms=X·T1;
packet number 2: t=Z+100 ms−time (3)=Z+100−(Z−50)=150 ms>32 ms=X·T1;
packet number 3: t=Z+100 ms−time (4)=Z+100−(Z−40)=140 ms>32 ms=X·T1;
packet number 4: t=Z+100 ms−time (5)=Z+100−(Z−30)=130 ms>32 ms=X·T1;
packet number 5: t=Z+100 ms−time (6)=Z+100−(Z−20)=120 ms>32 ms=X·T1;
packet number 6: t=Z+100 ms−time (7)=Z+100−(Z−10)=110 ms>32 ms=X·T1; and
packet number 7: t=Z+100 ms−time (0)=Z+100−Z=100 ms>32 ms=X·T1.
For the eighth packet, packet number 0: t=Z+100 ms−time (1)=Z+100−(Z+100)=0 ms<32 ms=X·T1. A waiting time of X·T2−=8×6−0=48 ms is inserted.
At times Z+110 ms, Z+120 ms, Z+130 ms, and Z+140 ms during the waiting time of 48 ms, a total of four packets arrive at the driver B one at a time. These packets are registered in the queue Q2 of the driver B in the process of
At time Z+148 ms, the eighth packet (packet number 0) is transmitted, immediately followed by the transmission of the ninth packet and the tenth packet (packet numbers 1 and 2) because:
packet number 1: t=Z+148 ms−time (2)=Z+148−(Z+100)=48 ms>32 ms=X·T1; and
packet number 2: t=Z+148 ms−time (3)=Z+100−(Z+100)=48 ms>32 ms=X·T1.
Four packets (packet numbers 3, 4, 5, and 6) having arrived from time Z+100 ms to time Z+148 ms are also immediately transmitted at time Z+148 ms because:
packet number 3: t=Z+148 ms−time (4)=Z+148−(Z+100)=48 ms>32 ms=X·T1;
packet number 4: t=Z+148 ms−time (5)=Z+148−(Z+100)=48 ms>32 ms=X·T1;
packet number 5: t=Z+148 ms−time (6)=Z+148−(Z+100)=48 ms>32 ms=X·T1; and
packet number 6: t=Z+148 ms−time (7)=Z+148−(Z+100)=48 ms>32 ms=X·T1.
For the packet (packet number 7) having arrived at time 150 ms, packet number 7: t=Z+150 ms−time (8)=Z+150−(Z+148)=2 ms<32 ms=X·T1. A waiting time of X·T2−t=8×6−2=46 ms is inserted. The waiting time 46 ms determined herein is a time interval from time Z+150 ms, and the time interval from time Z+148 ms is 48 ms. More specifically, the transmission remains suspended until Z+150 ms+46 ms=Z+196 ms.
At times Z+160 ms, Z+170 ms, Z+180 ms, and Z+190 ms during the waiting time, one packet at a time arrives at the driver B. Since the packet having arrived at time Z+150 ms remains unsent, these packets waits in the queue Q2 of the driver.
At time 196 ms, the packet having arrived at time 150 ms (packet number 6) is transmitted. The packets having arrived at times Z+160 ms, Z+170 ms, Z+180 ms, and Z+190 ms are also immediately transmitted because:
packet number 0: t=Z+196 ms−time (1)=Z+196−(Z+148)=48 ms>32 ms=X·T1;
packet number 1: t=Z+196 ms−time (2)=Z+196−(Z+148)=48 ms>32 ms=X·T1;
packet number 2: t=Z+196 ms−time (3)=Z+196−(Z+148)=48 ms>32 ms=X·T1; and
packet number 3: t=Z+196 ms−time (4)=Z+196−(Z+148)=48 ms>32 ms=X·T1.
At time 200 ms, one packet arrives at the drive B. That packet is immediately transmitted because:
packet number 4: t=Z+200 ms−time (5)=Z+200−(Z+148)=52 ms>32 ms=X·T1.
The packets arriving at times Z+210 ms, Z+220 ms, Z+230 ms, . . . , with time intervals of 10 ms are immediately transmitted because the value of t (a difference between the present time and the transmission time of the packet seven packets earlier) is not shorter than 32 ms.
According to the embodiment as illustrated in
Modifications of the second embodiment are described below.
The second embodiment is based on the premise that the transmission destination port number is already known by one of the user and the application program. According to a first modification of the second embodiment in contrast, the driver identifies a streaming delivery packet and automatically recognizes the port number from the packet itself. If a port number auto-recognition process is performed, one of the user and the application program may notify the driver B of a condition identifying the streaming delivery packet through configuration properties. If the driver is notified of the condition, a packet satisfying the condition becomes a target of the process. If the driver B is not particularly notified, it is determined whether the packet is a TCP/UDP packet or another packet. If a TCP packet is used for streaming delivery, all the TCP packets become targets of the process. If a UDP packet is used for streaming delivery, all the UDP packets become targets of the process.
In the first modification, the control table having a format of
In the first modification, the transmission process of
Operations S11 to S15 of
The port number auto-recognition process is performed in operation S31. It is then determined whether the port number is added to the control table (operation S32). If the port number is added to the control table, processing proceeds to operation S12. If the port number is not added to the control table, processing proceeds to operation S14.
It is then determined whether a packet as a determination target satisfies the condition of the streaming delivery packet (operation S311). If the packet satisfies the condition of the streaming delivery packet, processing proceeds to operation S312. A row of the port number of the packet is added to the control table, and a queue for the port number is generated on a memory (not illustrated). The base address of the queue is added to the control table. The packet number earlier in time by X−1 packets is defaulted to 0, the immediately preceding packet number is defaulted to X−1, and time (0)−time (X−1) are defaulted to S (see
If the condition of the stream delivery packet is not satisfied in operation S311 of
According to the first modification, the transmission destination port number of the packet for streaming delivery is automatically recognized.
Operations S11 to S15 of
In operation S41, t=present time−time (packet number X−1 packets earlier) is calculated.
It is then determined in operation S42 whether a packet is already present in the queue, and whether the condition of t≦X·T1 is satisfied. If a packet is already present in the queue, a current packet is also registered in the queue (operation S12). If the condition of t≦X·T1 is satisfied with the queue empty, processing also proceeds to operation S12, and the current packet is also registered.
No waiting process is necessary if the condition of t≦X·T1 is satisfied with no packet. According to the second modification, the packet transmission process is thus performed with the current packet unregistered. More specifically, the present time is recorded at time (the latest packet number) in the control table (operation S43). The packet transmission process is performed (operation S44). Furthermore, 1 is added to the packet number of the packet earlier by X−1 packets and the latest packet number in the control table (operation S45). With 1 added to the control table, the packet number, if increased above X−1, reverts back to 0.
According to the second embodiment, the packet is registered in the queue even if the packet is ready to be transmitted without the need for the transmission waiting (see operation S12 in
The second embodiment, and the first and second modifications thereof are based on the premise that the packet transmitting method is performed by the driver of the delivery server 30 in the system of
As illustrated in
According to the third modification of
The control table 65 is also generated. The control table 65 has been discussed. If the process is performed by the driver B, the control table 65 is generated on a main memory of the delivery server 30. If the process is performed by the adaptor, the control table 65 is generated on a memory within the adaptor.
According to the second embodiment, the user or the application program notifies the driver of information (such as the port number, and the values of the parameters X, T, and T1). According to the third modification of the second embodiment, the user or the application program notifies the driver of the information, and then the driver notifies the adaptor of the information. When the adaptor performs the process, the port number auto-recognition process may be performed in the same manner as in the first modification.
Upon receiving a transmission packet from the driver B, the adaptor B transmits the received packet to a relay A41 (see
The adaptor B receives the packet from the driver B. A port number auto-recognition unit 61 determines whether the received packet has a port number registered in the control table 65. If the packet has a port number unregistered in the control table 65, that packet is not a control target. The packet passes through a queuing unit 62 and a waiting setter 63 with nothing done thereto, and is then transmitted as is by a transmission processing unit 64. The process of the port number auto-recognition unit 61 is identical to operation S11 described above with reference to
If the port number auto-recognition unit 61 determines that the packet has a port number registered in the control table 65, the queuing unit 62 then registers the packet in A queue 66 (this operation is identical to operation S12 of
The waiting setter 63 references the control table 65, and determines whether to keep waiting the transmission of the packet registered in the queue. If it is determined that the transmission of the packet needs to be kept waiting, the waiting setter 63 instructs the transmission processing unit 64 to transmit the packet after waiting for time determined through calculation. If it is determined that the transmission of the packet does not need to be kept waiting, the waiting setter 63 instructs the transmission processing unit 64 to transmit the packet immediately.
Upon receiving the transmission instruction from the waiting setter 63, the transmission processing unit 64 extracts the packet from the queue 66 and then transmits the packet to the relay A.
The process of the waiting setter 63 and the transmission processing unit 64 is identical to the process of the second embodiment illustrated in
The function of the second embodiment is implemented in the application program of the delivery server 30 of
The same process as in the driver is performed in the application program.
One process (or a thread) of the application program corresponds to one TCP port or one UDP port. Each process (thread) of the application program is free from controlling a plurality of TCP ports or a plurality of UDP ports. For this reason, the control table has one port number only as illustrated in
If the application program is implemented, the effectiveness of the application program depends on the premise that no burst takes place in a TCP (or UDP) layer and an IP layer (see
The function of the second embodiment implemented in the relay A of
If the minimum storage capacity queue is present in the relay B or the client terminal illustrated in
If the function is implemented in the relay A, it is typically difficult to automatically determine the parameters T, X, T1, and the like. In such a case, the user may need to specify the parameters in the relay A.
The modifications of the second embodiment have been discussed. An example of the determination method of the parameters T, X, and T1 is described below.
If the user knows the parameters T, X, and T1, the user may simply specify the values of these parameters. The user may not necessarily know the parameters. A measurement program is thus implemented, and a method of determining the values of these parameters using the measurement program is described below. The values of the parameters are automatically determined. One of the application program, the driver, and the adaptor on the delivery server 30 may also automatically measures the values of the parameters. As described above, the relay is typically insufficient to implement the measurement program therewithin.
The following discussion is based on the premise that TCP is used. If UDP is used, a modification is needed. Such a modification is also described below.
The TCP packet is transmitted via unicast, and one TCP port number corresponds to one client terminal. The measurement program operates between TCP/IP and the driver on the delivery server as illustrated in
If the measurement program is initiated with the encoder 21 of
(1) Determination of the Value of T
The measurement program determines the mean value of transmission time intervals of a large number of packets (10000 packets, for example). Let T represent the mean value of transmission time intervals. There is a possibility that a deviation takes place in the time intervals between the packets. If the mean value of a large number of packets is taken, the resulting value may be approximately equal to the true packet time interval of T.
(2) Determination of the Value of X
The measurement program causes K packets to be stored, and then transmits the K packets with time intervals of 0. In this case, the interval between the packets is longer than the infinitesimal interval (Inter Packet Gap defined by IEEE802.3), but is still negligibly small in comparison with the time intervals of the stream delivery packets.
K starts with 2, and is incremented by 1 like 3, 4, 5, 6, . . .
If retransmission via TCP is not detected after K packets are transmitted, K+1 packets are then transmitted with time intervals of 0.
The packet count K of the packets transmitted with time intervals of 0 is increased. A retransmission request via TCP is detected. The value resulting from subtracting 2 from K at that moment (K−2) is set to be X.
The delivery server may now transmit X+1 packets concurrently.
In such a case, one leading packet is immediately extracted from the minimum storage capacity queue by a processing unit of the apparatus having the minimum storage capacity queue, and the minimum capacity storage queue is then immediately filled with X packets including the second packet through (X+1)-th packet.
However, no overflow takes place in this case.
If X+2 packets are concurrently transmitted from the delivery server, one last packet, i.e., the (X+2)-th packet fails to enter the queue, causing an overflow. This is a packet loss, leading to a retransmission via TCP.
At the moment a retransmission via TCP is detected, the value resulting from subtracting 2 from K at the time (K−2) becomes X.
(3) Determination of the Value of T1
X+2 packets are then transmitted with packet time intervals of M after the measurement program stores X+2 packets.
The time interval of M is increased in steps of 1 ms, such as to 2 ms, 3 ms, 4 ms, . . .
If a retransmission via TCP is detected after X+2 packets are transmitted with time intervals of M ms, X+2 packets are stored again and the value of M is incremented by 1.
If no retransmission via TCP is detected after the packets are transmitted with the time intervals of M ms, the value of M is set to be M_2.
X+3 packets are then transmitted with packet time intervals of M after the measurement program stores X+3 packets. The value of M starts with M_2. The same process as the process with the X+2 packets is performed. When no transmission via TCP is detected, the value of M is set to be M_3.
X+4 packets are then transmitted with time intervals of M after the measurement program stores X+4 packets. The value of M starts with M_3. The same process as the process with the X+2 packets is performed. When no transmission via TCP is detected, the value of M is set to be M_4.
A similar process is performed with X+n packets (n=5, 6, . . .) stored.
If no increase in M_n is detected several times consecutively (4 times, for example), M_n is set to be T1. For example, if M_100=M_101=M_102=M_103, the value is set to be T1.
A time resolution is 1 ms in this case. In order to determine T1 at an even higher accuracy, the time resolution may be set to be 100 microseconds. T1 is determined with such a time resolution in the same method as described above.
T1 determined in the method described above equals the time of the processing of one packet in the queue on the path. This fact is diagrammatically described below.
The following discussion is based on the premise that the minimum storage capacity queue on the path is empty first, and that no packet is being processed by a processing unit in an apparatus having the minimum storage capacity queue.
In such a case, no packet dwells on the queue because the processing unit has completed the process of the immediately preceding received packet prior to the reception of the next packet. Even if packets of any number are transmitted, the queue is free from overflowing.
The discussion here is based on the premise that the queue is empty. If the packets are transmitted with the transmission time intervals of T1, no overflow takes place as long as at least one empty space is available in the queue.
The discussion here is also based on the premise that the minimum storage capacity queue on the path is empty first, and that no packet is being processed by a processing unit in an apparatus having the minimum storage capacity queue.
The first packet simply passes through the queue, and is then processed by the processing unit in the apparatus.
When the second packet is transmitted and received, the second packet dwells on the queue because the leading packet is still being processed by the processing unit. The processing of the first packet is completed 0.01·T1 after the start of the dwelling of the second packet on the queue. The second packet is then transferred to the processing unit.
When the third packet is received, the second packet is being processed by the processing unit. The third packet thus dwells on the queue. The processing of the second packet is completed 0.02·T1 after the start of the dwelling of the third packet on the queue. The third packet dwelling on the queue is then transferred to the processing unit.
The state in which one packet dwells on the queue continues until a 101st packet is transmitted. Two packets dwell on the queue during the transmission of 102nd through 201st packets. Similarly, three packets dwell on the queue during the transmission of 202nd through 301st packets. Similarly, X packets dwell on the queue during the transmission of (100·(X−1)+2)-th through (100·X+1)-th packets. If 100·X+2 packets are transmitted, the queue overflows. The discussion here is also based on the premise that the queue is empty first. If a packet dwells on the queue, the queue overflows earlier.
If the packets are transmitted with the transmission time intervals of T1 or longer, the minimum storage capacity queue is free from overflowing. If the packets are transmitted with a transmission time interval even slightly shorter than T1, the minimum storage capacity queue suffers from overflowing.
The method (3) determines the time interval of T1 with which the packets stored on the minimum storage capacity queue are successively extracted from the minimum storage capacity.
(4) Displaying and Setting
The parameters T, X, and T1 determined in the methods (1) to (3) are displayed on a display (not illustrated). The measurement program may automatically set the values of T, X, and T1 on the application program, the driver, or the adaptor.
(5) Ending of the Measurement Program
The measurement program ends. The measurement program, after being started, automatically ends if the methods (1)-(4) are complete.
The determination methods of the parameters T, X, and T1 are based on the premise that TCP is used in streaming delivery. The determination methods of the parameters T, X, and T1 with UDP used instead of TCP are described below.
The determination method of T is not different between TCP and UDP, and the method (1) is directly applied.
Although TCP supports the retransmission process, UDP does not support the retransmission process.
Since TCP transmits packets in unicast, one port number corresponds to one client terminal. A multicast transmission is typically performed in UDP, and the port number corresponds to a plurality of client terminals.
In UDP, one of the client terminals corresponding to the port number is provided with a packet loss detection program which detects a packet loss and notifies a transmission source of the detected packet loss. The packet loss detection program detects a packet loss, and returns the detection results to the delivery server. The parameters X and T1 are thus determined in the same manner as in the methods (2) and (3).
The measurement program operates between UDP/TCP and the driver on the delivery server as illustrated in
In this way, the measurement program and the packet loss detection program may operate between UDP/TCP and the driver as illustrated in
All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding 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 have 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-133514 | Jun 2010 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
6085221 | Graf | Jul 2000 | A |
20070019550 | Enomoto | Jan 2007 | A1 |
20070253333 | Fortin et al. | Nov 2007 | A1 |
20090116489 | Hanks | May 2009 | A1 |
20110219287 | Srinivas et al. | Sep 2011 | A1 |
Number | Date | Country |
---|---|---|
2004-186882 | Jul 2004 | JP |
2007-13449 | Jan 2007 | JP |
Number | Date | Country | |
---|---|---|---|
20110305151 A1 | Dec 2011 | US |