[ovs-dev] [PATCH 5/5] lib/netdev-dpdk: copy large packet to multi-segment mbufs

2017-06-18 Thread Michael Qiu
From: Michael Qiu Currently, one packet is only copied to one segment in function dpdk_do_tx_copy(), this could be an issue when a jumbo frame comes, especially for multiple segments. This patch calculate the segment number needed by the packet and copy the data to

[ovs-dev] [PATCH 4/5] lib/dp-packet: copy multi-segments data from DPDK mbuf

2017-06-18 Thread Michael Qiu
From: Michael Qiu When doing packet clone, if packet source is from DPDK driver, multi-segment must be considered, and copy the segment's data one by one. Signed-off-by: Michael Qiu --- lib/dp-packet.c | 27 --- 1 file changed,

[ovs-dev] [PATCH 2/5] lib/dp-packet: copy additional packet info when do packet copy

2017-06-18 Thread Michael Qiu
From: Michael Qiu Currently, when doing packet copy, lots of DPDK mbuf's info will be missed, like packet type, ol_flags, etc. Those information is very important for DPDK to do packets processing. Signed-off-by: Michael Qiu --- lib/dp-packet.c | 3

[ovs-dev] [PATCH 0/5 v3] DPDK multi-segment mbuf support

2017-06-18 Thread Michael Qiu
From: Michael Qiu Currently, OVS only support DPDK single segment mbuf, it could lead problems, like a large non-DPDK source packet transmit to dpdk port. Also, OVS doesn't copy enough info in mbuf when do packet copy. At the same time, vlan and tunnelling packet's DPDK

Re: [ovs-dev] [PATCH v2 02/12] openvswitch.h: Use odp_port_t for port numbers in userspace-only structs.

2017-06-18 Thread nickcooper-zhangtonghao
Reviewed-by: nickcooper-zhangtonghao > On Jun 19, 2017, at 7:29 AM, Ben Pfaff wrote: > > Using the correct type reduces the need for type conversions. > > Signed-off-by: Ben Pfaff > > --- >

Re: [ovs-dev] [PATCH v2 01/12] ofp-util: Remove prototype for unimplemented function.

2017-06-18 Thread nickcooper-zhangtonghao
Reviewed-by: nickcooper-zhangtonghao > On Jun 19, 2017, at 7:29 AM, Ben Pfaff wrote: > > Signed-off-by: Ben Pfaff > > --- > include/openvswitch/ofp-util.h | 2 -- > 1 file changed, 2 deletions(-) > > diff --git

Re: [ovs-dev] [PATCH v2 00/12] Packet type aware pipeline

2017-06-18 Thread Ben Pfaff
On Mon, Jun 19, 2017 at 07:29:29AM +0800, Ben Pfaff wrote: > This series is based on Zoltan Balogh's series here: > https://patchwork.ozlabs.org/patch/770490/ > https://patchwork.ozlabs.org/patch/770487/ > https://patchwork.ozlabs.org/patch/770495/ > https://patchwork.ozlabs.org/patch/770498/ >

[ovs-dev] [PATCH v2 11/12] userspace: Introduce packet_type in OF 1.5 packet-out

2017-06-18 Thread Ben Pfaff
From: Zoltán Balogh Introducing packet_type in OF 1.5 packet-out. Partly based on Jean Tourrilhes's work. Add test cases for OF1.5 packet-out Add negative test case for OF1.5 packet-out Modify wildcarding and packet-out test printout. Signed-off-by: Jean Tourrilhes

[ovs-dev] [PATCH v2 07/12] userspace: Add OXM field MFF_PACKET_TYPE

2017-06-18 Thread Ben Pfaff
From: Jan Scheurich Allow packet type namespace OFPHTN_ETHERTYPE as alternative pre-requisite for matching L3 protocols (MPLS, IP, IPv6, ARP etc). Change the meta-flow definition of packet_type field to use the new custom format MFS_PACKET_TYPE representing

[ovs-dev] [PATCH v2 06/12] nx-match: Add context argument to nxm_put__().

2017-06-18 Thread Ben Pfaff
An upcoming commit will need to pass an extra piece of data from nx_put_raw() into all of its direct and indirect calls to nxm_put__(). This commit prepares for that by switching from a "struct ofpbuf *" parameter to a context structure that, currently, contains just a struct ofpbuf *. The

[ovs-dev] [PATCH v2 08/12] userspace: Handling of versatile tunnel ports

2017-06-18 Thread Ben Pfaff
In netdev_gre_build_header(), GRE protocol and VXLAN next_potocol is set based on packet_type of flow. If it's about an Ethernet packet, it is set to ETP_TYPE_TEB. Otherwise, if the name space is OFPHTN_ETHERNET, it is set according to the name space type. Signed-off-by: Jan Scheurich

[ovs-dev] [PATCH v2 05/12] ofpbuf: New function ofpbuf_insert().

2017-06-18 Thread Ben Pfaff
This will receive its first users in an upcoming commit. Signed-off-by: Ben Pfaff --- include/openvswitch/ofpbuf.h | 1 + lib/ofpbuf.c | 18 ++ 2 files changed, 19 insertions(+) diff --git a/include/openvswitch/ofpbuf.h

[ovs-dev] [PATCH v2 02/12] openvswitch.h: Use odp_port_t for port numbers in userspace-only structs.

2017-06-18 Thread Ben Pfaff
Using the correct type reduces the need for type conversions. Signed-off-by: Ben Pfaff --- datapath/linux/compat/include/linux/openvswitch.h | 4 ++-- lib/dpif-netdev.c | 2 +- lib/netdev.c | 2 +-

[ovs-dev] [PATCH v2 03/12] ovs-dpctl: New --names option to use port names in flow dumps.

2017-06-18 Thread Ben Pfaff
Until now, printing names in "ovs-dpctl dump-flows" was tied to the overall output verbosity, which in practice meant that to see port names a user had to see a distracting amount of verbosity. This decouples names from verbosity. I'd like to make showing names the default for interactive usage,

[ovs-dev] [PATCH v2 01/12] ofp-util: Remove prototype for unimplemented function.

2017-06-18 Thread Ben Pfaff
Signed-off-by: Ben Pfaff --- include/openvswitch/ofp-util.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/include/openvswitch/ofp-util.h b/include/openvswitch/ofp-util.h index bbf6ffec5dd3..07723b427ce8 100644 --- a/include/openvswitch/ofp-util.h +++

[ovs-dev] [PATCH v2 00/12] Packet type aware pipeline

2017-06-18 Thread Ben Pfaff
This series is based on Zoltan Balogh's series here: https://patchwork.ozlabs.org/patch/770490/ https://patchwork.ozlabs.org/patch/770487/ https://patchwork.ozlabs.org/patch/770495/ https://patchwork.ozlabs.org/patch/770498/ https://patchwork.ozlabs.org/patch/770488/

[ovs-dev] Darlehen Angebot bei 2% pro Jahr

2017-06-18 Thread William Investment LLC
Wir bieten Darlehensfonds zu einem Jahreszins von 2% an. Es gibt keine Bonitätsprüfung Geschichte. Vertrauen Sie uns mit allen Arten von Darlehen umzugehen. Interessierte Kandidaten sollten uns heute für ihre schnelle Online-und leichte Darlehen und keine Sicherheiten Einlagen kontaktieren.

[ovs-dev] [PATCH 1/2] checkpatch: Suggest ovs_assert() to author.

2017-06-18 Thread Bhanuprakash Bodireddy
Suggest the author to use the OVS wrapper of the assert function. Signed-off-by: Bhanuprakash Bodireddy --- utilities/checkpatch.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py index b45a255..304d2fd

[ovs-dev] [PATCH 5/6] netdev-dpdk: Add netdev_dpdk_vhost_txq_flush function.

2017-06-18 Thread Bhanuprakash Bodireddy
Add netdev_dpdk_vhost_txq_flush(), that flushes packets on vHost User port queues. Also add netdev_dpdk_vhost_tx_burst() function that uses rte_vhost_enqueue_burst() to enqueue burst of packets on vHost User ports. Signed-off-by: Bhanuprakash Bodireddy

[ovs-dev] [PATCH 6/6] netdev-dpdk: Enable intermediate queue for vHost User port.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit refactors the __netdev_dpdk_vhost_send() and enables intermediate queue where in the packets are buffered till the threshold 'INTERIM_QUEUE_BURST_THRESHOLD[32] is hit and eventually gets transmitted. This commit improves the throughput as reported below in simple Physical to virtual

[ovs-dev] [PATCH 4/6] dpif-netdev: Flush the packets in intermediate queue.

2017-06-18 Thread Bhanuprakash Bodireddy
Under low rate traffic conditions, there can be 2 issues. (1) Packets potentially can get stuck in the intermediate queue. (2) Latency of the packets can increase significantly due to buffering in intermediate queue. This commit handles the (1) issue by flushing the tx port queues from

[ovs-dev] [PATCH 3/6] netdev-dpdk: Add intermediate queue support.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit introduces netdev_dpdk_eth_tx_queue() function that implements intermediate queue and packet buffering. The packets get buffered till the threshold 'INTERIM_QUEUE_BURST_THRESHOLD[32] is reached and eventually gets transmitted. To handle the case(eg: ping) where packets are sent at low

[ovs-dev] [PATCH 2/6] netdev-dpdk: Add netdev_dpdk_txq_flush function.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds netdev_dpdk_txq_flush() function. If there are any packets waiting in the queue, they are transmitted instantly using the rte_eth_tx_burst function. In XPS enabled case, lock is taken on the tx queue before flushing the queue. Signed-off-by: Bhanuprakash Bodireddy

[ovs-dev] [PATCH 1/6] netdev: Add netdev_txq_flush function.

2017-06-18 Thread Bhanuprakash Bodireddy
Add netdev_txq_flush(), that flush packets on a queue. This is needed to transmit packets on the intermediate queue. Signed-off-by: Bhanuprakash Bodireddy Signed-off-by: Antonio Fischetti Co-authored-by: Antonio Fischetti

[ovs-dev] [PATCH 0/6 V2] netdev-dpdk: Use intermediate queue during packet transmission.

2017-06-18 Thread Bhanuprakash Bodireddy
After packet classification, packets are queued in to batches depending on the matching netdev flow. Thereafter each batch is processed to execute the related actions. This becomes particularly inefficient if there are few packets in each batch as rte_eth_tx_burst() incurs expensive MMIO writes.

[ovs-dev] [RFC PATCH v3 17/18] keepalive: Display extended Keepalive status.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds support to display the extended keepalive status. The status can be displayed as follows. $ ovs-appctl keepalive/pmd-xstats-show keepAlive Status : Enabled keepAlive Interval: 1000 ms pmd64 PMD core_id : 0 PMD thread id : 1269 [ACTIVE]

[ovs-dev] [RFC PATCH v3 16/18] netdev-dpdk: Enable PMD health checks on heartbeat failure.

2017-06-18 Thread Bhanuprakash Bodireddy
The keepalive thread sends heartbeats to PMD thread and when PMD fails to respond to successive heartbeats the PMD is potentially stalled. The PMD state transition is as below: ALIVE -> MISSING -> DEAD -> GONE This commit enables PMD healthchecks when PMD doesn't respond to heartbeats. This is

[ovs-dev] [RFC PATCH v3 14/18] keepalive: Check the packet statistics as part of PMD health checks.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds the support to check the packet statistics on the port polled by PMD thread. If the packets aren't processed due to PMD thread stall/deadlock the statistics wont update and this can be used by monitoring framework to confirm PMD failure. This mechanism has limitation with MQ

[ovs-dev] [RFC PATCH v3 15/18] keepalive: Check the PMD cycle stats as part of PMD health checks.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds the support to check the PMD cycle stats. If the cycles aren't changing for a duration of time this can be flagged as possible PMD stall. Signed-off-by: Bhanuprakash Bodireddy --- lib/dpif-netdev.c | 16 +--- lib/dpif-netdev.h | 6

[ovs-dev] [RFC PATCH v3 13/18] keepalive: Check the link status as part of PMD health checks.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds the initial support in to performing PMD health checks. The ports handled by the PMD threads are checked for the link status and the same is updated in to keepalive info structure. Signed-off-by: Bhanuprakash Bodireddy --- lib/dpif-netdev.c |

[ovs-dev] [RFC PATCH v3 12/18] dpif-netdev: Add additional datapath health checks.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit enables additional datapath health checks. The checks are enabled only on a PMD heartbeat failure. On missing three successive heartbeats additional health checks needs to be performed on respective PMD thread to confirm the failure. The datapath health is monitored periodically from

[ovs-dev] [RFC PATCH v3 11/18] keepalive: Add support to query keepalive status.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds support to query if keepalive status is enabled/disabled. $ ovs-appctl keepalive/status keepAlive Status: Enabled Signed-off-by: Bhanuprakash Bodireddy --- lib/keepalive.c | 15 +++ 1 file changed, 15 insertions(+) diff

