Gary Wu | e4a2df8 | 2018-11-29 12:49:09 -0800 | [diff] [blame] | 1 | .. _docs_vfw: |
| 2 | |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 3 | vFirewall Use Case |
| 4 | ------------------ |
| 5 | |
| 6 | Source files |
| 7 | ~~~~~~~~~~~~ |
| 8 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 9 | - vFirewall/vSink template file: https://git.onap.org/demo/tree/heat/vFWCL/vFWSNK/base_vfw.yaml?h=elalto |
| 10 | - vFirewall/vSink environment file: https://git.onap.org/demo/tree/heat/vFWCL/vFWSNK/base_vfw.env?h=elalto |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 11 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 12 | - vPacketGenerator template file: https://git.onap.org/demo/tree/heat/vFWCL/vPKG/base_vpkg.env?h=elalto |
| 13 | - vPacketGenerator environment file: https://git.onap.org/demo/tree/heat/vFWCL/vPKG/base_vpkg.env?h=elalto |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 14 | |
stark, steven | 6a507a4 | 2019-04-24 12:04:41 -0700 | [diff] [blame] | 15 | VVP Report |
| 16 | ~~~~~~~~~~ |
| 17 | |
| 18 | :download:`vFWCL/vPKG report <files/vFWCL_vPKG_report.json>` |
| 19 | |
| 20 | :download:`vFWCL/vFWSNK report <files/vFWCL_vFWSNK_report.json>` |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 21 | |
| 22 | Description |
| 23 | ~~~~~~~~~~~ |
| 24 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 25 | The use case, introduced in Amsterdam version, is composed of three virtual |
| 26 | functions (VFs): packet generator, firewall, and traffic sink. |
| 27 | These VFs run in three separate VMs. The packet generator sends packets to the |
| 28 | packet sink through the firewall. |
| 29 | The firewall reports the volume of traffic passing though to the ONAP DCAE |
| 30 | collector. To check the traffic volume that lands at the sink VM, you can access |
| 31 | the link http://sink_ip_address:667 through your browser and enable automatic page |
| 32 | refresh by clicking the "Off" button. You can see the traffic volume in the charts. |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 33 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 34 | The packet generator includes a script that periodically generates different |
| 35 | volumes of traffic. The closed-loop policy has been configured to re-adjust the |
| 36 | traffic volume when high-water or low-water marks are crossed. |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 37 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 38 | Since Casablanca, we have used a vFWCL service tag for this testing instead of |
| 39 | the vFW service tag. vFW servic tag is a regression for onboard and |
| 40 | instantiation of a single VNF service (all three VMs in the same VNF) where as the |
Gary Wu | 9da1b69 | 2019-06-17 22:36:04 -0700 | [diff] [blame] | 41 | vFWCL is a two VNF service (vFW+ vSNK and separeate vPKG) |
Brian Freeman | 8aeeef8 | 2019-06-17 10:07:36 -0500 | [diff] [blame] | 42 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 43 | ./demo-k8s.sh onap instantiateVFWCL can be used to onboard and instantiate a |
| 44 | vFWCL via robot scripts or follow the procedure to use the GUI that is available |
| 45 | in the documentation. |
Brian Freeman | 8aeeef8 | 2019-06-17 10:07:36 -0500 | [diff] [blame] | 46 | |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 47 | |
| 48 | Closed-Loop for vFirewall Use Case |
| 49 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 50 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 51 | Through the ONAP Portal's Policy Portal, we can find the configuration and |
| 52 | operation policies that are currently enabled for the vFirewall use case: |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 53 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 54 | - The configuration policy sets the thresholds for generating an onset event |
| 55 | from DCAE to the Policy engine. Currently, the high-water mark is set to 700 |
| 56 | packets while the low-water mark is set to 300 packets. |
| 57 | The measurement interval is set to 10 seconds. |
| 58 | - When a threshold is crossed (i.e. the number of received packets is below 300 |
| 59 | packets or above 700 packets per 10 seconds), the Policy engine executes the |
| 60 | operational policy to request APPC to adjust the traffic volume to 500 packets |
| 61 | per 10 seconds. |
Gary Wu | 9da1b69 | 2019-06-17 22:36:04 -0700 | [diff] [blame] | 62 | - APPC sends a request to the packet generator to adjust the traffic volume. |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 63 | - Changes to the traffic volume can be observed through the link http://sink_ip_address:667. |
| 64 | |
| 65 | |
| 66 | Adjust packet generator |
| 67 | ~~~~~~~~~~~~~~~~~~~~~~~ |
| 68 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 69 | The packet generator contains 10 streams: fw_udp1, fw_udp2, fw_udp3, ..., fw_udp10. |
| 70 | Each stream generates 100 packets per 10 seconds. |
| 71 | A script in /opt/run_traffic_fw_demo.sh on the packet generator VM starts |
| 72 | automatically and alternates high traffic (i.e. 10 active streams at the same |
| 73 | time) and low traffic (1 active stream) every 5 minutes. |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 74 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 75 | To adjust the traffic volume produced by the packet generator, run the following |
| 76 | command in a shell, replacing PacketGen_IP in the HTTP argument with localhost |
| 77 | (if you run it in the packet generator VM) or the packet generator IP address: |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 78 | |
| 79 | :: |
| 80 | |
Marco Platania | 9442f8f | 2019-06-17 09:12:21 -0400 | [diff] [blame] | 81 | curl -X PUT \ |
| 82 | https://PacketGen_IP:8445/restconf/config/stream-count:stream-count/streams \ |
| 83 | -H 'Accept: application/json' \ |
| 84 | -H 'Content-Type: application/json' \ |
| 85 | -H 'Postman-Token: 88610924-938b-4d64-a682-0b0aabed4a6d' \ |
| 86 | -H 'cache-control: no-cache' \ |
| 87 | -d '{ |
| 88 | "streams": { |
| 89 | "active-streams": 5 |
| 90 | }}' |
| 91 | |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 92 | |
| 93 | The command above enables 5 streams. |
| 94 | |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 95 | Running the Use Case |
| 96 | ~~~~~~~~~~~~~~~~~~~~ |
Brian Freeman | 8aeeef8 | 2019-06-17 10:07:36 -0500 | [diff] [blame] | 97 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 98 | Users can run the use case using the automated Robot Framework or manually. |
| 99 | For using the Robot Framework in an ONAP instance installed with OOM, users have |
| 100 | to ssh to the Rancher VM and run the following command: |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 101 | |
| 102 | :: |
| 103 | |
| 104 | bash oom/kubernetes/robot/demo-k8s.sh <namespace> vfwclosedloop <pgn-ip-address> |
| 105 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 106 | The script sets the packet generator to high and low rates, and checks whether |
| 107 | the policy kicks in to modulate the rates back to medium. |
| 108 | At the end of the test , robot sets the streams back to Medium so that it is |
| 109 | setup for the next test. |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 110 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 111 | For documentation about running the use case manually for previous releases, |
| 112 | please look at the videos and the material available at this `wiki page`__. |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 113 | |
| 114 | __ https://wiki.onap.org/display/DW/Running+the+ONAP+Demos |
| 115 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 116 | Although videos are still valid, users are encouraged to use the Heat templates |
| 117 | linked at the top of this page rather than the old Heat templates in that wiki page. |
Marco Platania | e5064cd | 2018-11-28 15:33:47 -0500 | [diff] [blame] | 118 | |
| 119 | Known issues and resolution |
| 120 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Brian Freeman | 8aeeef8 | 2019-06-17 10:07:36 -0500 | [diff] [blame] | 121 | |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 122 | The packet generator may become unresponsive to external inputs like changing |
| 123 | the number of active streams. |
| 124 | To solve the problem, reboot the packet generator VM. |
| 125 | |
| 126 | Policy can lock the target VNF if there are too many failed attempts due to |
| 127 | mis-configuration etc. |
| 128 | Set the streams to medium and wait 30 minutes or so and the lock in policy will |
| 129 | expire. Monitoring the DMaaP topic for DCAE_CL_OUTPUT can be used to confirm |
| 130 | that no TCA events are coming in from the VNF through VES/TCA. |
Brian Freeman | 8aeeef8 | 2019-06-17 10:07:36 -0500 | [diff] [blame] | 131 | |
| 132 | :: |
| 133 | http://<k8s-host>:30227/events/unauthenticated.DCAE_CL_OUTPUT/g1/c3?timeout=5000 |
mrichomme | aa96184 | 2019-10-15 11:34:19 +0200 | [diff] [blame] | 134 | |
| 135 | +-------------+------------+ |
| 136 | | JIRA ID | Status | |
| 137 | +=============+============+ |
| 138 | | POLICY-2109 | Closed | |
| 139 | +-------------+------------+ |
| 140 | | INT-1272 | Closed | |
| 141 | +-------------+------------+ |