On Aug 31, 2013, at 4:12 AM, AMER AL-GHADHBAN <amer7...@hotmail.com> wrote:

> I am using pox with mininet v2.0
> the main code in my controller is ideal-pairwise-switch

Is this something you wrote, or something you found?  It's not one of POX's 
packaged components.

> My topology is 2 connected switches and 3 hosts in each
> i am trying to do NAT between the switches# i do not know should I exclude 
> ARP pkts from NATing #
>  
> I have added the following matching in _handel_PacketIn 
> 
>     msg = of.ofp_flow_mod()
>     msg.idle_timeout = 10
>     msg.hard_timeout = 30
>     msg.match.dl_dst = packet.src
>     msg.match.dl_src = packet.dst
>     msg.actions.append(of.ofp_action_output(port = event.port))
>     event.connection.send(msg)
>     msg = of.ofp_flow_mod()
>     msg.idle_timeout = 10
>     msg.hard_timeout = 30
>     msg.match.dl_type = packet.IP_TYPE
>     msg.match.dl_dst = packet.src
>     msg.match.nw_dst = packet.next.protodst
>     msg.match.nw_src = packet.next.protosrc

You didn't post the traceback, but I am guessing the above lines are where the 
error came from.  If the packet happens to be an ARP packet, this should work 
fine.  packet is ethernet, packet.next is ARP, and ARP packets have 
protodst/protosrc attributes (these are the ARP TPA/SPA fields).  But if the 
packet is an IP packet, you'll run into problems, because IP packets don't have 
such attributes.  The source and destination IPs are in srcip and dstip 
attributes.

The point is that you need to be aware what type of packet you're handling 
here, and I'm guessing you're not.

>     msg.match.dl_src = packet.dst
>     msg.actions.append(of.ofp_action_output(port = event.port))
>     event.connection.send(msg)
> # I want to get the IP of the packetin to be used in another function
> # i do not know if there is a better way
>  
> this is the NATing
>     msg = of.ofp_flow_mod()
>     msg.idle_timeout = 100
>     msg.hard_timeout = 130
>     msg.match.dl_type = pkt.ethernet.IP_TYPE
>     msg.match.nw_dst = IPAddr("10.0.1.1")
>     msg.actions.append(of.ofp_action_output(port = dst_port))
>     msg.actions.append(of.ofp_action_nw_addr.set_dst(dst))
>     core.openflow.sendToDPID(2, msg)
>  
> I have the following questions:
> 1. what is the causes of Attribute error as mentioned in previous email

Answered above, but the short of it is that your code is in error.  You're 
attempting to access ARP-packet-specific attributes on IP packets.

> 2. Is there a way to do an action like go to next match or continue your 
> matching to subsequent flow table rules # I want the switch to execute the 
> NATing action and continue to execute the learning_switch action#

Not with straight OpenFlow 1.0, but possibly with Open vSwitch or later 
OpenFlow versions.  But I'm not sure you're thinking of this quite right... 
NATing and learning_switch aren't "actions" in the OpenFlow sense.  Moreover, 
doing NAT with OpenFlow 1.0 requires that at least one packet from the flow 
comes to the switch, which is the same requirement as doing controller-based 
learning, so combining both should be possible...

> I appreciate your time and efforts 
> Thank you
> 
> 
> Eng Amer Alghadhban
> COE
> SANS-GCFW
> CEH, SCNP, CCNA
> 
>  
> Subject: Re: Attribute error with ping
> From: murphy.mccau...@gmail.com
> Date: Fri, 30 Aug 2013 14:37:00 -0700
> CC: pox-dev@lists.noxrepo.org
> To: amer7...@hotmail.com
> 
> Please see the final entry of the POX FAQ:
> https://openflow.stanford.edu/display/ONL/POX+Wiki
> 
> -- Murphy
> 
> On Aug 30, 2013, at 2:19 PM, AMER AL-GHADHBAN <amer7...@hotmail.com> wrote:
> 
> Hello,
>  
> Hope you the best of wealth :)
>  
> Some times I am facing this error:
> AttributeError: 'ipv4' object has no attribute 'protodst'
> if i do:
> h2 ping -c3 h1 # i received no echo messages at all
>  
> and after some seconds when i try it again it is pinging without any errors
>  
> best wishes
> 
> Eng Amer Alghadhban
> COE
> SANS-GCFW
> CEH, SCNP, CCNA

Reply via email to