libTFO is a flow offloading decision engine designed for switch controllers. While providing flow-based traffic statistics to libTFO, controllers may use libTFO to decide which FIB entries to install into the FIB of the fast forwarding plane, and which entries to handle in a reactive way or through an alternative (slower, cheaper) forwarding path. The definition of a flow is entirely up to the controller, as well as the actions that are supposed to be performed on packets of a flow. Also, libTFO does not directly communicate with either forwarding plane, which makes it effectively technology independent.

The algorithm implemented by libTFO is based on the following research paper:

Nadi Sarrar, Steve Uhlig, Anja Feldmann, Rob Sherwood, Xin Huang. Leveraging Zipf's Law for Traffic Offloading. ACM SIGCOMM Computer Communications Review (CCR). January 2012.

Please visit for downloads and updates.

Nadi Sarrar <>


libTFO, a flow offloading decision engine designed for switch controllers.

Copyright (C) 2010, 2011 Nadi Sarrar <>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <>.

 All Classes Files Functions Typedefs Enumerations Enumerator