Data Rate Kick Option

Started by NCYF99, July 17, 2006, 11:20:29 AM

Previous topic - Next topic

NCYF99

Very glad to see much needed improvements
Since we have the data rate info now to monitor incoming data flux from clients - is there not a way to set up a "auto-kick" if their frames are too high for a certain length of time?

This would cure some server issues automatically with out a admin having to watch and kick people

NCYF99

ps - How much a deviation does the "data info " have,  and is it completely accurate representation of someones incoming" packet stream"?

Russell Gilbert

Hi there -- wondered how long it'd take before this was requested :-)

Yes, I think it's definitely possible to add a feature like this -- might be a bit trickier to let them know why they're being kicked, but maybe there's a way around that, or maybe they just have to read the server notes :-)

QuoteHow much a deviation does the "data info " have,  and is it completely accurate representation of someones incoming" packet stream"?

Every time FSHost receives a data packet from a player, it increments a counter for that particular player, for that particular second.  So after a full second has passed, it takes the value of the counter and saves it off as "number of packets during the previous second", then zeroes out the counter and starts over for the new second.  Whenever it needs to display the data rate (in in the Windows app or on the players web page) it uses the value from each player's "number of packets during the previous second" counter.  So it's quite accurate, and if you watch it for a while you'll see that it varies a bit, but generally always stays around the same number.

Russell

NCYF99

Most excellent feature!!


    Might not seem like much - but when your trying to squeeze pilots in on every little bit of bandwidth you have - it really helps to monitor the packet situation! - Glad to see it! (not to mention the fact that I can really test my machines now and my connection to servers!)
I have already implemented a couple messages on the server saying we are monitoring - not that I'm actually watching it all the time - but would be great during sessions not to have to monitor and just let the server do the work.

Thanks for the contuning awesome updates and addons! Sure everyone else loves it too!

PS =- maybe two or three automated warnings about the packets- too bad there wouldn't be a way to suspend their session till they resolve that...... ;D

Russell Gilbert

Quotetoo bad there wouldn't be a way to suspend their session till they resolve that

Well, there's always the ability to add a temporary ban to the "kick" :)

But maybe not necessary, since if they connect again with a high data rate they'll just get kicked again anyway.

n3306tx

Is there a possiblity that the data rate displayed on the FSHost web page could actually be higher than the FPS setting?  Reason I ask is we had an event a few weeks ago using the beta with about 15 people connected.  A few players (including myself) showed data rates that started out low (around 15-20) but later into the event, showed upwards of 50-60.  My FPS was locked at 20 fps.  The server was not run on the same machine as FS9.  It seemed to start increasing after the FSHost server kicked everyone (bad data packet from someone?) and then we all rejoined.  Which reminds me, after that happened, everyone was able to immediately reconnect without problems, whereas before when this happened, it always seemed we had trouble reconnecting and getting the "Not All Players Could Connect" message.  Don't know if it's related but thought I would mention it.

N3306TX
Flightsim.com Multiplayer Adventures

Russell Gilbert

Up until just a couple of days ago, I would have probably said no, but I can now say a definite "yes", it's possible for FS2004 to send data at a much higher rate than the visual frame rate.

