跳转到主内容

NetApp_Insight_2020.png 

VIF 上的负载平衡如何工作?

Views:
5
Visibility:
Public
Votes:
0
Category:
data-ontap-7
Specialty:
network
Last Updated:

可不使用  

适用于

Data ONTAP 7
Data ONTAP 8

解答

VIF/IFGRP 类型概述

NetApp 实施中继称为 VIF 。其背后的理论取决于您设置的 VIF 类型。以下三种类型的 VIF (在 Data ONTAP 8 和更高版本中称为 IFGRPS ):

  • 单模式—无负载平衡、严格的故障转移
  • 多模式负载平衡
  • LACP —负载平衡、具有低级连接验证
标准单模式 VIF/IFGRP

如果一个接口上的物理链路中断、网络会话将持续存在并故障转移到 VIF 中的另一个接口( VIF 中最多可以有 16 个接口)。
这是最简单的 VIF 实现方式,因为没有交换机配置。

注:由于单个 VIF 不需要特定的交换机配置、因此可以分布在不同的交换机上。但是,多 VIF 的所有端口都必须连接到一台交换机。这种支持取决于交换机、但大多数交换机不支持将多 VIF 连接到不同的交换机。

标准多模式 VIF/IFGRP

多模式 VIF /Ifgrp 允许所有成员接口用于通信。  此模式允许进行故障转移、并增加可用于多个连接主机或 TCP 流的潜在聚合带宽。

但是,一个常见的误解是,所有可用的 " 负载平衡 " 算法都允许给定的单个主机利用总聚合带宽。  

也就是说,如果创建了包含四个 1 Gbps 成员接口的多模式或 LACP VIF/IGRP 、则有时会假定主机能够利用 4 Gbps 的速率(可能已安装 1 Gbps 网络接口卡) 在与四成员 VIF/IGRP 通信时,可实现高达 4 Gbps 的传输速率。  实际上,每台主机(如果是 "-b 端口 " ,则为 TCP/UDP 流)只能利用一个成员接口。  在此示例中,给定主机或 TCP/UDP 流的最大可用带宽为 1 Gbps 。  但是,不同的主机或数据流可以使用不同的成员接口、从而减少端口使用和争用。

因此、 VIF/IGRP 允许多个主机或流向该存储控制器发送和接收速度高达 4 Gbps 的数据流、但每个主机或数据流只能达到 1 Gbps 。

这种行为并非 NetApp 独有、也是现代交换机中使用的 802.3ad 链路聚合的基本原则。

LACP VIF/IFGRP

LACP VIFS/IFGRPS 在功能上与多模式 VIFS/IFGRPS 相同,但一个例外。  LACP 使用链路聚合控制协议( LACP )添加 802.3ad 链路故障检测。  LACP 不会更改负载分布功能的方式、只会向 VIF/IFGRP 添加故障检测层

使用 LACP 、 VIOF/IFRGRP 的物理接口成员(例如物理端口)将验证它是否可以与直接连接的交换机端口交换低级协议数据单元( PDU )。  如果无法交换这些 PDU 、则成员接口将从参与 VIF/IFGRP 中删除。  LACP 只能在一级 VIF/Ifgrp 上配置、因为只能在物理接口(物理端口)和交换机上的端口之间交换 PDU 。

负载平衡算法

多模式和 LACP VIFS/IFGRPS 有 4 种负载平衡类型:

IP 地址

流量平衡基于源的 IP 地址。这是默认设置、并且允许每个主机在 VIF/IGRP 中最多使用一个成员接口。

MAC 地址

流量平衡基于源的 MAC 地址(在路由环境中通常是相同的地址 - 路由器)、并允许每台主机在 VIF/IFGRP 中最多使用一个成员接口。

循环。

无法预先确定以太网数据包将通过的传出接口。传输的响应将以循环方式使用成员接口。  这是确保在诸如单个或多个具有分布不正确的 IP 和 / 或 MAC 地址的顶层通信主机等不利条件下实现真正负载平衡的唯一方法。
注:在 Data ONTAP 7.3.1 中、不再支持循环。
注意:由于传输路径中的分钟差异、循环负载平衡可能导致数据包传送无序。  这可能会增加 TCP 重复数据包和重新传输。  因此,当与循环负载平衡配合使用时、某些协议和应用程序无法正常运行。

端口

基于源 IP 地址和目的 IP 地址以及传输层端口号的流量平衡。也称为 IP+ 端口。在 Data ONTAP 7.3.1 版和 7.3.2 版之后提供。  由于此选项会将 TCP/UDP 端口号添加到计算中、因此一台主机可以将多个 TCP 流添加到存储控制器、每个流都使用 VIF/IFGRP 中的不同成员接口。  这可以允许在单个成员接口中使用比可能的吞吐量更高的带宽。

ONTAP 负载平衡实施

对于基于 IP 和 MAC 的负载平衡如何工作存在一些混淆。  用于在 Data ONTAP 7.3.2 中更改的多模式或 LACP VIF/IGRP 中的成员接口之间平衡流量的算法。

Data ONTAP 在 7.3.2 之后发布(包括 7.3.2 ):

从 Data ONTAP 7.3.2 开始、多模式或 LACP IFGRP /VIF 使用“超快”实现、利用源和目标 IP 地址的最后 16 位 (-B IP) 、源和目标 MAC 地址的最后 16 位 (-B MAC) 、 或源 IP 地址和目的 IP 地址的最后 16 位与源 TCP 端口和目的 TCP 端口( -b 端口)结合使用。 

算法的输出结果与 7.3.2 之前的 Data ONTAP 版本中使用的算法相比,分布更加动态、更加平衡。  但是,结果仍然相同,因为每个 TCP 流只与一个接口关联、每个 TCP 流只允许一个端口的带宽。 

有关“性能衰弱”如何工作的信息,请参见文章 1014277 :如何确定在给定流的 VIF/Ifgrp 中将使用哪个链接。

7.3.2 之前的 Data ONTAP 版本:

7.3.2 之前的文档将以下内容作为公式:

(( Source_Address XOR Destination_Address ) %Number_of _links )

以上公式示例:

filera :
VIF 上的 IP 地址: 10.10.7.31
VIF 中的接口数: 4 (接口编号为 0 、 1 、 2 、 3 )
平衡类型: IP

测试计算机:
IP 地址: 10.10.5.6

当从测试计算机发出网络请求时、文件管理器将查看源代码的最后一个二进制八位数并在最后 4 位执行 XOR 操作、以确定流量将返回的接口。

源代码的最后一个二进制八位数是: 00000110
目的最后一个二进制八位数: 0000111xor
equiv: 00001001 ,等于 9 (最后 4 位)
9 除以 4 等于 2 、其余(模数)为 1 。这意味着返回的流量将从 1 号接口返回。

下面是一个测试。设置如下所示:

filera : VIF 上的 IP 地址: 10.60.192.181
VIF:2 中的接口数(编号为 0 和 1 的接口)
平衡类型: IP

测试计算机:
IP 地址: 10.60.192.205

从测试机 I :

  • 通过 NFS 挂载文件系统
  • 已通过 mkfile 创建 10m 文件

在操作过程中, VIF stat 类似于以下内容:

f840-rtp2> vif stat mvif1 1
Virtual interface (trunk) mvif1
e3b e3a
Pkts In Pkts Out Pkts In Pkts Out
42822 19395 42040 20131
1 0 1 0
1 0 1 0
0 0 0 0
2 0 2 0
2 0 2 0
4 0 4 0
0 0 0 0
3 0 3 0
2 0 2 0
3 0 3 0
0 0 7372 3849
0 0 1 0
1 0 1 0
1 0 1 0
2 0 2 0


该数学方法如下:
源代码的最后一个二进制八位数是: 10110101
目的最后一个二进制八位数: 11001101XOR
Equiv: 01111000 ,等于 8 (最后 4 位)
8 除以 2 等于 4 、其余(模数)为 0 。这意味着返回流量将从数字 0 接口(即 E3a )返回。

设置 VIF 测试

  • 在文件管理器上创建多模式 VIF (为接口添加注释):
    VIF 创建多 VIF_name 接口 _1 接口 _2
  • 在交换机上创建文件管理器所连接的交换机端口的 EtherChannel 组:
    需要设置端口通道刀片 /interface_list 模式
  • 验证端口通道是否已设置:
    show port channel
  • 将 IP 地址分配给 VIF :
    ifconfig vif_name ip_address netmask xxx . xxx . xxx up
  • 确保文件管理器通过 NFS 导出文件系统。
    1. 从 UNIX 测试客户端 Ping 文件管理器的 VIF 。
    2. 使用 VIF 的 IP 地址挂载从文件管理器派生的文件系统。
    3. 打开文件管理器的 Telnet 窗口并执行 "vif stat vif_name 1"
    4. 将目录更改为挂载点。
    5. 采用测试计算机和文件管理器的最后一个二进制八位数并执行 XOR 。添加后 4 位。注释该值。
    6. 将上一个值除以接口数、其余值将是流量将要流出的接口数。
    7. 执行“ mkfile 10m testfile ”、监控 Telnet 窗口并观察哪个接口具有进出流量。