Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
When doing latency measurements PROX takes into account the
generation or reception of a bulk of packets. For instance, if
PROX receives at time T 4 packets, it knows that the first
packet was received by te NIC before T (the time to receive the other
3 packets, as they were received at maximum link speed).
So the latency data is decreased by the minimum time to receive those
3 packets.
For this PROX was using a default link speed of 10Gbps. This is wrong
for 1Gbps and 40Gbps networks, and was causing for instance issues
on 40 Gbps networks as extrapolating too much, resulting in either
too low latencies or negative numbers (visible as very high latencies).
Change-Id: I4e0f02e8383dd8d168ac50ecae37a05510ad08bc
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
irq mode can be used to show how a core is interrupted by other tasks.
This mode does not handle packets. It only loops reading tsc.
When the difference between two consecutive calls to rdtsc() is high
then it means the core was interrupted.
This task implementes the display, so that we can see a histogram of
interrupts as well as the maximum, per core.
Command line is also supported, through "show irq buckets" (too show
the intervals of each buckets, in micrcoseconds), and the stats
command line (showing the number of items in each buckets and the max)..
Change-Id: I153cc3deaa7b86ae2776ea44e46ef9ecfd116992
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
There were two issues identified in dump receive packets
- when the receive packets was going to be dropped (and not transmitted),
it was also printed as TX[255].
- a potential crash when using the dump function with modes like
lat which can receive more than MAX_RING_BURST.
Those issues have been fixed.
Change-Id: Ia2297539d64961a211389d68e3c9c6280472243c
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
When doing latency measurements the generator can add a
32 bits signature in the packet at a specific location,
so that the receiver only uses the packets generated by the
generator and ignores packets generated for instance by a switch
The is particuly important for latency measurements as we use
data in the packets as timestamps, and packets generated elsewhere
would result in random latency for those packets.
Change-Id: I8352b35aff76ec8d1344a1e492b9dcc20a53f1ce
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
PROX can stack different RX functions, so that they are executed
after each other.
This feature is for instance used to dump packets or to print
distribution of receive packets, without influencing the performance
of the rx functions when no dump or print is needed.
The previous implementation was wrong and causing some of the stacked
functions not to be executed. This was causing for instance issues
in latency measurement after enabling dumping packets.
Change-Id: I766b8ee8e8852fa17cdaf60ee6e1fec0dc98c719
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
Change-Id: I9ef89020d203674f6c3301653ab2ff9d623665b6
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
L2fwd and swap has many options to set src mac. swap was supposed
to support the ability to use port mac, but config file parsing was
wrong. L2fwd was using port mac if a port was available and if
src mac=packet or if there was no src mac in the config.
Now l2fwd supports the following options
- "src mac=xx:xx:xx:xx:xx:xx" => this mac address is used as src mac.
- "src mac=packet" => the src mac is taken from the dst mac of the
received packet.
- "src mac=hw" => the src mac is taken from the mac address of the port,
if there is a physical port. Error otherwise.
- "src mac=no" => src mac kept untouched
- No "src mac" => same as "src mac=hw" if there is a physical port
and same as "src mac=packet" otherwise.
Default is (no "src mac") hence the mac is taken from the tx port if there
is one tx port and from the packet otherwise.
swap support is similar, except that it does not support "src mac=no".
Change-Id: I70fe49a61c2e85772288b769ede14a7a6205d122
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Change-Id: I5611ead4b61b23d6c1c983852e8c75619e08ecf9
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
As it was non being initialized, fragment offset was sometimes non null.
prox_ip_cksum_sw (as well as prox_ip_cksum_hw) require the hdr_checksum
field to be initialized to 0.
Change-Id: I3824682023782edb555982e558e5ae68062c3c9b
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
When multiple tasks generate to the same ip in l3 mode (i.e. with arp
support), all those tasks generate arp requests. we need to make sure
that they all receive a arp-reply i.e. that the master broadcast
the reply to all those cores.
Change-Id: I7e89196497a1016a94dde167f212b1f6ed03bcfe
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
This adds support for tasks in l3 submode receiving from ports but
transmitting to rings.
ARP related information is exchanged between tasks through master core.
Tasks transmitting to physical ports are responsible to transmit arp
related packets. Tasks not transmitting to physical ports (and using
rings) should not try to transmit arp packets. Transmitting arp
packets through ring would be more complex, as we would need extra information
(within the mbuf) to distinguish for instance an arp reply comoing from the
network and an arp reply coming from a core (as a reply to an arp request).
Change-Id: Ib55dc8c39d5e55703a933faa16bcc008f1274929
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Using now .test files describing the test to be executed.
Also desribed in the README file how to deal with SRIOV ports.
Change-Id: I3eb1551d7f205fef3fa1914bc6959c2126d63425
Signed-off-by: Provoost <luc.provoost@intel.com>
|
|
|
|
|
|
Packets dropped by QoS (because queues were full) were erroneously
shown as idle cycles. There aee now shown as discarded packets.
Change-Id: I01a619de621a3dfbfe11cabef257f9dec311e208
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Different checks were done when setting the generator pkt_size.
In case of wrong pkt_size (e.g. too big) an error was printed but
the pkt_size was still set causing a potential corruption.
In addition, in case of a packet size incompatible with some
of the packet fields (e.g. latency data) PROX was panicing
while this should not happen runtime for such an error.
Change-Id: Ifa11475bf295aaac7b0255c1bf9b5feed8ef90c4
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Command parser could have been crashing if a wrong core/task was
used in pkt_size command. For some other commands both an error
and a warning were printed in case of errors.
Change-Id: I6648bfca1b5bcde3c6393d49687ed84900326d49
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
reapply the latest changes (47355 and 47521) due to gerrit merge problem
* fix crypto init for both encryptor and decryptor
* improve performance: preallocate crypto op memory in init
* finalize enabling routed ipsec traffic (proper IP/MAC addresses)
* correct handling of dropped packets at encryptor
* Fix receive packets with size > 1024 bytes
Change-Id: I51cccc9bef0b9564ea1a3465ad28fb985eee06d1
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
Change-Id: I4ea54763871c18b1bd6cec9dbb926f18f0f5833f
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
|
|
* fix traffic routing
* enqueue packets in a bulk (improve crypto performance: TBD)
* improve code clarity
* fix crypto dequeuing
* complete decryption path implementation
* NOTE: the code works in a chain mode; crypto init to be fixed next
Change-Id: I058a906f4f4f5691ebf25d2cdf5b5faded88e11d
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
The l3 submode was not supported in nop mode, as the nop mode uses some
specific nop thread (and not generic). When L3 is specified, the nop mode
must use the generic thread. In addition the l3 submode is implemented
differently than other submodes. It is not supported through task_init
structures (i.e. each task does not have to explicitely tell that it
supports l3 submode). But this prevented to run both a nop with no submode
and a nop with a l3 submode. Note that nop with l3 is usually not very useful
- it handles arp (requests and response) but as nop, it does not swap IP
addresses. So with a real switch, the packets transmitted will be received
back... and l3 mode is usually mainly usefull when using a switch.
However, there is at least one nop mode where l3 submode makes sense:
when the nop does not transmit. In such cases, for instace used in
conjunction with a gen l3, the nop receives all packets and forward
the arp requests and responses to the master for handling.
Change-Id: I992121db285ba25a11cbb494092a6afc6fe55a58
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
Change-Id: I9c46b57f98b566efc8ca3ea5966befe2a150315b
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Change-Id: I7797241a1d384fa184bdf4d73b81babb21f7383d
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
In lwAFTR (ipv6 de-encapsulate) the generated ipv4 packet requires an IP
checksum, otherwise this packet is dropped in Openstack. (Openstack is
much stricter than baremetal) Some fields in the header need to be
initialized.
Add flag in Makefile which when enabled will build to include the generate
the IP checksum in the build. FLAG = GEN_DECAP_IPV6_TO_IPV4_CKSUM=y
Not include in default build.
Change-Id: If94e7cff64b03c66362021f05e48fb9265fc8210
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
- Adjust handle functions to PROX-v035+ prototype, returning 0 when all
packets have been handled.
- Because cryptodev API was modified in DPDK 17.08, many changes would
be necessary to support it. For the moment, just exclude handle_esp.c
from PROX build when using DPDK 17.08+, which will be supported later.
- Cleanup:
- consistent use of PROX_PANIC to cleanly fail on errors
- consistent use of OUT_DISCARD to drop unhandled packets
- remove "__attribute__((unused))" when parameter is actually used
- remove unused defines, fields and variables
Change-Id: I10d84fa184a866b4a5f87272875612aace5dd5b1
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
Change-Id: Ie6d4e7ce22c27967117a446626f5923643397812
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
Change-Id: I389389e5317d1a9d0d79cc1762d6f15d8287e36a
Signed-off-by: Alexander Komarov <alexander.komarov@intel.com>
Signed-off-by: Alexander Komarov <izard.ak@gmail.com>
|
|
Change-Id: I25ab50297cd7d2f80a5206ddc3c55ffad36bd8d8
Signed-off-by: Alexander Komarov <alexander.komarov@intel.com>
Signed-off-by: Alexander Komarov <izard.ak@gmail.com>
|
|
Change-Id: Id9c22f92955b64242971ff768a64132451c8350e
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
The split of the scripts is documented in the README file. The VM also
runs now devbind.sh with the proper MAC address to bind the dataplane
interface with the DPDK poll mode driver.
Change-Id: I3e7a6235379dc80530934376c7799ac3396b5325
Luc Provoost <luc.provoost@intel.com>
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
Change-Id: I65e8b2d1cea2a1edfa738671e460b6a0170d3363
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
Currently packets generated with IP addresses 10.1.1.x when handled
by 5 Tuple Load Balancer are discarded/dropped. These addresses are
outhside the range of the hash algorithm.
Change-Id: Idf2cea0ff299a3fa75554f0d103e13391eae02fa
Signed-off-by: Daniel Martin Buckley <daniel.m.buckley@intel.com>
|
|
JIRA: SAMPLEVNF-55
PROX is a DPDK-based application implementing Telco use-cases such as
a simplified BRAS/BNG, light-weight AFTR... It also allows configuring
finer grained network functions like QoS, Routing, load-balancing...
(We are moving PROX version v039 to sampleVNF
https://01.org/intel-data-plane-performance-demonstrators/prox-overview)
Change-Id: Ia3cb02cf0e49ac5596e922c197ff7e010293d033
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|