Jump to content
  • 0

Suggestions or improvements for handling a large banlist


ImportBot

Question

Originally Posted by LargeBanList*:

 

Howdy,

 

I'm looking for assistance for some trouble we're having with Procon and our Battlefield 3 server, relating to the size of our player ban list.

 

Our ban list has grown quite lengthy over the last couple of years, and unfortunately it's continuing to grow by the day with the rampant cheating and griefing in the game.

 

The problem we're having is that it seems each time a ban is added via the Procon GUI, it's performing a full update for known bans from the server. This means it iterates the full ban list with dozens of calls to banList.list in 100-length increments. (I've learned that this sequential lookup in 100-length lists is required and due to the BF3 server internals, which limit the responses to 100 items.)

 

With our ban list exceeding 2000+, the sequential banList.list fetches cause two problems:

 

  • 1-5 minutes of the Procon process pegging to 100% CPU utilization and any GUI/connections going unresponsive for the duration.
  • A short, but significant, lag spike affecting gameplay on the server.

I'm posting today to ask for any suggestions to help us alleviate these issues. I've searched the forum a bit and issues on GitHub, but I haven't found much discussion surrounding this topic. Sorry if I have missed something.

 

An obvious attempt at a solution here is to drastically reduce the size of the ban list, however this isn't really feasible or viable for us; many of the abusive and cheating players are still active and return promptly when we do this, warranting another ban. It's ridiculous but this is true even for players banned a long time ago (year+).

 

I have some a few ideas for potential workarounds for us. These are just after a cursory look over the source code, so please excuse me if these are poor ideas due to my unfamiliarity:

 

  • Prevent the full BanList update after issuing a ban. It looks like there commit 9cfa19a references this change, but I'm uncertain if this is the same thing as what I'm thinking. (link here)
  • Increase the BanList packet cache TTL/duration within FrostbiteConnection.cs, to a value that is a couple of hours or even a day+. (link). My thought here is to reduce the amount of times the server itself needs to be queried for the full list.

My ideas here sound logical to me, since we primarily use Procon for ban management, but perhaps they aren't good ones and there are better options. My line of thought is that since Procon is aware of what the list is after the first load, any changes via the GUI are known to Procon and we could perhaps get by without a forced update every ban addition.

 

I feel comfortable forking the repository and trying to build the source with changes, but I first wanted to bring this up for discussion with you folks who are certainly much more knowledgeable with everything involved.

 

Thank you for your time,

Bryon

* Restored post. It could be that the author is no longer active.
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

Originally Posted by ColColonCleaner*:

 

The solution that many have us have used is getting the bans out of both the battlefield server and procon. The actual banlist procon uses is imported from a text file on the battlefield server, this is how the server knows who is banned. The problem is that file and the rcon commands used to control it require so much information transfer that it's nearly impossible to hold a connection when you have many bans.

 

So we bypassed the system completely. I wrote a ban enforcer into my database powered admin tool, AdKats, which controls all of our bans. It operates faster and has more features than the previous systems in procon alone. Currently sitting at around 28,000 player bans without any issues.

 

Feel free to click the link in my signature to see more about the plugin and what it can do.

* Restored post. It could be that the author is no longer active.
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Please review our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.