[pox-dev] Controller to split traffic by subnet

Murphy McCauley murphy.mccauley at gmail.com
Wed May 29 10:32:13 PDT 2013


Here are the two copies of splitting_table copy and pasted from the old version:
 48:    self.splitting_table = { \
 49:        0x0000000000000007: (1,2,3), \
 50:        0x0000000000000008: (2,3,1) \
 51:        }

140:    splitting_table = { \
141:        0x0000000000000007: (1,2,3), \
142:        0x0000000000000008: (3,2,1) \
143:    }

Now can you see it? :)

-- Murphy

On May 29, 2013, at 8:51 AM, Alison Chan wrote:

> https://gist.github.com/alis0nc/5639697/10402f02adc5ae3911bc6dff1a555af68a74161c#file-my_controller-py
> 
> I've refactored and made each message its own flow_mod object, and I'm
> getting 'Destination Host Unreachable' for anything from one side to
> the other. I probably just need smacked upside the head with whatever
> it is that I'm missing.
> 
> On Tue, May 28, 2013 at 11:07 PM, Alison Chan <chan7781 at kettering.edu> wrote:
>> Oops, wasn't my intention to take this off list. I usually don't remember to
>> hit Reply All. :)
>> 
>> Alison Chan
>> (mobile)
>> 
>> On 28 May 2013 23:01, "Murphy McCauley" <murphy.mccauley at gmail.com> wrote:
>>> 
>>> On May 28, 2013, at 7:50 AM, Alison Chan wrote:
>>> 
>>>> Thank you for pointing that out. The flow mods sent later, had the
>>>> previously set actions in them too.
>>> 
>>> Right.
>>> 
>>>> I fixed that by creating a new flow mod object for each one to be
>>>> sent
>>> 
>>> Did you fix ALL of them?
>>> 
>>> BTW, I think it's generally cleaner to create new flow mod objects, but
>>> the actions are just a sequence.  Meaning it's legal to do something like...
>>> msg.actions = [of.ofp_output_action(...)]
>>> 
>>>> and now one subnet works, but the other one doesn't. When I add
>>>> the commented out line 170, it makes the 10.0.0.0/25 subnet not work
>>>> again.
>>> 
>>> Commenting out this line makes this flow only match on the in_port which
>>> surely isn't what you want.
>>> 
>>>> 
>>>> https://gist.github.com/alis0nc/5639697/3371a3050b2a28e178c5715e1fa357b4578e0acf#file-my_controller-py
>>> 
>>> So you've got the splitting table and the subnets copied at two places in
>>> the code.  I'd suggest you refactor a bit (removing one of them), which will
>>> make this cleaner and also might make the problem apparent...
>>> 
>>> 
>>> For what it's worth, with a couple minor tweaks, your code works. :)
>>> 
>>> -- Murphy
>>> 
>>> (P.S., you dropped the list from the CC, but in general, it's nice to keep
>>> discussion on the list so that others can benefit)
>>> 
>>>> On Fri, May 24, 2013 at 5:41 PM, Murphy McCauley
>>>> <murphy.mccauley at gmail.com> wrote:
>>>>> Hard to say if this is the problem, but... I think there's something
>>>>> funny with your actions.  I think you'd see it if you looked at the action
>>>>> lists in the flow_mod messages to s7/s8 using Wireshark.
>>>>> 
>>>>> -- Murphy
>>>>> 
>>>>> On May 24, 2013, at 1:23 PM, Alison Chan wrote:
>>>>> 
>>>>>> https://gist.github.com/alis0nc/5639697#file-my_controller-py
>>>>>> I've added a match for ARP and made sure of the prerequisite as per
>>>>>> that other posting. I haven't seen a loop error since. Also, s7 and s8
>>>>>> don't learn or flood anyway, they're handled in start_switch and the
>>>>>> l2 learning method is in the 'else' clause.
>>>>>> 
>>>>>> Pinging to a host on the same 'side' works now, and I've gotten rid of
>>>>>> all the errors. But one side still can't talk to the other side. Am I
>>>>>> doing ARM wrong?
>>>>>> 
>>>>>> On Fri, May 24, 2013 at 1:13 AM, Murphy McCauley
>>>>>> <murphy.mccauley at gmail.com> wrote:
>>>>>>> At least one of your problems is the same as was recently discussed
>>>>>>> in this post:
>>>>>>> 
>>>>>>> http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/2013-May/000732.html
>>>>>>> 
>>>>>>> It also looks like your topology has a loop but that sufficient
>>>>>>> measures are not taken to prevent packets from looping.  If your subnet
>>>>>>> splitting was working, this wouldn't be a loop for IP, but still would but
>>>>>>> for non-IP.  This may be why you're getting a BUFFER_UNKNOWN area -- looped
>>>>>>> packets may be exhausting all the buffers.  You need to somehow modify your
>>>>>>> controller to prevent looping. One way might be to change the resend_packet
>>>>>>> to OFPP_ALL to use OFPP_FLOOD instead and then run the
>>>>>>> openflow.spanning_tree component.  You could also just modify it so that S7
>>>>>>> and S8 use single-port output instead of flooding, never use one of the
>>>>>>> alternate paths, and don't do MAC learning.
>>>>>>> 
>>>>>>> As a sidenote, you might want to take a look at the log module --
>>>>>>> there's no need to tee into a file; the log module can be configured to just
>>>>>>> write a file for you.
>>>>>>> 
>>>>>>> -- Murphy
>>>>>>> 
>>>>>>> On May 23, 2013, at 2:55 PM, Alison Chan wrote:
>>>>>>> 
>>>>>>>> Hello,
>>>>>>>> 
>>>>>>>> I'm having trouble designing my controller to split traffic by ip
>>>>>>>> subnet. The relevant controller code, topology setup, and pox log
>>>>>>>> file
>>>>>>>> are in the linked gist:
>>>>>>>> 
>>>>>>>> https://gist.github.com/alis0nc/5639697
>>>>>>>> 
>>>>>>>> The topology and port assignnments look right as confirmed by 'net'
>>>>>>>> in
>>>>>>>> mininet. Here is what I'm doing:
>>>>>>>> 
>>>>>>>> * start mininet by sudo mn --custom ~/mininet/custom/topo-ac.py
>>>>>>>> --topo=mytopo --controller=remote,ip=127.0.0.1,port=6633 --mac
>>>>>>>> * set up IP addresses on the nodes as follows:
>>>>>>>> * h1: 10.0.0.1
>>>>>>>> * h2: 10.0.0.129
>>>>>>>> * h3: 10.0.0.2
>>>>>>>> * h4: 10.0.0.130
>>>>>>>> * start PoX by pox/pox.py misc.my_controller 2>&1 | tee -i
>>>>>>>> poxlog.txt
>>>>>>>> * mininet> h1 ping -c1 h2
>>>>>>>> * destination host unreachable
>>>>>>>> * wait about 5 seconds
>>>>>>>> * the errors start coming and don't stop
>>>>>>>> 
>>>>>>>> This is really my first OF controller past the tutorial so I
>>>>>>>> apologise
>>>>>>>> if I'm doing something really really stupid... But any assistance
>>>>>>>> would be appreciated.
>>>>>>>> 
>>>>>>>> Cheers,
>>>>>>>> --
>>>>>>>> Alison Chan
>>>>>>>> Kettering University (2015): BSCS (Security concentration), BSCE,
>>>>>>>> Pre-Law minor
>>>>>>>> Research Assistant, Department of Computer Science
>>>>>>>> Secretary, Kettering University Allies, A-Section
>>>>>>>> +1 909 278 7753
>>>>>>>> chan7781 at kettering.edu
>>>>>>>> 
>>>>>>>> ()  ascii ribbon campaign for plain text email
>>>>>>>> /\  http://www.asciiribbon.org
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> Alison Chan
>>>>>> Kettering University (2015): BSCS (Security concentration), BSCE,
>>>>>> Pre-Law minor
>>>>>> Research Assistant, Department of Computer Science
>>>>>> Secretary, Kettering University Allies, A-Section
>>>>>> +1 909 278 7753
>>>>>> chan7781 at kettering.edu
>>>>>> 
>>>>>> ()  ascii ribbon campaign for plain text email
>>>>>> /\  http://www.asciiribbon.org
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Alison Chan
>>>> Kettering University (2015): BSCS (Security concentration), BSCE,
>>>> Pre-Law minor
>>>> Research Assistant, Department of Computer Science
>>>> Secretary, Kettering University Allies, A-Section
>>>> +1 909 278 7753
>>>> chan7781 at kettering.edu
>>>> 
>>>> ()  ascii ribbon campaign for plain text email
>>>> /\  http://www.asciiribbon.org
>>> 
>> 
> 
> 
> 
> -- 
> Alison Chan
> Kettering University (2015): BSCS (Security concentration), BSCE, Pre-Law minor
> Research Assistant, Department of Computer Science
> Secretary, Kettering University Allies, A-Section
> +1 909 278 7753
> chan7781 at kettering.edu
> 
> ()  ascii ribbon campaign for plain text email
> /\  http://www.asciiribbon.org




More information about the pox-dev mailing list