LLUDP ClientStack
From OpenSimulator
Contents |
Introduction
These are draft notes on OpenSimulator's implementation of the LLUDP ClientStack, a chunk of code which is used to send and receive packets from viewers (clients) implementing the Linden Labs virtual environment protocol.
As such, this stack handles
- Initial setup of an instance of the stack for a viewer.
- Handling of inbound UDP messages from a connected viewer.
- Distribution of recieved UDP messages to appropriate handling code (e.g. selection handling code if a prim is selected).
- Sending of outbound UDP messages to a connected viewer.
- Throttling of outbound messages.
- Sending and receive of ack messages, both inline within other messages and as standalone messages.
- Resending of messages that are marked as reliable but for which receipt has not been acknowledged by the viewer.
- Throttling of outgoing UDP messages.
- Pooling of clientstack structures (e.g. classes representing messages) in order to improve efficiency and reduce memory usage.
Useful console commands
These are console commands which are useful in debugging or investigating the LLUDP protocol.
- debug lludp packet [--default] <level> [<avatar-first-name> <avatar-last-name>] - Turn on packet debugging. In OpenSimulator 0.7.5 and previous this command was "debug packet".
- debug lludp pool <on|off> - Turn object pooling within the lludp component on or off.
- debug lludp start <in|out|all> - Control LLUDP packet processing.
- debug lludp status - Return status of LLUDP packet processing.
- debug lludp stop <in|out|all> - Stop LLUDP packet processing.
Mechanisms
TODO: Need to fill out as required.
Inbound UDP
Other references
- Sim Throttles contains very old information on the implementation of throttles. This has likely changed considerably but could still be useful.