Sure I can, here we go... >From e442dea1f9ae2ce0fe31698e3e5b226041b8c2a0 Mon Sep 17 00:00:00 2001 From: Aeschlimann Philipp <[email protected]> Date: Fri, 17 May 2013 11:18:44 +0200 Subject: [PATCH] Fix for OFPQueueGetConfigReply/Request in OFP13
Signed-off-by: Philipp Aeschlimann <[email protected]> --- ryu/ofproto/ofproto_v1_3_parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ryu/ofproto/ofproto_v1_3_parser.py b/ryu/ofproto/ofproto_v1_3_parser.py index 2f36859..80a777d 100644 --- a/ryu/ofproto/ofproto_v1_3_parser.py +++ b/ryu/ofproto/ofproto_v1_3_parser.py @@ -2739,7 +2739,7 @@ class OFPPacketQueue(MsgBase): @classmethod def parser(cls, buf, offset): (msg.queue_id, msg.port, msg.len) = struct.unpack_from( - ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, buf, offset) + ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, msg.buf, offset) length = ofproto_v1_3.OFP_PACKET_QUEUE_SIZE offset += ofproto_v1_3.OFP_PACKET_QUEUE_SIZE @@ -2771,7 +2771,7 @@ class OFPQueueGetConfigReply(MsgBase): msg.queues = [] offset += ofproto_v1_3.OFP_QUEUE_GET_CONFIG_REPLY_SIZE - while offset < msg.length: + while offset < msg_len: queue = OFPPacketQueue.parser(buf, offset) msg.queues.append(queue) offset += queue.len -- 1.8.2.3 g *pae 2013/5/17 Isaku Yamahata <[email protected]>: > Can you please send the revised patch for OFPQueueGetConfigRequest > with your signed-off-by? > > On Wed, May 15, 2013 at 01:47:52PM +0200, Philipp Aeschlimann wrote: >> Great, exactly the answer I was looking for, THX... >> >> g *pae >> >> 2013/5/15 Isaku Yamahata <[email protected]>: >> > On Wed, May 15, 2013 at 12:03:26PM +0200, Philipp Aeschlimann wrote: >> >> Hey >> >> >> >> I'm using the following script to create the bridge (OVS). As you can >> >> see, I'm using >> >> >> >> ovs-vsctl set bridge $NAME protocols=OpenFlow13 >> >> >> >> To set the version of OFP. Is there any other place where I have to >> >> configure this? >> > >> > This is correct way to configure OVS. >> > >> >> Because my app won't work anyways with OVS, here's the >> >> version I'm using: >> > >> > Because OVS doesn't support OFPQueueGetConfigRequest yet. >> > Not due to mis-configuration or ryu side issue. >> > The only way is to add the feature to OVS upstream. >> > >> > thanks, >> > >> >> clt-mob-p-1093:/home/staff/aepp/unix # ovs-vsctl --version >> >> ovs-vsctl (Open vSwitch) 1.10.0 >> >> Compiled May 6 2013 11:47:07 >> >> clt-mob-p-1093:/home/staff/aepp/unix # >> >> >> >> usage() >> >> { >> >> cat << EOF >> >> usage: $0 options >> >> >> >> This script creates or deletes an Open vSwitch. >> >> >> >> OPTIONS: >> >> -h Show this message >> >> -o Can be 'add' or 'del' >> >> -n The name of the bridge >> >> -p Amount of port numbers >> >> -v Verbose >> >> >> >> EXAMPLE: >> >> # $0 -o add -n lan0 -p 5 >> >> # $0 -o del -n lan0 -p 5 >> >> EOF >> >> } >> >> >> >> NAME= >> >> PORTS= >> >> OP= >> >> VERBOSE=0 >> >> while getopts "h:o:n:p:v" OPTION >> >> do >> >> case $OPTION in >> >> h) >> >> usage >> >> exit 1 >> >> ;; >> >> n) >> >> NAME=$OPTARG >> >> ;; >> >> p) >> >> PORTS=$OPTARG >> >> ;; >> >> o) >> >> OP=$OPTARG >> >> ;; >> >> v) >> >> VERBOSE=1 >> >> ;; >> >> ?) >> >> usage >> >> exit >> >> ;; >> >> esac >> >> done >> >> >> >> if [[ -z $NAME ]] || [[ -z $PORTS ]] || [[ -z $OP ]] >> >> then >> >> usage >> >> exit 1 >> >> fi >> >> >> >> if [ "$OP" == "add" ] >> >> then >> >> # create the bridge >> >> ovs-vsctl add-br $NAME >> >> >> >> # use OFP13 >> >> ovs-vsctl set bridge $NAME protocols=OpenFlow13 >> >> >> >> for tap in `seq 0 $PORTS`; do >> >> ip tuntap add mode tap ${NAME}p$tap >> >> done; >> >> >> >> # check if the ifaces, only in verbose >> >> if [ "$VERBOSE" == "1" ] >> >> then >> >> echo "Output of: #ip tuntap list" >> >> ip tuntap list >> >> fi >> >> >> >> for tap in `seq 0 $PORTS`; do >> >> ip link set ${NAME}p$tap up >> >> done; >> >> >> >> # check state of the ifaces, only in verbose >> >> if [ "$VERBOSE" == "1" ] >> >> then >> >> echo "Output of: #ip link" >> >> ip link >> >> fi >> >> >> >> for tap in `seq 0 $PORTS`; do >> >> ovs-vsctl add-port $NAME ${NAME}p$tap >> >> done; >> >> >> >> # list all ports by ovs-vsctl to check, if taps are there >> >> if [ "$VERBOSE" == "1" ] >> >> then >> >> echo "Output of: #ip ovs-vsctl list-ports $NAME" >> >> ovs-vsctl list-ports $NAME >> >> fi >> >> >> >> # set the controller to localhost >> >> # TODO: make this variable >> >> ovs-vsctl set-controller $NAME tcp:0.0.0.0:6633 >> >> >> >> # TODO: be more verbose >> >> elif [ "$OP" == "del" ] >> >> then >> >> # remove the bridge >> >> ovs-vsctl del-br $NAME >> >> >> >> # remove all taps >> >> for tap in `seq 0 $PORTS`; do >> >> ip tuntap del ${NAME}p$tap mode tap >> >> done; >> >> >> >> else >> >> usage >> >> exit 1 >> >> fi >> >> >> >> THX in advance, Philipp - g *pae >> >> >> >> 2013/5/15 Isaku Yamahata <[email protected]>: >> >> > On Tue, May 14, 2013 at 04:10:46PM +0200, Philipp Aeschlimann wrote: >> >> >> Hey there >> >> >> >> >> >> I'm trying some things with QoS and therefore i wrote a simple >> >> >> test-app here (click download in the upper right corner): >> >> >> >> >> >> https://owncloud.engineering.zhaw.ch/public.php?service=files&t=f6f7e645b0d67b3c9a0cc537f8b38dfb >> >> >> >> >> >> It sends OFPQueueGetConfigRequest and tries to receive an >> >> >> OFPQueueGetConfigReply. But with the appliance from here >> >> >> https://github.com/osrg/ryu/wiki/OpenFlow_Tutorial I get this error: >> >> >> >> >> >> error msg ev version: 0x1 msg_type 0x1 xid 0xa6425c5e type 1 code 1 >> >> >> data _???B\^unsupported version 0x1. If possible, set the switch type >> >> >> 0x1 code 0x1 >> >> >> unsupported version 0x1. If possible, set the switch to use one of the >> >> >> versions [4] >> >> > >> >> > You have to configure OVS to use OF 1.3 instead of OF1.0. >> >> > By default OVS uses OF1.0. >> >> > >> >> >> And with OVS 1.10.0 (installed localy) I get: >> >> >> >> >> >> error msg ev version: 0x4 msg_type 0x1 xid 0xd49cfa2a type 1 code 1 >> >> >> data ?????* type 0x1 code 0x1 >> >> > >> >> > Althouh you set OVS to use OF1.3 somehow, OVS doesn't support >> >> > OFPQueueGetConfigRequest yet. OVS returns an error message in respond to >> >> > the request. >> >> > type 0x1 = error >> >> > code 0x1 = bad request >> >> > >> >> > >> >> >> But with the following changes and the softswitch from here: >> >> >> https://github.com/CPqD/ofsoftswitch13 everything works as expected >> >> >> >> >> >> diff --git a/ryu/ofproto/ofproto_v1_3_parser.py >> >> >> b/ryu/ofproto/ofproto_v1_3_parser.py >> >> >> index 3f2d020..cace1aa 100644 >> >> >> --- a/ryu/ofproto/ofproto_v1_3_parser.py >> >> >> +++ b/ryu/ofproto/ofproto_v1_3_parser.py >> >> >> @@ -2734,7 +2734,7 @@ class OFPPacketQueue(MsgBase): >> >> >> @classmethod >> >> >> def parser(cls, buf, offset): >> >> >> (msg.queue_id, msg.port, msg.len) = struct.unpack_from( >> >> >> - ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, buf, offset) >> >> >> + ofproto_v1_3.OFP_PACKET_QUEUE_PACK_STR, buffer(buf), >> >> >> offset) >> >> >> >> >> >> length = ofproto_v1_3.OFP_PACKET_QUEUE_SIZE >> >> >> offset += ofproto_v1_3.OFP_PACKET_QUEUE_SIZE >> >> > >> >> > See below. >> >> > >> >> > >> >> >> @@ -2766,7 +2766,7 @@ class OFPQueueGetConfigReply(MsgBase): >> >> >> >> >> >> msg.queues = [] >> >> >> offset += ofproto_v1_3.OFP_QUEUE_GET_CONFIG_REPLY_SIZE >> >> >> - while offset < msg.length: >> >> >> + while offset < msg_len: >> >> > >> >> > This line looks good. >> >> > >> >> >> queue = OFPPacketQueue.parser(buf, offset) >> >> > >> >> > msg.buf should be passed. Then first hunk can be dropped. >> >> > >> >> > thanks, >> >> > >> >> >> msg.queues.append(queue) >> >> >> offset += queue.len >> >> >> >> >> >> The above errors from OVS are showing up anyways. THX in advance... >> >> >> >> >> >> g *pae >> >> >> >> >> >> -- >> >> >> ZHAW - Zurich University of Applied Sciences >> >> >> Institute of Applied Information Technology InIT >> >> >> InIT Cloud Computing Laboratory ICCLab >> >> >> >> >> >> Philipp Aeschlimann >> >> >> Obere Kirchgasse 2 >> >> >> CH-8401 Winterthur >> >> >> >> >> >> Tel. +41 58 934 6964 (intern 6964) >> >> >> mailto:[email protected] >> >> >> www.zhaw.ch >> >> >> www.cloudcomp.ch >> >> >> >> >> >> GPG IDKey: 647E122E >> >> >> Fingerprint: 47B7 8D8A 98D1 E91D 4B7C E261 D88C BE9E 647E 122E >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> >> AlienVault Unified Security Management (USM) platform delivers complete >> >> >> security visibility with the essential security capabilities. Easily >> >> >> and >> >> >> efficiently configure, manage, and operate all of your security >> >> >> controls >> >> >> from a single console and one unified framework. Download a free trial. >> >> >> http://p.sf.net/sfu/alienvault_d2d >> >> >> _______________________________________________ >> >> >> Ryu-devel mailing list >> >> >> [email protected] >> >> >> https://lists.sourceforge.net/lists/listinfo/ryu-devel >> >> > >> >> > -- >> >> > yamahata >> >> >> >> ------------------------------------------------------------------------------ >> >> AlienVault Unified Security Management (USM) platform delivers complete >> >> security visibility with the essential security capabilities. Easily and >> >> efficiently configure, manage, and operate all of your security controls >> >> from a single console and one unified framework. Download a free trial. >> >> http://p.sf.net/sfu/alienvault_d2d >> >> _______________________________________________ >> >> Ryu-devel mailing list >> >> [email protected] >> >> https://lists.sourceforge.net/lists/listinfo/ryu-devel >> >> >> > >> > -- >> > yamahata >> > > -- > yamahata ------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
