[MUD-Dev] TCP/UDP/IP Offload NIC for gamers?

Jay Moran jay-MUDDEV at tp.org
Sun Oct 3 14:54:05 CEST 2004


On Thu, 30 Sep 2004, Harlan Beverly wrote:

> My question for the group is this: what features would be useful
> to gamers/game servers in an ADVANCED NETWORK PROCESSING Network
> Card (NIC)?

> Would TCP/IP Offload be of benefit?  (my thought is not much,
> since most games are UDP)...

> What about a UDP/IP Offload engine?  (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?

> Also, I'm trying to reach a contact or two at a MMORPG and/or
> network game dev. company to ask them this question as well.

Well, there are several functions that TCP offloading can
perform. There would really only be two for UDP offloading however;
checksum calculation (big one) and re-assembly as you said. But that
might just be more than enough reason to do so. As for what actual
gamers would want in ANY kind of offloading, I'm not really sure I
understand the question. In my opinion the gamer will never have
enough network traffic on their end workstation to justify any type
of network offloading. Now, the servers however, that is a different
story. Your UDP offloading might have lots of merit there.

Oh yeah, one more thing, I THINK most vendors implementations of TCP
offloading right now, would include re-assembly even for UDP because
they offload IP functions as well, which is where the fragmentation
would occur. So, main benefit would be UDP checksum calculation,
which should be extremely easy (if a vendor hasn't already done it)
to implement on their TCP NICs.

Just for a little discussion on what TCP offloads can occur, there
are several choices a NIC vendor can make as to what they want to
try and offload. Choices such as connection setup (SYN, SYN-ACK,
ACK) can be very useful for the CPU to not participate in. For
example, if you are under a Denial-of-Service attack using SYN
floods, why bother the CPU with an interrupt for every single SYN
packet you get. By offloading those to the NIC until the connection
is fully established, you can prevent a serious amount of interrupts
and potentially not be impacted by a SYN flood.

Of course, re-assembly and TCP checksums were already discussed,
then there are TCP retransmissions which can be handled by the card
which would be great if you have lots of players on lossy modem
links. There are some cards which actually use a kernel poll method
instead of interrupt method.  I'm not sure there are any game
servers out there that would need to go this extreme (I use these
cards to snoop/sniff large links with greater than 600Mb/s of
traffic). If you are looking at doing nothing but traffic related
stuff with a NIC card though, these polling cards rock. What happens
is the NIC does damn near everything and then the kernel itself just
checks the memory to read in the data. Obviously your CPU is at a
constant 90-95% utilization, so not very useful for a server doing
anything other than traffic investigation, but I love these cards
for what I need them for.

Oh yeah, more offloading that occurs with TCP cards, and could (if
not already) be done for UDP is the DMA transfer of the packets to
memory.  Open up a DMA channel from the NIC and put the data where
the CPU is going to want it. Again, this might already be done with
the so called TCP offload cards because it is pretty basic stuff.

ACKs are a BIG thing in TCP that the CPU has NO BUSINESS in. If
you've gotten good data from the sender, go ahead and tell the
sender you got it, don't interrupt the CPU to make it generate an
entire ACK packet. Speaking of ACKs, do you really need the CPU to
keep track of the current sequence number? As a TCP Offload NIC,
surely you can do that for yourself... so do it!

Oh well, just a few things that could be done. Now what would really
be cool is for a MMORPG developer to spend a little time with an
ASIC/FPGA based NIC and create their own offloads. As you said most
use UDP, but there still is some types of keep alives and data
acknowledgements. Is there really a need for the servers to spend
time doing that, or if there was an FPGA on the NIC that the MMORPG
developer had customized to offload some common repetitive functions
to the NIC (along with the UDP ideas we talked about up top) think
of the CPU reduction! Okay... so I guess we just have to imagine
because without a rather thorough profile of the MMORGP's networking
function calls to see where the CPU is spending time, it'd be a
waste to actually make something like this. And of course, as long
as the MMORPG is making money, won't it always just be easier to
throw more machines up to solve the problem?

Oh well, this was fun to think about. I like it when I get to marry
my speciality (networking) with my hobby (online gaming). By the
way, greetings everyone, I've never posted here before, but have
been lurking for a few months. Again, nice discussion group.

Jay

--
http://tp.org/jay
_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list