Low rate tracking system
Description
The Low Rate Tracking System kicks/bans laggy low rate players.
The system can detect low rate players even if they've got seemingly good client rate settings. The system uses internally Linux's iptables firewall, which makes it possible to get very accurate packet numbers for players.
Main reason why players lag is that they've got very bad FPS. There's nothing they can do to improve their FPS, and because they've got good rate settings set to their client, they cannot be detected by the game server itself. This system auto-detects laggers, sends them warning that they've got bad rates, and then kicks/bans them from the server. The end result is lagger free server where everybody have really good rates.
Install instructions
1. Set Linux firewall chain to track player packets
2. Redirect all game data through the tracking chain
3. Start Low Rate Tracking System
Requirements:
More detailed install instructions inside the program file.
Download
http://css.setti.info/development/ratetables/
Update 2010-02-15
Fixes
* Improvements
* Detects players alt-tabbed to Windows
Update 2009-04-30
New Features
* Multi server support
* HTML statistics for WWW
Update 2008-09-02
Total rewrite for the system. The system is now more reliable and has more features and more accurate statistics about player rates.
New Features
* Multi server support
* Map specific rates
* Monitoring mode - see what the system would do
The Player Rate Tracking System has been improved. Now the system takes multiple samples and gets more accurate rate numbers from players. There's support for multi-server systems.
Here's updated output from the system:
Players have separate information entries in their log files:
Then there is also general log file, which stored whole session (map) information for players:
Update 2008-06-13
Original post (2008-05-23)
I've been developing new player rate tracking system for catching low raters. The system is in beta version and it's been tested for a week now. It uses Linux's firewall to get accurate readings from all players. The system is fool-proof, so after installing the system there's no way that someone could fake his true rates.
The problem with low raters is obviously that they're difficult to hit - and some say they make the server lag altogether. The game server's sv_* rate settings are not reliable and do not force players to really send the updates the server wants. In general all server cvar settings for clients are unreliable. This iptables based rate tracking system bypasses game server's setups and gets players' rates directly from the Linux kernel.
The monitored server scans players' rates in one minute samples and then calculates true rates for each player. The system can be configured only to keep track of player rates, but not ban low raters. The system stores all players' rates to specific log files, so it's possible to see what kind of rates players have in general.
I need beta testers to test the system. It's easy to setup and I've got installation instructions made ready. PM me if you're interested.
Requirements:
Preview
Description
The Low Rate Tracking System kicks/bans laggy low rate players.
The system can detect low rate players even if they've got seemingly good client rate settings. The system uses internally Linux's iptables firewall, which makes it possible to get very accurate packet numbers for players.
Main reason why players lag is that they've got very bad FPS. There's nothing they can do to improve their FPS, and because they've got good rate settings set to their client, they cannot be detected by the game server itself. This system auto-detects laggers, sends them warning that they've got bad rates, and then kicks/bans them from the server. The end result is lagger free server where everybody have really good rates.
Install instructions
1. Set Linux firewall chain to track player packets
2. Redirect all game data through the tracking chain
3. Start Low Rate Tracking System
- iptables -N csstracking
- iptables -I INPUT -p udp --dport 27015 -j csstracking
- ./ratetables.pl
Requirements:
- Root access on the server
More detailed install instructions inside the program file.
Download
http://css.setti.info/development/ratetables/
Update 2010-02-15
Fixes
* Improvements
* Detects players alt-tabbed to Windows
Update 2009-04-30
New Features
* Multi server support
* HTML statistics for WWW
Update 2008-09-02
Total rewrite for the system. The system is now more reliable and has more features and more accurate statistics about player rates.
New Features
* Multi server support
* Map specific rates
* Monitoring mode - see what the system would do
The Player Rate Tracking System has been improved. Now the system takes multiple samples and gets more accurate rate numbers from players. There's support for multi-server systems.
Here's updated output from the system:
Code:
[Tue Sep 2 15:22:54 2008]: Server "MyServer" sample #6950 taken (players: 19)
[Tue Sep 2 15:23:04 2008]: Server "MyServer" sample #6951 taken (players: 19)
[Tue Sep 2 15:23:15 2008]: Server "MyServer" sample #6952 taken (players: 19)
[Tue Sep 2 15:23:25 2008]: Server "MyServer" sample #6953 taken (players: 19)
[Tue Sep 2 15:23:36 2008]: Kick&banned " BG|Maverick" (address: 12.73.114.227) (rate avg: 9.7) from "MyServer"
[Tue Sep 2 15:23:37 2008]: Server "MyServer" sample #6954 taken (players: 19)
[Tue Sep 2 15:23:47 2008]: Removed tracking for " BG|Maverick" (address: 12.73.114.227) on "MyServer"
[Tue Sep 2 15:23:47 2008]: Removed tracking for "LT-fast" (address: 14.32.97.206) on "MyServer"
[Tue Sep 2 15:23:47 2008]: Server "MyServer" sample #6955 taken (players: 17)
[Tue Sep 2 15:23:58 2008]: Added tracking for 11.196.206.58 on "MyServer"
[Tue Sep 2 15:23:58 2008]: Server "MyServer" sample #6956 taken (players: 18)
[Tue Sep 2 15:24:08 2008]: Added tracking for 18.99.170.240 on "MyServer"
[Tue Sep 2 15:24:08 2008]: Server "MyServer" sample #6957 taken (players: 19)
[Tue Sep 2 15:24:19 2008]: Added tracking for 19.57.143.149 on "MyServer"
[Tue Sep 2 15:24:19 2008]: Server "MyServer" sample #6958 taken (players: 20)
Players have separate information entries in their log files:
Code:
[Tue Sep 2 15:32:24 2008] "uzzy" (userid: 789) (steamid: STEAM_ID) (min/avg/max 48.7 / 60.1 / 65.2) (4539 bytes/pkt) (ping: 91) (loss: 0) (state: active) (onlinetime: 264) (samples: 19)
[Tue Sep 2 15:32:35 2008] "uzzy" (userid: 789) (steamid: STEAM_ID) (min/avg/max 48.7 / 59.5 / 65.2) (4465 bytes/pkt) (ping: 89) (loss: 0) (state: active) (onlinetime: 274) (samples: 20)
[Tue Sep 2 15:32:45 2008] "uzzy" (userid: 789) (steamid: STEAM_ID) (min/avg/max 48.7 / 58.7 / 65.2) (4422 bytes/pkt) (ping: 93) (loss: 0) (state: active) (onlinetime: 285) (samples: 21)
[Tue Sep 2 15:32:56 2008] "uzzy" (userid: 789) (steamid: STEAM_ID) (min/avg/max 38.9 / 57.4 / 65.2) (4321 bytes/pkt) (ping: 87) (loss: 0) (state: active) (onlinetime: 295) (samples: 22)
[Tue Sep 2 15:33:06 2008] "uzzy" (userid: 789) (steamid: STEAM_ID) (min/avg/max 38.9 / 57.0 / 65.2) (4301 bytes/pkt) (ping: 90) (loss: 0) (state: active) (onlinetime: 306) (samples: 23)
Then there is also general log file, which stored whole session (map) information for players:
Code:
[Tue Sep 2 15:12:10 2008] Map specific stats for "LeXter[md]" (map: de_nightfever) (userid: 689) (steamid: STEAM_ID) (rate min/avg/max: 14.5 / 36.8 / 53.6) (size min/avg/max: 2282 / 2749 / 4098 bytes/pkt) (ping: 119) (loss: 0) (state: active) (onlinetime: 1531) (samples: 148)
[Tue Sep 2 15:12:10 2008] Map specific stats for "JuicE" (map: de_nightfever) (userid: 681) (steamid: STEAM_ID) (rate min/avg/max: 62.0 / 63.5 / 66.0) (size min/avg/max: 4441 / 4734 / 5250 bytes/pkt) (ping: 74) (loss: 0) (state: active) (onlinetime: 1691) (samples: 154)
[Tue Sep 2 15:12:10 2008] Server map changed from "de_nightfever" to "cs_havana"
Update 2008-06-13
Code:
[Fri Jun 13 16:35:57 2008]: Testing RCON connection to the server (SERVER: 1.2.3.4:27015, PASSWORD: xxxxx)
[Fri Jun 13 16:35:58 2008]: RCON connection succeeded
[Fri Jun 13 16:35:58 2008]: Auto-detecting game time per map
[Fri Jun 13 16:36:00 2008]: Finished auto-detecting game time per map
[Fri Jun 13 16:36:00 2008]: Game time per map is 1440 seconds
[Fri Jun 13 16:36:00 2008]: Retrieving timeleft
[Fri Jun 13 16:36:01 2008]: Finished retrieving timeleft (Timeleft: 487 seconds)
[Fri Jun 13 16:36:01 2008]: Server is running in normal state
[Fri Jun 13 16:36:01 2008]: Reading data transfer amounts
[Fri Jun 13 16:36:01 2008]: Finished reading data transfer amounts
[Fri Jun 13 16:36:01 2008]: Retrieving player list
[Fri Jun 13 16:36:02 2008]: Finished retrieving player list
[Fri Jun 13 16:36:02 2008]: Writing rates to individual log files per player
[Fri Jun 13 16:36:02 2008]: Finished writing rates to individual log files per player
[Fri Jun 13 16:36:02 2008]: Updating firewall tracking rules
[Fri Jun 13 16:36:02 2008]: TRACKING ADDED 89.42.198.59:27005
[Fri Jun 13 16:36:02 2008]: TRACKING ADDED 89.147.100.130:6786
[Fri Jun 13 16:36:02 2008]: TRACKING ADDED 77.185.116.61:27005
[Fri Jun 13 16:36:02 2008]: TRACKING REMOVED 79.75.81.21:27005
[Fri Jun 13 16:36:02 2008]: Finished updating firewall tracking rules
[Fri Jun 13 16:36:02 2008]: Sleeping 7.86431622505188
[Fri Jun 13 16:36:10 2008]: Retrieving timeleft
[Fri Jun 13 16:36:11 2008]: Finished retrieving timeleft (Timeleft: 477 seconds)
[Fri Jun 13 16:36:11 2008]: Server is running in normal state
[Fri Jun 13 16:36:11 2008]: Reading data transfer amounts
[Fri Jun 13 16:36:11 2008]: Finished reading data transfer amounts
[Fri Jun 13 16:36:11 2008]: Retrieving player list
[Fri Jun 13 16:36:12 2008]: Finished retrieving player list
[Fri Jun 13 16:36:12 2008]: Calculating rates
[Fri Jun 13 16:36:12 2008]: Finished calculating rates
[Fri Jun 13 16:36:12 2008]: Writing rates to individual log files per player
[Fri Jun 13 16:36:12 2008]: Finished writing rates to individual log files per player
[Fri Jun 13 16:36:12 2008]: Updating firewall tracking rules
[Fri Jun 13 16:36:12 2008]: Finished updating firewall tracking rules
[Fri Jun 13 16:36:12 2008]: Sleeping 7.87583804130554
[Fri Jun 13 16:36:10 2008]: Retrieving timeleft
[Fri Jun 13 16:36:11 2008]: Finished retrieving timeleft (Timeleft: 477 seconds)
[Fri Jun 13 16:36:11 2008]: Server is running in normal state
[Fri Jun 13 16:36:11 2008]: Reading data transfer amounts
[Fri Jun 13 16:36:11 2008]: Finished reading data transfer amounts
[Fri Jun 13 16:36:11 2008]: Retrieving player list
[Fri Jun 13 16:36:12 2008]: Finished retrieving player list
[Fri Jun 13 16:36:12 2008]: Calculating rates
[Fri Jun 13 16:36:12 2008]: Finished calculating rates
[Fri Jun 13 16:36:12 2008]: Writing rates to individual log files per player
[Fri Jun 13 16:36:12 2008]: Finished writing rates to individual log files per player
[Fri Jun 13 16:36:12 2008]: Updating firewall tracking rules
[Fri Jun 13 16:36:12 2008]: Finished updating firewall tracking rules
[Fri Jun 13 16:36:12 2008]: Sleeping 7.87583804130554
[Fri Jun 13 16:36:20 2008]: Retrieving timeleft
[Fri Jun 13 16:36:21 2008]: Finished retrieving timeleft (Timeleft: 467 seconds)
[Fri Jun 13 16:36:21 2008]: Server is running in normal state
[Fri Jun 13 16:36:21 2008]: Reading data transfer amounts
[Fri Jun 13 16:36:21 2008]: Finished reading data transfer amounts
[Fri Jun 13 16:36:21 2008]: Retrieving player list
[Fri Jun 13 16:36:22 2008]: Finished retrieving player list
[Fri Jun 13 16:36:22 2008]: Calculating rates
[Fri Jun 13 16:36:22 2008]: Finished calculating rates
[Fri Jun 13 16:36:22 2008]: Writing rate ban for player
[Fri Jun 13 16:36:22 2008]: God_of_war 89.147.105.204:27005 = (min/avg/max 11.3/12.0/12.7/s) (915 bytes/pkt) (ping: 143) (loss: 5)
[Fri Jun 13 16:36:22 2008]: Finished writing rate ban for player
[Fri Jun 13 16:36:22 2008]: Writing rate ban for player
[Fri Jun 13 16:36:22 2008]: OsCaR 85.174.67.251:27005 = (min/avg/max 18.6/18.6/18.7/s) (1689 bytes/pkt) (ping: 99) (loss: 0)
[Fri Jun 13 16:36:22 2008]: Finished writing rate ban for player
[Fri Jun 13 16:36:22 2008]: Writing rate ban for player
[Fri Jun 13 16:36:22 2008]: TERRY 89.147.108.201:27005 = (min/avg/max 15.6/15.7/15.8/s) (1068 bytes/pkt) (ping: 124) (loss: 0)
[Fri Jun 13 16:36:22 2008]: Finished writing rate ban for player
[Fri Jun 13 16:36:22 2008]: Writing rates to individual log files per player
[Fri Jun 13 16:36:22 2008]: Finished writing rates to individual log files per player
[Fri Jun 13 16:36:22 2008]: Updating firewall tracking rules
[Fri Jun 13 16:36:22 2008]: Finished updating firewall tracking rules
[Fri Jun 13 16:36:22 2008]: Sleeping 7.28092002868652
Original post (2008-05-23)
I've been developing new player rate tracking system for catching low raters. The system is in beta version and it's been tested for a week now. It uses Linux's firewall to get accurate readings from all players. The system is fool-proof, so after installing the system there's no way that someone could fake his true rates.
The problem with low raters is obviously that they're difficult to hit - and some say they make the server lag altogether. The game server's sv_* rate settings are not reliable and do not force players to really send the updates the server wants. In general all server cvar settings for clients are unreliable. This iptables based rate tracking system bypasses game server's setups and gets players' rates directly from the Linux kernel.
The monitored server scans players' rates in one minute samples and then calculates true rates for each player. The system can be configured only to keep track of player rates, but not ban low raters. The system stores all players' rates to specific log files, so it's possible to see what kind of rates players have in general.
I need beta testers to test the system. It's easy to setup and I've got installation instructions made ready. PM me if you're interested.
Requirements:
- Server admin must have root access on the physical server.
Preview
Code:
[Sun May 18 12:10:09 2008]: Testing RCON connection to the server (SERVER: 131.232.23.34:27015, PASSWORD: xxxx)
[Sun May 18 12:10:10 2008]: RCON connection succeeded
[Sun May 18 12:10:10 2008]: Auto-detecting game time per map
[Sun May 18 12:10:11 2008]: Finished auto-detecting game time per map
[Sun May 18 12:10:11 2008]: Game time per map is 1440 seconds
[Sun May 18 12:10:12 2008]: TIMELEFT 1373
[Sun May 18 12:10:12 2008]: Server is running in normal state
[Sun May 18 12:10:12 2008]: Reading data transfer amounts
[Sun May 18 12:10:12 2008]: Finished reading data transfer amounts
[Sun May 18 12:10:13 2008]: Updating firewall tracking rules
[Sun May 18 12:10:13 2008]: TRACKING ADDED 12.111.237.223:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 13.71.120.130:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 117.18.132.197:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 113.14.26.234:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 12.216.112.28:60489
[Sun May 18 12:10:13 2008]: TRACKING ADDED 14.114.26.47:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 17.213.223.239:19879
[Sun May 18 12:10:13 2008]: TRACKING ADDED 19.116.8.87:10061
[Sun May 18 12:10:13 2008]: TRACKING ADDED 16.61.114.58:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 19.112.0.52:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 18.210.32.7:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 14.215.253.97:63061
[Sun May 18 12:10:13 2008]: TRACKING ADDED 17.1.49.190:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 16.121.211.136:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 13.11.28.130:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 12.114.209.175:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 11.210.93.89:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 16.116.216.102:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 13.119.181.206:27005
[Sun May 18 12:10:13 2008]: TRACKING ADDED 18.61.230.248:27005
[Sun May 18 12:10:13 2008]: Finished updating firewall tracking rules
[Sun May 18 12:10:13 2008]: Sleeping 57.8592171669006
[Sun May 18 12:11:12 2008]: TIMELEFT 1313
[Sun May 18 12:11:12 2008]: Server is running in normal state
[Sun May 18 12:11:12 2008]: Reading data transfer amounts
[Sun May 18 12:11:12 2008]: Finished reading data transfer amounts
[Sun May 18 12:11:13 2008]: Checking rates
[Sun May 18 12:11:13 2008]: Finished checking rates
[Sun May 18 12:11:13 2008]: Updating firewall tracking rules
[Sun May 18 12:11:13 2008]: TRACKING ADDED 18.118.190.113:27005
[Sun May 18 12:11:13 2008]: Finished updating firewall tracking rules
[Sun May 18 12:11:13 2008]: Sleeping 57.8891530036926
[Sun May 18 12:12:12 2008]: TIMELEFT 1254
[Sun May 18 12:12:12 2008]: Server is running in normal state
[Sun May 18 12:12:12 2008]: Reading data transfer amounts
[Sun May 18 12:12:12 2008]: Finished reading data transfer amounts
[Sun May 18 12:12:13 2008]: Checking rates
[Sun May 18 12:12:13 2008]: Finished checking rates
[Sun May 18 12:12:13 2008]: Updating firewall tracking rules
[Sun May 18 12:12:13 2008]: TRACKING ADDED 11.94.27.229:27005
[Sun May 18 12:12:13 2008]: TRACKING REMOVED 11.210.93.89:27005
[Sun May 18 12:12:13 2008]: Finished updating firewall tracking rules
[Sun May 18 12:12:13 2008]: Sleeping 57.8203511238098
[Sun May 18 12:13:12 2008]: TIMELEFT 1194
[Sun May 18 12:13:12 2008]: Server is running in normal state
[Sun May 18 12:13:12 2008]: Reading data transfer amounts
[Sun May 18 12:13:12 2008]: Finished reading data transfer amounts
[Sun May 18 12:13:13 2008]: Checking rates
[Sun May 18 12:13:13 2008]: LOW RATE for "DUDA sefu" = 21.34/s (1483 bytes/pkt) (ping: 62) (loss: 0)
[Sun May 18 12:13:20 2008]: BANNED 16.121.211.136:27005
[Sun May 18 12:13:21 2008]: LOW RATE for "al quaida-NL" = 23.43/s (1682 bytes/pkt) (ping: 54) (loss: 0)
[Sun May 18 12:13:27 2008]: BANNED 13.119.181.206:27005
[Sun May 18 12:13:28 2008]: Finished checking rates
[Sun May 18 12:13:28 2008]: Updating firewall tracking rules
[Sun May 18 12:13:28 2008]: TRACKING ADDED 16.124.227.182:27005
[Sun May 18 12:13:28 2008]: TRACKING ADDED 11.210.93.89:27005
[Sun May 18 12:13:28 2008]: TRACKING REMOVED 12.114.209.175:27005
[Sun May 18 12:13:28 2008]: Finished updating firewall tracking rules
[Sun May 18 12:13:28 2008]: Sleeping 43.3714871406555