goncaloSemedo / MALOB

MALOB is a SDN load balancer application for the Floodlight controller.
0 stars 10 forks source link

Load banlancing function can't work properly. #2

Open TINCEHUANG opened 9 years ago

TINCEHUANG commented 9 years ago

Hello,

I've tried and tested the basic LB function time and again following the guide http://docs.projectfloodlight.org/display/floodlightcontroller/Load+Balancer , but I can't PING successfully. I also use wireshark and catch the packet to find out what have happened, and I found the ARPproxy and packetOut work well, but no FlowMod was sent to SW. After that, I tried HTTP, the same thing happened. Then, oddly enough, I set the default ALGORITHM to "Least CPU usage" and test again, the controller become sending a bunch of wrong FlowMod and LB still can't work well. There are two things I'm not sure. First, when I test the PING, I have not used the extended curl that you'd given(because I believe it only can extend the service based on TCP only and the MALOB may have a default algorithm to handle any type of loadbanlancing). Second, I'm not sure whether I get something wrong when using the curl to test HTTP, so I list my testing code as follow.

In Linux: sudo curl -X POST -d '{"id":"1","name":"vip1","protocol":"http","address":"10.0.0.100","port":"80"}' http://192.168.138.2:8080/quantum/v1.0/vips/ sudo curl -X POST -d '{"id":"1","name":"pool1","protocol":"http","vip_id":"1"}' http://192.168.138.2:8080/quantum/v1.0/pools/ sudo curl -X POST -d '{"id":"1","address":"10.0.0.3","port":"80","pool_id":"1"}' http://192.168.138.2:8080/quantum/v1.0/members/ sudo curl -X POST -d '{"id":"2","address":"10.0.0.4","port":"80","pool_id":"1"}' http://192.168.138.2:8080/quantum/v1.0/members/

In mininet: h3 python -m SimpleHTTPServer 80 & h4 python -m SimpleHTTPServer 80 & h1 wget -O - 10.0.0.100 (ip:10.0.0.x)

Finally I really want to figure out this "curl –x POST –d '{"service_name":" BioApp ","algorithm":"3","port":"6789"}' http:///quantum/v1.0/services/". Does it can use for TCP/UDP/ICMP or only TCP?

Thanks a lot. TINCEHUANG

goncaloSemedo commented 9 years ago

That's odd.

Note that I did not use mininet, I used the GENI test bed, where I created a WAN topology with real machines.

I do not know if this difference has anything to do with the problem. Nevertheless I will run the program using mininet and than, I will let you know what can be wrong.

The "curl –x POST –d '{"service_name":" BioApp ","algorithm":"3","port":"6789"}' http:///quantum/v1.0/services/", works with TCP/UDP/ICMP.

Thanks Gonçalo

goncaloSemedo commented 9 years ago

Hello again,

So I run the program using the mininet and strangely it did not worked.

After some debugging I realized that the problem was the host detection, for some reason in mininet it works differently.

I updated the repository and now it should work.

Thanks for the help in debugging the code ;)

Gonçalo

TINCEHUANG commented 9 years ago

Hello, Thank you for clarifying the issue. Host detection is exactly the question I struggle with. I guess in Mininet, any host/server won't actively send out gratuitous ARP, so the controller can't detect the IP/MAC of hosts. I called this kind of host "slient server" and I also create an issue in
https://github.com/floodlight/floodlight/issues/486. Like, a controller receive a PIng packet but it don't have the DIP and DMAC, and what it can do just flood the packet to every port, the same as the process of ARP? Do you think the reason causing this bug is what I mentioned before ? And how can you solve it?

Thanks a lot :) TINCEHUANG

goncaloSemedo commented 9 years ago

The controller uses the arp packets to discover the hosts.

You could make the controller discover the servers, using the IP packets but the first packet has to be flooded.

Btw is better if put your questions regarding floodlight on their google group: https://groups.google.com/a/openflowhub.org/forum/#!forum/floodlight-dev

Thanks Gonçalo

TINCEHUANG commented 9 years ago

Thanks for your information. So no matter what protocol packet have, as long as controller don't have the endpoint(eg. server) ip or mac, it will simply flood the packet, right?

goncaloSemedo commented 9 years ago

Yes, that is what should happen.

2015-01-22 1:21 GMT+00:00 TINCEHUANG notifications@github.com:

Thanks for your information. So no matter what protocol packet have, as long as controller don't have the endpoint(eg. server) ip or mac, it will simply flood the packet, right?

— Reply to this email directly or view it on GitHub https://github.com/goncaloSemedo/MALOB/issues/2#issuecomment-70955545.

eoluak commented 8 years ago

TINCEHUANG can you please get in touch with me. Thanks