[alto-design] Re: Few questions on ALTO and ONOS


dongshu
 

Hi Tamim and Richard,

Here is how we compute the ECS now. We get the routing path from source host to dest host first, and then compute the endpoint cost according to the routing path and cost metric (e.g. bandwidth, hopcount). 

Computing routing path in ODL is the core of the design and the details are explained as follows:
1. We get the attachment points of source host and dest host, let's call it start_switch and end_switch, by L2Switch.
2. We read flow table of start_switch and find the matched flow entry according to src host IP and dst host IP. If matched flow entry is found, we get next switch from the flow entry, then we repeat this step to chase next switch until we get to end_switch.
4. If there is no matched flow entry, we will force ODL controller to compute a new routing path, by either invoking the path computing function or sending a fake packet. Once the path computing is done, we repeat step 2 until we get to end_switch.

In this way, we get the routing path. Following is the pseudo code:

sw_id = get_attachment_point(src)
dst_sw_id = get_attachment_point(dst)
while (sw_id != dst_sw_id) {
  r <- loop_up(src, dst) in sw_id's flow table
  if (!r) {
    forceComputeRoutingPath(src, dst)
    r <- loop_up(src, dst) in sw_id's flow table
  } 
  sw_id = get_sw_id(r) 
}
 

Once we get the routing path, we can compute endpoint costs based on different cost metrics. Hopcount is easy to compute while bandwidth is a little more complicated since we have to get the bandwidth of each link at first.

@Richard The following is what we have done during the past three days:
1. Get attachment point of host by host IP address. Done. (Shu, Xiao)
2. Look up flow table to get matching flow entry and next switch. Almost Done. (Xiao, Shu)
3. Figure out how to force ODL controller to compute routing path. In progress. (Mingming)
4. Setting up a mininet + controller test environment in our lab. (Junzhuo, Xiao)
5. Some code refactoring. (Shu)

Things left to be done:
1. Figure out how to force ODL controller to compute routing path.
2. Figure out how to get bandwidth of each link.
3. Combine all the parts together.

From tomorrow, we will focus on left problems. Mingming has made some progress in the first one but it will be great if we have someone else to help.

Thanks a lot.

From,
Shu


On Sat, Aug 1, 2015 at 11:55 PM, Y. Richard Yang <yry@...> wrote:
Dear Tamim,

Thanks for the update. We had a mini design summit on ECS last week. The plan is to have a running version in two weeks. Given your questions, it is a good idea that we write down the design soon so that we can all work together. 

@Shu/Junzhuo: I believe that you are leading the ECS design. Can you write down the discussion soon so that we can discuss with Tamim and others.

Thanks!

Richard

On Sat, Aug 1, 2015 at 11:32 AM, MD I. Islam <tamim@...> wrote:
Hi

Could you please advise me if I have understood ECS correctly? 

I was told, in the first step, we calculate the shortest hop-count assuming that the link metric is 1. Do we just implement a shortest-path algorithm for the topology graph based on the data from TopologyManager?

Next step is to figure out a natural interface, in ODL, to configure link metrics and compute routing cost. Do we design a YANG model to configure link properties (link cost metrics)? Currently I don't see link properties (such as delay, bandwidth) in NodeConnector or TopologyUserLinkConfig. Am I missing anything? Do we have to design a data structure to store the cost metric for each link?

Which version of ODL do I look into? I don't see TopologyManager code in the Lithium release. I only see the class files. Am I missing anything? However I see the TopologyManager in Hydrogen release. 

Looking forward to your suggestions.

Thanks
Tamim  

.

On Fri, Jul 17, 2015 at 11:19 PM, MD I. Islam <tamim@...> wrote:

Thanks Kai! I'm looking into it.

On Jul 17, 2015 11:07 PM, "Y. Richard Yang" <yry@...> wrote:
Tamim,

Yes. As Kai pointed out, the TopologyManager is a good place to get started. Could you please start to take a look and then we can sync up?

