2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 09:58:01 +00:00

ovn: Rename ovn-nbd to ovn-northd.

It came up in a recent discussion that the use of 'nbd' could cause
confusion since nbd is used for "Network Block Device", which may be
used in many of the same environments that OVN would be used in.

To avoid the possible issue, just rename ovn-nbd to ovn-northd.
While we're at it, create a subdirectory under ovn/ to hold all files
related to ovn-northd.  For now it's just a single C file, but we
may add more source files in the future.

Signed-off-by: Russell Bryant <rbryant@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
Russell Bryant 2015-04-16 17:13:54 -04:00 committed by Ben Pfaff
parent 1d4e6b55b5
commit 91ae206597
10 changed files with 65 additions and 63 deletions

1
ovn/.gitignore vendored
View File

@ -13,4 +13,3 @@
/ovn-sb-idl.ovsidl /ovn-sb-idl.ovsidl
/ovn-nbctl /ovn-nbctl
/ovn-nbctl.8 /ovn-nbctl.8
/ovn-nbd

View File

@ -2,7 +2,7 @@
ovn-controller is the primary user of flow match expressions, but ovn-controller is the primary user of flow match expressions, but
the same syntax and I imagine the same code ought to be useful in the same syntax and I imagine the same code ought to be useful in
ovn-nbd for ACL match expressions. ovn-northd for ACL match expressions.
* ovn-controller * ovn-controller
@ -118,7 +118,7 @@
Can probably get this from Open_vSwitch database. Can probably get this from Open_vSwitch database.
* ovn-nbd * ovn-northd
** Monitor OVN_Northbound database, trigger Pipeline recomputation on change. ** Monitor OVN_Northbound database, trigger Pipeline recomputation on change.
@ -234,7 +234,7 @@
No details yet. No details yet.
** Init scripts for ovn-controller (on HVs), ovn-nbd, OVN DB server. ** Init scripts for ovn-controller (on HVs), ovn-northd, OVN DB server.
** Distribution packaging. ** Distribution packaging.

View File

@ -123,10 +123,6 @@ bin_PROGRAMS += ovn/ovn-nbctl
ovn_ovn_nbctl_SOURCES = ovn/ovn-nbctl.c ovn_ovn_nbctl_SOURCES = ovn/ovn-nbctl.c
ovn_ovn_nbctl_LDADD = ovn/libovn.la ovsdb/libovsdb.la lib/libopenvswitch.la ovn_ovn_nbctl_LDADD = ovn/libovn.la ovsdb/libovsdb.la lib/libopenvswitch.la
# ovn-nbd
bin_PROGRAMS += ovn/ovn-nbd
ovn_ovn_nbd_SOURCES = ovn/ovn-nbd.c
ovn_ovn_nbd_LDADD = ovn/libovn.la ovsdb/libovsdb.la lib/libopenvswitch.la
include ovn/controller/automake.mk include ovn/controller/automake.mk
include ovn/lib/automake.mk include ovn/lib/automake.mk
include ovn/northd/automake.mk

1
ovn/northd/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/ovn-northd

4
ovn/northd/automake.mk Normal file
View File

@ -0,0 +1,4 @@
# ovn-northd
bin_PROGRAMS += ovn/northd/ovn-northd
ovn_northd_ovn_northd_SOURCES = ovn/northd/ovn-northd.c
ovn_northd_ovn_northd_LDADD = ovn/libovn.la ovsdb/libovsdb.la lib/libopenvswitch.la

View File

