When an Internet Protocol Data Packet is sent around the world it is handed from one router to the next following these simple rules:
- Packet Buffering - Incoming packets are held in a cue, first in first out.
- If the buffer is full incoming packets are simply dropped.
- The data packet at the head of the cue is forwarded to the next router closest to the target computer.
- Router Tables (an address list of other routers) are automatically shared across the network.
Although these rules are intrinsically unreliable, this "best effort" system is what makes the whole internet and modern telephony work. Amazingly it is actually the dropped packets not getting through which helps the network find shorter routes and to route around congestion and other problems.
To make the network more efficient incoming packets are sometimes automatically inspected allowing the router handle the packets in different ways:
- Prioritise packets based on Protocol eg. give VOIP/Skype calls priority over web video. This is good for everyone using the network as some applications on the internet are more time sensitive than others.
- Prioritise packets based on Price eg. Charging Netflix extra to ensure their content is delivered. This is bad as it distorts the network and creates artificial barriers.
- Check and drop any partial or corrupted packets. This is good as there is no point congesting the network with useless packets.
- Check and drop any packet based on protocol or destination eg. An ISP dropping all Bittorrent data packets. Or a country dropping all packets to or from "enemy" territories. If either is happening you no longer have an open and free (liberty) network.
Differences between IP and PPP
Obviously the main difference between IP and PPP is that we don't want to drop any Packages! This means that we need rules defining how Packages are buffered and feedback systems which help shape traffic flows.
1. Cueing Packages Based on Emergency Codes.
Within the Priority section of the 3PDN there will be reserved Emergency Codes allocated for First Aid Kits, Defibrillators, Emergency Food and Water in disaster areas, etc. These Packages are given priority over all others no matter who is requesting or sending them and no matter how high the bids are for other Packages in the buffer. There will be reporting checks put in place and any Service Provider found to be abusing or ignoring these codes would lose it's licence.
2. Cueing Packages Based on Priority Codes
A Package Router will look at the highest priority package it is holding and put out a bid for that Package's next best step. Once a Pigeon has won the bid or if no Pigeons are available it puts out another bid for the package with the next highest priority code. It repeats this process until all the Packages have been bid for.
Packages with higher Priority Codes will be more likely to be the next Package forwarded but this will not always be the case.
3. Priority Ramping
To ensure that no low priority Package are held in a buffer indefinitely as higher priority packages come in and out Priority Ramping is enforced. This simply means that a Package's Priority is automatically increased by a certain amount over time. The Priority Ramping information is published in the Router Tables along with the Location and Min/max Hold Price of each Router.
4. One In One Out
When a Package Router is one slot away from being full it will go into One In One Out mode. This means that it will only receive Packages from a Pigeon if that Pigeon take a one of the buffered Packages on it's next Step.