Actor that stores crypto state for a connection, appropriately encrypts and decrypts packets, and passes packets along to the next hop once processed.
Wrapper around an existing ExecutionContext that makes it propagate MDC information.
Parameters for the Network simulator
In between the network side and the higher functioning side of the simulation:
accept packets and transform them into a sequence of data (encoding), and
accept a sequence of data and transform it into s packet (decoding).
Following the standardization of the SessionRouter
pipeline, the throughput of this Actor
has directionality.
In between the network side and the higher functioning side of the simulation:
accept packets and transform them into a sequence of data (encoding), and
accept a sequence of data and transform it into s packet (decoding).
Following the standardization of the SessionRouter
pipeline, the throughput of this Actor
has directionality.
The "network," where the encoded data comes and goes, is assumed to be leftRef
.
The "simulation", where the decoded packets come and go, is assumed to be rightRef
.
rightRef
can accept a sequence that looks like encoded data but it will merely pass out the same sequence.
Likewise, leftRef
accepts decoded packets but merely ejects the same packets without doing any work on them.
The former functionality is anticipated.
The latter functionality is deprecated.
Encoded data leaving the Actor
(leftRef
) is limited by an upper bound capacity.
Sequences can not be larger than that bound or else they will be dropped.
This maximum transmission unit (MTU) is used to divide the encoded sequence into chunks of encoded data,
re-packaged into nested ControlPacket
units, and each unit encoded.
The outer packaging is numerically consistent with a subslot
that starts counting once the simulation starts.
The client is very specific about the subslot
number and will reject out-of-order packets.
It resets to 0 each time this Actor
starts up and the client reflects this functionality.
Login sessions are divided between two actors.
Login sessions are divided between two actors. The crypto session actor transparently handles all of the cryptographic setup of the connection. Once a correct crypto session has been established, all packets, after being decrypted will be passed on to the login session actor. This actor has important state that is used to maintain the login session.
> PlanetSide Session Pipeline <
read() route decrypt UDP Socket -----> [Session Router] -----> [Crypto Actor] -----> [Session Actor] | | ^ | | write() | | encrypt | | response | +--------------+ +-----------+ +-----------------+
Parameters for the Network simulator
The percentage from [0.0, 1.0] that a packet will be lost
The end-to-end delay (ping) of all packets
The percentage from [0.0, 1.0] that a packet will be reordered
The absolute adjustment in milliseconds that a packet can have (either forward or backwards in time)