aboutsummaryrefslogtreecommitdiff
path: root/vswitchd
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2011-08-19 13:58:56 -0700
committerEthan Jackson <ethan@nicira.com>2011-09-09 14:11:14 -0700
commit144216a3358fc3ddc8a8253dd85978f112cb7bbc (patch)
tree43bb56c5767bb6c1d753db3b606461ed2f60ee94 /vswitchd
parente14749faf150dc909119b5431a2cd9e779623a71 (diff)
cfm: Remove cfm_remote_mpid configuration.
According to the 802.1ag specification, users should be able to configure the CFM module with a list of remote endpoints with which the local endpoint should have connectivity. Commit 93b8df3853 "cfm: Remove Maintenance_Point and Monitor tables." changed the behavior so that only one remote endpoint could be specified. This commit takes it further, by disallowing specification of any remote endpoints. Due to this change, the semantics of the fault flag are slightly different. Before, a fault was triggered if any of the configured remote endpoints were unreachable (or with RDI), or if any unconfigured remote endpoints were reachable. Now a fault is triggered if no remote endpoints are reachable at all, or if reachable endpoints have set their RDI. Bug #7014.
Diffstat (limited to 'vswitchd')
-rw-r--r--vswitchd/bridge.c7
-rw-r--r--vswitchd/vswitch.ovsschema9
-rw-r--r--vswitchd/vswitch.xml35
3 files changed, 27 insertions, 24 deletions
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 9783cc96..e903a808 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -2607,18 +2607,13 @@ iface_configure_cfm(struct iface *iface)
{
const struct ovsrec_interface *cfg = iface->cfg;
struct cfm_settings s;
- uint16_t remote_mpid;
- if (!cfg->n_cfm_mpid || !cfg->n_cfm_remote_mpid) {
+ if (!cfg->n_cfm_mpid) {
ofproto_port_clear_cfm(iface->port->bridge->ofproto, iface->ofp_port);
return;
}
s.mpid = *cfg->cfm_mpid;
- remote_mpid = *cfg->cfm_remote_mpid;
- s.remote_mpids = &remote_mpid;
- s.n_remote_mpids = 1;
-
s.interval = atoi(get_interface_other_config(iface->cfg, "cfm_interval",
"0"));
if (s.interval <= 0) {
diff --git a/vswitchd/vswitch.ovsschema b/vswitchd/vswitch.ovsschema
index ca61a2cd..43ff95d8 100644
--- a/vswitchd/vswitch.ovsschema
+++ b/vswitchd/vswitch.ovsschema
@@ -1,6 +1,6 @@
{"name": "Open_vSwitch",
- "version": "5.2.0",
- "cksum": "434778864 14545",
+ "version": "6.0.0",
+ "cksum": "1100213054 14376",
"tables": {
"Open_vSwitch": {
"columns": {
@@ -171,11 +171,6 @@
"key": {"type": "integer", "minInteger": 1, "maxInteger": 8191},
"min": 0,
"max": 1}},
- "cfm_remote_mpid": {
- "type" : {
- "key": { "type": "integer", "minInteger": 1, "maxInteger": 8191},
- "min": 0,
- "max": 1}},
"cfm_fault": {
"type": {
"key": { "type": "boolean"},
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index dbda4efa..b974a3d0 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -1332,6 +1332,15 @@
configurable transmission interval.
</p>
+ <p>
+ According to the 802.1ag specification, each Maintenance Point should
+ be configured out-of-band with a list of Remote Maintenance Points it
+ should have connectivity to. Open vSwitch differs from the
+ specification in this area. It simply assumes the link is faulted if
+ no Remote Maintenance Points are reachable, and considers it not
+ faulted otherwise.
+ </p>
+
<column name="cfm_mpid">
A Maintenance Point ID (MPID) uniquely identifies each endpoint within
a Maintenance Association. The MPID is used to identify this endpoint
@@ -1340,18 +1349,22 @@
CFM on this <ref table="Interface"/>.
</column>
- <column name="cfm_remote_mpid">
- The MPID of the remote endpoint being monitored. If this
- <ref table="Interface"/> does not have connectivity to an endpoint
- advertising the configured MPID, a fault is signalled. Must be
- configured to enable CFM on this <ref table="Interface"/>
- </column>
-
<column name="cfm_fault">
- Indicates a connectivity fault triggered by an inability to receive
- heartbeats from the remote endpoint. When a fault is triggered on
- <ref table="Interface"/>s participating in bonds, they will be
- disabled.
+ <p>
+ Indicates a connectivity fault triggered by an inability to receive
+ heartbeats from any remote endpoint. When a fault is triggered on
+ <ref table="Interface"/>s participating in bonds, they will be
+ disabled.
+ </p>
+ <p>
+ Faults can be triggered for several reasons. Most importantly they
+ are triggered when no CCMs are received for a period of 3.5 times the
+ transmission interval. Faults are also triggered when any CCMs
+ indicate that a Remote Maintenance Point is not receiving CCMs but
+ able to send them. Finally, a fault is triggered if a CCM is
+ received which indicates unexpected configuration. Notably, this
+ case arises when a CCM is received which advertises the local MPID.
+ </p>
</column>
</group>