@ -196,7 +196,7 @@ set_bindings(struct nbd_context *ctx)
static void static void
ovnnb_db_changed(struct nbd_context *ctx) ovnnb_db_changed(struct nbd_context *ctx)
{ {
VLOG_DBG("ovn-nbd: ovn-nb db contents have changed.\n"); VLOG_DBG("ovn-northd: ovn-nb db contents have changed.\n");
set_bindings(ctx); set_bindings(ctx);
} }
@ -369,7 +369,7 @@ main(int argc, char *argv[])
ctx.ovnnb_idl = ovnnb_idl = ovsdb_idl_create(ovnnb_db, ctx.ovnnb_idl = ovnnb_idl = ovsdb_idl_create(ovnnb_db,
&nbrec_idl_class, true, true); &nbrec_idl_class, true, true);
/* There is only a small subset of changes to the ovn-sb db that ovn-nbd /* There is only a small subset of changes to the ovn-sb db that ovn-northd
* has to care about, so we'll enable monitoring those directly. */ * has to care about, so we'll enable monitoring those directly. */
ctx.ovnsb_idl = ovnsb_idl = ovsdb_idl_create(ovnsb_db, ctx.ovnsb_idl = ovnsb_idl = ovsdb_idl_create(ovnsb_db,
&sbrec_idl_class, false, true); &sbrec_idl_class, false, true);
@ -386,7 +386,7 @@ main(int argc, char *argv[])
* db must be recalculated. * db must be recalculated.
* *
* If the contents of the ovn-sb db change, it means the 'up' state of * If the contents of the ovn-sb db change, it means the 'up' state of
* a port may have changed, as that's the only type of change ovn-nbd is * a port may have changed, as that's the only type of change ovn-northd is
* watching for. * watching for.
*/ */
@ -425,10 +425,10 @@ main(int argc, char *argv[])
/* /*
* If there are any pending changes, we delay recalculating the * If there are any pending changes, we delay recalculating the
* necessary updates until after an existing transaction finishes. * necessary updates until after an existing transaction finishes.
* This avoids the possibility of rapid updates causing ovn-nbd to never * This avoids the possibility of rapid updates causing ovn-northd to
* be able to successfully make the corresponding updates to the other * never be able to successfully make the corresponding updates to the
* db. Instead, pending changes are batched up until the next time we * other db. Instead, pending changes are batched up until the next
* get a chance to calculate the new state and apply it. * time we get a chance to calculate the new state and apply it.
*/ */
if (ovnnb_changes_pending && !ctx.ovnsb_txn) { if (ovnnb_changes_pending && !ctx.ovnsb_txn) {
@ -438,7 +438,7 @@ main(int argc, char *argv[])
*/ */
ctx.ovnsb_txn = ovsdb_idl_txn_create(ctx.ovnsb_idl); ctx.ovnsb_txn = ovsdb_idl_txn_create(ctx.ovnsb_idl);
ovsdb_idl_txn_add_comment(ctx.ovnsb_txn, ovsdb_idl_txn_add_comment(ctx.ovnsb_txn,
"ovn-nbd: northbound db changed"); "ovn-northd: northbound db changed");
ovnnb_db_changed(&ctx); ovnnb_db_changed(&ctx);
ovnnb_changes_pending = false; ovnnb_changes_pending = false;
} }
@ -450,7 +450,7 @@ main(int argc, char *argv[])
*/ */
ctx.ovnnb_txn = ovsdb_idl_txn_create(ctx.ovnnb_idl); ctx.ovnnb_txn = ovsdb_idl_txn_create(ctx.ovnnb_idl);
ovsdb_idl_txn_add_comment(ctx.ovnnb_txn, ovsdb_idl_txn_add_comment(ctx.ovnnb_txn,
"ovn-nbd: southbound db changed"); "ovn-northd: southbound db changed");
ovnsb_db_changed(&ctx); ovnsb_db_changed(&ctx);
ovn_changes_pending = false; ovn_changes_pending = false;
} }

View File

