Add Kubernetes tests to userguide
[functest.git] / docs / testing / developer / internship / vnf_catalog / index.rst
1 .. SPDX-License-Identifier: CC-BY-4.0
2
3 =======================
4 Open Source VNF Catalog
5 =======================
6
7 Author: Kumar Rishabh
8 Mentors: B.Souville, M.Richomme, J.Lausuch
9
10 Abstract
11 ========
12
13
14
15 Version hissory
16 ===============
17
18 +------------+----------+------------------+------------------------+
19 | **Date**   | **Ver.** | **Author**       | **Comment**            |
20 |            |          |                  |                        |
21 +------------+----------+------------------+------------------------+
22 | 2016-12-12 | 0.0.1    | Morgan Richomme  | Beginning of the       |
23 |            |          | (Orange)         | Internship             |
24 +------------+----------+------------------+------------------------+
25
26
27 Overview:
28 =========
29
30
31 This project aims to create an Open Source catalog for reference and
32 classification of Virtual Network Functions (VNFs)s available on
33 Internet. The classification method proposed will be in sync with the
34 requirements of Telcos active in NFV landscape. The project aims to have
35 running web platform similar to [1] by the mid of internship (2nd week
36 of March). By the penultimate month of internship I aim to have fully
37 functional implementation of an Open Source VNF in functest.
38
39
40 Problem Statement:
41 ------------------
42
43 OPNFV aims to be the reference platform for development,
44 standardization and integration of Open Source NFV components across
45 various Open Source Platforms. It mainly deals with the infrastructure
46 through the Network Function Virtualization Infrastructure (NFVI) and
47 Virtual Infrastructure manager (VIM). The MANO (Management and
48 orchestration) stacks have been introduced recently. VNFs are not
49 directly in OPNFV scope, however VNFs are needed to test and qualify the
50 infrastructure. In this regard having a common curated Open Source
51 Reference VNF catalog would be of immense importance to community.
52
53 Since major focus of OPNFV is Telcos, a curated platform targeted from
54 industry point of view would be very useful. We plan to divide the
55 entire project into three major phases(with some iterative improvements
56 and overlaps)
57
58
59 Curation Phase
60 --------------
61 This phase pertains to studying various Open Source VNFs available and
62 classification of them based on certain parameters. The parameters that
63 I currently have in mind are:
64
65  * Developer Metrics: These pertain to repo characteristics of VNF under
66    study
67  * Usage Statistics - Activity, Number of Commits, stars
68  * Maturity Statistics - For instance if an NFV community decides code
69    coverage is important for them, it shows the NFV community is serious
70    about taking the project forward
71  * Technical Tagging: These are the tags that pertain to technical
72    characteristics of a VNF
73  * Broad Use Cases - Whether the VNF fits strictly in IaaS, PaaS or
74    SaaS layer or is an hybrid of two/all.
75  * Generic Use Cases - This in my opinion is the broadest
76    classification category. For instance a VNF could be built with a
77    broad idea of powering IOT devices at home or from usage perspective
78    of Telco Operators (vFW, vEPC, vIMS, vCDN, vAAA, vCPE,...).`[2]`_
79  * Fields of Application
80  * Library Status - Whether APIs are standardized, support RESTful
81    services.
82  * Dependency Forwarding Graph - This is pretty complex tagging
83    mechanism. It essentially tries to establish a graph relationship
84    between the VNFs (elementary VNFs are used in Service Function
85    Chaining chains such as Firewall, DPI, content enrichment,..). In my
86    opinion this is useful immensely. This will allow users to go to
87    platform and ask a question like - “I have this X tech stack to
88    support, Y and Z are my use cases, which NFVs should I use to support
89    this.
90  * Visitor Score - Based on `[1]`_ I plan to evolve a visitor score for
91    the platform. This will allow users to score an NFV on certain
92    parameters, may be post comments.
93
94 **I plan to use the above three scores and evolve cumulative score which
95 will be displayed next to each of the NFV on the platform.**
96
97  * Platform building phase - This will involve erecting a Web Platform
98    which will be similar to this  `[1]`_. I am decently familiar with
99    Django and hence I will write the platform in Django. There are two
100    action plans that I have in mind right now. Either I can start writing
101    the platform simultaneously which will help keep track of my progress
102    or I can write the platform after 1.5 - 2 months into the internship.
103    Either way I aim to have the Web Platform ready by March 12.
104  * Functest VNF implementation phase - This is the last phase that will
105    involve writing a fully functional implementation of an Open Source VNF
106    into Functest. I will undertake this after I am 3 months into the
107    internship. I have a decent familiarity with python and hence I think
108    it shouldn’t be too difficult. I need to decide how complex the VNFI
109    should undertake this exercise for (e.g. AAA such as free radius sounds
110    relatively easy, vCDN is much more challenging).
111    This will be decided in consent with my mentors.
112
113 Schedule:
114 =========
115 I plan to take this project in 6 months time frame as I want to use it
116 as a chance to read more about NFVs in particular and SDN in general
117
118
119 +--------------------------+------------------------------------------+
120 | **Date**                 | **Comment**                              |
121 |                          |                                          |
122 +--------------------------+------------------------------------------+
123 | December 12 - January 12 | Study the above mentioned metrics        |
124 |                          | Decide which of them are important for   |
125 |                          | community (and which are not).           |
126 +--------------------------+------------------------------------------+
127 | January 12 - January 27  | Make a database for the above studied    |
128 |                          | metrics and evolve it further based on   |
129 |                          | Mentors’ input. + associated API         |
130 +--------------------------+------------------------------------------+
131 | January 27 - February 5  | Compile the data collected above and make|
132 |                          | it public. Although I can keep everything|
133 |                          | public from the beginning too. My        |
134 |                          | rationale of not making the entire data  |
135 |                          | public in initial stage as the errors    |
136 |                          | caused by me could be misleading for     |
137 |                          | developers.                              |
138 +--------------------------+------------------------------------------+
139 | February 5 - March 5     | Erect the Web Platform and release it    |
140 |                          | for restricted group for alpha testing.  |
141 +--------------------------+------------------------------------------+
142 | March 5 - March 12       | Make it public. Release it to public for |
143 |                          | beta testing. Fix Bugs.                  |
144 +--------------------------+------------------------------------------+
145 | March 12 - April 12      | Start working on implementation of an    |
146 |                          | Open Source VNF in Functest.             |
147 +--------------------------+------------------------------------------+
148 | April 12 - May 12        | I will decided what to do here based on  |
149 |                          | discussion with mentors.                 |
150 +--------------------------+------------------------------------------+
151
152
153 References:
154 ===========
155
156 .. _`[1]` : Openhub: https://www.openhub.net/explore/projects
157
158 .. _`[2]` : ETSI NFV White Paper: https://portal.etsi.org/Portals/0/TBpages/NFV/Docs/NFV_White_Paper3.pdf
159
160 .. _`[3]` : https://wiki.opnfv.org/display/DEV/Intern+Project%3A+Open+Source+VNF+catalog