aboutsummaryrefslogtreecommitdiffstats
path: root/docs/configguide/yardstick_testcases/04-vtc-overview.rst
blob: 95159a9bcbf36c55a3037baf44731ac7f9aa0d16 (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
==========================
Virtual Traffic Classifier
==========================

Abstract
========

.. _TNOVA: http://www.t-nova.eu/
.. _TNOVAresults: http://www.t-nova.eu/results/
.. _Yardstick: https://wiki.opnfv.org/yardstick

This chapter provides an overview of the virtual Traffic Classifier, a
contribution to OPNFV Yardstick_ from the EU Project TNOVA_.
Additional documentation is available in TNOVAresults_.

Overview
========

The virtual Traffic Classifier :term:`VNF`, the :term:`VTC`, comprises of a
:term:`VNFC`. The :term:`VNFC` contains both the Traffic Inspection module, and
the Traffic forwarding module, needed to run the VNF. The exploitation of
:term:`DPI` methods for traffic classification is built around two basic
assumptions:

* third parties unaffiliated with either source or recipient are able to
inspect each IP packet’s payload

* the classifier knows the relevant syntax of each application’s packet
payloads (protocol signatures, data patterns, etc.).

The proposed :term:`DPI` based approach will only use an indicative, small
number of the initial packets from each flow in order to identify the content
and not inspect each packet.

In this respect it follows the :term:`PBFS`. This method uses a table to track
each session based on the 5-tuples (src address, dest address, src port,dest
port, transport protocol) that is maintained for each flow.

Concepts
========

* *Traffic Inspection*: The process of packet analysis and application
identification of network traffic that passes through the :term:`VTC`.

* *Traffic Forwarding*: The process of packet forwarding from an incoming
network interface to a pre-defined outgoing network interface.

* *Traffic Rule Application*: The process of packet tagging, based on a
predefined set of rules. Packet tagging may include e.g. :term:`ToS` field
modification.

Architecture
============

The Traffic Inspection module is the most computationally intensive component
of the :term:`VNF`. It implements filtering and packet matching algorithms in
order to support the enhanced traffic forwarding capability of the :term:`VNF`.
The component supports a flow table (exploiting hashing algorithms for fast
indexing of flows) and an inspection engine for traffic classification.

The implementation used for these experiments exploits the nDPI library.
The packet capturing mechanism is implemented using libpcap. When the
:term:`DPI` engine identifies a new flow, the flow register is updated with the
appropriate information and transmitted across the Traffic Forwarding module,
which then applies any required policy updates.

The Traffic Forwarding moudle is responsible for routing and packet forwarding.
It accepts incoming network traffic, consults the flow table for classification
information for each incoming flow and then applies pre-defined policies
marking e.g. :term:`ToS`/:term:`DSCP` multimedia traffic for :term:`QoS`
enablement on the forwarded traffic.
It is assumed that the traffic is forwarded using the default policy until it
is identified and new policies are enforced.

The expected response delay is considered to be negligible, as only a small
number of packets are required to identify each flow.

Graphical Overview
==================

.. code-block:: console

  +----------------------------+
  |                            |
  | Virtual Traffic Classifier |
  |                            |
  |     Analysing/Forwarding   |
  |        ------------>       |
  |     ethA          ethB     |
  |                            |
  +----------------------------+
       |              ^
       |              |
       v              |
  +----------------------------+
  |                            |
  |     Virtual Switch         |
  |                            |
  +----------------------------+

Install
=======

run the build.sh with root privileges

Run
===

sudo ./pfbridge -a eth1 -b eth2

Development Environment
=======================

Ubuntu 14.04