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
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,
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
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
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 >
> ---
>
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
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/
>
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
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
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
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
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
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 +-
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,
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
+++
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/
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.
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
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
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
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
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
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
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
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.
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]
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
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
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
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 |
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
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
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
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
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
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
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
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
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
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
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
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
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
43 matches
Mail list logo