Age | Commit message (Collapse) | Author | Files | Lines |
|
The existing implementation of IPC is not finished and isn't used
by any of the VNFs/TG implementation. It is used in the code but does
nothing from functionality perspective.
New syncronization mechanism is going to be implemented by using
different approach than it was designed before. Thus, the current
IPC mechanism is not going to be re-used. So, removing it.
The IPC consumer/producer implementation is left as it may be
required for other purposes.
- Remove SampleVNF MQ consumer class
- Remove IterationIPC MQ producer for VNF control messages
- Remove MQ producer from SampleVNFTrafficGen class
- Remove TrafficGeneratorProducer class
- Remove IterationIPC runner
- Remove unused task_id form VNF Generic initialization as it is not
required for synchronization of VNFs/TGs anymore.
- Fix UT
JIRA: YARDSTICK-1592
Change-Id: I65fe51bcbd1bfeea0c43eb79ca6fb2aab5b65ae7
Signed-off-by: Mytnyk, Volodymyr <volodymyrx.mytnyk@intel.com>
|
|
Improve TRex RFC2544 throughput calculation by using the in/out packets
instead of using the throughput samples.
JIRA: YARDSTICK-1387
Change-Id: I877e901c3226d31c6435a877a2924bb95deb1cf0
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
This new class is designed to be used in a ``GenericVNF`` object (VNF
or traffic generator) in a builder pattern. This consumer class will
be instantiated when initializing the ``GenericVNF`` derived object.
The ``GenericVNFConsumer`` endpoint is the ``GenericVNF``derived object
itself.
``GenericVNFEndpoint`` is an interface class to be inherited in a
``GenericVNF`` child object; the VNF object will implement the endpoints
methods.
NewVNF(GenericVNF, GenericVNFEndpoint):
def __init__(self, name, vnfd, task_id):
...
self._consumer = vnf_base.GenericVNFConsumer([task_id], self)
self._consumer.start_rpc_server()
JIRA: YARDSTICK-1293
Change-Id: I1bcd980352099e9ebefdab0c96d51aa46f6a1e54
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
The TRex RFC2455 traffic profile configures the duration of the traffic
injection. Once the traffic is started, the traffic profile should poll
the traffic injector client for the injection status. When the injection
is finished, the traffic execution should end.
Instead of this, the traffic profile waits a fixed time (using time.sleep
method) and then stops the traffic. This approach is not accurate and may
cause shorter injection periods.
JIRA: YARDSTICK-1197
Change-Id: I5090df81ef4ec7945ff6c1aff070656b48e0fe77
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
GenericVNF class is now an abstract class. Only optional methods are
implemented. Mandatory methods:
- instantiate
- wait_for_instantiate
- terminate
- scale
- collect_kpi.
JIRA: YARDSTICK-866
Change-Id: Ia8766f9f98816e11894d1e72b0f3bd573d091d99
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
GenericTrafficGen class is now an abstract class. Only optional methods
are implemented.
- 'run_traffic' and 'terminate' are mandatory.
- 'listen_traffic', 'verify_traffic' and 'wait_for_instance' are
optional. By default these methods doesn't execute any action.
JIRA: YARDSTICK-853
Change-Id: I2befdaa337af79cc2364bdd7c66183c31c5ab69a
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
|
|
when we create TRex config we sort based on PCI bus address
and create a logical port ordering.
We need to save this port ordering and re-use it everywhere.
redirect vnfd_helper.port_num() to resource_helper.port_num() to
use the logical mapping
Change-Id: Ibff628556d5e11e686e15716a66a3210758c4ff0
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
From some reason Heat/Neutron is now creating
interfaces such that xe0 and xe1 are swapped.
xe0 fa:16:3e:38:c7:66 0000:00:05.0
xe1 fa:16:3e:2f:f3:e2 0000:00:03.0
this causes the DPDK port numbering to be swapped.
xe0 is DPDK port 1 because it has higher PCI address
xe1 is DPDK port 0 because it has lower PCI address.
The VNF is configured correctly because it uses DPDK port numbers,
whereas TRex was using interface list ordering.
Modify trex_cfg.yaml to use DPDK port ordering. This also
requires running generate_cfg() after setup() in instantiate()
+------------------------------------+-------------------+------------------------------+--------+
| Name | MAC Address | Fixed IP Addresses | Status |
+------------------------------------+-------------------+------------------------------+--------+
| vnf_0.yardstick-af5ccb47-xe0-port | fa:16:3e:66:a5:e4 | ip_address='10.1.0.7', | ACTIVE |
| vnf_0.yardstick-af5ccb47-mgmt-port | fa:16:3e:fa:98:fe | ip_address='10.0.1.10', | ACTIVE |
| tg_0.yardstick-af5ccb47-xe1-port | fa:16:3e:2f:f3:e2 | ip_address='10.1.1.9', | ACTIVE |
| vnf_0.yardstick-af5ccb47-xe1-port | fa:16:3e:f3:1d:f5 | ip_address='10.1.1.4', | ACTIVE |
| | fa:16:3e:e3:8c:65 | ip_address='10.0.1.1', | ACTIVE |
| | fa:16:3e:ff:d1:b7 | ip_address='11.191.14.110', | N/A |
| tg_0.yardstick-af5ccb47-xe0-port | fa:16:3e:38:c7:66 | ip_address='10.1.0.8', | ACTIVE |
| | fa:16:3e:ff:53:5f | ip_address='11.191.14.101', | DOWN |
| | fa:16:3e:23:5d:2c | ip_address='10.0.1.2', | ACTIVE |
| tg_0.yardstick-af5ccb47-mgmt-port | fa:16:3e:7a:df:4e | ip_address='10.0.1.5', | ACTIVE |
| | fa:16:3e:22:65:36 | ip_address='11.191.14.109', | N/A |
+------------------------------------+-------------------+------------------------------+--------+
/sys/devices/pci0000:00/0000:00:03.0/virtio0/net/ens3/address:fa:16:3e:2f:f3:e2
/sys/devices/pci0000:00/0000:00:05.0/virtio2/net/ens5/address:fa:16:3e:38:c7:66
Change-Id: Iaef2c7d9a5af7f45bd805a8ad6ee545ce0495cb1
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
set TRex -c option for threads per port based on
hardware number of queues.
We can't auto-detect number of queues and we can't
use more than one thread per core on systems with single-queue
interfaces, so move the option to the config file
options:
tg_0:
queues_per_port: 2
also enable trex debug by removing >/dev/null redirection
options:
tg_0:
trex_server_debug: true
Change-Id: I46da187849282bf28f4ef5b333e1ae890e202768
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
- Added a PROTOCOL_MAP to map the protocol names to codes -- the scapy
requires the code, it fails if the proto is set e.g. to 'udp'
- ip addresses must be str, not unicode -- explicit conversion to str
added
- removed unittest for setup_vnf_environment in test_tg_trex.py as
it is the same function as already tested in test_sample_vnf.py
- traffic_profile refactored -- code repetition decreased, unittest
adapted
Known issues:
- there is a an attempt to stop already stopped trex. It fires an
exception that stop command is issued on the disconnected client.
Change-Id: I87e9029630f48b30e8f5b4f9d88ab3b25fd65f03
Signed-off-by: Martin Banszel <martinx.banszel@intel.com>
|
|
Refactored main NSB VNF classes accroding to class diagram
https://wiki.opnfv.org/display/yardstick/NSB+class+diagram
All the SampleVNFs have been separated and placed under
the SampleVNF class.
Added AutoConnectSSH to automatically create SSH conneciton on demand.
Added VnfdHelper class to wrap the VNFD dictionary in prepartion for
class-based modeling.
Extracted DpdkVnfSetupEnvHelper for DPDK based VNF setup.
Extracted Stats and other client config to ResourceHelper
Had to replace dict_key_flatten with deepgetitem due to Python 2.7
Jinja2 infinite recursion.
Change-Id: Ia8840e9c44cdbdf39aab6b02e6d2176b31937dc9
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
Signed-off-by: Edward MacGillivray <edward.s.macgillivray@intel.com>
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
we need to be following defautl paramiko rules,
first use pkey, then key_filenames (autodetecting ~/.ssh/ keys),
then password
We have too much boilerplate redudant code everywhere, we need
to standardize on a factory function that takes a node dict.
Using Python3 ChainMap we can layer overrides and defaults.
VNF descriptors have to default key_filename, password to Python None.
The only way to do this is to omit key values if the variable is not
defined, this way the dict will not have the value and it will
default to Python None
Add python2 chainmap backport
Updated unittest mocking to use ssh.SSH.from_node
Change-Id: I80b0cb606e593b33e317c9e5e8ed0b74da591514
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
|
|
Change-Id: I73744a9e0f1830688a171f3f28044926b13f8a43
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
This patch uses trex trafficgen example to define dynamic traffic profiles
and how it can be mapped to real world traffic.
JIRA: YARDSTICK-492
Change-Id: Ica24957ebf43315a8d81adabd4745c27d3c7c36a
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|