This documentation describes the internal structure of OpenVPN. It was automatically generated from specially formatted comment blocks in OpenVPN's source code using Doxygen. (See http://www.stack.nl/~dimitri/doxygen/ for more information on Doxygen)
The Modules section below gives an introduction into the high-level module concepts used throughout this documentation. The Related Pages section below describes various special subjects related to OpenVPN's implementation which are discussed in the related pages section.
For the purpose of describing the internal structure of OpenVPN, this documentation and the underlying source code has been broken up into a number of conceptually well-defined parts, known as modules. Each module plays a specific role within the OpenVPN process, and in most cases each module has a clear interfacing strategy for interacting with other modules.
The following modules have been defined:
OpenVPN handles many types of events during operation. These include external events, such as network traffic being received, and internal events, such as a key session timing out causing renegotiation. An example event, receiving a packet over the network, is described here together with which modules play what roles:
This documentation includes a number of descriptions of various aspects of OpenVPN and its implementation. These are not directly related to one module, function, or data structure, and are therefore listed separately under "Related Pages".
The Data channel key generation related page describes how, during VPN tunnel setup and renegotiation, OpenVPN peers generate and exchange the key material required for the symmetric encryption/decryption and HMAC signing/verifying security operations performed on data channel packets.
The Structure of VPN tunnel state storage related page describes how an OpenVPN process manages the state information associated with its active VPN tunnels.
The Network protocol related page describes the format and content of VPN tunnel packets exchanged between OpenVPN peers.
The Memory management strategies related page gives a brief introduction into OpenVPN's memory buffer library and garbage collection facilities.