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:[email protected]]
> Sent: Tuesday, December 20, 2016 10:38 AM
> To: [email protected]
> Cc: [email protected]; [email protected]
> 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,identification=0,offset=0,option=None,proto=17,src='0.0.0.0',tos=16,total_length=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\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\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\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',chaddr='00:00:00:00:00:01',ciaddr='0.0.0.0',flags=0,giaddr='0.0.0.0',hlen=6,hops=0,htype=1,op=1,options=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\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\x00\x00\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,identification=0,offset=0,option=None,proto=17,src='0.0.0.0',tos=16,total_length=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\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\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\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',chaddr='00:00:00:00:00:01',ciaddr='0.0.0.0',flags=0,giaddr='0.0.0.0',hlen=6,hops=0,htype=1,op=1,options=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\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\x00\x00\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,identification=0,offset=0,option=None,proto=17,src='0.0.0.0',tos=16,total_length=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\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\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\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',chaddr='00:00:00:00:00:01',ciaddr='0.0.0.0',flags=0,giaddr='0.0.0.0',hlen=6,hops=0,htype=1,op=1,options=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\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\x00\x00\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:[email protected]]
>> *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 <[email protected]
>> <mailto:[email protected]>> 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,identifi
>> cation=0,offset=0,
>>
>>
>> option=None,proto=17,src='0.0.0.0',tos=16,total_length=328,ttl=128,ver
>> 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\x00
>> \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\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\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
>> [email protected] <mailto:[email protected]>
>> 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
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/ryu-devel
>>
>
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel