On 9/15/26 5:15 PM, Ales Musil via dev wrote: > The simulator reference omitted important startup behavior and > several public interfaces, making it difficult to reproduce examples > against the current utility. Describe the supported workflow and > constraints from the implementation. > > Assisted-by: GPT-5.6-Luna, OpenCode > Signed-off-by: Ales Musil <[email protected]> > ---
Hi Ales, I'm reviewing the series but for this specific patch I keep wondering if we shouldn't just remove or deprecate ovn-sim. I don't know of anyone using it and nowadays setting up an ovn-sandbox seems way easier and, at least for me, seems more practical. I'll leave out this patch for now, if that's OK with you. Regards, Dumitru > Documentation/ref/ovn-sim.1.rst | 140 +++++++++++++++++++++++--------- > 1 file changed, 100 insertions(+), 40 deletions(-) > > diff --git a/Documentation/ref/ovn-sim.1.rst b/Documentation/ref/ovn-sim.1.rst > index 35abd39b1..211df4922 100644 > --- a/Documentation/ref/ovn-sim.1.rst > +++ b/Documentation/ref/ovn-sim.1.rst > @@ -10,8 +10,8 @@ Synopsis > Description > =========== > > -``ovn-sim`` is a wrapper script that adds ovn related commands on > -top of ``ovs-sim``. > +``ovn-sim`` is a wrapper around ``ovs-sim`` that adds commands for > +simulating OVN. > > ``ovs-sim`` provides a convenient environment for running one or more Open > vSwitch instances and related software in a sandboxed simulation environment. > @@ -29,8 +29,41 @@ build directory, e.g.:: > make > utilities/ovn-sim > > -See documentation on ``ovs-sim`` for info on simulator, including the > -parameters you can use. > +On startup, ``ovn-sim`` checks that both Open vSwitch and OVN have been > +built. It then performs the normal ``ovs-sim`` initialization: it removes > +any existing ``sandbox`` directory in the current directory, creates a new > +one, installs the built Open vSwitch man pages there, and starts a simulated > +Open vSwitch instance named ``main``. The simulation does not require > +superuser privileges and should not normally be run with them. > + > +See ``ovs-sim``\(1) for more information about the sandbox and the Open > +vSwitch commands available within it. For example, run ``man ovs-sim`` from > +an interactive ``ovn-sim`` shell. > + > +Command-line Options > +==================== > + > +*script* > + Sources *script* into the simulator's Bash shell after initializing the > + sandbox. Multiple scripts run in command-line order, and state changes > + made by one script are visible to subsequent scripts. If a script fails, > + ``ovn-sim`` exits immediately with the same status. > + > +``-i`` or ``--interactive`` > + Starts an interactive Bash shell after running any scripts. An > + interactive shell is also started when no scripts are specified. Without > + this option, ``ovn-sim`` exits after the specified scripts finish. > + > +``-h`` or ``--help`` > + Prints a brief usage message and exits. > + > +Commands > +======== > + > +Scripts and interactive sessions can use all commands documented by > +``ovs-sim``\(1), including ``sim_add``, ``as``, ``net_add``, and > +``net_attach``. They can also use the following OVN-specific commands. The > +commands are exported Bash functions, so they are available in scripts. > > OVN Commands > ------------ > @@ -39,71 +72,98 @@ These commands interact with OVN, the Open Virtual > Network. > > ``ovn_start`` [*options*] > Creates and initializes the central OVN databases (both > - ``ovn-sb(5)`` and ``ovn-nb(5)``) and starts an instance of > - ``ovsdb-server`` for each one. Also starts an instance of > - ``ovn-northd``. > + ``ovn-sb``\(5) and ``ovn-nb``\(5)), starts their ``ovsdb-server`` > + instances, and starts ``ovn-northd``. It also installs the built OVN man > + pages and configures ``ovn-nbctl`` and ``ovn-sbctl`` in the simulation to > + use these databases by default. ``ovn_start`` may be run only once in a > + simulation. > > The following options are available: > > ``--nbdb-model`` *model* > - Uses the given database model for the northbound database. > - The *model* may be ``standalone`` (the default), ``backup``, > - or ``clustered``. > + Uses *model* for the northbound database. *model* may be > + ``standalone`` (the default), ``backup``, or ``clustered``. > + A standalone model starts one server, a backup model starts an > + active server and a backup server, and a clustered model starts > + the number selected by ``--nbdb-servers``. > > ``--nbdb-servers`` *n* > - For a clustered northbound database, the number of servers in > - the cluster. The default is 3. > + Selects the clustered model and starts *n* northbound database > + servers. *n* must be from 1 through 99. The default for the > + clustered model is 3. > > ``--sbdb-model`` *model* > - Uses the given database model for the southbound database. > - The *model* may be ``standalone`` (the default), ``backup``, > - or ``clustered``. > + Uses *model* for the southbound database. *model* may be > + ``standalone`` (the default), ``backup``, or ``clustered``. > + A standalone model starts one server, a backup model starts an > + active server and a backup server, and a clustered model starts > + the number selected by ``--sbdb-servers``. > > ``--sbdb-servers`` *n* > - For a clustered southbound database, the number of servers in > - the cluster. The default is 3. > + Selects the clustered model and starts *n* southbound database > + servers. *n* must be from 1 through 99. The default for the > + clustered model is 3. > + > + ``-h`` or ``--help`` > + Prints usage information for ``ovn_start``. > > ``ovn_attach`` *network* *bridge* *ip* [*masklen*] > - First, this command attaches bridge to interconnection network > - network, just like ``net_attach`` *network* *bridge*. Second, it > - configures (simulated) IP address *ip* (with network mask length > - *masklen*, which defaults to 24) on *bridge*. Finally, it > - configures the Open vSwitch database to work with OVN and starts > - ``ovn-controller``. > + Attaches *bridge* in the default sandbox to interconnection network > + *network*, as with ``net_attach`` *network* *bridge*. It configures the > + simulated IPv4 address *ip* on *bridge*, with prefix length *masklen*, > + which defaults to 24. IPv6 addresses are not supported. > + > + The command configures the sandbox to use the southbound database, > + configures Geneve encapsulation with *ip* as the encapsulation address, > + creates ``br-int``, and starts ``ovn-controller``. Run ``ovn_start`` and > + ``net_add`` first, then use ``sim_add`` and ``ovs-vsctl`` to create the > + sandbox and *bridge*. The default sandbox must not be ``main``. > + > + ``ovn_attach --help`` prints usage information for ``ovn_attach``. > + > +``ovn_as`` *sandbox* [*command* [*arg*]...] > + Selects *sandbox* for both OVN and Open vSwitch commands. Without a > + *command*, it changes the default sandbox for subsequent commands. With > + a *command*, it runs that command in the selected sandbox, as with > + ``as`` *sandbox* *command* *arg*..., and leaves the default Open vSwitch > + target unchanged. The OVN directory selection remains in effect. This > + is useful for commands such as ``ovn-appctl`` that use OVN runtime > + directories. > > Examples > ======== > > -Simulating hypervisors, starting ovn controller (via ovn_attach) and > -adding a logical port on each one of them:: > +The following example creates two simulated hypervisors, starts an > +``ovn-controller`` on each one with ``ovn_attach``, and adds one logical port > +per hypervisor:: > > ovn_start > ovn-nbctl ls-add lsw0 > net_add n1 > for i in 0 1; do > sim_add hv$i > - as hv$i > + ovn_as hv$i > ovs-vsctl add-br br-phys > - ovn_attach n1 br-phys 192.168.0.`expr $i + 1` > + ovn_attach n1 br-phys 192.168.0.$((i + 1)) > ovs-vsctl add-port br-int vif$i -- \ > set Interface vif$i external-ids:iface-id=lp$i > ovn-nbctl lsp-add lsw0 lp$i > ovn-nbctl lsp-set-addresses lp$i f0:00:00:00:00:0$i > done > > -Here’s a primitive OVN "scale test" (adjust the scale by changing > -``n`` in the first line):: > +The following primitive scale test creates a clustered southbound database > +and 200 hypervisors. Adjust the scale by changing ``n`` in the first line:: > > n=200; export n > ovn_start --sbdb-model=clustered > net_add n1 > ovn-nbctl ls-add br0 > - for i in `seq $n`; do > + for i in $(seq "$n"); do > (sim_add hv$i > - as hv$i > + ovn_as hv$i > ovs-vsctl add-br br-phys > - y=$(expr $i / 256) > - x=$(expr $i % 256) > + y=$((i / 256)) > + x=$((i % 256)) > ovn_attach n1 br-phys 192.168.$y.$x > ovs-vsctl add-port br-int vif$i -- \ > set Interface vif$i external-ids:iface-id=lp$i) & > @@ -112,15 +172,15 @@ Here’s a primitive OVN "scale test" (adjust the scale > by changing > esac > done > wait > - for i in `seq $n`; do > - yy=$(printf %02x $(expr $i / 256)) > - xx=$(printf %02x $(expr $i % 256)) > + for i in $(seq "$n"); do > + yy=$(printf %02x $((i / 256))) > + xx=$(printf %02x $((i % 256))) > ovn-nbctl lsp-add br0 lp$i > ovn-nbctl lsp-set-addresses lp$i f0:00:00:00:$yy:$xx > done > > -When the scale test has finished initializing, you can watch the > -logical ports come up with a command like this:: > +When the scale test has finished initializing, the following command shows > +logical ports that are not yet up:: > > - watch 'for i in `seq $n`; do \ > - if test `ovn-nbctl lsp-get-up lp$i` != up; then echo $i; fi; done' > + watch 'for i in $(seq "$n"); do \ > + if test "$(ovn-nbctl lsp-get-up lp$i)" != up; then echo $i; fi; done' _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
