Commit Graph

163 Commits

Author SHA1 Message Date
37682e1237 Add vxlan-bypass feature to IP4 forwarding path
Added vxlan-bypass feature which can be enabled on the underlay
interface which receive VXLAN packets to accelerate VXLAN decap
processing. The CLI to enable it is:
    set interface ip vxlan-bypass <interface> [del]
With this feature enabled on an interface, there is an overhead for
non-VXLAN packets at about 13 clocks per packet.
The API is created to support vxlan-bypass for both VXLANoIPv4 and
VXLANoIPv6. With this change, vxlan-bypass is only implemented for
IPv4 forwarding path.

Change-Id: Ica7239f642010b231eade7fd5009aa4b42c119d3
Signed-off-by: John Lo <loj@cisco.com>
2016-12-01 19:34:12 +00:00
1f417aac76 vppctl: clean exit cli when ctrl-d or ctrl-c entered
Ctrl-D now exits vpp cli using do_EOF function

Ctrl-C now exits cleanly without KeyboardInterrupt Error

Change-Id: I09d103df57b9512e572eb66c17c548b9c1801589
Signed-off-by: Padraig Connolly <padraig.connolly@intel.com>
2016-12-01 03:16:48 +00:00
6929ea9225 Enabling AES-GCM-128 with 16B ICV support
Change-Id: Ib57b6f6b71ba14952ad77477a4df3ab33b36fef4
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
2016-11-30 20:37:45 +00:00
c5b1360045 VXLAN multicast dst (remote) address support
Added support for multicast vxlan tunnels which are used for bridge domain flooding instead
of flooding the all unicast tunnels in the bridge domain.

features added:
* conditional flooding to some of the BD members - based on existance of multicast tunnel member
* added local multicast adjacency - multicast packets are handled as the same as unicast - based on src (unicast) address
* refactored some of vxlan tunnel creation code - to unify ip4/6 handling

Change-Id: I60cca4124265a8dd4f6b2d6ea8701e52e7c1baa4
Signed-off-by: Eyal Bari <ebari@cisco.com>
2016-11-30 16:31:32 +00:00
aff7077d20 Start spliting vpe.api into logically related pieces
To reduce rebase / manual merge pain, among other things

Change-Id: I3186df0479066916a2ca69c48759178b45ef035c
Signed-off-by: Dave Barach <dave@barachs.net>
Signed-off-by: Ole Troan <ot@cisco.com>
2016-11-30 15:06:08 +00:00
e99007b3df ipsec: remove dependency on DPDK > 0
ipsec code is not depenent on dpdk anymore.

Change-Id: Iff3f960ca0f0435f66bcb575998d2fcea3377701
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-24 09:14:43 +00:00
676554935a dpdk: remove rte_mbuf modifications at many places in the code
It is sole responsibility of dpdk tx function to fill/update
rte_mbuf prior to sending packet do PMD.

Change-Id: I8ca1dba3e7bef41034d36e3525831849f7ac4ac0
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-23 22:12:25 +00:00
fba8a95102 add vpp banner graphic when vpp-cli starts
Added check if termianl output is tty
*If terminal is tty, display banner

Added "FD.io VPP" banner to vppctl script on startup
*FD.io displays in red
*VPP displays in white

Change-Id: Iaab3513d4f9d7ba5eefe070c1daf319f5014cf85
Signed-off-by: Padraig Connolly <padraig.connolly@intel.com>
2016-11-22 16:22:21 +00:00
72c390917c VAT: don't pass u8 to unformat - it expects an 4 byte integer
Change-Id: I82f21a77b96b9d9f00a4d3cf261bb4bd4644460b
Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-11-22 14:29:02 +00:00
557d128b68 Add client-side msg_name_and_crc -> msg_index table
vppapigen now generates per-message crcs. Verified that whitespace
and real changes in message A don't change the crc for message B, etc.

Fixed the sample and flowperpkt plugins to participate. Others need
the same treatment. They don't build due to python/java language binding
build issues.

To use the scheme:

Client connects as usual.

Then call: u32 vl_api_get_msg_index(char * name_and_crc)
name_and_crc is a string like: "flowperpkt_tx_interface_add_del_753301f3",
aka the message name with _%08x <expected crc> appended.

Try these vpp-api-test commands to play with it:

