145 Commits

Author SHA1 Message Date
Alpesh Patel
370a24e36e Creating a new CLI to create loopback interfaces to make the interface
creation cli consistent

Change-Id: I72f074bb8c771511cb5203af6905adccefbb4197
Signed-off-by: Alpesh Patel <apatel9191@hotmail.com>
2016-04-12 16:01:40 +02:00
Pierre Pfister
b3e80947dc IP6 FIB: Micro optimization in lookup
The mask is increasingly small.
This saves a few cycles and becomes significant when there are many
prefix lengths.

Change-Id: Ibd0c9331f675697bb4e90e8ad617994f83edec9c
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-04-12 12:12:50 +00:00
Filip Tehlar
254b036dff Add unit test infrastructure for LISP protocol
Change-Id: I802700ad832de1dc6f4a1981e8985aa6e926c8ad
Signed-off-by: Filip Tehlar <ftehlar@cisco.com>
2016-04-12 11:47:39 +00:00
Yoann Desmouceaux
e41b49490d Add a counter for unknown IPv6 hop-by-hop options.
Change-Id: I3db82b71ae5e32e0f2230662497a05e57ddb6755
Signed-off-by: Yoann Desmouceaux <ydesmouc@cisco.com>
2016-04-11 17:04:29 +02:00
Yoann Desmouceaux
f53b7d5e97 Fix possible infinite loop in IPv6 hop-by-hop header parsing
Unknown hop-by-hop options are currently not processed, which triggers an
infinite loop due to the pointer not advancing further in the header.

Change-Id: Idf9176090e042b17aac1baa25a6cb4beb8c199d8
Signed-off-by: Yoann Desmouceaux <ydesmouc@cisco.com>
2016-04-11 14:49:56 +00:00
Sean Hope
608d1edf74 Add vnet_rename_interface API
Change-Id: I9a8e1ed310aa9a72644540856426c77f61f4b4bb
Signed-off-by: Todd Foggoa <tfoggoa@cisco.com>
2016-04-11 13:18:02 +00:00
Damjan Marion
5ba5f83b79 Bump DPDK 16.04 to RC4
Change-Id: Ia9affeee54e860b6039d7ee0f411bd022b1dc76c
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-11 13:04:16 +00:00
Peter Lei
dba76f29e6 Add option to delete af_packet (host) interfaces
Change-Id: Iab76951758ae9b9a99d679a223941a4b8c683078
Signed-off-by: Alpesh S. Patel <apatel9191@hotmail.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-11 11:38:28 +00:00
Benoît Ganne
d530445067 fix uninitialized vars warnings with -Os
Change-Id: I15a16ba9751b6b612bac61a160b5da394ed2e15c
Signed-off-by: Benoît Ganne <bganne@kalrayinc.com>
2016-04-08 22:25:44 -07:00
Hongjun Ni
b2cdd2f5f0 Add Rx and Tx statistics within nsh-vxlan-gpe node
PatchSet2: Modify the code according to review comments.

PatchSet3: modify sw_if_index1 in encap.c.

Change-Id: Ic4d3ee19a0ba0fa10568e570a79a3cb85cfbc9ab
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2016-04-08 14:38:43 +00:00
Hongjun Ni
639b4bded6 Change encap-fib-id and decap-fib-id within create_nsh_vxlan_gpe_tunnel_command
Change-Id: Ied5275fcea21ae2e0b346931f9e2f520a73afd67
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2016-04-07 15:04:27 +00:00
Hongjun Ni
08fa373d2b Add key.pad=0 within vnet_nsh_vxlan_gpe_add_del_tunnel
Change-Id: Ieed704ed0c3d747afc9836671f2ea9cc396ee09d
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2016-04-07 15:02:56 +00:00
Hongjun Ni
e1ed8bddb4 Change key.src=a->dst.as_u32 within vnet_nsh_vxlan_gpe_add_del_tunnel
Change-Id: Ica062e532d116cc1806d73f2fa85db89402928a4
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
2016-04-07 15:01:36 +00:00
John Lo
bcebbb988d Enhance CLI/API Support for Bonded Interface
For interfaces which are slave links to a bounded interface, do not
allow sub-interface creation nor interface state to be changed.
Change "show interface" to display interface state as "bond-slave"
for slave links to a bonded interface.
Change "show hardware" to support a "bond" keyword and display slave
links to a bonded interface.

