These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Player Features and Ideas Discussion

 
  • Topic is locked indefinitely.
123Next page
 

per-system "torrent" model for decentralized load

Author
Rain6637
School of Applied Knowledge
Caldari State
#1 - 2013-11-08 05:31:28 UTC  |  Edited by: Rain6637
Today I had the most appalling experience I've ever had in a video game, in the four jumps between Sarum Prime and Bagodan. TiDi is a valid idea but I interpret it as a direct representation of how un-playable the game is (and fail), and there's gotta be a better way.

Having expressed my frustration, I have some suggestions regarding the need for a central server with sole responsibility for calculations and TiDi.

Now that internet bandwidth has progressed as much as it has since 2003 and ISDN, and computers are faster, I think the game and its clients can handle, and will benefit from, a decentralized, torrent-like model. Each system with its own client-to-client torrent (operating at faster than 1Hz), all events calculated by the receiving client, and status updates sent to the server at the historical 1Hz .

Each system as a decentralized, client-to-client "shard", and the server as a tracker of all systems. Like torrents, systems become more robust with additional clients, rather than slower.

"I'll just leave this here."
Pepper Swift
Perkone
Caldari State
#2 - 2013-11-08 07:03:00 UTC  |  Edited by: Pepper Swift
Rain6637 wrote:
Today I had the most appalling experience I've ever had in a video game, in the four jumps between Sarum Prime and Bagodan. TiDi is a valid idea but I interpret it as a direct representation of how un-playable the game is (and fail), and there's gotta be a better way.

Having expressed my frustration, I have some suggestions regarding the need for a central server with sole responsibility for calculations and TiDi.

Now that internet bandwidth has progressed as much as it has since 2003 and ISDN, and computers are faster, I think the game and its clients can handle, and will benefit from, a decentralized, torrent-like model. Each system with its own client-to-client torrent (operating at faster than 1Hz), all events calculated by the receiving client, and status updates sent to the server at the historical 1Hz .

Each system as a decentralized, client-to-client "shard", and the server as a tracker of all systems. Like torrents, systems become more robust with additional clients, rather than slower.

"I'll just leave this here."



you will be surprised on how slow other countries net infrastructure is.. not to mention decentralizing means it is prone to integrity issues.. hackers .. etc.

What I need most.. is a day between Saturday and Sunday...

If life gives you melons, you might be dyslexic

Sigras
Conglomo
#3 - 2013-11-08 07:13:42 UTC
because THAT isnt vulnerable to exploits and hacking at all . . .
Rain6637
School of Applied Knowledge
Caldari State
#4 - 2013-11-08 07:15:24 UTC  |  Edited by: Rain6637
as far as I know the client is secure from tampering, and the nature of the client to client network could withstand a disconnect from the server. (as in, I could communicate with the server through you).

and no, it's not. due to the redundancy, it isn't vulnerable to intercept attacks.
Sarah Stallman
Pen2 Logistics
#5 - 2013-11-08 07:15:56 UTC
Torrents aren't faster, just cheaper.
Rain6637
School of Applied Knowledge
Caldari State
#6 - 2013-11-08 07:17:32 UTC
Hesod Adee
Perkone
Caldari State
#7 - 2013-11-08 07:59:37 UTC
Rain6637 wrote:
as far as I know the client is secure from tampering, and the nature of the client to client network could withstand a disconnect from the server. (as in, I could communicate with the server through you).

and no, it's not. due to the redundancy, it isn't vulnerable to intercept attacks.

The client is never secure from tampering. The best developers can do is not put anything worth tampering with in the client.
Rain6637
School of Applied Knowledge
Caldari State
#8 - 2013-11-08 08:14:45 UTC
the interface can be manipulated, but it is quite sensitive to tampering with the programming Blink
Hesod Adee
Perkone
Caldari State
#9 - 2013-11-08 08:29:57 UTC
Rain6637 wrote:
the interface can be manipulated, but it is quite sensitive to tampering with the programming Blink

How exactly do you think the client can be secured ?


You'll need to be very specific. Certainly a lot more specific than saying CCP should use torrents (good for data transfer) for data processing. Try something that actually makes sense.
Mara Rinn
Cosmic Goo Convertor
#10 - 2013-11-08 08:33:47 UTC
Rain6637 wrote:
Each system as a decentralized, client-to-client "shard", and the server as a tracker of all systems. Like torrents, systems become more robust with additional clients, rather than slower.


That's pretty much how the current system actually works. Each star system is its own simulation, though sometimes simulations share servers. What causes problems is the number of parts of the code which can't be parallelised, such as applying damage to starships during combat.

I suspect the internet bandwidth and processing power of most gaming computers is insufficient to adequately simulate a battle with more than a dozen combatants: simply because the upstream bandwidth of most people's Internet connections would lead to far higher latency than is required to make the game playable.
Rain6637
School of Applied Knowledge
Caldari State
#11 - 2013-11-08 09:38:19 UTC  |  Edited by: Rain6637
I meant client-to-client in terms of calculations, not just for data transfer. because the issue is server cpu load, not bandwidth. rather than asking permission from the server and waiting to be told what has happend to their ship, have the client make the calculation and update the server. client-server communication would be more one-way than the current send-receive... the server would act as a record keeper, less as a number-cruncher.