@ -103,13 +103,13 @@
<p> <p>
The OVN Northbound Database has only two clients: the OVN/CMS Plugin The OVN Northbound Database has only two clients: the OVN/CMS Plugin
above it and <code>ovn-nbd</code> below it. above it and <code>ovn-northd</code> below it.
</p> </p>
</li> </li>
<li> <li>
<code>ovn-nbd</code>(8) connects to the OVN Northbound Database above it <code>ovn-northd</code>(8) connects to the OVN Northbound Database
and the OVN Southbound Database below it. It translates the above it and the OVN Southbound Database below it. It translates the
logical network configuration in terms of conventional network logical network configuration in terms of conventional network
concepts, taken from the OVN Northbound Database, into logical concepts, taken from the OVN Northbound Database, into logical
datapath flows in the OVN Southbound Database below it. datapath flows in the OVN Southbound Database below it.
@ -118,7 +118,7 @@
<li> <li>
<p> <p>
The <dfn>OVN Southbound Database</dfn> is the center of the system. The <dfn>OVN Southbound Database</dfn> is the center of the system.
Its clients are <code>ovn-nbd</code>(8) above it and Its clients are <code>ovn-northd</code>(8) above it and
<code>ovn-controller</code>(8) on every transport node below it. <code>ovn-controller</code>(8) on every transport node below it.
</p> </p>
@ -129,7 +129,7 @@
logical network in terms of ``logical datapath flows,'' and logical network in terms of ``logical datapath flows,'' and
<dfn>Binding</dfn> tables that link logical network components' <dfn>Binding</dfn> tables that link logical network components'
locations to the physical network. The hypervisors populate the PN and locations to the physical network. The hypervisors populate the PN and
Binding tables, whereas <code>ovn-nbd</code>(8) populates the LN Binding tables, whereas <code>ovn-northd</code>(8) populates the LN
tables. tables.
</p> </p>
@ -177,7 +177,7 @@
| OVN Northbound DB | | OVN Northbound DB |
| | | | | |
| | | | | |
| ovn-nbd | | ovn-northd |
| | | | | |
+-----------|-----------+ +-----------|-----------+
| |
@ -292,7 +292,7 @@
</li> </li>
<li> <li>
<code>ovn-nbd</code> receives the OVN Northbound database update. <code>ovn-northd</code> receives the OVN Northbound database update.
In turn, it makes the corresponding updates to the OVN Southbound In turn, it makes the corresponding updates to the OVN Southbound
database, by adding rows to the OVN Southbound database database, by adding rows to the OVN Southbound database
<code>Pipeline</code> table to reflect the new port, e.g. add a <code>Pipeline</code> table to reflect the new port, e.g. add a
@ -306,8 +306,8 @@
<li> <li>
On every hypervisor, <code>ovn-controller</code> receives the On every hypervisor, <code>ovn-controller</code> receives the
<code>Pipeline</code> table updates that <code>ovn-nbd</code> made in the <code>Pipeline</code> table updates that <code>ovn-northd</code> made
previous step. As long as the VM that owns the VIF is powered off, in the previous step. As long as the VM that owns the VIF is powered off,
<code>ovn-controller</code> cannot do much; it cannot, for example, <code>ovn-controller</code> cannot do much; it cannot, for example,
arrange to send packets to or receive packets from the VIF, because the arrange to send packets to or receive packets from the VIF, because the
VIF does not actually exist anywhere. VIF does not actually exist anywhere.
@ -337,12 +337,13 @@
<li> <li>
Some CMS systems, including OpenStack, fully start a VM only when its Some CMS systems, including OpenStack, fully start a VM only when its
networking is ready. To support this, <code>ovn-nbd</code> notices the networking is ready. To support this, <code>ovn-northd</code> notices
<code>chassis</code> column updated for the row in <code>Bindings</code> the <code>chassis</code> column updated for the row in
table and pushes this upward by updating the <ref column="up" <code>Bindings</code> table and pushes this upward by updating the
table="Logical_Port" db="OVN_NB"/> column in the OVN Northbound <ref column="up" table="Logical_Port" db="OVN_NB"/> column in the OVN
database's <ref table="Logical_Port" db="OVN_NB"/> table to indicate Northbound database's <ref table="Logical_Port" db="OVN_NB"/> table to
that the VIF is now up. The CMS, if it uses this feature, can then indicate that the VIF is now up. The CMS, if it uses this feature, can
then
react by allowing the VM's execution to proceed. react by allowing the VM's execution to proceed.
</li> </li>
@ -389,7 +390,7 @@
</li> </li>
<li> <li>
<code>ovn-nbd</code> receives the OVN Northbound update and in turn <code>ovn-northd</code> receives the OVN Northbound update and in turn
updates the OVN Southbound database accordingly, by removing or updates the OVN Southbound database accordingly, by removing or
updating the rows from the OVN Southbound database updating the rows from the OVN Southbound database
<code>Pipeline</code> table and <code>Bindings</code> table that <code>Pipeline</code> table and <code>Bindings</code> table that
@ -398,9 +399,9 @@
<li> <li>
On every hypervisor, <code>ovn-controller</code> receives the On every hypervisor, <code>ovn-controller</code> receives the
<code>Pipeline</code> table updates that <code>ovn-nbd</code> made in the <code>Pipeline</code> table updates that <code>ovn-northd</code> made
previous step. <code>ovn-controller</code> updates OpenFlow tables to in the previous step. <code>ovn-controller</code> updates OpenFlow tables
reflect the update, although there may not be much to do, since the VIF to reflect the update, although there may not be much to do, since the VIF
had already become unreachable when it was removed from the had already become unreachable when it was removed from the
<code>Bindings</code> table in a previous step. <code>Bindings</code> table in a previous step.
</li> </li>
@ -486,8 +487,8 @@
</li> </li>
<li> <li>
<code>ovn-nbd</code> receives the OVN Northbound database update. In <code>ovn-northd</code> receives the OVN Northbound database update.
turn, it makes the corresponding updates to the OVN Southbound In turn, it makes the corresponding updates to the OVN Southbound
database, by adding rows to the OVN Southbound database's database, by adding rows to the OVN Southbound database's
<code>Pipeline</code> table to reflect the new port and also by <code>Pipeline</code> table to reflect the new port and also by
creating a new row in the <code>Bindings</code> table and creating a new row in the <code>Bindings</code> table and
@ -498,10 +499,11 @@
<li> <li>
On every hypervisor, <code>ovn-controller</code> subscribes to the On every hypervisor, <code>ovn-controller</code> subscribes to the
changes in the <code>Bindings</code> table. When a new row is created changes in the <code>Bindings</code> table. When a new row is created
by <code>ovn-nbd</code> that includes a value in <code>parent_port</code> by <code>ovn-northd</code> that includes a value in
column of <code>Bindings</code> table, the <code>ovn-controller</code> <code>parent_port</code> column of <code>Bindings</code> table, the
in the hypervisor whose OVN integration bridge has that same value in <code>ovn-controller</code> in the hypervisor whose OVN integration bridge
<var>vif-id</var> in <code>external-ids</code>:<code>iface-id</code> has that same value in <var>vif-id</var> in
<code>external-ids</code>:<code>iface-id</code>
updates the local hypervisor's OpenFlow tables so that packets to and updates the local hypervisor's OpenFlow tables so that packets to and
from the VIF with the particular VLAN <code>tag</code> are properly from the VIF with the particular VLAN <code>tag</code> are properly
handled. Afterward it updates the <code>chassis</code> column of handled. Afterward it updates the <code>chassis</code> column of
@ -510,7 +512,7 @@
<li> <li>
One can only start the application inside the container after the One can only start the application inside the container after the
underlying network is ready. To support this, <code>ovn-nbd</code> underlying network is ready. To support this, <code>ovn-northd</code>
notices the updated <code>chassis</code> column in <code>Bindings</code> notices the updated <code>chassis</code> column in <code>Bindings</code>
table and updates the <ref column="up" table="Logical_Port" table and updates the <ref column="up" table="Logical_Port"
db="OVN_NB"/> column in the OVN Northbound database's db="OVN_NB"/> column in the OVN Northbound database's
@ -526,7 +528,7 @@
</li> </li>
<li> <li>
<code>ovn-nbd</code> receives the OVN Northbound update and in turn <code>ovn-northd</code> receives the OVN Northbound update and in turn
updates the OVN Southbound database accordingly, by removing or updates the OVN Southbound database accordingly, by removing or
updating the rows from the OVN Southbound database updating the rows from the OVN Southbound database
<code>Pipeline</code> table that were related to the now-destroyed <code>Pipeline</code> table that were related to the now-destroyed
@ -536,9 +538,9 @@
<li> <li>
On every hypervisor, <code>ovn-controller</code> receives the On every hypervisor, <code>ovn-controller</code> receives the
<code>Pipeline</code> table updates that <code>ovn-nbd</code> made in the <code>Pipeline</code> table updates that <code>ovn-northd</code> made
previous step. <code>ovn-controller</code> updates OpenFlow tables to in the previous step. <code>ovn-controller</code> updates OpenFlow tables
reflect the update. to reflect the update.
</li> </li>
</ol> </ol>
</manpage> </manpage>

