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 >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> >>> >>> >> > > > >