Merge "Only run subprocess calls on Unix systems"
[docs.git] / manuals / developer-guide / src / main / asciidoc / vtn / vtn-overview.adoc
1 === OpenDaylight Virtual Tenant Network (VTN) Overview
2
3 OpenDaylight Virtual Tenant Network (VTN) is an application that provides multi-tenant virtual network on an SDN controller.
4
5 Conventionally, huge investment in the network systems and operating expenses are needed because the network is configured as a silo for each department and system. Therefore various network appliances must be installed for each tenant and those boxes cannot be shared with others. It is a heavy work to design, implement and operate the entire complex network.
6
7 The uniqueness of VTN is a logical abstraction plane. This enables the complete separation of logical plane from physical plane. Users can design and deploy any desired network without knowing the physical network topology or bandwidth restrictions.
8
9 VTN allows the users to define the network with a look and feel of conventional L2/L3 network. Once the network is designed on VTN, it will automatically be mapped into underlying physical network, and then configured on the individual switch leverage SDN control protocol. The definition of logical plane makes it possible not only to hide the complexity of the underlying network but also to better manage network resources. It achieves reducing reconfiguration time of network services and minimizing network configuration errors. OpenDaylight Virtual Tenant Network (VTN) is an application that provides multi-tenant virtual network on an SDN controller. It provides API for creating a common virtual network irrespective of the physical network.
10
11 .VTN Architecture
12 image::vtn/vtn-overview.png[width=500]
13
14 It is implemented as two major components
15
16 * <<_vtn_manager,VTN Manager>>
17 * <<_vtn_coordinator,VTN Coordinator>>
18
19 ==== VTN Manager
20 An OpenDaylight Plugin that interacts with other modules to implement the components of the VTN model. It also provides a REST interface to configure VTN components in OpenDaylight. VTN Manager is implemented as one plugin to the OpenDaylight. This provides a REST interface to create/update/delete VTN components. The user command in VTN Coordinator is translated as REST API to VTN Manager by the OpenDaylight Driver component. In addition to the above mentioned role, it also provides an implementation to the OpenStack L2 Network Functions API.
21
22 ===== Function Outline
23
24 The table identifies the functions and the interface used by VTN Components:
25
26 [options="header"]
27 |===
28 | Component | Interface | Purpose
29 | VTN Manager |RESTful API | Configure VTN Virtualization model components in OpenDaylight
30 | VTN Manager | Neutron API implementation | Handle Networks API from OpenStack (Neutron Interface)
31 | VTN Coordinator | RESTful API |
32 (1) Uses the RESTful interface of VTN Manager and configures VTN Virtualization model components in OpenDaylight. +
33 (2) Handles multiple OpenDaylight orchestration. +
34 (3) Provides API to read the physical network details. See https://wiki.OpenDaylight.org/view/OpenDaylight_Virtual_Tenant_Network_(VTN):VTN_Coordinator:RestApi:L2_Network_Example_Using_VTN_Virtualization[samples] for usage.
35
36 |===
37
38 ===== Feature Overview
39
40 There are three features
41
42 * *odl-vtn-manager* provides VTN Manager's JAVA API.
43 * *odl-vtn-manager-rest* provides VTN Manager's REST API.
44 * *odl-vtn-manager-neutron* provides the integration with Neutron interface.
45
46 REST API documentation for VTN Manager, please refer to:
47 https://jenkins.opendaylight.org/releng/view/vtn/job/vtn-merge-beryllium/lastSuccessfulBuild/artifact/manager/model/target/site/models/
48
49 For VTN Java API documentation, please refer to: https://jenkins.opendaylight.org/releng/view/vtn/job/vtn-merge-beryllium/lastSuccessfulBuild/artifact/target/apidocs/index.html
50
51 Once the Karaf distribution is up, install dlux and apidocs.
52
53 ----
54 feature:install odl-dlux-all odl-mdsal-apidocs
55 ----
56
57 ====== Logging In
58
59 To Log in to DLUX, after installing the application:
60
61 * Open a browser and enter the login URL as http://<OpenDaylight-IP>:8181/index.html.
62
63 NOTE: Replace "<OpenDaylight-IP>" with the IP address of OpenDaylight  based on your environment.
64
65 * Login to the application with user ID and password credentials as admin.
66
67 NOTE: admin is the only default user available for DLUX in this release.
68
69 * In the right hand side frame, click "Yang UI".
70
71 YANG documentation for VTN Manager, please refer to: https://jenkins.opendaylight.org/releng/view/vtn/job/vtn-merge-beryllium/lastSuccessfulBuild/artifact/manager/model/target/site/models/
72
73 ==== VTN Coordinator
74
75 The VTN Coordinator is an external application that provides a REST interface for an user to use OpenDaylight VTN Virtualization. It interacts with the VTN Manager plugin to implement the user configuration. It is also capable of multiple OpenDaylight orchestration. It realizes VTN provisioning in OpenDaylight instances. In the OpenDaylight architecture VTN Coordinator is part of the network application, orchestration and services layer. VTN Coordinator will use the REST interface exposed by the VTN Manger to realize the virtual network using OpenDaylight. It uses OpenDaylight APIs (REST) to construct the virtual network in OpenDaylight instances. It provides REST APIs for northbound VTN applications and supports virtual networks spanning across multiple OpenDaylight by coordinating across OpenDaylight.
76
77 VTN Coordinator Components:
78
79 * Transaction Coordinator
80 * Unified Provider Physical Layer (UPPL)
81 * Unified Provider Logical LAyer (UPLL)
82 * OpenDaylight Controller Diver (ODC Driver)
83
84 ===== OpenDaylight Virtual Tenant Network (VTN) API Overview
85
86 The VTN API module is a sub component of the VTN Coordinator and provides the northbound REST API interface for VTN applications. It consists of two subcomponents:
87
88 * Web Server
89 * VTN service Java API Library
90
91 .VTN-Coordinator_api-architechture
92 image::vtn/Vtn-coordinator-api-architecture.png[width=300]
93
94 ====== Web Server
95
96 The Web Server module handles the REST APIs received from the VTN applications. It translates the REST APIs to the appropriate Java APIs.
97
98 The main functions of this module are:
99
100 * Starts via the startup script `catalina.sh`.
101 * VTN Application sends HTTP request to Web server in XML or JSON format.
102 * Creates a session and acquire a read/write lock.
103 * Invokes the VTN Service Java API Library corresponding to the specified URI.
104 * Returns the response to the VTN Application.
105
106 ====== WebServer Class Details
107 The list below shows the classes available for Web Server module and their descriptions:
108
109 Init Manager:: It is a singleton class for executing the acquisition of configuration information from properties file, log initialization, initialization of VTN Service Java API Library. Executed by init() of VtnServiceWebAPIServlet.
110 Configuration Manager:: Maintains the configuration information acquired from properties file.
111 VtnServiceCommonUtil:: Utility class
112 VtnServiceWebUtil:: Utility class
113 VtnServiceWebAPIServlet:: Receives HTTP request from VTN Application and calls the method of corresponding VtnServiceWebAPIHandler.
114 herits class HttpServlet, and overrides doGet(), doPut(), doDelete(), doPost().
115 VtnServiceWebAPIHandler:: Creates JsonObject(com.google.gson) from HTTP request, and calls method of corresponding VtnServiceWebAPIController.
116 VtnServiceWebAPIController:: Creates RestResource() class and calls UPLL API/UPPL API through Java API.
117  the time of calling UPLL API/UPPL API, performs the creation/deletion of session, acquisition/release of configuration mode, acquisition/release of read lock by TC API through Java API.
118 Data Converter:: Converts HTTP request to JsonObject and JsonXML to JSON.
119
120
121 ====== VTN Service Java API Library
122 It provides the Java API library to communicate with the lower layer modules in the VTN Coordinator.
123 The main functions of this library are:
124
125 * Creates an IPC client session to the lower layer.
126 * Converts the request to IPC framework format.
127 * Invokes the lower layer API (i.e. UPPL API, UPLL API, TC API).
128 * Returns the response from the lower layer to the web server
129 * VTN Service Java API Library Class Details
130
131 ===== Feature Overview
132
133 VTN Coordinator doesn't have Karaf features.
134
135 For VTN Coordinator REST API, please refer to: https://wiki.opendaylight.org/view/OpenDaylight_Virtual_Tenant_Network_%28VTN%29:VTN_Coordinator:RestApi
136
137 ==== Usage Examples
138 *  https://wiki.OpenDaylight.org/view/OpenDaylight_Virtual_Tenant_Network_(VTN):VTN_Coordinator:RestApi:How_to_configure_L2_Network_with_Single_Controller[L2 Network using Single Controller]
139