As outlined in Figure above, the basic steps for outbound packet processing are as follows:
- Poll for message data waiting to be sent.
- If there is no message data waiting, immediately send the packet and return.
- Create a new formatted message with header based on the properties of the RTP packet who's payload is being used as cover-medium.
- Read as much of the waiting data as will fit in the formatted message.
- Encrypt the message.
- Embed the message into the RTP payload cover-medium.
- Send the modified RTP packet in place of the original via the NetFilter user-space queue.