Name: AFI
Owner: Juniper Networks
Description: null
Created: 2017-03-31 22:50:33.0
Updated: 2018-03-23 12:55:27.0
Pushed: 2018-01-08 20:00:48.0
Homepage: null
Size: 3186
Language: C++
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
Packet forwarding, at its core, is a sequence of operations executed by a packet forwarding engine (PFE). The packet forwarding engine, when given an input packet, performs this sequence of operations on the packet. Each of these operations can be represented by a node in a graph of potential packet forwarding operations. When a packet is given to packet forwarding engine, it executes the operations in the graph that match the packet. AFI provides third party developers with the ability to control and manage a section of forwarding path graph.
AFI views a forwarding path as a collection of connected nodes in a hybrid graph. AFI provides clients with the ability to program a section of the forwarding path via a small virtual container called a sandbox. Using AFI APIs, AFI client can create and manage forwarding paths inside a forwarding sandbox.
Please read 'AFI Introduction' document for a quick overview of AFI. Details of AFI APIs can be found in 'Doxygen Documentation'.
This repository provides -
Please note only important files and directories are listed here:
AFI
|-- LICENSE License
|-- README.md This README file
|-- tools
| `-- docker Files/scripts to build/setup docker container/s
|-- docs
| |-- AFI.pdf AFI Introduction document
| `-- doxygen Doxygen documentation
`-- example-clients Reference AFI clients
`-- afi-client
Packages available on vMX Eval Download page
AFI 1.0 Beta : VMX (beta) bundle which supports AFI
1.0 : AFI APIs libs/headers package
Note: A valid user account is required to access and download the files.
ware requirements
=================
essor:
Any x86 processor (Intel or AMD) with VT-d capability
er of Cores:
4 (1 for VCP and 3 for VFP)
ry:
Minimum:
8 GB (2 GB for VCP, 6 GB for VFP)
Additional
2 GB recommended for host OS
age:
Local or NAS. Minimum 200 GB is recommended.
r Requirement:
Intel VT-d capability
ware requirements
=================
ating system
Ubuntu 14.04 LTS (recommended host OS)
Linux 3.13.0-32-generic
You may want to refer to instructions provided on the following page to install docker engine on the host server
https://docs.docker.com/engine/installation/linux/ubuntulinux/
Note: Please follow the instructions provided on the above page for Ubuntu Trusty 14.04 (LTS)
Add following line in /etc/default/docker file
ER_OPTS="--bip=172.18.0.1/16"
and restart Docker service (sudo service docker restart)
The option '–bip=$DOCKER0_BRIDGE_IP' makes sure that Docker container uses $DOCKER0_BRIDGE_IP as IP for “docker0” bridge.
NOTE:
By default, docker uses location '/var/lib/docker' to install images. You can use '-g
clone https://github.com/Juniper/AFI.git
FI/tools/docker
er build -f Dockerfile_afi -t afi-docker .
Please download “vMX AFI 1.0 Beta (vmx-bundle-17.2I20170329_2254_sksodhi.tgz)” from Juniper vMX Eval download page vMX Eval Download, and copy it to AFI/tools/docker/ directory.
This step uses the container built in the previous step and builds another docker container where provided VMX can also be run.
FI/tools/docker
er build -f Dockerfile_afi_vmx --build-arg VMX_BUNDLE=<vmx bundle image> -t afi-vmx-docker .
er build -f Dockerfile_afi_vmx --build-arg VMX_BUNDLE=vmx-bundle-17.2I20170329_2254_sksodhi.tgz -t afi-vmx-docker .
er run -i -t --privileged afi-vmx-docker
root
ripts/setup_vmx.sh
Please wait for the following message to appear before proceeding with next step.
“VMX Setup Complete!”
Please allow few minutes for VMX setup to complete.
After this step, following setup/environment (less the afi-client) will be ready.
Please download “AFI 1.0 (afi-1.0.tgz)” from Juniper vMX Eval download page - vMX Eval Download
xf afi-1.0.tgz
Note: Please ignore any “Ignoring unknown extended header keyword” logs which are displayed while decompressing the tarball.
clone https://github.com/Juniper/AFI.git
Note: Please make sure that you clone afi repo at the same level where you decompressed 'AFI APIs libs/headers package' (i.e. afi-1.0.tgz)
FI/example-clients/afi-client/test/
n-afi-gtest
If all GTEST test cases pass, you are good to go.
Please refer example afi clients provided at ./example-clients.
Compiling/running instructions for each client can be found in the README file provided with the client.
Following directories need be added in the include path.
1.0/include/afi-transport/
1.0/include/aft-client/
AFI client application links with following libraries
1.0/lib/libafi-transport.so
1.0/lib/libaft-client.so
Sandesh Kumar Sodhi
sksodhi at juniper.net