IRF(智能弹性架构)技术+LACP 链路聚合控制协议+Bond0(多网卡绑定技术)相结合起来,由多条物理链路汇聚成一条逻辑总链路,这样提高链路的带宽、提高了链路的可靠性、易用性,通过汇聚后交换机的2链路接口和Linux服务器的2网卡接口会同时收发数据,达到了一种网络负载均衡的效果,下面就一一介绍相关技术专业术语及配置步骤。

拓扑图如下:
IRF+LACP+bond0网络负载均衡配置

一、IRF(智能弹性架构)技术
1.1 简介
IRF(Intelligent Resilient Framework,智能弹性架构)是 H3C自主研发的软件虚拟化技术。它的
核心思想是将多台设备通过 IRF物理端口连接在一起,进行必要的配置后,虚拟化成一台“分布式
设备”。使用这种虚拟化技术可以实现多台设备的协同工作、统一管理和不间断维护。
为了便于描述,这个“虚拟设备”也称为 IRF。所以,本文中的 IRF有两层意思,一个是指 IRF技术,一个是指 IRF设备。

1.2 IRF的优点
IRF主要具有以下优点:
 简化管理。IRF 形成之后,用户通过任意成员设备的任意端口都可以登录 IRF 系统, 对 IRF内所有成员设备进行统一管理。
 高可靠性。IRF的高可靠性体现在多个方面,例如:IRF由多台成员设备组成,Master设备负
责 IRF的运行、管理和维护,Slave设备在作为备份的同时也可以处理业务。一旦 Master设备故障,系统会迅速自动选举新的 Master,以保证业务不中断,从而实现了设备的 1:N备份;此外,成员设备之间的 IRF链路支持聚合功能,IRF和上、下层设备之间的物理链路也支持聚合功能,多条链路之间可以互为备份也可以进行负载分担,从而进一步提高了 IRF的可靠性。
 强大的网络扩展能力。通过增加成员设备,可以轻松自如的扩展 IRF 的端口数、带宽。因为各成员设备都有 CPU,能够独立处理协议报文、进行报文转发,所以 IRF还能够轻松自如的扩展处理能力

1.3 IRF 配置
组网拓扑图如下(2个CX4万兆模块互联):
IRF+LACP+bond0网络负载均衡配置

IRF前注意事项:
1、先规划好IRF 的逻辑ID号,每台都是唯一的,按照数字1,2,3数字排下去。
2、IRF前先不要连接堆叠光缆,在配置的时候也要把堆叠端口给关闭
3、IRF配置命令配置完成后保存配置文件,然后给交换机断电插上堆叠电缆重新启动交换机就可以了。

1、查看2台H3C 5500的交换机IOS版本,版本一致才能配置IRF(智能弹性架构)

[H3C]dis version
H3C Comware Platform Software
Comware Software, Version 5.20, Release 2210
Copyright (c) 2004-2011 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
H3C S5500-28C-EI uptime is 0 week, 0 day, 0 hour, 3 minutes

2、开始2台H3C 5500交换机单独配置IRF

==SW1==

[H3C]irf member 1 renumber 1 //更改IRF 逻辑ID

[H3C]interface Ten-GigabitEthernet 1/1/1 //进入万兆端口
[H3C-Ten-GigabitEthernet2/2/1]shut //关闭该端口

[H3C]interface Ten-GigabitEthernet 1/1/2
[H3C-Ten-GigabitEthernet2/2/2]shut

[H3C-5500-1#]irf-port 1/1 //进入IRF逻辑组
[]port group interface Ten-GigabitEthernet1/1/1 mode normal //把该端口加入IRF逻辑组

[]irf-port 1/2
[]port group interface Ten-GigabitEthernet1/1/2 mode normal //把该端口加入IRF逻辑组

[H3C]interface Ten-GigabitEthernet 1/1/1
[H3C-Ten-GigabitEthernet2/2/1]undo shut //启动该端口

[H3C]interface Ten-GigabitEthernet 1/1/2
[H3C-Ten-GigabitEthernet2/2/2]undo shut //启动该端口

[h3c]quit
[h3c]save //保存配置

SW2的配置与SW1的配置一样,注意IRF ID不能一样。

==SW2==

[H3C-5500]irf member 1 renumber 2

[H3C]interface Ten-GigabitEthernet 1/1/1
[H3C-Ten-GigabitEthernet2/2/1]shut

[H3C]interface Ten-GigabitEthernet 1/1/2
[H3C-Ten-GigabitEthernet2/2/2]shut

[H3C]interface Ten-GigabitEthernet 2/2/1
[H3C-Ten-GigabitEthernet2/2/1]shut

[H3C]interface Ten-GigabitEthernet 2/2/2
[H3C-Ten-GigabitEthernet2/2/2]shut

[h3c]irf-port 2/1
port group interface Ten-GigabitEthernet2/2/1 mode normal

[h3c]irf-port 2/2
port group interface Ten-GigabitEthernet2/2/2 mode normal

[H3C]interface Ten-GigabitEthernet 1/1/1
[H3C-Ten-GigabitEthernet2/2/1]undo shut

[H3C]interface Ten-GigabitEthernet 1/1/2
[H3C-Ten-GigabitEthernet2/2/2]undo shut

配置完保存,断电交换机—>插上堆叠线缆—>重启交换机 OK

3、查看IRF配置是否成功(看到如下字样就是代表这2台堆叠成功)

[H3C-5500-IRF]dis irf configuration
MemberID NewID IRF-Port1 IRF-Port2
1 1 1 2

*2 2 3 4

indicates the device is the master.
indicates the device through which the user logs in.
[H3C-5500-IRF]dis irf topology

Topology Info

         IRF-Port1                  IRF-Port2

1
2
Switch Link member neighbor Link member neighbor Belong To
*2 UP 3 1 UP 4 1 3ce5-a64f-033c

1 UP 1 2 UP 2 2 3ce5-a64f-033c

indicates the device is the master.
indicates the device through which the user logs in.
二、LACP链路聚合简介

2.1 链路聚合的作用
链路聚合是将多个物理以太网端口聚合在一起形成一个逻辑上的聚合组,使用链路
聚合服务的上层实体把同一聚合组内的多条物理链路视为一条逻辑链路。
链路聚合可以实现流量在聚合组中各个成员端口之间进行分担,以增加带宽。同时,
同一聚合组的各个成员端口之间彼此动态备份,提高了连接可靠性。

2.2 LACP协议简介
LACP(Link Aggregation Control Protocol,链路聚合控制协议)是一种基于
IEEE802.3ad 标准的协议。LACP 协议通过 LACPDU(Link Aggregation Control
Protocol Data Unit,链路聚合控制协议数据单元)与对端交互信息。
使能某端口的 LACP 协议后,该端口将通过发送 LACPDU 向对端通告自己的系统
LACP协议优先级、系统MAC、端口的 LACP协议优先级、端口号和操作 Key。对
端接收到 LACPDU后,将其中的信息与其它端口所收到的信息进行比较,以选择能
够处于 Selected状态的端口,从而双方可以对端口处于 Selected状态达成一致。
操作 Key是在链路聚合时,聚合控制根据端口的配置(即速率、双工模式、up/down
状态、基本配置等信息)自动生成的一个配置组合。在聚合组中,处于 Selected状
态的端口有相同的操作 Key。

2.3 LACP链路聚合配置

拓扑图以真实环境为例:
IRF+LACP+bond0网络负载均衡配置

做LACP链路聚合注意几个事项:
1、保证2端(服务器<–>交换机)端口速率工作模式保持一致。

2、配置H3C LACP链路聚合的时候端口不能做其他属性的配置(加入VLAN/MAC地址绑定等操作)
(服务器(Windows OR linux)与交换机做链路聚合最好使用动态LACP )

3、做链路聚合用链路聚合组分发端口属性配置(端口必须使用Hybrid属性,使用untagged)

4、注意先做动态LACP链路聚合后,在给LACP组做Hybrid等配置。

5500与Linux服务器做LACP链路聚合配置:

1、先查看交换机上的2个端口速率和工作模式是否一致

[H3C-5500-IRF]dis int g1/0/2
GigabitEthernet1/0/2 current state: UP
IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 3ce5-a64f-0c7e
Description: GigabitEthernet1/0/2 Interface
Loopback is not set
Media type is twisted pair
Port hardware type is 1000_BASE_T
1000Mbps-speed mode, full-duplex mode //这里表示1000速率全双工

[H3C-5500-IRF]dis int g2/0/2
GigabitEthernet2/0/2 current state: UP
IP Packet Frame Type: PKTFMT_ETHNT_2, Hardware Address: 3ce5-a64f-033e
Description: GigabitEthernet2/0/2 Interface
Loopback is not set
Media type is twisted pair
Port hardware type is 1000_BASE_T
1000Mbps-speed mode, full-duplex mode //这里表示1000速率全双工

2、创建好聚合组1,开启动态LACP模式。
[H3C-5500-IRF]interface Bridge-Aggregation 1 //创建链路聚合组1
[H3C-5500-IRF-Bridge-Aggregation1]link-aggregation mode dynamic //改成动态协商模式

3、把要链路聚合的端口加入到聚合组1
[H3C-5500-IRF]int g1/0/2 //进入G1/0/2口
[H3C-5500-IRF-GigabitEthernet1/0/2]port link-aggregation group 1 //把该端口加入汇聚组1

[H3C-5500-IRF]int g2/0/2 //进入G2/0/2口
[H3C-5500-IRF-GigabitEthernet2/0/2]port link-aggregation group 1 //把该端口加入汇聚组1

4、设置聚合组分发到端口的属性配置
[H3C-5500-IRF]interface Bridge-Aggregation 1 //创建链路聚合组1
[H3C-5500-IRF-Bridge-Aggregation1]port link-type hybrid //改成Hybrid端口属性
[H3C-5500-IRF-Bridge-Aggregation1]port hybrid pvid vlan 10 /
/把该端口PVID属性改成VLAN10
[H3C-5500-IRF-Bridge-Aggregation1]port hybrid vlan 10 untagged
//允许VLAN10的数据不打标签通过

5、查看聚合成功后的效果:
[H3C-5500-IRF]dis link-aggregation verbose

Loadsharing Type: Shar – Loadsharing, NonS – Non-Loadsharing
Port Status: S – Selected, U – Unselected
Flags: A – LACP_Activity, B – LACP_Timeout, C – Aggregation,
D – Synchronization, E – Collecting, F – Distributing,
G – Defaulted, H – Expired

Aggregation Interface: Bridge-Aggregation1
Aggregation Mode: Dynamic
Loadsharing Type: Shar
System ID: 0x8000, 3ce5-a64f-0327
Local:

Port Status Priority Oper-Key Flag

GE1/0/2 S 32768 2 {ACDEF}
GE2/0/2 S 32768 2 {ACDEF}
Remote:

Actor Partner Priority Oper-Key SystemID Flag

GE1/0/2 1 255 17 0xffff, 78e7-d17f-c570 {ACDEF}
GE2/0/2 2 255 17 0xffff, 78e7-d17f-c570 {ACDEF}

看到Status 有s s 就表示端口汇聚成功了。

三、Linux双网卡绑定及网络链路聚合技术
Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在sun和Cisico中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.X的内核中也采用了这种技术,被称为bonding。
Bonding技术的最早应用是在集群–beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论bonding的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后相应的数据帧送给bond驱动程序处理。
服务器基本上都是有两个网卡

接下来是创建步骤
1.系统->管理->网络,打开网络配置工具
2.删除网络配置工具上显示的所有配置文件
3.重启计算机
4.打开网络配置工具,将所有的有效网卡都加到网络配置工具中来,
5.逐个取消加入网卡设备的“当计算机启动时激活”。
6.打开shell命令框,输入ethtool -p eth0等命令,检测你所插网线
7.根据对应的网口按如下修改/etc/sysconfig/network-script/下的脚本(只是修改,请大家不要将原有的配置删除)。

cat /boot/config-2.6.18-194.e15PAE |grep –i bonding

如果返回CONFIG_BONDING=m 就表示内核支持,否则需要编译内核使它支持bondding

1.新建/etc/sysconfig/network-scripts/ifcfg-bond0文件(可以把其它网卡的文件复制一份再改名)
DEVICE=bond0 //指定bond0接口名称
ONBOOT=yes //是否随服务启动(yes or no)
BOOTPROTO=static //启动手动静态地址(static or dhcp)
IPADDR=192.168.0.58 /指定虚拟网卡的IP地址
NETMASK=255.255.255.0 //指定虚拟网卡的子网掩码
GATEWAY=192.168.10.252 //指定虚拟网卡的网关地址
USERCTL=no
BONDING_OPTS=”miimon=80 mode=4 xmit_hash_policy=layer2+3”
//最后一条是指定bond0虚拟网卡的支持LACP协议工作模式(支持网络上二层、三层的负载均衡,如果是做一般0或1模式的负载均衡不需要加上这条)

2.更改/etc/sysconfig/network-scripts/ifcfg-eth0网卡属性
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0 //这条是和bond0虚拟网卡绑定
USERCTL=no
SLAVE=yes
ETHTOOL_OPTS=”autoneg off speed 1000 duplex full”
//最后一条是强制指定网卡的工作速率和模式,可选配项

3.更改/etc/sysconfig/network-scripts/ifcfg-eth1网卡的属性
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0 //这条是和bond0虚拟网卡绑定
USERCTL=no
SLAVE=yes
ETHTOOL_OPTS=”autoneg off speed 1000 duplex full”
//最后一条是强制指定网卡的工作速率和模式,可选配项

4.编辑/etc/modprobe.conf文件,加入以下内容
alias bond0 bonding //加载网卡驱动模块,必须添加的
options bond0 miimon=100 mode=1 //如果是普通网卡聚合就添加这条,如果是LACP这条就不用添加了)

5.加入/etc/rc.d/rc.local启动项
ifenslave bond0 eth0 eth1 //加载到开机启动项

6.启动网卡
ifconfig bond0 192.168.0.23 up //启动该虚拟网卡
ifenslave bond0 eth0 eth1 //启动虚拟网卡
或者直接service network restart //这条命令同上,可以直接启动网络配置。

7.重启下Linux (#reboot ) 重新启动

说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果
有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3,4五种模式,常用的为0,1两种,4是特殊使用(支持LACP协议)。

mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就
是说默认情况下只有一块网卡工作,另一块做备份.
mode=4 表示支持链路LACP(链路聚合控制协议),网卡工作方式和交换机端口都汇聚成一个逻辑链路。

8、查看网卡聚合成功后的效果:
[root@localhost ~]# more /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Active Aggregator Info:
Aggregator ID: 9
Number of ports: 2
Actor Key: 17
Partner Key: 2
Partner Mac Address: 3c:e5:a6:4f:03:27

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 78:e7:d1:7f:c5:70
Aggregator ID: 9

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 40:16:9f:f3:63:5c
Aggregator ID: 9

看到上面标红色的字样就表示协商聚合成功了(如果聚合不成功在Partner Mac Address:00:00:00:00:00:00)这里就没MAC地址,请检查交换机或服务器配置。

做完上面的配置后,可以去测试了:
在Linux服务器上可以用nload 工具进行观察效果;很清晰!!!
在交换机这端测试,先开启交换机的SNMP协议,在XP或WIN7系统用PRTG Traffic Grapher软件或者其他网络监控软件。

Nload监控网络流量界面
IRF+LACP+bond0网络负载均衡配置
IRF+LACP+bond0网络负载均衡配置

PRTG Traffic Grapher 流量监控界面
IRF+LACP+bond0网络负载均衡配置