Hello All,

I got it. Thanks for your support.

I got arp request in POX which is enough for my need. I just had to
calculate the round trip time.

Thanks,
Sandesh Shrestha

On Sat, Feb 28, 2015 at 6:26 PM, Lucas Brasilino <lr...@cin.ufpe.br> wrote:

> Hi Sandesh,
>
> > I used arbitrary source mac address and source ip. The destination ip and
> > destination mac address is the values of
> > the mininet host connected in port 1 of the switch.
>
> If mininet's destination host is connected to the same switch of your
> source host or it is connected to other switch controlled by Pox (or
> another OF controller) as well, the ICMP reply must be issued by the OF
> component too. Isn't that the case ?
>
> --
> Att
> Lucas Brasilino
> MSc Student @ Federal University of Pernambuco (UFPE) / Brazil
> twitter: @lucas_brasilino
>
>
> 2015-02-28 16:06 GMT-03:00 Sandesh Shrestha <sande...@ualberta.ca>:
>
> Thank you very much for pointing that out Murphy. However, I am still not
>> able to get the response ping. Please share if you have any idea.
>>
>> Thanks,
>> Sandesh Shrestha
>>
>> On Fri, Feb 27, 2015 at 8:39 PM, Murphy McCauley <
>> murphy.mccau...@gmail.com> wrote:
>>
>>> Jumping in with a quick comment below...
>>>
>>> On Feb 27, 2015, at 11:15 AM, Sandesh Shrestha <sande...@ualberta.ca>
>>> wrote:
>>>
>>> Hey Lucas,
>>>
>>> Thanks for the help. I was able to send icmp packets to mininet host
>>> using the code below.
>>> I used arbitrary source mac address and source ip. The destination ip
>>> and destination mac address is the values of
>>> the mininet host connected in port 1 of the switch.
>>>
>>> However I was not able to get the icmp reply from the host.Could you
>>> please check what the probem is.
>>>
>>> from pox.core import core
>>> import pox.openflow.libopenflow_01 as of
>>> import pox.lib.packet as pkt
>>> from pox.lib.addresses import EthAddr,IPAddr
>>>
>>> log= core.getLogger()
>>>
>>> class Icmp(object):
>>>         def __init__(self):
>>>                 core.openflow.addListeners(self)
>>>
>>>         def _handle_PacketIn(self,event):
>>>                 packet=event.parsed
>>>
>>>
>>>                 if packet.find("icmp"):
>>>                         log.debug("Icmp message received")
>>>
>>>         def _handle_ConnectionUp(self,event):
>>>
>>>                 #This part is the ping reply
>>>                 icmp=pkt.icmp()
>>>                 icmp.type=pkt.TYPE_ECHO_REQUEST
>>>                 echo=pkt.ICMP.echo(payload="0123456789")
>>>                 icmp.payload= echo
>>>                 log.debug("This is the icmp payload %s"%icmp.payload)
>>>
>>>                 #Create IP payload
>>>                 ipp = pkt.ipv4()
>>>                 ipp.protocol=ipp.ICMP_PROTOCOL
>>>                 ipp.srcip=IPAddr("10.0.0.10")
>>>                 ipp.dstip=IPAddr("10.0.0.1")
>>>                 ipp.payload=icmp
>>>                 log.debug( "This is the ip payload %s"%ipp.payload)
>>>
>>>                 #Create Ethernet Payload
>>>                 e= pkt.ethernet()
>>>                 e.src=EthAddr("00:00:00:00:00:10")
>>>                 e.dst=EthAddr("00:00:00:00:00:01")
>>>                 e.type=e.IP_TYPE
>>>                 e.payload=ipp
>>>                 log.debug( "This is the ethernet payload %s"%e.payload)
>>>
>>>                 #Send it to first input port
>>>                 msg = of.ofp_packet_out()
>>>                 msg.actions.append(of.ofp_action_output(port=1))
>>>                 msg.date=e.pack()
>>>
>>>
>>> .. I don't know what other problems this code may have, but the above
>>> will certainly be enough to keep it from working.  You mean "msg.data".
>>>
>>>                 msg.in_port=of.OFPP_NONE
>>>                 event.connection.send(msg)
>>>
>>> def launch():
>>>
>>>         def start_switch(event):
>>>                 log.debug("Controlling %s"%(event.connection))
>>>                 Icmp()
>>>         core.openflow.addListenerByName("ConnectionUp",start_switch)
>>>
>>>
>>> Thanks,
>>> Sandesh Shrestha
>>> www.sandeshshrestha.blogspot.com
>>>
>>> On Thu, Feb 26, 2015 at 6:17 AM, Lucas Brasilino <lr...@cin.ufpe.br>
>>> wrote:
>>>
>>>> Hi Sadesh,
>>>>
>>>> I think you can construct a ICMP request as below. I did use python
>>>> interactively just as example.
>>>> The ethernet packet object 'eth' must be sent by using openflow's
>>>> ofp_packet_out() (method) message along
>>>> with ofp_action_output() (method) action to inform switch which output
>>>> port the packet must be sent from.
>>>> python was started from pox installation directory.
>>>>
>>>> >>> import pox.lib.packet as pkt
>>>> >>> from pox.lib.addresses import IPAddr,EthAddr
>>>> >>> echo = pkt.ICMP.echo(payload="0123456789")
>>>> >>> icmp = pkt.icmp(type=pkt.ICMP.TYPE_ECHO_REQUEST,payload=echo)
>>>> >>> ip =
>>>> pkt.ipv4(srcip=IPAddr("10.0.0.1"),dstip=("10.0.0.2"),protocol=pkt.ipv4.ICMP_PROTOCOL,payload=icmp)
>>>> >>> eth =
>>>> pkt.ethernet(src=EthAddr("aa:bb:cc:dd:ee:fe"),dst=EthAddr("aa:bb:cc:dd:ee:ff"),type=pkt.ethernet.IP_TYPE,payload=ip)
>>>> >>> print eth
>>>> [aa:bb:cc:dd:ee:fe>aa:bb:cc:dd:ee:ff IP]
>>>> >>> print eth.payload
>>>> [IP+ICMP 10.0.0.1>10.0.0.2 (cs:00 v:4 hl:5 l:20 t:64)]
>>>> >>> print eth.payload.payload
>>>> [t:ECHO_REQUEST c:0 chk:0][ICMP id:25863 seq:0]
>>>>
>>>>
>>>> I didn't test myself now but it should work :)
>>>> Hope it helps
>>>>
>>>> --
>>>> Att
>>>> Lucas Brasilino
>>>> MSc Student @ Federal University of Pernambuco (UFPE) / Brazil
>>>> twitter: @lucas_brasilino
>>>>
>>>>
>>>> 2015-02-26 0:03 GMT-03:00 Sandesh Shrestha <sande...@ualberta.ca>:
>>>>
>>>> Dear All,
>>>>>
>>>>> I want to create an ICMP request(not reply) packet in POX. How can I
>>>>> do that?Especially what will be the icmp payload and source ip and mac
>>>>> address so that I get reply from the mininet host.
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Sandesh Shrestha
>>>>> www.sandeshshrestha.blogspot.com
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>
>
>
>

Reply via email to