X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utilities%2Fovs-vsctl.8.in;h=1b80d050d5e445a21cc0beb7a7e4c1c76f0bc6a9;hb=9d2e744579e5f3c4e0f65cf4ba5e8cfeab91fed5;hp=97944dfb6fc65077be462e6ccf183fcee3efc63e;hpb=93b8df3853659238df58b1e1e69a0c5608e208f8;p=openvswitch diff --git a/utilities/ovs-vsctl.8.in b/utilities/ovs-vsctl.8.in index 97944dfb..1b80d050 100644 --- a/utilities/ovs-vsctl.8.in +++ b/utilities/ovs-vsctl.8.in @@ -25,19 +25,17 @@ ovs\-vsctl \- utility for querying and configuring \fBovs\-vswitchd\fR . .SH DESCRIPTION The \fBovs\-vsctl\fR program configures \fBovs\-vswitchd\fR(8) by -providing a high\-level interface to its configuration -database. This program is mainly intended for use when -\fBovs\-vswitchd\fR is running. If it is used when -\fBovs\-vswitchd\fR is not running, then \fB\-\-no\-wait\fR should be -specified and configuration changes will only take effect when -\fBovs\-vswitchd\fR is started. -.PP -By default, each time \fBovs\-vsctl\fR runs, it connects to an -\fBovsdb\-server\fR process that maintains an Open vSwitch -configuration database. Using this connection, it queries and -possibly applies changes to the database, depending on the supplied -commands. Then, if it applied any changes, it waits until -\fBovs\-vswitchd\fR has finished reconfiguring itself before it exits. +providing a high\-level interface to its configuration database. +See \fBovs\-vswitchd.conf.db\fR(5) for comprehensive documentation of +the database schema. +.PP +\fBovs\-vsctl\fR connects to an \fBovsdb\-server\fR process that +maintains an Open vSwitch configuration database. Using this +connection, it queries and possibly applies changes to the database, +depending on the supplied commands. Then, if it applied any changes, +by default it waits until \fBovs\-vswitchd\fR has finished +reconfiguring itself before it exits. (If you use \fBovs\-vsctl\fR +when \fBovs\-vswitchd\fR is not running, use \fB\-\-no\-wait\fR.) .PP \fBovs\-vsctl\fR can perform any number of commands in a single run, implemented as a single atomic transaction against the database. @@ -69,7 +67,8 @@ When such a ``fake bridge'' is active, \fBovs\-vsctl\fR will treat it much like a bridge separate from its ``parent bridge,'' but the actual implementation in Open vSwitch uses only a single bridge, with ports on the fake bridge assigned the implicit VLAN of the fake bridge of which -they are members. +they are members. (A fake bridge for VLAN 0 receives packets that +have no 802.1Q tag or a tag with VLAN 0.) . .SH OPTIONS . @@ -153,6 +152,9 @@ Any successful \fBovs\-vsctl\fR command automatically initializes the Open vSwitch database if it is empty. This command is provided to initialize the database without executing any other command. . +.IP "\fBshow\fR" +Prints a brief overview of the database contents. +. .IP "\fBemer\-reset\fR" Reset the configuration into a clean state. It deconfigures OpenFlow controllers, OVSDB servers, and SSL, and deletes port mirroring, @@ -169,20 +171,20 @@ Creates a new bridge named \fIbridge\fR. Initially the bridge will have no ports (other than \fIbridge\fR itself). .IP Without \fB\-\-may\-exist\fR, attempting to create a bridge that -exists is an error. With \fB\-\-may\-exist\fR, \fIbridge\fR may -already exist (but it must be a real bridge, not a VLAN bridge). +exists is an error. With \fB\-\-may\-exist\fR, this command does +nothing if \fIbridge\fR already exists as a real bridge. . .IP "[\fB\-\-may\-exist\fR] \fBadd\-br \fIbridge parent vlan\fR" Creates a ``fake bridge'' named \fIbridge\fR within the existing Open vSwitch bridge \fIparent\fR, which must already exist and must not itself be a fake bridge. The new fake bridge will be on 802.1Q VLAN -\fIvlan\fR, which must be an integer between 1 and 4095. Initially +\fIvlan\fR, which must be an integer between 0 and 4095. Initially \fIbridge\fR will have no ports (other than \fIbridge\fR itself). .IP Without \fB\-\-may\-exist\fR, attempting to create a bridge that -exists is an error. With \fB\-\-may\-exist\fR, \fIbridge\fR may -already exist (but it must have the specified \fIvlan\fR and -\fIparent\fR). +exists is an error. With \fB\-\-may\-exist\fR, this command does +nothing if \fIbridge\fR already exists as a VLAN bridge under +\fIparent\fR for \fIvlan\fR. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-br \fIbridge\fR" Deletes \fIbridge\fR and all of its ports. If \fIbridge\fR is a real @@ -258,8 +260,8 @@ port for VLAN 9. The syntax is the same as that for the \fBset\fR command (see \fBDatabase Commands\fR below). .IP Without \fB\-\-may\-exist\fR, attempting to create a port that exists -is an error. With \fB\-\-may\-exist\fR, \fIport\fR may already exist -(but it must be on \fIbridge\fR and not be a bonded port). +is an error. With \fB\-\-may\-exist\fR, this command does nothing if +\fIport\fR already exists on \fIbridge\fR and is not a bonded port. . .IP "[\fB\-\-fake\-iface\fR] \fBadd\-bond \fIbridge port iface\fR\&... [\fIcolumn\fR[\fB:\fIkey\fR]\fR=\fIvalue\fR]\&...\fR" Creates on \fIbridge\fR a new port named \fIport\fR that bonds @@ -275,9 +277,9 @@ created. This should only be used for compatibility with legacy software that requires it. .IP Without \fB\-\-may\-exist\fR, attempting to create a port that exists -is an error. With \fB\-\-may\-exist\fR, \fIport\fR may already exist -(but it must be on \fIbridge\fR and bond together exactly the -specified interface). +is an error. With \fB\-\-may\-exist\fR, this command does nothing if +\fIport\fR already exists on \fIbridge\fR and bonds together exactly +the specified interfaces. . .IP "[\fB\-\-if\-exists\fR] \fBdel\-port \fR[\fIbridge\fR] \fIport\fR" Deletes \fIport\fR. If \fIbridge\fR is omitted, \fIport\fR is removed @@ -321,8 +323,13 @@ output. .SS "OpenFlow Controller Connectivity" . \fBovs\-vswitchd\fR can perform all configured bridging and switching -locally, or it can be configured to connect a given bridge to one or -more external OpenFlow controllers, such as NOX. +locally, or it can be configured to communicate with one or more +external OpenFlow controllers. The switch is typically configured to +connect to a primary controller that takes charge of the bridge's flow +table to implement a network policy. In addition, the switch can be +configured to listen to connections from service controllers. Service +controllers are typically used for occasional support and maintenance, +e.g. with \fBovs\-ofctl\fR. . .IP "\fBget\-controller\fR \fIbridge\fR" Prints the configured controller target. @@ -336,6 +343,7 @@ use any of the following forms: . .RS .so lib/vconn-active.man +.so lib/vconn-passive.man .RE . .ST "Controller Failure Settings" @@ -350,7 +358,7 @@ If the value is \fBstandalone\fR, or if neither of these settings is set, \fBovs\-vswitchd\fR will take over responsibility for setting up flows when no message has been received from the controller for three -times the inactivity probe interval (xxx needs to be exposed). In this mode, +times the inactivity probe interval. In this mode, \fBovs\-vswitchd\fR causes the datapath to act like an ordinary MAC-learning switch. \fBovs\-vswitchd\fR will continue to retry connecting to the controller in the background and, when the connection succeeds, @@ -477,6 +485,9 @@ A bridge port. Records may be identified by port name. .IP "\fBInterface\fR" A network device attached to a port. Records may be identified by name. +.IP "\fBFlow_Table\fR" +Configuration for a particular OpenFlow flow table. Records may be +identified by name. .IP "\fBQoS\fR" Quality-of-service configuration for a \fBPort\fR. Records may be identified by port name. @@ -549,8 +560,10 @@ follow the syntax for the column's key type and value type, respectively. When multiple pairs are present (separated by spaces or a comma), duplicate keys are not allowed, and again the order is not important. Duplicate values are allowed. An empty map is represented -as \fB{}\fR, and curly braces may be optionally enclose non-empty maps -as well. +as \fB{}\fR. Curly braces may optionally enclose non-empty maps as +well (but use quotes to prevent the shell from expanding +\fBother-config={0=x,1=y}\fR into \fBother-config=0=x +other-config=1=y\fR, which may not have the desired effect). . .ST "Database Command Syntax" .IP "[\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBlist \fItable \fR[\fIrecord\fR]..." @@ -564,11 +577,56 @@ alphabetical order by column name. .IP "[\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBfind \fItable \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR]..." Lists the data in each record in \fItable\fR whose \fIcolumn\fR equals \fIvalue\fR or, if \fIkey\fR is specified, whose \fIcolumn\fR contains -a \fIkey\fR with the specified \fIvalue\fR. Any of the operators -\fB!=\fR, \fB<\fR, \fB>\fR, \fB<=\fR, or \fB>=\fR may be substituted -for \fB=\fR to test for inequality, less than, greater than, less than -or equal to, or greater than or equal to, respectively. (Don't forget -to escape \fB<\fR or \fB>\fR from interpretation by the shell.) +a \fIkey\fR with the specified \fIvalue\fR. The following operators +may be used where \fB=\fR is written in the syntax summary: +.RS +.IP "\fB= != < > <= >=\fR" +Selects records in which \fIcolumn\fR[\fB:\fIkey\fR] equals, does not +equal, is less than, is greater than, is less than or equal to, or is +greater than or equal to \fIvalue\fR, respectively. +.IP +Consider \fIcolumn\fR[\fB:\fIkey\fR] and \fIvalue\fR as sets of +elements. Identical sets are considered equal. Otherwise, if the +sets have different numbers of elements, then the set with more +elements is considered to be larger. Otherwise, consider a element +from each set pairwise, in increasing order within each set. The +first pair that differs determines the result. (For a column that +contains key-value pairs, first all the keys are compared, and values +are considered only if the two sets contain identical keys.) +.IP "\fB{=} {!=}\fR" +Test for set equality or inequality, respectively. +.IP "\fB{<=}\fR" +Selects records in which \fIcolumn\fR[\fB:\fIkey\fR] is a subset of +\fIvalue\fR. For example, \fBflood-vlans{<=}1,2\fR selects records in +which the \fBflood-vlans\fR column is the empty set or contains 1 or 2 +or both. +.IP "\fB{<}\fR" +Selects records in which \fIcolumn\fR[\fB:\fIkey\fR] is a proper +subset of \fIvalue\fR. For example, \fBflood-vlans{<}1,2\fR selects +records in which the \fBflood-vlans\fR column is the empty set or +contains 1 or 2 but not both. +.IP "\fB{>=} {>}\fR" +Same as \fB{<=}\fR and \fB{<}\fR, respectively, except that the +relationship is reversed. For example, \fBflood-vlans{>=}1,2\fR +selects records in which the \fBflood-vlans\fR column contains both 1 +and 2. +.RE +.IP +For arithmetic operators (\fB= != < > <= >=\fR), when \fIkey\fR is +specified but a particular record's \fIcolumn\fR does not contain +\fIkey\fR, the record is always omitted from the results. Thus, the +condition \fBother-config:mtu!=1500\fR matches records that have a +\fBmtu\fR key whose value is not 1500, but not those that lack an +\fBmtu\fR key. +.IP +For the set operators, when \fIkey\fR is specified but a particular +record's \fIcolumn\fR does not contain \fIkey\fR, the comparison is +done against an empty set. Thus, the condition +\fBother-config:mtu{!=}1500\fR matches records that have a \fBmtu\fR +key whose value is not 1500 and those that lack an \fBmtu\fR key. +.IP +Don't forget to escape \fB<\fR or \fB>\fR from interpretation by the +shell. .IP If \fB\-\-columns\fR is specified, only the requested columns are listed, in the specified order. Otherwise all columns are listed, in @@ -656,6 +714,8 @@ this. .IP "\fR[\fB\-\-if\-exists\fR] \fBdestroy \fItable record\fR..." Deletes each specified \fIrecord\fR from \fItable\fR. Unless \fB\-\-if\-exists\fR is specified, each \fIrecord\fRs must exist. +.IP "\fB\-\-all destroy \fItable\fR" +Deletes all records from the \fItable\fR. .IP The \fBdestroy\fR command is only useful for records in the \fBQoS\fR or \fBQueue\fR tables. Records in other tables are automatically @@ -691,6 +751,9 @@ initially connects to the database. Consider specifying \fB\-\-timeout=0\fR along with \fB\-\-wait\-until\fR, to prevent \fBovs\-vsctl\fR from terminating after waiting only at most 5 seconds. +.IP "\fBcomment \fR[\fIarg\fR]..." +This command has no effect on behavior, but any database log record +created by the command will include the command and its arguments. .SH "EXAMPLES" Create a new bridge named br0 and add port eth0 to it: .IP @@ -726,6 +789,12 @@ access port for VLAN 10, and configure it with an IP address: .IP .B "ifconfig vlan10 192.168.0.123" . +.PP +Add a GRE tunnel port \fBgre0\fR to remote IP address 1.2.3.4 to +bridge \fBbr0\fR: +.IP +.B "ovs\-vsctl add\-port br0 gre0 \-\- set Interface gre0 type=gre options:remote_ip=1.2.3.4" +. .SS "Port Mirroring" .PP Mirror all packets received or sent on \fBeth0\fR or \fBeth1\fR onto @@ -746,7 +815,13 @@ ignored): Remove the mirror created above from \fBbr0\fR, which also destroys the Mirror record (since it is now unreferenced): .IP -.B "remove Bridge br0 mirrors mymirror" +.B "ovs\-vsctl \-\- \-\-id=@rec get Mirror mymirror \(rs" +.IP +.B "\-\- remove Bridge br0 mirrors @rec" +.PP +The following simpler command also works: +.IP +.B "ovs\-vsctl clear Bridge br0 mirrors" .SS "Quality of Service (QoS)" .PP Create a \fBlinux\-htb\fR QoS record that points to a few queues and @@ -775,16 +850,17 @@ unreferenced QoS records are not automatically destroyed): (This command will leave two unreferenced Queue records in the database. To delete them, use "\fBovs\-vsctl list Queue\fR" to find their UUIDs, then "\fBovs\-vsctl destroy Queue \fIuuid1\fR -\fIuuid2\fR" to destroy each of them.) +\fIuuid2\fR" to destroy each of them or use +"\fBovs\-vsctl -- --all destroy Queue\fR" to delete all records.) .SS "Connectivity Monitoring" .PP Monitor connectivity to a remote maintenance point on eth0. .IP -.B "ovs\-vsctl set Interface eth0 cfm_mpid=1 cfm_remote_mpid=2" +.B "ovs\-vsctl set Interface eth0 cfm_mpid=1" .PP Deconfigure connectivity monitoring from above: .IP -.B "ovs\-vsctl clear Interface eth0 cfm_mpid cfm_remote_mpid" +.B "ovs\-vsctl clear Interface eth0 cfm_mpid" .SS "NetFlow" .PP Configure bridge \fBbr0\fR to send NetFlow records to UDP port 5566 on @@ -813,10 +889,28 @@ with specific sampling parameters: .IP .B "\-\- set Bridge br0 sflow=@s" .PP -Deconfigure sFlow from br0, which also destroys the sFlow record +Deconfigure sFlow from \fBbr0\fR, which also destroys the sFlow record (since it is now unreferenced): .IP .B "ovs\-vsctl \-\- clear Bridge br0 sflow" +.SS "802.1D Spanning Tree Protocol (STP)" +.PP +Configure bridge \fBbr0\fR to participate in an 802.1D spanning tree: +.IP +.B "ovs\-vsctl set Bridge br0 stp_enable=true" +.PP +Set the bridge priority of \fBbr0\fR to 0x7800: +.IP +.B "ovs\-vsctl set Bridge br0 other_config:stp-priority=0x7800" +.PP +Set the path cost of port \fBeth0\fR to 10: +.IP +.B "ovs\-vsctl set Port eth0 other_config:stp-path-cost=10" +.PP +Deconfigure STP from above: +.IP +.B "ovs\-vsctl clear Bridge br0 stp_enable" +.PP .SH "EXIT STATUS" .IP "0" Successful program execution. @@ -828,4 +922,5 @@ bridge that does not exist. .SH "SEE ALSO" . .BR ovsdb\-server (1), -.BR ovs\-vswitchd (8). +.BR ovs\-vswitchd (8), +.BR ovs\-vswitchd.conf.db (5).