Change-Id: I4db3cae6985bcb1489ab16a07c72c5ee9b2f2dd3
Signed-off-by: John Lo <loj@cisco.com>
2016-04-07 14:33:05 +00:00
Dave Barach
2fa6beff57 Classify node should pay attention to dynamically-added arcs
Change-Id: I65bc03dbb5fedfc75f4ce7153eae116fe599730c
Signed-off-by: Dave Barach <dbarach@cisco.com>
2016-04-07 10:17:31 -04:00
Florin Coras
df2b0fd802 Fix ip4 udp encap length type
Change-Id: If666cda99a5fd92e904898ced40bcf2b5ac2d3a5
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-04-06 08:05:17 -07:00
Alpesh Patel
83cc4e140d host-interface admin down/up does not bring the interface up
Change-Id: I4c9ae5d88e885ccbc85b64cadc052563529c762d
Signed-off-by: Alpesh Patel <apatel9191@hotmail.com>
2016-04-05 13:00:01 -07:00
Florin Coras
aff04a0921 Fix DPDK check in udp.h
Change-Id: I4734b248f512e223703d234d28542257af1a8074
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-04-02 20:33:41 +02:00
Florin Coras
e127a7e452 LISP GPE: initial CP commit and DP improvements
Control Plane
-------------
In essence, this introduces basic support for map-request/reply
processing, the logic to generate and consume such messages, including
SMRs, a control-plane backend, consisting of an eid-table, locator and
locator-set tables, and CLI to interact with it. Naturally, we can now
serialize/deserialize LISP specific types: addresses, locators,
mappings, messages. An important caveat is that IPv6 support is not
complete, both for EIDs and RLOCs.

Functionally, the DP forwards all packets it can't handle to the CP
(lisp_cp_lookup node) which takes care of obtaining a mapping for the
packet's destination from a pre-configured map-resolver using the LISP
protocol. The CP then caches this information and programs the DP such
that all new packets with the same destination (or within the covering
prefix) are encapsulated to one of the locators retrieved in the
mapping. Ingress traffic-engineering is not yet supported.

Data Plane
----------
First of all, to enable punting to the CP, when LISP GPE is turned on a
default route that points to lisp_cp_lookup is now inserted. The DP
also exposes an API the CP can use to program forwarding for a given
mapping. This mainly consists in allocating a tunnel and programming the
FIB such that all packets destined to the mapping's prefix are forwarded
to a lisp-gpe encapsulating node.

Another important change done for lisp forwarding is that both source
and destination IP addresses are considered when encapsulating a packet.
To this end, a new FIB/mtrie is introduced as a second stage, src
lookup, post dst lookup. The latter is still done in the IP FIB but for
source-dest entries, in the dest adjacency the lookup_next_index points
to a lisp lookup node and the rewrite_header.sw_if_index points to the
src FIB. This is read by the lisp lookup node which then walks the src
mtrie, finds the associated adjacency, marks the buffer with the index
and forwards the packet to the appropriate next node (typically,
lisp-gpe-encap).

Change-Id: Ibdf52fdc1f89311854621403ccdd66f90e2522fd
Signed-off-by: Florin Coras <fcoras@cisco.com>
2016-04-02 17:20:44 +00:00
Damjan Marion
aa04a0ff8e Add option to link DPDK dynamically
Change-Id: Ie2b47f9020c8260b199d141103318a0261e16832
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-01 16:38:33 +02:00
Damjan Marion
102ec52bc4 Add support for installing ipv4 routes via unresolved next hop
Change-Id: I71f3ba0c8192fe0ac3b5b81fb1275b64ec02876a
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-04-01 10:38:42 +00:00
Damjan Marion
0df78dda5a Add DPDK 16.04-rc2 support
Can be used by specifying DPDK_VERSION=16.04-rc2 in the make command line

