By using two modems at the same time, the flow of data can be doubled. It takes two modems and two phone lines. There are two methods of doing this. One is "modem bonding" where software at both ends of the modem-to-modem connection enables the paired modems to work like a single channel.
The second method is called "modem teaming. Only one end of the connection uses software to make 2 different connections to the internet. Then when a file is to be downloaded, one modem gets the first half of the file. The second modems simultaneously gets the last half of the same file by pretending that it's resuming a download that was interrupted in the middle of the file. Is there any modem teaming support in Linux ??
There are two ways to do this in Linux: EQL and multilink. These are provided as part of the Linux kernel (provided they've been selected when the kernel was compiled). For multilink the kernel must be at least v.2.4. Both ends of the connection must run them. Few (if any) ISPs provide EQL but many provide Multilink.
The way it works is something like multiplexing only it's the other way around. Thus it's called inverse-multiplexing. For the multilink case, suppose you're sending some packets. The first packet goes out on modem1 while the second packet is going out on modem2. Then the third packet follows the first packet on modem1. The forth packet goes on modem2, etc. To keep each modem busy, it may be necessary to send out more packets on one modem than the other. Since EQL is not packet based, it doesn't split up the flow on packet boundaries.
EQL is "serial line load balancing" which has been available for Linux since at least 1995. An old (1995) howto on it is in the kernel documentation (in the networking subdirectory). Unfortunately, ISPs don't seem to provide EQL.
Staring with kernel 2.4 in 2000, experimental support is provided for multilink. It must be selected when compiling the kernel and it only works with PPP.