For the cases where an L3 overlay protocol is in use (in our case,
GPE), use vxlan, an L3 protocol, to move mirrored traffic around. This
ensures that we do not require a working L2 VLAN overlay just for TaaS
in an otherwise L3 environment.
Change-Id: Ie6a383ebdd6a3e47d83048a94e4475caa9a20a21
This patch implements a dedicated VXLAN-GPE module and makes the
server module easily maintaineable.
Change-Id: Ifa6e323eb8e779805c3a12dd68c6b1a371a82532
Closes-Bug: #1805466
Since the VPP does not support overlapping IP addresses on a
subnet, the solution adds an independent route to the VPP's
local interface each time an additional router is added on the
floating network. The first router's gateway IP address is set
on the BVI loopback and this address becomes the primary gateway
IP address. Each subsequent router's gateway IP address is added
as a local route. When the primary gateway is deleted, if a
valid local IP address exists, it is migrated to the BVI
loopback interface. Upon deleting an external gateway, the BVI
loopback is only deleted if no valid local IPs exist on the
floating network.
Change-Id: I945056fad31e599833e706ee627fe444e32ed606
Closes-Bug: #1810536
This patch initializes privsep in the agent and uses root helper to
set it up. This isn't needed with devstack, since the 'stack' user
can execute anything. For other deployments, users may be limited to
executing commands via rootwrap.
Change-Id: I624811a4e8cc1dffafbbe8cf3969b03c9831c2ff
Closes-Bug: #1813024
Co-Authored-By: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Enabling python 3.5 support in light of the python 2.7 EOL and
in line with openstack's support of python 3.5. Not everything
has been tested and hence some things may not work as expected
on python 3.5.
Change-Id: I5f640416da409a70850d42b7800c879c79457542
A type driver for use by the GPE network type. This type
driver will replace the vxlan network type with the gpe
type. The vxlan network type will no longer be supported by
this mechanism driver. To use this driver, set below options
in the ml2_conf.ini file.
[ml2]
tenant_network_types = gpe,vlan
type_drivers = gpe,vlan,flat
[ml2_vpp]
gpe_vni_ranges = <vni_min>:<vni_max>, <vni_min>:<vni_max>, ..
Closes-bug: #1808887
Change-Id: I41572afabb9945c2e9c944c2486439d8ab26930b
Instead of using tox-install.sh, we can install neutron
now directly from pypi - or use the current branch in CI system using
tox-siblings.
Update tox.ini for this change and add neutron to test-requirements.txt
(it's not a requirement of the agent but needed for building).
Change-Id: I2b9817923dd540b47c7341ae4623f4512aa9e14b
Running the agent with vpp18.10 generated an unknown parameter error on "bvi"
Make the library detect and compare the version of VPP to find compatible
API calls.
Change-Id: I3f55b69925279e686e80492e88eb0d4737762edd
Closes-Bug: #1802619
Co-Authored-By: Ian Wells <iawells@cisco.com>
The pyudev device monitor is quite nasty - pyudev is not eventlet
friendly and needs a lot of workarounds to operate, and we have
reports of the callback eventlet locking up.
Replace the pyudev dependency with some homebrew netlink code.
(There are a few Python libraries for netlink out there, including
pyroute2, but none that claim to be better than beta quality. The
use of netlink is fairly straightforward, so the code here is not
huge.)
Change-Id: Ifc058c9cf3f7cf2aae718893735467ada1f165f3
Co-Authored-By: Hareesh Puthalath <hputhala@cisco.com>
Co-Authored-By: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
session.flush() converts the current in-memory data changes to DB
changes. However, it misleadingly stackdumps if there's a problem with
*any* DB statement so far, which leads to misleading net-vpp backtraces
when the actual table involved may have nothing to do with net-vpp.
It's also intended to flush out huge transactions in pieces, which we
don't have; so remove the call.
Change-Id: Ic9f81890fb7858f6922575d4aa1792d4e4f4cac8
When packaging networking-vpp using a different mechanism than py
sdist tarballs, files that need to reside in the python module are
missed, leading to silent errors - the package contains everything
needed for normal operation, but trying to apply alembic migrations
will report success without changing anything.
This used to be a common issue with various Openstack projects, e.g.
see [1].
[1] https://bugs.launchpad.net/ubuntu/+source/networking-odl/+bug/1627656
Change-Id: I3b8dc26d987fea04a8dd11a3a9d4110a1aa3eac8
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Previously, `neutron router-interface-add ...` would fail with:
ERROR neutron.api.v2.resource AddressValueError: '10.10.10.0/24' does
not appear to be an IPv4 or IPv6 network. Did you pass in a bytes (str
in Python 2) instead of a unicode object?
Change-Id: I300296e925999a53dbbc062ff9d989c00867d9c7
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Allow use of random MACs if appropriate (nothing uses this yet).
Allow use of optional tags if appropriate (nothing uses this yet either).
Make tag setting atomic.
Remove the backward compatibility for 17.01 as we're long past that point.
Change-Id: If2f15506c7fb0ea51a472253f9af3db26527afb6
When the agent restarts, it tries to assign the vxlan source ip addr.
If an IP addr is already assigned, the agent does not crash anymore.
Closes-Bug: #1802620
Change-Id: I032e5095bee53649b0172de6bab9be50c4b04638
Fix for the issue where the vhostuser subinterface corresponding to
a subport is not removed from VPP upon executing the 'unset' command
from the CLI.
Change-Id: Ic9b5e1d7b365a76f34e5ef1b92dc80371769e734
Closes-Bug: #1802273
Call used an index into a struct from PAPI, which no longer works with
18.10 PAPI. Use the struct element names instead, which works with all
PAPI versions.
On the occasion of the fixup, use the opportunity to use ipaddress-based
datastrcutures rather than string formats for returning from vpp.py, in
an attempt to standardise the interface.
Change-Id: I70dd13d73847f496144c7a1f7dae92753690f55b
The earlier way of marking an interface in a BD as BVI using
bvi=True|False is now replaced by a new port_type param and with
enums defining the various port types. A port of type BVI is denoted
by L2_API_PORT_TYPE_BVI.
Change-Id: I8da891ce5449fe03d81468b8bef2747680df93e3
Closes-Bug: #1798311
Without this patch, a network trunk's subports must be specified at
creation time. It wasn't possible to add or remove subports to a bound
trunk. This patch will enable subports to be added and removed from
a bound network trunk.
Closes-Bug: #1788215
Change-Id: Icc5009df11c90e56823e5c0e5823cafafbcf6339
Quotes around {posargs} cause the entire string to be combined into one
arg that gets passed to stestr. This prevents passing multiple args
(e.g. '--concurrency=16 some-regex')
Change-Id: I14da2af189c37a56bbd67f04dd4a42e07976c889
During restart/resync, the reconsider_trunk_subports() function is
invoked only once. As a result, child ports may never be bound if
there's a lag in the parent port’s bind.
A second related issue is when the parent port is bound but not 'up'
yet then the child subport stays in the 'down' state. A side-effect of
this issue is that trunk port artifacts in VPP are not cleaned up upon
unbind of the parent port.
Change-Id: I03839f36b7063b92d1420ae7a91e5841f3623018
Closes-Bug: #1788848
Filemonitor has been improved and streamlined.
Removed the pyinotify_eventlet_notifier.py module
and moved the simplified Notifier to filemonitor
itself.
Also made deleting select.poll conditional based on
whether we are patching it or not, as it seems there
is a dependency on device monitoring on that.
Change-Id: I527c96390d9c7278e65694216f4a6881b82560e3
When unbinding the ports from VPP while other port bindings are in
progress, the net_data is not guarantee to be available at that time,
which is going to cause a traceback. Handling the scenario nicely to
fix the traceback.
Change-Id: I1e14c8b64076c8112568d313b371c64c7ead1440