Routed Pipe Networks
This page goes over how a routed pipe network works. Routed pipe networks are networks of pipes, specifically routed pipes, in which each pipe knows the location of every other pipe in the network. From this knowledge, a pipe is able to send items to a precise location without any fuss of setting up the pipes in a specific order, sequence, or configuration.
Items flowing inside a pipe is referred to as a payload.
Not only does a payload store the item, but it also contains other useful data. A payload contains data such as the position in the pipe it is and the speed at which it is traveling. Furthermore, it also contains routing data such as its destination, which is the ID of the pipe it is trying to reach, and a log of all the places it has been so far.
Payloads are surrounded by a colorful aura, which indicates its routing status. Colors represent the payload's send priority.
There are 2 types of routing, being push and pull. The difference between the two is the way that destinations are assigned to payloads.
Push routing comes into play when an unrouted payload is discovered by a routing pipe. That payload is passively assigned a destination if it needs one, then relayed to it.
When choosing a destination, every single pipe in the network is asked if they want to take the payload. Each pipe would then check their inventory space, etc. If it can accept it, it will respond with a priority for that payload. After all pipes have been checked, the ID of the pipe that responded with the highest priority is written to the payload.
Afterwards, the routed pipe will check its routing tables to see which direction it should send the payload for the quickest delivery time, and relays it. Eventually, the item will end up at the pipe that responded.
Pull routing is used when items are needed at a pipe, at which point it literally reaches into a network and pulls it out. Payloads sent the way are actively assigned a destination.
The pipe that is pulling (also known as requesting) will check every broadcaster pipe in the network, which are pipes that respond with, instead of a priority like with push routing, a list of items it can provide.
Using the lists it gets, it calculates a bunch of pairs of broadcasters and pushes. Each broadcaster (normally just one, unless something was crafted, and a bunch of items have to travel multiple places to get the end product) is then asked to push the item to the pipe that wanted to pull it.
Generally, items traveling with pull style routing have higher priorities than others and therefor, move quicker.
Types of routers
There are 4 types of routers, being Routers, Requesters, Broadcasters, and Crafters.
Every pipe is a router. It is the subtype of every single routed pipe. (i.e. a requester is also a router). Every router stores a routing table, and is capable of responding to a push style destination assignment.
Requesters have the capability of pulling items from the network to itself.
Broadcasters have the capability of broadcasting its items to other requesters that are trying to pull them.
Crafters are a subtype of both requesters and broadcasters, and can perform both functions. Upon having something pulled from it, the crafter then pulls what it needs to craft what was pulled from it.
Every action in a network is backed by a priority. If something has a higher priority, then it is preferred.
Each priority has its unique color. A payload traveling at a priority will have a small, faint aura of that color.
Priorities also have speed tied to it. It has a boost speed, which is the speed a payload is pushed to when being relayed, and a minimum speed that the payload will travel at after decelerating from a boosted speed.
Here is a table of all send priorities ordered from lowest to highest. The speed is measured in meters per second, or pipes per second, since one pipe is equal to 1 meter.
|Priority||Boost speed||Minimum speed||Color|
|Wandering||1 m/s||0.4 m/s||red|
|Default||2 m/s||1 m/s||orange|
|Terminated||1 m/s||0.4 m/s||purple|
|Passive||4 m/s||2 m/s||blue|
|Active Broadcast||6 m/s||4 m/s||green|
|Active Craft||6 m/s||4 m/s||green|
Each router manages a unique routing table, which is exactly like it sounds like. Every so often, a router will collect a list of every single router in a network. Then, it will explore EVERY SINGLE combination of paths that it can take to get to a destination. The table is created, and each pipe is assigned a direction (north, south, east, west, up, down) of how payloads should be relayed to get to that pipe. From then on, the next pipe will relay it based on its routing table, and so on until it reaches its destination.