Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm pretty sure that someone has already thought about it and researched it extensively, but I'm having trouble finding any materials or even keywords to look for, for the idea that I was thinking about recently.

I thought about this concept, where in distributed systems, actual computation and processing would happen on the network, rather than on nodes (server or client) on their way from the source to the destination. Where network routers in addition to routing network packets to the next node until delivered to the destination, they would also execute some embedded instructions in those packets.

So for example a network packet would be split into two areas: data and instructions (+ some headers) And when a router routes a packet to the next router, it would send a transformed packet according to the embedded instructions:

+----------------------+
|Network Packet Headers|
+----------------------+
| DATA SLOT 1          |
| DATA SLOT 2          |
| ..........           |
| DATA SLOT N          |
+----------------------+
| Increment slot1      |
| SLOT3 = SLOT1 + SLOT2|
+----------------------+
| instruction ptr      |
+----------------------+

So that by the time those network packets would get to their destination, a portion of it (depending on how many hoops it had to go through) would already be computed (say audio decoded, etc..) offloading both endpoints.

Routers are technically capable of doing this. They do process data based on network packet's values - like choosing where to send the packet next basing on the IP header. There is nothing stopping them from being utilized as "the real cloud", right? Each router would execute one packet or a couple of instructions from that packet (and update the instruction pointer) depending on it's HW resources and capabilities. So a network packet would be a stack frame rather than just a network packet.

Of course, there is a whole class of problems associated with this model, like properly partitioning data (or even the ability to do so.), but it's all based on old concepts from heterogeneous computing and functional programming.

Could someone please point me to any research, materials or projects that deal with similar concepts?

Thanks!

share|improve this question
    
Stream processor? –  rwong Dec 22 '12 at 6:35
2  
Sounds pretty hard to do security wise. –  Mat Dec 22 '12 at 10:39
    
@Mat - that's true. TLS scenarios are not solved yet in this model. –  Karim Agha Dec 22 '12 at 11:00
3  
Thinking about this some more, seems like the effort required to produce the right packet format would be greater than that required to do the computation up-front - unless the computations are non-trivial, but then you're using routers for complex computations which they're not equipped for... I don't see how this could be efficient. –  Mat Dec 22 '12 at 12:23
    
What would be an advantage of this approach? –  Petr Pudlák Dec 23 '12 at 7:48

1 Answer 1

Routers are very specialized and optimized to do just what they do very well. Why would you want to burden them with extraneous tasks, and why would the providers of network infrastructure be interested in adding this to their burden?

I can't think of any general computational task that this kind of methodology would be useful for, but perhaps some kind of network specific task could be considered, for example some kind of "onion" routing, to help conceal the origin of network traffic, or conversely adding some tracking information about conditions along along the route.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.