Change-Id: I657b44d7ca22f1ef57756e7703088020fab12bc6
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-29 21:25:12 +00:00
Dave Barach
13f3c450cc Support per-interface packet rx redirection
Change-Id: I8bb6124efa5665053620b48d11c8160472103c29
Signed-off-by: Dave Barach <dave@barachs.net>
2016-03-29 11:56:55 -04:00
Damjan Marion
f1bd8bec87 Move classify_table_index under the union
Fields needed only by specific adj type should
be shared.

Change-Id: I59ee15a29d2f5f527f46910a1a63866b291734c7
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-29 12:50:53 +00:00
Dave Barach
b2ef4dde97 Adjacency allocator
Change-Id: Ieacbfa4dbbfd13b38eaa2d37f618f212cef4e492
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-29 12:46:42 +02:00
Jurek Matuszewski
a69318b7f7 Increment MRU if hardware supports CRC stripping
Change-Id: I46bd007c3c75e5fb872c1beba557e6140fa8d715
Signed-off-by: Todd Foggoa (tfoggoa) <tfoggoa@cisco.com>
2016-03-29 08:59:46 +00:00
Todd Foggoa (tfoggoa)
ad8b4728cb Allow vlans to be programmed on 40GE VF interfaces
Change-Id: Ia3a1bf7cb482f0aa98628b23d88de01cf60c46a9
Signed-off-by: Todd Foggoa (tfoggoa) <tfoggoa@cisco.com>
2016-03-29 08:52:27 +00:00
Todd Foggoa (tfoggoa)
4b9fb50010 Mark some show commands as mp safe
Change-Id: I92cd378370feeddf27832acde06f186fbdf64908
Signed-off-by: Todd Foggoa (tfoggoa) <tfoggoa@cisco.com>
2016-03-29 08:51:59 +00:00
Shwetha
20a64f5f8a iOAM trace configuration APIs
Change-Id: I6d31f0ddb812d148ad065e27775440d09f402def
Signed-off-by: Shwetha <shwethab@cisco.com>
2016-03-25 20:57:19 +00:00
Damjan Marion
1901020228 Use rte_mempool private data for storing vlib_buffer_t
Change-Id: If3fc88a35bc0b736376113a39667caea42802ea1
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-25 20:55:15 +00:00
Damjan Marion
aca36e1bd2 Remove unnecesary clib_bitmap_set from af_packet input node
Change-Id: I856fefd52efdfc0a3b8be8bafa3f3106267dfcf1
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-25 20:06:39 +01:00
Pierre Pfister
d6f5b96e6f l2-rw: Packet rewrite feature for L2 bridges
This patch defines a new l2input feature: l2-rw
It makes use of vnet_classify in order to match
packets and applies mask/value changes depending
on the matched classify entry.

Change-Id: Ia98c128931e59195bf3ecb66721e155ff9049a2e
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-03-24 17:49:44 +00:00
John Lo
e2efecec42 Fix L2 flood packet replication interaction with VXLAN-tunnel
The check for input sw_if_index against output sw_if_index is not correct
for the interface on the replication order after VXLAN tunnel because the
encap code overwrite packet sw_if_index[VLIB_RX] with that of the VXLAN
tunnel sw_if_index. The check should be done using sw_if_index[VLIB_RX]
saved in the packet context.

