1# fdio
2
3#### Table of Contents
41. [Overview](#overview)
51. [Module Description](#module-description)
61. [Setup](#setup)
71. [Usage](#usage)
81. [Reference ](#reference)
91. [Limitations](#limitations)
101. [Development](#development)
111. [Release Notes/Contributors](#release-notescontributors)
12
13## Overview
14
15Puppet module that installs and configures [FD.io][1] projects VPP and Honeycomb Agent.
16
17## Module Description
18
19Deploys FD.io projects to various OSs via package.
20
21All configuration should be handled through the Puppet module's [params](#parameters).
22
23## Setup
24
25### What `fdio` affects
26
27* [VPP][2], a packet processing platform.
28* [Honeycomb][3], a management agent for VPP.
29
30## Usage
31
32The most basic usage, passing no parameters to the fdio class, will install and start VPP with a default configuration.
33
34```puppet
35class { 'fdio':
36}
37```
38
39### Set uio-driver
40
41To set the uio-driver use the `vpp_dpdk_uio_driver` param.
42
43```puppet
44class { 'fdio':
45  vpp_dpdk_devs => ['0000:00:07.0'],
46  vpp_dpdk_uio_driver => 'vfio_pci',
47}
48```
49
50## Reference
51
52### Classes
53
54#### Public classes
55
56* `::fdio`: Main entry point to the module.
57* `::fdio::honeycomb`: Class to install and configure Honeycomb agent.
58
59#### Private classes
60
61* `::fdio::params`: Contains default class param values.
62* `::fdio::install`: Installs VPP from packages.
63* `::fdio::config`: Manages VPP startup config
64* `::fdio::service`: Shuts down and disables kernel interfaces, starts VPP service and configuring VPP interfaces
65
66
67#### Parameters
68
69#### `::fdio`
70
71##### `repo_branch`
72
73FD.io repository branch name.
74
75Default: `release`
76
77Valid options: `release`, `master`, and branch name such as `stable.1609`.
78
79##### `vpp_dpdk_devs`
80
81PCI devices to bind to VPP.
82
83Default: []
84
85Valid options: list of PCI devices in the form of "DDDD:BB:SS.F"
86
87##### `vpp_dpdk_uio_driver`
88
89Sets the uio-driver for VPP
90
91Default: `undef`
92
93Valid options: `vfio-pci`, `uio_pci_generic` and `igb_uio`. Note that `igb_uio` must be already loaded in the kernel before this module is invoked.
94
95##### `vpp_vlan_enabled`
96
97Enabled vlan tagged traffic on VPP interfaces. This is needed to configure vlan_strip_offload option for Cisco VIC interfaces.
98
99Default: `false`
100
101Valid options: `true`, `false`
102
103##### `vpp_cpu_main_core`
104##### `vpp_cpu_corelist_worker`
105
106VPP thread pinning configuration. Details about those options can be found [here][4].
107
108Default: `undef`
109
110Valid options: Same format as VPP startup config is accepted. Reference [here][4].
111
112##### `vpp_cpu_corelist_worker`
113
114Configures VPP interface with IP settings found on its corresponding kernel NIC.
115
116Default: `true`
117
118Valid options: `true`, `false`
119
120#### `::fdio::honeycomb`
121
122##### `rest_port`
123
124Port for Honeycomb REST interface to listen on.
125
126Default: `'8181'`
127
128Valid options: Valid TCP port number.
129
130##### `websocket_rest_port`
131
132Port for Honeycomb REST interface to listen on for websocket connections.
133
134Default: `'7779'`
135
136Valid options: Valid TCP port number.
137
138##### `user`
139
140Username to configure in honeycomb
141
142Default: `'admin'`
143
144##### `password`
145
146Password to configure in honeycomb
147
148Default: `'admin'`
149
150## Limitations
151
152* Currently only works on Centos 7. Ubuntu support will be added in the future.
153
154## Development
155
156We welcome contributions and work to make them easy!
157
158## Release Notes/Contributors
159
160
161[1]: https://fd.io/
162[2]: https://wiki.fd.io/view/VPP
163[3]: https://wiki.fd.io/view/Honeycomb
164[4]: https://wiki.fd.io/view/VPP/Command-line_Arguments#.22cpu.22_parameters