From Opendildonics.org
[This RFC has not yet been submitted.]
Network Working Group J. Lantin
Request for Comments: nnnn 1 June 2009
Category: Experimental
The Virtual Sexual Experience Protocol (VSEXP)
Version 1.0
Status of this Memo
This memo defines enhancements to an Experimental Protocol for the
Internet community. This memo does not specify an Internet standard
of any kind. Discussion and suggestions for improvement are requested.
Distribution of this memo is unlimited.
Abstract
The Virtual Sexual Experience Protocol (VSEXP) defines a method for
communicating the positions of a user's limbs, the sexual position
employed, and sexual events over a TCP/IP connection.
1. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.[RFC 2119]
2. Introduction
This memo provides a description of VSEXP such that the positions of a
user's limbs, the sexual position employed, and sexual events such as an
orgasm can be communicated between two users over a TCP/IP connection.
3. Virtual Sexual Experience Protocol
Lantin [Page 1]
RFC DRAFT June 2009
3.1 Protocol Overview
Directly after a client connects to the VSEXP server the server
MUST send the status line "220 VSEXP version" where "version" is the
highest version of the protocol that is supported in standard "MAJOR
dot MINOR" notation where MAJOR and MINOR are integers such that a
server supporting MAJOR version 1 and MINOR version 0 would report
"1.0".
Clients MUST NOT make any assumptions as to what the "version" string
will be.
Lantin [Page 2]
RFC DRAFT June 2009
The suggested TCP ports for VSEXP 1.0 are 16900 and 16906 for
SSL-secured transmission.
3.2 Commands
This section describes the commands employed in VSEXP.
3.2.1 AUTH
Format: AUTH <Username> <Password>
Description: This command is used to inform the server who the
client is, and provide an authentication password.
This command is REQUIRED.
Response: The server MUST reply with either a positive or negative
acknowledgement.
Positive Acknowledgement:
The server MUST issue a "250 Ok" message, followed by a ROLE
command describing the server's user.
Negative Acknowledgement:
The server MUST issue a "451 error message" message where "error
message" is a description of the error that just occurred.
Lantin [Page 3]
RFC DRAFT June 2009
3.2.2 ROLE
Format: ROLE <Gender> <Username>
Description: This command is used to assign a Gender to the
specified Username. After a client has authenticated successfully,
the server will communicate its user's Gender using the ROLE command.
If the receiver of a ROLE command does not have a Gender already
assigned to the specified Username, AND the received Gender is compatible
with the receiver's expectations for that Username, the ROLE command
should be Positively Acknowledged. If it is not compatible or the
receiver is already aware of the specified Gender/Username role pair,
the command MUST be either ignored or responded to with a 451 class
error.
After agreeing on the Genders of each side, a POSN command MUST be
issued.
This command is REQUIRED.
Positive Acknowledgement:
The receiver MUST reply with a ROLE command referencing the same
Gender and Username as is being acknowledged.
3.2.3 POSN
Format: POSN <Position>
Description: This command is used to describe the single desired sexual
Position for the interaction.
Valid Position choices for VSEXP MUST include at least "doggie" and
"missionary", and MAY include other choices at the discretion of the
implementation.
Lantin [Page 4]
RFC DRAFT June 2009
If the requested position has not yet been agreed upon AND the receiver
agrees with the requested position, a Positive Acknowledgement MUST be
issued. If the receiver does not agree with the request, a Negative
Acknowledgement MUST be issued. If the position has already been agreed
upon, the POSN command MUST NOT be acknowledged.
A VSEXP implementation MAY allow the Position of an active connection to be
changed. Implementations that allow position changing SHOULD NOT reply to a
requested position change until a determination has been made as to whether
the change is acceptable (perhaps by prompting the local user to accept the
change, or by making some state changes locally). After a determination has
been made, a Positive or Negative Acknowledgement MUST be sent.
Implementations that allow position changing MUST NOT change their
current concept of the position until they have received a Positive
Acknowledgement.
After agreeing on a position, each side SHOULD notify the other of
their preferred data mode by issuing a GO or DTDT command.
This command is REQUIRED.
Positive Acknowledgement:
The receiver MUST reply with a POSN command referencing the same
Position as is being acknowledged.
Negative Acknowledgement:
The receiver MUST reply with a POSN command referencing the
receiver's view of what the Position is.
Lantin [Page 5]
RFC DRAFT June 2009
3.2.4 GO
Format: GO
Description: This command is used to request that the remote
side send streaming device position information.
The receiver MUST send one DEVC command, and then MUST begin
issuing DATA commands at regular intervals. The interval between
DATA commands SHOULD be reasonable based on current network conditions.
The receiver SHOULD continue to issue DATA commands at regular
intervals until it receives a STOP command.
This command is REQUIRED.
3.2.5 DEVC
Format: DEVC Device1[,AttentionDegrees,SupineDegrees] [.. DeviceN[,AttentionDegrees,SupineDegrees]]
Description: This command is used to define the devices or limbs that
subsequent DATA lines will describe. The number and order of devices
in the DEVC command MUST correspond to the number of data points in
subsequent DATA lines and the receiver MUST associate the values in
subsequent DATA lines with the corresponding devices as ordered in the
DEVC command.
The receiver MUST be prepared to associate AttentionDegrees and
SupineDegrees values with Devices. If these are not present, the
receiver MUST assume AttentionDegrees and SupineDegrees values of 0
for any device for which such a value is not specified in the DEVC
command.
The AttentionDegrees value is the orientation of the sensor for the
specified device or limb when the user is standing at attention (without
salute).
Lantin [Page 6]
RFC DRAFT June 2009
The SupineDegrees value is the orientation of the sensor for the
specified device or limb when the user is lying in a supine position
(ventral side up, dorsal side down).
The receiver MUST use the AttentionDegrees and SupineDegrees values
to adjust its understanding of the sender's geometry. For example,
one side may interpret 0 degrees as being upright for the torso while
the other may use 180 degrees to refer to the same orientation. The
SupineDegrees value is used in conjunction with the AttentionDegrees
value to determine whether the sender's sensor sends increasing or
decreasing values as it rotates clockwise.
The sender MUST issue a new DEVC command any time it intends to
reorder the values of the DATA command or remove or add a device
whose values it intends to send in a DATA command, and the receiver
MUST accept devices updates via these new DEVC commands.
This command is REQUIRED.
3.2.6 DATA
Format: DATA Device1Degrees [.. DeviceNDegrees]
Description: This command is used to describe the orientation
of devices or limbs that the most recent DEVC line described.
The order and orientation of the values of the DATA line depend
on the most recent DEVC line.
The values of "Degrees" MAY be expressed in either integer or decimal
values and MUST be expressed as the name implies - in degrees (not
radians or some other units).
As these values are expressed with respect to the sender's sensor
space, the receiver MUST translate them to its own space using the
values supplied in the previous DEVC command.
This command is REQUIRED.
3.2.7 QUIT
Format: QUIT
Description: This command indicates that the sender wishes to close
the connection. The receiver MAY reply with "221 Bye", and MUST close
the TCP socket.
Lantin [Page 7]
RFC DRAFT June 2009
This command is REQUIRED.
3.2.8 EVNT
Format: EVNT Event
Description: This command is used to describe a sexual event that
is occuring on the sender side.
Valid Event choices for VSEXP MUST include at least "orgasm" and "close",
and MAY include other choices at the discretion of the implementation.
The receiver SHOULD take some action to notify the local user that
such an event has occured.
The receiver SHOULD react to an "orgasm" event by triggering a
preprogrammed pattern of vibrations locally.
This command is REQUIRED.
3.2.9 STOP
Format: STOP
Description: This command is used to request that the remote
side stop streaming device position information.
The receiver MUST stop sending regular device updates via the DATA
command.
Lantin [Page 8]
RFC DRAFT June 2009
This command is REQUIRED.
3.2.10 NOOP
Format: NOOP
Description: This command is used as a "No Operation". It MUST
be accepted, and it MUST NOT be acknowledged.
This command is REQUIRED.
3.2.11 DTDT
Format: DTDT
Description: This command is used to request that the remote
side send device position information any time it sees a DATA
command from the sender. This is referred to as "DATA for DATA"
mode.
The receiver MUST send one DEVC command, and then MUST configure
itself to send a DATA command every time it receives a DATA command
from the sender.
This method of rate limiting should allow both sides to make the best
use of available bandwidth and CPU power to communicate device
or limb orientations.
Lantin [Page 9]
RFC DRAFT June 2009
After sending a DTDT command, the sender SHOULD also send a DEVC
and a DATA command to cause the receiver to send a DATA command
of its own.
This command is REQUIRED.
3.4 Return Codes
3.4.1 Correct Command Execution
211 Status
214 Help
220 VSEXP MAJOR.MINOR
221 Bye
250 Ok
3.4.2 Error in Command Execution
401 Unauthorized
451 Error
3.4.3 Error Parsing Command
500 Unknown command
501 Syntax error in parameters
502 Command not implemented
504 Parameter not implemented
Lantin [Page 10]