summaryrefslogtreecommitdiffstats
path: root/networking-odl/doc/source/sfc-driver.rst
blob: a3086562c74d6207908cdf3b4db3cc7fc6507efa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
=================================================
Service Function Chaining Driver for OpenDaylight
=================================================

This spec describes the plan to implement OpenStack networking-sfc[1] driver for OpenDaylight
Controller.

Problem Statement
===================
OpenStack SFC project (networking-sfc [1]) exposes generic APIs[2] for Service Function Chaining
(SFC) that can be implemented by any backend networking service provider to support SFC. These APIs
provide a way to integrate OpenStack SFC with any of the backend SFC providers. OpenDaylight SFC
project provides a very mature implementation of SFC [3], but currently there is no formal
integration mechanism present to consume OpenDaylight as an SFC provider for networking-sfc.

Recently Tacker project [4] has been approved as an official project in OpenStack, that opens many
possibilities to realize the NFV use cases (e.g SFC) using OpenStack as a platform. Providing a
formal end to end integration between OpenStack and OpenDaylight for SFC use case will help NFV
users leverage OpenStack, Tacker and OpenDaylight as a solution. A POC for this integration work has
already been implemented [5][6] by Tim Rozet, but in this POC work, Tacker directly communicates
to OpenDaylight SFC & classifier providers and not through OpenStack SFC APIs (networking-sfc).

Proposed Change
===============
Implementation of this spec will introduce a networking-sfc[1] driver for OpenDaylight Controller in
networking-odl project that will pass through the networking-sfc API's call to the OpenDaylight
Controller.

Detailed Design
===============
To enable the formal end to end integration between OpenStack SFC and OpenDaylight requires an
SFC driver for OpenDaylight. ODL SFC driver will act as a shim layer between OpenStack and
OpenDaylight that will carry out following two main tasks:

* Translation of OpenStack SFC Classifier API to ODL SFC classifier yang models**

* Translation of OpenStack SFC API's to OpenDaylight Neutron Northbound SFC models** [8]

** This work is not yet done, but the OpenDaylight neutron northbound project needs to come up with
yang models for SFC classification/chain. These models will be based on the existing networking-sfc
APIs. This work is out of scope of networking-odl work and will be collaborated in the scope of the
OpenDaylight Neutron Northbound project.

SFC providers (E.g Net-Virt, GBP, SFC ) in OpenDaylight can listen to these OpenDaylight Neutron
Northbound SFC models and translate it to their specific yang models for classification/sfc. The
following diagram shows the high level integration between OpenStack and the OpenDaylight SFC
provider::

                            +---------------------------------------------+
                            | OpenStack Network Server (networking-sfc)   |
                            |            +-------------------+            |
                            |            | networking-odl    |            |
                            |            |   SFC Driver      |            |
                            |            +-------------------+            |
                            +----------------------|----------------------+
                                                   | REST Communication
                                                   |
                                         -----------------------
                OpenDaylight Controller |                       |
                +-----------------------|-----------------------|---------------+
                |            +----------v----+              +---v---+           |
                | Neutron    | SFC Classifier|              |SFC    | Neutron   |
                | Northbound |    Models     |              |Models | Northbound|
                | Project    +---------------+              +-------+ Project   |
                |               /        \                      |               |
                |             /           \                     |               |
                |           /               \                   |               |
                |     +-----V--+        +---V----+          +---V---+           |
                |     |Net-Virt|  ...   |   GBP  |          |  SFC  |  ...      |
                |     +---------+       +--------+          +-------+           |
                +-----------|----------------|------------------|---------------+
                            |                |                  |
                            |                |                  |
                +-----------V----------------V------------------V---------------+
                |                     Network/OVS                               |
                |                                                               |
                +---------------------------------------------------------------+

In the above architecture, the opendaylight components are shown just to understand the overall
architecture, but it's out of scope of this spec's work items. This spec will only track
progress related to networking-odl OpenStack sfc driver work.

Given that OpenStack SFC APIs are port-pair based API's and OpenDaylight SFC API's are based on
IETF SFC yang models[8], there might be situations where translation might requires API enhancement
from OpenStack SFC. Networking SFC team is open for these new enhancement requirements given that
they are generic enough to be leveraged by other backend SFC providers[9]. This work will be
leveraging the POC work done by Tim [10] to come up with the first version of SFC driver.

Dependencies
============
It has a dependency on OpenDaylight Neutron Northbound SFC classifier and chain yang models, but
that is out of scope of this spec.

Impact
======
None

Assignee(s)
===========

Following developers will be the initial contributor to the driver, but we will be happy to have
more contributor on board.

* Anil Vishnoi (vishnoianil@gmail.com, irc: vishnoianil)
* Tim Rozet (trozet@redhat.com, irc: trozet)

References
==========

[1] http://docs.openstack.org/developer/networking-sfc/

[2] https://github.com/openstack/networking-sfc/blob/master/doc/source/api.rst

[3] https://wiki.opendaylight.org/view/Service_Function_Chaining:Main

[4] https://wiki.openstack.org/wiki/Tacker

[5] https://github.com/trozet/tacker/tree/SFC_brahmaputra/tacker/sfc

[6] https://github.com/trozet/tacker/tree/SFC_brahmaputra/tacker/sfc_classifier

[7] https://tools.ietf.org/html/draft-ietf-netmod-acl-model-05

[8] https://wiki.opendaylight.org/view/NeutronNorthbound:Main

[9] http://eavesdrop.openstack.org/meetings/service_chaining/2016/service_chaining.2016-03-31-17.00.log.html

[10] https://github.com/trozet/tacker/blob/SFC_brahmaputra/tacker/sfc/drivers/opendaylight.py