Provided by: openvswitch-common_2.0.2-0ubuntu0.14.04.3_amd64 bug

NAME

       ovs-ofctl - administer OpenFlow switches

SYNOPSIS

       ovs-ofctl [options] command [switch] [args...]

DESCRIPTION

       The  ovs-ofctl program is a command line tool for monitoring and administering OpenFlow switches.  It can
       also show the current state of an OpenFlow switch, including features, configuration, and table  entries.
       It should work with any OpenFlow switch, not just Open vSwitch.

   OpenFlow Switch Management Commands
       These  commands  allow  ovs-ofctl  to  monitor and administer an OpenFlow switch.  It is able to show the
       current state of a switch, including features, configuration, and table entries.

       Most of these commands take an argument that specifies the method for connecting to an  OpenFlow  switch.
       The following connection methods are supported:

              ssl:ip[:port]
                     The specified SSL port (default: 6633) on the host at the given ip, which must be expressed
                     as an IP address (not a DNS name).  The --private-key, --certificate, and --ca-cert options
                     are mandatory when this form is used.

              tcp:ip[:port]
                     The specified TCP port (default: 6633) on the host at the given ip, which must be expressed
                     as an IP address (not a DNS name).

              unix:file
                     The Unix domain server socket named file.

              file   This is short for unix:file, as long as file does not contain a colon.

              bridge This is short for unix:/var/run/openvswitch/bridge.mgmt, as long as bridge does not contain
                     a colon.

              [type@]dp
                     Attempts  to look up the bridge associated with dp and open as above.  If type is given, it
                     specifies the datapath provider of dp, otherwise the default provider system is assumed.

       show switch
              Prints to the console information on switch, including information on its flow tables and ports.

       dump-tables switch
              Prints to the console statistics for each of the flow tables used by switch.

       dump-ports switch [netdev]
              Prints to the console statistics for  network  devices  associated  with  switch.   If  netdev  is
              specified,  only  the  statistics  associated  with that device will be printed.  netdev can be an
              OpenFlow assigned port number or device name, e.g. eth0.

       dump-ports-desc switch
              Prints to the console detailed information about network devices associated with  switch  (version
              1.7 or later).  This is a subset of the information provided by the show command.

       mod-port switch port action
              Modify characteristics of port port in switch.  port may be an OpenFlow port number or name or the
              keyword  LOCAL (the preferred way to refer to the OpenFlow local port).  The action may be any one
              of the following:
              up
              down   Enable or disable the interface.  This is equivalent to ifconfig up or ifconfig down  on  a
                     Unix system.

              stp
              no-stp Enable  or  disable  802.1D  spanning  tree  protocol  (STP)  on  the  interface.  OpenFlow
                     implementations that don't support STP will refuse to enable it.

              receive
              no-receive
              receive-stp
              no-receive-stp
                     Enable or disable OpenFlow processing of packets received on this interface.   When  packet
                     processing  is  disabled,  packets  will  be dropped instead of being processed through the
                     OpenFlow table.  The receive or no-receive setting applies to  all  packets  except  802.1D
                     spanning tree packets, which are separately controlled by receive-stp or no-receive-stp.

              forward
              no-forward
                     Allow  or  disallow  forwarding  of  traffic  to this interface.  By default, forwarding is
                     enabled.

              flood
              no-flood
                     Controls whether an OpenFlow flood  action  will  send  traffic  out  this  interface.   By
                     default, flooding is enabled.  Disabling flooding is primarily useful to prevent loops when
                     a spanning tree protocol is not in use.

              packet-in
              no-packet-in
                     Controls  whether  packets  received on this interface that do not match a flow table entry
                     generate a ``packet in'' message to the OpenFlow controller.   By  default,  ``packet  in''
                     messages are enabled.

              The show command displays (among other information) the configuration that mod-port changes.

       get-frags switch
              Prints  switch's fragment handling mode.  See set-frags, below, for a description of each fragment
              handling mode.

              The show command also prints the fragment handling mode among its other output.

       set-frags switch frag_mode
              Configures switch's treatment of IPv4 and IPv6 fragments.  The choices for frag_mode are:

              normal Fragments pass through the flow table like non-fragmented  packets.   The  TCP  ports,  UDP
                     ports,  and  ICMP  type  and code fields are always set to 0, even for fragments where that
                     information would otherwise be available (fragments with offset 0).  This  is  the  default
                     fragment handling mode for an OpenFlow switch.

              drop   Fragments are dropped without passing through the flow table.

              reassemble
                     The  switch reassembles fragments into full IP packets before passing them through the flow
                     table.  Open vSwitch does not implement this fragment handling mode.

              nx-match
                     Fragments pass through the flow table like non-fragmented  packets.   The  TCP  ports,  UDP
                     ports,  and  ICMP type and code fields are available for matching for fragments with offset
                     0, and set to 0 in fragments with nonzero offset.  This mode is a Nicira extension.

              See the description of ip_frag, below, for a way to match on whether a packet is a fragment and on
              its fragment offset.

       dump-flows switch [flows]
              Prints to the console all flow entries in switch's tables that match flows.  If flows is  omitted,
              all  flows  in  the  switch  are retrieved.  See Flow Syntax, below, for the syntax of flows.  The
              output format is described in Table Entry Output.

              By default, ovs-ofctl prints flow entries in the same order that the switch sends them,  which  is
              unlikely  to be intuitive or consistent.  See the description of --sort and --rsort, under OPTIONS
              below, to influence the display order.

       dump-aggregate switch [flows]
              Prints to the console aggregate statistics for flows in switch's  tables  that  match  flows.   If
              flows is omitted, the statistics are aggregated across all flows in the switch's flow tables.  See
              Flow  Syntax,  below,  for  the  syntax  of  flows.  The output format is described in Table Entry
              Output.

       queue-stats switch [port [queue]]
              Prints to the console statistics for the specified queue on port within switch.  port  can  be  an
              OpenFlow  port number or name, the keyword LOCAL (the preferred way to refer to the OpenFlow local
              port), or the keyword ALL.  Either of port or queue or both may be omitted  (or  equivalently  the
              keyword  ALL).   If both are omitted, statistics are printed for all queues on all ports.  If only
              queue is omitted, then statistics are printed for all queues on port; if  only  port  is  omitted,
              then statistics are printed for queue on every port where it exists.

   OpenFlow Switch Flow Table Commands
       These commands manage the flow table in an OpenFlow switch.  In each case, flow specifies a flow entry in
       the  format  described in Flow Syntax, below, and file is a text file that contains zero or more flows in
       the same syntax, one per line.

       add-flow switch flow
       add-flow switch - < file
       add-flows switch file
              Add each flow entry to switch's tables.

       [--strict] mod-flows switch flow
       [--strict] mod-flows switch - < file
              Modify the actions in entries from switch's tables that match the specified flows.  With --strict,
              wildcards are not treated as active for matching purposes.

       del-flows switch
       [--strict] del-flows switch [flow]
       [--strict] del-flows switch - < file
              Deletes entries from switch's flow table.   With  only  a  switch  argument,  deletes  all  flows.
              Otherwise,  deletes flow entries that match the specified flows.  With --strict, wildcards are not
              treated as active for matching purposes.

       [--readd] replace-flows switch file
              Reads flow entries from file (or stdin if file is -) and queries the flow table from switch.  Then
              it fixes up any differences, adding flows from flow that are missing  on  switch,  deleting  flows
              from  switch that are not in file, and updating flows in switch whose actions, cookie, or timeouts
              differ in file.

              With --readd, ovs-ofctl adds all the flows from file, even those that exist with the same actions,
              cookie, and timeout in switch.  This resets all the flow packet and byte counters to 0, which  can
              be useful for debugging.

       diff-flows source1 source2
              Reads flow entries from source1 and source2 and prints the differences.  A flow that is in source1
              but not in source2 is printed preceded by a -, and a flow that is in source2 but not in source1 is
              printed  preceded  by  a  +.  If a flow exists in both source1 and source2 with different actions,
              cookie, or timeouts, then both versions are printed preceded by - and +, respectively.

              source1 and source2 may each name a file or a switch.  If a name begins with / or .,  then  it  is
              considered to be a file name.  A name that contains : is considered to be a switch.  Otherwise, it
              is a file if a file by that name exists, a switch if not.

              For  this command, an exit status of 0 means that no differences were found, 1 means that an error
              occurred, and 2 means that some differences were found.

       packet-out switch in_port actions packet...
              Connects to switch and instructs it to execute the OpenFlow  actions  on  each  packet.   For  the
              purpose of executing the actions, the packets are considered to have arrived on in_port, which may
              be  an  OpenFlow port number or name (e.g. eth0), the keyword LOCAL (the preferred way to refer to
              the OpenFlow ``local'' port), or the keyword NONE to indicate that the packet was generated by the
              switch itself.

   OpenFlow Switch Monitoring Commands
       snoop switch
              Connects to switch and prints to  the  console  all  OpenFlow  messages  received.   Unlike  other
              ovs-ofctl  commands,  if switch is the name of a bridge, then the snoop command connects to a Unix
              domain socket named /var/run/openvswitch/bridge.snoop.  ovs-vswitchd listens on such a socket  for
              each  bridge  and sends to it all of the OpenFlow messages sent to or received from its configured
              OpenFlow controller.  Thus, this command can be used to view OpenFlow protocol activity between  a
              switch and its controller.

              When  a  switch  has  more  than  one controller configured, only the traffic to and from a single
              controller is output.  If none of the controllers is configured as a master or a  slave  (using  a
              Nicira  extension to OpenFlow), then a controller is chosen arbitrarily among them.  If there is a
              master controller, it is chosen; otherwise, if there are any controllers that are not  masters  or
              slaves,  one  is  chosen  arbitrarily;  otherwise, a slave controller is chosen arbitrarily.  This
              choice is made once at connection time and does not change as controllers reconfigure their roles.

              If a switch has no controller configured, or if the  configured  controller  is  disconnected,  no
              traffic is sent, so monitoring will not show any traffic.

       monitor switch [miss-len] [invalid_ttl] [watch:[spec...]]
              Connects  to  switch  and  prints  to the console all OpenFlow messages received.  Usually, switch
              should specify the name of a bridge in the ovs-vswitchd database.

              If miss-len is provided, ovs-ofctl sends an OpenFlow ``set configuration'' message  at  connection
              setup  time  that requests miss-len bytes of each packet that misses the flow table.  Open vSwitch
              does not send these and other asynchronous messages to  an  ovs-ofctl  monitor  client  connection
              unless  a  nonzero value is specified on this argument.  (Thus, if miss-len is not specified, very
              little traffic will ordinarily be printed.)

              If invalid_ttl is passed, ovs-ofctl sends an OpenFlow ``set configuration'' message at  connection
              setup  time  that  requests  INVALID_TTL_TO_CONTROLLER,  so  that  ovs-ofctl  monitor  can receive
              ``packet-in'' messages when TTL reaches zero on dec_ttl action.

              watch:[spec...] causes ovs-ofctl to send a ``monitor request'' Nicira  extension  message  to  the
              switch  at  connection  setup time.  This message causes the switch to send information about flow
              table changes as they occur.  The following comma-separated spec syntax is available:

              !initial
                     Do not report the switch's initial flow table contents.

              !add   Do not report newly added flows.

              !delete
                     Do not report deleted flows.

              !modify
                     Do not report modifications to existing flows.

              !own   Abbreviate changes made to the flow table by ovs-ofctl's  own  connection  to  the  switch.
                     (These  could  only  occur  using  the  ofctl/send  command  described  below under RUNTIME
                     MANAGEMENT COMMANDS.)

              !actions
                     Do not report actions as part of flow updates.

              table=number
                     Limits the monitoring to the table with the given number between 0 and  254.   By  default,
                     all tables are monitored.

              out_port=port
                     If  set,  only  flows  that output to port are monitored.  The port may be an OpenFlow port
                     number or keyword (e.g. LOCAL).

              field=value
                     Monitors only flows that have field specified as the given value.   Any  syntax  valid  for
                     matching on dump-flows may be used.

              This command may be useful for debugging switch or controller implementations.  With watch:, it is
              particularly useful for observing how a controller updates flow tables.

   OpenFlow Switch and Controller Commands
       The  following  commands,  like those in the previous section, may be applied to OpenFlow switches, using
       any of the connection methods described in that section.   Unlike  those  commands,  these  may  also  be
       applied to OpenFlow controllers.

       probe target
              Sends a single OpenFlow echo-request message to target and waits for the response.  With the -t or
              --timeout  option,  this  command  can  test  whether  an  OpenFlow switch or controller is up and
              running.

       ping target [n]
              Sends a series of 10 echo request packets to target  and  times  each  reply.   The  echo  request
              packets  consist  of  an OpenFlow header plus n bytes (default: 64) of randomly generated payload.
              This measures the latency of individual requests.

       benchmark target n count
              Sends count echo request packets that each consist of an OpenFlow header plus n bytes  of  payload
              and  waits  for each response.  Reports the total time required.  This is a measure of the maximum
              bandwidth to target for round-trips of n-byte messages.

   Other Commands
       ofp-parse file
              Reads file (or stdin if file is -) as a series of OpenFlow messages in the binary format  used  on
              an  OpenFlow connection, and prints them to the console.  This can be useful for printing OpenFlow
              messages captured from a TCP stream.

   Flow Syntax
       Some ovs-ofctl commands accept an argument that describes  a  flow  or  flows.   Such  flow  descriptions
       comprise  a series field=value assignments, separated by commas or white space.  (Embedding spaces into a
       flow description normally requires quoting to prevent  the  shell  from  breaking  the  description  into
       multiple arguments.)

       Flow  descriptions  should  be in normal form.  This means that a flow may only specify a value for an L3
       field if it also specifies a particular L2 protocol, and that a flow may only specify an L4 field  if  it
       also  specifies  particular  L2  and  L3 protocol types.  For example, if the L2 protocol type dl_type is
       wildcarded, then L3 fields nw_src, nw_dst, and nw_proto must also be wildcarded.  Similarly,  if  dl_type
       or  nw_proto  (the  L3  protocol  type) is wildcarded, so must be tp_dst and tp_src, which are L4 fields.
       ovs-ofctl will warn about flows not in normal form.

       The following field assignments describe how a flow matches a packet.  If any  of  these  assignments  is
       omitted  from  the flow syntax, the field is treated as a wildcard; thus, if all of them are omitted, the
       resulting flow matches all packets.  The string * may be specified to explicitly mark any of these fields
       as a wildcard.  (* should be quoted to protect it from shell expansion.)

       in_port=port
              Matches OpenFlow port port, which may  be  an  OpenFlow  port  number  or  keyword  (e.g.  LOCAL).
              ovs-ofctl show.

              (The  resubmit action can search OpenFlow flow tables with arbitrary in_port values, so flows that
              match port numbers that do not exist  from  an  OpenFlow  perspective  can  still  potentially  be
              matched.)

       dl_vlan=vlan
              Matches  IEEE  802.1q  Virtual LAN tag vlan.  Specify 0xffff as vlan to match packets that are not
              tagged with a Virtual LAN; otherwise, specify a number between  0  and  4095,  inclusive,  as  the
              12-bit VLAN ID to match.

       dl_vlan_pcp=priority
              Matches  IEEE  802.1q  Priority Code Point (PCP) priority, which is specified as a value between 0
              and 7, inclusive.  A higher value indicates a higher frame priority level.

       dl_src=xx:xx:xx:xx:xx:xx
       dl_dst=xx:xx:xx:xx:xx:xx
              Matches an Ethernet source (or destination) address specified as 6  pairs  of  hexadecimal  digits
              delimited by colons (e.g. 00:0A:E4:25:6B:B0).

       dl_src=xx:xx:xx:xx:xx:xx/xx:xx:xx:xx:xx:xx
       dl_dst=xx:xx:xx:xx:xx:xx/xx:xx:xx:xx:xx:xx
              Matches  an  Ethernet  destination address specified as 6 pairs of hexadecimal digits delimited by
              colons (e.g. 00:0A:E4:25:6B:B0), with a wildcard mask following the slash. Open  vSwitch  1.8  and
              later support arbitrary masks for source and/or destination. Earlier versions only support masking
              the destination with the following masks:

              01:00:00:00:00:00
                     Match only the multicast bit.  Thus, dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 matches all
                     multicast         (including         broadcast)         Ethernet        packets,        and
                     dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 matches all unicast Ethernet packets.

              fe:ff:ff:ff:ff:ff
                     Match all bits except the multicast bit.  This is probably not useful.

              ff:ff:ff:ff:ff:ff
                     Exact match (equivalent to omitting the mask).

              00:00:00:00:00:00
                     Wildcard all bits (equivalent to dl_dst=*.)

       dl_type=ethertype
              Matches Ethernet protocol type ethertype, which is specified as an integer between  0  and  65535,
              inclusive,  either  in decimal or as a hexadecimal number prefixed by 0x (e.g. 0x0806 to match ARP
              packets).

       nw_src=ip[/netmask]
       nw_dst=ip[/netmask]
              When dl_type is 0x0800 (possibly  via  shorthand,  e.g.  ip  or  tcp),  matches  IPv4  source  (or
              destination) address ip, which may be specified as an IP address or host name (e.g. 192.168.1.1 or
              www.example.com).  The optional netmask allows restricting a match to an IPv4 address prefix.  The
              netmask  may  be  specified  as  a dotted quad (e.g. 192.168.1.0/255.255.255.0) or as a CIDR block
              (e.g. 192.168.1.0/24).  Open vSwitch 1.8 and later support arbitrary dotted  quad  masks;  earlier
              versions  support  only  CIDR  masks,  that  is, the dotted quads that are equivalent to some CIDR
              block.

              When dl_type=0x0806 or arp is specified, matches the ar_spa or ar_tpa field, respectively, in  ARP
              packets for IPv4 and Ethernet.

              When  dl_type=0x8035  or  rarp  is specified, matches the ar_spa or ar_tpa field, respectively, in
              RARP packets for IPv4 and Ethernet.

              When dl_type is wildcarded or set to a value other than 0x0800, 0x0806, or 0x8035, the  values  of
              nw_src and nw_dst are ignored (see Flow Syntax above).

       nw_proto=proto
              When  ip  or  dl_type=0x0800 is specified, matches IP protocol type proto, which is specified as a
              decimal number between 0 and 255, inclusive (e.g. 1 to match  ICMP  packets  or  6  to  match  TCP
              packets).

              When  ipv6 or dl_type=0x86dd is specified, matches IPv6 header type proto, which is specified as a
              decimal number between 0 and 255, inclusive (e.g. 58 to match ICMPv6 packets or 6 to  match  TCP).
              The header type is the terminal header as described in the DESIGN document.

              When  arp or dl_type=0x0806 is specified, matches the lower 8 bits of the ARP opcode.  ARP opcodes
              greater than 255 are treated as 0.

              When rarp or dl_type=0x8035 is specified, matches the lower 8 bits of the ARP opcode.  ARP opcodes
              greater than 255 are treated as 0.

              When dl_type is wildcarded or set to a value other than 0x0800,  0x0806,  0x8035  or  0x86dd,  the
              value of nw_proto is ignored (see Flow Syntax above).

       nw_tos=tos
              Matches  IP  ToS/DSCP  or  IPv6  traffic  class  field tos, which is specified as a decimal number
              between 0 and 255, inclusive.  Note that the two lower reserved  bits  are  ignored  for  matching
              purposes.

              When  dl_type  is wildcarded or set to a value other than 0x0800 or 0x86dd, the value of nw_tos is
              ignored (see Flow Syntax above).

       nw_ecn=ecn
              Matches ecn bits in IP ToS or IPv6 traffic class fields, which is specified as  a  decimal  number
              between 0 and 3, inclusive.

              When  dl_type  is wildcarded or set to a value other than 0x0800 or 0x86dd, the value of nw_ecn is
              ignored (see Flow Syntax above).

       nw_ttl=ttl
              Matches IP TTL or IPv6 hop limit value ttl, which is specified as a decimal number between  0  and
              255, inclusive.

              When  dl_type  is wildcarded or set to a value other than 0x0800 or 0x86dd, the value of nw_ttl is
              ignored (see Flow Syntax above).

       tp_src=port
       tp_dst=port
              When dl_type and nw_proto specify TCP or UDP or SCTP, tp_src and tp_dst match the UDP  or  TCP  or
              SCTP source or destination port port, respectively, which is specified as a decimal number between
              0 and 65535, inclusive (e.g. 80 to match packets originating from a HTTP server).

              When  dl_type  and  nw_proto take other values, the values of these settings are ignored (see Flow
              Syntax above).

       tp_src=port/mask
       tp_dst=port/mask
              Bitwise match on TCP (or UDP or SCTP) source or destination port, respectively.  The port and mask
              are 16-bit numbers written in decimal or in hexadecimal  prefixed  by  0x.   Each  1-bit  in  mask
              requires  that  the  corresponding  bit  in  port  must  match.   Each  0-bit  in  mask causes the
              corresponding bit to be ignored.

              Bitwise matches on transport ports are rarely useful in isolation, but a group of them can be used
              to reduce the number of flows required to match on a  range  of  transport  ports.   For  example,
              suppose  that the goal is to match TCP source ports 1000 to 1999, inclusive.  One way is to insert
              1000 flows, each of which matches on a single source port.  Another way is to look at  the  binary
              representations of 1000 and 1999, as follows:
              01111101000
              11111001111
              and then to transform those into a series of bitwise matches that accomplish the same results:
              01111101xxx
              0111111xxxx
              10xxxxxxxxx
              110xxxxxxxx
              1110xxxxxxx
              11110xxxxxx
              1111100xxxx
              which become the following when written in the syntax required by ovs-ofctl:
              tcp,tp_src=0x03e8/0xfff8
              tcp,tp_src=0x03f0/0xfff0
              tcp,tp_src=0x0400/0xfe00
              tcp,tp_src=0x0600/0xff00
              tcp,tp_src=0x0700/0xff80
              tcp,tp_src=0x0780/0xffc0
              tcp,tp_src=0x07c0/0xfff0

              Only Open vSwitch 1.6 and later supports bitwise matching on transport ports.

              Like  the  exact-match  forms  of tp_src and tp_dst described above, the bitwise match forms apply
              only when dl_type and nw_proto specify TCP or UDP or SCTP.

       icmp_type=type
       icmp_code=code
              When dl_type and nw_proto specify ICMP or ICMPv6, type matches the ICMP type and code matches  the
              ICMP code.  Each is specified as a decimal number between 0 and 255, inclusive.

              When  dl_type  and  nw_proto take other values, the values of these settings are ignored (see Flow
              Syntax above).

       table=number
              If specified, limits the flow manipulation and flow dump commands to only apply to the table  with
              the  given  number  between  0  and 254.  Behavior varies if table is not specified (equivalent to
              specifying 255 as number).  For flow table modification commands without --strict, the switch will
              choose the table for these commands to operate on.  For  flow  table  modification  commands  with
              --strict, the command will operate on any single matching flow in any table; it will do nothing if
              there  are matches in more than one table.  The dump-flows and dump-aggregate commands will gather
              statistics about flows from all tables.

              When this field is  specified  in  add-flow,  add-flows,  mod-flows  and  del-flows  commands,  it
              activates a Nicira extension to OpenFlow, which as of this writing is only known to be implemented
              by Open vSwitch.

       metadata=value[/mask]
              Matches  value  either  exactly  or  with  optional mask in the metadata field. value and mask are
              64-bit integers, by default in decimal (use a 0x prefix to specify  hexadecimal).  Arbitrary  mask
              values  are  allowed:  a  1-bit  in  mask indicates that the corresponding bit in value must match
              exactly, and a 0-bit wildcards that bit. Matching on metadata was added in Open vSwitch 1.8.

       The following shorthand notations are also available:

       ip     Same as dl_type=0x0800.

       icmp   Same as dl_type=0x0800,nw_proto=1.

       tcp    Same as dl_type=0x0800,nw_proto=6.

       udp    Same as dl_type=0x0800,nw_proto=17.

       sctp   Same as dl_type=0x0800,nw_proto=132.

       arp    Same as dl_type=0x0806.

       rarp   Same as dl_type=0x8035.

       The following field assignments require  support  for  the  NXM  (Nicira  Extended  Match)  extension  to
       OpenFlow.   When one of these is specified, ovs-ofctl will automatically attempt to negotiate use of this
       extension.  If the switch does not support NXM, then ovs-ofctl will report a fatal error.

       vlan_tci=tci[/mask]
              Matches modified VLAN TCI tci.  If mask is omitted, tci is the exact VLAN TCI to match; if mask is
              specified, then a 1-bit in mask indicates that the corresponding bit in tci  must  match  exactly,
              and  a 0-bit wildcards that bit.  Both tci and mask are 16-bit values that are decimal by default;
              use a 0x prefix to specify them in hexadecimal.

              The value that vlan_tci matches against is 0 for a packet that has no 802.1Q  header.   Otherwise,
              it is the TCI value from the 802.1Q header with the CFI bit (with value 0x1000) forced to 1.

              Examples:

              vlan_tci=0
                     Match only packets without an 802.1Q header.

              vlan_tci=0xf123
                     Match packets tagged with priority 7 in VLAN 0x123.

              vlan_tci=0x1123/0x1fff
                     Match packets tagged with VLAN 0x123 (and any priority).

              vlan_tci=0x5000/0xf000
                     Match packets tagged with priority 2 (in any VLAN).

              vlan_tci=0/0xfff
                     Match packets with no 802.1Q header or tagged with VLAN 0 (and any priority).

              vlan_tci=0x5000/0xe000
                     Match packets with no 802.1Q header or tagged with priority 2 (in any VLAN).

              vlan_tci=0/0xefff
                     Match packets with no 802.1Q header or tagged with VLAN 0 and priority 0.

              Some of these matching possibilities can also be achieved with dl_vlan and dl_vlan_pcp.

       ip_frag=frag_type
              When  dl_type specifies IP or IPv6, frag_type specifies what kind of IP fragments or non-fragments
              to match.  The following values of frag_type are supported:

              no     Matches only non-fragmented packets.

              yes    Matches all fragments.

              first  Matches only fragments with offset 0.

              later  Matches only fragments with nonzero offset.

              not_later
                     Matches non-fragmented packets and fragments with zero offset.

              The ip_frag match type is likely to be most useful in nx-match mode.  See the description  of  the
              set-frags command, above, for more details.

       arp_sha=xx:xx:xx:xx:xx:xx
       arp_tha=xx:xx:xx:xx:xx:xx
              When  dl_type  specifies  either  ARP  or  RARP,  arp_sha  and arp_tha match the source and target
              hardware address, respectively.  An  address  is  specified  as  6  pairs  of  hexadecimal  digits
              delimited by colons.

       ipv6_src=ipv6[/netmask]
       ipv6_dst=ipv6[/netmask]
              When  dl_type  is  0x86dd  (possibly  via  shorthand, e.g., ipv6 or tcp6), matches IPv6 source (or
              destination) address ipv6, which may be specified as defined in RFC 2373.  The preferred format is
              x:x:x:x:x:x:x:x, where x are the hexadecimal values of the eight 16-bit pieces of the address.   A
              single  instance  of :: may be used to indicate multiple groups of 16-bits of zeros.  The optional
              netmask allows restricting a match to an IPv6 address prefix.  A netmask is specified as  an  IPv6
              address     (e.g.    2001:db8:3c4d:1::/ffff:ffff:ffff:ffff::)    or    a    CIDR    block    (e.g.
              2001:db8:3c4d:1::/64).  Open vSwitch 1.8 and  later  support  arbitrary  masks;  earlier  versions
              support  only  CIDR  masks,  that  is,  CIDR  block and IPv6 addresses that are equivalent to CIDR
              blocks.

       ipv6_label=label
              When dl_type is 0x86dd (possibly via shorthand, e.g., ipv6  or  tcp6),  matches  IPv6  flow  label
              label.

       nd_target=ipv6[/netmask]
              When  dl_type,  nw_proto,  and icmp_type specify IPv6 Neighbor Discovery (ICMPv6 type 135 or 136),
              matches the target address ipv6.  ipv6 is in the same format described earlier  for  the  ipv6_src
              and ipv6_dst fields.

       nd_sll=xx:xx:xx:xx:xx:xx
              When  dl_type,  nw_proto,  and  icmp_type  specify  IPv6  Neighbor Solicitation (ICMPv6 type 135),
              matches the source link-layer address option.  An address is specified as 6 pairs  of  hexadecimal
              digits delimited by colons.

       nd_tll=xx:xx:xx:xx:xx:xx
              When  dl_type,  nw_proto,  and  icmp_type  specify  IPv6 Neighbor Advertisement (ICMPv6 type 136),
              matches the target link-layer address option.  An address is specified as 6 pairs  of  hexadecimal
              digits delimited by colons.

       tun_id=tunnel-id[/mask]
              Matches  tunnel  identifier  tunnel-id.  Only packets that arrive over a tunnel that carries a key
              (e.g. GRE with the RFC 2890 key extension and a nonzero key value) will have a nonzero tunnel  ID.
              If  mask is omitted, tunnel-id is the exact tunnel ID to match; if mask is specified, then a 1-bit
              in mask indicates that the corresponding  bit  in  tunnel-id  must  match  exactly,  and  a  0-bit
              wildcards that bit.

       tun_src=ip[/netmask]
       tun_dst=ip[/netmask]
              Matches  tunnel  IPv4  source  (or destination) address ip. Only packets that arrive over a tunnel
              will have nonzero tunnel addresses.  The address may be specified as an IP address  or  host  name
              (e.g.  192.168.1.1  or  www.example.com).   The  optional  netmask allows restricting a match to a
              masked   IPv4   address.    The   netmask   may   be   specified   as   a   dotted   quad    (e.g.
              192.168.1.0/255.255.255.0) or as a CIDR block (e.g. 192.168.1.0/24).

       regidx=value[/mask]
              Matches value either exactly or with optional mask in register number idx.  The valid range of idx
              depends on the switch.  value and mask are 32-bit integers, by default in decimal (use a 0x prefix
              to  specify  hexadecimal).   Arbitrary mask values are allowed: a 1-bit in mask indicates that the
              corresponding bit in value must match exactly, and a 0-bit wildcards that bit.

              When a packet enters an OpenFlow switch, all of the registers are set to 0.  Only explicit  Nicira
              extension actions change register values.

       pkt_mark=value[/mask]
              Matches  packet  metadata  mark value either exactly or with optional mask. The mark is associated
              data that may be passed into other system components in order to  facilitate  interaction  between
              subsystems.   On  Linux this corresponds to the skb mark but the exact implementation is platform-
              dependent.

       Defining IPv6 flows (those with dl_type equal  to  0x86dd)  requires  support  for  NXM.   The  following
       shorthand notations are available for IPv6-related flows:

       ipv6   Same as dl_type=0x86dd.

       tcp6   Same as dl_type=0x86dd,nw_proto=6.

       udp6   Same as dl_type=0x86dd,nw_proto=17.

       sctp6  Same as dl_type=0x86dd,nw_proto=132.

       icmp6  Same as dl_type=0x86dd,nw_proto=58.

       Finally,  field  assignments  to  duration,  n_packets,  or  n_bytes are ignored to allow output from the
       dump-flows command to be used as input for other commands that parse flows.

       The add-flow, add-flows, and mod-flows commands require an additional field,  which  must  be  the  final
       field specified:

       actions=[target][,target...]
              Specifies  a  comma-separated list of actions to take on a packet when the flow entry matches.  If
              no target is specified, then packets matching the flow are dropped.  The target may be an OpenFlow
              port number designating the physical port on which to output the packet, or one of  the  following
              keywords:

              output:port
                     Outputs the packet to port, which must be an OpenFlow port number or keyword (e.g. LOCAL).

              output:src[start..end]
                     Outputs the packet to the OpenFlow port number read from src, which must be an NXM field as
                     described  above.   For  example,  output:NXM_NX_REG0[16..31]  outputs to the OpenFlow port
                     number written in the upper half of register 0.  This  form  of  output  uses  an  OpenFlow
                     extension that is not supported by standard OpenFlow switches.

              enqueue:port:queue
                     Enqueues the packet on the specified queue within port port, which must be an OpenFlow port
                     number  or  keyword  (e.g.  LOCAL)..  The number of supported queues depends on the switch;
                     some OpenFlow implementations do not support queuing at all.

              normal Subjects the packet  to  the  device's  normal  L2/L3  processing.   (This  action  is  not
                     implemented by all OpenFlow switches.)

              flood  Outputs  the  packet  on  all  switch  physical  ports  other than the port on which it was
                     received and any ports on which flooding is  disabled  (typically,  these  would  be  ports
                     disabled by the IEEE 802.1D spanning tree protocol).

              all    Outputs  the  packet  on  all  switch  physical  ports  other than the port on which it was
                     received.

              controller(key=value...)
                     Sends the packet to the OpenFlow controller as a ``packet in'' message.  The supported key-
                     value pairs are:

                     max_len=nbytes
                            Limit to nbytes the number of bytes of the packet to send  to  the  controller.   By
                            default the entire packet is sent.

                     reason=reason
                            Specify  reason  as the reason for sending the message in the ``packet in'' message.
                            The supported reasons are action (the default), no_match, and invalid_ttl.

                     id=controller-id
                            Specify controller-id, a 16-bit integer,  as  the  connection  ID  of  the  OpenFlow
                            controller  or  controllers  to which the ``packet in'' message should be sent.  The
                            default is zero.  Zero is  also  the  default  connection  ID  for  each  controller
                            connection, and a given controller connection will only have a nonzero connection ID
                            if its controller uses the NXT_SET_CONTROLLER_ID Nicira extension to OpenFlow.
              Any reason other than action and any nonzero controller-id uses a Nicira vendor extension that, as
              of this writing, is only known to be implemented by Open vSwitch (version 1.6 or later).

              controller
              controller[:nbytes]
                     Shorthand for controller() or controller(max_len=nbytes), respectively.

              local  Outputs  the packet on the ``local port,'' which corresponds to the network device that has
                     the same name as the bridge.

              in_port
                     Outputs the packet on the port from which it was received.

              drop   Discards the packet, so no further processing or forwarding takes place.  If a drop  action
                     is used, no other actions may be specified.

              mod_vlan_vid:vlan_vid
                     Modifies  the VLAN id on a packet.  The VLAN tag is added or modified as necessary to match
                     the value specified.  If the VLAN tag is added,  a  priority  of  zero  is  used  (see  the
                     mod_vlan_pcp action to set this).

              mod_vlan_pcp:vlan_pcp
                     Modifies  the VLAN priority on a packet.  The VLAN tag is added or modified as necessary to
                     match the value specified.  Valid values are between 0 (lowest) and 7  (highest).   If  the
                     VLAN tag is added, a vid of zero is used (see the mod_vlan_vid action to set this).

              strip_vlan
                     Strips the VLAN tag from a packet if it is present.

              push_vlan:ethertype
                     Push  a  new VLAN tag onto the packet.  Ethertype is used as the the Ethertype for the tag.
                     Only ethertype 0x8100 should be used. (0x88a8 which the spec allows isn't supported at  the
                     moment.)  A priority of zero and the tag of zero are used for the new tag.

              push_mpls:ethertype
                     If  the  packet does not already contain any MPLS labels, changes the packet's Ethertype to
                     ethertype, which must be either the MPLS unicast Ethertype 0x8847  or  the  MPLS  multicast
                     Ethertype  0x8848,  and  then pushes an initial label stack entry.  The label stack entry's
                     default label is 2 if the packet contains IPv6 and 0 otherwise, its default traffic control
                     value is the low 3 bits of the packet's DSCP value (0 if the packet is not IP), and its TTL
                     is copied from the IP TTL (64 if the packet is not IP).

                     If the packet does already contain an MPLS label, pushes a new outermost label as a copy of
                     the existing outermost label.

                     There are some limitations in the implementation.  push_mpls followed by another  push_mpls
                     will result in the first push_mpls being discarded.

              pop_mpls:ethertype
                     Strips  the  outermost  MPLS  label  stack  entry.   Currently the implementation restricts
                     ethertype to a non-MPLS Ethertype and thus pop_mpls should only be applied to packets  with
                     an MPLS label stack depth of one.

                     There  are  some limitations in the implementation.  pop_mpls followed by another push_mpls
                     without an intermediate push_mpls will result in the first push_mpls being discarded.

              mod_dl_src:mac
                     Sets the source Ethernet address to mac.

              mod_dl_dst:mac
                     Sets the destination Ethernet address to mac.

              mod_nw_src:ip
                     Sets the IPv4 source address to ip.

              mod_nw_dst:ip
                     Sets the IPv4 destination address to ip.

              mod_tp_src:port
                     Sets the TCP or UDP or SCTP source port to port.

              mod_tp_dst:port
                     Sets the TCP or UDP or SCTP destination port to port.

              mod_nw_tos:tos
                     Sets the IPv4 ToS/DSCP field to tos, which must be a multiple of 4 between 0 and 255.  This
                     action does not modify the two least significant bits of the ToS field (the ECN bits).

              The following actions are Nicira vendor extensions that, as of this writing, are only known to  be
              implemented by Open vSwitch:

              resubmit:port
              resubmit([port],[table])
                     Re-searches this OpenFlow flow table (or the table whose number is specified by table) with
                     the  in_port  field replaced by port (if port is specified) and executes the actions found,
                     if any, in addition to any other actions in this flow entry.

                     Recursive resubmit actions are obeyed up to an implementation-defined maximum depth.   Open
                     vSwitch  1.0.1  and  earlier  did not support recursion; Open vSwitch before 1.2.90 did not
                     support table.

              set_tunnel:id
              set_tunnel64:id
                     If outputting to a port that encapsulates the packet in a tunnel and supports an identifier
                     (such as GRE), sets the identifier to id.  If the set_tunnel form is used and id fits in 32
                     bits, then this uses an action extension that is supported by Open vSwitch 1.0  and  later.
                     Otherwise, if id is a 64-bit value, it requires Open vSwitch 1.1 or later.

              set_queue:queue
                     Sets  the  queue  that  should  be  used  to  queue when packets are output.  The number of
                     supported queues depends on the  switch;  some  OpenFlow  implementations  do  not  support
                     queuing at all.

              pop_queue
                     Restores the queue to the value it was before any set_queue actions were applied.

              dec_ttl
              dec_ttl[(id1,id2)]
                     Decrement  TTL  of  IPv4  packet  or  hop limit of IPv6 packet.  If the TTL or hop limit is
                     initially zero, no decrement occurs.  Instead, a ``packet-in''  message  with  reason  code
                     OFPR_INVALID_TTL  is  sent to each connected controller that has enabled receiving them, if
                     any.  Processing the current set of actions then stops.  However, if  the  current  set  of
                     actions  was  reached  through  ``resubmit''  then remaining actions in outer levels resume
                     processing.  This action also optionally supports the ability to specify a  list  of  valid
                     controller  ids.   Each  of  controllers in the list will receive the ``packet_in'' message
                     only if they have registered to receive the invalid ttl packets.  If controller ids are not
                     specified, the ``packet_in'' message will be sent only to the controllers having controller
                     id zero which have registered for the invalid ttl packets.

              set_mpls_ttl:ttl
                     Set the TTL of the outer MPLS label stack entry of a packet.  ttl should be in the range  0
                     to 255 inclusive.

              dec_mpls_ttl
                     Decrement  TTL  of  the  outer MPLS label stack entry of a packet.  If the TTL is initially
                     zero,  no  decrement  occurs.   Instead,  a  ``packet-in''   message   with   reason   code
                     OFPR_INVALID_TTL  is  sent  to  each  connected  controller with controller id zer that has
                     enabled receiving them.  Processing the current set of actions then stops.  However, if the
                     current set of actions was reached through ``resubmit'' then  remaining  actions  in  outer
                     levels resume processing.

              note:[hh]...
                     Does  nothing  at  all.   Any number of bytes represented as hex digits hh may be included.
                     Pairs of hex digits may be separated by periods for readability.  The note action's  format
                     doesn't  include  an  exact length for its payload, so the provided bytes will be padded on
                     the right by enough bytes with value 0 to make the total number 6 more than a  multiple  of
                     8.

              move:src[start..end]->dst[start..end]
                     Copies  the named bits from field src to field dst.  src and dst must be NXM field names as
                     defined in nicira-ext.h, e.g. NXM_OF_UDP_SRC or NXM_NX_REG0.   Each  start  and  end  pair,
                     which  are  inclusive,  must  specify  the  same  number  of  bits  and must fit within its
                     respective field.  Shorthands for [start..end] exist: use [bit] to specify a single bit  or
                     [] to specify an entire field.

                     Examples:  move:NXM_NX_REG0[0..5]->NXM_NX_REG1[26..31]  copies  the  six  bits  numbered  0
                     through  5,  inclusive,   in   register   0   into   bits   26   through   31,   inclusive;
                     move:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[] copies the least significant 16 bits of register
                     0 into the VLAN TCI field.

              load:value->dst[start..end]
                     Writes value to bits start through end, inclusive, in field dst.

                     Example: load:55->NXM_NX_REG2[0..5] loads value 55 (bit pattern 110111) into bits 0 through
                     5, inclusive, in register 2.

              push:src[start..end]
                     Pushes start to end bits inclusive, in fields on top of the stack.

                     Example:  push:NXM_NX_REG2[0..5]  push  the  value  stored  in register 2 bits 0 through 5,
                     inclusive, on to the internal stack.

              pop:dst[start..end]
                     Pops from the top of the stack, retrieves the start to end bits inclusive, from  the  value
                     popped and store them into the corresponding bits in dst.

                     Example: pop:NXM_NX_REG2[0..5] pops the value from top of the stack.  Set register 2 bits 0
                     through 5, inclusive, based on bits 0 through 5 from the value just popped.

              set_field:value->dst
                     Writes  the  literal value into the field dst, which should be specified as a name used for
                     matching.  (This is similar to load but more closely matches the set-field  action  defined
                     in Open Flow 1.2 and above.)

                     Example: set_field:00:11:22:33:44:55->eth_src.

              multipath(fields, basis, algorithm, n_links, arg, dst[start..end])
                     Hashes  fields  using  basis as a universal hash parameter, then the applies multipath link
                     selection algorithm (with parameter arg) to choose one of n_links output links  numbered  0
                     through  n_links  minus  1,  and stores the link into dst[start..end], which must be an NXM
                     field as described above.

                     Currently, fields must be either eth_src or symmetric_l4  and  algorithm  must  be  one  of
                     modulo_n, hash_threshold, hrw, and iter_hash.  Only the iter_hash algorithm uses arg.

                     Refer to nicira-ext.h for more details.

              bundle(fields, basis, algorithm, slave_type, slaves:[s1, s2, ...])
                     Hashes  fields  using  basis  as  a  universal hash parameter, then applies the bundle link
                     selection algorithm  to  choose  one  of  the  listed  slaves  represented  as  slave_type.
                     Currently  the  only supported slave_type is ofport.  Thus, each s1 through sN should be an
                     OpenFlow port number. Outputs to the selected slave.

                     Currently, fields must be either eth_src or symmetric_l4 and algorithm must be one  of  hrw
                     and active_backup.

                     Example: bundle(eth_src,0,hrw,ofport,slaves:4,8) uses an Ethernet source hash with basis 0,
                     to select between OpenFlow ports 4 and 8 using the Highest Random Weight algorithm.

                     Refer to nicira-ext.h for more details.

              bundle_load(fields, basis, algorithm, slave_type, dst[start..end], slaves:[s1, s2, ...])
                     Has  the  same behavior as the bundle action, with one exception.  Instead of outputting to
                     the selected slave, it writes its selection to dst[start..end], which must be an NXM  field
                     as described above.

                     Example:  bundle_load(eth_src, 0, hrw, ofport, NXM_NX_REG0[], slaves:4, 8) uses an Ethernet
                     source hash with basis 0, to select between OpenFlow ports 4 and 8 using the Highest Random
                     Weight algorithm, and writes the selection to NXM_NX_REG0[].

                     Refer to nicira-ext.h for more details.

              learn(argument[,argument]...)
                     This action adds or modifies a flow in an OpenFlow table,  similar  to  ovs-ofctl  --strict
                     mod-flows.   The  arguments specify the flow's match fields, actions, and other properties,
                     as follows.  At least one match criterion and one  action  argument  should  ordinarily  be
                     specified.

                     idle_timeout=seconds
                     hard_timeout=seconds
                     priority=value
                            These key-value pairs have the same meaning as in the usual ovs-ofctl flow syntax.

                     fin_idle_timeout=seconds
                     fin_hard_timeout=seconds
                            Adds  a  fin_timeout  action  with  the  specified  arguments to the new flow.  This
                            feature was added in Open vSwitch 1.5.90.

                     table=number
                            The table in which the new flow  should  be  inserted.   Specify  a  decimal  number
                            between 0 and 254.  The default, if table is unspecified, is table 1.

                     field=value
                     field[start..end]=src[start..end]
                     field[start..end]
                            Adds a match criterion to the new flow.

                            The   first   form   specifies  that  field  must  match  the  literal  value,  e.g.
                            dl_type=0x0800.  All of  the  fields  and  values  for  ovs-ofctl  flow  syntax  are
                            available with their usual meanings.

                            The  second  form  specifies  that  field[start..end]  in  the  new  flow must match
                            src[start..end] taken from the flow currently being processed.

                            The  third  form  is  a  shorthand  for  the  second  form.    It   specifies   that
                            field[start..end]  in  the new flow must match field[start..end] taken from the flow
                            currently being processed.

                     load:value->dst[start..end]
                     load:src[start..end]->dst[start..end]
                            Adds a load action to the new flow.

                            The first form loads the literal value into bits start through  end,  inclusive,  in
                            field  dst.   Its  syntax  is  the same as the load action described earlier in this
                            section.

                            The second form loads  src[start..end],  a  value  from  the  flow  currently  being
                            processed, into bits start through end, inclusive, in field dst.

                     output:field[start..end]
                            Add  an  output  action to the new flow's actions, that outputs to the OpenFlow port
                            taken from field[start..end], which must be an NXM field as described above.

                     For best performance, segregate learned flows into a table (using table=number) that is not
                     used for any other flows except possibly for a lowest-priority ``catch-all'' flow, that is,
                     a flow with no match criteria.  (This is why the default table is 1, to  keep  the  learned
                     flows separate from the primary flow table 0.)

              apply_actions([action][,action...])
                     Applies  the  specific  action(s)  immediately.  The syntax of actions are same to actions=
                     field.

              clear_actions
                     Clears all the actions in the action set immediately.

              write_metadata:value[/mask]
                     Updates the metadata field for the flow. If mask is omitted,  the  metadata  field  is  set
                     exactly  to  value;  if  mask  is  specified,  then  a  1-bit  in  mask  indicates that the
                     corresponding bit in the metadata field will be replaced with the  corresponding  bit  from
                     value.  Both  value and mask are 64-bit values that are decimal by default; use a 0x prefix
                     to specify them in hexadecimal.

              goto_table:table
                     Indicates the next table in the process pipeline.

              fin_timeout(argument[,argument])
                     This action changes the idle timeout or hard timeout, or both, of this OpenFlow  rule  when
                     the  rule  matches  a TCP packet with the FIN or RST flag.  When such a packet is observed,
                     the action reduces the rule's timeouts to those specified on the  action.   If  the  rule's
                     existing  timeout  is  already  shorter  than  the one that the action specifies, then that
                     timeout is unaffected.

                     argument takes the following forms:

                     idle_timeout=seconds
                            Causes the flow to expire after the given number of seconds of inactivity.

                     hard_timeout=seconds
                            Causes the flow to expire after the given number of seconds, regardless of activity.
                            (seconds specifies time since the flow's creation, not since the receipt of the  FIN
                            or RST.)

                     This action was added in Open vSwitch 1.5.90.

              sample(argument[,argument]...)
                     Samples packets and sends one sample for every sampled packet.

                     argument takes the following forms:

                     probability=packets
                            The number of sampled packets out of 65535.  Must be greater or equal to 1.

                     collector_set_id=id
                            The  unsigned  32-bit  integer  identifier  of  the set of sample collectors to send
                            sampled packets to.  Defaults to 0.

                     obs_domain_id=id
                            When sending samples to IPFIX collectors, the unsigned  32-bit  integer  Observation
                            Domain ID sent in every IPFIX flow record.  Defaults to 0.

                     obs_point_id=id
                            When  sending  samples  to IPFIX collectors, the unsigned 32-bit integer Observation
                            Point ID sent in every IPFIX flow record.  Defaults to 0.

                     Refer to ovs-vswitchd.conf.db(8) for more details on configuring sample collector sets.

                     This action was added in Open vSwitch 1.10.90.

              exit   This action causes Open vSwitch to immediately halt execution of  further  actions.   Those
                     actions  which  have  already been executed are unaffected.  Any further actions, including
                     those which may be in other tables, or different levels of the  resubmit  call  stack,  are
                     ignored.

       An opaque identifier called a cookie can be used as a handle to identify a set of flows:

       cookie=value
              A  cookie  can  be  associated  with a flow using the add-flow, add-flows, and mod-flows commands.
              value can be any 64-bit number and need not be unique among flows.  If this field  is  omitted,  a
              default cookie value of 0 is used.

       cookie=value/mask
              When  using  NXM,  the cookie can be used as a handle for querying, modifying, and deleting flows.
              value and mask may be supplied  for  the  del-flows,  mod-flows,  dump-flows,  and  dump-aggregate
              commands  to  limit  matching  cookies.   A  1-bit in mask indicates that the corresponding bit in
              cookie must match exactly, and a 0-bit wildcards that bit.  A mask of -1 may be  used  to  exactly
              match a cookie.

              The mod-flows command can update the cookies of flows that match a cookie by specifying the cookie
              field twice (once with a mask for matching and once without to indicate the new value):

              ovs-ofctl mod-flows br0 cookie=1,actions=normal
                     Change all flows' cookies to 1 and change their actions to normal.

              ovs-ofctl mod-flows br0 cookie=1/-1,cookie=2,actions=normal
                     Update cookies with a value of 1 to 2 and change their actions to normal.

              The ability to match on cookies was added in Open vSwitch 1.5.0.

       The  following additional field sets the priority for flows added by the add-flow and add-flows commands.
       For mod-flows and del-flows when --strict is specified, priority must match along with the  rest  of  the
       flow  specification.  For mod-flows without --strict, priority is only significant if the command creates
       a new flow, that is, non-strict mod-flows does not match on priority and will not change the priority  of
       existing flows.  Other commands do not allow priority to be specified.

       priority=value
              The  priority  at  which a wildcarded entry will match in comparison to others.  value is a number
              between 0 and 65535, inclusive.  A higher value will match before a  lower  one.   An  exact-match
              entry will always have priority over an entry containing wildcards, so it has an implicit priority
              value  of  65535.   When  adding  a  flow, if the field is not specified, the flow's priority will
              default to 32768.

              OpenFlow leaves behavior undefined when two or more flows with  the  same  priority  can  match  a
              single  packet.   Some  users  expect  ``sensible''  behavior,  such as more specific flows taking
              precedence over less specific flows, but OpenFlow does not specify this and Open vSwitch does  not
              implement it.  Users should therefore take care to use priorities to ensure the behavior that they
              expect.

       The  add-flow, add-flows, and mod-flows commands support the following additional options.  These options
       affect only new flows.  Thus, for add-flow and add-flows, these options are always significant,  but  for
       mod-flows  they  are  significant  only  if  the command creates a new flow, that is, their values do not
       update or affect existing flows.

       idle_timeout=seconds
              Causes the flow to expire after the given number of seconds of inactivity.   A  value  of  0  (the
              default) prevents a flow from expiring due to inactivity.

       hard_timeout=seconds
              Causes the flow to expire after the given number of seconds, regardless of activity.  A value of 0
              (the default) gives the flow no hard expiration deadline.

       send_flow_rem
              Marks  the flow with a flag that causes the switch to generate a ``flow removed'' message and send
              it to interested controllers when the flow later expires or is removed.

       check_overlap
              Forces the switch to check that the flow match does not overlap that of any  different  flow  with
              the same priority in the same table.  (This check is expensive so it is best to avoid it.)

       The dump-flows, dump-aggregate, del-flow and del-flows commands support one additional optional field:

       out_port=port
              If  set, a matching flow must include an output action to port, which must an OpenFlow port number
              or name (e.g. local).

   Table Entry Output
       The dump-tables and dump-aggregate commands print information about the entries in a  datapath's  tables.
       Each line of output is a flow entry as described in Flow Syntax, above, plus some additional fields:

       duration=secs
              The  time,  in  seconds, that the entry has been in the table.  secs includes as much precision as
              the switch provides, possibly to nanosecond resolution.

       n_packets
              The number of packets that have matched the entry.

       n_bytes
              The total number of bytes from packets that have matched the entry.

       The following additional fields are included only if the switch is Open vSwitch 1.6 or later and the  NXM
       flow format is used to dump the flow (see the description of the --flow-format option below).  The values
       of  these  additional  fields  are  approximations  only and in particular idle_age will sometimes become
       nonzero even for busy flows.

       hard_age=secs
              The integer number of seconds since the flow was added or modified.  hard_age is displayed only if
              it differs from the integer part of duration.  (This is separate from duration  because  mod-flows
              restarts the hard_timeout timer without zeroing duration.)

       idle_age=secs
              The integer number of seconds that have passed without any packets passing through the flow.