vat# dump_msg_api_table
     <snip>
 [366]: punt_reply_cca27fbe
 [367]: ipsec_spd_dump_5e9ae88e
 [368]: ipsec_spd_details_6f7821b0
 [369]: sample_macswap_enable_disable_0f2813e2
 [370]: sample_macswap_enable_disable_reply_476738e5
 [371]: flowperpkt_tx_interface_add_del_753301f3
 [372]: flowperpkt_tx_interface_add_del_reply_d47e6e0b

vat# get_msg_id sample_macswap_enable_disable_reply_476738e5
 'sample_macswap_enable_disable_reply_476738e5' has message index 370

vat# get_msg_id sample_macswap_enable_disable_reply_476738e3
 'sample_macswap_enable_disable_reply_476738e3' not found

CRCs may vary, etc.

vppapigen is used to build a set of JSON representations
of each API file from vpp-api/Makefile.am and that is in
turn used by each language binding (Java, Python, Lua).

Change-Id: I3d64582e779dac5f20cddec79c562c288d8fd9c6
Signed-off-by: Dave Barach <dave@barachs.net>
Signed-off-by: Ole Troan <ot@cisco.com>
2016-11-21 18:11:41 +00:00
7490a75281 feature: API/CLI to enable/disable feature per interface
Change-Id: I91d5f5648189143903eb973fdc60de9880fd47c2
Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
2016-11-17 21:03:25 +00:00
999bbc4a20 remove reference to Intel with dpdk docs
*Changed configure files to say DPDK instead of Intel DPDK
*Changed rpm and deb config files to say DPDK instead of Intel DPDK
*Changed vnet Makefile to say DPDK instead of Intel DPDK

Change-Id: Ic6e3eacf2341af873d4bd2e036d5afa857ca6355
Signed-off-by: Padraig Connolly <padraig.connolly@intel.com>
2016-11-17 21:02:29 +00:00
75665d3ea1 Fix coverity warnings, VPP-486
Change-Id: If98e5e00eede8f2aa9f17517c726b337c98e5467
Signed-off-by: Dave Barach <dave@barachs.net>
2016-11-17 20:51:43 +00:00
5858a82e76 Put address in top bytes for the nexthop in vl_api_fib_path_t (VPP-532)
VPP-500 added the API for the fib dump capability. However, it puts the address of the
nexthop in the low bytes while the top bytes are padded with 0's if the address is ipv4.
The address field is defined as 16 bytes to accommodate both ipv4 and ipv6.
This fix is to correct the issue and put the address of the nexthop in the top bytes.

Change-Id: I429dec662e32040b186dfc323801ef49b76a42a3
Signed-off-by: Steven <sluong@cisco.com>
2016-11-17 14:46:26 +00:00
25e26dc513 VPP-521: Classify API enhancement to redirect traffic to pre-defined VRF
Ingress packets are punted to the “Input ACL node” where traffic is
classified based on n-tuple keys. If no matched session is found from
the classify tables, then it will be passed to “the lookup node” for
normal packet forwarding. If a classify session is hit from one of
classify tables, then packet vnet buffer field sw_if_index[VLIB_TX]
will be updated to the new FIB index used for subsequent IP lookup
for this packet.

Change-Id: Ifdea63196ddb81c2d5c43b8c98e11ddbf5b11858
Signed-off-by: Steve Shin <jonshin@cisco.com>
2016-11-16 02:29:44 +00:00
f6e3dc4778 span: add feature (rx only) (VPP-185)
Change-Id: I0f7cbf06b5a5acd745d13c9f5c761ea18132107b
Signed-off-by: marek <mazavods@gmail.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-11-15 17:49:14 +00:00
7c8eda16d4 VPP-393: Subinterface is still used after deletion
Fixed bug in delete of sub-interface, if sub-interface is xconnected it
was not deleted correctly (show interface address fails).

Interface is set to L3 mode before deletion.

Fixed help in API command.
Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
Change-Id: Ibe781e4b53422e6535e34ec72dbe274f9045f051
2016-11-15 16:08:20 +00:00
01b071222d Dump routes (VPP-500)
Change-Id: I86e7382395a8b6471a0deaf57163718d41b71b83
Signed-off-by: Steven <sluong@cisco.com>
2016-11-15 08:13:26 +00:00
c42912de8e VXLAN tunnel encap forwarding optimization with FIB 2.0
Optimize VXLAN encap node so that vxlan4-encap node is used for IP4
and vxlan6-encap node is used for IP6 underlay. Also stack the VXLAN
encap nodes to the appropriate FIB IP4 or IP6 load-balance node
instead of ip4/ip6-lookup node to save IP lookup operation.

