1) Ok, I will read up on OFPPS_LIVE, clean up my code and send in an appropriate Patch for BFD support
2) This was mainly a point of discussion that I am curious towards. I am concerned that checking all BFD, OAM, CFM, etc., sequentially may harm the throughput of the function odp_port_is_alive(). Whereas a single flag status up/down (OFPPS_LIVE) may cause synchronization problems if one configures multiple failure mechanisms in parallel. Instead, we might introduce a single byte that equals 0x00 if none of the mechanisms detect downtime. Then we reserve a single bit per mechanism (f.e. 0x01 for administrative port status, 0x02 for OAM/CFM, 0x04 for BFD). Meaning that a non 0x00 value means the port is not live resulting in a single if-statement instead of multiple nested if-statements with double checks on whether given mechanisms are actually configured, etc., and different mechanisms may report up- and downtime without interference by setting there respective bit to 1. Though I realize this requires quite some work. Best, Niels ________________________________________ From: Ben Pfaff [b...@nicira.com] Sent: Friday, August 29, 2014 11:02 PM To: Niels van Adrichem Cc: dev@openvswitch.org Subject: Re: [ovs-dev] BFD integration into FastFailover Group Table On Fri, Aug 29, 2014 at 01:15:53PM +0000, Niels van Adrichem wrote: > For some experiments I did around April/May for a paper I wrote I > changed some sourcecode to ofproto-dpif-xlate.c to have the FastFailover > Group Table look at the BFD status directly. > We did this because we found that although the BFD status flags changed > in time, interface status remained up (which might or might not already > have been solved by now) and hence the FastFailover rule would not > select the backup forwarding rule. Furthermore, our experiments showed > that bringing the interface status down manually could take slightly > over 50 ms before the FastFailover would kick in [1]. As we wanted "even > faster" recovery, we decided to have the function odp_port_is_alive() > also look at the BFD status itself [2]. Doing this also decreased the > number of packets when an interface became live again, as the Fast > Failover rule would not revert sending to the primary rule before BFD > confirmed a live link. > > If you are interested I can rewrite the patch to confirm to the > appropriate coding lay-out and make sure it applies to the current state > of the file. It sounds like a good idea. I am not sure why that function doesn't already check BFD and CFM state. It seems that it should. It also seems that OVS seems to be missing an implementation of OFPPS_LIVE in OpenFlow port state. We should fix that too. > Perhaps instead of checking the BFD status, I could include a > *synchronized* per-interface flag that f.e. equals 0x00 when all > configured link state detection mechanisms detect live links, 0x01 when > BFD detects an error, 0x02 when Ethernet OAM detects an error, 0x03 when > both do, etc. In that case you can check status from multiple detection > mechanisms without the need to iterate through all of them, hence > improving the throughput of OVS. How do you think about that? Code cleanups are always welcome, although I don't entirely understand this proposal. Thanks, Ben. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev