Hi Iwase,
Yes, i intend to use, OF 1.5 only.
Thanks for your help on this issue.!
Regards,
Rahul
On Tuesday, December 5, 2017, Iwase Yusuke <iwase.yusu...@gmail.com> wrote:
> Hi Rahul,
>
> Could you keep the Ryu-devel mailing list?
>
> Well... if you keep this change on only your local, I think it has no side
> effect with the OpenFlow 1.3-1.5.
> It seems to replace the parser for OFPT_FLOW_REMOVED message as expected.
> With the OpenFlow 1.0-1.2, it might have some problems, but you intend to
> use
> only 1.5, right?
>
> Thanks,
> Iwase
>
>
> On 2017年12月05日 00:35, rahul b wrote:
>
>> Hi Iwase,
>> Thanks for taking your time to explain the problem.
>>
>> Flow removed handler is a very critical piece for me, So i am planning
>> to put in a hack in *"ryu/ofproto/ofproto_parser.py" *as follows.
>>
>> if(msg_type == 11):
>> LOG.info("Overriding the Parser Version for ofp_type 11")
>> *msg_parser = _MSG_PARSERS.get(4) # use OF 1.3 parser*
>> else:
>> msg_parser = _MSG_PARSERS.get(version)
>>
>> with this hack, i am able to decode the ofp_type 11 message.
>>
>> I Wanted to know as per your knowledge do you think this could cause any
>> side effects/errors in any other features.?
>>
>> Thanks & Regards,
>> Rahul
>>
>>
>> On Mon, Dec 4, 2017 at 10:12 AM, Iwase Yusuke <iwase.yusu...@gmail.com
>> <mailto:iwase.yusu...@gmail.com>> wrote:
>>
>> Hi Rahul,
>>
>> I manually decoded the binary data OVS sent, OVS does not seem to
>> follow the
>> OFPT_FLOW_REMOVED message format which the OpenFlow Spec 1.5 defines.
>>
>> For example, I received the following message on my environment;
>> ===
>> Encountered an error while parsing OpenFlow packet from switch. This
>> implies
>> the switch sent a malformed OpenFlow packet. version 0x06 msg_type 11
>> msg_len 72 xid 0 buf 0x06 0x0b 0x00 0x48 0x00 0x00 0x00 0x00 0x00
>> 0x00 0x00
>> 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x02 0x00 0x00 0x00 0x00 0x25 0x0d
>> 0xb5
>> 0x85 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x03
>> 0x00
>> 0x00 0x00 0x00 0x00 0x00 0x00 0xee 0x00 0x01 0x00 0x16 0x80 0x00 0x00
>> 0x04
>> 0x00 0x00 0x00 0x01 0x80 0x00 0x06 0x06 0xfe 0x97 0x30 0x28 0x44 0xad
>> 0x00 0x00
>> ===
>>
>> "buf 0x06 0x0b 0x00 ..." shows the binary data which Ryu received
>> from OVS.
>> And the OpenFlow Spec 1.5 defines the the OFPT_FLOW_REMOVED message
>> like;
>> ===
>> struct ofp_flow_removed {
>> struct ofp_header {
>> uint8_t version; /* OFP_VERSION. */
>> uint8_t type; /* One of the OFPT_ constants. */
>> uint16_t length; /* Length including this ofp_header. */
>> uint32_t xid; /* Transaction id associated with this packet.
>> Replies use the same id as was in the
>> request
>> to facilitate pairing. */
>> } header;
>> uint8_t table_id; /* ID of the table */
>> uint8_t reason; /* One of OFPRR_*. */
>> uint16_t priority; /* Priority level of flow entry. */
>> uint16_t idle_timeout; /* Idle timeout from original flow mod.
>> */
>> uint16_t hard_timeout; /* Hard timeout from original flow mod.
>> */
>> uint64_t cookie; /* Opaque controller-issued identifier.
>> */
>> struct ofp_match match; /* Description of fields. Variable size.
>> */
>> //struct ofp_stats stats; /* Statistics list. Variable size. */
>> };
>> ===
>>
>> If follows the above format;
>> ===
>> struct ofp_header {
>> 0x06 version
>> 0x0b type (= OFPT_FLOW_REMOVED(11))
>> 0x00 0x48 length
>> 0x00 0x00 0x00 0x00 xid
>> }
>> 0x00 table_id
>> 0x00 reason
>> 0x00 0x00 priority
>> 0x00 0x00 idle_timeout
>> 0x00 0x00 hard_timeout
>> // "0x00 0x01 0x02 0x00" is a part of cookie ...? match ...?
>> ...(snip)...
>> ===
>>
>> Please confirm OVS supports the OFPT_FLOW_REMOVED message with
>> OpenFlow 1.5.
>> To follow the OpenFlow Spec 1.5, it is required to support "EXT-334",
>> it might
>> be on the TODOs of OVS project.
>> https://github.com/openvswitch/ovs/blob/master/Documentation
>> /topics/openflow.rst#openflow-15-only
>> <https://github.com/openvswitch/ovs/blob/master/Documentatio
>> n/topics/openflow.rst#openflow-15-only>
>>
>> I read some source code of OVS, the OFPT_FLOW_REMOVED message is not
>> updated
>> from the format of OpenFlow 1.1...
>> https://github.com/openvswitch/ovs/blob/99cf99597ffa9f09e66d
>> 646d04de8d1c7e6d52c8/lib/ofp-util.c#L3306
>> <https://github.com/openvswitch/ovs/blob/99cf99597ffa9f09e66
>> d646d04de8d1c7e6d52c8/lib/ofp-util.c#L3306>
>>
>>
>> Thanks,
>> Iwase
>>
>> On 2017年12月01日 23:38, rahul b wrote:
>>
>> Hi i am using,
>>
>> (Open vSwitch) 2.7.4
>> DB Schema 7.14.0
>>
>> Openflow version 1.5
>>
>> On deleting a flow i am encountering this error, this is a
>> message sent
>> in response to the flow rule being removed.
>>
>> However the flow deletion is going successfully, but Ryu is not
>> able to
>> parse this message i believe.
>>
>>
>> Encountered an error while parsing OpenFlow packet from switch.
>> This
>> implies the switch sent a malformed OpenFlow packet. version 0x06
>> msg_type 11 msg_len 72 xid 0 buf 0x06 0x0b 0x00 0x48 0x00 0x00
>> 0x00 0x00
>> 0x00 0x00 0x00 0x00 0x00 0x00 0x07 0xd0 0x00 0x64 0x02 0x00 0x00
>> 0x00
>> 0x00 0x00 0x00 0x0f 0x42 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00
>> 0x00
>> 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
>> 0x01
>> 0x00 0x12 0x80 0x00 0x0a 0x02 0x08 0x06 0x80 0x00 0x2c 0x04 0xc0
>> 0xa8
>> 0x01 0x0a 0x00 0x00 0x00 0x00 0x00 0x00
>> Traceback (most recent call last):
>> File
>> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_
>> parser.py",
>> line 67, in msg
>> msg = msg_parser(datapath, version, msg_type, msg_len, xid,
>> buf)
>> File
>> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_
>> v1_5_parser.py",
>> line 59, in msg_parser
>> return parser(datapath, version, msg_type, msg_len, xid,
>> buf)
>> File
>> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_
>> v1_5_parser.py",
>> line 1561, in parser
>> msg.match = OFPMatch.parser(msg.buf, offset)
>> File
>> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_
>> v1_5_parser.py",
>> line 773, in parser
>> n, value, mask, field_len = ofproto.oxm_parse(buf, offset)
>> File
>> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/oxx_fields.py",
>> line
>> 193, in _parse
>> field_len) = _parse_header_impl(mod, buf, offset)
>> File
>> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/oxx_fields.py",
>> line
>> 179, in _parse_header_impl
>> *assert value_len > 0*
>> *AssertionError*
>>
>>
>> it would be very helpful if you could look into this.
>>
>> Thanks,
>> Rahul
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> 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
>> <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