[ovs-dev] Continue taking her until the night will be over!
Important changes for your love life. style2 { text-align: center; color: #D90003; font-family: Cambria, 'Hoefler Text', 'Liberation Serif', Times, 'Times New Roman', serif; font-size: 20px; font-weight: bold; } style4 {border: 1px solid #707070; } style5 {text-align: center; color: #D90003; font-family: Cambria, 'Hoefler Text', 'Liberation Serif', Times, 'Times New Roman', serif; font-size: 18px; font-weight: bold; } h1{color:#606060 !important; display:block; font-family:Helvetica; font-size:20px; font-style:normal; font-weight:bold; line-height:180%; letter-spacing:0px; margin:0; text-align:center; } Do you know how to maintain normal erection? Do you know what makes men of the world sweat from horror? The answer is erectile dysfunction. - Free pills only for You! - Free shipping Only this week! Special discount - SAVE 95% We will make you happier! Shipping is fast and youll be rock hard in no time unsubscribe from this list ___ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev
[ovs-dev] peer ca cert test failure on Windows
Hi Guru, I'm seeing the following test failure in the Windows builds on the new test. Do you have a lead on the problem? Thanks, Ben. # -*- compilation -*- 1591. ovs-vsctl.at:1313: testing peer ca cert ... /d/build/ob/bora-3008270/ovs/build/ovs/utilities/ovs-pki.in: log directory /d/build/ob/bora-3008270/ovs/build/ovs/tests/testsuite.dir/1591/d:/build/ob/bora-3008270/ovs/build/ovs/tests/testsuite.dir/1591 does not exist and cannot be created ./ovs-vsctl.at:1324: ovsdb-tool create conf.db $abs_top_srcdir/vswitchd/vswitch.ovsschema ./ovs-vsctl.at:1325: ovsdb-server --detach --no-chdir --pidfile="`pwd`"/pid --private-key=$PKIDIR/ovsdbserver-privkey.pem --certificate=$PKIDIR/ovsdbserver-cert.pem --ca-cert=$PKIDIR/pki/switchca/cacert.pem --peer-ca-cert=$PKIDIR/ovsdbserver-cert.pem --remote=pssl:0:127.0.0.1 --unixctl="`pwd`"/unixctl --log-file="`pwd`"/ovsdb-server.log conf.db stderr: stdout: cat: cleanup: No such file or directory ./ovs-vsctl.at:1330: ovs-vsctl -t 5 --db=ssl:127.0.0.1:$SSL_PORT --private-key=$PKIDIR/vsctl-privkey.pem --certificate=$PKIDIR/vsctl-cert.pem --bootstrap-ca-cert=$PKIDIR/cacert.pem show stderr: 2015-08-23T07:48:54Z|1|stream_ssl|ERR|SSL_use_PrivateKey_file: error:02001002:system library:fopen:No such file or directory 2015-08-23T07:48:54Z|2|stream_ssl|ERR|SSL_use_certificate_file: error:02001002:system library:fopen:No such file or directory 2015-08-23T07:48:54Z|3|stream_ssl|ERR|Private key must be configured to use SSL 2015-08-23T07:48:54Z|4|stream_ssl|ERR|Certificate must be configured to use SSL ovs-vsctl: ssl:127.0.0.1:50363: database connection failed (Unknown error) stdout: ./ovs-vsctl.at:1333: ovs_wait_cond () { test -e $PKIDIR/cacert.pem } ovs_wait stderr: stdout: ./ovs-vsctl.at:1333: exit code was 1, expected 0 1591. ovs-vsctl.at:1313: 1591. peer ca cert (ovs-vsctl.at:1313): FAILED (ovs-vsctl.at:1333) ___ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev
[ovs-dev] [PATCH V8 1/3] ovn-controller-vtep: Add vtep module.
This commit adds the vtep module to ovn-controller-vtep. The module will scan through the Port_Binding table in OVN-SB database, and update the vtep logcial switches tunnel keys. Signed-off-by: Alex Wang --- V7->V8: - Fix bug pointed out by Russell. V6->V7: - change the assertion to VLOG_ERR in vtep_lswitch_run(). - refine the vtep_lswitch_run() as suggested by Russell. - refine vtep_lswitch_cleanup() as suggested by Russell. V5->V6: - rebase. V5: new patch. --- ovn/controller-vtep/automake.mk |4 +- ovn/controller-vtep/binding.c |3 +- ovn/controller-vtep/gateway.c |3 +- ovn/controller-vtep/ovn-controller-vtep.c |3 + ovn/controller-vtep/vtep.c| 168 + ovn/controller-vtep/vtep.h| 27 + tests/ovn-controller-vtep.at | 52 + 7 files changed, 257 insertions(+), 3 deletions(-) create mode 100644 ovn/controller-vtep/vtep.c create mode 100644 ovn/controller-vtep/vtep.h diff --git a/ovn/controller-vtep/automake.mk b/ovn/controller-vtep/automake.mk index 33f063f..cacfae6 100644 --- a/ovn/controller-vtep/automake.mk +++ b/ovn/controller-vtep/automake.mk @@ -5,7 +5,9 @@ ovn_controller_vtep_ovn_controller_vtep_SOURCES = \ ovn/controller-vtep/gateway.c \ ovn/controller-vtep/gateway.h \ ovn/controller-vtep/ovn-controller-vtep.c \ - ovn/controller-vtep/ovn-controller-vtep.h + ovn/controller-vtep/ovn-controller-vtep.h \ + ovn/controller-vtep/vtep.c \ + ovn/controller-vtep/vtep.h ovn_controller_vtep_ovn_controller_vtep_LDADD = ovn/lib/libovn.la lib/libopenvswitch.la vtep/libvtep.la man_MANS += ovn/controller-vtep/ovn-controller-vtep.8 EXTRA_DIST += ovn/controller-vtep/ovn-controller-vtep.8.xml diff --git a/ovn/controller-vtep/binding.c b/ovn/controller-vtep/binding.c index 652852d..d65f43c 100644 --- a/ovn/controller-vtep/binding.c +++ b/ovn/controller-vtep/binding.c @@ -226,7 +226,8 @@ binding_run(struct controller_vtep_ctx *ctx) } /* Removes all port binding association with vtep gateway chassis. - * Returns true when all done. */ + * Returns true when done (i.e. there is no change made to 'ovnsb_idl'), + * otherwise returns false. */ bool binding_cleanup(struct controller_vtep_ctx *ctx) { diff --git a/ovn/controller-vtep/gateway.c b/ovn/controller-vtep/gateway.c index 025aff8..963d419 100644 --- a/ovn/controller-vtep/gateway.c +++ b/ovn/controller-vtep/gateway.c @@ -189,7 +189,8 @@ gateway_run(struct controller_vtep_ctx *ctx) } /* Destroys the chassis table entries for vtep physical switches. - * Returns true when all done. */ + * Returns true when done (i.e. there is no change made to 'ovnsb_idl'), + * otherwise returns false. */ bool gateway_cleanup(struct controller_vtep_ctx *ctx) { diff --git a/ovn/controller-vtep/ovn-controller-vtep.c b/ovn/controller-vtep/ovn-controller-vtep.c index b54b29d..9908f8d 100644 --- a/ovn/controller-vtep/ovn-controller-vtep.c +++ b/ovn/controller-vtep/ovn-controller-vtep.c @@ -39,6 +39,7 @@ #include "binding.h" #include "gateway.h" +#include "vtep.h" #include "ovn-controller-vtep.h" static unixctl_cb_func ovn_controller_vtep_exit; @@ -99,6 +100,7 @@ main(int argc, char *argv[]) gateway_run(&ctx); binding_run(&ctx); +vtep_run(&ctx); unixctl_server_run(unixctl); unixctl_server_wait(unixctl); @@ -127,6 +129,7 @@ main(int argc, char *argv[]) * We're done if all of them return true. */ done = binding_cleanup(&ctx); done = gateway_cleanup(&ctx) && done; +done = vtep_cleanup(&ctx) && done; if (done) { poll_immediate_wake(); } diff --git a/ovn/controller-vtep/vtep.c b/ovn/controller-vtep/vtep.c new file mode 100644 index 000..c7b43c0 --- /dev/null +++ b/ovn/controller-vtep/vtep.c @@ -0,0 +1,168 @@ +/* Copyright (c) 2015 Nicira, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include "vtep.h" + +#include "lib/hash.h" +#include "lib/hmap.h" +#include "lib/smap.h" +#include "lib/sset.h" +#include "lib/util.h" +#include "ovn-controller-vtep.h" +#include "openvswitch/vlog.h" +#include "ovn/lib/ovn-sb-idl.h" +#include "vtep/vtep-idl.h" + +VLOG_DEFINE_THIS_MODULE(vtep); + +/* + * Scans through the Binding table in ovnsb and updates the vtep logical + * switch tunnel keys. + * + */ + +/* Updates the vtep Logical_Switch tab
[ovs-dev] [PATCH V8 2/3] ovn-controller-vtep: Extend vtep module to install Ucast_Macs_Remote.
This commit extends the vtep module to support creating the 'Ucast_Macs_Remote' table entries in the vtep database for MAC addresses on the ovn logical ports. Signed-off-by: Alex Wang --- V7->V8: - rebase. V6->V7: - rebase. - adopt suggestions from Russell. V5->V6: - rebase. V4->V5: - rebase on top of master. - rewrite the feature since a lot have changed. V3->V4: - add logic to remove Ucast_Macs_Remote for non-existent MACs. V2->V3: - rebase to master. PATCH->V2: - split into separate commit. - few optimizations. --- ovn/controller-vtep/vtep.c | 309 +- tests/ovn-controller-vtep.at | 136 +++ 2 files changed, 408 insertions(+), 37 deletions(-) diff --git a/ovn/controller-vtep/vtep.c b/ovn/controller-vtep/vtep.c index c7b43c0..a3514de 100644 --- a/ovn/controller-vtep/vtep.c +++ b/ovn/controller-vtep/vtep.c @@ -19,6 +19,7 @@ #include "lib/hash.h" #include "lib/hmap.h" +#include "lib/shash.h" #include "lib/smap.h" #include "lib/sset.h" #include "lib/util.h" @@ -30,49 +31,78 @@ VLOG_DEFINE_THIS_MODULE(vtep); /* - * Scans through the Binding table in ovnsb and updates the vtep logical - * switch tunnel keys. + * Scans through the Binding table in ovnsb, and updates the vtep logical + * switch tunnel keys and the 'Ucast_Macs_Remote' table in the VTEP + * database. * */ +/* Searches the 'chassis_rec->encaps' for the first vtep tunnel + * configuration, returns the 'ip'. */ +static const char * +get_chassis_vtep_ip(const struct sbrec_chassis *chassis_rec) +{ +if (chassis_rec) { +size_t i; + +for (i = 0; i < chassis_rec->n_encaps; i++) { +if (!strcmp(chassis_rec->encaps[i]->type, "vxlan")) { +return chassis_rec->encaps[i]->ip; +} +} +} + +return NULL; +} + +/* Creates a new 'Ucast_Macs_Remote'. */ +static struct vteprec_ucast_macs_remote * +create_umr(struct ovsdb_idl_txn *vtep_idl_txn, const char *mac, + const struct vteprec_logical_switch *vtep_ls) +{ +struct vteprec_ucast_macs_remote *new_umr; + +new_umr = vteprec_ucast_macs_remote_insert(vtep_idl_txn); +vteprec_ucast_macs_remote_set_MAC(new_umr, mac); +vteprec_ucast_macs_remote_set_logical_switch(new_umr, vtep_ls); + +return new_umr; +} + +/* Creates a new 'Physical_Locator'. */ +static struct vteprec_physical_locator * +create_pl(struct ovsdb_idl_txn *vtep_idl_txn, const char *chassis_ip) +{ +struct vteprec_physical_locator *new_pl; + +new_pl = vteprec_physical_locator_insert(vtep_idl_txn); +vteprec_physical_locator_set_dst_ip(new_pl, chassis_ip); +vteprec_physical_locator_set_encapsulation_type(new_pl, VTEP_ENCAP_TYPE); + +return new_pl; +} + + /* Updates the vtep Logical_Switch table entries' tunnel keys based * on the port bindings. */ static void -vtep_lswitch_run(struct controller_vtep_ctx *ctx) +vtep_lswitch_run(struct shash *vtep_pbs, struct sset *vtep_pswitches, + struct shash *vtep_lswitches) { -struct shash vtep_lswitches = SHASH_INITIALIZER(&vtep_lswitches); -struct sset vtep_pswitches = SSET_INITIALIZER(&vtep_pswitches); struct sset used_ls = SSET_INITIALIZER(&used_ls); -const struct vteprec_physical_switch *pswitch; -const struct sbrec_port_binding *port_binding_rec; -const struct vteprec_logical_switch *vtep_ls; - -/* Registers all vtep physical switch names in the vtep database. */ -VTEPREC_PHYSICAL_SWITCH_FOR_EACH (pswitch, ctx->vtep_idl) { -sset_add(&vtep_pswitches, pswitch->name); -} - -/* Stores all logical switches to 'vtep_lswitches' with name as key. */ -VTEPREC_LOGICAL_SWITCH_FOR_EACH (vtep_ls, ctx->vtep_idl) { -shash_add(&vtep_lswitches, vtep_ls->name, vtep_ls); -} +struct shash_node *node; -ovsdb_idl_txn_add_comment(ctx->vtep_idl_txn, - "ovn-controller-vtep: update logical switch " - "tunnel keys"); /* Collects the logical switch bindings from port binding entries. * Since the binding module has already guaranteed that each vtep * logical switch is bound only to one ovn-sb logical datapath, * we can just iterate and assign tunnel key to vtep logical switch. */ -SBREC_PORT_BINDING_FOR_EACH(port_binding_rec, ctx->ovnsb_idl) { -if (strcmp(port_binding_rec->type, "vtep") -|| !port_binding_rec->chassis) { -continue; -} +SHASH_FOR_EACH (node, vtep_pbs) { +const struct sbrec_port_binding *port_binding_rec = node->data; const char *pswitch_name = smap_get(&port_binding_rec->options, "vtep-physical-switch"); const char *lswitch_name = smap_get(&port_binding_rec->options, "vtep-logical-switch"); +const struct vteprec_logical_switch *vtep_ls; /* If 'port_binding_rec->chassis' exist
[ovs-dev] [PATCH V8 3/3] ovn-controller-vtep: Update related documentation.
This commit conducts the following documentation changes: * add a description in ovn-architecture manual for the life cycle about VTEP gateway. * add TODOs related to ovn-controller-vtep. * refine the ovn-sb, ovn-nb schema manual to require logical 'port' type and 'options' configuration. Signed-off-by: Alex Wang Acked-by: Russell Bryant --- V7->V8: - rebase. V6->V7: - adopt suggestions from Russell. - leave out the documentation of feature that has not been implemented yet. V5->V6: - add description in ovn-architecture. V5: new patch. --- ovn/TODO | 21 +++ ovn/ovn-architecture.7.xml | 87 ovn/ovn-nb.xml | 31 +--- ovn/ovn-sb.xml | 41 + 4 files changed, 167 insertions(+), 13 deletions(-) diff --git a/ovn/TODO b/ovn/TODO index 356b3ba..56cac87 100644 --- a/ovn/TODO +++ b/ovn/TODO @@ -80,3 +80,24 @@ So far, both ovn-controller and ovn-controller-vtep only allow chassis to have one tunnel encapsulation entry. We should extend the implementation to support multiple tunnel encapsulations. + +** Update learned MAC addresses from VTEP to OVN + + The VTEP gateway stores all MAC addresses learned from its + physical interfaces in the 'Ucast_Macs_Local' and the + 'Mcast_Macs_Local' tables. ovn-controller-vtep should be + able to update those information back to ovn-sb database, + so that other chassis knows where to send packets destined + to the extended external network instead of broadcasting. + +** Translate ovn-sb Multicast_Group table into VTEP config + + The ovn-controller-vtep daemon should be able to translate + the Multicast_Group table entry in ovn-sb database into + Mcast_Macs_Remote table configuration in VTEP database. + +* Use BFD as tunnel monitor. + + Both ovn-controller and ovn-contorller-vtep should use BFD to + monitor the tunnel liveness. Both ovs-vswitchd schema and + VTEP schema supports BFD. \ No newline at end of file diff --git a/ovn/ovn-architecture.7.xml b/ovn/ovn-architecture.7.xml index c9ac597..ef13b56 100644 --- a/ovn/ovn-architecture.7.xml +++ b/ovn/ovn-architecture.7.xml @@ -806,6 +806,93 @@ + Life Cycle of a VTEP gateway + + +A gateway is a chassis that forwards traffic between the OVN-managed +part of a logical network and a physical VLAN, extending a +tunnel-based logical network into a physical network. + + + +The steps below refer often to details of the OVN and VTEP database +schemas. Please see ovn-sb(5), ovn-nb(5) +and vtep(5), respectively, for the full story on these +databases. + + + + + A VTEP gateway's life cycle begins with the administrator registering + the VTEP gateway as a Physical_Switch table entry in the + VTEP database. The ovn-controller-vtep + connected to this VTEP database, will recognize the new VTEP gateway + and create a new Chassis table entry for it in the + OVN_Southbound database. + + + + The administrator can then create new Logical_Switch + table entry, and bind particular vlan on VTEP gateway's port to + any VTEP logical switch. Once a VTEP logical switch is bound to + a VTEP gateway, the ovn-controller-vtep will detect + it and add its name to the vtep_logical_switches + column of the Chassis table in the + OVN_Southbound database. Note, the tunnel_key + column of VTEP logical switch is not filled at creation. The + ovn-controller-vtep will set the column when the + correponding vtep logical switch is bound to an OVN logical network. + + + + Now, the administrator can use the CMS to add VTEP logical switch + to the OVN logical network. To do that, the CMS must first create a + new Logical_Port table entry in the + OVN_Northbound database. Then, the type column + of this entry must be set to "vtep". Next, the + vtep-logical-switch and vtep-physical-switch keys + in the options column must also be specified, since + multiple VTEP gateways can attach to the same VTEP logical switch. + + + + The newly created logical port in the OVN_Northbound + database and its configuration will be passed down to the + OVN_Southbound database as a new Port_Binding + table entry. The ovn-controller-vtep will recognize the + change and bind the logical port to the corresponding VTEP gateway + chassis. Configuration of binding same VTEP logical switch to + different OVN logical networks is not allowed and warning will be + generated in the log. + + + + Beside binding to the VTEP gateway chassis, the + ovn-controller-vtep will update the tunnel_key + column of the VTEP logical switch to the corresponding + Datapath_Binding table entry's tunnel_key for the + bound OVN logical network. +
[ovs-dev] Returned mail: Data format error
Dear user dev@openvswitch.org, We have found that your email account was used to send a large amount of spam during this week. Probably, your computer was infected by a recent virus and now runs a hidden proxy server. Please follow our instructions in order to keep your computer safe. Virtually yours, The openvswitch.org team. ___ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev
[ovs-dev] Returned mail: Data format error
This Message was undeliverable due to the following reason: Your message was not delivered because the destination computer was not reachable within the allowed queue period. The amount of time a message is queued before it is returned depends on local configura- tion parameters. Most likely there is a network problem that prevented delivery, but it is also possible that the computer is turned off, or does not have a mail system running right now. Your message was not delivered within 7 days: Host 101.129.24.251 is not responding. The following recipients did not receive this message: Please reply to postmas...@openvswitch.org if you feel this message to be in error. ___ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev