According to the 802.1ag specification, when a CCM is received
which advertises a misconfigured transmission interval, a fault
should be triggered. This patch goes against the spec by simply
warning when this happens. This is done for several reasons.
- Faults can cause controllers to make potentially expensive
changes in the network topology.
- Faults can be maliciously triggered by crafting invalid CCMs.
- Reducing the number of places in the code where rmp->fault and
cfm->fault are changed makes the code easier to debug and
reason about.
---
lib/cfm.c | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/lib/cfm.c b/lib/cfm.c
index a504714..3a053ef 100644
--- a/lib/cfm.c
+++ b/lib/cfm.c
@@ -391,8 +391,14 @@ cfm_process_heartbeat(struct cfm *cfm, const struct ofpbuf
*p)
if (rmp) {
rmp->recv_time = time_msec();
- rmp->fault = ccm_interval != cfmi->ccm_interval;
- cfm->fault = rmp->fault || cfm->fault;
+
+ if (ccm_interval != cfmi->ccm_interval) {
+ /* According to the spec, this should trigger a fault. For
+ * simplicity we just warn. */
+ VLOG_WARN_RL(&rl, "received a CCM with an invalid interval"
+ " (%"PRIu8") from RMP %"PRIu16, ccm_interval,
+ rmp->mpid);
+ }
} else {
cfmi->x_recv_time = time_msec();
cfm->fault = true;
--
1.7.4.4
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev