-
Notifications
You must be signed in to change notification settings - Fork 72
/
README
149 lines (91 loc) · 5.01 KB
/
README
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
What it is
==========
"The OpenFlow eXtensible DataPath daemon (xDPd) is a multi-platform, multi OF version, open-source datapath built focusing on performance and extensibility."
xDPd can also be considered a framework for building OpenFlow datapath elements, as it is designed to be easily extended with the support of new forwarding devices.
Supported platforms (drivers)
=============================
Shipped with all xDPd instances:
- GNU/Linux amd64/x86 user-space with MMAP suppport (`gnu-linux`). open-source
- GNU/Linux Intel's DPDK accelerated driver (`gnu-linux-dpdk`). open-source
- NetFGPA-10G (`netfpga10g`). open-source.
Also available:
- Broadcom Triumph2 (`bcm`).
- Octeon network processors (`octeon`).
- Other: refer to the wiki page for more details
You may want to have a look to the particular README pages of each platform by inspecting:
src/xdpd/drivers/{platform_name}/README
Requirements
============
- A modern GNU build-system (autoconf, automake, libtool, ...)
- GNU/Linux and libc development headers (linux-libc-dev and libc6-dev package in Debian/Ubuntu systems)
- libconfig C++ lib (libconfig++-dev in Debian/Ubuntu systems)
- openssl (rofl-common, libssl-dev in Debian/Ubuntu systems)
- [optional] if you want to run automatic tests (make check), libcunit and libcppunit are required (in libcunit1-dev and libcppunit-dev packages in Debian-like systems).
- [optional] Doxygen to generate the documentation.
[1] https://github.com/bisdn/rofl-common
[2] https://github.com/bisdn/rofl-datapath
How to build
============
Install the dependencies and run:
sh# ./autogen.sh
sh# mkdir -p build
sh# cd build
sh# ../configure
sh# make
sh# make install
Optionally you can `make check` for consistency checks. For other platforms different than `gnu-linux`, please make sure `--with-hw-support=platform-name` is specified, and that the appropriate README is read (e.g. src/xdpd/drivers/example/README).
How to run it
================================
The default management plugin is `config`. Read README-conf-file for more information.
Copy the example.cfg:
sh# cd build/src/xdpd
sh# cp ../../../src/xdpd/management/plugins/config/example.cfg .
Now edit the configuration. Make sure ports attached to the Logical Switch Instance (LSI) exist in the system.
sh# vi example.cfg
Run xdpd:
sh# ./xdpd -c example.cfg
Troubleshooting
===============
What to do if something doesn't work...
1. Check the controller <-> LSI OF channel. Launch xDPd with debug level 8 for maximum OF control channel output. Check the very basics (addresses, ports and OF versions).
2. To troubleshoot problems with flowmod/groupmod check the OF control channel to see if the messages are correctly interpreted by the endpoint.
3. If they are correct, you can check whether they have been installed in the datapath by either using a controller or using the REST plugin + CLI (remember you have to compile in the support for REST); e.g. `xcli -c "show list dp0 table 0 flows"`.
If this is not enough, you can always compile xDPd with debug (warning: it affects performance) to see the output of the fast-path. To do so:
cd <path_to_xdpd_folder>
cd build
../configure --enable-debug # add extra parameters...
make clean-libs # Clean the compiled libraries (compile them with debug)
make clean # Clean xDPd code
make -j2
And then launch xdpd with debug level 7 or more:
./xdpd -c config_file.cfg -d 8
If you think this there is a bug, please report it to the issue tracker / mailing list.
Optional ../configure parameters
================================
--with-hw-support=platform-name: Compiles support for the platform-name (platform driver). Default is gnu-linux.
--with-plugins="plugin1...pluginN": Compile with plugin1..pluginN enabled. Default is --with-plugins="config" plugin.
--enable-debug: Compile with debug symbols (-g) and debug output, -O0 (warning, it may affect performance).
--disable-silent-rules: Enable verbose compilation mode (AM_SILENT_RULES disabled)
Doxygen documentation
=====================
You can have a look on:
http://www.xdpd.org/doc/
Documentation can be compiled via `make doc`. Documentation is generated in build/doc/ folder
RYU certification for gnu-linux/gnu-linux-dpdk: check doc/gnu-linux-ryu.cert
Known issues
============
* Certain GCC 4.8.X family versions are buggy and don't properly compile xDPd with -O3 optimizations. Please use GCC 4.8.3 or higher, or another version family. E.g. for gcc-4.7:
CC=gcc-4.7 CXX=g++-4.7 ../configure
More information, documentation and support
===========================================
http://www.xdpd.org
https://github.com/bisdn/xdpd
For getting support or participate in the discussions, join the mailing list [email protected] at https://lists.xdpd.org/mailman
Authorship
==========
(c) Copyright BISDN GmbH 2013
Marc Sune<marc.sune (at) bisdn.de>
Andreas Koepsel<andreas.koepsel (at) bisdn.de>
Victor Alvarez<victor.alvarez (at) bisdn.de>
Tobias Jungel<tobias.jungel (at) bisdn.de>
And others