Provided by: ubuntu-fan_0.3.0~14.04.1_all bug

NAME

       fanctl - fan bridge administration

SYNOPSIS

       fanctl up|down <overlay> <underlay> [<options>...]
       fanctl up|down -a
       fanctl down -e
       fanctl show

DESCRIPTION

       fanctl is used to set up, tear down, and inspect Fan bridge mappings and devices in the linux kernel.

       A  network  fan is a mechanism for expanding the range of IP addresses available to a system.  It is most
       useful for containers such as Docker and LXC/LXD, but it can be used in  other  contexts  as  well.   Fan
       works  by  creating  a  bridge  that  uses  a mathematical mapping between the host's (or underlay's) /16
       address and the fan's (or overlay's) /8 address. By mapping addresses in this way, a 253-fold increase in
       address space can be achieved.  For example, if the host machine  uses  a  subnet  of  172.16.0.0/16  and
       assigns  a  fan  to  an IP address of 172.16.3.4, the fan's overlay addresses will be in the 10.3.4.0/24,
       where 10 is derived from the user defined overlay network prefix.

COMMAND SYNTAX

       fanctl up <overlay> <underlay> [<options>]
              sets up a new Fan bridge mapping overlay addresses to the corresponding underlay addresses on  the
              local  network.  Using  the  example,  the new bridge is named fan-10-3-4 based on the overlay and
              underlay addresses specified (see ADDRESSING below).  The options are  described  in  the  OPTIONS
              section below.

       fanctl down <overlay> <underlay>
              tears  down  a previous set up Fan bridge and associated mapping.  This will fail if the bridge is
              still in use.

       fanctl up -a
              sets up all Fans defined in /etc/network/fan if present.

       fanctl down -a
              tears down all automatically defined Fan bridges on the system.  These may be  identified  in  the
              fanctl show output via the auto flag.

       fanctl down -e
              tears down all defined Fan bridges on the system.

       fanctl show
              lists all currently defined Fan bridges in the system:

              $ fanctl show
              Bridge       Overlay      Underlay       Flags
              fan-10-3-4   10.0.0.0/8   172.16.3.4/16  dhcp host-reserve 1
              $

ADDRESSING

       The  Fan mapping is defined by a combination of the underlay and overlay addresses.  Each is defined as a
       CIDR network address.  For example:

              $ fanctl up 10.0.0.0/8 172.16.3.4/16

       This defines an overlay of 10.0.0.0/8 and an underlay of 172.16.3.4.  When  mapping  an  address  in  the
       10.0.0.0/8  subnet,  we  will  take  the 16 bits of destination address starting at bit 8 and replace the
       bottom 16 bits of the underlay address with it.  For example attempting to talk to 10.3.4.15 will trigger
       the packet to be sent to 172.16.3.4 for delivery.

LIMITATIONS

       Currently we are only able to apply overlay addresses with a /8 network mask, and underlay addresses with
       a /16 network mask.  We expect to relax this limitation in a later update.

OPTIONS

       dhcp   turns on automatic address allocation for the Fan bridge.  A dnsmasq instance is started  attached
              to the bridge allocating the unreserved addresses to entities attached to the Fan bridge.

       host-reserve <count>
              by  default  the  .1 address on the Fan bridge is allocated to the host allowing it to communicate
              with entities on the Fan bridge.  This option allows further addresses to  be  reserved  for  host
              applications to bind to.  A host-reserve 4 reserves .1 through .4 in the Fan bridge for host use.

       bridge <name>
              by  default  the  bridge  name  is  based  on  the  overlay  and underlay addresses specified (see
              ADDRESSING above), override to a specific name.

       off    this option prevents the Fan bridge from being configured.  This is primarily used  to  allow  Fan
              mappings to be defined but disabled in /etc/network/fan (See PERSISTANT CONFIGURATION below).

FAN BRIDGES

       Each  Fan  bridge  represents a slice of a Fan overlay network which is expressed locally on the machine.
       The Fan bridge will have the overlay addresses representing one local IP address mapped to it.  A machine
       may have more than one local address on the underlay network allowing it to have more than one such slice
       mapped.  It may also have more than one overlay range defined for each local IP address.

       Each fan bridge is a separate broadcast domain,  with  routing  between  the  bridges  both  locally  and
       globally within the Fan.

       Each fan bridge appears as a bridge on the system, named for the overlay subnet hosted by that particular
       fan  bridge  and  the  underlay  address  prefix  for  which  is  carries traffic.  For our 10.0.0.0/8 on
       172.16.3.4 example the bridge would be named fan-10-3-4 and would carry all traffic for 10.3.4.0/24

PERSISTANT CONFIGURATION

       There are two main ways to configure Fan bridges.  Firstly via /etc/network/interfaces and  secondly  via
       /etc/network/fan

       Fan bridges are configured in /etc/network/interfaces using the up and down command callouts:

              iface eth0 dhcp
                      up fanctl up 10.0.0.0/8 eth0/16 dhcp
                      down fanctl down 10.0.0.0/8 eth0/16

       Fan bridges are configured in /etc/network/fan by listing overlay, underlay,
       and flag combinations.  For example:

              # fan 10
              10.0.0.0/8 172.16.3.4/16 dhcp
              10.0.0.0/8 172.16.3.5/16 dhcp off
              # fan 241
              241.0.0.0/8 172.16.3.4/16 dhcp
              241.0.0.0/8 172.16.3.5/16 dhcp

       Note that comments are introduced via a hash (#) in the first column, and blank
       lines are ignored.

USE WITH LXC/LXD

       Once  the  Fan  bridges  are  configured, LXC/LXD is typically configured to use a specific fan device by
       either creating a new configuration template with the appropriate bridge specifiers, or by modifying  the
       default configuration template similarly.  Configure the bridge and MTU as below:

              lxc.network.link = fan-10-3-4
              lxc.network.mtu = 1480

       To change the default template apply these changes to /etc/lxc/default.conf.

USE WITH DOCKER

       Once the Fan bridges are configured (and docker installed), edit /etc/default/docker.io, adding:

              DOCKER_OPTS="-d -b fan-10-3-4 --mtu=1480 --iptables=false"

       And then restart docker.io:

              sudo service docker.io restart

       Docker instances will now use the specified fan.  Note that currently
       only one Fan bridge and subnet may be used at a time with a running
       docker instance.

SEE ALSO

       /usr/share/doc/ubuntu-fan/README
       http://www.ubuntu.com/fan

AUTHOR

       Andy Whitcroft <apw@canonical.com>

                                                  June 19, 2015                                        FANCTL(8)