.. _docs_vfw:

:orphan:

vFirewall Use Case
------------------

Source files
~~~~~~~~~~~~

- vFirewall/vSink template file: https://git.onap.org/demo/tree/heat/vFWCL/vFWSNK/base_vfw.yaml?h=elalto
- vFirewall/vSink environment file: https://git.onap.org/demo/tree/heat/vFWCL/vFWSNK/base_vfw.env?h=elalto

- vPacketGenerator template file: https://git.onap.org/demo/tree/heat/vFWCL/vPKG/base_vpkg.env?h=elalto
- vPacketGenerator environment file: https://git.onap.org/demo/tree/heat/vFWCL/vPKG/base_vpkg.env?h=elalto

VVP Report
~~~~~~~~~~

:download:`vFWCL/vPKG report <files/vFWCL_vPKG_report.json>`

:download:`vFWCL/vFWSNK report <files/vFWCL_vFWSNK_report.json>`

Description
~~~~~~~~~~~

The use case, introduced in Amsterdam version, is composed of three virtual
functions (VFs): packet generator, firewall, and traffic sink.
These VFs run in three separate VMs. The packet generator sends packets to the
packet sink through the firewall.
The firewall reports the volume of traffic passing though to the ONAP DCAE
collector. To check the traffic volume that lands at the sink VM, you can access
the link <http://SINK_IP_ADDRESS:667> through your browser and enable automatic page
refresh by clicking the "Off" button. You can see the traffic volume in the charts.

The packet generator includes a script that periodically generates different
volumes of traffic. The closed-loop policy has been configured to re-adjust the
traffic volume when high-water or low-water marks are crossed.

Since Casablanca, we have used a vFWCL service tag for this testing instead of
the vFW service tag. vFW servic tag is a regression for onboard and
instantiation of a single VNF service (all three VMs in the same VNF) where as the
vFWCL is a two VNF service (vFW+ vSNK and separeate vPKG)

./demo-k8s.sh onap instantiateVFWCL can be used to onboard and instantiate a
vFWCL via robot scripts or follow the procedure to use the GUI that is available
in the documentation.


Closed-Loop for vFirewall Use Case
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Through the ONAP Portal's Policy Portal, we can find the configuration and
operation policies that are currently enabled for the vFirewall use case:

- The configuration policy sets the thresholds for generating an onset event
  from DCAE to the Policy engine. Currently, the high-water mark is set to 700
  packets while the low-water mark is set to 300 packets.
  The measurement interval is set to 10 seconds.
- When a threshold is crossed (i.e. the number of received packets is below 300
  packets or above 700 packets per 10 seconds), the Policy engine executes the
  operational policy to request APPC to adjust the traffic volume to 500 packets
  per 10 seconds.
- APPC sends a request to the packet generator to adjust the traffic volume.
- Changes to the traffic volume can be observed through the link <http://SINK_IP_ADDRESS:667>.


Adjust packet generator
~~~~~~~~~~~~~~~~~~~~~~~

The packet generator contains 10 streams: fw_udp1, fw_udp2, fw_udp3, ..., fw_udp10.
Each stream generates 100 packets per 10 seconds.
A script in /opt/run_traffic_fw_demo.sh on the packet generator VM starts
automatically and alternates high traffic (i.e. 10 active streams at the same
time) and low traffic (1 active stream) every 5 minutes.

To adjust the traffic volume produced by the packet generator, run the following
command in a shell, replacing PacketGen_IP in the HTTP argument with localhost
(if you run it in the packet generator VM) or the packet generator IP address:

::

  curl -X PUT \
  https://PacketGen_IP:8445/restconf/config/stream-count:stream-count/streams \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: 88610924-938b-4d64-a682-0b0aabed4a6d' \
  -H 'cache-control: no-cache' \
  -d '{
    "streams": {
        "active-streams": 5
    }}'


The command above enables 5 streams.

Running the Use Case
~~~~~~~~~~~~~~~~~~~~

Users can run the use case using the automated Robot Framework or manually.
For using the Robot Framework in an ONAP instance installed with OOM, users have
to ssh to the Rancher VM and run the following command:

::

  bash oom/kubernetes/robot/demo-k8s.sh <namespace> vfwclosedloop <pgn-ip-address>

The script sets the packet generator to high and low rates, and checks whether
the policy kicks in to modulate the rates back to medium.
At the end of the test , robot sets the streams back to Medium so that it is
setup for the next test.

For documentation about running the use case manually for previous releases,
please look at the videos and the material available in
`Running the ONAP Demos wiki page <https://wiki.onap.org/display/DW/Running+the+ONAP+Demos>`_

Although videos are still valid, users are encouraged to use the Heat templates
linked at the top of this page rather than the old Heat templates in that wiki page.

Known issues and resolution
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The packet generator may become unresponsive to external inputs like changing
the number of active streams.
To solve the problem, reboot the packet generator VM.

Policy can lock the target VNF if there are too many failed attempts due to
mis-configuration etc.
Set the streams to medium and wait 30 minutes or so and the lock in policy will
expire. Monitoring the DMaaP topic for DCAE_CL_OUTPUT can be used to confirm
that no TCA events are coming in from the VNF through VES/TCA.

::
   http://K8S_HOST:30227/events/unauthenticated.DCAE_CL_OUTPUT/g1/c3?timeout=5000

+-------------+------------+
| JIRA ID     | Status     |
+=============+============+
| POLICY-2109 | Closed     |
+-------------+------------+
| INT-1272    | Closed     |
+-------------+------------+