OPTIONS

       --strict
              Uses strict matching when running flow modification commands.

       -O [version[,version]...]
       --protocols=[version[,version]...]
              Sets the OpenFlow protocol versions that are allowed when establishing an OpenFlow session.

              The  following  versions  are considered to be ready for general use.  These protocol versions are
              enabled by default:

              •      OpenFlow10, for OpenFlow 1.0.

              Support for the following protocol versions is provided  for  testing  and  development  purposes.
              They are not enabled by default:

              •      OpenFlow11, for OpenFlow 1.1.

              •      OpenFlow12, for OpenFlow 1.2.

              •      OpenFlow13, for OpenFlow 1.3.

       -F format[,format...]
       --flow-format=format[,format...]
              ovs-ofctl  supports  the  following  individual flow formats, any number of which may be listed as
              format:

              OpenFlow10-table_id
                     This is the standard OpenFlow 1.0 flow format.  All OpenFlow switches and all  versions  of
                     Open vSwitch support this flow format.

              OpenFlow10+table_id
                     This is the standard OpenFlow 1.0 flow format plus a Nicira extension that allows ovs-ofctl
                     to  specify  the  flow table in which a particular flow should be placed.  Open vSwitch 1.2
                     and later supports this flow format.

              NXM-table_id (Nicira Extended Match)
                     This Nicira extension to OpenFlow is flexible and  extensible.   It  supports  all  of  the
                     Nicira  flow extensions, such as tun_id and registers.  Open vSwitch 1.1 and later supports
                     this flow format.

              NXM+table_id (Nicira Extended Match)
                     This combines Nicira Extended match with the ability to place a flow in a  specific  table.
                     Open vSwitch 1.2 and later supports this flow format.

              OXM-OpenFlow12
              OXM-OpenFlow13
                     These are the standard OXM (OpenFlow Extensible Match) flow format in OpenFlow 1.2 and 1.3,
                     respectively.

              ovs-ofctl also supports the following abbreviations for collections of flow formats:

              any    Any supported flow format.

              OpenFlow10
                     OpenFlow10-table_id or OpenFlow10+table_id.

              NXM    NXM-table_id or NXM+table_id.

              OXM    OXM-OpenFlow12 or OXM-OpenFlow13.

              For commands that modify the flow table, ovs-ofctl by default negotiates the most widely supported
              flow  format  that  supports  the  flows  being  added.   For  commands that query the flow table,
              ovs-ofctl by default uses the most advanced format supported by the switch.

              This option, where format is a comma-separated list of one or more of the  formats  listed  above,
              limits  ovs-ofctl's choice of flow format.  If a command cannot work as requested using one of the
              specified flow formats, ovs-ofctl will report a fatal error.

       -P format
       --packet-in-format=format
              ovs-ofctl supports the following packet_in formats, in order of increasing capability:

              openflow10
                     This is the standard OpenFlow 1.0 packet in format. It should be supported by all  OpenFlow
                     switches.

              nxm (Nicira Extended Match)
                     This packet_in format includes flow metadata encoded using the NXM format.

              Usually,  ovs-ofctl  prefers  the  nxm  packet_in  format, but will allow the switch to choose its
              default if nxm is unsupported.  When format is one of the  formats  listed  in  the  above  table,
              ovs-ofctl  will  insist  on  the  selected  format.   If the switch does not support the requested
              format, ovs-ofctl will report a fatal error.  This option only affects the monitor command.

       --timestamp
              Print a timestamp before each received packet.  This option only affects  the  monitor  and  snoop
              commands.

       -m
       --more Increases  the  verbosity  of OpenFlow messages printed and logged by ovs-ofctl commands.  Specify
              this option more than once to increase verbosity further.

       --sort[=field]
       --rsort[=field]
              Display output sorted by flow field in ascending (--sort) or  descending  (--rsort)  order,  where
              field  is  any  of the fields that are allowed for matching or priority to sort by priority.  When
              field is omitted, the output is sorted by priority.  Specify these options multiple times to  sort
              by multiple fields.

              Any  given  flow  will  not  necessarily specify a value for a given field.  This requires special
              treatement:

              •      A flow that does not specify any part of a field that is used for sorting is  sorted  after
                     all  the  flows  that  do specify the field.  For example, --sort=tcp_src will sort all the
                     flows that specify a TCP source port in ascending order, followed by the flows that do  not
                     specify a TCP source port at all.

              •      A  flow  that  only specifies some bits in a field is sorted as if the wildcarded bits were
                     zero.  For example, --sort=nw_src would sort a flow  that  specifies  nw_src=192.168.0.0/24
                     the same as nw_src=192.168.0.0.

              These options currently affect only dump-flows output.

       --pidfile[=pidfile]
              Causes a file (by default, ovs-ofctl.pid) to be created indicating the PID of the running process.
              If  the  pidfile  argument is not specified, or if it does not begin with /, then it is created in
              /var/run/openvswitch.

              If --pidfile is not specified, no pidfile is created.

       --overwrite-pidfile
              By default, when --pidfile is specified and the specified pidfile already exists and is locked  by
              a running process, ovs-ofctl refuses to start.  Specify --overwrite-pidfile to cause it to instead
              overwrite the pidfile.

              When --pidfile is not specified, this option has no effect.

       --detach
              Causes  ovs-ofctl  to  detach  itself from the foreground session and run as a background process.
              ovs-ofctl detaches only when executing the monitor or snoop commands.

       --monitor
              Creates an additional process to monitor the ovs-ofctl daemon.  If the daemon dies due to a signal
              that indicates a programming error (e.g. SIGSEGV, SIGABRT), then the monitor process starts a  new
              copy of it.  If the daemon die or exits for another reason, the monitor process exits.

              This option is normally used with --detach, but it also functions without it.

       --no-chdir
              By  default,  when  --detach  is specified, ovs-ofctl changes its current working directory to the
              root directory after  it  detaches.   Otherwise,  invoking  ovs-ofctl  from  a  carelessly  chosen
              directory  would  prevent  the  administrator  from  unmounting  the  file  system that holds that
              directory.

              Specifying --no-chdir suppresses this behavior, preventing ovs-ofctl  from  changing  its  current
              working  directory.   This may be useful for collecting core files, since it is common behavior to
              write core dumps into the current working directory and the root directory is not a good directory
              to use.

              This option has no effect when --detach is not specified.

   Public Key Infrastructure Options
       -p privkey.pem
       --private-key=privkey.pem
              Specifies a PEM file containing the private key used as  ovs-ofctl's  identity  for  outgoing  SSL
              connections.

       -c cert.pem
       --certificate=cert.pem
              Specifies  a  PEM  file containing a certificate that certifies the private key specified on -p or
              --private-key to be trustworthy.  The certificate must be signed by the certificate authority (CA)
              that the peer in SSL connections will use to verify it.

       -C cacert.pem
       --ca-cert=cacert.pem
              Specifies a  PEM  file  containing  the  CA  certificate  that  ovs-ofctl  should  use  to  verify
              certificates  presented  to it by SSL peers.  (This may be the same certificate that SSL peers use
              to verify the certificate specified on -c  or  --certificate,  or  it  may  be  a  different  one,
              depending on the PKI design in use.)

       -C none
       --ca-cert=none
              Disables  verification  of  certificates presented by SSL peers.  This introduces a security risk,
              because it means that certificates cannot be verified to be those of known trusted hosts.

       -v[spec]
       --verbose=[spec]
              Sets logging levels.  Without any spec, sets the log level for every module and facility  to  dbg.
              Otherwise,  spec  is  a list of words separated by spaces or commas or colons, up to one from each
              category below:

              •      A valid module name, as displayed by the vlog/list command on ovs-appctl(8), limits the log
                     level change to the specified module.

              •      syslog, console, or file, to limit the log level change to only to the system log,  to  the
                     console, or to a file, respectively.

              •      off,  emer,  err,  warn,  info,  or  dbg,  to control the log level.  Messages of the given
                     severity or higher will be logged, and messages of lower severity  will  be  filtered  out.
                     off filters out all messages.  See ovs-appctl(8) for a definition of each log level.

              Case is not significant within spec.

              Regardless of the log levels set for file, logging to a file will not take place unless --log-file
              is also specified (see below).

              For compatibility with older versions of OVS, any is accepted as a word but has no effect.

       -v
       --verbose
              Sets the maximum logging verbosity level, equivalent to --verbose=dbg.

       --log-file[=file]
              Enables  logging  to  a file.  If file is specified, then it is used as the exact name for the log
              file.  The default log file name used if file is omitted is /var/log/openvswitch/ovs-ofctl.log.

       -h
       --help Prints a brief help message to the console.

       -V
       --version
              Prints version information to the console.

