aboutsummaryrefslogtreecommitdiffstats
path: root/flowtable/README.md
blob: 03c4a042116765cd2605e66c73d961af64bbb53a (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
# A flowtable plugin

Provides a flowtable node to do flow classification, and associate a flow
context that can be enriched as needed by another node or an external
application. The objective is to be adaptable so as to be used for any
statefull use such as load-balancing, firewalling ...

Compared to the classifier, it stores a flow context, which changes the following:
- a flow context (which can be updated with external informations)
- it can offload
- flows have a lifetime

## Build/Install

Patches summary:
 - The flowtable plugin: 0001-Add-flowtable-feature.patch
 - Example nodeusing the flowtable: 0002-Add-Port-Mirroring-feature.patch
 - The est scripts I used: 0003-test-scripts.patch


The tests scripts are used are under ft-test.
They tests the functionality versus the classifier.

Apply the patches to vpp:
```
git am -3 0001-Add-flowtable-feature.patch
git am -3 0002-Add-Port-Mirroring-feature.patch
git am -3 0003-test-scripts.patch
```

After that, you shoud be able to build the plugins as part of the make *plugins*
target as usual:
```
make bootstrap
make build
make build-vpp-api
make plugins
```

## Test

In itself, the flowtable only provides a context and an API.
I added a simple port-mirroring as a test.

I might add some other test examples if needed.

## Administrative

### Current status

Currently :
- Default behavior is to connect transparently to given interface.
- Can reroute packets to given node
- Can receive additional information
- Can offload sessions
- Only support IP packets

I'm still working on this, do not support multithreading, and haven't
gone through performance tests yet.

Planned :
- improve flow statistics, and add a way to get them back at expiration time
- improve timer management (tcp sm state)

### Objective

The objective of this project is to provide a stateful node with flow-level
API, available for consecutive nodes or external applications.

### Main contributors

- Gabriel Ganne - gabriel.ganne@qosmos.com
- Christophe Fontaine - christophe.fontaine@qosmos.com
  (https://github.com/christophefontaine/flowtable-plugin)