Thanks!

Richard 

On Saturday, July 18, 2015, Gao Kai <godrickk@...> wrote:
There was a topologymanager in earlier releases you might look into.

On 18/07/15 02:14, MD I. Islam wrote:
That sounds great. Is there an ODL service that I can use to get the network topology and link metric? 

On Fri, Jul 17, 2015 at 1:36 PM, Y. Richard Yang <yry@...> wrote:
Tamim,

On Saturday, July 18, 2015, MD I. Islam <mislam4@...> wrote:
Yeah, interested. Is that the Endpoint Cost Service?
 
Yes. You got it.

 
What are the metrics we are considering? 

One basic step is to make sure we get shortest path fully right. A natural link metric is 1, and we get shortest hop count. A next step is to figure out a natural interface, in ODL, to configure link metrics, and we compute routing cost. A third component in ODL to conduct traffic engineering.

Let's get a couple proposals out in next week. How does this sound?

Richard 
 

On Fri, Jul 17, 2015 at 12:45 PM, Y. Richard Yang <yry@...> wrote:
Dear Tamim,

Wonderful! 

Per my personal wish list, a main feature that I want to improve on is high quality ECS service, based on various metrics. Any interest?

Richard

On Sat, Jul 18, 2015 at 12:35 AM, MD I. Islam <mislam4@...> wrote:
Yeah, sure. I'm interested on adding features to the ALTO ODL server. Please let me know what you want me to do.

Thanks
Tamim

On Fri, Jul 17, 2015 at 12:12 PM, Y. Richard Yang <yry@...> wrote:
Dear Tamim,

Thanks a lot for the questions. Sorry for the late reply, as I am working on a few deadlines. How about we schedule a time to discuss the items in details later next week?

In the mean time, are you interested in engaging more in the alto effort? For example, we are working on adding more features to the ODL server. Any interest in getting engaged?

Thanks!

Richard

On Thu, Jul 16, 2015 at 2:27 PM, MD I. Islam <mislam4@...> wrote:

I have few questions in mind.

How can we get the dynamic cost map from OpenFlow switch? Do we use OpenFlow meter? Are we considering about dynamic cost-map at all? As there will be multiple competing flows, so available bandwidth will change over time. Please advise.

Can we also create a paradigm to cache contents in the SDN controller (or in a controller app)? I think, this shouldn't be in the context of ALTO, but still would be very helpful. For example, if multiple clients watch a live video on a campus network, we should be able to cache the video slices in the controller. Then controller can push the content proactivly without notifying the clients. Again controller can serve the content in a reactive manner through a north bound protocol.

Today I was trying to write a simple application in ONOS. I was trying the VM from sdnhub. I could run ONOS. The sample Foo program compiled, but I couldn't load it on Karaf. If you have a VM that has the development environment setup, that will be very helpful to start.

Please don't hesitate to let me know if i get anything wrong. Looking forward to your suggestions.

Thanks
Tamim




--
-- 
 =====================================
| Y. Richard Yang <yry@...>   |
| Professor of Computer Science       |
 =====================================




--
-- 
 =====================================
| Y. Richard Yang <yry@...>   |
| Professor of Computer Science       |
 =====================================

_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev




--
Richard

_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev




_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev



--
Richard

_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev





--
-- 
 =====================================
| Y. Richard Yang <yry@...>   |
| Professor of Computer Science       |
 =====================================

--
You received this message because you are subscribed to the Google Groups "alto-design" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alto-design+unsubscribe@....
To post to this group, send email to alto-design@....
To view this discussion on the web visit https://groups.google.com/d/msgid/alto-design/CANUuoLqi%3DU_mcv1gm5Rgf0p48PdLX3V_xrHLngwk%2BADCrEmFsg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


MD I. Islam <tamim@...>
 

Thanks Shu! Is it possible to share the VM (development environment) with me? I'm new to ODL. Having everything setup would be very helpful for me to start with.

Thanks
Tamim

