[pox-dev] working with multiple switches

Giang Nguyen giangnvbk at gmail.com
Fri Nov 8 03:16:11 PST 2013


Hello Durga,

What's docs you're reading for deploying VLANs? Could you share it?

Thank you so much

--
Giang Nguyen
Seoul, Korea


On 8 November 2013 15:47, durga <c.vijaya.durga at gmail.com> wrote:

> 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>
>>>
>>>
>>>
>>
>


-- 
Giang Nguyen
Master at School of Electronic and Telecommunication Engineering
Soongsil University
Seoul,South Korea
YM:giangnguyen_bk
Mobile:(+84) 016646.8888.4
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20131108/a2bb4782/attachment-0002.htm>


More information about the pox-dev mailing list