aboutsummaryrefslogtreecommitdiff
path: root/vswitchd
AgeCommit message (Collapse)Author
2013-09-05vlan-splinter: Fix inverted logic bug.v1.10.2Alex Wang
When "other-config:enable-vlan-splinters=true" is set, the existing vlans with ip address must be retained. The bug actually does the opposite and retains the vlans without ip address. This commit fixes it. Reported-by: Roman Sokolkov <rsokolkov@gmail.com> Signed-off-by: Alex Wang <alexw@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-06-20vswitchd: Update flow-eviction-threshold documentationJoe Stringer
Patch 27a88d1373cbfcceac6d901bbf1c17051aa7845f caused the vswitchd documentation and the code to digress. This brings them back in line. Signed-off-by: Joe Stringer <joe@wand.net.nz> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-04-29vswitchd: Disable system stats collection on a concurrently running daemon.Gurucharan Shetty
There are very rare cases (ex: ovs-vswitchd.pid is inadvertantly deleted), when multiple ovs-vswitchd daemons can end up running at the same time. In a situation like that one of the daemons can wait on the poll() with a 0 ms wait time as it would be expecting system stats to be collected. But system stats are never run for the daemon that does not have the lock on the database and hence it takes up 100% of the CPU if its state machine for stats collection previously was S_WAITING. With this patch, we disable the system stats collection for the daemon that does not have the database lock. When it eventually gets the lock on the database, system stats are automatically enabled if other_config:\ enable-statistics=true. Bug #16669. Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
2013-04-29Update the default VXLAN destination UDP port to the IANA assigned portKyle Mestery
VXLAN was recently assigned UDP port 4789 by IANA. This comit updates the OVS VXLAN implementation to reflect the new UDP port number. Cc: Kenneth Duda <kduda@aristanetworks.com> Signed-off-by: Kyle Mestery <kmestery@cisco.com> Signed-off-by: Jesse Gross <jesse@nicira.com> Conflicts: NEWS
2013-04-11bridge: Complete initial configuration even with empty database.Ben Pfaff
If the database was empty, that is, it did not even contain an Open_vSwitch top-level configuration record, at ovs-vswitchd startup time, then OVS failed to detach and used 100% CPU. This commit fixes the problem. This problem was introduced by commit 63ff04e82623e765 (bridge: Only complete daemonization after db commits initial config.). This problem did not manifest if the initscripts supplied with Open vSwitch were used, because those initscripts always initialize the database before starting ovs-vswitchd, so this problem affects only users with hand-rolled local OVS startup scripts. Bug #16090. Reported-by: Pravin Shelar <pshelar@nicira.com> Tested-by: Pravin Shelar <pshelar@nicira.com> Reported-by: Paul Ingram <paul@nicira.com> Reported-by: Amre Shakimov <ashakimov@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ansis Atteka <aatteka@nicira.com>
2013-04-10bridge: Only complete daemonization after db commits initial config.Ben Pfaff
An earlier commit changed the Open vSwitch startup scripts so that they connect to remote managers only after ovs-vswitchd does its initial configuration, as signaled by ovs-vswitchd detaching from its parent process. However, a race window remains, because ovs-vswitchd detaching does not mean that the database server has received and committed the transaction, only that ovs-vswitchd has sent it. This commit fixes that race window, by changing ovs-vswitchd to complete detaching only after the database server acknowledges the transaction. It is still possible for unusual events to cause ovs-vswitchd to detach before ephemeral columns are filled in. There is always a slim possibility that the transaction will fail or that some other client has added new bridges, ports, etc. while ovs-vswitchd was configuring using an old configuration. The latter race is inherent to the design of the system and cannot be avoided without radical changes. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ansis Atteka <aatteka@nicira.com> Bug #15983.
2013-03-20bridge: Rate-limit updates to "instant stats".Ben Pfaff
Some information in the database must be kept as up-to-date as possible to allow controllers to respond rapidly to network outages. We call these statistics "instant" stats. Until now, the instant stats have been updated on every trip through the main loop. This work scales with the number of interfaces that ovs-vswitchd manages. With CFM enabled on 5000 interfaces, even with a low transmission rate, we see ovs-vswitchd using 100% CPU just to maintain statistics, even with no actual changes. This commit rate-limits updates to instant stats to at most 10 times per second. Earlier tests I did with similar patches showed a major reduction in CPU usage. I have not rerun those tests with this patch, but I expect that the CPU usage should similarly decline. CC: Ram Jothikumar <rjothikumar@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-03-18ovs-vsctl: Try connecting only once for active connections by default.Ben Pfaff
Until now, ovs-vsctl has kept trying to the database server until it succeeded or the timeout expired (if one was specified with --timeout). This meant that if ovsdb-server wasn't running, then ovs-vsctl would hang. The result was that almost every ovs-vsctl invocation in scripts specified a timeout on the off-chance that the database server might not be running. But it's difficult to choose a good timeout. A timeout that is too short can cause spurious failures. A timeout that is too long causes long delays if the server really isn't running. This commit should alleviate this problem. It changes ovs-vsctl's behavior so that, if it fails to connect to the server, it exits unsuccessfully. This makes --timeout obsolete for the purpose of avoiding a hang if the database server isn't running. (--timeout is still useful to avoid a hang if ovsdb-server is running but ovs-vswitchd is not, for ovs-vsctl commands that modify the database. --no-wait also avoids that issue.) Bug #2393. Bug #15594. Reported-by: Jeff Merrick <jmerrick@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-03-13tunnel: Remove references to multicast tunnels in schema documentation.Jesse Gross
The vestigal multicast support in tunnels has been removed at this point, so this deletes the remaining references in the documentation. Reported-by: Guangvy <1965837689@qq.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
2013-03-12bridge: Store the 'mac_in_use' for interfaces in OVSDB.Justin Pettit
It can be useful to remotely determine the MAC addresses of attached interfaces without going through OpenFlow. This adds the MAC address to a new 'mac_in_use' column on the Interface table. Feature #15551 Requested-by: Paul Ingram <paul@nicira.com> Signed-off-by: Justin Pettit <jpettit@nicira.com>
2013-03-06datapath: Remove CAPWAP tunneling support.Pravin B Shelar
The CAPWAP implementation is just the encapsulation format and therefore really not the full protocol. While there were some uses of it (primarily hardware support and UDP transport). But these are most likely better provided by VXLAN. Following patch removes CAPWAP tunneling support. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
2013-02-25vxlan: new draft revisionLorand Jakab
The VXLAN draft just got updated from -02 to -03, with no major changes. Update documentation to reflect the change. Signed-off-by: Lorand Jakab <lojakab@cisco.com> Acked-by: Kyle Mestery <kmestery@cisco.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
2013-02-11stream-unix: Use rundir as root for relative paths.Pavithra Ramesh
Until now, "unix:" and "punix:" paths that are not absolute have been considered relative to the current working directory. It is more useful to consider them relative to the rundir, so this commit makes that change to the C and Python implementations of the stream code. This commit also relaxes the whitelist check in the bridge code so that any name that does not contain a "/" is considered OK. Signed-off-by: Pavithra Ramesh <paramesh@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-02-01bridge: Rename iface_create() variable to avoid hiding parameter.Ben Pfaff
This function has a parameter 'ofp_port' and a local variable 'ofp_port', so rename the local variable to reduce confusion. Found by Coverity. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-01-23bridge: Fix bug in equal_pathnames().Ben Pfaff
Reported-by: Pavithra Ramesh <paramesh@vmware.com> Acked-by: Pavithra Ramesh <paramesh@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-01-16Remove useless use of <assert.h>.Ben Pfaff
These files #included <assert.h> but didn't ever use assert. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-01-16Replace most uses of assert by ovs_assert.Ben Pfaff
This is a straight search-and-replace, except that I also removed #include <assert.h> from each file where there were no assert calls left. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-01-16bridge: Remove restriction on socket name.Pavithra Ramesh
Following patch removes restriction on the listening socket name that gets configured as bridge controller. Currently, we only connect to sockets in a specific directory with the name of the bridge. This patch removes the restriction on the bridge name, keeping the directory restriction. Bug #14029. Signed-off-by: Pavithra Ramesh <paramesh@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2013-01-15tunnels: Remove support for df_inherit from userspace.Ethan Jackson
This will be required to support flow based tunneling. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2013-01-04manpages: Put version number instead of date at bottom of page.Ben Pfaff
We're really good about keeping manpages up to date, but terrible at updating the dates at the bottom of the manpages. So, instead of using manually updated dates, this commit switches to using automatically updated version numbers. We can only use automatically updated version numbers for manpages that we preprocess, that is, the manpages whose sources end with ".in". This excludes a couple of manpages that don't actually get installed with OVS, such as the manpages for ovs-ctl and ovsdb-idlc. This commit doesn't change those manpages. It does change the ovs-bugtool manpage to one that is preprocessed so that we can use the version there. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2013-01-03vswitch: Remove PMTUD support from userspace.Ethan Jackson
This patch removes path MTU discovery from userspace. The feature still exists in the kernel where it will need to be removed in the future. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2013-01-03netdev: Rename get_drv_info() to get_status().Ethan Jackson
get_status() is a much more intuitive name since "status" is what the database column is called. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2013-01-02bridge: Log version number precisely once.Ethan Jackson
Before this patch, ovs-vswitchd logged its version number every time the database changed. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-12-27openvswitch: Remove Linux bridge compatibility.Pravin B Shelar
Currently brcompat does not work on master due to recent datapath changes. We have decided to remove it as it is not used very widely. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
2012-12-27brcompat: Mark ovs-brcompat as deprecated.Pravin B Shelar
Signed-off-by: Pravin B Shelar <pshelar@nicira.com> bug #14341
2012-12-26ovs-vswitch: Make OpenFlow "dp_desc" configurable.Ben Pfaff
Signed-off-by: Felician Nemeth <nemethf@tmit.bme.hu> [blp@nicira.com refactored the code that this was based on and revised the patch accordingly] Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-12-21xenserver: Downgrade not on XenServer warning to DBG.Ethan Jackson
This log message is annoying and of questionable usefulness. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-12-12packets: Change IP_ARGS interface to take an ovs_be32 instead of a pointer.Ben Pfaff
An ovs_be32 is a more obvious way to represent an IP address than a pointer to one. It is also more type-safe, especially since "sparse" is able to check that the argument is in network byte order. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2012-12-08vswitchd: Avoid writing to const structEd Maste
When built with Clang, vswitchd segfaulted in ovsrec_open_vswitch_init, from calling memset() on a const struct. Signed-off-by: Ed Maste <emaste@freebsd.org> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-12-08vswitchd: Make the maximum size of MAC learning tables user-configurable.Ben Pfaff
We've had a couple of requests for this over the years. It's easy to do, so let's implement it. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Kyle Mestery <kmestery@cisco.com>
2012-12-05datapath: Add support for VXLAN tunnels to Open vSwitchKyle Mestery
Add support for VXLAN tunnels to Open vSwitch. Add support for setting the destination UDP port on a per-port basis. This is done by adding a "dst_port" parameter to the port configuration. This is only applicable currently to VXLAN tunnels. Please note this currently does not implement any sort of multicast learning. With this patch, VXLAN tunnels must be configured similar to GRE tunnels (e.g. point to point). A subsequent patch will implement a VXLAN control plane in userspace to handle multicast learning. This patch set is based on one posted by Ben Pfaff on Oct. 12, 2011 to the ovs-dev mailing list: http://openvswitch.org/pipermail/dev/2011-October/012051.html The patch has been maintained, updated, and freshened by me and a version of it is available at the following github repository: https://github.com/mestery/ovs-vxlan/tree/vxlan I've tested this patch with multiple VXLAN tunnels between hosts using different UDP port numbers. Performance is on par (though slightly faster) than comparable GRE tunnels. See the following IETF draft for additional information about VXLAN: http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02 Signed-off-by: Kyle Mestery <kmestery@cisco.com> [jesse: simplify error path in vxlan_tunnel_setup, don't print default VXLAN port, and remove dead code] Signed-off-by: Jesse Gross <jesse@nicira.com>
2012-12-03bridge: Set mac address when no physical ports attached.Justin Pettit
Commit 1a8cfb41(bridge: Drop warning about thedefault bridge Ethernet address.) attempted to reduce unnecessary logging, but deleted some code that was necessary to set the mac address on local ports when no physical ports were attached. Signed-off-by: Justin Pettit <jpettit@nicira.com> Issue #14126
2012-11-29bridge: Drop warning about the default bridge Ethernet address.Ben Pfaff
This information is also available via ovs-ofctl and through other means, and it's not really anything we need to warn about anyhow. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
2012-11-27Initial OpenFlow 1.3 supportJarno Rajahalme
Initial OpenFlow 1.3 support with new include/openflow/openflow-1.3.h. Most of the messages that differ from 1.2 are implemented. OFPT_SET_ASYNC is implemented via NX_SET_ASYNC_CONFIG, other new message types are yet to be implemented. Stats replies that add duration fields are implemented at encode/decode level only. Test cases for implemented features are included. Remaining FIXME:s should not cause runtime aborts. Make check comes out clean. Signed-off-by: Jarno Rajahalme <jarno.rajahalme@nsn.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-11-26vswitchd: Make Interface's ofport a persistent column.Gurucharan Shetty
Currently, the 'ofport' column in Interface table is ephemeral and is populated by vswitchd everytime it is started or when a new interface is created with vswitchd running. Making it persistent lets vswitchd try and assign the same ofport number to a particular interface across restarts. This is just a fallback option when 'ofport_request' column is empty. Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
2012-11-20bridge: Fix typo in comment.Ben Pfaff
Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-11-19vswitchd: Configuration of allowed OpenFlow versionsSimon Horman
Versions may be configured using the protocols column of the bridge table. The protocols column is a set which accepts zero or more of the values: 'OpenFlow10' and 'OpenFlow12'. If the protocols column is empty, then OpenFlow10 is used. This default is consistent with the behaviour of ovs-vswtichd prior to this patch. Signed-off-by: Simon Horman <horms@verge.net.au> [blp@nicira.com adjusted comments and documentation] Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-11-16bridge: Always "up" internal devices.Justin Pettit
The kernel datapath automatically "up"s internal devices, but this wasn't happening for the userspace datapath. This change has the bridge module always "up" them. Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-11-16bridge: Introduce iface_is_internal() function.Justin Pettit
This will have an additional caller in the future. Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-11-16bridge: Open internal ports with the correct type.Justin Pettit
Use the new ofproto function that returns how a port should be opened based on the datapath type. This fixes a problem with internal ports being attached to userspace datapaths. Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-11-12ofproto, connmgr: Parameterise OpenFlow versions for adding controllerSimon Horman
Allow allowed Open Flow versions to be passed rather than relying on hard-coded defaults. This is in preparation for allowing configuration of the allowed OpenFlow versions. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-11-06bridge: Fix a segmentation fault in bridge_init_ofproto().Ethan Jackson
When the database is initially created there may no be rows in the Open_vSwitch table. In this case, the ovsrec_open_vswitch passed to bridge_init_ofproto() is NULL and causes a segmentation fault. Signed-off-by: Ethan Jackson <ethan@nicira.com>
2012-11-05datapath: Remove tunnel header caching.Pravin B Shelar
Tunnel caching was added to reduce CPU utilization on TX path by caching packet header, So performance gain is directly proportional to number of skbs transferred. But with help of offloads skb are getting larger. So there are less number of skbs. Therefore header caching does not shows similar gains we seen in past. And now kernel 3.6 has removed dst caching from networking which makes header caching even more tricky. So this commit removes header caching from OVS tunnelling. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com>
2012-11-05netdev: Deprecate CAPWAP support.Pravin B Shelar
The CAPWAP implementation is just the encapsulation format and therefore really not the full protocol. While there were some uses of it (primarily hardware support and UDP transport). But these are most likely better provided by VXLAN. As a result, CAPWAP will be removed no earlier than February 2013. Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
2012-11-03ofproto: Report 0 Mbps when speed not available instead of 100 Mbps.Ben Pfaff
When a link is down, or when a link has no speed because it is not a physical interface, Open vSwitch previously reported that its rate is 100 Mbps as a default. This is counterintuitive, however, so this commit changes Open vSwitch behavior to report 0 Mbps when a link is down or its speed is otherwise unavailable. Bug #13388. Reported-by: Hiroshi Tanaka <htanaka@nicira.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
2012-11-01ofproto-dpif: Use a single underlying datapath across multiple bridges.Justin Pettit
This commit switches to using a single backing datapath (called "ovs-datapath") for all bridges of that datapath's type. Previously, resources couldn't be shared across bridges, since each was in its own datapath. This change will allow sharing of tunnels and cheaper patch ports to be added in the future. Since bridges share a common datapath, the ovs-dpctl commands won't provide bridge-specific information. Users wishing to have that information should use the new "ovs-appctl dpif/*" commands as documented in ovs-vswitchd(8). Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-11-01ofproto: Add type "run", "run_fast", and "wait" provider methods.Justin Pettit
Add the ability for ofproto providers to have top-level "run", "run_fast", and "wait" methods, similar to the current ofproto ones. There are no current users, but this will be useful in a future commit. Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-11-01ofproto-dpif: Add ovs-appctl commands for ovs-dpctl functions.Justin Pettit
These commands will be useful in a future commit that makes multiple bridges share a single backing datapath. The ovs-dpctl commands will show information about the backing datapath, so it will be difficult to determine which information belongs to which bridge. The new "dpif/*" ovs-appctl commands return information about the bridge--regardless of how the backing datapath is configured. Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-11-01ofproto: Add initialization function.Justin Pettit
A future commit will make all bridges of a particular dpif share a single backing datapath. In order to handle restart, the datapath will need to have some idea of what the initial state looks like. Otherwise, it won't know which ports belong to which bridges and orphaned ports may never be cleaned up. This commit introduces an initialization method to ofproto, which takes as an argument a high-level description of the bridges and ports. An ofproto provider can then use this information to initialize its state. Signed-off-by: Justin Pettit <jpettit@nicira.com>
2012-11-01Allow the OpenFlow port to be requested for a port.Justin Pettit
A new "ofport_request" column makes it possible to request the OpenFlow port number when adding a port. Signed-off-by: Justin Pettit <jpettit@nicira.com>