[pox-dev] Resubmit inside 'learn'

Jayanth Silesh jayanthsileshs.forums at gmail.com
Sun Dec 8 16:46:03 PST 2013


Thank you so much for your response Murphy.

I shall try to workaround your idea.

Thanks,
Jayanth 
Graduate Student
USC


On December 8, 2013 at 3:48:51 PM, Murphy McCauley (murphy.mccauley at gmail.com) wrote:

As described in the POX manual and the OVS documentation, the actions available for learned entries are very limited: output and load. Resubmit is not an option. So the simple answer to your question is that you can't do this.  

Instead, think of learning as just creating tables of data. Then use non-learned entries to look up values in the "data" tables. By looking up values into meta registers and stringing together multiple resubmits, you get a lot of flexibility, but it may take some thinking to structure your rules correctly.  

For example, a learning switch might have a table 0 with the following pseudo-entry:  
<Wildcard> : learn(table=2, match=dst_eth==current_src_eth, action=load(field=meta_register_1, value=current_in_port)), resubmit(table=2), resubmit(table=1)  

And table 1 might be:  
meta_register_1==1 : output(port=1)  
meta_register_1==2 : enqueue(port=2, queue=42)  
meta_register_1==0 : flood()  

If you got a packet from source 01:02:03:0a:0b:0c on port 2, the learn action in table 0 would create a rule in table 2 like:  
dst_eth==01:02:03:0a:0b:0c : load(field=meta_register_1, value=2)  

.. or something like that. (Sorry; I didn't check my work, but hopefully that'll give you the idea.)  

-- Murphy  

On Dec 8, 2013, at 3:25 PM, Jayanth Silesh <jayanthsileshs.forums at gmail.com> wrote:  

> Hello,  
>  
> I am trying to insert a resubmit action from a LEARN module.  
>  
> learn = nx.nx_action_learn(table_id=1,hard_timeout=10)  
> fms = nx.flow_mod_spec.new # Just abbreviating this  
> learn.spec.append(fms( field=nx.NXM_OF_ETH_DST, match=nx.NXM_OF_ETH_DST ))  
> learn.spec.append(fms( field=nx.NXM_OF_ETH_SRC, match=nx.NXM_OF_ETH_SRC ))  
>  
> **** WHAT IS THE CORRECT SYNTAX FOR RESUBMIT IN LEARN ********  
> learn.spec.append(fms( field=nx.nx_action_resubmit(table = 10), output=nx.resubmit_table ))  
>  
> msg1.actions.append(learn)  
> msg1.actions.append(nx.nx_action_resubmit.resubmit_table(table = 10))  
> event.connection.send(msg1)  
>  
>  
> Thank you so much in advance.  
> Jayanth  
> Graduate Student  
> USC  
>  
>  

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20131208/c9ed9b49/attachment-0002.htm>


More information about the pox-dev mailing list