50 Commits

Author SHA1 Message Date
c3148b1be8 misc: remove GNU Indent directives
Type: refactor
Change-Id: I5235bf3e9aff58af6ba2c14e8c6529c4fc9ec86c
Signed-off-by: Damjan Marion <damarion@cisco.com>
2024-03-12 19:29:56 +00:00
6cb7273949 flow dpdk avf: add support for using l2tpv3 as RSS type
This patch adds support for using l2tpv3 as RSS type

Type: feature
Signed-off-by: Xinyao Cai <xinyao.cai@intel.com>
Change-Id: Ic3e0935a4754d084184f1cc38ea9531ddfd9e7bc
2023-10-01 21:17:07 +00:00
9c7e033488 flow: mark API as production
As per discussion on the VPP call - since the APIs are used
in CSIT tests, mark them as production from the change process
perspective.

Type: improvement
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
Change-Id: I9164073425384e8aa281445a2852fee49b777e2f
2023-09-13 16:05:55 +00:00
24d7e72aa5 flow: fix wrong to use ntohl function to u64 type variable
This caused that failed to create flow rule with rss types.

Type: fix

Signed-off-by: Yulong Pei <yulong.pei@intel.com>
Change-Id: I77696286a32804cbe884075cb027eec19eb5c7cb
Signed-off-by: Yulong Pei <yulong.pei@intel.com>
2023-05-16 09:27:16 +00:00
39d7699c20 api: Mark old message versions as deprecated
This change is part of VPP API cleanup initiative.

Type: refactor
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Change-Id: I26d13a697c9b70a75555c04e925e9d6aaf7ed755
2023-04-25 15:27:41 +00:00
99d3a40543 flow dpdk: introduce IP in IP support for flow
This patch introduces IP in IP packet support for flow cli and dpdk plugin.
Specifically, the following IP in IP packet types are supported:
	MAC-IPv4-IPv4-TCP/UDP/None,
	MAC-IPv4-IPv6-TCP/UDP/None,
	MAC-IPv6-IPv4-TCP/UDP/None,
	MAC-IPv6-IPv6-TCP/UDP/None,

IP in IP flow rules can be created by using the following new keywords in vppctl:
	in-src-ip, in-dst-ip        : to provide information for inner IPv4 header
	in-ip6-src-ip, in-ip6-dst-ip: to provide information for inner IPv6 header
	in-proto                    : to specify inner transport layer protocol type (TCP or UDP)
	in-src-port, in-dst-port    : to provide information for inner TCP/UDP header

An example to create flow rule for MAC-IPv6-IPv6-TCP:
	test flow add index 0 ip6-src-ip any ip6-dst-ip any in-ip6-src-ip any in-ip6-dst-ip any in-proto tcp in-src-port 1234 in-dst-port any rss function default

Another example to create flow rule for MAC-IPv6-IPv6:
	test flow add index 0 ip6-src-ip any in-ip6-src-ip any rss function default

Type: feature

Signed-off-by: Xinyao Cai <xinyao.cai@intel.com>
Change-Id: I6a1ca36d47eb65b9cb5a4b8d874b2a7f017c35cd
2023-03-06 16:46:17 +00:00
337960b8a4 flow: support generic flow and RSS action in vapi
Add generic flow type and rss action type to vapi. It is to support
creating generic flow rule via vapi.

Type: feature

Signed-off-by: Ting Xu <ting.xu@intel.com>
Change-Id: Ifeaa007679487e02bd2903dc591d80a1caba33bc
2022-05-24 14:04:41 +00:00
b95e6d4e75 flow: enable RSS queue group action for 5G enhancement
Enable the flow action for RSS queue group. Packets can be distributed
among queues in group based on specific fields. Queues must be continous
in the group. This feature is to support 5G enhancement requirement.

Type: feature

Signed-off-by: Ting Xu <ting.xu@intel.com>
Change-Id: I74fdc617659bcb61f00b3b1934c95ab1c73bb8f3
2022-04-26 15:45:07 +00:00
3a36682017 flow: add generic flow pattern for 5G flow enhancement
In order to support the requirement of RSS and packet steering of new
protocols, such as GTPU PDU-type and QFI, for 5G UPF, a generic pattern
is introduced in vnet flow. The generic flow pattern is based on DDP
(Dynamic Device Personalization) function and Parser Library module in
DPDK. Using generic flow pattern, we do not need to create new packet
and field type and offset in API parser for every new protocols. We can
create flows for any protocol immediately as long as supported by DDP.
The generic flow can be used to support 5G related protocols in
different scenarios.

