Skip to content

Instantly share code, notes, and snippets.

@rpavlik
Created April 28, 2014 21:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rpavlik/11385172 to your computer and use it in GitHub Desktop.
Save rpavlik/11385172 to your computer and use it in GitHub Desktop.
Deduced message sequence for setting up VRPN connections
msc {
hscale = "2";
a [label="Server"], b [label="Client (UDP Capable)"], c [label="Client (TCP Only)"];
# A little vertical space
|||;
a box a [label="Listen on TCP port 3883", linecolor="red"];
a box a [label="Bind to UDP port 3883", linecolor="orange"];
...;
|||;
# Start of client trying to connect.
--- [label="Client starts trying to connect to server, with UDP permitted"];
b box b [label="Start listening on arbitrary TCP port X\nvrpn_get_a_TCP_socket", linecolor="blue"];
b->a [label="Send 'clientip X' to UDP 3883", linecolor="orange"];
a->b [label="Connect to clientip X over TCP", linecolor="blue"];
b->a [label="Send client VRPN magic cookie over TCP", linecolor="blue"];
a->b [label="Send server VRPN magic cookie over TCP", linecolor="blue"];
b box b [label="Bind to arbitrary UDP port Y\nvrpn_Endpoint_IP::finish_new_connection_setup", linecolor="purple"];
b->a [label="Send 'clientip Y' over TCP for low-latency connection request\nvrpn_Endpoint_IP::pack_udp_description", linecolor="blue"];
b->a [label="Send type/sender descriptions", linecolor="blue"];
b rbox b [label="status: connected"];
a->b [label="Lossy, low latency (tracker) messages now sent over UDP", linecolor="purple"];
...;
|||;
# Start of client trying to connect.
--- [label="Client starts trying to connect to server with TCP-only"];
c->a [label="Connect to server over TCP", linecolor="red"];
a box a [label="Accepts connection and notes that endpoint is TCP-only."];
a->c [label="Send client VRPN magic cookie over TCP", linecolor="red"];
c->a [label="Send server VRPN magic cookie over TCP", linecolor="red"];
c rbox c [label="status: connected"];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment