Depends on your nic (or upstream) buffers, both rx/tx, and how efficient they, or upstream process opening a socket, can consume data.  If the socket (ie. tcp/udp ports) fill first, this usually amounts to kernel-level congestion.  If the hardware buffer on the card and/or queues in use fill first, than it's a hardware issue.

Either way, queues and buffers are tunable usually, no one really bothers however.

Longer your bits stays in queue, or eventually drop, you introduce "lag".  Lag is a result of buffers not answering in a timely fashion, or being forced to drop and signal a retransmit, and this could be your nic, theirs, or your upstream modem/provider. 

The fact you're saying that you see "everyone" slow down means probably yours is to blame more than everyone else.  In your case tx-queue buffers are likely overloading as it can't transmit the data fast enough, or you need to increase your tx buffers at the kernel level.  On linux, that's a sysctl, namely wmem stats under net:

mb@host:~# sysctl -a | egrep 'rmem|wmem'
net.core.rmem_default = 212992
net.core.rmem_max = 212992
net.ipv4.tcp_rmem = 4096        87380   6291456
net.ipv4.udp_rmem_min = 4096
net.core.wmem_default = 212992
net.core.wmem_max = 212992
net.ipv4.tcp_wmem = 4096        16384   4194304
net.ipv4.udp_wmem_min = 4096
vm.lowmem_reserve_ratio = 256   256     32

Also, txqueuelen under your interface as well can affect this.  You'll usually see drops here from exhaustion, but increasing this is necessary for speeds above 1gb.

mb@host:~# ifconfig em1
em1       Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000

Windoze does this somewhere between the registry and the driver stack as a gui for them. 

Lots can, if tcp-based, tcp congestion algo's can behave differently too, if your app/game uses tcp.

Plenty of how-to's out there around stack tuning, usually more for a) weird apps or b) apps that really need that 1g/10g/40g connection requiring the tuning for more.

Any way you look at, efficient pipelining of data is necessary, or you get lag, drops, etc mentioned above.  Most consumers, as well as developers of network code just expect infinite bandwidth and omniscient handling of random flows.  Truth is, most nics suck having minimal buffers, especially consumer ones and most server ones too.  Apps are terrible about streamlining data for network use too (some usually let you tune your "bandwidth" for this).

Bigfoot "gaming" nics do this, introducing a linux soc to do queue and congestion management to avoid buffer drops between your pc and the ethernet connection.  They do a form of "auto quality of service", prioritizing certain things over another.

Queue management, ala QoS (quality of service) is meant for prioritizing traffic like voice/video, but also any "realtime" protocols, which most games utilize underneath as udp traffic.  Look up tc (traffic control) under linux, or qos gpo policies on windoze, dscp/cos, etc.

-mb


On 07/03/2015 05:10 PM, Stephen Partington wrote:

Mostly it's in how they are making cheaper gigabit ethernet.

On Jul 3, 2015 4:40 PM, "Wayne D" <waydavis@centurylink.net> wrote:
I have a question regarding ping times in game servers:


I've noticed when playing several online games that ping times go up as more players connect.
I also run a small game server here at my house and have witnessed this issue first-hand. The processing overhead of the game is actually quite small even with 12 players and I suspect it would not go above 25 to 30%.

This issue doesn't make any sense to me when we are talking about no more than 12 players connected.
My bandwidth both up and down are sufficient to handle the traffic with plenty of room to spare.

The extra overhead on a single pipe in my mind should not make any difference considering the processor speeds are so much faster than the data travelling across the Internet. From my perspective, I should be able to connect 100 different players and see no change in lag/ping TO EACH PLAYER.  I understand that all players have to go through the protocol stack on the net card but that shouldn't matter correct?

Or, is the actual problem the network card itself? Is that the reason for the lag? If so, is there a type of card that I should be looking for “high throughput"?

Could somebody elaborate on the mechanics of this?

Thanks in advance.
---------------------------------------------------
PLUG-discuss mailing list - PLUG-discuss@lists.phxlinux.org
To subscribe, unsubscribe, or to change your mail settings:
http://lists.phxlinux.org/mailman/listinfo/plug-discuss


---------------------------------------------------
PLUG-discuss mailing list - PLUG-discuss@lists.phxlinux.org
To subscribe, unsubscribe, or to change your mail settings:
http://lists.phxlinux.org/mailman/listinfo/plug-discuss