[pox-dev] ARP request

Amer amer7777 at hotmail.com
Wed Nov 13 14:15:30 PST 2013


Hello,

You can use:
1. Broadcast something as following
  If match.dl_type = packet.ARP :
      match.src=Packet.src
      match.dst=packet.dst
      action = FLOOD

2. Set the ARP in each for each hosts using new version of mininet
check this post in mininet archive
https://mailman.stanford.edu/pipermail/mininet-discuss/2013-October/003258.html


3. Read MAC addresses from a file

http://pieknywidok.blogspot.com/2012/08/arp-and-ping-in-pox-building-pox-based.html?m=1

4. Learn ARP/MAC address
this how to learn MAC and can be used to respond to ARP if coupled with previous code 

http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/2013-November/001190.html

I hope this is helpful

Thanks regards,
Amer
Sent from my iPhone

On ١٣‏/١١‏/٢٠١٣, at ١١:١٣ م, Muhammad Furqan Gagan <furqan.gagan at gmail.com> wrote:

> After implementing my this ARP code in my controller I am recieving this error:
> 
> ERROR:openflow.of_01:[00-00-00-00-00-03 4] OpenFlow Error:
> [00-00-00-00-00-03 4] Error: header:
> [00-00-00-00-00-03 4] Error:   version: 1
> [00-00-00-00-00-03 4] Error:   type:    1 (OFPT_ERROR)
> [00-00-00-00-00-03 4] Error:   length:  76
> [00-00-00-00-00-03 4] Error:   xid:     117
> [00-00-00-00-00-03 4] Error: type: OFPET_BAD_REQUEST (1)
> [00-00-00-00-00-03 4] Error: code: OFPBRC_BUFFER_EMPTY (7)
> [00-00-00-00-00-03 4] Error: datalen: 64
> [00-00-00-00-00-03 4] Error: 0000: 01 0e 00 58 00 00 00 75  00 00 00 00 00 03 00 00   ...X...u........
> [00-00-00-00-00-03 4] Error: 0010: 00 00 00 02 00 00 00 00  00 01 ff ff 00 00 08 06   ................
> [00-00-00-00-00-03 4] Error: 0020: 00 01 00 00 0a 00 00 02  0a 00 00 01 00 00 00 00   ................
> [00-00-00-00-00-03 4] Error: 0030: 00 00 00 00 00 00 00 00  00 00 00 0a 00 1e 80 00   …………….
> 
> Any ideas how to overcome?
> 
> Thanks
> 
> Muhammad
> 
> On Nov 13, 2013, at 1:03 PM, Muhammad Furqan Gagan <furqan.gagan at gmail.com> wrote:
> 
>> I have implemented this code to handle ARP.. is it ok ? I am not sure about that.. need your comments please
>> 
>>         a= packet.find('arp')
>>         if a:
>>             if a.prototype == arp.PROTO_TYPE_IP:
>>                 if a.hwtype == arp.HW_TYPE_ETHERNET:
>>                     if a.protosrc != 0:
>>                         if a.protosrc in arp_tale:
>>                             if a.hwsrc == True:
>>                                 Mac = EthAddr(a.hwsrc)
>>                                 arp_table[a.protosrc] = Mac:
>> 
>>               
>>             if a.opcode == arp.REQUEST:
>>             # Maybe we can answer
>> 
>>             if a.protodst in arp_table:
>>                 r = arp()
>>                 r.hwtype = a.hwtype
>>                 r.prototype = a.prototype
>>                 r.hwlen = a.hwlen
>>                 r.protolen = a.protolen
>>                 r.opcode = arp.REPLY
>>                 r.hwdst = a.hwsrc
>>                 r.protodst = a.protosrc
>>                 r.protosrc = a.protodst
>>                 Mac = arp_table[a.protodst]
>>                 
>>                 Mac = _dpid_to_mac(dpid)
>>                 r.hwsrc = Mac
>>                 e = ethernet(type=packet.type, src=_dpid_to_mac(dpid),
>>                 dst=a.hwsrc)
>>                 e.payload = r
>>                 log.info("%s answering ARP for %s" % (dpid_to_str(dpid),
>>                 str(r.protosrc)))
>>                 msg = of.ofp_packet_out()
>>                 msg.data = e.pack()
>>                 msg.actions.append(of.ofp_action_output(port =
>>                                                           of.OFPP_IN_PORT))
>>                 msg.in_port = inport
>>                 event.connection.send(msg)
>>                      
>>             else:
>>                 msg = of.ofp_packet_out()
>>                 msg.actions.append(of.ofp_action_output(port = of.OFPP_FLOOD))
>>                 msg.data = event.ofp
>>                 event.connection.send(msg.pack())
>> 
>> Thanks
>> 
>> Muhammad
>> 
>> On Nov 13, 2013, at 12:56 PM, Murphy McCauley <murphy.mccauley at gmail.com> wrote:
>> 
>>> Durga is spot on, but I'll throw in another couple things you might look at:
>>> forwarding.l3_learning handles ARP
>>> proto.arp_helper attempts to make it easier to work with ARP
>>> 
>>> (Oh, and misc.arp_responder has moved to proto.arp_responder in newer versions.)
>>> 
>>> -- Murphy
>>> 
>>> On Nov 13, 2013, at 2:06 AM, durga <c.vijaya.durga at gmail.com> wrote:
>>> 
>>>> 
>>>> hello,
>>>> Seems pox supports packet type as arp, can be found here (pox / pox / lib / packet / arp.py ), as well as may be you can get some help by refering to the below example.
>>>>  pox / pox / misc / arp_responder.py 
>>>> 
>>>> Cheers!
>>>> Durga
>>>> 
>>>> 
>>>> 
>>>> On Wed, Nov 13, 2013 at 8:35 PM, Muhammad Furqan Gagan <furqan.gagan at gmail.com> wrote:
>>>>> Hello,
>>>>> 
>>>>> Any one know how to handle ARP request in controller?
>>>>> 
>>>>> Thanks
>>>>> 
>>>>> Muhammad
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.noxrepo.org/pipermail/pox-dev-noxrepo.org/attachments/20131114/91d8ec6c/attachment-0002.htm>


More information about the pox-dev mailing list