19326e423SFeng Pan# fdio
29326e423SFeng Pan
39326e423SFeng Pan#### Table of Contents
49326e423SFeng Pan1. [Overview](#overview)
59326e423SFeng Pan1. [Module Description](#module-description)
69326e423SFeng Pan1. [Setup](#setup)
79326e423SFeng Pan1. [Usage](#usage)
89326e423SFeng Pan1. [Reference ](#reference)
99326e423SFeng Pan1. [Limitations](#limitations)
109326e423SFeng Pan1. [Development](#development)
119326e423SFeng Pan1. [Release Notes/Contributors](#release-notescontributors)
129326e423SFeng Pan
139326e423SFeng Pan## Overview
149326e423SFeng Pan
159326e423SFeng PanPuppet module that installs and configures [FD.io][1] projects VPP and Honeycomb Agent.
169326e423SFeng Pan
179326e423SFeng Pan## Module Description
189326e423SFeng Pan
199326e423SFeng PanDeploys FD.io projects to various OSs via package.
209326e423SFeng Pan
219326e423SFeng PanAll configuration should be handled through the Puppet module's [params](#parameters).
229326e423SFeng Pan
239326e423SFeng Pan## Setup
249326e423SFeng Pan
259326e423SFeng Pan### What `fdio` affects
269326e423SFeng Pan
279326e423SFeng Pan* [VPP][2], a packet processing platform.
289326e423SFeng Pan* [Honeycomb][3], a management agent for VPP.
299326e423SFeng Pan
309326e423SFeng Pan## Usage
319326e423SFeng Pan
329326e423SFeng PanThe most basic usage, passing no parameters to the fdio class, will install and start VPP with a default configuration.
339326e423SFeng Pan
349326e423SFeng Pan```puppet
359326e423SFeng Panclass { 'fdio':
369326e423SFeng Pan}
379326e423SFeng Pan```
389326e423SFeng Pan
399326e423SFeng Pan### Set uio-driver
409326e423SFeng Pan
419326e423SFeng PanTo set the uio-driver use the `vpp_dpdk_uio_driver` param.
429326e423SFeng Pan
439326e423SFeng Pan```puppet
449326e423SFeng Panclass { 'fdio':
459326e423SFeng Pan  vpp_dpdk_devs => ['0000:00:07.0'],
469326e423SFeng Pan  vpp_dpdk_uio_driver => 'vfio_pci',
479326e423SFeng Pan}
489326e423SFeng Pan```
499326e423SFeng Pan
509326e423SFeng Pan## Reference
519326e423SFeng Pan
529326e423SFeng Pan### Classes
539326e423SFeng Pan
549326e423SFeng Pan#### Public classes
559326e423SFeng Pan
569326e423SFeng Pan* `::fdio`: Main entry point to the module.
579326e423SFeng Pan* `::fdio::honeycomb`: Class to install and configure Honeycomb agent.
589326e423SFeng Pan
599326e423SFeng Pan#### Private classes
609326e423SFeng Pan
619326e423SFeng Pan* `::fdio::params`: Contains default class param values.
629326e423SFeng Pan* `::fdio::install`: Installs VPP from packages.
639326e423SFeng Pan* `::fdio::config`: Manages VPP startup config
649326e423SFeng Pan* `::fdio::service`: Shuts down and disables kernel interfaces, starts VPP service and configuring VPP interfaces
659326e423SFeng Pan
669326e423SFeng Pan
679326e423SFeng Pan#### Parameters
689326e423SFeng Pan
699326e423SFeng Pan#### `::fdio`
709326e423SFeng Pan
719326e423SFeng Pan##### `repo_branch`
729326e423SFeng Pan
739326e423SFeng PanFD.io repository branch name.
749326e423SFeng Pan
759326e423SFeng PanDefault: `release`
769326e423SFeng Pan
779326e423SFeng PanValid options: `release`, `master`, and branch name such as `stable.1609`.
789326e423SFeng Pan
799326e423SFeng Pan##### `vpp_dpdk_devs`
809326e423SFeng Pan
819326e423SFeng PanPCI devices to bind to VPP.
829326e423SFeng Pan
839326e423SFeng PanDefault: []
849326e423SFeng Pan
859326e423SFeng PanValid options: list of PCI devices in the form of "DDDD:BB:SS.F"
869326e423SFeng Pan
879326e423SFeng Pan##### `vpp_dpdk_uio_driver`
889326e423SFeng Pan
899326e423SFeng PanSets the uio-driver for VPP
909326e423SFeng Pan
9155c9ca2fSWojciech DecDefault: `undef`
929326e423SFeng Pan
939326e423SFeng PanValid 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.
949326e423SFeng Pan
959326e423SFeng Pan##### `vpp_vlan_enabled`
969326e423SFeng Pan
979326e423SFeng PanEnabled vlan tagged traffic on VPP interfaces. This is needed to configure vlan_strip_offload option for Cisco VIC interfaces.
989326e423SFeng Pan
999326e423SFeng PanDefault: `false`
1009326e423SFeng Pan
1019326e423SFeng PanValid options: `true`, `false`
1029326e423SFeng Pan
1039326e423SFeng Pan##### `vpp_cpu_main_core`
1049326e423SFeng Pan##### `vpp_cpu_corelist_worker`
1059326e423SFeng Pan
1069326e423SFeng PanVPP thread pinning configuration. Details about those options can be found [here][4].
1079326e423SFeng Pan
1089326e423SFeng PanDefault: `undef`
1099326e423SFeng Pan
1109326e423SFeng PanValid options: Same format as VPP startup config is accepted. Reference [here][4].
1119326e423SFeng Pan
1129326e423SFeng Pan##### `vpp_cpu_corelist_worker`
1139326e423SFeng Pan
1149326e423SFeng PanConfigures VPP interface with IP settings found on its corresponding kernel NIC.
1159326e423SFeng Pan
1169326e423SFeng PanDefault: `true`
1179326e423SFeng Pan
1189326e423SFeng PanValid options: `true`, `false`
1199326e423SFeng Pan
1209326e423SFeng Pan#### `::fdio::honeycomb`
1219326e423SFeng Pan
1229326e423SFeng Pan##### `rest_port`
1239326e423SFeng Pan
1249326e423SFeng PanPort for Honeycomb REST interface to listen on.
1259326e423SFeng Pan
1269326e423SFeng PanDefault: `'8181'`
1279326e423SFeng Pan
1289326e423SFeng PanValid options: Valid TCP port number.
1299326e423SFeng Pan
1309326e423SFeng Pan##### `websocket_rest_port`
1319326e423SFeng Pan
1329326e423SFeng PanPort for Honeycomb REST interface to listen on for websocket connections.
1339326e423SFeng Pan
1349326e423SFeng PanDefault: `'7779'`
1359326e423SFeng Pan
1369326e423SFeng PanValid options: Valid TCP port number.
1379326e423SFeng Pan
1389326e423SFeng Pan##### `user`
1399326e423SFeng Pan
1409326e423SFeng PanUsername to configure in honeycomb
1419326e423SFeng Pan
1429326e423SFeng PanDefault: `'admin'`
1439326e423SFeng Pan
1449326e423SFeng Pan##### `password`
1459326e423SFeng Pan
1469326e423SFeng PanPassword to configure in honeycomb
1479326e423SFeng Pan
1489326e423SFeng PanDefault: `'admin'`
1499326e423SFeng Pan
1509326e423SFeng Pan## Limitations
1519326e423SFeng Pan
1529326e423SFeng Pan* Currently only works on Centos 7. Ubuntu support will be added in the future.
1539326e423SFeng Pan
1549326e423SFeng Pan## Development
1559326e423SFeng Pan
1569326e423SFeng PanWe welcome contributions and work to make them easy!
1579326e423SFeng Pan
1589326e423SFeng Pan## Release Notes/Contributors
1599326e423SFeng Pan
1609326e423SFeng Pan
1619326e423SFeng Pan[1]: https://fd.io/
1629326e423SFeng Pan[2]: https://wiki.fd.io/view/VPP
1639326e423SFeng Pan[3]: https://wiki.fd.io/view/Honeycomb
1649326e423SFeng Pan[4]: https://wiki.fd.io/view/VPP/Command-line_Arguments#.22cpu.22_parameters