Jump to content
  • Advertisement
Sign in to follow this  
Harlan

TCP/IP Offload Network Cards for Gaming...

This topic is 5397 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

hi everyone, I'm new to the board, but very knowledgable on networking and gaming. My question to the group is: Would a TCP/IP Offload Network Card improve Game Clients and/or Game Servers? The question is for both LAN games and DSL types. To answer the question: partly, How many (which) games today use TCP/IP as a primary protocol? Thanks in advance, Harlan

Share this post


Link to post
Share on other sites
Advertisement
> Would a TCP/IP Offload Network Card improve
> Game Clients and/or Game Servers?
>
> The question is for both LAN games and DSL {sp:WAN?} types.

A secondary ethernet card would enable you to have different IP numbers for the same machine and sort the incoming traffic accordingly. To get a real throughput improvement you would need to connect them to totally different backbones. If you are serving, say, a CounterStrike competition you could have the terrorists hooked on one card and the counter-terrorists on the other, each team having its own router you connect to. You could say that intra-team voice support would definitely gain som performance using such a topology. But if both your card are connected to the same router, then this whole exercise is pointless.

-cb

Share this post


Link to post
Share on other sites
cb,

I think you misunderstood my question:

I was talking about using a TOE (which enables 0-copy technology), in place of a normal NIC. (but only 1 IP and connection to the network, 1 network card).

Counterstrike, uses UDP, however, and would see no benefit.
My issue is, how many games use TCP vs. UDP?

And would the benefit be real for Servers and/or Users?

Harlan

Share this post


Link to post
Share on other sites
usually speed is more important than having a reliable connection.
so ANY fast game will likely use UDP.
and for slow games you the need to offload will be rather small ;)

i can't think of any game right now that uses TCP.
(and i know a lot of games)

Share this post


Link to post
Share on other sites
Sadly, I think ya'll are right.

The only game I know of now that uses TCP is Age of Empires and Warlords Battlecry.. (using directplay)

These games aren't terribly hard on the CPU to start with, so they dont' really need to offload the TCP processing. (not to mention the # of users is small).

Anyone know anything about MMORPG Back-Office servers?

For example, Everquest Database servers, etc.

These big guys would probably work well with a TCP/IP offload device, right?

Harlan

Share this post


Link to post
Share on other sites
Just had another idea.

What about a UDP/IP Offload engine?

Would something like that be useful?

for example: what if all it did was hardware support for IP REASSEMBLY?


Any other ideas for features in such a product?
e.g. what do gamers want in a networking card?

Thanks,
Harlan

Share this post


Link to post
Share on other sites
Let's assume, for the sake of argument, that you have a 1 Gbit Ethernet card that can saturate you with 100 Mbyte of data per second. (I'm not asking where you got that bandwidth, mind). This will saturate a standard PCI bus, more or less (they top out at 133 Mbyte/s) so you can't go higher than that in current "affordable" servers -- and you want to stay affordable, for scaling!

Let's assume that you need one copy of the data, that's 200 Mbyte per second.

Let's assume you have dual-DDR-400 memory, which is the norm. This gives you 6.4 Gbyte/second in throughput.

200 Mbyte/second is about 3% of the available bandwidth of that server, under this assumed maximum load. Paying lots of money to offload that processing just doesn't make sense -- not to mention that just optimizing your ring buffer pump is likely to give you at least that much performance. Add to that the fact that most of the cost in networking is interlocking with the kernel and user, and you don't get rid of that with "offload" hardware, and you have a receipe for something that won't sell.

"offload" network hardware made sense back when memory was much slower compared to the network, and still makes sense in specialized applications such as routers, but not in current affordable, scalable (clustered) server hardware.

Share this post


Link to post
Share on other sites
My previous company (Xiran, a division of SimpleTech) developed a zero-copy TOE implementation that pushed wire speed on GigE at 0% system CPU utilization. The key is to offload from the PCI bus so it isn't the bottleneck. In dynamic environments (game server), this isn't so useful, but consider something like FilePlanet or a MMO Patch server where you can cache the static files in advance and then push it out with all the protocol work done in hardware. That's what we did for Real Networks, and it worked quite well for data streaming. I hear it also works extremely well as an iSCSI target/initiator.

TOE will be useful in any heavily-networked environment, as it relieves system CPU from trivial calculations such as checksumming and windowing etc. You might not benefit from increased network throughput (because of aforementioned bandwidth bottlenecks), but with the same throughput, you might end up with spare cycles for AI, database transactions etc.

Not all fast games use UDP. World of Warcraft uses TCP exclusively , as does Warcraft3. Additionally, there are some hardware components that simply don't work well with UDP (ServerIron and some other load balancers etc, and some NATs).

Share this post


Link to post
Share on other sites
Assume TCP. Assume you're saturated on a gigabit ethernet link (which is a whole lot for a single machine). Assume you push through about 120 MB/s on that link (with a little breathing space for Ethernet framing and whatnot) and assume you have 6400 MB/s memory throughput on your server CPU.

That comes to less than 2% of available CPU memory bandwidth per network op. While 2% is higher than 0%, it's not higher enough that I particularly care :-) And that server is so cheap these days; you can get one for like $600.

For comparision: How much did your offload solution cost? And did it use a standard sockets API for the application programmer, or was it a vendor-proprietary interface? I have a very hard time believing that offload hardware makes sense these days for things other than routers.

Here's another number to think about: suppose, for the sake of argument, that you cram 5,000 users into that single machine (assuming you have next to no physics to run per step per user). Each user gets 200 kilobit bandwidth -- more than what you'd want to use per client for any current game, as bandwidth equals cost.

(And you'd probably want to use PCI-66 or PCI Express network cards if PCI throughput starts becoming a problem)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!