Professional Documents
Culture Documents
Document 2
Document 2
Introduction
There are several organizations working on fostering SDN and NFV. The Internet
Engineering Task Force, Working Group for service function Chaining (IETF WG SFC)
and European Telecommunications Standards Institute, Industry Specification Group
for NFV (ETSI ISG NFV) are two to mention. They tend to call the same things in
different wordings. Where IETF call an intended path a flow traverses as a Service
Function Chain, ETSI refers the same as a Forwarding Graph. The same relates to a
Service Function (IETF) and (Virtual) Network Function (IETF) which are an instance of
something that processes data flows. So those terms picked from both of
standardization bodies and used here interchangeable. Although for VNF it is not
that important to emphasize its virtual nature in this project, I widely use acronym
VNF here.
How it works
VNF self-registration
Rule enforcement
In the setup, we have SDN network controlled by SDN controller on top of which an
SFC application is running. The application exposes REST API to accept directives
from OSS/BSS system. The application is integrated with the database, where
information on registered service functions, services and flows is stored. This
database represents a Service Catalog. There is no any OSS/BSS system (so I’m going
to play a role of OSS/BSS system), service definitions and flow to service bindings
prepared manually as well as sending requests to the REST APIs of the application.
The process goes like this:
The application can be improved by adding support for the following functionalities:
9. Interface type support. Currently, all the interfaces are treated as inout type. Refining
the requests to the Service Catalog Data Base will allow implementing multi-homed
service function with defined flow direction (ex. Firewall with inside and outside
interfaces). [DONE]
10. Symmetric flow support can be a convenient feature to add reverse forwarding graph
through symmetric service functions automagically. Symmetric or bidirectional
functions are those which require traffic to be passed in both directions: uplink and
downlink so that service could be provided (example: NAT). Not having that feature is
not critical, but requires explicit definition of the reverse forwarding graph. [DONE]
11. Group support is required when several instances of a service function are deployed.
The absence of it can be worked around by using Load Balancers in front of actual
Network Functions.
12. Etc.: A richer set of protocol fields, wildcard logic, VNF statuses and other
enhancements.
Installation
Initially, the environment was based on Ubuntu 14.04. Recently it has been tried out
on the latest Ubuntu 20.04 LTS. I suppose other Linuxes are OK too, though I didn’t
try them. The following software should be installed. Detailed installation instructions
for each of the component can be found on the related web pages.
Ryu controller
https://github.com/osrg/ryu
To avoid errors when running Ryu app, install older eventlet version:
Mininet
http://mininet.org/download/
SQLite Browser
In fact, as long as there is any SQLite client, this one is not required, but I found the
tool very convenient for checking and editing SQLite database. The database is used
in the project as a Service Directory.
http://sqlitebrowser.org/
Demonstration Environment
The traffic comes from h1 to h5 and passes through h2 and h3 according to a service
description when flow rules are imposed on the network. To run the demonstration
smoothly, make sure that IP forwarding is enabled on OS (sudo sysctl
net.ipv4.ip_forward=1), traceroute is intalled and following lines added to
/etc/hosts:
10.0.0.1 h1
10.0.0.2 h2-in
10.0.0.3 h3-in
10.0.0.4 h4
10.0.0.5 h5
10.0.0.12 h2-out
10.0.0.13 h3-out
The demonstration can be launched on the docker containers as well. See the
instructions here.
Demonstration Instructions