For VXLAN decap node, check VXLAN header FLAGS field for each packet
and remove the code to support decap-next for IP4 or IP6. These decap-
next values were intended for experimentation purposes and not needed
any more since VXLAN-GPE tunnel is supported. The decap-next field is
still kept in API for backward compatibility and its value has no
effect. Decap next for both vxlan4-decap and vxlan6-decap nodes is
always l2-input node.

Change-Id: I8ac95774946549ec403ab691f999df0c006b460f
Signed-off-by: John Lo <loj@cisco.com>
2016-11-10 12:45:00 +00:00
8d2e0e0243 Fix a batch of coverity warnings, VPP-486
Change-Id: I0379844824b4c2eb42588d0fb8e1a7eb441e923f
Signed-off-by: Dave Barach <dave@barachs.net>
2016-11-09 11:29:58 -05:00
f524f0add5 vppctl: Do not use sudo if already root
When using sudo, environment variable such as the PATH
are overwritten.
This patch just checks if user is already root and does
not use sudo in such situation.
This allows using approaches like:
sudo env PATH=path/to/vpp-binary/:$PATH vppctl

Not really important in production setups, but this is handy
for testing.

Change-Id: I079c104d026ae7d378468380b012279a6e5d765d
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-11-04 11:22:11 +00:00
ed4a2fdd4d Adding Sequence Number - Per Packet Counter(PPC) support for iOAM6.
- Added support in classifier session to identify a flow to be iOAM6 encap/decap
- Sequence number as part of iOAM6 E2E header is created as a plugin.

Change-Id: Ib7605de45aecff25d684d099b525f8dc96ee7038
Signed-off-by: AkshayaNadahalli <anadahal@cisco.com>
2016-11-03 11:44:21 +00:00
948e00ff5e Support IETF routing Yang models (VPP-503).
Add support for special routes to send ICMP unreachable or admin prohibited.

Change-Id: Ia1ac65b0e5e925c0f9ebc7824141833b4e18f05e
Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-10-25 15:09:10 +00:00
06b14b914c Add API call of sw_interface_set_mpls_enable to vpp_api_test
Change-Id: If0e98c111b3dfa38cb2c619dde4ddb3e52ee8dfa
Signed-off-by: John Lo <loj@cisco.com>
2016-10-25 13:45:07 +00:00
1357f3b175 Deprecate MPLSoGRE tunnels (VPP-502)
Add shared memory APIs for MPLS routes and MPLS to IP prefix bindings.

Change-Id: I85b074a4dadc8249c410fdabd8ea019d20479cf8
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
2016-10-18 20:44:22 +00:00
69a9b76d64 VPP-362 Implement dumping of LISP adjacencies
Change-Id: Ieea56f3bf9e749878d9f2b35d39d9f7a9cdabde4
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-10-12 13:24:03 +00:00
51ffa817d9 ipfix: add l4 unformat support for mask and match (VPP-204)
Change-Id: Iff32c488af9b71acbc4e572c6741afae0a67333c
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2016-10-10 20:51:28 +00:00
506b24564d ipfix: add classification nodes for flow statistics (VPP-204)
In order to have meaningfull IPFIX implementation we should be able
to classify all packets flowing through vpp. But existing IPv4 and IPv6
classifier nodes are called only if destination IP address is local
to vpp. This commit adds new IPv4 and IPv6 classifier nodes that should
be used for collecting flow statistics.

Change-Id: I60e60105663ba15b5200862a23bb817047fe4d1a
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2016-10-10 20:51:28 +00:00
477570e587 Add signal handling
Please send SIGTERM to stop vpp_api_test, especially during
long-running operations such as a high-count asynchronous set of
ip_add_del_routes.

Otherwise, there's every chance that the data plane to vpp_api_test
message queue will fill and cause an easily-avoided deadlock.

Change-Id: I09309b445c354e1a692fed708dd5ea44d1ea9882
Signed-off-by: Dave Barach <dave@barachs.net>
2016-10-10 20:49:29 +00:00
b21b6768ff platform: rewrote vppctl script to include history
Added more ability to search history to vppctl shell
*Up and down keys give history
*Script now written in Python 2.7.6
*Contains all original functionality
*Added Python dependency for deb/rpms

Change-Id: I5088f7b018fce92b9b5411df0bffc34709810dec
Signed-off-by: Padraig Connolly <padraig.connolly@intel.com>
2016-10-10 19:48:38 +00:00
33a7dd5ad9 FIB2.0: memory leaks during load-balance update (VPP-475)
some other fixes and enhancemets to address failures in the IPv6 Scale testing:
 - The rate at which VPP sends ARP/ND requests, 1 per-millisecond, is too high. This is reduced to 1 every 10 ms. probably still too high.
 - If an ARP/ND response is received that does not contain a change to the known MAC address, no further processing is done.
 - Added stats to get info about the async FIB walks.
 - When walking FIB entries and performing a load-balance update, it is not necessary to re-insert the LB in the forwarding table.

Change-Id: Ifd47e4bdbce94495f44aaf1b78e7d1395ed870d1
Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-10-10 18:58:22 +00:00
4a7e58bf48 VPP-395 Add udp-punt node(s) and API
Uses existing UDP local API in order to register
requested UDP port punt to the host.

CLI: set punt udp [del] <port>
API: punt protocol <l4-protocol> [ip <ver>] [port <l4-port>] [del]
* Only UDP (l4-protocol = 17) is supported at this time

Change-Id: I9232af1c891d1ed174d77f3e0dfe60c4b9d85e40
Signed-off-by: Alex Popovsky <apopovsk@cisco.com>
2016-10-07 15:31:50 +00:00
95300d1915 VPP-355: add PBB (802.1ah) tag rewrite
- new API/CLI to define pbb tag rewrite on interface
- encapsulation/decapsulation of PBB tags
- tracing of PBB header
- PBB tag rewrite operations

Change-Id: I538b3025a8b2e41cdeed9f10fea94bbcd28b5f5f
Signed-off-by: Pavel Kotucek <pkotucek@cisco.com>
2016-10-04 17:15:16 +00:00
f2c6ed1925 vat: add pg interfaces to sw_interface_dump (VPP-451)
Change-Id: I976a44dcfb32b1132c14363174239333315b2c6f
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-09-30 12:09:33 +00:00
2fdaece087 VPP-450 Fix adding LISP adjacencies via CLI
Change-Id: If90c9c630629e727fffc5d450516045a04433661
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-09-30 08:42:28 +00:00
85ecc810ca DPDK HQoS: Enable Hierarchical Scheduler in VPP
This commit extends the vpp framework with new thread type "hqos-threads" that
runs the Hierarchical Quality of Service (HQoS) scheduler associted with output
interface.  HQoS Scheduler prioritize the packets from different users and
ensures sufficient bandwidth to pass the more important traffic.

At high level, HQoS scheduler is a buffer that can temporarily store a
large number of packets. In otherwords, it is a collection of large number
of queues organized into hierarchy of 5 levels; the port (i.e. the physical
interface) is at the root of the hierarchy followed by the subport (a set
of users), the pipes (individual users), the traffic classes (each with a
strict priority) and at the leaves, the queues.

In each HQoS scheduler, three operations are performed; classification
(setting HQoS port, subport, pipe, traffic class and queue within traffic
class from packet fields), enqueue (selecting HQoS queue for the packet,
and to drop the packet if the queue is full) and dequeue (schedule the
packet based on its length and available credits, and handover the scheduled
packet to the output interface).

In vpp, the number of hqos threads will be equal to cpu cores specified in
corelist-hqos-threads parameter cpu section of the vpp configuration file.
One hqos thread can run HQoS for multiple output interfaces. A particular HQoS
instance is initialised with default parameters required to configure hqos port,
subport, pipe and queues. Some of them can be re-configured in run-time
through CLI commands as well binary APIs.

Following illustrates the sample startup configuration file with 4x worker
threads feeding 2x hqos threads that handle each HQoS for 1x output interface.
For more details on HQoS configuration please refer to DPDK Programmer's Guide.

dpdk {
	socket-mem 16384,16384

	dev 0000:02:00.0 {
		num-rx-queues 2
		hqos
	}
	dev 0000:06:00.0 {
		num-rx-queues 2
		hqos
	}

	num-mbufs 1000000
}