RUNTIME MANAGEMENT COMMANDS

       ovs-appctl(8) can send commands to a running ovs-ofctl process.  The supported commands are listed below.

       exit   Causes ovs-ofctl to gracefully terminate.  This command applies only when executing the monitor or
              snoop commands.

       ofctl/set-output-file file
              Causes all subsequent output to go to file instead of stderr.   This  command  applies  only  when
              executing the monitor or snoop commands.

       ofctl/send ofmsg...
              Sends  each  ofmsg, specified as a sequence of hex digits that express an OpenFlow message, on the
              OpenFlow connection.  This command is useful only when executing the monitor command.

       ofctl/barrier
              Sends an OpenFlow barrier request on the OpenFlow connection and waits for a reply.  This  command
              is useful only for the monitor command.

EXAMPLES

       The following examples assume that ovs-vswitchd has a bridge named br0 configured.

       ovs-ofctl dump-tables br0
              Prints  out  the  switch's  table  stats.  (This is more interesting after some traffic has passed
              through.)

       ovs-ofctl dump-flows br0
              Prints the flow entries in the switch.

SEE ALSO

       ovs-appctl(8), ovs-controller(8), ovs-vswitchd(8) ovs-vswitchd.conf.db(8)

Open vSwitch                                          2.0.2                                         ovs-ofctl(8)