| |
|
|
BigSpeed Data Exchange Protocol
Software VPN at the application level
Version 1.0
|
|
|
| |
| |
Idea |
|
|
|
|
We need a flexible message-oriented protocol to serve as a backbone for our private networking.
Our peers will be grouped logically in a virtual community of trusted nodes.
A simple and efficient method must secure our communications without using
third party certificates. A single TCP connection should be used for all transferred data,
which will be organized in named packets with additional headers.
|
|
|
| |
| |
Architecture |
|
|
|
|
|
| |
| |
Design |
|
|
|
|
All exchanged information is encapsulated in packets with the following structure.
|
|
| |
| Field |
Size |
Value |
Description |
| Start of packet |
| Prefix |
8 bytes |
&H31543949
394D3349
|
Indicates the beginning of the packet |
| Attributes |
4 bytes |
Bit array |
Specifies configuration parameters of the packet
bits 0-2: padding length for the body
bit 3: encryption flag
bit 4: compression flag
|
| Length |
4 bytes |
Integer |
Indicates the total length of the packet |
| Start of encrypted area |
Initialization vector |
16 bytes |
Random |
Cipher initialization value |
| Command |
4 bytes |
Integer |
Identifies the type of the message |
| Body |
Variable |
byte stream |
Message payload |
| Suffix |
8 bytes |
&H31453952
394B344F
|
Indicates the end of the packet |
| End of packet |
|
| |
|
The message body supports four basic data types: boolean, integer, string, and byte array.
They can be used by the application to derive new data types.
|
|
| |
| Data type |
Length field |
Value vield |
| Boolean |
Void |
1 byte |
| Integer |
Void |
4 bytes |
| String |
4 bytes |
[Length field] unicode characters |
| Byte array |
4 bytes |
[Length field] bytes |
|
| |
| |
Bottom line |
|
|
|
|
BigSpeed Data Exchange protocol lets us quickly and easily create software-based virtual private networks at the application level.
|
|
|
| |