[ovs-dev] [RFC PATCH v3 10/18] keepalive: Add support to query keepalive statistics.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds support to query keepalive statistics. Datapath health status can be retrieved as follows: $ ovs-appctl keepalive/pmd-health-show Keepalive status keepalive status : Enabled keepalive interval: 1000 ms PMD threads : 8 PMDCORESTATE

[ovs-dev] [RFC PATCH v3 09/18] bridge: Update keepalive status in OVSDB

2017-06-18 Thread Bhanuprakash Bodireddy
This commit allows vswitchd thread to update the OVSDB with the status of all registered PMD threads. The status can be monitored using ovsdb-client and the sample output is below. $ ovsdb-client monitor Open_vSwitch Open_vSwitch keepalive rowaction keepalive

[ovs-dev] [RFC PATCH v3 08/18] keepalive: Retrieve PMD status periodically.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit implements APIs to retrieve the PMD thread status and return the status in the below format for each PMD thread. Format: PMDID="STATUS,core id,last_seen_timestamp" eg: PMD62="ALIVE,2,9220698256784207" PMD63="GONE,3,9220698256786231" The status is periodically

[ovs-dev] [RFC PATCH v3 06/18] dpif-netdev: Register packet processing cores to KA framework.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit registers the packet processing PMD cores to keepalive framework. Only PMDs that have rxqs mapped will be registered and actively monitored by KA framework. This commit spawns a keepalive thread that will dispatch heartbeats to PMD cores. The pmd threads respond to heartbeats by

[ovs-dev] [RFC PATCH v3 07/18] dpif-netdev: Enable heartbeats for DPDK datapath.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds heartbeat mechanism support for DPDK datapath. Heartbeats are sent to registered PMD threads at predefined intervals (as set in ovsdb with 'keepalive-interval'). The heartbeats are only enabled when there is atleast one port added to the bridge and with active PMD thread polling

[ovs-dev] [RFC PATCH v3 05/18] dpif-netdev: Add helper function to store datapath tids.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit adds an API to store the PMD thread ids in to KA info struct. The thread ids shall be used to check false positives and for status and statistics reporting. Signed-off-by: Bhanuprakash Bodireddy --- lib/dpif-netdev.c | 3 +++ lib/keepalive.c | 13

[ovs-dev] [RFC PATCH v3 04/18] keepalive: Add more helper functions to KA framework.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit introduces helper functions in 'keepalive' module that are needed to register/unregister PMD threads to KA framework. Also introduce APIs to mark the PMD core states. Signed-off-by: Bhanuprakash Bodireddy --- lib/keepalive.c | 49

[ovs-dev] [RFC PATCH v3 03/18] Keepalive: Add initial keepalive support.

2017-06-18 Thread Bhanuprakash Bodireddy
This commit introduces the initial keepalive support by adding 'keepalive' module and also helper and initialization functions that will be invoked by later commits. This commit adds new ovsdb column "keepalive" that shows the status of the datapath threads. This is implemented for DPDK datapath

[ovs-dev] [RFC PATCH v3 01/18] dpdk: Add helper functions for DPDK datapath keepalive.

2017-06-18 Thread Bhanuprakash Bodireddy
Introduce helper functions in 'dpdk' module that are needed for DPDK keepalive functionality. Also add dummy functions in 'dpdk-stub' module that are needed when DPDK datapath is not available. Signed-off-by: Bhanuprakash Bodireddy --- lib/dpdk-stub.c | 24

[ovs-dev] [RFC PATCH v3 02/18] process: Add helper functions to retrieve process related info.

2017-06-18 Thread Bhanuprakash Bodireddy
Implement helper functions to retrieve the process status, name and last core the process was scheduled. The APIs will be used by keepalive monitoring framework in future commits. Signed-off-by: Bhanuprakash Bodireddy --- lib/process.c | 152

[ovs-dev] [RFC PATCH v3 00/18] Add OVS DPDK keep-alive functionality

2017-06-18 Thread Bhanuprakash Bodireddy
Keepalive feature is aimed at achieving Fastpath Service Assurance in OVS-DPDK deployments. It adds support for monitoring the packet processing cores(PMD thread cores) by dispatching heartbeats at regular intervals. Incase of heartbeat misses additional health checks are enabled on the PMD thread