Hi,

Thank you for sending captured packets and your snip.

I exported a single Packet-In message with the packet you pointed.
The sent packet was truncated.

Also, I found that the max packet size sent to controller is set
to 256 bytes at the following:
---
req = parser.OFPSetConfig(datapath, ofproto_v1_3.OFPC_FRAG_REASM, 256)
---
http://ryu.readthedocs.io/en/latest/ofproto_v1_3_ref.html#ryu.ofproto.ofproto_v1_3_parser.OFPSetConfig

Could you try with "miss_send_len=ofproto.OFPCML_NO_BUFFER"?
---
req = parser.OFPSetConfig(datapath, ofproto_v1_3.OFPC_FRAG_REASM,
                          ofproto.OFPCML_NO_BUFFER)
---
This means that the switch should send all packet data to controller
without truncating when no flow matched.

Thanks,
Iwase


On 2016年12月22日 14:28, Munther Numan wrote:
> Dear Mr. Iwase,
> I hope you're fine and well ,
> 
> Thank you very much for your replay .
> 
> 1- I am using Open Vswitch.
> 2-Thank you very much for your explain about the flags ,  Actually I am not 
> know that before , I am just work with SDN and Ryu from some months ago , I 
> Just follow the below URL have some my problem : 
> https://sourceforge.net/p/ryu/mailman/message/32984827/
> 3- I used " OFPC_FRAG_REASM" in OpenFlow set config and not anything happen .
> 4- I capture the traffic from controller side and I attached the capture in 
> the attached file.
> 5- from the capture I see the control received whole the packet with 
> [OFPC_FRAG_NORMAL and OFPC_FRAG_REASM ] 
> 6- I am also print the packet received in controller.
> 7- In attached file you can find the capture packet from controller side , 
> packet in function , switch feature function .
> 
> 
> Thank you .
> Best Regards.
> 
> Munther Numan
> Master Student
> Faculty of Engineering
> University Putra Malaysia
> 
> -----Original Message-----
> From: Iwase Yusuke [mailto:iwase.yusu...@gmail.com] 
> Sent: Wednesday, December 21, 2016 4:01 PM
> To: munpro...@gmail.com
> Cc: olivier.des...@gmail.com; ryu-devel@lists.sourceforge.net
> Subject: Re: [Ryu-devel] bug in parsing dhcp packet
> 
> Hi,
> 
> 
> On 2016年12月20日 19:56, Munther Numan wrote:
>> Dear Mr. Iwase
>> I hope you're fine and well ,
>>
>> Thank you very much for your replay .
>>
>> 1- I capture these DHCP packet from switch , Actually I run Wireshark  in a 
>> switch and I select switch-eth1 the source of my captures.
>> 2- I am not sure if the data send by output function or not , I am using the 
>> below codes for Event OFP Switch Features :
>>      
>>      @set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER(
>>      def switch_features_handler(self, ev):
>>      datapath = ev.msg.datapath
>>      ofproto = datapath.ofproto
>>      parser = datapath.ofproto_parser
>>      match = parser.OFPMatch()
>>      actions = [parser.OFPActionOutput(ofproto.OFPP_CONTROLLER, 
>> ofproto.OFPCML_NO_BUFFER)]
>>      self.add_flow(datapath, 0, match, actions)
>>      req = parser.OFPSetConfig(datapath, ofproto_v1_3.OFPC_FRAG_NORMAL, 256)
>>      datapath.send_msg(req)
>>
>> and when I search in Google I see same issue happened with someone and 
>> others people told to him to add below line in the end of E Event OFP Switch 
>> Features :
>>      req = parser.OFPSetConfig(datapath, ofproto_v1_3.OFPC_FRAG_NORMAL, 256(
>>      datapath.send_msg(req)
>>
>> and these two lines not allow to truncated the request .
> 
> Hummm...
> Fist, which switch are you using? Open vSwitch? Or else?
> IIRC, OVS will handle fragmented frames automatically and you don't need to 
> send OFPSetConfig message explicitly, I guess.
> 
> And, OFPC_FRAG_NORMAL does not mean "Not allow to be truncated", but just "Do 
> not special handling for fragments".
> 
> OpenFlow Spec 1.3.5 "7.3.2 Switch Configuration" says:
> ---
> enum ofp_config_flags {
>   /* Handling of IP fragments. */
>   OFPC_FRAG_NORMAL = 0, /* No special handling for fragments. */
>   OFPC_FRAG_DROP = 1 << 0, /* Drop fragments. */
>   OFPC_FRAG_REASM = 1 << 1, /* Reassemble (only if OFPC_IP_REASM set). */
>   OFPC_FRAG_MASK = 3, /* Bitmask of flags dealing with frag. */ };
> ---
> 
> If you want your switch to handle fragmented frames, I guess you should send 
> OFPSetConfig message with "OFPC_FRAG_REASM" flag.
> 
> Another approach:
> Could you capture packets on your controller side?
> Wireshark can analyze the packet data contained in Packet-In messages, and 
> you can check whether the sent packet date is truncated or not.
> 
> Thanks,
> Iwase
> 
> 
>>
>>
>> Best Regards
>> Munther Numan
>> Master Student
>> Faculty of Engineering
>> University Putra Malaysia
>>
>> -----Original Message-----
>> From: Iwase Yusuke [mailto:iwase.yusu...@gmail.com]
>> Sent: Tuesday, December 20, 2016 10:38 AM
>> To: munpro...@gmail.com
>> Cc: ryu-devel@lists.sourceforge.net; olivier.des...@gmail.com
>> Subject: Re: [Ryu-devel] bug in parsing dhcp packet
>>
>> Hi,
>>
>> First, could you confirm on which point you get captures?
>> On your host? Or on your switch?
>>
>> If you get these DHCP packets were captured on your host or switch, please 
>> confirm that the sent packet data to the controller is NOT truncated by 
>> "output" action in your flows.
>> If "max_len" is other than "OFPCML_NO_BUFFER", the packet data sent to the 
>> controller might be truncated by switches.
>>   
>> http://ryu.readthedocs.io/en/latest/ofproto_v1_3_ref.html#ryu.ofproto.
>> ofproto_v1_3_parser.OFPActionOutput
>>
>> FYI, on my environment, DHCP packets in your pcapng file could be decoded.
>>
>> # Note: I converted pcapng file into pcap file for convenience $ 
>> python print_pcap_data.py 1-dhcp_discover_packet.pcap
>> *** 1, 1481953420.361685
>> ethernet(dst='ff:ff:ff:ff:ff:ff',ethertype=2048,src='00:00:00:00:00:01
>> '), 
>> ipv4(csum=14742,dst='255.255.255.255',flags=0,header_length=5,identifi
>> cation=0,offset=0,option=None,proto=17,src='0.0.0.0',tos=16,total_leng
>> th=328,ttl=128,version=4), 
>> udp(csum=34166,dst_port=67,src_port=68,total_length=308), 
>> dhcp(boot_file=b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',chaddr='00:00:00:00:00:01',ci
>> addr='0.0.0.0',flags=0,giaddr='0.0.0.0',hlen=6,hops=0,htype=1,op=1,opt
>> ions=options(magic_cookie='99.130.83.99',option_list=[option(length=1,
>> tag=53,value=b'\x01'), option(length=8,tag=12,value=b'sdnhubvm'), 
>> option(length=13,tag=55,value=b'\x01\x1c\x02\x03\x0f\x06w\x0c,/\x1ay*'
>> )],options_len=64),secs=0,siaddr='0.0.0.0',sname='\x00\x00\x00\x00\x00
>> \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>> 00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
>> \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>> 00\x00\x00\x00\x00\x00\x00',xid=559339326,yiaddr='0.0.0.0')
>>
>> *** 2, 1481953470.988880
>> ethernet(dst='ff:ff:ff:ff:ff:ff',ethertype=2048,src='00:00:00:00:00:01
>> '), 
>> ipv4(csum=14742,dst='255.255.255.255',flags=0,header_length=5,identifi
>> cation=0,offset=0,option=None,proto=17,src='0.0.0.0',tos=16,total_leng
>> th=328,ttl=128,version=4), 
>> udp(csum=52048,dst_port=67,src_port=68,total_length=308), 
>> dhcp(boot_file=b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',chaddr='00:00:00:00:00:01',ci
>> addr='0.0.0.0',flags=0,giaddr='0.0.0.0',hlen=6,hops=0,htype=1,op=1,opt
>> ions=options(magic_cookie='99.130.83.99',option_list=[option(length=1,
>> tag=53,value=b'\x01'), option(length=8,tag=12,value=b'sdnhubvm'), 
>> option(length=13,tag=55,value=b'\x01\x1c\x02\x03\x0f\x06w\x0c,/\x1ay*'
>> )],options_len=64),secs=0,siaddr='0.0.0.0',sname='\x00\x00\x00\x00\x00
>> \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>> 00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
>> \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>> 00\x00\x00\x00\x00\x00\x00',xid=2491751989,yiaddr='0.0.0.0')
>>
>> *** 3, 1481953473.204261
>> ethernet(dst='ff:ff:ff:ff:ff:ff',ethertype=2048,src='00:00:00:00:00:01
>> '), 
>> ipv4(csum=14742,dst='255.255.255.255',flags=0,header_length=5,identifi
>> cation=0,offset=0,option=None,proto=17,src='0.0.0.0',tos=16,total_leng
>> th=328,ttl=128,version=4), 
>> udp(csum=52045,dst_port=67,src_port=68,total_length=308), 
>> dhcp(boot_file=b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>> 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>> x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',chaddr='00:00:00:00:00:01',ci
>> addr='0.0.0.0',flags=0,giaddr='0.0.0.0',hlen=6,hops=0,htype=1,op=1,opt
>> ions=options(magic_cookie='99.130.83.99',option_list=[option(length=1,
>> tag=53,value=b'\x01'), option(length=8,tag=12,value=b'sdnhubvm'), 
>> option(length=13,tag=55,value=b'\x01\x1c\x02\x03\x0f\x06w\x0c,/\x1ay*'
>> )],options_len=64),secs=3,siaddr='0.0.0.0',sname='\x00\x00\x00\x00\x00
>> \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>> 00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
>> \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
>> 00\x00\x00\x00\x00\x00\x00',xid=2491751989,yiaddr='0.0.0.0')
>>
>>
>> So I guess Ryu got the truncated packets and failed to decode them...
>>
>>
>> Thanks,
>> Iwase
>>
>>
>> On 2016年12月17日 14:59, Munther Numan wrote:
>>> Dear Mr.Olivier Desnoë
>>>
>>> I hope you're fine and well,
>>>
>>>  
>>>
>>> At first thank you very much for your fast response , actually I am just 
>>> start with Ryu .
>>>
>>>  
>>>
>>> The issue :
>>>
>>> 1-      The host send DHCP discover packet , I capture the packet you can 
>>> find it in the attached of this e-mail.
>>>
>>> 2-      The DHCP discover packet content 4 protocols ( Ethernet , IPv4 , 
>>> UDP , DHCP-discover )  
>>>
>>> 3-      The Ryu controller when received the DHCP discover packet see the 
>>> packet content only 3 protocols ( Ethernet , IPv4 ,UDP ), you can see the 
>>> message received by Ryu controller in attached file of this e-mail.
>>>
>>> 4-      Therefor I cannot parsing the DHCP discover packet and 
>>> simple_dhcp_server is not work.
>>>
>>>  
>>>
>>> I hope my explain for the issue is clear , and I do not why this happen , 
>>> is the issue form controller ? or from me ?
>>>
>>>  
>>>
>>> Thank you very much
>>>
>>>  
>>>
>>> Best Regards
>>>
>>> Munther Numan
>>> Master Student
>>> Faculty of Engineering
>>> University Putra Malaysia
>>>
>>> *From:*Olivier Desnoë [mailto:olivier.des...@gmail.com]
>>> *Sent:* Friday, December 16, 2016 9:23 PM
>>> *To:* Munther Numan; Ryu-devel
>>> *Subject:* Re: [Ryu-devel] bug in parsing dhcp packet
>>>
>>>  
>>>
>>> Have you tried to put some debug prints in the parsing function of dhcp.py?
>>>
>>>  
>>>
>>> Le ven. 16 déc. 2016 à 12:28, Munther Numan <munpro...@gmail.com 
>>> <mailto:munpro...@gmail.com>> a écrit :
>>>
>>>     Dear all , Greeting ..
>>>
>>>      
>>>
>>>     I get error when I run simple dhcp server , I capture the packet in 
>>> wireshark and I see the packet is content 4 protocols ( Ethernet , ipv4 , 
>>> udp , dhcp discover ) but in Ryu framework I see only 3 protocols such as 
>>> below :
>>>
>>>      
>>>
>>>             msg =ev.msg
>>>
>>>             pkt =packet.Packet(msg.data)
>>>
>>>             printpkt.protocols
>>>
>>>             """ outputs:
>>>
>>>             
>>> [ethernet(dst='ff:ff:ff:ff:ff:ff',ethertype=2048,src='a0:36:9f:2d:a7:
>>> f
>>> 9'),
>>>
>>>              
>>> ipv4(csum=14742,dst='255.255.255.255',flags=0,header_length=5,identif
>>> i
>>> cation=0,offset=0,
>>>
>>>                   
>>> option=None,proto=17,src='0.0.0.0',tos=16,total_length=328,ttl=128,ve
>>> r
>>> sion=4),
>>>
>>>              
>>> udp(csum=39669,dst_port=67,src_port=68,total_length=308),
>>>
>>>              
>>> '\x01\x01\x06\x00F\x08\x9f\x06\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x0
>>> 0
>>> \x00\x00\x00\x00\x00\x00\x00\x00\x00
>>>
>>>               
>>> \x00\xa06\x9f-\xa7\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
>>> 0
>>> \x00\x00\x00\x00\x00\x00\x00\x00\x00
>>>
>>>               
>>> \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
>>> x
>>> 00\x00\x00\x00\x00\x00\x00\x00\x00
>>>
>>>               \x00\x00\x00\x00\x00\x04\n\x00\xaa\x00\x00\x00\x00']
>>>
>>>             """
>>>
>>>     I know this packet is dhcp discover becoues as you see in udp src_port 
>>> is 68 and dst_port is 67 but how can I parsing this packet when I write the 
>>> code below  I did nt get any thing :
>>>
>>>      
>>>
>>>                     dhcpPacket = pkt.get_protocol(dhcp.dhcp)
>>>
>>>     print dhcppacket
>>>
>>>      
>>>
>>>     ''' output :
>>>
>>>            None
>>>
>>>     '''
>>>
>>>      
>>>
>>>     Please if you can help me to solve this issue .
>>>
>>>      
>>>
>>>      
>>>
>>>     Best Regards
>>>
>>>     Munther Numan
>>>     Master Student
>>>     Faculty of Engineering
>>>     University Putra Malaysia
>>>
>>>      
>>>
>>>      
>>>
>>>      
>>>
>>>     
>>> ------------------------------------------------------------------------------
>>>     Check out the vibrant tech community on one of the world's most
>>>     engaging tech sites, SlashDot.org! 
>>> http://sdm.link/slashdot_______________________________________________
>>>     Ryu-devel mailing list
>>>     Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.sourceforge.net>
>>>     https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> -
>>> -------- Check out the vibrant tech community on one of the world's 
>>> most engaging tech sites, SlashDot.org! http://sdm.link/slashdot
>>>
>>>
>>>
>>> _______________________________________________
>>> Ryu-devel mailing list
>>> Ryu-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>>

Attachment: dhcp_discover_packet_from_controller_side_pkt_in_single.pcap
Description: application/vnd.tcpdump.pcap

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

Reply via email to