Patent Publication Number: US-9906978-B1

Title: Communication terminal

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     The present application claims priority to Japanese Patent Application No. 2016-206684, filed Oct. 21, 2016. The contents of this application are incorporated herein by reference in their entirety. 
     FIELD OF THE INVENTION 
     The present invention relates to a communication terminal capable of communicating via a plurality of different networks. 
     DESCRIPTION OF THE RELATED ART 
     There are increasing expectations for IoT (Internet of Things) services performing automatic recognition, automatic control, telemetering and so on, by providing a communication function not only to information and communication devices such as computers but also to various things. One example of such IoT service is a case where a communication equipment is provided on a mobile object such as an automobile, such that the mobile objects functions as a mobile communication terminal, and the terminal communicates data with a server. Communication carriers provide a wireless communication service of a measured rate utilizing an existing cellular network realizing a wide coverage for use in such forms of IoT services. 
     According to the above-described form of IoT service, a use case is considered in which sensing data and the like are transmitted in real time from the mobile communication terminal via a communication network to the server, and the server performs control based on the analysis result of such data. For example, in a remote control service in which image sequences acquired through an on-vehicle camera are transmitted to the server, and an operator at the server performs control of the vehicle based on the image sequences, the surrounding environments of the vehicle are changed from moment to moment, and the images must be transmitted to the server with a one-way delay in the order of tens of milliseconds. 
     “Multi-route Vehicle-to-vehicle Communication via Cellular Networks”; Shoji Yunoki and three others; The Institute of Electronics, Information and Communication Engineers; Communication Society Meeting Lecture Papers; The Institute of Electronics, Information and Communication Engineers, Aug. 25, 2015, 2015-Report (1), p. 388 (Non-Patent Literature 1) discloses a multi-route communication technique, which is one example of the techniques for satisfying such demands. In the multi-route communication technique, a transmission source device replicates data to be transmitted, and transmits replicated data to a reception destination apparatus using communication systems operated by a plurality of different communication carriers. The reception destination apparatus utilizes the data that has arrived earliest among the received replicated data. As described, it becomes possible to ensure low delay communication in multi-route communication, even in a state where communication quality has been deteriorated, such as a decrease of transmission speed or an increase of communication delay. 
     SUMMARY OF THE INVENTION 
     Problems to be Solved by the Invention 
     Even in a case where the multi-route communication technique taught in Non-Patent Literature 1 is adopted, if an amount of data that the mobile communication terminal generates per unit time exceeds the transmission speed of a certain communication carrier, sensing data will constantly be transmitted in a delayed manner via that communication carrier. Therefore, low delay communication cannot be ensured. 
     Means for Solving the Problems 
     A communication terminal according to one preferred embodiment of the present invention includes a processor and a plurality of communication interfaces. The processor executes an application program generating data, creates a plurality of replicated data of the data, and transmits the respective replicated data via different communication interfaces. The plurality of communication interfaces include a first type of communication interface having a transmission speed equal to or greater than a data generation speed of the processor, and a second type of communication interface having a transmission speed smaller than the data generation speed, wherein the communication interfaces are respectively connected to different networks. 
     The processor observes a data generation speed during execution of the application program, determines, based on a total transmission speed of a second type of communication interface and a generation speed, an amount of the replicated data (N2) to be transmitted using the second type of communication interface, determines a replicated quantity of data (N) based on a number of communication interfaces of a first type (N1) and the amount of replicated data (N2), and generates a number of the replicated data corresponding to the replicated quantity (N). Then, the processor transmits the N1 number of replicated data in parallel using all the communication interfaces of the first type, selects the same number of communication interfaces of the second type as the number of remaining replicated data, and transmits the remaining replicated data using the selected second type of communication interfaces. 
     Effects of the Invention 
     Regarding a mobile communication terminal and a communication system including the mobile communication terminal, a low delay communication can be realized even in a state where there is a communication carrier having a transmission speed lower than a data quantity that the mobile communication terminal generates per unit time. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a configuration diagram of a communication system. 
         FIG. 2  is a physical configuration diagram of a mobile communication terminal. 
         FIG. 3  is a functional block diagram of the mobile communication terminal. 
         FIG. 4  is an example of a communication quality table. 
         FIG. 5  is a processing flowchart of a transmission speed acquisition part. 
         FIG. 6  is a processing flowchart of a replication data count calculation part. 
         FIG. 7  is a view illustrating a pre-condition example. 
         FIG. 8  is a processing flowchart of a replicated data generation part. 
         FIG. 9  is a processing flowchart of a transmission completion time calculation part. 
         FIG. 10  is a processing flowchart of a communication IF selection part. 
         FIG. 11  is an example of a communication data format. 
         FIG. 12  is a calculation example of a data transmission completion time. 
         FIG. 13  is a view illustrating an example of selection of communication IFs. 
         FIG. 14  is a view illustrating an example of selection of communication IFs. 
         FIG. 15  is a physical configuration diagram of a server. 
         FIG. 16  is a functional block diagram of the server. 
         FIG. 17  is a processing flowchart of a replication data count calculation part of a mobile communication terminal according to a second embodiment. 
         FIG. 18  is a processing flowchart of a replicated data generation part of the mobile communication terminal according to the second embodiment. 
         FIG. 19  is a calculation example of a data transmission completion time according to the second embodiment. 
         FIG. 20  is an example of selection of communication IFs according to the second embodiment. 
         FIG. 21  is an example of selection of communication IFs according to the second embodiment. 
         FIG. 22  is a functional block diagram of a mobile communication terminal according to a third embodiment. 
         FIG. 23  is a functional block diagram of a server according to the third embodiment. 
         FIG. 24  is an example of a communication data format according to the third embodiment. 
         FIG. 25  is a processing flowchart of a communication quality measurement part of a server according to the third embodiment. 
         FIG. 26  is a processing flowchart of a transmission speed estimation part of the mobile communication terminal according to the third embodiment. 
     
    
    
     DESCRIPTION OF THE EMBODIMENTS 
     Now, some embodiments will be described with reference to the drawings. 
     Now, a configuration of a communication system according to the respective embodiments illustrated below will be described with reference to  FIG. 1 . According to the communication system of the respective embodiments described below, it is assumed that a mobile communication terminal  100  connects to the Internet  101  via wireless communication systems  130  each including a base station  110  and a carrier network  120  operated by a plurality of different communication carriers ( 1  through  3 ), and data is communicated with a server  102 .  FIG. 1  illustrates an example where there are three communication carriers, but the number of communication carriers can be four or more. In the following description, an i-th communication carrier is referred to as a “communication carrier i” (wherein i is an integer of 1 or greater). The base station  110 , the carrier network  120  and the wireless communication system  130  managed by the communication carrier i are respectively referred to as “base station i”, “carrier network i” and “wireless communication system i”, and denoted by reference numbers “ 110 - i ”, “ 120 - i ” and “ 130 - i”.    
     The mobile communication terminal  100  performs transmission and reception of data with a server  102  and provides an IoT service to a user based on an instruction of the installed application program. The mobile communication terminal  100  can connect to wireless communication systems  130  operated by a plurality of different communication carriers. The mobile communication terminal  100  replicates and transmits a portion or all of the data generated by the installed application program via each wireless communication system  130 . 
     The wireless communication system  130  includes a plurality of base stations  110  that directly communicate with the mobile communication terminal  100  using radio waves, and a carrier network  120  serving as a backbone network that integrates the plurality of base stations  110  and connects them to the Internet  101 . The wireless communication system  130  is realized, for example, by a cellular network. In  FIG. 1 , only one base station  110  is illustrated in each wireless communication system  130 , but actually, a plurality of base stations  110  exist within each wireless communication system  130 . 
     The server  102  performs transmission and reception of data with the mobile communication terminal  100 . Further, in receiving data transmitted from the mobile communication terminal  100 , the server  102  has a function to discard redundant data by referring to a sequence number assigned to the received data. 
     First Embodiment 
     The mobile communication terminal  100  and the server  102  according to the first embodiment of the present invention are described with reference to  FIGS. 2 through 16 . 
       FIG. 2  is a physical configuration diagram of the mobile communication terminal  100 . The mobile communication terminal  100  includes a CPU (processor)  201 , a memory  202 , a GPS (Global Positioning System) module  203  (abbreviated as “GPS  203 ” in  FIG. 2 ), a plurality of communication interface modules (abbreviated as “communication IF module” in  FIG. 2 )  205 , and a bus  204  connecting these components. The GPS module  203  receives a current time transmitted from a satellite, and provides the current time to the CPU  201 . Further, the GPS module  203  calculates a current position of the mobile communication terminal  100  based on signals received from a plurality of satellites, and provides information of the calculated current position to the CPU  201 . 
     The respective communication IF modules  205  are modules capable of connecting with different wireless communication systems  130 , and perform data transmission according to an instruction from the CPU  201 . The plurality of communication IF modules  205  can transmit data simultaneously, that is, in parallel. 
     The memory  202  stores a program performing a data transmission/reception process of the mobile communication terminal  100  (hereinafter referred to as “control program”) and an application program providing an IoT service to the user, and the CPU  201  is configured to execute these programs stored in the memory  202 . 
     In the following description, an i-th (i is a integer of 1 or greater) communication IF module  205  among the plurality of communication IF modules  205  is referred to as a “communication IFi”, and the reference number of communication IFi may be referred to as “ 205 - i ”. The communication IFi is a module through which the mobile communication terminal  100  communicates with the server  102  via the communication carrier i. Further, a plurality of communication IF modules  205  are generally also simply referred to as “communication IF”. 
       FIG. 3  is a function block diagram of the mobile communication terminal  100 . The mobile communication terminal  100  includes an the application part  301 , a data size acquisition part  302 , a data generation speed calculation part  303 , a replication data count calculation part  304 , a replicated data generation part  305 , a transmission completion time calculation part  306 , a communication quality table  307 , a transmission speed acquisition part  309 , a transmission completion time storage part  310 , and a communication IF selection part  311 . 
     In the present embodiment, these function parts are implemented by software (programs). Specifically, the application part  301  is a function part realized by the CPU  201  executing the application program stored in the memory  202 . Further, the CPU  201  executes the control program stored in the memory  202  to operate the mobile communication terminal  100  as an apparatus equipped with the data size acquisition part  302 , the data generation speed calculation part  303 , the replication data count calculation part  304 , the replicated data generation part  305 , the transmission completion time calculation part  306 , the communication quality table  307 , the transmission speed acquisition part  309 , the transmission completion time storage part  310 , and the communication IF selection part  311 . 
     However, these function parts are not necessarily realized by software. A portion or all of the function parts described above can be composed using hardware such as FPGA (Field Programmable Gate Array) or ASIC (Application Specific Integrated Circuit). 
     The application part  301  is a function that generates data to be transmitted to the server  102 , and enters the generated data to the replicated data generation part  305 . 
     The data size acquisition part  302  acquires the size of the data that the application part  301  enters to the replicated data generation part  305 . 
     The data generation speed calculation part  303  observes the data generation speed, which is the speed in which the application part  301  generates the data to be entered to the replicated data generation part  305 , and enters the observed data generation speed to the replication data count calculation part  304  or the transmission completion time calculation part  306 . 
     The replication data count calculation part  304  determines a replication data count based on the data generation speed entered from the data generation speed calculation part  303  and the transmission speeds of the respective communication IFs  205  entered from the transmission speed acquisition part  309 , and enters the determined replication data count to the replicated data generation part  305 . 
     The replicated data generation part  305  receives data from the application part  301 , and receives the replication data count from the replication data count calculation part  304 . The replicated data generation part  305  generates a same number of replica of data received from the application part  301  as the replication data count received from the replication data count calculation part  304 , and enters the generated data, i.e., replicated data, to the communication IF selection part  311 . 
     The transmission completion time calculation part  306  calculates a transmission completion time of a next transmission packet, i.e., next data transmission completion time, based on a previous data transmission completion time acquired from the transmission completion time storage part  310 , the transmission speeds of the respective communication IFs  205  entered from the transmission speed acquisition part  309 , and the data size entered from the data size acquisition part  302 . 
     The communication quality table  307  is a table that stores transmission speeds of the respective communication IFs  205 . Since the transmission speeds of the respective communication IFs  205  may differ according to the position of the mobile communication terminal  100  or the time, and the transmission speeds of the respective communication IFs  205  related to position and time are stored in the communication quality table  307 . 
     The transmission speed acquisition part  309  refers to the communication quality table  307  based on the current time and current position entered from the GPS  203 , and acquires the transmission speeds of the respective communication IFs  205  corresponding to the current time and current position entered from the GPS  203 . 
     The transmission completion time storage part  310  is a storage area storing the previous data transmission completion time entered from the communication IF selection part  311 . 
     The communication IF selection part  311  receives one or more data entered from the replicated data generation part  305 , and counts the number of received data. The communication IF selection part  311  selects, based on the next data transmission completion time of the respective communication IFs  205  entered from the transmission completion time calculation part  306 , the communication IF(s)  205  for transmitting one or more data entered from the replicated data generation part  305 , and transmits data via the communication IF(s)  205  by assigning the same sequence number to the one or more data. 
     &lt;Process Flow of Transmission Speed Acquisition Part  309 &gt; 
       FIG. 4  illustrates an example of the communication quality table  307  that the transmission speed acquisition part  309  refers to. 
     In the present embodiment, the communication quality table  307  is provided for each communication carrier (or each communication IF module  205 ), and a reference number “ 307 - i ” is assigned to the communication quality table  307  corresponding to the communication carrier i. In a state where the transmission speed acquisition part  309  acquires the transmission speed of the communication IFi of a certain time t, it refers to a time  410 - i  of each row included in the communication quality table  307 - i , and specifies a row including the time t within the range of the time  410 - i . Then, the transmission speed acquisition part  309  verifies which area (among areas A, B and C) within the current location  420 - i  column the current location acquired by the GPS  203  is included in. 
     For example, in a state where the current time is two o&#39;clock and the current location is included in “area B”, when acquiring the transmission speed of the communication IF  1 , the transmission speed acquisition part  309  refers to the value stored where the current location  420 - 1  is “area B” in a row where the time  410 - 1  of the communication quality table  307 - 1  is “00 [h]:00 [m]:00.000 [s]-05 [h]:59 [m]:59.999 [s]”, to recognize that the transmission speed of the communication IF  1  is 2000000 (bps). 
       FIG. 5  illustrates a processing flowchart of the transmission speed acquisition part  309 . The transmission speed acquisition part  309  has a storage area (variable) storing information regarding the transmission speeds of the respective communication IFs. In the following description, a storage area storing the transmission speed of the communication IFi is denoted as b i . Unless stated otherwise, the number of the communication IF module  205  of the mobile communication terminal  100  is set to m (m is an integer value greater than 1).  FIGS. 2 and 3  illustrate an example where m=3. 
     Further, “S” assigned before the reference number in the processing flowchart of  FIG. 5  and so on refer to a “step”. Further, among the expressions illustrated in the processing flowcharts of  FIG. 5  and so on, the expression having a left side and a right side joined by “=” means that it is a process in which the value of the right side is substituted to the left side. Further, the expression having the left side and the right side joined by “==” means that the value on the left side and the value on the right side are in an equal state, and if this expression is used in a determination processing (such as S 505  described below), it means that the determination processing is a processing determining whether the value on the left side and the value on the right side are equal or not. 
     At first, the transmission speed acquisition part  309  sets the transmission speed b j  (j=1, 2, . . . m) of the respective communication IFs to an initial value (0) (S 501 ). Next, the transmission speed acquisition part  309  checks whether the current position or the current time has been received from the GPS  203  (S 502 ), advances to S 502  if it has not been received, and advances to S 503  if it has been received. 
     In S 503 , the transmission speed acquisition part  309  prepares a variable i, and initializes i to 0. Next, the transmission speed acquisition part  309  refers to the communication quality table  307  of communication IFi, and acquires the transmission speed (referred to as “c i ”) corresponding to the current position and current time (S 504 ). 
     Thereafter, the transmission speed acquisition part  309  checks whether the acquired transmission speed c i  is equal to b i  (S 505 ), wherein the procedure advances to S 508  if it is equal, and to S 506  if it is not equal. In S 506 , the transmission speed acquisition part  309  substitutes the acquired transmission speed c i  to b i . Then, the transmission speed acquisition part  309  enters b i  to the replication data count calculation part  304  and the transmission completion time calculation part  306  (S 507 ). 
     In S 508 , the transmission speed acquisition part  309  checks whether i is equal to the communication IF count, wherein the procedure advances to S 502  if it is equal, and to S 509  if it is not equal. In S 509 , the transmission speed acquisition part  309  adds 1 to i, and advances to S 504 . 
     For example, we will assume a case where the mobile communication terminal  100  is in area B and the current time acquired from the GPS  203  is 03 [h]:00 [m]:00.000 [s], and the mobile communication terminal  100  has the communication quality tables  307 - 1 ,  307 - 2  and  307 - 3  illustrated in  FIG. 4 . The transmission speeds of the respective communication IFs are; b 1 =2000000, b 2 =500000, and b 3 =600000. Now, the process performed by the transmission speed acquisition part  309  in a state where the mobile communication terminal  100  moves to area A at 03 [h]:00 [m]:00.010 [s] (current time acquired from GPS  203 ) will be described. By executing S 504  after the movement, the transmission speed acquisition part  309  acquires c 1 =1500000, c 2 =900000, and c 3 =800000 from the communication quality table  307 . In this case, b 1 , b 2 , and b 3  are respectively updated to c 1 , c 2 , and c 3  since b 1 ≠c 1 , b 2 ≠c 2 , and b 3 ≠c 3  (S 505  and S 506 ), and the transmission speed acquisition part  309  enters the updated b 1 , b 2 , and b 3  to the replication data count calculation part  304  and the transmission completion time calculation part  306  (S 507 ). 
     &lt;Processing of Replication Data Count Calculation Part&gt; 
     A method for calculating replication data count executed by the replication data count calculation part  304  will be described with reference to  FIG. 6 . The replication data count calculation part  304  starts the processing at a timing in which the data generation speed calculation part  303  observes the data generation speed of the application part  301  and enters the data generation speed to the replication data count calculation part  304 . 
     At first, in S 601 , the replication data count calculation part  304  prepares a variable N int  for storing the replication data count, and a variable V for storing a bundle circuit total transmission speed, and initializes N int  and V (by substituting 0). In the present specification, a “bundle circuit” is used as a term referring to a communication IF (or a communication path formed between the mobile communication terminal  100  and the server  102  by the communication IF) having a transmission speed smaller than the data generation speed of the application part  301 . The bundle circuit total transmission speed is a total sum of the transmission speeds of all bundle circuits. 
     In S 602 , the replication data count calculation part  304  acquires the data generation speed of the application part  301  (referred to as g [bps]), and advances to S 603 . In S 603 , the replication data count calculation part  304  prepares a variable i, substitutes initial value (1) to i, and advances to S 604 . 
     In S 604 , the replication data count calculation part  304  acquires the transmission speed b i  [bps] of the communication IFi from the transmission speed acquisition part  309 , and advances to S 605 . In S 605 , the replication data count calculation part  304  compares b i  and g to determine whether b i ≧g, wherein the procedure advances to S 606  if b i ≧g, and to S 607  if not b i ≧g. 
     In S 606 , the replication data count calculation part  304  adds 1 to the replication data count N int , and advances to S 608 . In S 607 , the replication data count calculation part  304  adds b i  to the bundle circuit total transmission speed V, and advances to S 608 . 
     In S 608 , the replication data count calculation part  304  confirms whether i is equal to the communication IF count, wherein the procedure advances to S 609  if it is not equal, and to S 610  if it is equal. In S 609 , the replication data count calculation part  304  adds 1 to i, and advances to S 605 . 
     In S 610 , the replication data count calculation part  304  adds a quotient (V÷g) having divided the bundle circuit total transmission speed by the data generation speed to the replication data count N int , and advances to S 611 . The value (V÷g) that the replication data count calculation part  304  adds to N int  in S 610  is an integer. That is, if V÷g includes a decimal part, the decimal part is rounded off, and only the integer part of V÷g is added. In S 611 , the replication data count calculation part  304  enters the calculated replication data count N int  to the replicated data generation part  305 , and ends the process. 
     &lt;Specific Example of Processing of Replication Data Count Calculation Part&gt; 
     A specific example of a method for calculating a replication data count by the replication data count calculation part  304  will be described with reference to the example illustrated in  FIG. 7 . In the present embodiment, as illustrated in  FIG. 7 , it is assumed that the application part  301  generates data having a predetermined size (size denoted in data size) at a certain interval (interval denoted in packet generation interval). 
     The flow of processing performed by the replication data count calculation part  304  to compute the replication data count N int  will be described when, as illustrated in  FIG. 7 , the data generation speed g of the application part  301  is 1000000 [bps], the number of communication IFs is three, and the transmission speeds of the respective communication IFs determined by the transmission speed acquisition part  309  are b 1 =1500000 [bps], b 2 =900000 [bps], and b 3 =800000 [bps]. 
     At first, a process performed in S 604  through S 607  of a state where the variable i is 1 will be described. In S 605 , the replication data count calculation part  304  compares b 1  and g, and since b 1 ≧g, the replication data count calculation part  304  adds 1 to the replication data count N int  (S 606 ). Therefore, N int  is set to 1. 
     Next, in a state where the variable i is 2, in S 605 , the replication data count calculation part  304  compares b 2  and g, and since b 2  is not greater than or equal to g, the replication data count calculation part  304  adds b 2  to the bundle circuit total transmission speed V (S 607 ). Therefore, V is set to 900000. 
     Next, in a state where the variable i is 3, in S 605 , the replication data count calculation part  304  compares b 3  and g, and since b 3  is not greater than or equal to g, the replication data count calculation part  304  adds b 3  to the bundle circuit total transmission speed V, and therefore, V is 1700000. 
     In a state where the process up to S 607  has been completed for all communication IFs, that is, in a state where i becomes equal to the communication IF count in S 608 , the replication data count calculation part  304  executes S 610  next. In S 610 , V÷g (specifically, a value having rounded off the decimal part from the calculation result of 1700000÷1000000, that is, 1) is added to the replication data count N int , and N int  is set to 2. That is, V÷g represents the number of the replicated data to be transmitted using the bundle circuit (in this example, communication IF  2  and communication IF  3 ). 
     The mobile communication terminal  100  according to the present embodiment determines the replication data count by performing the process described above, such that the number of replicated data to be transmitted via the non-bundle circuit, that is, communication IF having a transmission speed equal to or greater than the data generation speed, is equal to the number of non-bundle circuits, and the number of replicated data to be transmitted via the bundle circuit becomes smaller than the number of bundle circuits. For example, in the example illustrated above, two IFs, the communication IF 2  and the communication IF 3 , are bundle circuits, such that the number of replicated data to be transmitted via communication IF 2  or communication IF 3  is limited so as not to exceed 2. 
     If replicated data is transmitted using all bundle circuits, transmission of data will always be delayed, since the data quantity per unit time transmitted through the bundle circuits exceeds the total bandwidth of all bundle circuits. Further, the delay is increased as data is continued to be transmitted. The mobile communication terminal  100  according to the present embodiment determines the replication data count by the processing performed above, such that the amount of replicated data per unit time transmitted via the bundle circuits is limited so as not to exceed the bandwidth of all bundle circuits, and as a result, the delay regarding data transmission can be suppressed. 
     &lt;Processing of Replicated Data Generation Part&gt; 
     A replicated data generation processing of the replicated data generation part  305  will be described with reference to  FIG. 8 . In the following description, the replication data count computed by the replication data count calculation part  304  is denoted as N int . As described earlier, in a state where the replication data count calculation part  304  computes a replication data count N int , N int  is entered to the replicated data generation part  305 . 
     In S 801 , the replicated data generation part  305  prepares a variable n int . The variable n int  represents the number of replicated data to be generated by the replicated data generation part  305 . Further, in S 801 , the replicated data generation part  305  initializes the replication data count n int  by 1, and advances to S 802 . 
     In S 802 , the replicated data generation part  305  checks whether a replication data count N int  has been received from the replication data count calculation part  304 , advances to S 803  if it has been received, and advances to S 804  if it has not been received. In S 803 , the replicated data generation part  305  updates the value of n int  to N int  received from the replication data count calculation part  304 , and advances to S 804 . 
     In S 804 , the replicated data generation part  305  checks whether data has been received from the application part  301 , advances to S 805  if it has been received, and advances to S 802  if it has not been received. In S 805 , the replicated data generation part  305  generates the same number of replicated data as n int , that is, replica of data received from the application part  301 . Thereafter, the replicated data generation part  305  enters the relevant replicated data to the communication IF selection part  311 , and returns to S 802  again. 
     &lt;Processing of Transmission Completion Time Calculation Part&gt; 
     The processing of the transmission completion time calculation part  306  will be described with reference to  FIG. 9 . The transmission completion time calculation part  306  is executed at a timing in which data is generated and output by the application part  301 , the data size is entered from the data size acquisition part  302 , and the data generation speed of the application part  301  is entered from the data generation speed calculation part  303 . Each time data is output from the application part  301 , the transmission completion time calculation part  306  computes (estimates) a data transmission completion time of a case when the (replica of) data is transmitted via the communication IF  205 , for each communication IF  205 . 
     In the following description, a time computed by the transmission completion time calculation part  306  through execution of the processing of  FIG. 9  is called a “next data transmission completion time”. Further, the transmission completion time calculation part  306  has a variable for retaining the next data transmission completion time. In the following description, the variable retaining the next data transmission completion time computed by the transmission completion time calculation part  306  for communication IFi (i is an integer of 1 or greater) is denoted as t i   _   next . 
     The expression of time used in the present embodiment, such as the expression of time information stored in variable t i   _   next , uses an elapsed time (seconds) from a certain reference time, such as from 0 o&#39;clock 0 min 0 sec on Jan. 1, 2016. However, there is another meaning in a state where 0 is stored in the variable t i   _   next . The details will be described later. 
     In a state where the transmission completion time calculation part  306  computes the next data transmission completion time, the time (next data transmission completion time) which was computed the last time may be used. In the following description, a time (next data transmission completion time) computed by the transmission completion time calculation part  306  while executing the processing of  FIG. 9  the last time is called a “previous data transmission completion time”, and the previous data transmission completion time computed for communication IFi is denoted as t i   _   before . Further, the previous data transmission completion time t i   _   before  is stored in the transmission completion time storage part  310  by the communication IF selection part  311  described later. 
     In S 901 , the transmission completion time calculation part  306  acquires the previous data transmission completion time t j   _   before  (j=1, 2, . . . m) of the respective communication IFs from the transmission completion time storage part  310 , and advances to S 902 . In S 902 , the transmission completion time calculation part  306  acquires the data generation speed g [bps] of the application part  301  from the data generation speed calculation part  303 , and advances to S 903 . In S 903 , the transmission completion time calculation part  306  acquires the data size d [bit] entered from the data size acquisition part  302 , and advances to S 904 . In S 904 , the transmission completion time calculation part  306  prepares a variable i, initializes i by 1, and advances to S 905 . 
     In S 905 , the transmission completion time calculation part  306  compares b i  and g, advances to S 906  in a state where b i &lt;g, and advances to S 907  if b i ≧g. In S 906 , the transmission completion time calculation part  306  checks whether t i   _   before  is earlier than the current time, that is, whether “t i   _   before &lt;current time” is satisfied. In a state where t i   _   before  is earlier than the current time, S 908  is performed next, and in a state where t i   _   before  is not earlier than the current time, S 909  is performed next. 
     In S 907 , the transmission completion time calculation part  306  stores 0 in t i   _   next , and advances to S 910 . When S 907  is executed, the transmission speed of the communication IFi is faster than the data generation speed (since b i ≧g), hence data transmission is completed before the data to be transmitted next from the application part  301  is passed to the communication IFi. In that case, the transmission completion time calculation part  306  sets t i   _   next  to 0. 
     In S 908 , the transmission completion time calculation part  306  substitutes (current time+d/b i ) in t i   _   next , and advances to S 910 . When S 908  is executed, the data transmission processing performed the last time is already completed. This is because S 908  is executed when “t i   _   before &lt;current time” is satisfied, that is, in a state where the determination result of S 906  is positive. Therefore, in this case, the transmission completion time calculation part  306  computes the next data transmission completion time by adding the time required to transfer size d [bit] data (that is, d/b i ) to the current time. 
     In S 909 , the transmission completion time calculation part  306  substitutes (t i   _   before +d/b i ) in t i   _   next , and advances to S 910 . When S 909  is executed, the previous data transmission processing is not completed (since S 909  is executed when t i   _   before ≧current time), and the data transmission to be performed thereafter will be started after the previous data transmission processing is completed. Therefore, the next data transmission completion time is estimated to be (t i   _   before +d/b i ), and the transmission completion time calculation part  306  substitutes (t i   _   before +d/b i ) in t i   _   next . 
     In S 910 , the transmission completion time calculation part  306  checks whether “i==communication IF count”, advances to S 912  if i is equal to the communication IF count, and advances to S 911  if not. In S 911 , 1 is added to i, and the procedure advances to S 905 . In S 912 , the next data transmission completion time t j   _   next  (j=1, 2, . . . m) of the respective communication IFs are entered to the communication IF selection part  311 , and the process is ended. 
     &lt;Processing of Communication IF Selection Part&gt; 
     The processing of the communication IF selection part  311  will be described with reference to  FIG. 10 . 
     In S 1000 , the communication IF selection part  311  prepares a variable k, and k is initialized by 1. Thereafter, S 1001  is performed. 
     In S 1001 , the communication IF selection part  311  checks whether the replicated data has been received from the replicated data generation part  305 , advances to S 1002  if it has been received, and advances to S 1001  if not. In S 1002 , the communication IF selection part  311  counts the replication data count, and advances to S 1003 . In the following description, the replication data count being counted is referred to as c. 
     In S 1003 , the communication IF selection part  311  acquires the next data transmission completion time t i   _   next  (i=1, 2, . . . m) of the respective communication IFs from the transmission completion time calculation part  306 , sorts the t i   _   next  in ascending order, and advances to S 1004 . In S 1004 , the communication IF selection part  311  prepares a variable j, initializes j by 1, and advances to S 1005 . In S 1005 , the communication IF selection part  311  compares the next data transmission completion time of the respective communication IFs, specifies the communication IF having the j-th smallest next data transmission completion time, and advances to S 1006 . In the following description, an example is illustrated of a case where the communication IF specified in S 1005  is specified as communication IF i (wherein i is an integer of 1 or greater and m or smaller). 
     In S 1006 , the communication IF selection part  311  assigns a sequence number k to the replicated data, and instructs the communication IFi specified in S 1005  to transmit the replicated data. Thereafter, the communication IF selection part  311  advances to S 1007  without waiting for completion of data transmission of the communication IFi. In S 1007 , the communication IF selection part  311  updates the value of the previous data transmission completion time t i   _   before  stored in the transmission completion time storage part  310  to t i   _   next , and advances to S 1008 . 
     In S 1008 , the communication IF selection part  311  checks whether j==c, advances to S 1010  if j==c, and advances to S 1009  if not. In S 1009 , the communication IF selection part  311  adds 1 to j, and advances to S 1005 . In S 1010 , the communication IF selection part  311  adds 1 to k, and advances to S 1001 . 
     The communication IF selection part  311  does not necessarily have to execute the respective steps in the order described above. For example, the communication IF selection part  311  repeats selection of communication IF used for data transmission (S 1005 ) and update processing of previous data transmission completion time t i   _   before  (S 1007 ) for c number of times (the same number as the replication data count), and after they are completed, the selected respective communication IFs can execute data transmission (S 1006 ) in parallel. 
     As another embodiment, the process for assigning a sequence number to the replicated data can be performed by other function parts, such as the replicated data generation part  305 , instead of S 1006  (the communication IF selection part  311 ). 
     &lt;Format of Communication Data&gt; 
     Now, a format of communication data that the communication IF selection part  311  transits via the communication IF  205  will be illustrated in  FIG. 11 . The communication data is composed of a header part  1101  and a data part  1102 . The header part  1101  stores a sequence number  1103 . The sequence number  1103  is assigned in S 1006  of  FIG. 10 . The data part  1102  stores an application data  1104 . The application data  1104  is data generated by the application part  301 . 
     &lt;Specific Example of Processing of Transmission Completion Time Calculation Part and Processing of Communication IF Selection Part&gt; 
     A calculation example of data transmission completion time and an example of selection of communication IF will be described with reference to  FIGS. 7, 12, 13, and 14 .  FIG. 7  illustrates a pre-condition for illustrating the example. As pre-condition, as illustrated in  FIG. 7 , the data generation speed g of the data generated by the application part  301  is set to 1000000 [bps], the data size d is set to 12000 [bit], and the data generation interval is set to 0.012 [s]. The number of communication IFs  205  is set to 3, and the transmission speed b 1 , b 2 , and b 3  of the respective communication IFs  205  determined in the transmission speed acquisition part  309  are respectively set to b 1 =1500000 [bps], b 2 =900000 [bps], and b 3 =800000 [bps]. 
     The following description illustrates an example in which a data having a data size of d=12000 [bit] is entered per data generation interval of 0.012 [s] starting from 0 [h]:0 [m]:1.000 [s] to the replicated data generation part  305 . Further, it is assumed that there is no data whose transmission is not completed at time 0 [h]:0 [m]:1.000 [s]. The time in the following example is expressed as the elapsed time from 0 [h]:0 [m]:0.000 [s]. In other words, the values stored in t i   _   next  and t i   _   before  are the elapsed time from 0 [h]:0 [m]:0.000 [s]. However, in a state where 0 is stored in t i   _   next , it does not mean that t i   _   next  (next data transmission completion time) is 0 [h]:0 [m]:0.000 [s]. In this case, as described earlier, it means that the previous data transmission processing has been completed. 
     The calculation result of the replication data count according to the present pre-condition is two, as described in the &lt;specific example of processing flow of calculation of replication data count&gt;. 
       FIG. 12  illustrates a calculation example of data transmission completion time. 
     Reference numbers  1210 ,  1220 ,  1230 , and  1240  respectively denote calculation results of the next data transmission completion time computed by the transmission completion time calculation part  306  at 0 [h]:0 [m]:1.000 [s], 0:0:1.012, 0:0:1.024, and 0:0:1.036. For example, column  1214  shows the next data transmission completion time computed by the transmission completion time calculation part  306  at 0:0:1.000, and column  1213  shows the time (previous data transmission completion time) stored in the transmission completion time storage part  310  at that point of time. Further, among the values stored in column  1214  (or columns  1224 ,  1234 , and  1244 ), the underlined values represent the next data transmission completion time of the communication IF that the communication IF selection part  311  has selected among the bundle circuits for transmitting the replicated data. 
       FIGS. 13 and 14  illustrate the result of having the communication IF selection part  311  select a communication IF  205  for transmitting the replicated data and transmit the same based on the next data transmission completion time. Reference numbers  1310 ,  1320 ,  1410 , and  1420  respectively indicate the result of having transmitted the replicated data supplied at 0:0:1.000, 0:0:1.012, 0:0:1.024, and 0:0:1.036. 
     The processing performed by the transmission completion time calculation part  306  in a state where the current time is 0 [h]:0 [m]:1.000 [s] will be described ( 1210 ). The transmission completion time calculation part  306  executes S 905  through S 909  for communication IF  1 , communication IF  2 , and communication IF  3 .
         As for b 1 , since b 1 &lt;g is not satisfied (S 905 ), the transmission completion time calculation part  306  sets the next data transmission completion time t 1   _   next  to 0 (S 907 ).   As for b 2 , since b 2 &lt;g is satisfied (S 905 ) and t 2   _   before  is smaller than the current time (0:0:1.000), the transmission completion time calculation part  306  executes S 908 . Thereby, the next data transmission completion time t 2   _   next  is set to 1.000+12000/900000=1.0133.   As for b 3 , since b 3 &lt;g is satisfied (S 905 ) and t 3   _   before  is smaller than the current time, the transmission completion time calculation part  306  executes S 908 . Thereby, the next data transmission completion time t 3   _   next  is set to 1.000+12000/600000=1.020.       

     Next, we will describe the processing of the communication IF selection part  311  executed after the processing of the transmission completion time calculation part  306 .
         Since two replicated data are transmitted from the replicated data generation part  305 , the replication data count c is determined as 2 (S 1002 ). Since the replication data count c is 2, the process for selecting the communication IFs and sending data using the selected communication IFs (S 1005  through S 1007 ) is executed twice by the communication IF selection part  311 .   At first, in S 1003 , the communication IF selection part  311  acquires the next data transmission completion time t i   _   next  (i=1, 2, 3) of the respective communication IFs from the transmission completion time calculation part  306 , and sorts the t i   _   next  in ascending order. As a result, they are sorted in the order of t 1   _   next , t 2   _   next , and t 3   _   next .   In a state where S 1005  is performed for the first time, the communication IF selection part  311  selects the communication IF having the smallest transmission completion time t i   _   next  (i=1, 2, 3) (communication IF  1 ). Next, the communication IF selection part  311  updates t 1   _   before  of the transmission completion time storage part  310  to t 1   _   next  (=0) (S 1007 ).   In a state where S 1005  is performed for the second time, communication IF  2  having the second smallest transmission completion time t i   _   next  (i=1, 2, 3) is selected. In S 1007 , t 2   _   before  of the transmission completion time storage part  310  is updated to t 2   _   next  (=1.0133).       

     The chart illustrated on the upper row of  1310  of  FIG. 13  indicates the next data transmission completion time of each communication IF calculated by the above-described steps, and the chart illustrated on the lower row indicates the result of transmitting data to the communication IF (communication IF  1  and communication IF  2 ) that the communication IF selection part  311  selects based on the next data transmission completion time. 
     The processing performed by the transmission completion time calculation part in a state where the current time is 0 [h]:0 [m]:1.012 [s] will be described ( 1220 ).
         As for b 1 , since b 1 &lt;g is not satisfied (S 905 ), the transmission completion time calculation part  306  sets the next data transmission completion time t 1   _   next  to 0 (S 907 ).   As for b 2 , since b 2 &lt;g is satisfied (S 905 ) and t 2   _   before  is greater than the current time (0:0:1.012), the transmission completion time calculation part  306  sets the next data transmission completion time t 2   _   next  to 1.013+12000/900000=1.0266 (S 909 ).   As for b 3 , since b 3 &lt;g is satisfied (S 905 ) and t 3   _   before  is smaller than the current time, the transmission completion time calculation part  306  sets the next data transmission completion time t 3   _   next  to 1.012+12000/800000=1.027 (S 908 ).       

     Next, we will describe the processing of the communication IF selection part  311  executed after the processing of the transmission completion time calculation part  306 .
         Similar to the aforementioned example, the replication data count c is 2 (S 1002 ).   The communication IF selection part  311  acquires the next data transmission completion time t i   _   next  (i=1, 2, 3) of the respective communication IFs from the transmission completion time calculation part  306 , and sorts the t i   _   next  in ascending order. As a result, they are sorted in the order of t 1   _   next , t 2   _   next , and t 3   _   next  (S 1003 ).   In a state where S 1005  is performed for the first time, the communication IF selection part  311  selects the communication IF  1  having the smallest transmission completion time t i   _   next  (i=1, 2, 3). Next, the communication IF selection part  311  updates t 1   _   before  of the transmission completion time storage part  310  to t 1   _   next  (=0).   In a state where S 1005  is performed for the second time, communication IF  2  having the second smallest transmission completion time t i   _   next  (i=1, 2, 3) is selected (S 1005 ), and t 2   _   before  of the transmission completion time storage part  310  is updated to t 2   _   next  (=1.0266) (S 1007 ).       

     The chart illustrated on the upper row of  1320  of  FIG. 13  indicates the next data transmission completion time of each communication IF calculated in the above-described steps, and the chart illustrated on the lower row indicates the result of transmitting data to the communication IF (communication IF  1  and communication IF  2 ) that the communication IF selection part  311  selects based on the next data transmission completion time. 
     The processing performed by the transmission completion time calculation part  306  in a state where the current time is 0 [h]:0 [m]:1.024 [s] will be described ( 1220 ).
         As for b 1 , since b 1 &lt;g is not satisfied (S 905 ), the next data transmission completion time t 1   _   next  is set to 0 (S 907 ).   As for b 2 , since b 2 &lt;g is satisfied (S 905 ) and t 2   _   before  is greater than the current time (0:0:1.024), the transmission completion time calculation part  306  sets the next data transmission completion time t 2   _   next  to 1.0266+12000/900000=1.0399 (S 909 ).   As for b 3 , since b 3 &lt;g is satisfied (S 905 ) and t 3   _   before  is smaller than the current time, the transmission completion time calculation part  306  sets the next data transmission completion time t 3   _   next  to 1.024+12000/800000=1.039 (S 908 ).       

     Next, we will describe the processing of the communication IF selection part  311 .
         Similar to the aforementioned example, the replication data count c is 2 (S 1002 ).   The communication IF selection part  311  acquires the next data transmission completion time t i   _   next  (i=1, 2, 3) of the respective communication IFs from the transmission completion time calculation part  306 , and sorts the t i   _   next  in ascending order, such that they are sorted in the order of t 1   _   next , t 3   _   next , and t 2   _   next  (S 1003 ).   In S 1005 , the communication IF selection part  311  selects the communication IF  1  having the smallest transmission completion time t i   _   next  (i=1, 2, 3). Next, the communication IF selection part  311  updates t i   _   before  of the transmission completion time storage part  310  to t i   _   next  (=0) (S 1007 ).   In a state where S 1005  is performed next, communication IF  3  having the second smallest transmission completion time t i   _   next  (i=1, 2, 3) is selected, and t i   _   before  Of the transmission completion time storage part  310  is updated to t 3   _   next  (=1.039) (S 1007 ).       

     The chart illustrated on the upper row of  1410  of  FIG. 14  shows the next data transmission completion time of each communication IF calculated in the above-described steps, and the chart illustrated on the lower row indicates the result of transmitting data to the communication IF (communication IF  1  and communication IF  3 ) selected by the communication IF selection part  311  based on the next data transmission completion time. 
     The processing performed by the transmission completion time calculation part in a state where the current time is 0 [h]:0 [m]:1.036 [s] will be described ( 1220 ).
         As for b 1 , since b 1 &lt;g is not satisfied (S 905 ), the transmission completion time calculation part  306  sets the next data transmission completion time t 1   _   next  to 0 (S 907 ).   As for b 2 , since b 2 &lt;g is satisfied (S 905 ) and t 2   _   before  is smaller than the current time (0:0:1.036), the transmission completion time calculation part  306  sets the next data transmission completion time t 2   _   next  to 1.036+12000/900000=1.0499 (S 908 ).   As for b 3 , since b 3 &lt;g is satisfied (S 905 ) and t 3   _   before  is greater than the current time (0:0:1.036), the transmission completion time calculation part  306  sets the next data transmission completion time t 3   _   next  to 1.039+12000/800000=1.054 (S 909 ).       

     Next, we will describe the processing of the communication IF selection part  311 .
         Similar to the aforementioned example, the replication data count c is 2 (S 1002 ).   The communication IF selection part  311  acquires the next data transmission completion time t i   _   next  (i=1, 2, 3) of the respective communication IFs from the transmission completion time calculation part, and sorts the t i   _   next  in ascending order. As a result, they are sorted in the order of t 1   _   next , t 2   _   next , and t 3   _   next  (S 1003 ).   In S 1005 , the communication IF selection part  311  selects the communication IF  1  having the smallest transmission completion time t i   _   next  (i=1, 2, 3). In S 1007 , the communication IF selection part  311  updates t i   _   before  of the transmission completion time storage part  310  to t i   _   next  (=0) (S 1007 ).   In a state where S 1005  is performed for the second time, the communication IF selection part  311  selects communication IF  2  having the second smallest transmission completion time t i   _   next  (i=1, 2, 3), and updates t i   _   before  of the transmission completion time storage part  310  to t 2   _   next  (=1.0499) (S 1007 ).       

     The chart illustrated on the upper row of  1420  of  FIG. 14  indicates the next data transmission completion time of each communication IF calculated in the above-described steps, and the chart illustrated on the lower row indicates the result of transmitting data to the communication IF that the communication IF selection part  311  selects based on the next data transmission completion time. 
     As described with reference to  FIGS. 9 and 10 , the mobile communication terminal  100  of the present embodiment computes (estimates) the data transmission completion time (the aforementioned “next data transmission completion time”) in a case when data transmission is performed from the respective communication IFs, and based on the computed data transmission completion time of the respective communication IFs, selects the communication IFs to be used for data transmission. Specifically, the communication IF having the earliest data transmission completion time is selected with priority. Thereby, data communication delay can be suppressed to a minimum. 
     Lastly, we will describe the configuration of the server  102  in the communication system according to the present embodiment.  FIG. 15  is a physical configuration diagram of the server  102 . The server  102  is composed of a CPU  1501 , a memory  1502 , a communication IF module  1503  (hereinafter abbreviated as “communication IF  1503 ”), and a bus  1504  connecting the components. 
       FIG. 16  is a functional block diagram of the server  102 . 
     The server  102  is configured of an application part  1601 , a first arrived data selection part  1602 , and a communication IF  1603 . The application part  1601  and the first arrived data selection part  1602  are function parts which are realized by the CPU  1501  executing programs stored in the memory  1502 . 
     The application part  1601  utilizes the data transmitted from the mobile communication terminal  100 , and executes various processes such as analysis. 
     The first arrived data selection part  1602  is a function part in which the data received via the communication IF  1503  is passed to the application part  1601 . As described earlier, a plurality of replicated data to which are assigned the same sequence number are transmitted form the mobile communication terminal  100  to the server  102 . The first arrived data selection part  1602  checks the sequence number of the received communication data, and if the data having that sequence number is received for the first time, the data is entered to the application part  1601 . If the data having the same sequence number is received for the second time or later, the first arrived data selection part  1602  discards that data. Since such processing is performed by the first arrived data selection part  1602 , the application part  1601  only receives the first arrived data among the plurality of replicated data having the same sequence number assigned. 
     According to the communication system of the present embodiment, a low-delay, high-quality communication can be realized even in a state where a transmission speed of a certain communication carrier is exceeded. 
     Second Embodiment 
     Next, a communication system according to a second embodiment will be described. In the first embodiment, the replication data count output from the replication data count calculation part  304  was an integer (with the decimal part rounded off). The second embodiment describes a method for increasing the replication data count and minimizing delay, by allowing the replication data count to be of values not restricted to an integer. 
     The mobile communication terminal  100  according to the second embodiment differs from the first embodiment in the method for calculating the replication data count of the replication data count calculation part  304  and the method for generating the replicated data of the replicated data generation part  305 . 
     &lt;Processing of Replication Data Count Calculation Part&gt; 
     The method for calculating the replication data count by the replication data count calculation part  304  will be described with reference to  FIG. 17 . Only the portion that differs from  FIG. 6  of the first embodiment will be described. The processing of the replication data count calculation part  304  performed in the second embodiment is the same as the processing described in the first embodiment, other than the S 610  described in the first embodiment being replaced with S 1610 . 
     In S 1610 , the replication data count is updated by (replication data count+bundle circuit total transmission speed/data generation speed). Further, “bundle circuit total transmission speed/data generation speed” refers to a value having divided the bundle circuit total transmission speed by the data generation speed, and this value includes decimal parts. 
     &lt;Specific Example of Processing of Replication Data Count Calculation Part&gt; 
     A specific example of the method for calculating the replication data count by the replication data count calculation part  304  according to the second embodiment will be described with reference to  FIG. 17 . The data generation speed g of the application part  301  and the transmission speed b i  (1≦i≦3) of the respective communication IFs  205  determined by the transmission speed acquisition part  309  are assumed to be set to conditions illustrated in  FIG. 7 . That is, the data generation speed g of the application part  301  is set to 1000000 [bps], the transmission speed b 1  is set to 1500000 [bps], b 2  is set to 900000 [bps], and b 3  is set to 800000 [bps]. In the following description, the replication data count computed by the replication data count calculation part  304  in the second embodiment is denoted as N dec . 
     In a state where the replication data count calculation part  304  executes S 604  through S 607  for the first time, since b 1  satisfies the relationship of b 1 ≧g, 1 is added to the replication data count N dec , and the replication data count N int  is set to 1 (S 604 ,  605  and  606 ). In a state where the replication data count calculation part  304  executes S 604  through S 607  for the second time, b 2  does not satisfy the relationship of b 2 ≧g, such that b 2  is added to the bundle circuit total transmission speed V, and the bundle circuit total transmission speed V is set to 0.9 [Mbps] (S 604 ,  605 , and  607 ). 
     In a state where S 604  through S 607  are executed by the replication data count calculation part  304  for the third time, since b 3  does not satisfy the relationship of b 3 ≧g, b 3  is added to the bundle circuit total transmission speed V. As a result, the bundle circuit total transmission speed V is set to 1.5 [Mbps] (S 604 ,  605 ,  607 ). 
     Thereafter, the replication data count calculation part  304  executes S 1610 . As a result of S 1610 , the replication data count N dec  is set to 1+(1.7/1.0)=2.7. 
     &lt;Processing of Replicated Data Generation Part&gt; 
     The replicated data generation processing of the replicated data generation part  305  according to the second embodiment will be described with reference to  FIG. 18 . 
     In S 1801 , the replicated data generation part  305  prepares a variable n dec . The variable n dec  represents the number of replicated data to be generated by the replicated data generation part  305 . In S 1801 , the replicated data generation part  305  initializes the replication data count n dec  by 1, and advances to S 1802 . 
     In S 1802 , the replicated data generation part  305  checks whether the replication data count N dec  has been received from the replication data count calculation part  304 , advances to S 1803  if it has been received, and advances to S 1804  if not. In S 1803 , the replicated data generation part  305  updates n dec  to N dec , and advances to S 1804 . 
     In S 1804 , the replicated data generation part  305  checks whether data has been received from the application part  301 , advances to S 1805  if data has been received, and advances to S 1802  if it has not been received. In S 1805 , the replicated data generation part  305  substitutes the integer part of n dec  to variable x, substitutes the decimal part to variable y, and advances to S 1806 . In S 1806 , the replicated data generation part  305  generates a uniform random number between 0 and 1, and advances to S 1807 . In the following description, the value generated in S 1806  is denoted as z. Since the value generated here is a uniform random number between 0 and 1, every time S 1806  is executed, a real number from 0 to 1 is generated with the same probability. 
     In S 1807 , the replicated data generation part  305  checks whether z≦y is satisfied, advances to S 1809  if it is satisfied, and advances to S 1808  if it is not satisfied. In S 1808 , the replicated data generation part  305  generates x number of replicated data (replica of data received from the application part  301 ), enters the same to the communication IF selection part  311 , and advances to S 1802 . Meanwhile, in a state where S 1809  is executed, the replicated data generation part  305  generates (x+1) number of replicated data in S 1809 , enters the same to the communication IF selection part  311 , and advances to S 1802 . 
     According to the above processing, even in a state where the replication data count includes a decimal fraction, an expected value (mean) of the number of the replicated data which are actually generated can correspond to n dec . 
     &lt;Specific Example of Processing of Replicated Data Generation Part&gt; 
     In the example of  FIG. 7 , as described in the &lt;specific example of processing of replication data count calculation part&gt;, the replication data count n dec  computed by the replication data count calculation part  304  becomes 2.7. Further, in a state where the replicated data generation part  305  is executed, the integer part x of n dec  is determined as 2, and the decimal part y is determined as 0.7 (S 1805 ). If the value generated in S 1806  using the uniform random number between 0 and 1 is 0.3, the replicated data generation part  305  generates (2+1) number of replicated data, and enters the same to the communication IF selection part  311  (S 1809 ). 
     Similar to the &lt;specific example of processing of transmission completion time calculation part and processing of communication IF selection part&gt; of the first embodiment, the specific example of the transmission processing of the second embodiment will be described with reference to the example of  FIG. 7 . 
     As illustrated in  FIG. 7 , regarding the data generated by the application part  301 , the data generation speed g is set to 1000000 [bps], the data size d is set to 12000 [bit], and the data generation interval is set to 0.012 [s], and the transmission speed b 1  is set to 1500000 [bps], the transmission speed b 2  is set to 900000 [bps], and the transmission speed b 3  is set to 600000 [bps]. 
     Now, in the generation processing of the uniform random number between 0 and 1 performed in S 1806 , it is assumed that 0.3 is generated at time 0 [h]:0 [m]:1.000 [s], 0.8 at time 0:0:1.012, 0.6 at time 0:0:1.024, and 0.9 at time 0:0:1.036. In that case, three replicated data are generated at time 0:0:1.000 and 0:0:1.024 (S 1809 ), and two replicated data are generated at time 0:0:1.012 and 0:0:1.036 (S 1808 ). 
     The calculation result of the next data transmission completion time at each of the times 0:0:1.000, 0:0:1.012, 0:0:1.024, and 0:0:1.036 are respectively shown in  1910 ,  1920 ,  1930 , and  1940  of  FIG. 19 . Further, the result of actually transmitting data to each communication IF at 0:0:1.000, 0:0:1.012, 0:0:1.024, and 0:0:1.036 are respectively shown in  2010  and  2020  of  FIGS. 20 and 2110 and 2120  of  FIG. 21 . 
     According to the communication system of the second embodiment, even in a state where the transmission speed of a certain communication carrier has been exceeded, replicated data greater than the communication system of the first embodiment can be transmitted, and low delay communication can be realized. 
     Third Embodiment 
     In a third embodiment, a method is described for minimizing delay, even in a case where the mobile communication terminal  100  cannot accurately recognize the transmission speed. 
       FIG. 22  illustrates a functional block diagram of the mobile communication terminal  100  according to the third embodiment. Only the functions that differ from  FIG. 3  will be described here. 
     The mobile communication terminal  100  according to the third embodiment has a transmission speed estimation part  2201  instead of the transmission speed acquisition part  309  according to the first embodiment. The mobile communication terminal  100  according to the third embodiment is not required to have the communication quality table  307 . The transmission speed estimation part  2201  estimates the transmission speed based on the communication quality information received from the server  102  via the communication IF  205 . The communication quality information will be described in detail later. The transmission speed estimation part  2201  enters the above-described estimated transmission speed to the replication data count calculation part  304  and the transmission completion time calculation part  306 . 
     A communication IF selection part  2202  not only performs a similar processing as the communication IF selection part  311  of  FIG. 3 , but also additionally performs the following processing. The communication IF selection part  2202  selects the communication IF  205  transmitting one or a plurality of data entered from the replicated data generation part  305 , and assigns the same sequence number to the one or a plurality of data. Further, the communication IF selection part  2202  assigns an identifier of the communication IF  205  used to transmit the replicated data (referred to as communication IF number, or communication path identifier) and the current time to the respective replicated data, and transmits the data through the communication IF  205 . Even the same replicated data (replicated data assigned with the same sequence number) are transmitted via different communication IFs, such that a different communication path identifier is assigned to each replicated data. 
       FIG. 23  illustrates a functional block diagram of the server  102  according to the third embodiment. Only the function parts (communication IF  2301  and communication quality measurement part  2302 ) that differ from  FIG. 16  are described. The communication IF  2301  and the communication quality measurement part  2302  are function parts realized by the CPU  1501  reading the programs stored in the memory  1502  and executing the programs using the memory  1502  and the communication IF module  1503 . 
     The communication IF  2301  enters the data received from the mobile communication terminal  100  to the first arrived data selection part  1602  and the communication quality measurement part  2302 . The communication quality measurement part  2302  refers to the information stored in a header portion of the data being entered to generate a communication quality information, and transmits the generated communication quality information via the communication IF  2301  to the mobile communication terminal  100 . 
       FIG. 24  illustrates in  2410  a format of the data that the mobile communication terminal  100  transmits to the server  102 . Similar to the first embodiment, data  2410  that the mobile communication terminal  100  transmits to the server  102  includes a header part  2411  and a data part  2412 . However, the header part  2411  of the data that the mobile communication terminal  100  generates according to the third embodiment includes a communication path identifier  2414  and a transmission time  2415 , in addition to a sequence number  2413 . The data part  2412  includes an application data  2416 . The application data  2416  is data generated by the application part  301 . The communication path identifier  2414  is an identifier for identifying the communication IF  205  transmitting the present data. In the present embodiment, a communication path formed between the mobile communication terminal  100  and the server  102  by the communication IF i (i is an integer of 1 or greater) is referred to as a “communication path i”. For example, a communication path  1  is a path starting from communication IF  1  and reaching the server  102  via a base station  1  ( 110 - 1 ) and a carrier network ( 120 - 1 ). The number of communication paths (communication path count) provided between the mobile communication terminal  100  and the server  102  is equivalent to the number of communication IFs  205  included in the mobile communication terminal  100 . 
       FIG. 24  shows in  2420  the format of the data that the server  102  transmits to the mobile communication terminal  100  in  2420 . A data  2420  that the server  102  transmits to the mobile communication terminal  100  only includes a header part  2421 . The header part  2421  includes a communication path identifier  2422 , a reception throughput value  2423  showing a mean data transfer speed of the communication path, and a mean delay time  2424  of transmitting data from the mobile communication terminal  100  to the server  102 . In the present embodiment,  2420  is referred to as “communication quality information”. 
     &lt;Processing of Communication Quality Measurement Part  2302  of Server&gt; 
     The processing of the communication quality measurement part  2302  of the server will be described with reference to  FIG. 25 . The communication quality measurement part  2302  stores a time in which the communication quality information has been transmitted to the mobile communication terminal  100  last (referred to as last communication quality transmission time) in a variable, and hereafter, the variable is referred to as T. Further, the communication quality measurement part  2302  has a variable storing, for each communication path, a data quantity (bit count; referred to as “reception bit count of communication path i”) received from communication path i (1≦i≦communication path count), a total of delay time in data transmission using the communication path i (referred to as “total delay time of communication path i”), and a number of times of having received data from the communication path i (referred to as “data reception count of communication path i”), which are respectively denoted as R i , L i , and p i . 
     In S 2501 , the communication quality measurement part  2302  updates a last communication quality transmission time T to the current time, and advances to S 2502 . In S 2502 , the communication quality measurement part  2302  initializes a reception bit count R i , a total delay time L i , and a communication data reception count p i  of the respective communication paths i (1≦i≦communication path count) by 0, and advances to S 2503 . 
     In S 2503 , the communication quality measurement part  2302  confirms whether X seconds or greater has elapsed from the last communication quality transmission time T, advances S 2507  to if time has elapsed, and advances to S 2504  if not. In S 2504 , the communication quality measurement part  2302  confirms whether communication data has been received, advances to S 2505  if data has been received, and advances to S 2505  if not. 
     In S 2505 , the communication quality measurement part  2302  confirms the content of the received communication data, acquires a communication path f, a delay time l, and a data size r (which is the size of the application data  2416 ), and advances to S 2506 . In acquiring a delay time l, the communication quality measurement part  2302  computes the delay time l by calculating a difference between current time and the transmission time  2415  stored in the received data. In S 2506 , the communication quality measurement part  2302  updates R f  to R f +r, updates L f  to L f +l, and p f  to p f +1. Thereafter, the communication quality measurement part  2302  performs S 2503 . 
     In S 2507 , the communication quality measurement part  2302  prepares a variable i, initializes l by 0, and advances to S 2508 . In S 2508 , the communication quality measurement part  2302  calculates a throughput of the communication path i, and a mean communication delay time of the communication path i. The throughput of communication path i can be obtained by dividing R i  by X, and the mean communication delay time of the communication path i is a value obtained by dividing L i  by p i . After calculating these values, the communication quality measurement part  2302  creates a communication quality information including these values, transmits the information to the mobile communication terminal  100 , and advances to S 2509 . 
     In S 2509 , the communication quality measurement part  2302  sets R i  to 0, L i  to 0, and p i  to 0, and advances to S 2510 . In S 2510 , the communication quality measurement part  2302  confirms whether i==communication path count is satisfied, advances to S 2501  if satisfied, and advances to S 2511  if not satisfied. In S 2511 , the communication quality measurement part  2302  adds 1 to i. 
     According to the above-described processing, the server  102  is enabled to measure the communication quality of each wireless communication system, and notify the same to the mobile communication terminal  100 . 
     &lt;Processing of Transmission Speed Estimation Part  2201  of Mobile Communication Terminal  100 &gt; 
     The processing of the transmission speed estimation part  2201  of the mobile communication terminal  100  will be described with reference to  FIG. 26 . The transmission speed estimation part  2201  has a variable storing a computed (estimated) transmission speed for each communication IF. In the following description, a variable storing the transmission speed of communication IF i (1≦i≦communication IF count) is denoted as b i . Further, the transmission speed estimation part  2201  has a variable storing a time in which b i  has been most recently updated (referred to as last communication quality revised time) for reach communication IF, and in the following description, the variable is denoted as t j   _   last . 
     In S 2601 , the transmission speed estimation part  2201  confirms whether communication quality information has been received from the server  102 , advances to S 2602  if the information has been received, and advances to S 2605  if not. 
     In S 2602 , the transmission speed estimation part  2201  confirms a communication path identifier  2422  stored in the communication quality information. In the following, a case is illustrated in which the communication path identifier  2422  is j (j is an integer of 1 or greater and equal to or smaller than the communication IF count). In S 2602 , the transmission speed estimation part  2201  confirms whether a mean delay time  2424  stored in the communication quality information (mean delay time of communication path j) is greater than a communication delay time threshold α (α is a constant determined in advance), wherein the procedure advances to S 2603  if it is greater, and advances to S 2601  if it is not greater. 
     In S 2603 , the transmission speed estimation part  2201  updates a transmission speed b j  of communication IF j to a reception throughput value  2423  stored in the communication quality information, and advances to S 2604 . In S 2604 , the transmission speed estimation part  2201  enters b j  to the replication data count calculation part  304  and the transmission completion time calculation part  306 , and advances to S 2605 . In S 2605 , the transmission speed estimation part  2201  updates a last communication quality revised time t j   _   last  of the communication IF j to the current time, and advances to S 2601 . 
     In S 2606 , the transmission speed estimation part  2201  initializes i by 1, and advances to S 2607 . 
     In S 2607 , the transmission speed estimation part  2201  confirms whether (t i   _   last —current time) is greater than a transmission speed increase determination cycle Th (Th is a constant determined in advance), advances to S 2608  if it is greater, and advances to S 2611  if it is not greater. 
     In S 2608 , the transmission speed estimation part  2201  updates the transmission speed b i  of communication IF i to b i +β, and advances to S 2609 . Here, β is a constant determined in advance, and it is referred to as a transmission speed increment. In S 2609 , the transmission speed estimation part  2201  enters b i  to the replication data count calculation part  304  and the transmission completion time calculation part  306 , and advances to S 2610 . In S 2610 , the transmission speed estimation part  2201  updates t i   _   last  to the current time, and advances to S 2611 . 
     In S 2611 , the transmission speed estimation part  2201  confirms whether i is equal to the communication path (communication IF) count, advances to S 2601  if equal, and advances to S 2612  if not equal. In S 2612 , the transmission speed estimation part  2201  adds 1 to i, and advances to S 2607 . 
     According to the processing described above, the mobile communication terminal  100  detects lowering of transmission speed in a state where the communication delay time has become equal to or greater than a fixed value based on the communication quality information received from the server  102 , and estimates that the lowered transmission speed is equal to the transmission speed notified from the server  102 . Further, the mobile communication terminal  100  estimates, based on the communication quality information received from the server  102 , that the transmission speed is raised in a state where the communication delay time notified from the server  102  has become equal to or lower than a threshold for a certain period of time. 
     According to the communication system of the third embodiment, a low-delay data transmission can be performed, even in a state where the mobile communication terminal is not capable of recognizing the accurate transmission speed by itself.