IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Configuring Bonding Manually via Sysfs

    hev发表于 2018-06-26 14:22:52
    love 0
    Configuring Bonding Manually via Sysfs
    ------------------------------------------
    
    	Starting with version 3.0.0, Channel Bonding may be configured
    via the sysfs interface.  This interface allows dynamic configuration
    of all bonds in the system without unloading the module.  It also
    allows for adding and removing bonds at runtime.  Ifenslave is no
    longer required, though it is still supported.
    
    	Use of the sysfs interface allows you to use multiple bonds
    with different configurations without having to reload the module.
    It also allows you to use multiple, differently configured bonds when
    bonding is compiled into the kernel.
    
    	You must have the sysfs filesystem mounted to configure
    bonding this way.  The examples in this document assume that you
    are using the standard mount point for sysfs, e.g. /sys.  If your
    sysfs filesystem is mounted elsewhere, you will need to adjust the
    example paths accordingly.
    
    Creating and Destroying Bonds
    -----------------------------
    To add a new bond foo:
    # echo +foo > /sys/class/net/bonding_masters
    
    To remove an existing bond bar:
    # echo -bar > /sys/class/net/bonding_masters
    
    To show all existing bonds:
    # cat /sys/class/net/bonding_masters
    
    NOTE: due to 4K size limitation of sysfs files, this list may be
    truncated if you have more than a few hundred bonds.  This is unlikely
    to occur under normal operating conditions.
    
    Adding and Removing Slaves
    --------------------------
    	Interfaces may be enslaved to a bond using the file
    /sys/class/net//bonding/slaves.  The semantics for this file
    are the same as for the bonding_masters file.
    
    To enslave interface eth0 to bond bond0:
    # ifconfig bond0 up
    # echo +eth0 > /sys/class/net/bond0/bonding/slaves
    
    To free slave eth0 from bond bond0:
    # echo -eth0 > /sys/class/net/bond0/bonding/slaves
    
    	When an interface is enslaved to a bond, symlinks between the
    two are created in the sysfs filesystem.  In this case, you would get
    /sys/class/net/bond0/slave_eth0 pointing to /sys/class/net/eth0, and
    /sys/class/net/eth0/master pointing to /sys/class/net/bond0.
    
    	This means that you can tell quickly whether or not an
    interface is enslaved by looking for the master symlink.  Thus:
    # echo -eth0 > /sys/class/net/eth0/master/bonding/slaves
    will free eth0 from whatever bond it is enslaved to, regardless of
    the name of the bond interface.
    
    Changing a Bond's Configuration
    -------------------------------
    	Each bond may be configured individually by manipulating the
    files located in /sys/class/net//bonding
    
    	The names of these files correspond directly with the command-
    line parameters described elsewhere in this file, and, with the
    exception of arp_ip_target, they accept the same values.  To see the
    current setting, simply cat the appropriate file.
    
    	A few examples will be given here; for specific usage
    guidelines for each parameter, see the appropriate section in this
    document.
    
    To configure bond0 for balance-alb mode:
    # ifconfig bond0 down
    # echo 6 > /sys/class/net/bond0/bonding/mode
     - or -
    # echo balance-alb > /sys/class/net/bond0/bonding/mode
    	NOTE: The bond interface must be down before the mode can be
    changed.
    
    To enable MII monitoring on bond0 with a 1 second interval:
    # echo 1000 > /sys/class/net/bond0/bonding/miimon
    	NOTE: If ARP monitoring is enabled, it will disabled when MII
    monitoring is enabled, and vice-versa.
    
    To add ARP targets:
    # echo +192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
    # echo +192.168.0.101 > /sys/class/net/bond0/bonding/arp_ip_target
    	NOTE:  up to 16 target addresses may be specified.
    
    To remove an ARP target:
    # echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target
    
    To configure the interval between learning packet transmits:
    # echo 12 > /sys/class/net/bond0/bonding/lp_interval
    	NOTE: the lp_inteval is the number of seconds between instances where
    the bonding driver sends learning packets to each slaves peer switch.  The
    default interval is 1 second.
    
    Example Configuration
    ---------------------
    	We begin with the same example that is shown in section 3.3,
    executed with sysfs, and without using ifenslave.
    
    	To make a simple bond of two e100 devices (presumed to be eth0
    and eth1), and have it persist across reboots, edit the appropriate
    file (/etc/init.d/boot.local or /etc/rc.d/rc.local), and add the
    following:
    
    modprobe bonding
    modprobe e100
    echo balance-alb > /sys/class/net/bond0/bonding/mode
    ifconfig bond0 192.168.1.1 netmask 255.255.255.0 up
    echo 100 > /sys/class/net/bond0/bonding/miimon
    echo +eth0 > /sys/class/net/bond0/bonding/slaves
    echo +eth1 > /sys/class/net/bond0/bonding/slaves
    
    	To add a second bond, with two e1000 interfaces in
    active-backup mode, using ARP monitoring, add the following lines to
    your init script:
    
    modprobe e1000
    echo +bond1 > /sys/class/net/bonding_masters
    echo active-backup > /sys/class/net/bond1/bonding/mode
    ifconfig bond1 192.168.2.1 netmask 255.255.255.0 up
    echo +192.168.2.100 /sys/class/net/bond1/bonding/arp_ip_target
    echo 2000 > /sys/class/net/bond1/bonding/arp_interval
    echo +eth2 > /sys/class/net/bond1/bonding/slaves
    echo +eth3 > /sys/class/net/bond1/bonding/slaves
    

    See also: https://www.kernel.org/doc/Documentation/networking/bonding.txt
    Over!



沪ICP备19023445号-2号
友情链接