[pox-dev] working with multiple switches
durga
c.vijaya.durga at gmail.com
Thu Nov 7 22:47:10 PST 2013
Yup! That's it!! That was the issue. below are the macaddr table entries ,
also I can reach all other hosts.
-----
Thank you so much. :)
DEBUG:l2_switching_v5:3 --> [00:00:00:00:00:03>00:00:00:00:00:01 ARP]
{EthAddr('00:00:00:00:00:03'): 1, EthAddr('00:00:00:00:00:01'): 2}
DEBUG:l2_switching_v5:2 --> [00:00:00:00:00:03>00:00:00:00:00:01 ARP]
{EthAddr('00:00:00:00:00:03'): 3, EthAddr('00:00:00:00:00:01'): 2}
DEBUG:l2_switching_v5:1 --> [00:00:00:00:00:03>00:00:00:00:00:01 ARP]
{EthAddr('00:00:00:00:00:03'): 2, EthAddr('00:00:00:00:00:01'): 1}
DEBUG:l2_switching_v5:1 --> [00:00:00:00:00:01>00:00:00:00:00:03 ARP]
{EthAddr('00:00:00:00:00:03'): 2, EthAddr('00:00:00:00:00:01'): 1}
DEBUG:l2_switching_v5:2 --> [00:00:00:00:00:01>00:00:00:00:00:03 ARP]
{EthAddr('00:00:00:00:00:03'): 3, EthAddr('00:00:00:00:00:01'): 2}
DEBUG:l2_switching_v5:3 --> [00:00:00:00:00:01>00:00:00:00:00:03 ARP]
{EthAddr('00:00:00:00:00:03'): 1, EthAddr('00:00:00:00:00:01'): 2}
Cheers!
Durga
On Fri, Nov 8, 2013 at 5:35 PM, durga <c.vijaya.durga at gmail.com> wrote:
> I reread the sample program and I am understanding what you meant.
> As soon as the controller is launched, the _handle_ConnectionUp() handler
> is calling the L2switch module, thus for every connection established , a
> different instance of switch is being created
>
> Thank you, I will work on these lines.
>
>
>
> Cheers!
> Durga
>
>
>
> On Fri, Nov 8, 2013 at 4:55 PM, Murphy McCauley <murphy.mccauley at gmail.com
> > wrote:
>
>> From a quick glance, it looks like you're making exactly the mistake I
>> tried to mention in my previous response. It looks like you have a single
>> MAC-to-port table which is shared between all the switches. As you pointed
>> out, this doesn't work since the mappings are different for different
>> switches and you're just overwriting them.
>>
>> The solution is simply to keep a separate separate entries for each
>> switch. As I mentioned, l2_learning does this by creating a separate
>> instance of LearningSwitch for each connected switch, and each instance of
>> LearningSwitch has its own table.
>>
>> l2_pairs does it a different way. It uses a single switch, but the keys
>> in the table contain both the switch *and* the MAC address (as a tuple,
>> IIRC).
>>
>> -- Murphy
>>
>> On Nov 7, 2013, at 9:48 PM, durga <c.vijaya.durga at gmail.com> wrote:
>>
>> can someone take the pain of going through the below code and let me know
>> where i might be going wrong?
>>
>> I di try compring the results with samples provided, and don't quite find
>> any errors (except that sample code is much cleaner ), but somehow my
>> sw1<-->h1(host1) cannot reach sw3<-->h3(host3).
>>
>> Any insights would be wonderful as this has gotten a little exhaustive on
>> me.
>>
>> Thank you.
>>
>> Cheers!
>> Durga
>>
>>
>>
>> On Fri, Nov 8, 2013 at 2:37 PM, durga <c.vijaya.durga at gmail.com> wrote:
>>
>>> I am working on it as of now. I did use a macport table to store.Below
>>> debug() shows that, (a obvious error in my code), that the port number for
>>> input and outport are same, hence my ARP gets dropped. as inport ==
>>> outport.
>>>
>>> Will keep the group posted as soon i understand where I am going wrong.
>>>
>>> *log.debug("%i --> %s" event.dpid,parsedpkt)*
>>>
>>> my swtch output:
>>> DEBUG:openflow.of_01:Listening on 0.0.0.0:6633
>>>
>>>> INFO:openflow.of_01:[00-00-00-00-00-01 3] connected
>>>> DEBUG:l2_switching_v5:connected to switch with dpid 1
>>>> INFO:openflow.of_01:[00-00-00-00-00-04 1] connected
>>>> DEBUG:l2_switching_v5:connected to switch with dpid 4
>>>> INFO:openflow.of_01:[00-00-00-00-00-03 4] connected
>>>> DEBUG:l2_switching_v5:connected to switch with dpid 3
>>>> INFO:openflow.of_01:[00-00-00-00-00-02 2] connected
>>>> DEBUG:l2_switching_v5:connected to switch with dpid 2
>>>> DEBUG:l2_switching_v5:1 --> [00:00:00:00:00:01>ff:ff:ff:ff:ff:ff ARP]
>>>> {EthAddr('00:00:00:00:00:01'): 1}
>>>> DEBUG:l2_switching_v5:2 --> [00:00:00:00:00:01>ff:ff:ff:ff:ff:ff ARP]
>>>> {EthAddr('00:00:00:00:00:01'): 2}
>>>> DEBUG:l2_switching_v5:3 --> [00:00:00:00:00:01>ff:ff:ff:ff:ff:ff ARP]
>>>> {EthAddr('00:00:00:00:00:01'): 2}
>>>> DEBUG:l2_switching_v5:4 --> [00:00:00:00:00:01>ff:ff:ff:ff:ff:ff ARP]
>>>> {EthAddr('00:00:00:00:00:01'): 2}
>>>> DEBUG:l2_switching_v5:3 --> [00:00:00:00:00:03>00:00:00:00:00:01 ARP]
>>>> {EthAddr('00:00:00:00:00:03'): 1, EthAddr('00:00:00:00:00:01'): 2}
>>>> DEBUG:l2_switching_v5:2 --> [00:00:00:00:00:03>00:00:00:00:00:01 ARP]
>>>> {EthAddr('00:00:00:00:00:03'): 3, EthAddr('00:00:00:00:00:01'): 2}
>>>>
>>>> *DEBUG:l2_switching_v5:1 --> [00:00:00:00:00:03>00:00:00:00:00:01 ARP] *
>>>> *{EthAddr('00:00:00:00:00:03'): 2, EthAddr('00:00:00:00:00:01'): 2} *
>>>> *dropping*
>>>
>>>
>>> expected:
>>>
>>>>
>>>>
>>>> *DEBUG:forwarding.l2_learning:1-->[00:00:00:00:00:01>00:00:00:00:00:03
>>>> IP]**{EthAddr('00:00:00:00:00:03'): 2, EthAddr('00:00:00:00:00:01'):
>>>> 1}*
>>>
>>>
>>> Cheers!
>>> Durga
>>>
>>>
>>>
>>> On Fri, Nov 8, 2013 at 1:29 PM, Murphy McCauley <
>>> murphy.mccauley at gmail.com> wrote:
>>>
>>>> You'll see that the table is held in an instance variable
>>>> (self.macToPort). self in this case is an instance of LearningSwitch. And
>>>> the key here is that there's an instance of LearningSwitch for each switch
>>>> that connects (created by a ConnectionUp handler).
>>>>
>>>> -- Murphy
>>>>
>>>> On Nov 7, 2013, at 4:32 AM, durga <c.vijaya.durga at gmail.com> wrote:
>>>>
>>>> While, I am reading docs to work on vlans , I was as well experimenting
>>>> on using multiple switches.Without creating any complex topology, i stuck
>>>> to linear topology by running the below in mininet
>>>>
>>>> sudo mn --topo linear ,4 --mac --switch ovsk --controller remote
>>>>
>>>> which creates 5 links(h1<-->s1, h2<-->s2,s1<-->c0,s2<-->c0,s1<-->s2)
>>>> When I run the sample l2_learning switch module, h1 pings h2
>>>> successfully.
>>>> But how does the code differentiate between 2 ports if host 1 is
>>>> connected to port 1 of sw1( thus event.port ==1) and h2 is connected to
>>>> port1 of sw2(port == 1), then port == event.port condition might fail
>>>> right? (though it doesnot).
>>>>
>>>> else:
>>>> port = self.macToPort[packet.dst]
>>>> if port == event.port: # 5
>>>> # 5a
>>>> log.warning("Same port for packet from %s -> %s on %s.%s.
>>>> Drop."
>>>> % (packet.src, packet.dst, dpid_to_str(event.dpid), port))
>>>> drop(10)
>>>> return
>>>> # 6
>>>>
>>>>
>>>> the program I wrote, is failing at this very condition.
>>>>
>>>> Cheers!
>>>> Durga
>>>>
>>>>
>>>>
>>>
>> <l2swicth.rtf>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20131108/b90bdfef/attachment-0002.htm>
More information about the pox-dev
mailing list