Skip to content

Packet data over Stream based connection

Xiaokang Wang edited this page May 8, 2021 · 1 revision

VLite supports tunnelling Packet data over a Stream-based connection. It supports UDP over HTTP and WebSocket, to be specific.

Ordinarily, the design of such a tunnel will use a single TCP connection to send and receive all information for a given session. This makes it very easy to design the system but suffers from the head of line blocking and connection meltdown. TCP connection often has flow controls and congestion controls that is too chivalrous to be reliable. When the network is unstable, it will flinch and yield to other connection instead of aggressively send more traffic to maintain the quality of the connection in an adverse situation.

VLite employs a stand your ground approach to TCP based connection. It will identify session with a unique session id, and establish multiple connections to the VLite server. If it detects the connection is unstable, it will abort that connection and create new connections to compensate for the flinch effect of the TCP connection. The new connection automatically replaces the role of the old connection since the session is described with the session id, not the network socket session. The user can configure VLite to establish as many concurrent connections as it takes to compensate for the connectivity issue of the underlying connection.

Clone this wiki locally