Thanks a lot!
My other question is: how to add the application data to the udp packet?
Here's my code. It doesn't work, the receiver doesn't read the payload.
def send_udp_reply(self, dpid, datapath, eth, ipv4_pkt, udp_segment,
out_port, message):
ofproto = datapath.ofproto
total_length = len(message) + 8
print "UDP Length", total_length
e = ethernet.ethernet(dst=eth.src, src=CONTROLLER_MAC,
ethertype=ether.ETH_TYPE_IP)
i = ipv4.ipv4(dst=ipv4_pkt.src, src=ipv4_pkt.dst, proto=17)
u = udp.udp(src_port=udp_segment.dst_port,
dst_port=udp_segment.src_port, total_length=total_length)
p = packet.Packet()
p.add_protocol(e)
p.add_protocol(i)
p.add_protocol(u)
p.serialize()
actions = [datapath.ofproto_parser.OFPActionOutput(out_port)]
data = p.data
data += message
out = datapath.ofproto_parser.OFPPacketOut(datapath=datapath,
buffer_id=0xffffffff,
in_port=datapath.ofproto.OFPP_CONTROLLER,
actions=actions, data=data)
datapath.send_msg(out)
On Tue, Dec 20, 2016 at 1:37 AM, Iwase Yusuke <iwase.yusu...@gmail.com>
wrote:
> Hi,
>
> As you said, udp_pkt is a instance of UDP Header parser class.
> For getting the payload of UDP, please check pkt.protocols member, first.
> It should be contains each protocol header instance and payload data
> (might be binary type).
> e.g.)
> pkt.protocols might contain [ethernet(...), ipv4(..), udp(..), b'...']
>
> Thanks,
> Iwase
>
> On 2016年12月20日 15:26, Garegin Grigoryan wrote:
> > I think I can do it this way, because udp headers is 8 bytes:
> > udp_pointer = len(msg.data) - udp_segment.total_length + 8
> > print msg.data[udp_pointer:]
> >
> >
> >
> >
> > On Tue, Dec 20, 2016 at 1:08 AM, Garegin Grigoryan <grig...@clarkson.edu
> <mailto:grig...@clarkson.edu>> wrote:
> >
> > Thanks!
> >
> > But udp_pkt contains only the header, as I understand it.
> > I want to get the application data from the udp_segment and nothing
> else (no headers).
> >
> > On Tue, Dec 20, 2016 at 1:05 AM, Iwase Yusuke <
> iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>> wrote:
> >
> > Hi,
> >
> >
> > On 2016年12月20日 14:18, Garegin Grigoryan wrote:
> > > Hi,
> > >
> > > What is the best way to parse UDP segments in ryu controller?
> I want to see the application data.
> > > I've tried this but it doesn't work:
> > >
> > > udp_parser = stream_parser.StreamParser()
> > > print udp_parser.parse(msg.data)
> >
> > Does "msg.data" mean the packet data of PacketIn message?
> >
> > The packet data of PacketIn message is the ethernet frame.
> > So you can use packet.Packet() instead.
> >
> > e.g.)
> > from ryu.lib.packet import packet
> > from ryu.lib.packet import ethernet
> > from ryu.lib.packet import udp
> > ...(snip)
> >
> > pkt = packet.Packet(msg.data)
> > udp_pkt = pkt.get_protocol(udp.udp)
> > if udp_pkt:
> > # do something
> > ...(snip)
> >
> >
> > Thanks,
> > Iwase
> >
> >
> > >
> > > TypeError: Can't instantiate abstract class StreamParser with
> abstract methods try_parse
> > >
> > >
> > > --
> > > Sincerely,
> > > Garegin Grigoryan
> > >
> > >
> > > ------------------------------------------------------------
> ------------------
> > > Developer Access Program for Intel Xeon Phi Processors
> > > Access to Intel Xeon Phi processor-based developer platforms.
> > > With one year of Intel Parallel Studio XE.
> > > Training and support from Colfax.
> > > Order your platform today.http://sdm.link/intel
> > >
> > >
> > >
> > > _______________________________________________
> > > Ryu-devel mailing list
> > > Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.source
> forge.net>
> > > https://lists.sourceforge.net/lists/listinfo/ryu-devel <
> https://lists.sourceforge.net/lists/listinfo/ryu-devel>
> > >
> >
> >
> >
> >
> > --
> > Sincerely,
> > Garegin Grigoryan
> >
> >
> >
> >
> > --
> > Sincerely,
> > Garegin Grigoryan
> >
> >
> > ------------------------------------------------------------
> ------------------
> > Developer Access Program for Intel Xeon Phi Processors
> > Access to Intel Xeon Phi processor-based developer platforms.
> > With one year of Intel Parallel Studio XE.
> > Training and support from Colfax.
> > Order your platform today.http://sdm.link/intel
> >
> >
> >
> > _______________________________________________
> > Ryu-devel mailing list
> > Ryu-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >
>
--
Sincerely,
Garegin Grigoryan
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/intel
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel