Use Wireshark to examine the destination host's interface. Do you see the packet? Is it as you expect it?
-- Murphy On Feb 28, 2015, at 11:06 AM, Sandesh Shrestha <sande...@ualberta.ca> wrote: > 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 >> >> >> >> >> >> >> > >