cpu {
  main-core 0
  corelist-workers  1, 2, 3, 4
  corelist-hqos-threads  5, 6
}

Change-Id: I635c3395a7c4ddf0a239ef77b0b0a31a6dfc4767
Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
2016-09-28 16:37:28 +00:00
3fa0af5960 VPP-448 Fix LISP APIs using binary data
* use zero length array in LISP API to avoid confusion
* add missing LISP data structure definitions in API documentation
* fix wrong memory allocation in VAT

Change-Id: I9b5e656a071fc24cb698c164db953c09b66deeeb
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-09-27 17:28:13 +00:00
dca880446e LISP Source/Dest control plane support, VPP-197
Change-Id: If88e4161e0944b657e6183b7b44348f7f46ba0a8
Signed-off-by: Florin Coras <fcoras@cisco.com>
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-09-27 08:11:19 +00:00
042d212cd8 VPP-189: fix coverity issue in api_format.c
Change-Id: I8cf3bb27bc699be3b8de781ea84db4c7fb3c7553
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-09-22 22:38:43 +00:00
c9e0843d5e VPP-426: Rename parameter in LISP remote mapping VAT command
Change-Id: Ie52243bd1654e3d0663b09bd1f21e8c15e93f07d
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-09-22 20:38:53 +00:00
0bfe5d8c79 A Protocol Independent Hierarchical FIB (VPP-352)
Main Enhancements:
 - Protocol Independent FIB API
 - Hierarchical FIB entries. Dynamic recursive route resolution.
 - Extranet Support.
 - Integration of IP and MPLS forwarding.
 - Separation of FIB and Adjacency databases.
 - Data-Plane Object forwarding model.

Change-Id: I52dc815c0d0aa8b493e3cf6b978568f3cc82296c
Signed-off-by: Neale Ranns <nranns@cisco.com>
2016-09-21 17:37:39 +00:00
f07fb71b62 VPP-189: fix coverity issue in api_format.c
Change-Id: Ib16fd69abe93c1afb2ee1d38144763f57888585c
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-09-20 14:34:20 +00:00
a8cd30937e Add support for transparent ethernet bridging to GRE
Change-Id: Iaa3cefe223eb48b128893029a17e092b72a5157c
Signed-off-by: David Hotham <david.hotham@metaswitch.com>
2016-09-19 19:01:59 +00:00
c5bb0d6667 VPP-376: Refactor LISP dump API + VAT
- refactor VAT so it won't cache data
- remove unused filter flag from locator dump API call
- json structure changed for locator and EID table dump calls
- remote mapping VAT cli now accepts string for negative mapping action

Change-Id: I776fb50659aaa7e98ad93715d282a83f78287344
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-09-13 07:26:17 +00:00
24648ad088 Fix bugs in IPFIX code discovered by coverity
Change-Id: Ibe6ccb99c3c29c14efb34191f209a2f6a14293f7
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2016-09-07 00:06:01 -07:00
8fce3e3c51 VPP-382: Add ipsec tunnel interface to sw_interface_dump
Change-Id: I9e49c9b6deedb750269da04e3332a3b0742d382c
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2016-09-07 17:21:01 +00:00
ffa652afd8 VPP-204 Rework and finish IPFIX implementation
Rework flow report registration system - add streams
Add support for IPv6 and src and dst ports for TCP and UDP protocols
Implement binary API for IPFIX classifier module

Change-Id: Id05cc0127a7b95ceaeebf9c79a32c6936449bd63
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2016-09-07 07:35:50 +00:00
07d2f84907 Move iOAM Trace as a plugin
Change-Id: I78322e91485e5429871bd356f668b8ed90f4265a
Signed-off-by: Vengada Govindan <venggovi@cisco.com>
2016-09-06 18:53:51 +00:00
ce98275ac3 VPP-381 Add LISP interfaces to sw_interface_dump
Change-Id: I62b65472e77a33b1fc94f7c4975b5e9cbf358f41
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-09-06 18:47:44 +00:00
e016b5e3fb VPP-358: Add IPv6 ND Event Notification and Termination
Additional fix to vpp_api_test to show which kind of arp/ip6-nd
event is received, whether it is address resolution or mac/ip binding.

Change-Id: Ic65b895cd1bfbe2f34d1b68891a1a580852fbcdb
Signed-off-by: John Lo <loj@cisco.com>
2016-09-03 20:35:10 +00:00