The input of this generic pattern are two binary strings for spec and
mask. Spec is the binary presentation of the target packet type, and
mask is used to mark the target fields.

In this patch DPDK plugins is enabled for POC. Next step we will enable
generic flow in native IAVF, which is the main target.

Here is an example. If we want to create a flow for GTPU QFI,
spec is:
00000000000100000000000208004500003C00000000001100000101010102020202000
008680028000034FF001C00000000000000850100010045000014000000000000000001
01010102020202
mask is:
00000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000007F0000000000000000000000000000
00000000000000

A naming API POC is created via VAPI to help create the rule with
the target packet format similar to Scapy. It is based on a function
module called PacketForge. In this way, the user no need to create
binary string spec and mask by themselves.

Type: feature

Signed-off-by: Ting Xu <ting.xu@intel.com>
Change-Id: Id3444f95c158bdcdfeeee19d795cd9ecbeeec07c
2022-03-15 16:15:19 +00:00
f7040f01a5 tcp: Do not include the tcp_packet.h file in the ip4_packet.h
Type: refactor

IP4 does not depend on TCP (it's the other way around).
This upside down dependency leads to some nasty circular includes when trying to use ip46_address.h in interface.h

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I4a1bd21543b08b9c1cf1e5563da738414734a878
2022-02-15 09:02:27 +00:00
da6520b4ed flow: add esp spi rss type
Type: feature

This patch adds IPsec ESP SPI as RSS key for better IPsec
inbound processing scaling. With this feature enabled,
The NIC will use the packets' SPI index as the RSS key
to distribute them to different queues.

The dpdk-input is also updated to support this feature.

Sample CLI command to enable Ipsec ESP SPI as RSS key:

test flow add src-ip any dst-ip any rss types esp
test flow enable eth0 index 0

Signed-off-by: Piotr Bronowski <piotrx.bronowski@intel.com>
Signed-off-by: Gabriel Oginski <gabrielx.oginski@intel.com>
Change-Id: I8b7d01cfc065e9099fad33042ce76898e16ddbf0
2021-08-31 15:24:33 +00:00
b7e4d4487c misc: remove vnet_all_api_h and vnet_msg_enum
These file are no longer needed

Type: improvement

Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Change-Id: I34f8e0b7e17d9e8c06dcd6c5ffe51aa273cdec07
2021-07-13 19:27:22 +00:00
9597f08f57 flow: api cleanup
Use autogenerated code

Type: improvement

Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
Change-Id: I02f53486723f7ac7e9026ff092b63e86dff13232
2021-06-21 10:59:35 +00:00
ee32d66802 flow: fix vxlan vni convert bug
This patch fixes a vxlan vni field conversion bug in flow api layer

Type: fix

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I37b2ffb54792f48b390ff42da577db2c4869d253
2021-05-12 08:45:08 +00:00
c7e7819ad5 flow: Add API implementation of IP4/IP6, IP4_VXLAN/IP6_VXLAN
This patch adds the API handler implementation of the below flows:
    FLOW_TYPE_IP4,
    FLOW_TYPE_IP6,
    FLOW_TYPE_IP4_VXLAN,
    FLOW_TYPE_IP6_VXLAN

Type: feature

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I62e1c466b46f940180e957c859d122086aa22f1c
2021-04-22 14:44:10 +00:00
91f102ed84 flow: The type of vni in VxLAN flow should be u32
Type: fix

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I40732dfb4fee4a5cfd699a8badea13d070f6b367
2021-04-14 10:26:07 +00:00
b2c31b685f misc: move to new pool_foreach macros
Type: refactor
Change-Id: Ie67dc579e88132ddb1ee4a34cb69f96920101772
Signed-off-by: Damjan Marion <damarion@cisco.com>
2020-12-14 12:14:21 +00:00
b040f98a88 misc: minimize dependencies on udp.h
Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Id13f33843b230a1d169560742c4f7b2dc17d8718
2020-10-21 10:56:34 +00:00
34bfa50b61 flow: code refactor
This is the code refactor for vnet/flow infra and the dpdk_plugin flow
implementation. The main works of the refactor are:
1. Added two base flow type: VNET_FLOW_TYPE_IP4 and VNET_FLOW_TYPE_IP6
   as the base the flow type
2. All the other flows are derived from the base flow types
3. Removed some flow types that are not currently supported by
   the hardware, and VPP won't leverage them either:
   IP4_GTPU_IP4, IP4_GTPU_IP6, IP6_GTPC, IP6_GTPU,
   IP6_GTPU_IP4, IP6_GTPU_IP6
4. Re-implemented the vnet/flow cli as well as the dpdk_plugin
   implementation
5. refine cli prompt
6. refine display info in command "show flow entry"

Type: refactor

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Ica5e61c5881adc73b28335fd83e36ec1cb420c96
2020-08-31 12:14:03 +00:00
d0236f725d flow: add vnet/flow formal API
This patch adds the API for vnet/flow infra.
Currently this API supports the below flow types:
    VNET_FLOW_TYPE_IP4_N_TUPLE
    VNET_FLOW_TYPE_IP6_N_TUPLE
    VNET_FLOW_TYPE_IP4_N_TUPLE_TAGGED
    VNET_FLOW_TYPE_IP6_N_TUPLE_TAGGED
    VNET_FLOW_TYPE_IP4_L2TPV3OIP
    VNET_FLOW_TYPE_IP4_IPSEC_ESP
    VNET_FLOW_TYPE_IP4_IPSEC_AH
    VNET_FLOW_TYPE_IP4_GTPU

All the above flows are tested with Intel E810/X710 NIC

Type: feature

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Icb8ae20cab9bdad6b120dddc3bd4fb1d85634f3f
2020-08-25 12:13:43 +00:00
d4c3666b9a flow: add IPSec ESP/AH flow
This patch adds the IPSec ESP/AH type flow support
Have tested on E810 with Intel iAVF driver

Type: feature

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I6ab8e69f67c423cc4e33f3c363881a97cdb98c30
2020-06-27 10:18:05 +00:00
8b43aaaf16 flow: add l2tpv3oip flow
This patch adds the l2tpv3oip type flow support
Have tested on E810 with Intel iAVF driver

Type: feature

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Icb5114b5f70dd7a63f681e7c6ac802fade8b8cf1
2020-04-30 15:37:15 +00:00
24e2c50bf3 flow: add RSS support
This patch enables the RSS configuration through vnet/flow interface
With this RSS feature, users can config the RSS functions for specific flows

Currently, it supports:
  default, toeplitz and symmetric_toeplitz rss function, and
  ipv4-tcp/ipv4-udp/ipv6-tcp/ipv6-ucp flow types

Users can use the following options to combine with above flow
types for more specific hash input set selection:
  l3-src-only, l3-dst-only, l4-src-only, l4-dst-only

Command line:
test flow add dst-ip any proto udp rss function default rss types ipv4-tcp use l3-dst-only
test flow add dst-ip any proto udp rss function toeplitz rss types ipv4-udp use l4-src-only
test flow add dst-ip any proto udp rss function symmetric_toeplitz rss types ipv6-udp use l3-src-only and l3-dst-only

Type: feature

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I213efc76dc8af37f2f63605884f353e05b0f5d2a
2020-04-28 21:13:50 +00:00
f13830ce76 flow: add vlan tagged types for IPv4/IPv6 5-tuple flows
Add new flow type IP4_N_TUPLE_TAGGED and IP6_N_TUPLE_TAGGED
for vlan tag sensitive flows
The original IP4_N_TUPLE and IP6_N_TUPLE will not match VLAN anymore

Type: feature
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Ie511e9a64126440fe81f29665a56ca060061662d
2020-03-04 14:26:06 +00:00
4ff8d615ca flow: add ethernet flow
Type: feature

This patch adds the ethernet type flow support

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I6de163d04c6472df60a5f296fb428efd000267c4
2019-12-17 18:10:57 +00:00
be2ad0b474 flow: fix several crash issues
Type: fix

This patch fixes crash issues(marked in brackets) in the below test cases

test flow enable index 0 1/1 -> [crash]
test flow disable index 0 1/1 -> [crash]

test flow add src-ip 192.168.8.8 proto udp redirect-to-queue 8
test flow enable index 0 1/1
test flow disable index 0 1/1 - [crash]

test flow add src-ip 192.168.8.8 proto udp redirect-to-queue 8
test flow enable index 0 1/1
test flow enable index 0 1/2
test flow del index 0 -> [crash]

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I84bc6faa3d93a2cab4c82e8a876a8b1067257b62
2019-11-26 13:27:36 +00:00
bf85a98fbf flow: Add GTP support
Type: feature

Adding:
	VNET_FLOW_TYPE_IP4_GTPC
	VNET_FLOW_TYPE_IP4_GTPU
	VNET_FLOW_TYPE_IP4_GTPU_IP4
	VNET_FLOW_TYPE_IP4_GTPU_IP6
	VNET_FLOW_TYPE_IP6_GTPC
	VNET_FLOW_TYPE_IP6_GTPU
	VNET_FLOW_TYPE_IP6_GTPU_IP4
	VNET_FLOW_TYPE_IP6_GTPU_IP6
in this patch

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I4ad53895b5ac0771432bb039b8c79e48e3c19f25
2019-11-20 17:34:48 +00:00
e8c9f4f1c0 flow: Add 'drop' and 'redirect-to-queue' actions support
Type: feature

Add 'drop' and 'redirect-to-queue' support in
'test-flow' command and DPDK plugin

Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: I567bb77cb401c9bd1309ecabe802fe9de88c746b
2019-10-16 18:34:51 +00:00
95eec06e9d Fix name of ipv6-n-tuple
Change-Id: Ia95a75295e4865b4720573f164ccba8bcc7679ae
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2019-01-08 21:21:14 +00:00
3ae2873e56 pcap-based dispatch tracer
To facilitate dispatch trajectory tracing, vlib_buffer_t decoding, etc.
through Wireshark

Change-Id: I31356b9fa1f40cba8830aaf10a86a9fbb7546438
Signed-off-by: Dave Barach <dave@barachs.net>
2018-11-17 18:30:33 +00:00
178cf493d0 Remove c-11 memcpy checks from perf-critical code
Change-Id: Id4f37f5d4a03160572954a416efa1ef9b3d79ad1
Signed-off-by: Dave Barach <dave@barachs.net>
2018-11-14 15:54:01 +00:00
b7b929931a c11 safe string handling support
Change-Id: Ied34720ca5a6e6e717eea4e86003e854031b6eab
Signed-off-by: Dave Barach <dave@barachs.net>
2018-10-23 13:06:46 +00:00
d3de756a8b flow:add enabled hw format function
Change-Id: Ide1f76e9207b6022d5258a119f8d59cca85651b5
Signed-off-by: Eyal Bari <ebari@cisco.com>
2018-06-04 14:27:52 +00:00
4b11d0316b flow:redirect to node
Change-Id: I4b6577b496c56f27f07dd0066fcfdfd0cebb6f1a
Signed-off-by: Eyal Bari <ebari@cisco.com>
2018-05-17 11:07:22 +00:00
a35cc14d37 vnet: device flow offload infra
Change-Id: Ibea4a96bdec5e368301a03d8b11a0712fa0265e0
Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-05-10 15:45:03 +00:00
a9855ef839 Flow: Rename IPFIX exporter.
Change-Id: I9363cf54b73f7cfd8622af6f1cb250438ea0d3b6
Signed-off-by: Ole Troan <ot@cisco.com>
2018-05-04 21:52:23 +00:00
dac03527f6 Refactor vlib_buffer flags
Change-Id: I853386aebfe488ebb10328435b81b6e3403c5dd0
Signed-off-by: Damjan Marion <damarion@cisco.com>
2018-02-07 15:07:51 +00:00
9d42087149 VPPAPIGEN: vppapigen replacement in Python PLY.
This is a version of the VPP API generator in Python PLY. It supports
the existing language, and has a plugin architecture for generators.
Currently C and JSON are supported.

Changes:
 - vl_api_version to option version = "major.minor.patch"
 - enum support
 - Added error checking and reporting
 - import support (removed the C pre-processor)
 - services (tying request/reply together)

Version:
 option version = "1.0.0";

Enum:
 enum colours {
   RED,
   BLUE = 50,
 };
 define foo {
  vl_api_colours_t colours;
 };

Services:
 service {
  rpc foo returns foo_reply;
  rpc foo_dump returns stream foo_details;
  rpc want_stats returns want_stats_reply
      events ip4_counters, ip6_counters;
 };

Future planned features:
 - unions
 - bool, text
 - array support (including length)
 - proto3 output plugin
 - Refactor C/C++ generator as a plugin
 - Refactor Java generator as a plugin

Change-Id: Ifa289966c790e1b1a8e2938a91e69331e3a58bdf
Signed-off-by: Ole Troan <ot@cisco.com>
2018-01-23 13:03:53 +00:00
6c4dae27e7 api: remove transport specific code from handlers
This does not update api client code. In other words, if the client
assumes the transport is shmem based, this patch does not change that.
Furthermore, code that checks queue size, for tail dropping, is not
updated.

Done for the following apis:
Plugins
- acl
- gtpu
- memif
- nat
- pppoe
VNET
- bfd
- bier
- tapv2
- vhost user
- dhcp
- flow
- geneve
- ip
- punt
- ipsec/ipsec-gre
- l2
- l2tp
- lisp-cp/one-cp
- lisp-gpe
- map
- mpls
- policer
- session
- span
- udp
- tap
- vxlan/vxlan-gpe
- interface
VPP
- api/api.c
OAM
- oam_api.c
Stats
- stats.c

Change-Id: I0e33ecefb2bdab0295698c0add948068a5a83345
Signed-off-by: Florin Coras <fcoras@cisco.com>
2018-01-11 19:46:01 +00:00
e86a8edd3c api: refactor vlibmemory
- separate client/server code for both memory and socket apis
- separate memory api code from generic vlib api code
- move unix_shared_memory_fifo to svm and rename to svm_fifo_t
- overall declutter

Change-Id: I90cdd98ff74d0787d58825b914b0f1eafcfa4dc2
Signed-off-by: Florin Coras <fcoras@cisco.com>
2018-01-09 18:33:08 +00:00
a431ad1c48 NAT64: IPFix (VPP-1106)
Change-Id: Ib90dc5613c9fdac0344b3bd7f163e2f7163c64d8
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2018-01-08 01:51:24 -08:00
6bcac065b8 VPP-252 Coding standards cleanup - vnet/vnet/flow
Change-Id: I288b0eeefd22f65e80634068e4b3ce0d83fb50fc
Signed-off-by: Swarup Nayak <swarupnpvt@gmail.com>
2017-11-26 19:36:13 +00:00
0d056e5ede vppapigen: support per-file (major,minor,patch) version stamps
Add one of these statements to foo.api:

  vl_api_version 1.2.3

to generate a version tuple stanza in foo.api.h:

/****** Version tuple *****/

vl_api_version_tuple(foo, 1, 2, 3)

Change-Id: Ic514439e4677999daa8463a94f948f76b132ff15
Signed-off-by: Dave Barach <dave@barachs.net>
Signed-off-by: Ole Troan <ot@cisco.com>
2017-10-09 13:32:40 +02:00
5c749734b1 Flowprobe: Stateful flows and IPv6, L4 recording
Change-Id: I67839281623721bf42f0a918a53356143d9dc78a
Signed-off-by: Ole Troan <ot@cisco.com>
Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
Signed-off-by: Ole Troan <ot@cisco.com>
2017-05-30 09:32:07 +00:00
50332f6c15 ipfix: make IPFIX work for all skip_n_vectors values (VPP-204)
Change-Id: Id2ffcd048b93d8efc8f825744cf2aeef5c436d53
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2017-05-24 08:11:09 +00:00
11b8dbf78a "autoreply" flag: autogenerate standard xxx_reply_t messages
Change-Id: I72298aaae7d172082ece3a8edea4217c11b28d79
Signed-off-by: Dave Barach <dave@barachs.net>
2017-04-25 16:18:42 +00:00
2f2db1c202 CGN: IPFIX logging
maximum entries per user exceeded event

Change-Id: Ie35d7f40f55001e2ef4a38f934f176594f25b189
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-04-21 08:21:45 +00:00
68b0fb0c62 VPP-598: tcp stack initial commit
Change-Id: I49e5ce0aae6e4ff634024387ceaf7dbc432a0351
Signed-off-by: Dave Barach <dave@barachs.net>
Signed-off-by: Florin Coras <fcoras@cisco.com>
2017-03-01 20:25:48 +00:00
eb9e666a3c API refactoring : flow
Change-Id: I99e913b954f8b02f347bfeff093856a1c5e96781
Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
2017-01-25 20:32:17 +00:00
7cd468a3d7 Reorganize source tree to use single autotools instance
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-28 12:25:14 +01:00