# how bandwidth works

## Recommended Posts

JohnnyCode    1046
hello all.
I do not seem to understand at all how bandwidth works. If I have a box with 1Gb/s nic card, then no matter what is the bandwidth limit of closest gateway or router, I am limited to 1Gb/s right? But what can I do if my box needs to upload much more data to connected public IPs? I cannot find NIC cards that have more than 1Gb uplink, so I have no idea how such thing is handled. Can I actualy come to any host and ask 1Tb connectivty from him on a single IP computing box? How can I be given that? Does the busy box connects to multiple gateways with multiple NICs or how?

##### Share on other sites
SimonForsman    7642

You can also link multiple NICs to a single device in Linux to get very high bandwidth, (Whatever you connect to has to support it aswell (Cisco does atleast)). If you use Windows you need atleast Windows Server 2012 to get NIC teaming allthough there are third party solutions for older Windows versions.

For the internet it is probably better to split things over multiple connections and use a load balancer to direct incoming connections to different IPs (which could be on different servers) and only use teamed NICs for high bandwidth LANs

##### Share on other sites
JohnnyCode    1046
thanks. I am actualy after the load balancer solution, but I do not understand what is actualy forwarding connections- as I understand it it is load balancer performing connection to the LAN on the behalf of incoming connection but this means that load balancer will tunel all outside trafic back nad forth, but then load balancer is a busy box, isn't it? For example google.com domain resolves to one IP, so there has to be some busy box that moves answer directly to my end. How is it designed? do I not understand what load balancer perform ?

##### Share on other sites
hplus0603    11356
[quote]I cannot find NIC cards that have more than 1Gb uplink,[/quote]

10 Gb/s Ethernet cards are a few hundred dollars, and 10 Gb/s switches are less than $200 per port. Inifiniband and similar go to 40 Gb/s or even 100 Gb/s, at substantially higher costs. [quote]but then load balancer is a busy box, isn't it?[/quote] That is correct. I'd expect to pay about$50k per box from someone like F5 or Juniper, and you typically want two, so you can run them in "hot fail-over" mode, where if one dies, the other one already has all the state to keep running the service.
I also recommend actually testing this fail-over under load, as some vendors may be promising things that don't actually work for real.

[quote]do I not understand what load balancer perform ?[/quote]

The good news is that the load balancer typically doesn't need to process the actual data or application state, it just needs to re-write and forward packets using reverse NAT. This is a lot easier than running some Java application or interpreting some PHP script or whatever.

[quote]Can I ask for 1 Tb of bandwidth[/quote]

If your machines are in a data center where some first-tier back-bone providers provide peering, that may be possible (you'll probably get something like six 192 Gb/s links, rather than one 1 Tb/s link, though.)
High-quality bandwidth could be budgeted at approximately $10 per Mbit/s per month, so if you want a 1 Tb/s 95% reservation, you should expect to pay about$10,000,000 per month. Given the high volume involved, you'd probably be in a pretty good position to negotiate for substantial discounts, though.

However, given the nature of your questions, I'm not sure that you're quite ready to start a business at this scale. Could you describe a little more about what you're actually trying to do? Edited by hplus0603

##### Share on other sites
JohnnyCode    1046
Thanks for such an explanation, I will gladly describe to you what I'm up to.
I have written an asp .net http server, and it can run in a load balancing mode. What id does when it is load balancer moded, it listen on port 80, accepts connections, and in a cycle tryies to read data from clients and writes theese data to back server that it establishes connection to for every connected client. It then sends back to client the data it has recieved from back server and if back server closes connection, balancer closes ethernet connection to client.
-This may be the computation balancing, but in no means, traffic balancing. And I am lost as how to solve if I have a , say 4Gb/s gateway but have a proxy balancer with 1Gb/s NIC. All requests to my domain will have to bottle through this box and I have no idea what to do. Only traffic balancing solution I know of is DNS Round Robin, but I think balancing boxes can do it too, I just do not know how. I am sure google is not using DNS Round but has one IP on some magic box. What balancer actualy performs and what the busy webpages do to provide service through single IP box?

##### Share on other sites
hplus0603    11356
First of all: 1 Gb/s is a very large amount of data. Most home network connections have between 0.0001 and 0.002 Gb/s _upload_ speed, and trying to send that much data for a game is usually not a good idea anyway.
Second: When you say you "read in a cycle" the data, I imagine that you won't read client 2 until you've gotten something from client 1. This won't work well, because if client 1 has a problem and is slow in providing data, everything becomes slow.
Third: If you have thousands of users, the model of "forwarding all data from other clients to each client" breaks down. You end up with an n-squared data problem that simply doesn't work.

##### Share on other sites
JohnnyCode    1046
[quote name='hplus0603' timestamp='1344150507' post='4966281']

Third: If you have thousands of users, the model of "forwarding all data from other clients to each client" breaks down. You end up with an n-squared data problem that simply doesn't work.
[/quote]
Yes, a client is aware of the data of only the clients that are in his scene. Sure MMO's would have problems if players made a gathering on a small spot, like listening to a concert, but there you would rather be limited by clients bandwidth, which is on average 250kB/s, that can esily be not enough for data of 1000 commrads per 30ms.

##### Share on other sites
hplus0603    11356
[quote]250kB/s, that can esily be not enough for data of 1000 commrads per 30ms. [/quote]

Could you run that math out explicitly, so we can see what you mean?
How big is a "command" and what does it mean?
And, why would the client's bandwidth necessarily be the limiting factor, rather than the server? What client count are you considering for that case? Edited by hplus0603

##### Share on other sites
oliii    2196
[quote name='JohnnyCode' timestamp='1344182834' post='4966386']
[quote name='hplus0603' timestamp='1344150507' post='4966281']
Third: If you have thousands of users, the model of "forwarding all data from other clients to each client" breaks down. You end up with an n-squared data problem that simply doesn't work.
[/quote]
Yes, a client is aware of the data of only the clients that are in his scene. Sure MMO's would have problems if players made a gathering on a small spot, like listening to a concert, but there you would rather be limited by clients bandwidth, which is on average 250kB/s, that can esily be not enough for data of 1000 commrads per 30ms.
[/quote]

You're probably not considering overheads (which would be far greater than the actual packet data) if you think 1000 peers is doable at 30 fps on a broadband connection. Edited by papalazaru