Add "-vvconn" to the ovs-ofctl command line.

On Thu, Jan 10, 2013 at 01:34:40PM +0000, Henkel, Michael wrote:
> Ben, Jesse,
> 
> Is there a way to capture what ofctl is exactly sending to the switch? Snoop 
> only shows what the switch receives through the controller and monitor 
> doesn't tell me anything.
> 
> Regards,
> Michael
> 
> -----Original Message-----
> From: Ben Pfaff [mailto:b...@nicira.com] 
> Sent: Mittwoch, 9. Januar 2013 20:19
> To: Henkel, Michael
> Cc: Jesse Gross; discuss@openvswitch.org
> Subject: Re: [ovs-discuss] add a flow to a specific table
> 
> The setting is per OpenFlow connection, so you need to enable it on any given 
> OpenFlow connection before you try to use it.
> 
> ovs-ofctl enables this extension when it is needed.  It uses the function 
> ofputil_make_flow_mod_table_id() to compose the message to enable it.
> 
> On Wed, Jan 09, 2013 at 07:08:08PM +0000, Henkel, Michael wrote:
> > Guess I'm missing something. All I do at the moment is changing the of 
> > command from 0 to 256 in my Pox application. This triggers openvswitch to 
> > detect that the received command contains a table number and the command 
> > itself. But as you already pointed out there is a complain about not having 
> > the extension enabled (did now find it in the logs...). Pox itself doesn't 
> > know anything about the extension (no nicira headers imported).
> > The part I'm missing is how to enable that extension through my controller 
> > application. Unfortunately there isn't too much documentation around. Does 
> > the extension need to be enabled per flow, per datapath or for the entire 
> > switch. Can you point me to an example of a controller sending a message 
> > enabling the extension (I don't care too much about the controller or the 
> > language).
> > 
> > Thanks,
> > Michael
> > 
> > -----Original Message-----
> > From: Jesse Gross [mailto:je...@nicira.com]
> > Sent: Mittwoch, 9. Januar 2013 19:21
> > To: Henkel, Michael
> > Cc: discuss@openvswitch.org
> > Subject: Re: [ovs-discuss] add a flow to a specific table
> > 
> > The entire extension is sending the command plus encoding the table in the 
> > flow mod so I'm not sure that there is a difference.
> > 
> > On Wed, Jan 9, 2013 at 9:14 AM, Henkel, Michael <michael.hen...@hp.com> 
> > wrote:
> > > Thanks Jesse,
> > >
> > > In order to do that need my controller to support the entire Nicira 
> > > extension or is there a simple way to send the NXT_FLOW_MOD_TABLE_ID 
> > > command to the switch?
> > >
> > > Regards,
> > > Michael
> > >
> > > -----Original Message-----
> > > From: Jesse Gross [mailto:je...@nicira.com]
> > > Sent: Mittwoch, 9. Januar 2013 16:58
> > > To: Henkel, Michael
> > > Cc: discuss@openvswitch.org
> > > Subject: Re: [ovs-discuss] add a flow to a specific table
> > >
> > > On Wed, Jan 9, 2013 at 7:00 AM, Henkel, Michael <michael.hen...@hp.com> 
> > > wrote:
> > >> Hi list,
> > >>
> > >>
> > >>
> > >> I???m trying to figure out on how to place a flow into a specific 
> > >> table using a pox extension. I can easily place flows into standard 
> > >> tables using the following (python) code:
> > >>
> > >>
> > >>
> > >> def create_flow_install_msg(ip, table, mask, srcMac, dstMac, dstPort):
> > >>
> > >>     ofm = ofp_flow_mod()
> > >>
> > >>     ofm_match_dl(ofm, OFPFW_DL_TYPE, 0x0800)
> > >>
> > >>     if (MATCH_L2):
> > >>
> > >>             ofm_match_dl(ofm, OFPFW_DL_DST, srcMac)
> > >>
> > >>     ofm.match.set_nw_dst(ip)
> > >>
> > >>     ofm.priority = OFP_DEFAULT_PRIORITY + mask
> > >>
> > >>     ofm.command = 1 #(OFPFC_ADD)
> > >>
> > >>     if (mask == 32):
> > >>
> > >>         ofm.idle_timeout = 300
> > >>
> > >>     else:
> > >>
> > >>         ofm.idle_timeout = OFP_FLOW_PERMANENT
> > >>
> > >>     ofm.hard_timeout = OFP_FLOW_PERMANENT
> > >>
> > >>     ofm.out_port = OFPP_NONE
> > >>
> > >>     ofm.actions.append(ofp_action_dl_addr(type=OFPAT_SET_DL_SRC,
> > >> dl_addr=EthAddr(srcMac)))
> > >>
> > >>     ofm.actions.append(ofp_action_dl_addr(type=OFPAT_SET_DL_DST,
> > >> dl_addr=EthAddr(dstMac)))
> > >>
> > >>     #ofm.actions.append(ofp_action_tp_port(type=OFPAT_SET_TP_DST,
> > >> tp_port=20005))
> > >>
> > >>     ofm.actions.append(ofp_action_output(port=dstPort))
> > >>
> > >>
> > >>
> > >>     return ofm
> > >>
> > >>
> > >>
> > >> Now I???m trying to understand how the Nicira extension of 
> > >> openvswitch can be enabled. I???ve read through the following:
> > >>
> > >>
> > >>
> > >> /* This command enables or disables an Open vSwitch extension that 
> > >> allows a
> > >>
> > >> * controller to specify the OpenFlow table to which a flow should 
> > >> be added,
> > >>
> > >> * instead of having the switch decide which table is most 
> > >> appropriate as
> > >>
> > >> * required by OpenFlow 1.0.  By default, the extension is disabled.
> > >>
> > >> *
> > >>
> > >> * When this feature is enabled, Open vSwitch treats struct 
> > >> ofp_flow_mod's
> > >>
> > >> * 16-bit 'command' member as two separate fields.  The upper 8 bits 
> > >> are used
> > >>
> > >> * as the table ID, the lower 8 bits specify the command as usual.  
> > >> A table ID
> > >>
> > >> * of 0xff is treated like a wildcarded table ID.
> > >>
> > >> *
> > >>
> > >> * The specific treatment of the table ID depends on the type of flow mod:
> > >>
> > >> *
> > >>
> > >> *    - OFPFC_ADD: Given a specific table ID, the flow is always placed in
> > >> that
> > >>
> > >> *      table.  If an identical flow already exists in that table only, 
> > >> then
> > >> it
> > >>
> > >> *      is replaced.  If the flow cannot be placed in the specified table,
> > >>
> > >> *      either because the table is full or because the table cannot 
> > >> support
> > >>
> > >> *      flows of the given type, the switch replies with an
> > >>
> > >> *      OFPFMFC_ALL_TABLES_FULL error.  (A controller can distinguish 
> > >> these
> > >>
> > >> *      cases by comparing the current and maximum number of entries 
> > >> reported
> > >>
> > >> *      in ofp_table_stats.)
> > >>
> > >> *
> > >>
> > >> *      If the table ID is wildcarded, the switch picks an appropriate 
> > >> table
> > >>
> > >> *      itself.  If an identical flow already exist in the selected flow
> > >> table,
> > >>
> > >> *      then it is replaced.  The choice of table might depend on the 
> > >> flows
> > >>
> > >> *      that are already in th switch; for example, if one table fills up
> > >> then
> > >>
> > >> *      the switch might fall back to another one.
> > >>
> > >> *
> > >>
> > >> *    - OFPFC_MODIFY, OFPFC_DELETE: Given a specific table ID, only flows
> > >>
> > >> *      within that table are matched and modified or deleted.  If the 
> > >> table
> > >> ID
> > >>
> > >> *      is wildcarded, flows within any table may be matched and modified 
> > >> or
> > >>
> > >> *      deleted.
> > >>
> > >> *
> > >>
> > >> *    - OFPFC_MODIFY_STRICT, OFPFC_DELETE_STRICT: Given a specific table 
> > >> ID,
> > >>
> > >> *      only a flow within that table may be matched and modified or 
> > >> deleted.
> > >>
> > >> *      If the table ID is wildcarded and exactly one flow within any 
> > >> table
> > >>
> > >> *      matches, then it is modified or deleted; if flows in more than one
> > >>
> > >> *      table match, then none is modified or deleted.
> > >>
> > >> */
> > >>
> > >> struct nxt_flow_mod_table_id {
> > >>
> > >>     struct ofp_header header;
> > >>
> > >>     uint32_t vendor;            /* NX_VENDOR_ID. */
> > >>
> > >>     uint32_t subtype;           /* NXT_FLOW_MOD_TABLE_ID. */
> > >>
> > >>     uint8_t set;                /* Nonzero to enable, zero to disable. */
> > >>
> > >>     uint8_t pad[7];
> > >>
> > >> };
> > >>
> > >>
> > >>
> > >> commands are represented by 16 bit integers (0 ??? OFPFC_ADD; 1 ??? 
> > >> OFPFC_MODIFY ???).
> > >>
> > >> In order to add a flow into table 1 I changed the command 16 bit 
> > >> int from 0 to 256 (0000 0001 0000 0000). So the upper 8 bit specify 
> > >> the table 1, the lower 8 bit the command (0 = ADD).
> > >
> > > I think you haven't enabled the extension.  You must first send the 
> > > NXT_FLOW_MOD_TABLE_ID command to turn it on and then encode the table ID 
> > > in the flow mod.
> > _______________________________________________
> > discuss mailing list
> > discuss@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/discuss
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to