summaryrefslogtreecommitdiff
path: root/lib/lacp.h
Commit message (Collapse)AuthorAgeFilesLines
* userspace: Define and use struct eth_addr.Jarno Rajahalme2015-08-281-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Define struct eth_addr and use it instead of a uint8_t array for all ethernet addresses in OVS userspace. The struct is always the right size, and it can be assigned without an explicit memcpy, which makes code more readable. "struct eth_addr" is a good type name for this as many utility functions are already named accordingly. struct eth_addr can be accessed as bytes as well as ovs_be16's, which makes the struct 16-bit aligned. All use seems to be 16-bit aligned, so some algorithms on the ethernet addresses can be made a bit more efficient making use of this fact. As the struct fits into a register (in 64-bit systems) we pass it by value when possible. This patch also changes the few uses of Linux specific ETH_ALEN to OVS's own ETH_ADDR_LEN, and removes the OFP_ETH_ALEN, as it is no longer needed. This work stemmed from a desire to make all struct flow members assignable for unrelated exploration purposes. However, I think this might be a nice code readability improvement by itself. Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
* dp-packet: Remove ofpbuf dependency.Pravin B Shelar2015-03-031-1/+1
| | | | | | | | | | | | | Currently dp-packet make use of ofpbuf for managing packet buffers. That complicates ofpbuf, by making dp-packet independent of ofpbuf both libraries can be optimized for their own use case. This avoids mapping operation between ofpbuf and dp_packet in datapath upcalls. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* sflow: Export LAG, PORTNAME, and OPENFLOWPORT information also.Neil McKee2014-11-111-0/+23
| | | | | | | | | | | | | | | | | | | Export standard sFlow LAG, PORTNAME and OPENFLOWPORT structures with each counter-sample. Add unit-test for sFlow-LAG. Adjust other unit-tests to accommodate these new annotations. The sFlow-LAG structures are important for topology discovery, for troubleshooting LAG instability, and for correctly combining sFlow feeds from multiple sources. The OPENFLOWPORT and PORTNAME structures are important for systems that aim to combine sFlow monitoring with OpenFlow controls, as they provide straightforward mapping (1) between sFlow agent IP and OpenFlow datapath-id, and (2) between interface name,ifIndex and OpenFlow port number. Signed-off-by: Neil McKee <neil.mckee@inmon.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* bond: Use active-backup mode on LACP failure.Ravi Kondamuru2013-11-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit bdebeece5 (lacp: Require successful LACP negotiations when configured.) makes successful LACP negotiation mandatory for the bond to come UP. This patch provides a configuration option to bring up the bond by falling back to active-backup mode on LACP negotiation failure. Several of the physical switches that support LACP block all traffic for ports that are configured to use LACP, until LACP is negotiated with the host. When configuring a LACP bond on a OVS host (eg: XenServer), this means that there will be an interruption of the network connectivity between the time the ports on the physical switch and the bond on the OVS host are configured. The interruption may be relatively long, if different people are responsible for managing the switches and the OVS host. Such network connectivity failure can be avoided if LACP can be configured on the OVS host before configuring the physical switch, and having the OVS host fall back to a bond mode (active-backup) till the physical switch LACP configuration is complete. An option "lacp-fallback-ab" is introduced with this patch to provide such behavior on openvswitch. Signed-off-by: Ravi Kondamuru <Ravi.Kondamuru@citrix.com> Signed-off-by: Dominic Curran <Dominic.Curran@citrix.com> Signed-off-by: Ethan Jackson <ethan@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
* lacp: Reference count 'struct lacp'.Ethan Jackson2013-06-271-1/+2
| | | | | Signed-off-by: Ethan Jackson <ethan@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* lacp: Remove unused lacp_slave_get_port_id().Ethan Jackson2013-06-241-1/+0
| | | | | Signed-off-by: Ethan Jackson <ethan@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
* Global replace of Nicira Networks.Raju Subramanian2012-05-021-1/+1
| | | | | | | | Replaced all instances of Nicira Networks(, Inc) to Nicira, Inc. Feature #10593 Signed-off-by: Raju Subramanian <rsubramanian@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
* lacp: Remove heartbeat mode.Ethan Jackson2012-04-171-1/+0
| | | | | | | | | The LACP heartbeat mode was used to monitor interfaces for connectivity. It turns out that LACP is inferior to CFM for this purpose. For the sake of simplicity this patch removes the feature. Signed-off-by: Ethan Jackson <ethan@nicira.com>
* lacp: Remove custom transmission intervals.Ethan Jackson2012-04-171-8/+1
| | | | | | | | | | Open vSwitch allowed users to set a custom LACP PDU transmission interval. This turned out to be an ill conceived idea which was more confusing than useful. This patch reverts Open vSwitch to the behavior supported in the LACP specification: two transmission intervals, fast and slow. Signed-off-by: Ethan Jackson <ethan@nicira.com>
* lacp: Require successful LACP negotiations when configured.Ethan Jackson2012-01-231-1/+7
| | | | | | | | | | | In the original Open vSwitch LACP implementation, when no slaves found a LACP partner, the LACP module would attach all of them. This allowed the LACP bond to fall back to a standard bond when partnered with a non-LACP switch. In practice, this has caused confusion with marginal benefit, so this feature is removed with this patch. Signed-off-by: Ethan Jackson <ethan@nicira.com>
* lacp: Update header file comments.Ethan Jackson2011-12-011-14/+14
|
* lacp: Clean up LACP module interface.Ethan Jackson2011-09-081-55/+3
| | | | | | | | There's no particular reason to force users of the LACP module to be aware of the lacp_pdu structure. This patch hides that information in the LACP module implementation. This results in slightly cleaner code which is more consistent with the CFM module.
* lacp: New "lacp-heartbeat" mode.Ethan Jackson2011-05-061-2/+1
| | | | | | | | This commit creates a new heartbeat mode for LACP. This mode treats LACP as a protocol simply for monitoring link status. It strips out most of the sanity checks built into the protocol. Addition of this mode makes "lacp-force-aggregatable" and "lacp-strict" options obsolete so they are removed.
* lacp: Allow configurable aggregation keys.Ethan Jackson2011-04-261-0/+1
| | | | | | | Users will the ability to manually set aggregation keys on a per-slave basis in order to use some of the more advanced LACP features. Most notably, LACP controlled active-backup bonding requires fine grained aggregation key configuration.
* lacp: New other_config setting "lacp-force-aggregatable".Ethan Jackson2011-04-261-0/+1
| | | | | | | | In some extremely advanced situations, one may want to force non-bondable slaves to advertise themselves as bondable. This patch adds that capability. Also includes some minor code cleanup.
* lacp: Implement custom timing mode.Ethan Jackson2011-04-191-1/+8
| | | | | With this patch, the LACP module may be manually configured to use an arbitrary transmission rate set in the database.
* lacp: Remove LACP_[FAST|SLOW]_TIME_RX macros.Ethan Jackson2011-04-191-2/+1
| | | | | | | The receive rate for a LACP packets is simply 3 times the transmission rate. It doesn't make sense to maintain separate macros for these values especially since future patches will allow arbitrary transmission rates.
* lacp: Move LACP packet data to lacp header file.Ethan Jackson2011-04-191-0/+55
|
* lacp: New "strict" lacp mode.Ethan Jackson2011-04-191-0/+1
| | | | | | | | When LACP negotiations are unsuccessful, OVS falls back to standard balance-slb bonding. In some cases, users may want to require successful LACP negotiations for any slaves to be enabled at all. This patch implements a new "strict" mode which disables all slaves when LACP negotiations are unsuccessful.
* lacp: New function lacp_slave_is_current().Ethan Jackson2011-04-181-0/+1
| | | | Used in future patches.
* lacp: Remove enabled flag.Ethan Jackson2011-04-141-1/+0
| | | | | | | | | | | | The enabled flag in the LACP module was only used to set the Collecting and Distributing flags in the LACP protocol. It was intended to be set by the bonding code to mimic its enabled flag. The spec is relatively vague on the precise meaning of these flags, and most implementations do something completely different with them. For these reasons, it seems acceptable to remove the enabled flag for the sake of simplicity. A slave is now Collecting and Distributing if it is attached, or LACP couldn't be negotiated.
* lacp: New function lacp_slave_get_port_id().Ethan Jackson2011-04-131-0/+1
| | | | Will be used in future commits.
* lacp: Encapsulate configuration into new structs.Ben Pfaff2011-04-011-7/+19
| | | | This makes it easier to pass configuration between modules.
* bridge: Drop LACP configuration members from struct iface and struct port.Ben Pfaff2011-04-011-0/+3
| | | | | | There's no reason that I can see to maintain this information in struct port and struct iface. It's redundant, since the lacp implementation maintains the same information.
* lacp: Remove unneeded forward references from header file.Ben Pfaff2011-04-011-5/+0
|
* lacp: Fix misleading prototype for lacp_configure().Ben Pfaff2011-04-011-1/+3
| | | | | | | | | Only the first 6 bytes (ETH_ADDR_LEN) of the 'sys_id' argument are used, but the prototype declared it as an array of 8 bytes. This has no effect on the generated code--the declared size of an array parameter is irrelevant--but it is misleading. Also, add 'const' since the array is not modified.
* lacp: Enable "fast" lacp timing mode.Ethan Jackson2011-03-181-1/+1
|
* vswitchd: Modularize LACP.Ethan Jackson2011-03-181-0/+50
This commit pulls LACP code out of the bridge into its own LACP module. Currently this module is only used by the existing bonding infrastructure.