spread the burden of damage/boosts/watchlist to the client receiving the effects. between each 1Hz update, a number of things will happen to a client.

two ships are PVPing. one ship has the other pointed. the aggressor client is telling the receiving client:

"I'm applying -2 warp strength and shot you with medium rails II. my damage modifier, change in xyz, and tracking is ___"
"I'm applying -2 warp strength and shot you with medium rails II. my damage modifier, change in xyz, and tracking is ___"
"I'm applying -2 warp strength and shot you with medium rails II. my damage modifier, change in xyz, and tracking is ___"

the updates to the server from the receiving client would look like,

"xxxx shot me with xxxx and did 99.8 damage
xxxx shot me with xxxx and did 99.8 damage
xxxx shot me with xxxx and did 99.8 damage
I died"

the ship was trying to warp, but it was pointed. upon each warp command it calculated:

"I have -2 warp points applied to me against my +1 warp strength, so I will drop the command and display that I cannot warp."
"I have -2 warp points applied to me against my +1 warp strength, so I will drop the command and display that I cannot warp."
"I have -2 warp points applied to me against my +1 warp strength, so I will drop the command and display that I cannot warp."

meanwhile, client-to-client the same ship is telling everyone who has it locked and or in fleet:

"I received 99.8 damage, i now have 68% shields
I received 99.8 damage, i now have 55% shields
I received 99.8 damage, i now have 30% shields
I'm dead"

everyone in fleet receives that notification and calculates:

"xxxx now has 68% shields but they are not on watch list so I will drop that info"
or
"xxxx now has 68% shields and they are on watch list but I do not see them on grid so I will not display their health bars"
or
"xxxx now has 68% shields and they are on watch list and I see them on grid, so I will update their health bars"

while a fleet booster is in system and while its links are running it's telling everyone in a valid fleet:

"I'm giving you a 20% siege resist boost
I'm giving you a 20% siege resist boost
I'm giving you a 20% siege resist boost"

ships liable to receive those boosts calculate:

"I'm receiving a 20% siege resist boost but I am not in a valid fleet so I will not apply the boost"
or
"I'm receiving a 20% siege resist boost and I am in a valid fleet but I don't see you on grid so I will not apply the boost"
or
"I'm receiving a 20% siege resist boost and I am in a valid fleet and I see them on grid so I will apply the boost"

and the server does not have to handle all of these calculations.



and that's the best i've got
Lucas Kell
Solitude Trading
S.N.O.T.
#12 - 2013-11-08 10:17:48 UTC
This simply wouldn't work.
Torrent work because the end block can be tested against a known hash, validating the data. With the server simply accepting client data, this could easily be manipulated be it by manipulating the data or just the order in which the data is processed. And sure, this could be taken into account by making more than one client calculate the same value and dropping outliers, but since these are battles between people that know each others, it would be pretty straightforward for a group to develop an application that causes all clients in a system to alter data in the same way, making the real data the outlier.
The only way to fully secure it would be for the server to process the data making this utterly pointless.

Then add into this that in order to achieve this, they have to split down the server processing into manageable chunks which can be split out then put back together. If they do that, then they could simply run that on multiple threads on the same server, or balanced across several servers.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.

Kirimeena D'Zbrkesbris
Republic Military Tax Avoiders
#13 - 2013-11-08 10:35:56 UTC  |  Edited by: Kirimeena D'Zbrkesbris
Quote:
have the client make the calculation and update the server. client-server communication would be more one-way than the current send-receive... the server would act as a record keeper, less as a number-cruncher.

spread the burden of damage/boosts/watchlist to the client receiving the effects. between each 1Hz update, a number of things will happen to a client.

Do you know what will happen in reality? I think it'll be on par with:
Quote:
two ships are PVPing. one ship has the other pointed. the aggressor client is telling the receiving client:

"I'm applying -255 warp strength and shot you with medium rails II. my damage modifier (over 9000), change in xyz (yay i'm zig-zaging on grid), and my tracking is peerless"

the updates to the server from the receiving client would look like,

"xxxx shot me with xxxx and did 0.1 damage
xxxx shot me with xxxx and did 0.1 damage
xxxx shot me with xxxx and did 0.1 damage
I'm ******* immortal !"


If you move all calculations to client-side all it takes is to modify incoming/outgoing packets to suit your needs. Any encryption you put will be reverse engineered and bypassed eventually.

Opinions are like assholes. Everybody got one and everyone thinks everyone else's stinks.

Rain6637
School of Applied Knowledge
Caldari State
#14 - 2013-11-08 10:55:50 UTC
Lucas you mentioned a hash. the client has one.

Kirimeena i think that would be detected rather quickly. and banned
Kirimeena D'Zbrkesbris
Republic Military Tax Avoiders
#15 - 2013-11-08 11:03:49 UTC  |  Edited by: Kirimeena D'Zbrkesbris
Rain6637 wrote:
Lucas you mentioned a hash. the client has one.

Kirimeena i think that would be detected rather quickly. and banned

It doesnt change the fact that it is possible. It WILL be abused (maybe not to the extent i described above).
One of rules of (proper) game design is: do all calculations server-side, anything and everything you put into client is a weapon in hands of players.

Opinions are like assholes. Everybody got one and everyone thinks everyone else's stinks.

FlinchingNinja Kishunuba
Crunchy Crunchy
#16 - 2013-11-08 14:03:49 UTC
Securing the client traffic is relatively straight forward, as long as you do your security inside the client a packet intercept would be difficult to get past verification server side. Just look up publc key encryption and hashing.

The issue you will get is latency for a torrent, if you have no redundancy in the "torrent group" you will always be waiting for the last member which has a higher chance of being slower than a simple server-client relationship.

Distributed computing (which is what this is, not torrents) works best with either low latency interconnects for dynamic computational loads or predefined problems to facilitate chunking and segmenting. Allowing the cluster to be divided in to sub-clusters where they have relatively low latency and can work on parts of the problem in isolation from the larger cluster, syncing at a less aggressive rate.

I assume CCP still has an issue with blocking on their threads, I can't find the article where they were talking about multi-threading and moving more work out of the thread to reduce latency but it suggest that their legacy code is not optimised for multi-threaded environments.

I would really like to have an updated Dev blog about the state of the cluster regarding software and hardware, I was part of a team deploying an environment that is 6 times larger than Eve (ish, the lab i helped design is 6 of the cold aisles they have) with collapsed 10GbE networking so layer 1, 2 and 3 are all on a single virtual switch cluster using MPLS to manage traffic flow. I think CCP would be pretty impressed if we dropped Tranquillity on this :)



Lucas Kell
Solitude Trading
S.N.O.T.
#17 - 2013-11-08 14:34:53 UTC
Rain6637 wrote:
Lucas you mentioned a hash. the client has one.
Yeah, I did although your response tells me you misunderstood. I'm not talking about hashing the executable, I'm talking about a hash of the data received. So a torrent, when I say "send me lock 6", you send me that and my client goes "right, so when I hash this data it should be 12345" and then if it isn't it tells you you're block 6 was incorrect and asks someone else for it. This is easy for a torrent, since when the torrent is made, the data is fixed.

With the server situation the data is not fixed. Every target ID, damage amount, ship type, etc would result in a different set of data, and thus a different hash. There's no way for the server to know that you sent it actual correct data, without working it out itself and comparing what you sent to what it worked out itself. Think of it like a math teacher checking your results of a complex sum without seeing your workings. It's fine if that teacher does the math themselves or already has the answer written down, but they can't glance at it and say "yup, that's right". The server would be the same. It would either have to work it out itself, or take it for granted that you aren't lying.

The Indecisive Noob - EVE fan blog.

Wholesale Trading - The new bulk trading mailing list.

Sarah Stallman
Pen2 Logistics
#18 - 2013-11-08 17:21:19 UTC
There was a presentation CCP did some time ago about how the client is inherently untrusted, and how this has saved their asses more than once. Blizzard made the mistake of making the WoW client trusted, and it opened any number of exploits and hacks for man-in-the-middle attacks.

Decentralizing the servers is a bad idea. Upgrading the servers isn't physically possible right now, beyond what they're already doing. Tranquility is the ultimate nightmare of computing power in the video game world. They know about these problems and are working to fix them. Second guessing them or telling them how they should solve it when you don't know jack or **** about the inner workings of the systems involved is foolish at best.
Dersen Lowery
The Scope
#19 - 2013-11-08 17:33:23 UTC
Security questions aside, you're trying to solve the easiest problem.

The engine does four things:

1) hit the database for every character each time they undergo a session change.

2) run all the individual calculations;

3) assemble the calculation into a series of actions and consequences;

4) push information about the actions and consequences to all relevant parties.

#1, #3, and #4 are the pain points. CCP Veritas and his team have been hard at work breaking #1 and #4 out so that they can be called asynchronously (and in the case of #1, the results stored in a lightweight "brain in a box"), which means that they can run in separate threads. Breaking #3 into parallelizable chunks is a hard problem, because its job is to assemble all the disparate chunks--that is, actions by individual characters--into a single, consistent set of consequences.

You're solving #2.

Proud founder and member of the Belligerent Desirables.

I voted in CSM X!

Batelle
Federal Navy Academy
#20 - 2013-11-08 17:46:02 UTC
client-side calculations of events are an absolute non-starter.

"**CCP is changing policy, and has asked that we discontinue the bonus credit program after November 7th. So until then, enjoy a super-bonus of 1B Blink Credit for each 60-day GTC you buy!"**

Never forget.

123Next page