What IGP Is
The
Internet Gaming Protocol is a new communications protocol built on top of the IP layer.
The goal is to combine the best aspects of TCP and UDP into a single protocol, as well as add some additional
functionality (such as compression and encryption) on the protocol-level that is currently only available on
the application-layer when using TCP.
Practical Applications
While IGP is designed for next-gen online games, specifically high-traffic MMORPG's, there are many other
practical uses of IGP. IGP can be used to replace any current TCP or UDP protocol in current applications,
especially those that use both TCP and UDP to transfer related data. For example, IGP can be used in streaming
media where the video stream is sent through UDP and subtitles or other information is sent through TCP. With
IGP, a single IGP connection is established between the client and server, and the video stream is sent
asynchronously with the subtitle data. A IGP-specific flag in each packet determines what datatype it is. In
this example, if the IGP flag is '00' the packet acts like UDP where the packet is sent only once, reguardless
of whether the client receives it or not. If the IGP flag is '01' the packet is error-checked with the server,
and will re-transmit if there was an error or packet was not received by the client.
The IGP protocol can also support protocol-layer compression, where data to be sent can be broken
into several sections and compressed before being sent. The IGP flag set determines what type of compression was
used, and the receiving node reads the flag and is able to group the parts back together (similar to torrents) and
decompress the data (using the same compression method used on the sending node) before being sent to the
application-layer.
| IGP Flags |
| Binary |
Hex |
Description |
| 0000 |
0x0 |
Just send with no checking (UDP Mode) |
| 0001 |
0x1 |
Read-recipt requested (Partial TCP) |
| 0010 |
0x2 |
Send in serial, Read-recipt requested (TCP Mode) |
| 0011 |
0x3 |
Packet Received (Send in response to read-recipt requests) |
| 0100 |
0x4 |
Compressed using Method 1 |
| 1000 |
0x8 |
Compressed using Method 2 |
| 1100 |
0xC |
Compressed using Method 3 |
| Combining Flags |
| Binary |
Hex |
Description |
| 0101 |
0x5 |
Compressed using Method 1, sent in Partial TCP mode |
| 0110 |
0x6 |
Compressed using Method 1, sent in TCP mode |
| 0111 |
0x7 |
Compressed using Method 1, Packet Received Response (not used) |
| 1001 |
0x9 |
Compressed using Method 2, sent in Partial TCP mode |
| 1010 |
0xA |
Compressed using Method 2, sent in TCP mode |
| 1011 |
0xB |
Compressed using Method 2, Packet Received Response (not used) |
| 1101 |
0xD |
Compressed using Method 3, sent in Partial TCP mode |
| 1110 |
0xE |
Compressed using Method 3, sent in TCP mode |
| 1111 |
0xF |
Compressed using Method 3, Packet Received Response (not used) |
Revised 2008-05-16
IGP will again be revised starting in June 2008, where new headers will be added for the IPv6
migration. Additional headers will be added to allow for additional game-specific features such as rerouting/forwarding
(much like being transferred from a login server to a realm server without disconnecting) and added security.