I spent some time this weekend implementing this great feature where users would get warning messages in the chat window when their data rate was above a specified limit.  After a number of warnings, they'd get kicked.  Trouble is that I then discovered that when FSHost kicks someone and they reconnect, they still have the first server player in their chat list, so now they have two of them.  I've seen this before and never knew why it happened, but I also never really worried about it too much.  The problem is that FS2004 still sees both of these server players as real players, even though they have the same IP address.  So it happily sends all of its location data to BOTH of the server players, and the server ends up getting data at a rate that's twice the visual frame rate.  If the player gets kicked again and reconnects, he'll have 3 server players in the list, and the server will receive data at 3 times the visual rate.  And then 4, 5, etc.  :(

The really confusing thing is that this doesn't happen when FS itself is hosting the session -- only when FSHost hosts it.  I spent quite a while tracing out the DirectPlay messages that FS sends when it kicks someone vs. the messages that FSHost sends, and they're absolutely identical.  I have no idea what's causing the problem.

And to make it worse, I had to remove the whole feature from 3.1 beta 27 after all that hard work, because short of restarting their FS, there's nothing the user can do to fix it on his end  >:(

Suggestions welcome on this one...  what a mess.

Russell

Bob

#6
Quoteshort of restarting their FS

Surely for the few that this happens to , the option to ask the user to:
- Leave the session,
- Reset thier fps,
- restart FS - and then rejoin the session,

is better then the effect that a high data rate potentialy has on the other players in a busy session. For anyone this is a pain, to leave and retart FS, but the better of two evils perhaps ?


n3306tx

At least this explains the higher data rates as it was after we got kicked and rejoined we noticed it.  I always wondered why after rejoining after an unintended kick, that the player names would show twice,

Well, I'm not not programmer and not real savvy on the inner workings of client/server software, but I think you are saying when someone gets kicked, FS on the client machine keeps an instance of the player running and then when reconnecting, that instance and a new instance connects to FSHost which is why we see double names?  Or is it something on the FSHost server side that is holding the instances?  If FSHost was holding this data in a variable, just wondering if there was someway to clear or reset it so as it would only see one instance.

IF I'm way off base here, please just let me know.  Just a thought I had.

Maybe instead of kicking the player based on "assummed" high frame rates, just have FSHost send that player a private message every so often asking them to please disconnect and reboot their flightsim.  Even if they don't at least the message would only be seen by the "violator".  I think WestCoast ATC also had some type of proprietary software to detect FPS on users machines when they joined the server.  I suppose it works in a similar way, but don't really know. 

I also know when there is more than one instance of a player in the chatbox, then that is a sure bet that FS will hang on shutdown and reboot.  I've gone into the FSHost server and manually kicked all instances of myself out and FS shutdown ok.  So I guess what I am getting at is...If there are more than one instance of a player, instead of the player rebooting FS, can the FSHost admin just kick all instances of the player and then have the player reconnect?   

Russell Gilbert

Quote from: n3306tx on August 04, 2006, 05:25:57 PMI think you are saying when someone gets kicked, FS on the client machine keeps an instance of the player running and then when reconnecting, that instance and a new instance connects to FSHost which is why we see double names?

Yeah, pretty much.  The problem is in FS itself, not FSHost.  FS is keeping the original server player in its own internal player list so it then has two copies of the same player and sends data to both of them.  Since both of them are the server, the server gets two copies of the data.  But FS only thinks that the first server player is still connected -- it's not really.  But since it does have a valid connection with the second server player, I guess it somehow sends all the data across that connection.  And unfortunately FSHost never sees any of the duplications, so there's nothing it (or an FSHost admin) can do.

QuoteMaybe instead of kicking the player based on "assummed" high frame rates, just have FSHost send that player a private message every so often asking them to please disconnect and reboot their flightsim.  Even if they don't at least the message would only be seen by the "violator".  I think WestCoast ATC also had some type of proprietary software to detect FPS on users machines when they joined the server.

Yeah, this might be the best option actually, to just continually send private chat messages to the player telling them to lock their frame rate.  Only problem is that if they've already done that, it'll also have to tell them that in some instances they may have to restart their FS also.  Could be a long message.

Russell

CowBoyGuy

Quote from: Russell Gilbert on August 07, 2006, 10:04:44 AMCould be a long message.

Would the long message scrolling across the screen slow down the FPS?
Using free stuff to better the world...
http://mywebpages.comcast.net/alandtracysmith/CutRate/

wesleyroyer

It also would be nice to be able to kick idlers. If you stayed in one place for over a certain amount of time, FSHost would kick you.

Also, not regarding my post, If you were to send a message 1 minute before the server kicks you due to data rates, the player would know why he/she is being kicked.
NP876D

There are 10 kinds of people in this world: those that understand binary, and those that don't.

Global Aviation - www.flygafs.net - gafs.hopto.org
"Pilot's Use Pledge"