Sure. Thanks!

-Gandhimathi

On 1 April 2016 at 02:22, Iwase Yusuke <iwase.yusu...@gmail.com> wrote:

> Hi,
>
>
> On 2016年03月31日 14:08, Gandhimathi Velusamy wrote:
>
>> Hi Iwase,
>>
>>     Thank you for your reply.
>> Sure I will use binary_str().
>> But why the contents from payload are seen differently for pkt[-1]( I
>> mean when the packet contains payload) and for pkt.data. The pkt.data
>> prints out some symbols while pkt[-1] does not.
>> The actual text file does not have these symbols.
>>
>
> In Ryu packet library, if a TCP packet contains payload data,
> "pkt[-1]" will be a binary data, but with no payload (e.g. SYN packets),
> it is a "ryu.lib.packet.tcp.tcp" instance and "pkt[-1][0:6]" will
> cause an error with no payload.
> So please check "pkt[-1]" is instance of str or not before printing it.
>
> Thanks,
> Iwase
>
>
>> Thanks
>> Gandhimathi
>>
>>
>> On 30 March 2016 at 21:22, Iwase Yusuke <iwase.yusu...@gmail.com <mailto:
>> iwase.yusu...@gmail.com>> wrote:
>>
>>     Hi,
>>
>>     pkt.data contains the raw binary data of packets,
>>     so outputs of "print" is not human readable format.
>>
>>     To convert it human readable, how about using ryu.utils.binary_str()?
>>
>>
>>     $ git diff
>>     diff --git a/ryu/app/simple_switch_13.py b/ryu/app/simple_switch_13.py
>>     index 3e7c598..f39b374 100644
>>     --- a/ryu/app/simple_switch_13.py
>>     +++ b/ryu/app/simple_switch_13.py
>>     @@ -21,6 +21,7 @@ from ryu.ofproto import ofproto_v1_3
>>       from ryu.lib.packet import packet
>>       from ryu.lib.packet import ethernet
>>       from ryu.lib.packet import ether_types
>>     +from ryu.utils import binary_str
>>         class SimpleSwitch13(app_manager.RyuApp):
>>     @@ -79,6 +80,9 @@ class SimpleSwitch13(app_manager.RyuApp):
>>               pkt = packet.Packet(msg.data)
>>               eth = pkt.get_protocols(ethernet.ethernet)[0]
>>       +        print('pkt.data[:6]=%s' % pkt.data[:6])
>>     +        print('binary_str(pkt.data[:6])=%s' %
>> binary_str(pkt.data[:6]))
>>     +
>>               if eth.ethertype == ether_types.ETH_TYPE_LLDP:
>>                   # ignore lldp packet
>>                   return
>>
>>
>>     $ ryu-manager ryu.app.simple_switch_13
>>     loading app ryu.app.simple_switch_13
>>     loading app ryu.controller.ofp_handler
>>     instantiating app ryu.app.simple_switch_13 of SimpleSwitch13
>>     instantiating app ryu.controller.ofp_handler of OFPHandler
>>     pkt.data[:6]=������
>>     binary_str(pkt.data[:6])=\xff\xff\xff\xff\xff\xff
>>     packet in 1 96:a4:5e:ec:aa:f3 ff:ff:ff:ff:ff:ff 1
>>     pkt.data[:6]=��^��
>>     binary_str(pkt.data[:6])=\x96\xa4\x5e\xec\xaa\xf3
>>     packet in 1 56:8a:4e:de:66:ae 96:a4:5e:ec:aa:f3 2
>>     pkt.data[:6]=V�N�f�
>>     binary_str(pkt.data[:6])=\x56\x8a\x4e\xde\x66\xae
>>     packet in 1 96:a4:5e:ec:aa:f3 56:8a:4e:de:66:ae 1
>>
>>
>>     Thanks
>>
>>
>>     On 2016年03月31日 01:15, Gandhimathi Velusamy wrote:
>>
>>         Hi,
>>         I trying to get first few bytes of payload of the packet_in.
>>         if I use *pkt[-1]* to extract the payload, I am getting " 'tcp'
>> object is not iterable" error.
>>
>>         other wise, if I use *pkt.data* , I am seeing some unknown
>> symbols prepended with payload.
>>
>>         def_packet_in_handler(self, ev):
>>
>>         # If you hit this you might want to increase
>>
>>         # the "miss_send_length" of your switch
>>
>>         ifev.msg.msg_len < ev.msg.total_len:
>>
>>                       self.logger.debug("packet truncated: only %s of %s
>> bytes",
>>
>>                                         ev.msg.msg_len, ev.msg.total_len)
>>
>>                   msg = ev.msg
>>
>>                   datapath = msg.datapath
>>
>>                   ofproto = datapath.ofproto
>>
>>                   parser = datapath.ofproto_parser
>>
>>                   in_port = msg.match['in_port']
>>
>>
>>                   pkt = packet.Packet(msg.data)
>>
>>                   eth = pkt.get_protocols(ethernet.ethernet)[0]
>>
>>                   data = pkt.data
>>
>>         ifdata:
>>
>>         print"data:", data
>>
>>
>>         ifeth.ethertype == ether_types.ETH_TYPE_LLDP:
>>
>>
>>         # ignore lldp packet
>>
>>         return
>>
>>                   dst = eth.dst
>>
>>                   src = eth.src
>>
>>                   pkt_arp = pkt.get_protocol(arp.arp)
>>
>>                   pkt_ipv4 = pkt.get_protocol(ipv4.ipv4)
>>
>>         ifpkt_ipv4:
>>
>>                           src_ip = pkt_ipv4.src
>>
>>                           dst_ip = pkt_ipv4.dst
>>
>>         print"IP_SRC:", src_ip
>>
>>         print"IP_DST:", dst_ip
>>
>>
>>                   pkt_tcp = pkt.get_protocol(tcp.tcp)
>>
>>         ifpkt_tcp:
>>
>>                           tcp_src_port = pkt_tcp.src_port
>>
>>                           tcp_dst_port = pkt_tcp.dst_port
>>
>>         print"TCP_Source_port:", tcp_src_port
>>
>>         print"TCP_Dst_port:", tcp_dst_port
>>
>>
>>                   pkt_icmp = pkt.get_protocol(icmp.icmp)
>>
>>         ifpkt_icmp:
>>
>>                           data= pkt_icmp.data
>>
>>         print"ICMP Contains:", data
>>
>>
>>         if( notpkt_arp):
>>
>>                           payload = bytearray(pkt.data)
>>
>>                           payload1 = pkt[-1]
>>
>>         print"Payload by pkt[-1]:", payload1
>>
>>         ifpayload:
>>
>>         print"Payload:", payload, "length_payload:", len(payload)
>>
>>         print"Payload of six bytes:", payload[0:6]
>>
>>
>>
>>
>>         *The output I am seeing when I am using netcat to send a text
>> file from h1 to h2 connected by OVS:*
>>
>>         packet in 37769644528961 02:f6:aa:70:88:e7 02:e4:2e:e4:8a:23 5
>>
>>         packet truncated: only 170 of 1514 bytes
>>
>>         data: ?.?#??p?E???@@B
>>
>>
>>
>>
>>
>>
>>         ?
>>
>>            '?,??G???Qi
>>
>>         ??2?&?tadata field called Tunnel-ID associated with it (see
>> A.2.3.7)
>>
>>         IP_SRC: 10.10.1.1
>>
>>         IP_DST: 10.10.1.10
>>
>>         TCP_Source_port: 33292
>>
>>         TCP_Dst_port: 9999
>>
>>         Payload by pkt[-1]: tadata field called Tunnel-ID associated with
>> it (see A.2.3.7)
>>
>>         Payload: ?.?#??p?E???@@B
>>
>>
>>
>>
>>
>>
>>         ?
>>
>>            '?,??G???Qi
>>
>>         ??2?&?tadata field called Tunnel-ID associated with it (see
>> A.2.3.7) length_payload: 128
>>
>>         Payload of six bytes: ?.?#
>>
>>
>>         May I please, know how to get first six bytes of payload?
>>
>>         Thanks
>>
>>         Gandhimathi
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>>         Transform Data into Opportunity.
>>         Accelerate data analysis in your applications with
>>         Intel Data Analytics Acceleration Library.
>>         Click to learn more.
>>         http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
>>
>>
>>
>>         _______________________________________________
>>         Ryu-devel mailing list
>>         Ryu-devel@lists.sourceforge.net <mailto:
>> Ryu-devel@lists.sourceforge.net>
>>         https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Transform Data into Opportunity.
>> Accelerate data analysis in your applications with
>> Intel Data Analytics Acceleration Library.
>> Click to learn more.
>> http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
>>
>>
>>
>> _______________________________________________
>> Ryu-devel mailing list
>> Ryu-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>
>>
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785471&iu=/4140
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to