Change-Id: I175717221409977e80576e84dfe5362d1f6aed2f
Signed-off-by: John Lo <loj@cisco.com>
2016-03-23 19:44:39 -04:00
John Lo
d90df1820a Add dpdk vmxnet3 driver patch and init.c change to allow jumbo packets
Change-Id: I9d7f8b9a0543d885ed10908b859d52a80bf89f56
Signed-off-by: John Lo <loj@cisco.com>
2016-03-23 16:42:33 -04:00
Pierre Pfister
3a8f32be9f tapcli: Receive vector of packets and memory leak fix
tapcli interfaces were creating single-packet frames.
It now calls readv until the frame is full, or
readv returns error EAGAIN.
This is usefull when a significant amount of traffic
flows through tap interfaces.
This patch also fixes a memory leak by correctly
initializing b->clone_count to zero.

Change-Id: I15e435ba76d542be2f263274e76297425cd10243
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-03-22 11:48:32 +00:00
Damjan Marion
d56209695a Unbreak build on gcc-5
Change-Id: I0dc5f48ade786b60b34441c30f3de5b9f373d714
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-21 19:09:09 +01:00
Dave Barach
f39ff74346 vnet classifier debug CLI enhancements
Extensible next-index and opaque unformat function scheme. Added
next-index-by-node-name and sw_if_index->opaque functions.

Allow dynamic graph arcs to be added to ip4/6-inacl.

Change-Id: Ie434335399a0708772eb82563a154df19c63b622
Signed-off-by: Dave Barach <dave@barachs.net>
2016-03-20 10:15:24 -04:00
rangan
4f81085a77 * Added support to configure trace type as a
configuration parameter.  This can be any combination
  of nodeid, interface indices, timestamp and appdata.
  This configuration is passed through packet header by
  encap node to all other nodes. Rewrite buffer is resized
  accordingly. Trace function modified accordingly.
* Added CLI 'show ioam summary' command to display various
  configuration.
* Added CLI 'clear ioam rewrite'

Change-Id: Ide4c85f8b22561303df48519c5ea59668a300188
Signed-off-by: rangan <rangan@cisco.com>
2016-03-19 13:43:52 +00:00
Dave Barach
acf0872108 cosmetic: indent code
Gerrit wouldn't merge the previous attempt, so let's just make the
pain go away...

Change-Id: Ia008d43f755b6e3a5f4c699de365d241bf361aa9
Signed-off-by: Dave Barach <dave@barachs.net>
2016-03-19 08:54:10 -04:00
Nagaprabhanjan Bellari
a0005dc347 Add llc_init in osi_init to ensure init order dependency
Change-Id: I5cb2a319384e49a072d75f3ea05e6fb92e381c23
Signed-off-by: Nagaprabhanjan Bellari <nagp.lists@gmail.com>
2016-03-19 12:46:08 +00:00
Pierre Pfister
cb656303df vnet_classify: Handle non-aligned vectors and various bugfixes
classifier used to crash when packet data was not aligned.
This commit also includes:
- writer lock initialization bugfix
- CLI help was missing opaque-index
- ip_input_acl was applying the mask on buffer->data instead of packet head

On a side note, my tests failed to show any improvements
when using SSE. Further tests might be interesting to see if they
actually perform better.

Change-Id: Ic34eecd6a2226919121ffce2fe4324506deee52f
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
2016-03-18 14:22:37 +00:00
Dave Barach
dbf19ca7f9 Make adjacencies shareable
Change-Id: I620871ca715b751d2e487f37341b7118797c9176
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-18 12:59:51 +01:00
Todd Foggoa
4ea4ecdda9 Bring back p1.c so plugins can see DPDK symbols
Change-Id: Ia450c9bc6d00fbd054d41a462366f826121d781d
Signed-off-by: Todd Foggoa <tfoggoa@cisco.com>
2016-03-17 14:23:14 -04:00
Damjan Marion
aaf2acddb3 Don't stop binding pci device if write to new_id fails
In some cases write to new_id fails but binding is still
possible.

