大家好,欢迎来到IT知识分享网。
链路聚合LAG是指将多个网口组成一个逻辑网口,以提升带宽或者实现容错。
LAG在实现上有多种模式,大体可划分为备份和负荷分担两类。一个聚合口管理多个slave口,根据不同模式进行报文分配。
Linux提供bonding驱动来支持LAG,而Windows提供NIC Teaming技术。
Linux支持的Bonding模式
balance-rr (0)
属于分担模式,也提供容错能力。该模式下slave口按顺序轮流发包。
active-backup (1)
热备份模式。只有一个slave口为active状态,只有当前active口出问题了,才会切换到另一个slave口。
balance-xor (2)
负荷分担模式。根据报文内容做哈希计算来选择slave口,算法可通过xmit_hash_policy配置,默认算法是取源的目的MAC地址做异或运算,这种算法可以保证同一个二层连接使用的是同一个slave口。
broadcast (3)
容错模式。报文通过所有slave口发出。
802.3ad (4)
支持IEEE 802.3ad的模式
balance-tlb (5)
负荷分担模式。自适应发包负荷分担,根据配置有不同行为:
- tlb_dynamic_lb=1 出向报文根据每个slave口的当前负载确定
- tlb_dynamic_lb=0 不考虑每个slave口的当前负载,只看哈希计算。
入向报文由当前slave接收,如果该slave出错,由另一个slave接管MAC地址。这种模式无需配置交换。
balance-alb (6)
负荷分担模式。与balance-tlb一样,再包含了入向报文的负荷分担。这种模式也无需配置交换。
Bonding配置
配置bonding驱动有多种方式,可以通过内核模块配置、initscripts等,这里只介绍 network scripts 的方式。
配置完成后,重启networking服务生效。除了通过 ifconfig 查看,也可以通过 /proc/net/bonding/bond0 查看
Redhat系列的配置
以两个网口eth0和eth1在linux下配置bond0为例,修改 ifcfg-eth0 和 ifcfg-eth1 配置文件
ONBOOT=yes # 选配 BOOTPROTO=none MASTER=bond0 SLAVE=yes
创建 ifcfg-bond0 配置文件
DEVICE=bond0 NAME=bond0 TYPE=Bond BOOTPROTO=none ONBOOT=yes BONDING_MASTER=yes BONDING_OPTS="mode=1 miimon=100" # bonding的配置都在这里,mode=1也可以写为active-backup IPADDR=... NETMASK=...
Bond口的mac地址可以通过MACADDR修改,但不能设置HWADDR,HWADDR只能用在真实存在的物理设备。
Debian系列的配置
ubuntu主配置文件 /etc/network/interfaces
也可以在interfaces.d里放配置文件,但interfaces需要添加 source /etc/network/interfaces.d/* (16.04以前是source-directory /etc/network/interfaces.d)
eth0, eth1配置bond0,active-backup模式,eth0为主用口:
# eth0 is manually configured, and slave to the "bond0" bonded NIC auto eth0 iface eth0 inet manual bond-master bond0 bond-primary eth0 # eth1 ditto, thus creating a 2-link bond. auto eth1 iface eth1 inet manual bond-master bond0 # bond0 is the bonding NIC and can be used like any other normal NIC. # bond0 is configured using static network information. auto bond0 iface bond0 inet static address 192.168.1.10 gateway 192.168.1.1 netmask 255.255.255.0 bond-mode active-backup bond-miimon 100 bond-slaves none
使用802.3ad LACP协议:
# eth0 is manually configured, and slave to the "bond0" bonded NIC auto eth0 iface eth0 inet manual bond-master bond0 # eth1 ditto, thus creating a 2-link bond. auto eth1 iface eth1 inet manual bond-master bond0 # bond0 is the bonded NIC and can be used like any other normal NIC. # bond0 is configured using static network information. auto bond0 iface bond0 inet static address 192.168.1.10 gateway 192.168.1.1 netmask 255.255.255.0 # bond0 uses standard IEEE 802.3ad LACP bonding protocol bond-mode 4 bond-miimon 100 bond-lacp-rate 1 bond-slaves eth0 eth1
bond-mode指定bonding模式
ubuntu16.04默认不加载bonding驱动,需要在/etc/modules里添加bonding模块,或通过modprobe bonding手工加载。
ubuntu16.04还需要安装ifenslave包才能支持bonding。官方文档见https://help.ubuntu.com/community/UbuntuBonding
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/85438.html