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 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.

References

[1] https://docs.openstack.org/networking-sfc/latest/

[2] https://github.com/openstack/networking-sfc/blob/master/doc/source/contributor/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