Network-wide apps in Beehive

118 views
Skip to first unread message

Saeed Arezoumand

unread,
Nov 3, 2014, 12:04:05 PM11/3/14
to beehi...@googlegroups.com
Hi, I have some questions about the relation between Beehive and Kandoo.
How exactly do we can implement Kandoo's architecture by means of Beehive? Would Beehive concern about any specified strategy for placement of network-wide apps? How and where would beehive place those apps? Is there any way to implement beehive in hierarchical architecture?

Soheil Hassas Yeganeh

unread,
Nov 3, 2014, 12:37:54 PM11/3/14
to beehi...@googlegroups.com

How exactly do we can implement Kandoo's architecture by means of Beehive?
Is there any way to implement beehive in hierarchical architecture?

It is straightforward to create logical hierarchies in beehive: You just need to map messages to logically hierarchical keys. 

Let say you have a hierarchical network N with two subnets S1 and S2, which with their own subsubnets S11 and S12, and S21 and S22.  

If you map messages to hierarchical mapsets:
Message to N => "N"
Message to S1 => "N/S1"
Message to S11 => "N/S1/S11"
...
you will have a bee for each of these networks (ie, N, S1, S11, S12, ...), right? If the bee of N/S1/S11 wants to communicate with its upper layer it emit a message to N/S1, and vice-versa.

I added an reminder to add an example for this:

Implementing Kandoo is even simpler. You can just map local messages to the hive's ID and centralized messages to the same key, say "0". Beehive's TE example is basically Kandoo.
 
Would Beehive concern about any specified strategy for placement of network-wide apps? How and where would beehive place those apps?

Yes, and we have different tools for that:
1. By default bees are created on the local hive to handle the first message. With that, if a switch connects to hive H1, we'll create a bee on H1. This is how the default placement works.
2. We have the optimizer that tries to optimize the placement of app according to some objective function.
3. For cases where you need an explicit application-defined placement, you can implement your placement logic in a load balancing application, and the real logic in a worker application. The load balancer will receive all messages and decides which worker to forward the message to.
4. On top of these, I'm finalizing a new version of beehive that supports application-defined placement. That change would basically eliminate the need for a load balancer application in most important examples. I'll probably push that version next week.

Cheers,
Soheil
   

Saeed Arezoumand

unread,
Nov 4, 2014, 6:45:38 PM11/4/14
to beehi...@googlegroups.com


Let say you have a hierarchical network N with two subnets S1 and S2, which with their own subsubnets S11 and S12, and S21 and S22.  

If you map messages to hierarchical mapsets:
Message to N => "N"
Message to S1 => "N/S1"
Message to S11 => "N/S1/S11"
...
you will have a bee for each of these networks (ie, N, S1, S11, S12, ...), right? If the bee of N/S1/S11 wants to communicate with its upper layer it emit a message to N/S1, and vice-versa.
   

In this case, the state of S1 would be the aggregation of states of s11 and s12. and for N would be the aggregation of all. If we attribute a separate bee to each of these, it means that we should replicate states over logical layers. am I right? 

And in case of virtualization, imagine several VLANs share a part of network. If we want to have a separate bee for each VLAN, should we replicate the state of shared part to all of bees?

Soheil Hassas Yeganeh

unread,
Nov 4, 2014, 8:43:40 PM11/4/14
to beehi...@googlegroups.com

In this case, the state of S1 would be the aggregation of states of s11 and s12. and for N would be the aggregation of all. If we attribute a separate bee to each of these, it means that we should replicate states over logical layers. am I right? 


If by aggregation you mean the whole state of the bees in a lower layer, NO.

Each bee only exposes a summarized information to its parent, so the state is not fully replicated, only a small, summarized, aggregated state of the lower layer will be sent to the upper layer. Well, I think that's the case with any hierarchical design. So N has some high level information about S1 and S1 has a summarized view of S11. N doesn't need to now about all the switches in S11.
 
And in case of virtualization, imagine several VLANs share a part of network. If we want to have a separate bee for each VLAN, should we replicate the state of shared part to all of bees?

Well, you can design in a way that such a problem happens. We can't prevent you from doing that. But in practice, the application that controls a VLAN, or any other form of virtual networking, is different than the application that controls the physical network. They communicate, but they won't share state.
 
Reply all
Reply to author
Forward
0 new messages