On Aug 1, 2015 1:32 PM, "Shu Dong" <dongs2011@...> wrote:
Hi Tamim and Richard,

Here is how we compute the ECS now. We get the routing path from source host to dest host first, and then compute the endpoint cost according to the routing path and cost metric (e.g. bandwidth, hopcount). 

Computing routing path in ODL is the core of the design and the details are explained as follows:
1. We get the attachment points of source host and dest host, let's call it start_switch and end_switch, by L2Switch.
2. We read flow table of start_switch and find the matched flow entry according to src host IP and dst host IP. If matched flow entry is found, we get next switch from the flow entry, then we repeat this step to chase next switch until we get to end_switch.
4. If there is no matched flow entry, we will force ODL controller to compute a new routing path, by either invoking the path computing function or sending a fake packet. Once the path computing is done, we repeat step 2 until we get to end_switch.

In this way, we get the routing path. Following is the pseudo code:

sw_id = get_attachment_point(src)
dst_sw_id = get_attachment_point(dst)
while (sw_id != dst_sw_id) {
  r <- loop_up(src, dst) in sw_id's flow table
  if (!r) {
    forceComputeRoutingPath(src, dst)
    r <- loop_up(src, dst) in sw_id's flow table
  } 
  sw_id = get_sw_id(r) 
}
 

Once we get the routing path, we can compute endpoint costs based on different cost metrics. Hopcount is easy to compute while bandwidth is a little more complicated since we have to get the bandwidth of each link at first.

@Richard The following is what we have done during the past three days:
1. Get attachment point of host by host IP address. Done. (Shu, Xiao)
2. Look up flow table to get matching flow entry and next switch. Almost Done. (Xiao, Shu)
3. Figure out how to force ODL controller to compute routing path. In progress. (Mingming)
4. Setting up a mininet + controller test environment in our lab. (Junzhuo, Xiao)
5. Some code refactoring. (Shu)

Things left to be done:
1. Figure out how to force ODL controller to compute routing path.
2. Figure out how to get bandwidth of each link.
3. Combine all the parts together.

From tomorrow, we will focus on left problems. Mingming has made some progress in the first one but it will be great if we have someone else to help.

Thanks a lot.

From,
Shu


On Sat, Aug 1, 2015 at 11:55 PM, Y. Richard Yang <yry@...> wrote:
Dear Tamim,

Thanks for the update. We had a mini design summit on ECS last week. The plan is to have a running version in two weeks. Given your questions, it is a good idea that we write down the design soon so that we can all work together. 

@Shu/Junzhuo: I believe that you are leading the ECS design. Can you write down the discussion soon so that we can discuss with Tamim and others.

Thanks!

Richard

On Sat, Aug 1, 2015 at 11:32 AM, MD I. Islam <tamim@...> wrote:
Hi

Could you please advise me if I have understood ECS correctly? 

I was told, in the first step, we calculate the shortest hop-count assuming that the link metric is 1. Do we just implement a shortest-path algorithm for the topology graph based on the data from TopologyManager?

Next step is to figure out a natural interface, in ODL, to configure link metrics and compute routing cost. Do we design a YANG model to configure link properties (link cost metrics)? Currently I don't see link properties (such as delay, bandwidth) in NodeConnector or TopologyUserLinkConfig. Am I missing anything? Do we have to design a data structure to store the cost metric for each link?

Which version of ODL do I look into? I don't see TopologyManager code in the Lithium release. I only see the class files. Am I missing anything? However I see the TopologyManager in Hydrogen release. 

Looking forward to your suggestions.

Thanks
Tamim  

.

On Fri, Jul 17, 2015 at 11:19 PM, MD I. Islam <tamim@...> wrote:

Thanks Kai! I'm looking into it.

On Jul 17, 2015 11:07 PM, "Y. Richard Yang" <yry@...> wrote:
Tamim,

Yes. As Kai pointed out, the TopologyManager is a good place to get started. Could you please start to take a look and then we can sync up?

