summaryrefslogtreecommitdiff
path: root/vswitchd
Commit message (Collapse)AuthorAgeFilesLines
* doc: Populate 'topics' sectionStephen Finucane2016-12-122-245/+0
| | | | | | | | | | | There are many docs that don't need to kept at the top level, along with many more hidden in random folders. Move them all. This also allows us to add the '-W' flag to Sphinx, ensuring unindexed docs result in build failures. Signed-off-by: Stephen Finucane <stephen@that.guru> Signed-off-by: Ben Pfaff <blp@ovn.org>
* doc: Populate 'install', 'howto' sectionsStephen Finucane2016-12-121-6/+4
| | | | | | | | | This is a dumb move of all 'INSTALL*' docs, with very little refactoring (mostly updating links and making the titles a little more consistent. Additional refactoring will be done in subsequent changes. Signed-off-by: Stephen Finucane <stephen@that.guru> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb-tool: Document database numbering scheme.Ben Pfaff2016-12-021-9/+2
| | | | | | | Prompted by an IRC discussion. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Russell Bryant <russell@ovn.org>
* utilities: Use FQDN for external_ids:hostname in Openvswitch tableBabu Shanmugam2016-11-261-1/+2
| | | | | | | | | | | Openstack compute manager uses FQDN to check for the hypervisors to which the ports are bound. Without this fix, no instances can be launched as the hypervisor's hostname mismatches. Signed-off-by: Babu Shanmugam <bschanmu@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ofproto: Add protected property to bundleBen Kelly2016-11-221-0/+3
| | | | | | | | Propagate the protected mode setting from port to xbundle, so that ofproto* can make decisions. Signed-off-by: Ben Kelly <ben@benjii.net> Signed-off-by: Simon Horman <simon.horman@netronome.com>
* ovsschema: Add protected column to Port tableBen Kelly2016-11-222-1/+11
| | | | | | | | | Supports setting of protected mode true/false per port e.g. # ovs-vsctl set port virtX protected=1/0 Signed-off-by: Ben Kelly <ben@benjii.net> Signed-off-by: Simon Horman <simon.horman@netronome.com>
* Add support for specifying SSL connection parameters to ovsdbEthan Rahn2016-11-101-0/+1
| | | | | Signed-off-by: Ethan Rahn <erahn@arista.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* doc: Convert vswitchd/INTERNALS to rSTStephen Finucane2016-11-033-240/+245
| | | | | Signed-off-by: Stephen Finucane <stephen@that.guru> Signed-off-by: Russell Bryant <russell@ovn.org>
* ifnotifier: do not wake up when there is no db connectionThadeu Lima de Souza Cascardo2016-10-311-8/+22
| | | | | | | | | | | | | | | When bridge uses the interface notifier, it wakes up until a reconfiguration takes place. However, if there is no connection or a lock contention to the database, the check for reconfiguration will not take place. This uses a seq and only seq_wait when checking for the interfaces change. This is easily reproduced by starting ovs-vswitchd without starting ovsdb-server, and then creating a new system interface, like using 'ip link add type veth'. ovs-vswitchd will then consume 100% CPU. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb-idlc: Eliminate <prefix>_init() function from generated code.Ben Pfaff2016-10-191-2/+1
| | | | | Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Andy Zhou <azhou@ovn.org>
* ovsdb-idlc: Use ovsdb_datum_from_smap() instead of open-coding it.Ben Pfaff2016-10-191-0/+1
| | | | | | | | | | | | There's no reason to have three copies of this code for every smap-type column. The code wasn't a perfect match for ovsdb_datum_from_smap(), so this commit also changes ovsdb_datum_from_smap() to better suit it. It only had one caller and the new design is adequate for that caller. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Andy Zhou <azhou@ovn.org>
* doc: Convert INSTALL.DPDK to rSTStephen Finucane2016-10-181-1/+1
| | | | | Signed-off-by: Stephen Finucane <stephen@that.guru> Signed-off-by: Russell Bryant <russell@ovn.org>
* dpdk: New module with some code from netdev-dpdk.Daniele Di Proietto2016-10-121-1/+1
| | | | | | | | | | | | | | | | | | | | There's a lot of code in netdev-dpdk which is not at all related to the netdev interface, mostly the library initialization code. This commit moves it to a new 'dpdk' module, to simplify 'netdev-dpdk'. Also a new module 'dpdk-stub' is introduced to implement some functions when DPDK is not available. This replaces the old 'netdev-nodpdk' module. Some redundant includes are removed or reorganized as a consequence. No functional change. CC: Aaron Conole <aconole@redhat.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Aaron Conole <aconole@redhat.com> Tested-by: Aaron Conole <aconole@redhat.com>
* Change some old references to nicira-ext.h.Thadeu Lima de Souza Cascardo2016-09-301-1/+1
| | | | | | | | Some of these references are not valid anymore, as things were moved to either meta-flow.h or ofp-actions.c. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* netdev-dpdk: Allow configurable queue sizes for 'dpdk' portsCiara Loftus2016-09-301-0/+22
| | | | | | | | | | | | | The 'options:n_rxq_desc' and 'n_txq_desc' fields allow the number of rx and tx descriptors for dpdk ports to be modified. By default the values are set to 2048, but can be modified to an integer between 1 and 4096 that is a power of two. The values can be modified at runtime, however require the NIC to restart when changed. Signed-off-by: Ciara Loftus <ciara.loftus@intel.com> Acked-by: Yunhong Jiang <yunhong.jiang@linux.intel.com> Acked-by: Ilya Maximets <i.maximets@samsung.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* openvswitch: Allow external IPsec tunnel management.Pravin B Shelar2016-09-271-52/+5
| | | | | | | | | | | | | | | | | | OVS GRE IPsec tunnel support has multiple issues, Therefore it was deprecated in OVS 2.6. Following patch removes support for GRE IPsec and allows external IPsec tunnel management for any type of tunnel not just GRE. e.g. user can encrypt Geneve or VxLan traffic. It can be done by using openflow pipeline to set skb-mark and using IPsec keying daemons to implement IPsec tunnels. This packet can be matched for the skb-mark to encrypt selective tunnel traffic. VMware-BZ: 1710701 Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Ansis Atteka <aatteka@ovn.org>
* openvswitch: deprecates support for IPsec tunnel port.Pravin B Shelar2016-09-241-0/+3
| | | | | | | | | | | | | OVS IPsec tunnel support has issues: 1. It only works for GRE. 2. only works on Debian. 3. It does not allow user to match on packet-mark on packet received on tunnel ports. This patch deprecates support for IPsec tunnel port. Signed-off-by: Pravin B Shelar <pshelar@ovn.org> Acked-by: Ansis Atteka <aatteka@ovn.org>
* netdev-dpdk: Add new 'dpdkvhostuserclient' port typeCiara Loftus2016-09-191-5/+3
| | | | | | | | | | The 'dpdkvhostuser' port type no longer supports both server and client mode. Instead, 'dpdkvhostuser' ports are always 'server' mode and 'dpdkvhostuserclient' ports are always 'client' mode. Suggested-by: Daniele Di Proietto <diproiettod@vmware.com> Signed-off-by: Ciara Loftus <ciara.loftus@intel.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* ofproto: Add a fixed bundle idle timeout of 10 seconds.Jarno Rajahalme2016-09-131-0/+15
| | | | | | | | | | | | | | | | Timing out idle bundles frees memory that would effectively be leaked if a long standing OpenFlow connection would fail to commit or discard a bundle. OpenFlow specification mandates the timeout to be at least one second, if the switch implements such a timeout. This patch makes the bundle idle timeout to be 10 seconds. We do not limit the number of messages in a bundle, so it does not make sense to limit the number of bundles either, especially now that idle bundles are timed out. Signed-off-by: Jarno Rajahalme <jarno@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ofproto: Honor mtu_request even for internal ports.Daniele Di Proietto2016-09-022-17/+25
| | | | | | | | | | | | | | | | | | | | | | | | By default Open vSwitch tries to configure internal interfaces MTU to match the bridge minimum, overriding any attempt by the user to configure it through standard system tools, or the database. While this works in many simple cases (there are probably many users that rely on this) it may create problems for more advanced use cases (like any overlay networks). This commit allows the user to override the default behavior by providing an explict MTU in the mtu_request column in the Interface table. This means that Open vSwitch will now treat differently database MTU requests from standard system tools MTU requests (coming from `ip link` or `ifconfig`), but this seems the best way to remain compatible with old users while providing a more powerful interface. Suggested-by: Darrell Ball <dlu998@gmail.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org> Tested-by: Joe Stringer <joe@ovn.org>
* bridge: Honor 'mtu_request' when port is added.Daniele Di Proietto2016-08-301-8/+21
| | | | | | | | | | | | | | 'mtu_request' was honored only when the port was reconfigured, not when the port was added. This commit fixes the problem and improves a testcase to detect the bug. Found by inspection. Fixes: 56abcf497b56("vswitchd: Introduce 'mtu_request' column in Interface.") Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ben Pfaff <blp@ovn.org>
* lib: Retire packet buffering feature.Jarno Rajahalme2016-08-301-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | OVS implementation of buffering packets that are sent to the controller is not compliant with the OpenFlow specifications after OpenFlow 1.0, which is possibly true since OpenFlow 1.0 is not really specifying the packet buffering behavior. OVS implementation executes the buffered packet against the actions of the modified or added rule, whereas OpenFlow (since 1.1) specifies that the packet should be matched against the flow table 0 and processed accordingly. Rather than fix this behavior, and potentially break OVS users, the packet buffering feature is removed altogether. After all, such packet buffering is an optional OpenFlow feature, and as such any possible users should continue to work without this feature. This patch also makes OVS check the received 'buffer_id' values more rigorously, and fixes some internal users accordingly. Found by inspection. Signed-off-by: Jarno Rajahalme <jarno@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* netdev-dpdk: vHost client mode and reconnectCiara Loftus2016-08-151-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | Until now, vHost ports in OVS have only been able to operate in 'server' mode whereby OVS creates and manages the vHost socket and essentially acts as the vHost 'server'. With this commit a new mode, 'client' mode, is available. In this mode, OVS acts as the vHost 'client' and connects to the socket created and managed by QEMU which now acts as the vHost 'server'. This mode allows for reconnect capability, which allows a vHost port to resume normal connectivity in event of switch reset. By default dpdkvhostuser ports still operate in 'server' mode. That is unless a valid 'vhost-server-path' is specified for a device like so: ovs-vsctl set Interface dpdkvhostuser0 options:vhost-server-path=/path/to/socket 'vhost-server-path' represents the full path of the vhost user socket that has been or will be created by QEMU. Once specified, the port stays in 'client' mode for the remainder of its lifetime. QEMU v2.7.0+ is required when using OVS in vHost client mode and QEMU in vHost server mode. Signed-off-by: Ciara Loftus <ciara.loftus@intel.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* netdev-dpdk: Remove dpdkvhostcuse portsCiara Loftus2016-08-151-12/+0
| | | | | | | | | | | | | | | | | | | This commit removes the 'dpdkvhostcuse' port type from the userspace datapath. vhost-cuse ports are quickly becoming obsolete as the vhost-user port type begins to support a greater feature-set thanks to the addition of things like vhost-user multiqueue and potential upcoming features like vhost-user client-mode and vhost-user reconnect. The feature is also expected to be removed from DPDK soon. One potential drawback of the removal of this support is that a userspace vHost port type is not available in OVS for use with older versions of QEMU (pre v2.2). Considering v2.2 is nearly two years old this should however be a low impact change. Signed-off-by: Ciara Loftus <ciara.loftus@intel.com> Acked-by: Flavio Leitner <fbl@sysclose.org> Acked-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ilya Maximets <i.maximets@samsung.com>
* vswitchd: Introduce 'mtu_request' column in Interface.Daniele Di Proietto2016-08-123-16/+55
| | | | | | | | | | | | | | | | | The 'mtu_request' column can be used to set the MTU of a specific interface. This column is useful because it will allow changing the MTU of DPDK devices (implemented in a future commit), which are not accessible outside the ovs-vswitchd process, but it can be used for kernel interfaces as well. The current implementation of set_mtu() in netdev-dpdk is removed because it's broken. It will be reintroduced by a subsequent commit on this series. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ilya Maximets <i.maximets@samsung.com>
* smap: New function smap_get_ullong().Ben Pfaff2016-08-081-112/+50
| | | | | Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com>
* bridge: No QoS configured is not an errorMaxime Coquelin2016-08-041-1/+1
| | | | | | | | | | | | | | | | | | | | | If no QoS is configured, type value is likely to be an empty string. This is not an error though, so use the regular command reply function, not the error one. For example, before this patch: # ovs-appctl -t ovs-vswitchd qos/show vhost-user1 QoS not configured on vhost-user1 ovs-appctl: ovs-vswitchd: server returned an error After the patch: # ovs-appctl -t ovs-vswitchd qos/show vhost-user1 QoS not configured on vhost-user1 Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Ian Stokes <ian.stokes@intel.com> Acked-by: Daniele Di Proietto <diproiettod@vmware.com>
* netdev-dpdk: Add Flow Control support.Sugesh Chandran2016-07-291-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for flow-control(mac control frame) to DPDK enabled physical port types. By default, the flow-control is OFF on both rx and tx side. The flow control can be enabled/disabled either when adding a port to OVS or at run time. For eg: To enable flow control support at tx side while adding a port, add the 'tx-flow-ctrl' option to the 'ovs-vsctl add-port' command-line as below. 'ovs-vsctl add-port br0 dpdk0 -- \ set Interface dpdk0 type=dpdk options:tx-flow-ctrl=true' Similarly to enable rx flow control, 'ovs-vsctl add-port br0 dpdk0 -- \ set Interface dpdk0 type=dpdk options:rx-flow-ctrl=true' And to enable the flow control auto-negotiation, 'ovs-vsctl add-port br0 dpdk0 -- \ set Interface dpdk0 type=dpdk options:flow-ctrl-autoneg=true' To turn ON the tx flow control at run time(After the port is being added to OVS), the command-line input will be, 'ovs-vsctl set Interface dpdk0 options:tx-flow-ctrl=true' The flow control parameters can be turned off by setting 'false' to the respective parameter. To dsiable the flow control at tx side, 'ovs-vsctl set Interface dpdk0 options:tx-flow-ctrl=false' Signed-off-by: Sugesh Chandran <sugesh.chandran@intel.com> Acked-by: Bhanuprakash Bodireddy <Bhanuprakash.bodireddy@intel.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* dpif-netdev: Introduce pmd-rxq-affinity.Ilya Maximets2016-07-271-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | New 'other_config:pmd-rxq-affinity' field for Interface table to perform manual pinning of RX queues to desired cores. This functionality is required to achieve maximum performance because all kinds of ports have different cost of rx/tx operations and only user can know about expected workload on different ports. Example: # ./bin/ovs-vsctl set interface dpdk0 options:n_rxq=4 \ other_config:pmd-rxq-affinity="0:3,1:7,3:8" Queue #0 pinned to core 3; Queue #1 pinned to core 7; Queue #2 not pinned. Queue #3 pinned to core 8; It's decided to automatically isolate cores that have rxq explicitly assigned to them because it's useful to keep constant polling rate on some performance critical ports while adding/deleting other ports without explicit pinning of all ports. Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* bridge: Pass interface's configuration to datapath.Ilya Maximets2016-07-271-0/+2
| | | | | | | | | | | | This commit adds functionality to pass value of 'other_config' column of 'Interface' table to datapath. This may be used to pass not directly connected with netdev options and configure behaviour of the datapath for different ports. For example: pinning of rx queues to polling threads in dpif-netdev. Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Daniele Di Proietto <diproiettod@vmware.com>
* json: Move from lib to include/openvswitch.Terry Wilson2016-07-222-4/+4
| | | | | | | | | | | | | | | To easily allow both in- and out-of-tree building of the Python wrapper for the OVS JSON parser (e.g. w/ pip), move json.h to include/openvswitch. This also requires moving lib/{hmap,shash}.h. Both hmap.h and shash.h were #include-ing "util.h" even though the headers themselves did not use anything from there, but rather from include/openvswitch/util.h. Fixing that required including util.h in several C files mostly due to OVS_NOT_REACHED and things like xmalloc. Signed-off-by: Terry Wilson <twilson@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* netdev-dpdk: Obtain number of queues for vhost ports from attached virtio.Ilya Maximets2016-07-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Currently, there are few inconsistencies in ways to configure number of queues for netdev device: * dpif-netdev can't know about exact number of queues allocated inside netdev. This leads to constant mapping of queue-ids to 'real' ones. * We are able to configure 'n_rxq' for vhost-user devices, but there is only one sane number of rx queues which must be used and configured manually (number of queues that allocated in QEMU). This patch disables configuration of 'n_rxq' for DPDK vHost devices. Configuration of rx and tx queues now automatically applied from connected virtio device. Standard reconfiguration mechanism was used to apply this changes. Also, now 'n_txq' and 'n_rxq' are always the real numbers of queues in the device. Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* bridge: open_type should be used for netdev_openThadeu Lima de Souza Cascardo2016-07-061-4/+12
| | | | | | | | | | | | | | | | | | ofproto_port_open_type should be used for netdev_open, but not for other tests. For example, STP/RSTP check for interfaces of internal type, but that check will fail when the netdev datapath is used. The same thing goes for setting MAC address of internal Interfaces. That fails for the netdev datapath because the interface type is set to "tap", but they are still interfaces of type "internal", just their netdev implementation is different. Use a netdev_type for the type that needs to be used for netdev_open and ofproto_port, while we still keep the type as the normalized configured type in the database. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com> Signed-off-by: Jesse Gross <jesse@kernel.org>
* bridge: Add assertion to document an invariant in find_local_hw_addr().Ben Pfaff2016-07-051-0/+3
| | | | | | | | Avoids a possible null pointer dereference report from Clang. Reported-at: http://openvswitch.org/pipermail/dev/2016-June/073967.html Signed-off-by: Ben Pfaff <blp@ovn.org> Tested-by: William Tu <u9012063@gmail.com>
* ofproto-dpif-mirror: Add mirror snaplen support.William Tu2016-07-033-1/+21
| | | | | | | | | | This patch adds a 'snaplen' config for mirroring table. A mirrored packet with size larger than snaplen bytes will be truncated in datapath before sending to the mirror output port. Tested-at: https://travis-ci.org/williamtu/ovs-travis/builds/141186839 Signed-off-by: William Tu <u9012063@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* bfd: Allow setting OAM bit when encapsulated in tunnel.Jesse Gross2016-06-291-0/+7
| | | | | | | | | | | | | | | | | | | | | | Some tunnel protocols, such as Geneve, have a bit in the tunnel header to indicate that it is an OAM packet. This means that the packet should be processed as a tunnel control frame and not be passed onto connected links. When BFD is used inside of a tunnel it is often used in this control capacity, so this adds an option to enable marking the outer header when the output port is a tunnel that supports the OAM concept. It is also possible to use tunnels as point-to-point links that are simply carrying BFD as payload, so this is not always turned on. Conceptually, this may also apply to other types of packets locally generated by the switch, most obviously CFM. However, BFD seems to be most commonly used for this type of tunnel monitoring application so this only adds the option to BFD for the time being to avoid unnecessarily adding configuration knobs that might never get used. Signed-off-by: Jesse Gross <jesse@kernel.org> Acked-by: Pravin B Shelar <pshelar@ovn.org>
* bridge: allow OVS to interact with controller through sockets outside run dirAnsis Atteka2016-06-271-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently Open vSwitch is unable to create or connect to Unix Domain Sockets outside designated 'run' directory, because of fear of potential remote exploits where a hacked remote OVSDB manager would tell Open vSwitch to connect to a unix domain socket owned by other daemon on the same hypervisor. This patch allows to disable this behavior by changing /etc/default/openvswitch (Ubuntu) or /etc/sysconfig/openvswitch (RHEL) file to: ... OVS_CTL_OPTS=--no-self-confinement ... Note, that it is better to stick with default behavior, unless: 1. You have Open vSwitch running under SELinux or AppArmor that would prevent OVS from messing with sockets owned by other daemons; OR 2. You are sure that relying on OpenFlow handshake is enough to prevent OVS to adversely interact with those other daemons running on the same hypervisor; OR 3. You don't have much worries of remote exploits in the first place, because perhaps OVSDB manager is running on the same host as OVS. The initial use-case for this patch is to allow to connect to OpenFlow controller that has its socket outside OVS run directory. However, in the future it could be generalized to allow to disable self-confinement for other things like DPDK vhost-user sockets or anything else that is specifiable in OVSDB with full path. Signed-off-by: Ansis Atteka <aatteka@ovn.org> Acked-by: Jesse Gross <jesse@kernel.org> VMware-BZ: #1525857
* util: New function nullable_xstrdup().Ben Pfaff2016-06-261-6/+2
| | | | | | It's a pretty common pattern so create a function for it. Signed-off-by: Ben Pfaff <blp@ovn.org>
* ipfix: Export user specified virtual observation IDWenyu Zhang2016-06-242-0/+46
| | | | | | | | | | | | In virtual network, users want more info about the virtual point to observe the traffic. It should be a string to provide clear info, not a simple interger ID. Introduce "other-config: virtual_obs_id" in IPFIX, which is a string configured by user. Introduce an enterprise IPFIX entity "virtualObsID"(898) to export the value. The entity is a variable-length string. Signed-off-by: Wenyu Zhang <wenyuz@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Revert "ipfix: Export user specified virtual observation ID".Ben Pfaff2016-06-242-46/+0
| | | | | | | | | | | | | | | | | | | | | | | This reverts commit 337bebe91c94d9d201e28811c469869d32e978ff, which caused a crash in test 1048 "ofproto-dpif - Flow IPFIX sanity check" (now test 1051) with the following backtrace: #0 hmap_first_with_hash (hmap=<optimized out>, hmap=<optimized out>, hash=<optimized out>) at ../lib/hmap.h:328 #1 smap_find__ (smap=0x94, key=key@entry=0x817f7ab "virtual_obs_id", key_len=14, hash=2537071222) at ../lib/smap.c:366 #2 0x0812b9d7 in smap_get_node (smap=0x9738a276, key=0x817f7ab "virtual_obs_id") at ../lib/smap.c:198 #3 0x0812ba30 in smap_get (smap=0x94, key=0x817f7ab "virtual_obs_id") at ../lib/smap.c:189 #4 0x08055a60 in bridge_configure_ipfix (br=<optimized out>) at ../vswitchd/bridge.c:1237 #5 bridge_reconfigure (ovs_cfg=0x94) at ../vswitchd/bridge.c:666 #6 0x080568d3 in bridge_run () at ../vswitchd/bridge.c:2972 #7 0x0804c9dd in main (argc=10, argv=0xffd8b934) at ../vswitchd/ovs-vswitchd.c:112 Signed-off-by: Ben Pfaff <blp@ovn.org>
* ipfix: Export user specified virtual observation IDWenyu Zhang2016-06-242-0/+46
| | | | | | | | | | | | | | In virtual network, users want more info about the virtual point to observe the traffic. It should be a string to provide clear info, not a simple interger ID. Introduce "other-config: virtual_obs_id" in IPFIX, which is a string configured by user. Introduce an enterprise IPFIX entity "virtualObsID"(898) to export the value. The entity is a variable-length string. Signed-off-by: Wenyu Zhang <wenyuz@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* netdev-linux: Add new QoS type linux-noop.bschanmu@redhat.com2016-06-231-11/+15
| | | | | | | | | | | | Linux ``No operation'' qos type is used to inform the vswitch that the traffic control for the port is managed externally. Any configuration values set for this type will have no effect. This patch provides a solution suggested in this mail - http://openvswitch.org/pipermail/discuss/2015-May/017687.html Signed-off-by: Babu Shanmugam <bschanmu@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ipfix: Support tunnel information for Flow IPFIX.Benli Ye2016-06-172-80/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support to export tunnel information for flow-based IPFIX. The original steps to configure flow level IPFIX: 1) Create a new record in Flow_Sample_Collector_Set table: 'ovs-vsctl -- create Flow_Sample_Collector_Set id=1 bridge="Bridge UUID"' 2) Add IPFIX configuration which is referred by corresponding row in Flow_Sample_Collector_Set table: 'ovs-vsctl -- set Flow_Sample_Collector_Set "Flow_Sample_Collector_Set UUID" ipfix=@i -- --id=@i create IPFIX targets=\"IP:4739\" obs_domain_id=123 obs_point_id=456 cache_active_timeout=60 cache_max_flows=13' 3) Add sample action to the flows: 'ovs-ofctl add-flow mybridge in_port=1, actions=sample'('probability=65535,collector_set_id=1, obs_domain_id=123,obs_point_id=456')',output:3' NXAST_SAMPLE action was used in step 3. In order to support exporting tunnel information, the NXAST_SAMPLE2 action was added and with NXAST_SAMPLE2 action in this patch, the step 3 should be configured like below: 'ovs-ofctl add-flow mybridge in_port=1, actions=sample'('probability=65535,collector_set_id=1,obs_domain_id=123, obs_point_id=456,sampling_port=3')',output:3' 'sampling_port' can be equal to ingress port or one of egress ports. If sampling port is equal to output port and the output port is a tunnel port, OVS_USERSPACE_ATTR_EGRESS_TUN_PORT will be set in the datapath flow sample action. When flow sample action upcall happens, tunnel information will be retrieved from the datapath and then IPFIX can export egress tunnel port information. If samping_port=65535 (OFPP_NONE), flow-based IPFIX will keep the same behavior as before. This patch mainly do three tasks: 1) Add a new flow sample action NXAST_SAMPLE2 to support exporting tunnel information. NXAST_SAMPLE2 action has a new added field 'sampling_port'. 2) Use 'other_configure: enable-tunnel-sampling' to enable or disable exporting tunnel information. 3) If 'sampling_port' is equal to output port and output port is a tunnel port, the translation of OpenFlow "sample" action should first emit set(tunnel(...)), then the sample action itself. It makes sure the egress tunnel information can be sampled. 4) Add a test of flow-based IPFIX for tunnel set. How to test flow-based IPFIX: 1) Setup a test environment with two Linux host with Docker supported 2) Create a Docker container and a GRE tunnel port on each host 3) Use ovs-docker to add the container on the bridge 4) Listen on port 4739 on the collector machine and use wireshark to filter 'cflow' packets. 5) Configure flow-based IPFIX: - 'ovs-vsctl -- create Flow_Sample_Collector_Set id=1 bridge="Bridge UUID"' - 'ovs-vsctl -- set Flow_Sample_Collector_Set "Flow_Sample_Collector_Set UUID" ipfix=@i -- --id=@i create IPFIX \ targets=\"IP:4739\" cache_active_timeout=60 cache_max_flows=13 \ other_config:enable-tunnel-sampling=true' - 'ovs-ofctl add-flow mybridge in_port=1, actions=sample'('probability=65535,collector_set_id=1,obs_domain_id=123, obs_point_id=456,sampling_port=3')',output:3' Note: The in-port is container port. The output port and sampling_port are both open flow port and the output port is a GRE tunnel port. 6) Ping from the container whose host enabled flow-based IPFIX. 7) Get the IPFIX template pakcets and IPFIX information packets. Signed-off-by: Benli Ye <daniely@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* tunnels: Update schema documentation related to tunnels.Jesse Gross2016-06-071-12/+12
| | | | | | | | As both OVS and tunnel protocols themselves have evolved, some changes have caused the documentation to drift from current reality. Signed-off-by: Jesse Gross <jesse@kernel.org> Acked-by: Ben Pfaff <blp@ovn.org>
* vswitchd: Add --dummy-numa command line option.Daniele Di Proietto2016-06-071-0/+6
| | | | | | | | | | | This option is used to initialize the ovs_numa module with a fake configuration and to avoid pthread_setaffinity_np() calls. It will be useful to test dpif-netdev with pmd threads. Since it is only used for testing it is not documented in the man pages. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Acked-by: Ilya Maximets <i.maximets@samsung.com>
* vswitch.xml: Document interface name length restrictions.Ben Pfaff2016-06-031-12/+47
| | | | | | Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Andy Zhou <azhou@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com>
* netdev-dpdk.c: Add ingress-policing functionality.Ian Stokes2016-05-241-2/+2
| | | | | | | | | | | | | | | | | This patch provides the modifications required in netdev-dpdk.c and vswitch.xml to enable ingress policing for DPDK interfaces. This patch implements the necessary netdev functions to netdev-dpdk.c as well as various helper functions required for ingress policing. The vswitch.xml has been modified to explain the expected parameters and behaviour when using ingress policing. The INSTALL.DPDK.md guide has been modified to provide an example configuration of ingress policing. Signed-off-by: Ian Stokes <ian.stokes@intel.com> Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
* ovs-thread: Do not quiesce in ovs_mutex_cond_wait().Daniele Di Proietto2016-05-231-0/+6
| | | | | | | | | | | | | | | ovs_mutex_cond_wait() is used in many functions in dpif-netdev to synchronize with pmd threads, but we can't guarantee that the callers do not hold RCU references, so it's better to avoid quiescing. In system_stats_thread_func() the code relied on ovs_mutex_cond_wait() to introduce a quiescent state, so explicit calls to ovsrcu_quiesce_start() and ovsrcu_quiesce_end() are added there. Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com> Tested-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Ben Pfaff <blp@ovn.org>
* Add support for extended netdev statistics based on RFC 2819.mweglicx2016-05-061-12/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Implementation of new statistics extension for DPDK ports: - Add new counters definition to netdev struct and open flow, based on RFC2819. - Initialize netdev statistics as "filtered out" before passing it to particular netdev implementation (because of that change, statistics which are not collected are reported as filtered out, and some unit tests were modified in this respect). - New statistics are retrieved using experimenter code and are printed as a result to ofctl dump-ports. - New counters are available for OpenFlow 1.4+. - Add new vendor id: INTEL_VENDOR_ID. - New statistics are printed to output via ofctl only if those are present in reply message. - Add new file header: include/openflow/intel-ext.h which contains new statistics definition. - Extended statistics are implemented only for dpdk-physical and dpdk-vhost port types. - Dpdk-physical implementation uses xstats to collect statistics. - Dpdk-vhost implements only part of statistics (RX packet sized based counters). Signed-off-by: Michal Weglicki <michalx.weglicki@intel.com> [blp@ovn.org made software devices more consistent] Signed-off-by: Ben Pfaff <blp@ovn.org>
* netdev-dpdk: Allow arbitrary eal argumentsAaron Conole2016-04-291-0/+11
| | | | | | | | | | | | | | | | | | | A previous change moved some commonly used arguments from commandline to the database, and with it the ability to pass arbitrary arguments to EAL. This change allows arbitrary eal arguments to be provided via a new db entry 'other_config:dpdk-extra' which will tokenize the string and add it to the argument list. The only argument which will not be supported with this change is '--no-huge', which appears to break the system in other ways. Signed-off-by: Aaron Conole <aconole@redhat.com> Tested-by: Sean K Mooney <sean.k.mooney@intel.com> Tested-by: RobertX Wojciechowicz <robertx.wojciechowicz@intel.com> Tested-by: Kevin Traynor <kevin.traynor@intel.com> Acked-by: Panu Matilainen <pmatilai@redhat.com> Acked-by: Kevin Traynor <kevin.traynor@intel.com> Acked-by: Flavio Leitner <fbl@sysclose.org> Acked-by: Daniele Di Proietto <diproiettod@vmware.com>