View File

@ -3,8 +3,8 @@
<p> <p>
This database is the interface between OVN and the cloud management system This database is the interface between OVN and the cloud management system
(CMS), such as OpenStack, running above it. The CMS produces almost all of (CMS), such as OpenStack, running above it. The CMS produces almost all of
the contents of the database. The <code>ovn-nbd</code> program monitors the contents of the database. The <code>ovn-northd</code> program
the database contents, transforms it, and stores it into the <ref monitors the database contents, transforms it, and stores it into the <ref
db="OVN_Southbound"/> database. db="OVN_Southbound"/> database.
</p> </p>
@ -116,10 +116,10 @@
</column> </column>
<column name="up"> <column name="up">
This column is populated by <code>ovn-nbd</code>, rather than by the CMS This column is populated by <code>ovn-northd</code>, rather than by
plugin as is most of this database. When a logical port is bound the CMS plugin as is most of this database. When a logical port is bound
to a physical location in the OVN Southbound database <ref to a physical location in the OVN Southbound database <ref
db="OVN_Southbound" table="Bindings"/> table, <code>ovn-nbd</code> db="OVN_Southbound" table="Bindings"/> table, <code>ovn-northd</code>
sets this column to <code>true</code>; otherwise, or if the port sets this column to <code>true</code>; otherwise, or if the port
becomes unbound later, it sets it to <code>false</code>. This becomes unbound later, it sets it to <code>false</code>. This
allows the CMS to wait for a VM's (or container's) networking to allows the CMS to wait for a VM's (or container's) networking to