Thanks!

Richard 

On Saturday, July 18, 2015, Gao Kai <godrickk@...> wrote:
There was a topologymanager in earlier releases you might look into.

On 18/07/15 02:14, MD I. Islam wrote:
That sounds great. Is there an ODL service that I can use to get the network topology and link metric? 

On Fri, Jul 17, 2015 at 1:36 PM, Y. Richard Yang <yry@...> wrote:
Tamim,

On Saturday, July 18, 2015, MD I. Islam <mislam4@...> wrote:
Yeah, interested. Is that the Endpoint Cost Service?
 
Yes. You got it.

 
What are the metrics we are considering? 

One basic step is to make sure we get shortest path fully right. A natural link metric is 1, and we get shortest hop count. A next step is to figure out a natural interface, in ODL, to configure link metrics, and we compute routing cost. A third component in ODL to conduct traffic engineering.

Let's get a couple proposals out in next week. How does this sound?

Richard 
 

On Fri, Jul 17, 2015 at 12:45 PM, Y. Richard Yang <yry@...> wrote:
Dear Tamim,

Wonderful! 

Per my personal wish list, a main feature that I want to improve on is high quality ECS service, based on various metrics. Any interest?

Richard

On Sat, Jul 18, 2015 at 12:35 AM, MD I. Islam <mislam4@...> wrote:
Yeah, sure. I'm interested on adding features to the ALTO ODL server. Please let me know what you want me to do.

Thanks
Tamim

On Fri, Jul 17, 2015 at 12:12 PM, Y. Richard Yang <yry@...> wrote:
Dear Tamim,

Thanks a lot for the questions. Sorry for the late reply, as I am working on a few deadlines. How about we schedule a time to discuss the items in details later next week?

In the mean time, are you interested in engaging more in the alto effort? For example, we are working on adding more features to the ODL server. Any interest in getting engaged?

Thanks!

Richard

On Thu, Jul 16, 2015 at 2:27 PM, MD I. Islam <mislam4@...> wrote:

I have few questions in mind.

How can we get the dynamic cost map from OpenFlow switch? Do we use OpenFlow meter? Are we considering about dynamic cost-map at all? As there will be multiple competing flows, so available bandwidth will change over time. Please advise.

Can we also create a paradigm to cache contents in the SDN controller (or in a controller app)? I think, this shouldn't be in the context of ALTO, but still would be very helpful. For example, if multiple clients watch a live video on a campus network, we should be able to cache the video slices in the controller. Then controller can push the content proactivly without notifying the clients. Again controller can serve the content in a reactive manner through a north bound protocol.

Today I was trying to write a simple application in ONOS. I was trying the VM from sdnhub. I could run ONOS. The sample Foo program compiled, but I couldn't load it on Karaf. If you have a VM that has the development environment setup, that will be very helpful to start.

Please don't hesitate to let me know if i get anything wrong. Looking forward to your suggestions.

Thanks
Tamim




--
-- 
 =====================================
| Y. Richard Yang <yry@...>   |
| Professor of Computer Science       |
 =====================================




--
-- 
 =====================================
| Y. Richard Yang <yry@...>   |
| Professor of Computer Science       |
 =====================================

_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev




--
Richard

_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev




_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev



--
Richard

_______________________________________________
alto-dev mailing list
alto-dev@...
https://lists.opendaylight.org/mailman/listinfo/alto-dev





--
-- 
 =====================================
| Y. Richard Yang <yry@...>   |
| Professor of Computer Science       |
 =====================================

--
You received this message because you are subscribed to the Google Groups "alto-design" group.
To unsubscribe from this group and stop receiving emails from it, send an email to alto-design+unsubscribe@....
To post to this group, send email to alto-design@....
To view this discussion on the web visit https://groups.google.com/d/msgid/alto-design/CANUuoLqi%3DU_mcv1gm5Rgf0p48PdLX3V_xrHLngwk%2BADCrEmFsg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.