TheWoodyMan brings you the latest VoxelNetwork (vnet). More power, more speed, more everything, more blood, sweat, and tears. Specifications in TheWoodyMan's post below.
VoxelBox network specs:
8 bit ip addressing
40 bits onboard card memory
Sends 40 bits in around 30 seconds (give or take 5 seconds)
I designed this network to work well with the blazing speed of redstone.
And due to my poor presentation skills I would rather answer questions then explain the workings of this system.
So feel free to ask questions.
how do you do this stuff? i struggled to make a 7-seg display
Well due to my limited experience with computer electronics its hard to build a system to specs.
So my method is to think about what i want the system to do. then figure out the best way to go about it. After you get done with that you can go back over your work and compress it and make it a bit more presentable.
This is very nice. On the RDF server I just completed a router with a partner that supports 3 devices, but I think it may work a bit differently. connections to and from the router are serial, and consist of 6 wire busses, and packets are 3 bytes in size. IP's are written as 5 bit addresses when sending on the network card, and they leave the card as serial data and enter the router, where they are rewritten to also contain the return address of the sending device so that the recipient knows who to reply to. At the same time this occurs, they are routed based on the IP contained within the packet, and then buffered before being output to either the internet (anything outside the router, whether it be a megarouter AKA the ISP or directly into another router, this happens when the gateway IP of the recipient does not match the gateway IP of the router) or to a local device, which happens when the gateway IP of the recipient matches the gateway of the router. The router also has the capability to request and be assigned a dynamic gateway IP address from outside the router itself, coming from the megarouter ISP that we have yet to build (Though we have developed an efficient IP generating circuit using some conditional memory, a decoder, and a branching counter, which actually allows you to request a certain IP and it will try that first, and if it doesn't work it will give you the next available IP, or you can just go ahead and request the next available IP.
Does this device require that you send an IP within the same packet that you are sending? Or do you send the IP beforehand, and then follow it with data?
We can send 8 bits of data and 6 bits of instructions, and each packet also contains a destination and return address each of which are 5 bits.
Your transfer rates are alot faster than ours though, it takes 15 seconds just to pump one 3 byte packet through the system.
I am impressed with this system. Earlier I developed a sort of "serial hub" that allows you to send a connect instruction to establish a connection with another device, and then freely stream data to that device serially, but I had not worked out how to buffer serial data yet so when you were connected I had to design it to lock out other devices from connecting to that same device as well. It was very small though, but not a proper router like this or the one that we just made.
I really like your layout too, it is very compact. Ours is so bulky and disorganized, it probably can't actually be used, though we are developing devices for it anyways. So far we have a screen that can download images, and we are working on a server to host the images. Another player is working on a "speaker" that can download and play music files. Though I doubt we will be able to fit any of these, along with the router, inside the chunk limit.
Yea I checked out your design and i gotta say its nice and built to real specs. This was designed to work faster for the whole super fast redstone speeds.
To answer your question it ties an ip address onto the beginning of each 8 bit packet. That's why it has the ip storage on the bottom. It stores the ip then it takes the data packet and holds it for a second then sends it out just before the data packet. So it opens up the proper path ways through the system.
It also works on the 2 way redstone system. So all the data travels down the same 8 wires in or out. With the 2 way repeaters you can tie in and determine if the data is inbound or outbound.
And the only way my system can come up with a return address would be to send it in the data packets. That would have to be a uniform placement across the board so all the computers can recognize what the info being sent means.
Also the speed of the system isn't computer to computer time. It is from input to the router until the final packet is stored in receiving network card. But the system isn't limited to 40 bits at a time. The card buffer can be drawn from while writing. So you are only limited to the slowest computers clock speed. The controller on the card memory is designed to loop back to the beginning so that it can exceed the 40 bit maximum.
Also after reading your post i see a major flaw in my system that I'm not sure how to work out. The problem being if another computer sends data the network card will receive and store the data. Without knowing who it come from so it will just get stored with the data from the 1st computer sending data to it. The only solution I can come up with is only 1 computer can talk at a time being as the data lanes are full anyway with packets being sent by any given computer. Long story short only 1 computer can be sending on the network at any given time.
Yea I checked out your design and i gotta say its nice and built to real specs. This was designed to work faster for the whole super fast redstone speeds.
To answer your question it ties an ip address onto the beginning of each 8 bit packet. That's why it has the ip storage on the bottom. It stores the ip then it takes the data packet and holds it for a second then sends it out just before the data packet. So it opens up the proper path ways through the system.
It also works on the 2 way redstone system. So all the data travels down the same 8 wires in or out. With the 2 way repeaters you can tie in and determine if the data is inbound or outbound.
And the only way my system can come up with a return address would be to send it in the data packets. That would have to be a uniform placement across the board so all the computers can recognize what the info being sent means.
Also the speed of the system isn't computer to computer time. It is from input to the router until the final packet is stored in receiving network card. But the system isn't limited to 40 bits at a time. The card buffer can be drawn from while writing. So you are only limited to the slowest computers clock speed. The controller on the card memory is designed to loop back to the beginning so that it can exceed the 40 bit maximum.
Also after reading your post i see a major flaw in my system that I'm not sure how to work out. The problem being if another computer sends data the network card will receive and store the data. Without knowing who it come from so it will just get stored with the data from the 1st computer sending data to it. The only solution I can come up with is only 1 computer can talk at a time being as the data lanes are full anyway with packets being sent by any given computer. Long story short only 1 computer can be sending on the network at any given time.
PS. Amazing work on your router.
It is quite gratifying to hear that coming from someone on the Voxel Box, so thank you. I just wanted to add that I love how you used two way repeaters. Originally, before I jumped on board with the whole internet craze on the RDF, connections were paralel and two way repeaters were to be used (iDeNoh had developed a very compact two wide two way repeater that also doubles as a player direction indicator when hooked into two pressure plates.) We couldn't figure out how to use them for serial transfer without the possibility of data corruption should two bits going in opposite directions hit each other on the same wire, which we gravitated towards due to the large amount of information that each packet was to store (imagine 24 wire busses!)
stellardawn: An 8-bit .5 Hz CPU would be MUCH faster than the one you're linking to (if not quite as versatile).
First, there seems to be an issue addressed by TheWoodyMan : All of the connected computers share the same storage space on all receiving cards. Perhaps a form of 2-way communication over the routers is better than a multicast (with a specific reserved IP signifying a multicast?). Also, is 8-bit addressing really necessary? I think 3- or 4- bit is more than sufficient, especially considering the impracticality of more than 10 CPUs loaded simultaneously.
Rollback Post to RevisionRollBack
I am themuffin reincarnated, thanks to the stupid necessary Curse merger, my memory, and my privacy paranoia concerns.
stellardawn: An 8-bit .5 Hz CPU would be MUCH faster than the one you're linking to (if not quite as versatile).
First, there seems to be an issue addressed by TheWoodyMan : All of the connected computers share the same storage space on all receiving cards. Perhaps a form of 2-way communication over the routers is better than a multicast (with a specific reserved IP signifying a multicast?). Also, is 8-bit addressing really necessary? I think 3- or 4- bit is more than sufficient, especially considering the impracticality of more than 10 CPUs loaded simultaneously.
Well I do agree with you that 8 bit addressing is a bit much but with the design of the system it was just the easiest way. I never really planned for more than 1 computer at a time to be sending data. I just cant see it happening. 1 computer is enough to cause local lag. So sending data requires a lot of redstone to change states (1 computer sending, all the network and a computer receiving). And i was going for functionality over realism.
Well, in a realistic use case (which I realize now you were not targetting), perhaps a faster 3-bit interface with a single output (instead of memory/buffer) meant to be connected to any given CPU's memory (perhaps a specific, smaller subset of memory set aside for an instruction set meant for this interface), would be best. The router might have an addressing system that attaches a 3-bit address to each CPU, and some other features (for instance, one that allows above-mentioned 2-way communication in addition to multicast).
Just suggestions in case modifications might be needed when used in something concrete (2 or 4 player games of a bit more complexity, perhaps).
Rollback Post to RevisionRollBack
I am themuffin reincarnated, thanks to the stupid necessary Curse merger, my memory, and my privacy paranoia concerns.
Router layout:
Overview:
Network card layout:
Fun fact from Deamon:
8 bit ip addressing
40 bits onboard card memory
Sends 40 bits in around 30 seconds (give or take 5 seconds)
I designed this network to work well with the blazing speed of redstone.
And due to my poor presentation skills I would rather answer questions then explain the workings of this system.
So feel free to ask questions.
Well due to my limited experience with computer electronics its hard to build a system to specs.
So my method is to think about what i want the system to do. then figure out the best way to go about it. After you get done with that you can go back over your work and compress it and make it a bit more presentable.
Does this device require that you send an IP within the same packet that you are sending? Or do you send the IP beforehand, and then follow it with data?
We can send 8 bits of data and 6 bits of instructions, and each packet also contains a destination and return address each of which are 5 bits.
Your transfer rates are alot faster than ours though, it takes 15 seconds just to pump one 3 byte packet through the system.
I am impressed with this system. Earlier I developed a sort of "serial hub" that allows you to send a connect instruction to establish a connection with another device, and then freely stream data to that device serially, but I had not worked out how to buffer serial data yet so when you were connected I had to design it to lock out other devices from connecting to that same device as well. It was very small though, but not a proper router like this or the one that we just made.
I really like your layout too, it is very compact. Ours is so bulky and disorganized, it probably can't actually be used, though we are developing devices for it anyways. So far we have a screen that can download images, and we are working on a server to host the images. Another player is working on a "speaker" that can download and play music files. Though I doubt we will be able to fit any of these, along with the router, inside the chunk limit.
To answer your question it ties an ip address onto the beginning of each 8 bit packet. That's why it has the ip storage on the bottom. It stores the ip then it takes the data packet and holds it for a second then sends it out just before the data packet. So it opens up the proper path ways through the system.
It also works on the 2 way redstone system. So all the data travels down the same 8 wires in or out. With the 2 way repeaters you can tie in and determine if the data is inbound or outbound.
And the only way my system can come up with a return address would be to send it in the data packets. That would have to be a uniform placement across the board so all the computers can recognize what the info being sent means.
Also the speed of the system isn't computer to computer time. It is from input to the router until the final packet is stored in receiving network card. But the system isn't limited to 40 bits at a time. The card buffer can be drawn from while writing. So you are only limited to the slowest computers clock speed. The controller on the card memory is designed to loop back to the beginning so that it can exceed the 40 bit maximum.
Also after reading your post i see a major flaw in my system that I'm not sure how to work out. The problem being if another computer sends data the network card will receive and store the data. Without knowing who it come from so it will just get stored with the data from the 1st computer sending data to it. The only solution I can come up with is only 1 computer can talk at a time being as the data lanes are full anyway with packets being sent by any given computer. Long story short only 1 computer can be sending on the network at any given time.
PS. Amazing work on your router.
It is quite gratifying to hear that coming from someone on the Voxel Box, so thank you. I just wanted to add that I love how you used two way repeaters. Originally, before I jumped on board with the whole internet craze on the RDF, connections were paralel and two way repeaters were to be used (iDeNoh had developed a very compact two wide two way repeater that also doubles as a player direction indicator when hooked into two pressure plates.) We couldn't figure out how to use them for serial transfer without the possibility of data corruption should two bits going in opposite directions hit each other on the same wire, which we gravitated towards due to the large amount of information that each packet was to store (imagine 24 wire busses!)
Impressive speeds btw :biggrin.gif:
edit: I misunderstood your question. You can find designs for two way repeaters on these forums.
I have an 8-bit 0.5Hz computer in the pipeline for the next few weeks.
and then using mcedit to make lots off these everywhere on a server all connected to the internet so we can chat to each other? :biggrin.gif:
First, there seems to be an issue addressed by TheWoodyMan : All of the connected computers share the same storage space on all receiving cards. Perhaps a form of 2-way communication over the routers is better than a multicast (with a specific reserved IP signifying a multicast?). Also, is 8-bit addressing really necessary? I think 3- or 4- bit is more than sufficient, especially considering the impracticality of more than 10 CPUs loaded simultaneously.
stupidnecessary Curse merger, my memory, and my privacyparanoiaconcerns.Well I do agree with you that 8 bit addressing is a bit much but with the design of the system it was just the easiest way. I never really planned for more than 1 computer at a time to be sending data. I just cant see it happening. 1 computer is enough to cause local lag. So sending data requires a lot of redstone to change states (1 computer sending, all the network and a computer receiving). And i was going for functionality over realism.
Just suggestions in case modifications might be needed when used in something concrete (2 or 4 player games of a bit more complexity, perhaps).
stupidnecessary Curse merger, my memory, and my privacyparanoiaconcerns.