Change-Id: I1944eab4326a08e85e83cd5cd7379c6a4d03d98d
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-17 12:46:57 +01:00
Damjan Marion
048ee2ebe5 af_packet: vec functions should not be used on pool
Change-Id: Ifc67db0575a7517ac24519894996906ea44ead67
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-16 22:59:21 +01:00
Damjan Marion
83243a0ff5 Add vpp native linux kernel AF_PACKET interface support
This is 1st drop of VPP native driver for linux AF_PACKET.

New CLI:

  create host-interface name <host-if-name>  [hw-addr <mac-address>]

References:
 - Documentation/networking/packet_mmap.txt in the Linux kernel tree
 - man 7 packet

Known issues:
 - attaching to linux bridge doesn't work
 - it is not expected to work in multicore setup

Change-Id: I1cb1c3d305f349759e90e76e25696718b73bd73d
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-16 20:27:52 +01:00
Damjan Marion
b8abf877ba Declare node, hw_interface_class and device_class instances as external
This fixes issue observed on Ubuntu 16.04 where
dynamic loader is not finding correct instance of
specific structure.

Change-Id: I618d0933c7e171b8a9b40495b36894785af7790a
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-03-14 20:43:12 +01:00
Jean-Mickael Guerin
8941ec2cb4 fix declaration of symbol of different size
I got many warnings at the link step with gcc version 5.3.1 20160225 (Ubuntu 5.3.1-10ubuntu2):

/usr/bin/ld: Warning: size of symbol `cop_input_node' changed from 112 in vnet/cop/.libs/cop.o to 168 in vnet/cop/.libs/node1.o
/usr/bin/ld: Warning: size of symbol `ethernet_input_node' changed from 112 in vnet/.libs/interface.o to 136 in vnet/ethernet/.libs/node.o
/usr/bin/ld: Warning: size of symbol `l2output_node' changed from 112 in vnet/l2/.libs/l2_efp_filter.o to 120 in vnet/l2/.libs/l2_output.o
/usr/bin/ld: Warning: size of symbol `srp_input_node' changed from 112 in vnet/srp/.libs/format.o to 136 in vnet/srp/.libs/node.o
/usr/bin/ld: Warning: size of symbol `vxlan_encap_node' changed from 112 in vnet/vxlan/.libs/vxlan.o to 128 in vnet/vxlan/.libs/encap.o
/usr/bin/ld: Warning: size of symbol `vxlan_input_node' changed from 112 in vnet/vxlan/.libs/vxlan.o to 144 in vnet/vxlan/.libs/decap.o
...

Looking at vlib_node_registration_t, I think the reason is that
the char * next_nodes[] could be bigger where the variable is defined
in .c file.

We should mark global variables as external in header files.

Some of them can be made static.

Change-Id: Ieb6961fd08180c9a69e1d884852703f3eb23f23f
Signed-off-by: Jean-Mickael Guerin <jean-mickael.guerin@6wind.com>
2016-03-14 12:40:17 +00:00
Yoann Desmouceaux
fe2da0e01a Better match vhost-user specification for live migration
The specification requires logging of used vring writes to only happen
when VHOST_VRING_F_LOG flag is present in VHOST_USER_SET_VRING_ADDR
message; take that into account.

Change-Id: I9bf4b9eb43a1783b39909b1a3ea1a3bdf50d91a8
Signed-off-by: Yoann Desmouceaux <ydesmouc@cisco.com>
2016-03-14 09:13:02 +00:00
Stefan Kobza
ac26da5b53 Do not use hugepages if none are available.
In case socket-mem was set to <1024 and no 1G page long hupepages were
available, the condition was evaluated in unexpected manner. In other
words use_1g == 1, and that fails later in mount().
This patch makes sure this is prevented - if there are no pages_available,
do not even try to use that pagesize.

Change-Id: I30675aa017d97b99d84d5db926e62f0acb54deb6
Signed-off-by: Stefan Kobza <skobza@cisco.com>
2016-03-14 03:50:11 +00:00