View File

@ -11,7 +11,7 @@
architecture. It is the one component that speaks both southbound architecture. It is the one component that speaks both southbound
directly to all the hypervisors and gateways, via directly to all the hypervisors and gateways, via
<code>ovn-controller</code>, and northbound to the Cloud Management <code>ovn-controller</code>, and northbound to the Cloud Management
System, via <code>ovn-nbd</code>: System, via <code>ovn-northd</code>:
</p> </p>
<h2>Database Structure</h2> <h2>Database Structure</h2>
@ -64,7 +64,7 @@
That CMS determines the entire OVN logical configuration and therefore the That CMS determines the entire OVN logical configuration and therefore the
LN's content at any given time is a deterministic function of the CMS's LN's content at any given time is a deterministic function of the CMS's
configuration, although that happens indirectly via the OVN Northbound DB configuration, although that happens indirectly via the OVN Northbound DB
and <code>ovn-nbd</code>. and <code>ovn-northd</code>.
</p> </p>
<p> <p>
@ -629,8 +629,8 @@
<p> <p>
For every <code>Logical_Port</code> record in <code>OVN_Northbound</code> For every <code>Logical_Port</code> record in <code>OVN_Northbound</code>
database, <code>ovn-nbd</code> creates a record in this table. database, <code>ovn-northd</code> creates a record in this table.
<code>ovn-nbd</code> populates and maintains every column except <code>ovn-northd</code> populates and maintains every column except
the <code>chassis</code> column, which it leaves empty in new records. the <code>chassis</code> column, which it leaves empty in new records.
</p> </p>

View File

@ -44,7 +44,7 @@ rungdb() {
gdb_vswitchd=false gdb_vswitchd=false
gdb_ovsdb=false gdb_ovsdb=false
gdb_ovn_nbd=false gdb_ovn_northd=false
gdb_ovn_controller=false gdb_ovn_controller=false
builddir= builddir=
srcdir= srcdir=
@ -94,7 +94,7 @@ These options force ovs-sandbox to use an installed Open vSwitch:
-i, --installed use installed Open vSwitch -i, --installed use installed Open vSwitch
-g, --gdb-vswitchd run ovs-vswitchd under gdb -g, --gdb-vswitchd run ovs-vswitchd under gdb
-d, --gdb-ovsdb run ovsdb-server under gdb -d, --gdb-ovsdb run ovsdb-server under gdb
--gdb-ovn-nbd run ovn-nbd under gdb --gdb-ovn-northd run ovn-northd under gdb
--gdb-ovn-controller run ovn-controller under gdb --gdb-ovn-controller run ovn-controller under gdb
-S, --schema=FILE use FILE as vswitch.ovsschema -S, --schema=FILE use FILE as vswitch.ovsschema
-o, --ovn enable OVN -o, --ovn enable OVN
@ -138,8 +138,8 @@ EOF
-d|--gdb-ovsdb) -d|--gdb-ovsdb)
gdb_ovsdb=true gdb_ovsdb=true
;; ;;
--gdb-ovn-nbd) --gdb-ovn-northd)
gdb_ovn_nbd=true gdb_ovn_northd=true
;; ;;
--gdb-ovn-controller) --gdb-ovn-controller)
gdb_ovn_controller=true gdb_ovn_controller=true
@ -217,7 +217,7 @@ if $built; then
fi fi
PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH PATH=$builddir/ovsdb:$builddir/vswitchd:$builddir/utilities:$PATH
if $ovn; then if $ovn; then
PATH=$builddir/ovn:$builddir/ovn/controller:$PATH PATH=$builddir/ovn:$builddir/ovn/controller:$builddir/ovn/northd:$PATH
fi fi
export PATH export PATH
else else
@ -293,7 +293,7 @@ if $ovn; then
ovs-vsctl set open . external-ids:ovn-encap-ip=127.0.0.1 ovs-vsctl set open . external-ids:ovn-encap-ip=127.0.0.1
ovs-vsctl add-br br-int ovs-vsctl add-br br-int
rungdb $gdb_ovn_nbd ovn-nbd --detach --no-chdir --pidfile -vconsole:off --log-file rungdb $gdb_ovn_northd ovn-northd --detach --no-chdir --pidfile -vconsole:off --log-file
rungdb $gdb_ovn_controller ovn-controller --detach --no-chdir --pidfile -vconsole:off --log-file rungdb $gdb_ovn_controller ovn-controller --detach --no-chdir --pidfile -vconsole:off --log-file
fi fi