Hi Iwase thank you for your help

i just added your code in event.py and switches.py to test your code,i
created custom topology in mininet with two hosts and one switch which it
change host H1 position from port 1 to port 7, i ran simple_switch.py and
rest_topology.py in my controller(RYU),and i called api (
http//localhost:8080/v1.0/topology/hosts) before movement of host,API
observes network without any problem but when i change H1 position from
port 1 to port 7 and call API again it observes the old position of host.
what should i do to solve this problem??

thnx
mahmoud


On Mon, Nov 27, 2017 at 8:38 AM, Iwase Yusuke <iwase.yusu...@gmail.com>
wrote:

> Hi Mahmoud,
>
> To solve this issue, we need to fix this bug.
> For the quick patch, the following corrects this behavior?
>
>
> $ git diff
> diff --git a/ryu/topology/event.py b/ryu/topology/event.py
> index e7b682c..5b776dc 100644
> --- a/ryu/topology/event.py
> +++ b/ryu/topology/event.py
> @@ -170,4 +170,10 @@ class EventHostAdd(EventHostBase):
>      def __init__(self, host):
>          super(EventHostAdd, self).__init__(host)
>
> +
> +class EventHostDelete(EventHostBase):
> +    def __init__(self, host):
> +        super(EventHostDelete, self).__init__(host)
> +
> +
>  handler.register_service('ryu.topology.switches')
> diff --git a/ryu/topology/switches.py b/ryu/topology/switches.py
> index 7264075..5b0415b 100644
> --- a/ryu/topology/switches.py
> +++ b/ryu/topology/switches.py
> @@ -868,6 +868,14 @@ class Switches(app_manager.RyuApp):
>              self.hosts.add(host)
>              ev = event.EventHostAdd(host)
>              self.send_event_to_observers(ev)
> +        elif self.hosts[host_mac].port != port:
> +            # Case of the host is moved to another port
> +            ev = event.EventHostDelete(self.hosts[host_mac])
> +            self.send_event_to_observers(ev)
> +            # Register the moved host with the new location
> +            self.hosts[host_mac] = host
> +            ev = event.EventHostAdd(host)
> +            self.send_event_to_observers(ev)
>
>          # arp packet, update ip address
>          if eth.ethertype == ether_types.ETH_TYPE_ARP:
>
>
> Please note that the above does not handle the host deletion at the
> topology app side, the host
> might be duplicated in the REST response...
> (Sorry, I couldn't reproduce the host migration on my environment, I
> haven't test it enough)
>
>
> Thanks,
> Iwase
>
> On 2017年11月24日 17:40, Mahmoud Elzoghbi wrote:
>
>>
>> when i call (http//localhost:8080/v1.0/topology/hosts) API it discovers
>> hosts's macs and which port these hosts connected,but when host move from
>> port to another,it discover the old position of host
>>
>> what should i do to solve this problem??
>>
>> thnx
>> mahmoud
>>
>> On Fri, Nov 24, 2017 at 9:16 AM, Iwase Yusuke <iwase.yusu...@gmail.com
>> <mailto:iwase.yusu...@gmail.com>> wrote:
>>
>>     Hi Mahmoud,
>>
>>     When Ryu detects the new host connection, it only checks if the host
>> is known not not at here.
>>
>>     https://github.com/osrg/ryu/blob/ed2c6eca2227c9efb3c7e51cdd6
>> db6bf578ec609/ryu/topology/switches.py#L867-L870
>>     <https://github.com/osrg/ryu/blob/ed2c6eca2227c9efb3c7e51cdd
>> 6db6bf578ec609/ryu/topology/switches.py#L867-L870>
>>
>>     So, as your situation, when the host moves from a port to another,
>> even if Ryu detects it, the
>>     new connection to that host seems to be ignored...
>>     It seems that we need to store which port connecting to the host (not
>> just known or not).
>>
>>     Thanks,
>>     Iwase
>>
>>
>>
>>     On 2017年11月24日 00:36, Mahmoud Elzoghbi wrote:
>>
>>         Hello to everyone,
>>         I used Rest_topology.py to discover hosts in my topology, but
>> when any host moves from Port
>>         1 to port 5 for example Rest_topology.py discover this host in
>> port 1 also , it doesn't
>>         sense the movement of host
>>         What is the problem?
>>
>>
>>         ------------------------------------------------------------
>> ------------------
>>         Check out the vibrant tech community on one of the world's most
>>         engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>
>>
>>
>>         _______________________________________________
>>         Ryu-devel mailing list
>>         Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.source
>> forge.net>
>>         https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>         <https://lists.sourceforge.net/lists/listinfo/ryu-devel>
>>
>>
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>
>>
>>
>> _______________________________________________
>> Ryu-devel mailing list
>> Ryu-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>
>>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to