7

I need to use two internet connections at the same time. Both the connections will be broadband connections using two LANs.

Say, one of the connection's assigned IP is xxx.xxx.xxx.xxx and the other is yyy.yyy.yyy.yyy. IP xxx.xxx.xxx.xxx will be used only for any outgoing request like any data upload. On the other hand IP yyy.yyy.yyy.yyy will only be used for incoming data requests like download the data. So the scenario will be xxx.xxx.xxx.xxx will upload data and yyy.yyy.yyy.yyy will download data at same time.

Let's make it more clear. I will make a voice call using Skype, then xxx.xxx.xxx.xxx will only upload the voice data, and yyy.yyy.yyy.yyy will download the voice data.

There is no such setup that can be used to do it. It could be done programmatically. I can use C# libraries for that. Or can someone suggest any other way to do it?

3
  • 1
    You're going to find that setup a but untenable... Jul 1, 2013 at 5:13
  • 2
    somehow it could be manageable pragmatically!
    – Mushfiq
    Jul 1, 2013 at 5:15
  • May I ask why? I can't see any advantage.
    – jnovacho
    Jul 1, 2013 at 11:05

3 Answers 3

12

While bundling multiple internet connections has been a dream for many internet users, its feasability is very limited.

On the network level, you don't actively download data (of any kind). It just reaches you as a result of billions of routers pushing all packets further towards their goals, one step at a time to the next router, and the next. The routers decide which direction to push the packets to based on the destination address of the packet. This means unless the remote skype process sends all packets to yyy.yyy.yyy.yyy, they won't reach you through your preferred connection. Too bad the remote Skype only knows xxx.xxx.xxx.xxx, because that's the sender's address in the packets you've send it.

So there are a couple ways in which you can influence the setup to reach your goal:

  1. Change the Internet Protocol, so multiple paths will be supported natively
  2. Change the forwarding tables of the intermediary routers, so they push packets destined for xxx.xxx.xxx.xxx towards yyy.yyy.yyy.yyy
  3. Change Skype, so it supports multiple paths, e.g. by just using TCP
  4. Introduce intermediary entities between sender and receiver which manipulate the packet's addresses (and hope this won't affect Skype in uninteded ways). This is obviously your best bet. A setup for a specific application (such as skype) and a specific remote end (say zzz.zzz.zzz.zzz) which works only for a limited period of time (because as always, things change).

At any event, there are no check boxes, no recipes, no C# libraries which let you do this easily. Unfotunately, you've got to engineer a solution tailored to your needs and according to the workings of today's internet in all its complexity.

4
  • but in one router you only can assign one real IP !
    – Mushfiq
    Jul 1, 2013 at 8:51
  • 5
    Not sure what you're refering to. Anyway, you can actually assign many IPs. In fact, that's what routers are designed for in the first place. Real routers always take part in more than one network so they have more than one IP address.
    – wnrph
    Jul 1, 2013 at 9:01
  • Okay I'll have a try about it !
    – Mushfiq
    Jul 1, 2013 at 9:04
  • So basically, set up an VPN somewhere and install a virtual network adapter that uses both connections seamlessly, on both the VPN machine and your own machine.
    – MatsT
    Jul 1, 2013 at 13:46
6

In order to do this, you would need two non-stateful routers capable of NAT, that do not randomise source ports. You would need to use static NAT for your machine.

I am assuming you will use private addressing internally.

One router (routerX) would have the public address of xxx.xxx.xxx.xxx and be used for outgoing packets, and the other router (routerY) has public address yyy.yyy.yyy.yyy and is used for incoming packets.

RouterX will be the default route.

So your machine, we will say is 10.10.10.10, and sends a packet to google.com on port 80, as it passes through RouterX, the packet's source address is changed via NAT to be the IP address of routerY.

Original Packet:

Src: 10.10.10.10 Src-port: 34343    Dst: google.com Dst-port: 80

The source port is ephemeral: "made up". However, it is vital any response packets reply to the correct port.

RouterX does the NAT, so it looks like this once on the net:

Src: yyy.yyy.yyy.yyy Src-port: 34343    Dst: google.com Dst-port: 80

Google gets the packet, and replies. So its reply is the reverse:

Src: google.com Src-port: 80   Dst: yyy.yyy.yyy.yyy Dst-port: 34343

This packet will naturally arrive at RouterY. It has a static NAT saying anything destined for IP address yyy.yyy.yyy.yyy should be natted to 10.10.10.10:

Src: google.com Src-port: 80   Dst: 10.10.10.10 Dst-port: 34343

Done - the packet arrives at your machine, blissfully unaware that it took such a circuitous route.

You can do this with Cisco IOS routers. In fact, while this scenario has two routers, you could do it with a single router, and some policy routing.

5
  • 3
    Let's hope the ISP for xxx.xxx.xxx.xxx won't identify outgoing packets with source address yyy.yyy.yyy.yyy as malicious and drop it. Besides that, the connections will no longer be shareable among devices (only 10.10.10.10 can use it now)
    – wnrph
    Jul 1, 2013 at 8:00
  • 1
    It will also not work with DHCP in the long run (because the IP address may change). Don't get me wrong, your answer is surely a workable sketch. But with the potentially large set of constraints and requirements not currently known to us, the OP has to adapt it to his situation himself and will encounter drawbacks none of us foresees right now. There's also quite some way to go from the hope to solve this problem through C# libraries to applying your solution on a Cisco router let alone a windows machine.
    – wnrph
    Jul 1, 2013 at 8:19
  • 1
    Thanks guys for your efforts! I will try the procedure to complete it using C# libs and let you know the outcome!
    – csharpbd
    Jul 1, 2013 at 8:59
  • @csharpbd you should write as details as you can about solution if you can solve it!
    – Mushfiq
    Jul 1, 2013 at 9:01
  • @artistoex Yep, it is limited, but achievable. The other approach would be to use two firewalls with fast state sync, which would then let you use multiple internal addresses.
    – Paul
    Jul 1, 2013 at 23:14
4

I think the answer to the question "how to use two internet connection in one pc at the same time?" is don't do it by splitting upload and download of the 1 service to separate connections, but split up which services use what connection.

All broadband solutions I have seen allow the simultaneous upload and download of large amounts of data without effecting eachother until the upload or download rate reaches about 80% of its maximum, I would be looking at splitting traffic differently. The usual and hence better supported method is having different services using different routes.

If the motivation behind doing this is because skype is affecting other traffic, or other traffic is affecting skype, then you should also look in to the "Quality of Service" QoS features on your router and use them, as it allows you to prioritise the traffic you want.

Providing bandwidth limiting on low priority services to prevent bandwidth saturation in either direction significantly helps the reliability and responsiveness of other services.

3
  • Satellite also splits the connection outside of the OS. Jul 1, 2013 at 7:20
  • With a satellite/terristrial combined link, the splitting is done at the link or physical layer, which is very different from splitting the traffic based on its direction according to a much higher-level protocol (away from or toward a specific IP address). Full duplex communications is often implemented using a similar technique (a transmitter/receiver pair or a pair of transceivers using separate links rather than a single transceiver and a single link). While an interesting comparison, it is not relevant to the question as asked.
    – user
    Jul 1, 2013 at 11:01
  • yes, your right about that satellite topic being irrelevant, so I deleted it. Jul 1, 2013 at 13:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .