链路聚合

              链路聚合

一、链路聚合技术介绍

    以太网链路聚合简称链路聚合,它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性。

    链路聚合的功能:

    1、增加了带宽---将多个链路的容量组合到一个逻辑链路中。

    2、自动故障转移/故障恢复---将来自故障链路的通信转移到聚合中的工作链路。

    3、负载均衡---传入和外发通信都是根据用户选择的负载均衡策略(如源和目标 MAC 或 IP 地址)进行分配的。

    4、改进了管理---所有接口作为一个单元进行管理。

     5、减少了网络地址池消耗---可以将一个 IP 地址指定给整个聚合

二、基本概念

1、聚合组、成员端口和聚合接口

    将多个以太网接口捆绑在一起所形成的组合称为聚合组,而这些被捆绑在一起的以太网接口就称为该聚合组的成员端口。每个聚合组唯一对应着一个逻辑接口,我们称之为聚合接口。

2、成员端口状态

    聚合组内的成员端口具有以下两种状态:

    选中状态:此状态下的成员端口可以参与用户数据的转发,处于此状态的成员端口简称为选中端口

     非选中状态:此状态下的成员端口不能参与用户数据的转发,处于此状态的成员端口简称为非选中端口

3、操作Key

    操作Key是在链路聚合时,聚合控制根据端口的配置(即速率、双工模式、up/down状态、基本配置等信息)自动生成的一个配置组合。同一聚合组中所有处于选中状态的端口有相同的操作Key

4LACP协议

    基于IEEE802.3ad标准的LACPLink Aggregation Control Protocol,链路聚合控制协议)协议是一种实现链路动态聚合的协议,运行该协议的设备之间通过互发LACPDULink Aggregation Control Protocol Data Unit,链路聚合控制协议数据单元)来交互链路聚合的相关信息。

     LACP协议基本功能:利用LACPDU的基本字段可以实现LACP协议的基本功能,基本字段包含以下信息:系统LACP优先级、系统MAC地址、端口聚合优先级、端口编号和操作Key。动态聚合组内的成员端口会自动使能LACP协议,并通过发送LACPDU向对端通告本端的上述信息。当对端收到该LACPDU后,将其中的信息与本端其它成员端口收到的信息进行比较,以选择能够处于选中状态的成员端口,使双方可以对各自接口的选中/非选中状态达成一致,从而决定哪些链路可以加入聚合组以及某链路何时可以加入聚合组。

     LACP协议优先级LACP优先级分为系统LACP优先级和端口聚合优先级两类;

     系统LACP优先级:系统LACP 优先级就是为了区分两端优先级的高低而配置的参数;值越小优先级越高,缺省系统LACP 优先级值为32768

     端口聚合优先级:端口优先级是为了区别不同接口被选为活动接口的优先程度。值越小优先级越高。缺省情况下,接口LACP 优先级为32768

     LACP协议工作模式:启动LACP的端口可以有两种工作模式,PassiveActive。(注:必须有一端为Active模式才能正常协商)

    Passive:被动模式,该模式下端口不会主动发送LACPDU报文,在接收到对端发送的LACP报文后,该端口进入协议计算状态。

     Active:主动模式,该模式下端口会主动向对端发送LACPDU报文,进行LACP协议的计算。

     LACP超时时间LACP超时时间是指成员端口等待接收LACPDU的超时时间。在三倍LACP超时时间之后,如果本端成员端口仍未收到来自对端的LACPDU,则认为对端成员端口已失效。LACP超时时间只有短超时(1秒)和长超时(30秒)两种取值。

     LACP报文分析:这里主要分析报文的端口状态,可用来分析聚合失败原因。

     

    LACP_Activity: 端口在链路控制中的主从状态,0表示Passive, 1表示Active

    LACP_Timeout: 超时时间,0表示长超时,1表示短超时

    Aggregation: 表示端口的聚合能力。 TRUE(1)表示链路是可聚合的,FALSE(0)表示链路是独立链路,不可聚合

    Synchronization: 表示端口当前聚合是否完成。TRUE(1)表示发送的链路处于IN_SYNC状态,即端口已被分配到正确的聚合组中, FALSE(0)表示链路为OUT_OF_SYNC状态,即端口还没有选择正确的聚合组

    Collecting: TRUE(1)表示当前链路收包enable, 否则为FALSE(0)

    Distributing: TRUE(1)表示当前链路发包enable, 否则为FALSE(0)

    Defaulted: TRUE(1)表示Actor使用的Partner信息来自管理员配置的默认值。FALSE(0)表示Actor使用的Partner信息来自接收的LACPDU

    Expired: TRUE(1)表示Actor RX状态机处于超时状态,否则不在超时状态。

三、七种聚合模式

    网络设备常用的为第三种和第五种模式(WOC现支持第三种和第五种聚合配置)。

1balance-rr(负载均衡-轮询策略)

    聚合口数据报文按包轮询从物理接口转发。

    负载均衡---所有链路处于负载均衡状态,轮询方式往每条链路发送报文,基于per packet方式发送。传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1....一直循环下去,直到最后一个传输完毕)。在一个双网卡绑定的机器上ping一个地址,你会发现两个网卡都有流量发出。负载到两条链路上,说明是基于per packet方式进行轮询发送。

    容错能力---这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。

     性能问题---一个连接或者会话的数据包如果从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。Bond0在大压力的网络传输下,性能增长的并不是很理想。

     聚合口口MAC地址---使用第一个加入聚合的物理口MAC地址。

     交换机支持---该模式下,由于绑定的所有网卡的IP都被修改为同一个MAC地址。此时交换机收到发往该MAC地址的数据包时,将不知道从对应的哪个端口转发该数据,为了解决交换机的这个问题,交换机应做端口绑定,将数据发往逻辑聚合端口,之后由聚合端口从多个端口转发数据。

     此种模式几乎已被淘汰。

2active-backup(主备策略)

     只有Active状态的物理接口才转发数据报文。

     容错能力---只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。在bonding 2.6.2和以后的版本中,如果在active-backup模式下出现failover【译注:指一个slave发生故障,另一个slave变为激活的设备】,bonding将会在新的slave上发出一个或多个ARP请求,其中一个ARP请求针对bonding master接口及它上面配置的每个VLAN接口,从而保证该接口至少配置了一个IP地址。针对VLAN接口的ARP请求将会被打上相应的VLAN id

     无负载均衡---此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 个网络接口的情况下,资源利用率为1/N

     聚合口口MAC地址---使用第一个Active状态的物理接口的MAC地址,且后续active端口DOWN后,backup端口启用,聚合口MAC地址不变。

     无需交换机支持--- MAC地址是外部可见得,从外面看来,bondMAC地址是唯一的,以避免switch(交换机)发生混乱。

  此种模式几乎已被淘汰。

3balance-xor(复杂均衡-异或策略)

     聚合口数据报文按源目MAC、源目IP、源目端口(具体元素可配)进行异或HASH运算得到一个index值,根据该index值查找接口转发数据报文(这样可保证所选元素被同一接口所转发)。

     负载均衡---基于指定的传输HASH策略传输数据包。缺省的策略是:(MAC地址 XOR 目标MAC 

地址) % slave数量。其他的传输策略可以通过xmit_hash_policyHASH元素)选项指定。

      容错能力---这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。

      性能问题---该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在本地网络配置下可以工作得很好。如果所有流量是通过单个路由器(比如 网关型网络配置,只有一个网关时,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。),那该模式就不是最好的选择。(此问题可由配置解决)

      交换机支持---balance-rr一样,交换机端口需要能配置为“port channel”。这模式是通过源和目标machash因子来做xor算法来选路的。

4Broadcast (广播策略)

     这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,我们感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。

 此种模式不常用。

5802.3ad(动态链路聚合)

     在动态聚合模式下,聚合组内的成员端口上均启用LACP协议,其端口状态通过该协议自动进行维护。

     负载均衡---基于指定的传输HASH策略传输数据包。缺省的策略是:(MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policyHASH元素)选项指定。

     容错能力---这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。

     交换机支持---交换机需支持LACP协议,并在物理接口使能LACP,且每个物理接口的双工模式和接口速率需协商一致;必须有一端设备LACP模式为active

     对比blance-xor的优点---定期发送LACPDU报文维护链路聚合状态,保证链路质量。   

6balance-tlb(适配器传输负载均衡)

     在每个物理 接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口口出故障了,另一个物理接口接管该故障物理口的MAC地址。即:eth0eth1口聚合,设备开始会以eth0MAC为源MAC地址发送免费ARP报文,对端设备学习后加入arp表;发送报文时根据当前负载情况选择eth0还是eth1口转发,若从eth0口转发,则源MACeth0MAC地址;若从eth1口转发,则源MACeth1MAC地址。由于对端设备学习到的是eth0 口的MAC地址,所以数据报文只可能从eth0口进。

7balance-alb(适配器负载均衡)

     该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

四、聚合参数说明(默认隐藏,后台可修改)

动态聚合连接传输速率:即LACP报文发送速率,动态聚合协商阶段会协商LACP报文发送速率,动态聚合连接建立完成后,两端设备根据协商的速率互发LACP报文,LACP发送速率只有fast1秒)和slow30秒)两种取值,woc模式为fast

MII链路监控频率:指检查聚合组内各物理端口状态的频率,单位ms0表示禁用MII链路监控频率,woc默认设置为100ms

延迟禁用端口:系统检测到聚合组内某一端口down了,将其从聚合组删除的延迟时间,该选项只对MII链路监控频率有效,应设置为MII链路监控频率的整数倍,单位mswoc默认设置为0ms

丢弃重复帧:是否丢弃重复的帧。

五、负载均衡算法(xmit_hash_policy

    在balance-xor802.3ad模式下选择不同的hash模式,用来选择报文转发出接口。目前支持的算法有三种:源MAC与目的MAC异或、源MAC目的MACIP目的IP异或、源IP目的IP源端口目的端口异或。

     此种算法优点:相同元素的报文能固定同一接口转发。(可与MAC跟踪进行测试,目测某种情况下会有问题)

X86架构算法

     源MAC地址和目的MAC地址(元素可配)共同决定每个数据包的发送物理接口号,由源MAC地址和目的MAC地址进行异或计算,并将异或结果对接口数求余计算。

     源MAC+目的MAC算法:用于二层网络环境。        #交换机较常用,二层交换机只能根据mac地址转发。

     源目MAC地址+源目IP算法:用于二,三层网络环境。  #用于三层转发情况下,源目mac地址唯一,源目IP地址不同情况。

     源目IP+源目端口算法:用于三,四层网络环境。    #可根据源目端口来区分同一源目IP不同连接的数据,做的四层负载分担。

MIPS架构算法

     在设备内部,每创建一个聚合组时,底层同时创建对应该聚合组的一个hash表,该表存在于交换芯片上,hash表内容如下:

     交换芯片的index数量为硬件特性,一般为2565121024Index值越大,负载均衡效果越好。以1024index2个物理接口为例:

     Index         Interface

       0            eth0

       1            eth1

       2            eth0

       3            eth1

       4            eth0

       .              .

       .              .

      1022          eth0

      1023          eth1

聚合口负载均衡转发原理:

1、创建聚合口后,首先在底层生成hash表。

2、根据配置的HASH算法,提取相关元素的值。

3、根据特定的HASH运算,得到一个10bits的值。

4、找到底层HASH表项中该值对应的出端口。

5、把报文从这个出端口转发出去。

 

六、环境搭建及问题排错

链路聚合的几种场景

1、静态聚合/动态聚合+三层物理口

2、静态聚合/动态聚合+二层物理口

3、静态聚合/动态聚合+三层vlan

4、静态聚合/动态聚合+二层vlan

真机测试环境搭建

环境搭建心得:聚合模式网线连接较多,可先画出拓扑图,标记好各个设备的接口IP以及连线端口号(可先设计好),配置完成后,再根据拓扑图进行连线。

1、思科交换机配置

以下为静态聚合配置,动态聚合与静态聚合在配置上只有如下区别(动态聚合只涉及IEEE标准协议,思科私有协议未考虑):

Switch(config-if-range)#channel-group 40 mode on      #模式为“on”,表示静态聚合(即强制捆绑)。

Switch(config-if-range)#channel-group 40 mode active    #模式为“active”,表示动态聚合主动模式,在该模式下交换机会主动发送LACP协商报文。

Switch(config-if-range)#channel-group 40 mode passive    #模式为“passive”,表示动态聚合被动模式,该模式下交换机不会主动发送LACP协商报文。

思科交换机静态聚合三层物理口模式配置,以下为具体配置命令及注释:

配置思路:创建三层聚合组配置聚合口IP地址配置负载分担算法将物理接口加入聚合组

Password:      #输入密码cisco

Switch>

Switch>en        #进入特权模式

Password:      #输入密码cisco

Switch#       #特权模式,可进行系统参数配置,及查看配置。

Switch#configure t      #进入全局模式,可进行功能配置

Enter configuration commands, one per line.  End with CNTL/Z.

Switch(config)#interface port-channel 40             #配置聚合接口(思科3750X聚合口number1-48

Switch(config-if)#no switchport                    #将聚合口修改为三层口

Switch(config-if)#ip addr 1.1.1.1 255.255.255.0        #配置聚合口IP1.1.1.1/24

Switch(config-if)#no shutdown                     #使能接口,真机情况下可以不操作,模拟器必须使能接口,不然接口不能UP

Switch(config-if)#exit                    #退出聚合口配置模式

Switch(config)#port-channel load-balance dst-ip         #配置聚合口负载分担算法为源+目的

  dst-ip       Dst IP Addr

  dst-mac        Dst Mac Addr

  src-dst-ip      Src XOR Dst IP Addr

  src-dst-mac      Src XOR Dst Mac Addr

  src-ip       Src IP Addr

  src-mac      Src Mac Addr

Switch(config)#interface rang GigabitEthernet1/0/23-24   #选取GigabitEthernet1/0/23-24接口进行配置

Switch(config-if-range)#no switchport                #交换机默认为二层接口,这里需修改为3层接口

Switch(config-if-range)#channel-group 40 mode on        #将接口加入聚合组40,模式为on

到这里交换机聚合口就已经配置完成了。

思科交换机静态聚合三层vlan模式配置:

配置思路:创建vlan→vlan配置IP地址配置聚合口把聚合口加入vlan→把接口加入聚合组

注:cisco交换机接口vlan一般有两种类型,一种是trunk口,一种access口。woc设备需要关注的是trunk口,若对端交换机为trunk口,那么交换机发出来的报文是带vlan tag2.5层)的。woc设备对该报文进行处理时需要脱tag标记和打tag标记。

配置vlan方式一:

Switch#vlan d                                           #进入vlan数据库
% Warning: It is recommended to configure VLAN from config mode,
  as VLAN database mode is being deprecated. Please consult user
  documentation for configuring VTP/VLAN in config mode.

Switch(vlan)#vlan 30                                      #添加vlan30,可使用“vlan 30 name **”vlan30命名,若不加,则默认vlan0030
VLAN 30 added:
    Name: VLAN0030

Switch(vlan)#vlan 40                                      #添加vlan40
VLAN 30 added:
    Name: VLAN0040

配置vlan方式二:

Switch#conf t                                           #进入全局模式
Enter configuration commands, one per line.  End with CNTL/Z.

Switch(config)#vlan 30                                    #添加vlan30

Switch(config-vlan)#name vlan30                              #vlan30的名字为vlan30(相当于描述)

Switch(config)#vlan 40

Switch(config-vlan)#name vlan40 Switch(config)#int vlan 30                                  #进入vlan30接口
Switch(config-if)#ip add 1.1.1.1 255.255.255.0                     #配置vlanIP地址
Switch(config-if)#exit

Switch(config)#int vlan 40                                  #进入vlan40接口
Switch(config-if)#ip add 1.1.2.1 255.255.255.0                     #配置vlanIP地址
Switch(config-if)#exit

Switch(config)#int port-channel 15                             #创建聚合组15
Switch(config-if)#switchport trunk encapsulation dot1q                #封装dot1q帧格式(802.1q),配置trunk口时需要
Switch(config-if)#switchport mode trunk                          #设置为trunk口(强制)  access口命令为:switchport mode access

Switch(config-if)#switchport nonegotiate                      #禁止协商
Switch(config-if)#switchport trunk allowed vlan 3040                #设置trunk口允许通过的vlanvlan30,40 access口命令为:switchport access vlan 30
Switch(config-if)#switchport trunk native vlan 1                    #设置本地vlanvlan1 ,配置trunk口时需要
Switch(config-if)#exit
Switch(config)#int rang GigabitEthernet1/0/23-24                    #选取GigabitEthernet1/0/23-24接口进行配置

Switch(config-if-range)#switchport trunk encapsulation dot1q            #思科交换机物理接口也得配置vlan信息

Switch(config-if-range)#switchport mode trunk                          
Switch(config-if-range)#switchport trunk allowed vlan 3040                
Switch(config-if-range)#switchport trunk native vlan 1                    
Switch(config-if-range)#channel-group 15 mode on                    #将接口加入聚合组15,模式为on

思科交换机静态聚合二层配置:
配置思路:创建聚合组把接口加入聚合组

Switch(config)#int port-channel 16

Switch(config)#int rang GigabitEthernet1/0/23-24                    
Switch(config-if-range)#channel-group 15 mode on  
聚合测试常用的思科交换机查询命令:

Switch#sh ip int b              #查看接口信息

Switch#sh running-config            #查看所有配置信息

Switch#sh ip route                #查看路由表

Switch#show processes                #查看交换机CPU使用情况

Switch#show etherchannel load-balance       #查看负载分担算法

Switch#test etherchannel load-balance interface port-channel 40 ip 1.1.1.111 2.2.2.2  #查询1.1.1.111访问2.2.2.2选择聚合组40里面的哪一个物理端口

Switch#show etherchannel port-channel       #查看聚合组信息

Switch#show etherchannel summary             #查看聚合组信息

Switch#show int etherchannel module 1      #查看聚合组信息

问题排错手段

   当聚合失败时,可使用上述聚合信息查看命令进行分析,缩小问题范围。

静态聚合失败:可查看接口状态(up/down),双工模式,传输速率等信息。

动态聚合失败:除了查看以上信息之外,动态聚合可抓包查看lacp报文收发情况。并分析报文字段,可了解LACP协商到某一阶段。
       注:动态聚合建立成功后会定期(fast/slow)发送LACP报文维护聚合关系。

 

 

 

你可能感兴趣的:(网络知识)