1、交换机无关方式

交换机无关方式网卡组技术,功能在服务器端实现,而对于交换机端是完全透明的,即交换机按正常的转发功能转发数据包,毋需做其他特殊配置。

Broadcom的Smart Load Balancing(智能负载均衡,SLB),

intel的Adapter Fault Tolerance(网卡容错,AFT),

Switch Fault Tolerance(交换机容错,SFT )

Adaptive Load Balancing (自适应负载均衡,ALB),

这几种网卡组技术,都是交换机无关的。

1)SLB

SLB是Braodcom网卡实现的一种网卡组方式,其中又有负载均衡+容错和容错两种方式。后者只有容错方式而不具备负载均衡功能,配置时可以根据需要选择需要的组模式。

负载均衡分为发送数据均衡和接收数据均衡技术。

对于发送数据负载均衡,是由服务器网卡组驱动程序完成的。负载均衡不是基于单个数据包的,而是基于“应用流”的。目的IP地址、目的端口号等信息,定义了一个“应用流”。基于“应用流”的负载均衡可以避免同一应用的数据包通过不同物理网卡传输时出现的乱序问题。

服务器维护一张和负载均衡信息有关的“哈希表”(如果你不清楚什么是哈希表,只需知道它是一种保存数据的数据结构,数据在其中的存贮位置,是通过一个被称为“哈希函数”的公式计算出来的。这种数据结构的最大优点就是查找数据效率十分高)。表中记录了每个“流”应该从哪个物理网卡发送出去。

网卡组形成的逻辑网卡的物理地址,是从组中所有物理网卡中的一个的物理地址。每块物理网卡,发送数据时都必须使用自己的物理地址。这样,交换机看到的是不同的交换机端口,连接了不同的主机(网卡)。当服务器接收到一个解析自己物理地址的ARP请求包时,回应的物理地址逻辑网卡的物理地址,也就是组中某块网卡的物理地址。

接收数据均衡,是通过ARP应答实现的。刚开始时,服务器以逻辑网卡的物理地址应答ARP请求,这样,所有的接收数据,均从组中的某一块网卡中流入。当需要做负载均衡时,服务器会根据来自不同客户端的ARP请求,回应以组中不同网卡的物理地址,以此实现流入数据在不同网卡上的均衡分布。和发送数据负载均衡一样,系统同样建立、维护一个接收数据均衡信息哈希表。

一个特殊的情况是,当服务器发送一个ARP请求时,所有客户端据此请求包更新自己的ARP缓存。如此,会影响到接收数据的均衡。因此,在服务器均衡接收流量过程中,不仅仅是回答ARP请求时调整应答的网卡物理地址,还要根据不同的流量分布,根据系统维护的哈希表信息,针对不同的客户端,发送特殊ARP(Gratuitous ARP),主动进行调整。

在图2中,假定服务器S1有2块网卡做了网卡组,如何实现对网络内的2台客户端C1、C2做到发送和接收负载均衡呢?例如对客户端C1的收发数据均通过网卡1,而对客户端C2的收发数据均通过网卡2进行。

对于发送数据,服务器根据不同的“应用流”,将它们分布到组中的不同网卡上传输。而对于输入数据,则通过控制ARP应答,最后在三台主机上形成的ARP缓存如表一所示(简单起见,用4位十六进制数字表示物理地址):

注意客户端C1,C2解析到的服务器10.1.1.1的物理地址分别是00AA和00BB,是服务器网卡1和网卡2的地址,这样,就实现了服务器接收不同客户端的数据负载均衡。

(2)AFT

AFT(Adapter Fault Tolerance,网卡容错 (主从 ) )是Intel网卡实现的一种网卡组方式,一个组中最多可以有8块网卡。

组中的网卡有三种状态:active(活动)、standby(备份)和disable(不可用)。初始化时,网卡组驱动程序根据网卡性能(例如速度,支持的双工模式等),择优挑选一块网卡作为“活动”网卡,其余网卡被置为“备份”状态。如果某块网卡出现故障,则其状态被设置为“不可用”。

正常情况下,组中“活动”网卡负责数据的收发工作,“活动”网卡的MAC地址作为服务器的对外物理地址。一旦检测到“活动”网卡出现故障,则“备份”网卡开始作为“活动”网卡使用。

性能高的“活动”网卡可以设置为“优先级”高的网卡。“优先级”高的网卡在发生故障被替换后,一旦故障恢复,可以重新切换为“活动”网卡。

为减少应用中断时间,“备份”网卡变为“活动”后,仍然使用原来的MAC地址。切换发生后,客户端无须做任何动作。对交换机来说,相当于服务器从一个交换机端口换接到了另外一个端口。

(3)SFT

SFT(Switch Fault Tolerant,交换机容错)是Intel网卡实现的另一种网卡组方式。这种模式只能支持2块网卡,分别接不同的交换机,主要实现交换机容错功能。

交换机容错,是指当交换机出现断电、宕机等故障时,保证服务器网络接入不间断的容错技术。和AFT类似,两块网卡一块工作在“活动”状态,一块工作在“备份”状态。

因为要实现服务器接入交换机冗余,因此服务器必须要连接两台不同的交换机,且两台交换机之间要互联。一般地,局域网交换机之间都采用冗余连接,为避免交换机环路,需要启用STP协议。但服务器网卡连接的交换机端口,不要启用STP。因为STP协议会延迟交换机端口工作状态转换时间,在组中网卡切换时延时过大,而导致某些对延时敏感的网络应用中断。

“备份”网卡变为“活动”后,仍然使用原来的MAC地址。切换发生后,客户端无须做任何动作。对交换机来说,相当于服务器从一个交换机换接到了另外一个交换机。

(4)ALB

ALB(Adaptive Load Balancing,自适应负载均衡)是Intel网卡提供的一种网卡组方式,其实现原理和Braodcom网卡的SLB模式大同小异,这里不再赘述。

ALB(Adapter Load Balancing)技术是一种简单易行的可让服务器更多更快传输数据的好方法。该技术是通过在多块网卡之间平衡数据流量来增加吞吐量的,因为每增加一块网卡,就能增宽100Mbps的通道。另外,ALB还具有AFT同样的容错功能,一旦其中一条链路失效,其他链路仍可保障网络的连接。当服务器网卡成为网络瓶颈时,ALB技术无须划分网段,网络管理员只需在服务器上安装两块具有ALB功能的网卡,并把它门配置成ALB状态,便可迅速、简便地解决通道瓶颈问题。这种方法无需在客户端作任何设置,也不需要通过路由来实现客户之间的通信。另外,服务器上所有网卡之间的通信量是平衡的。与AFT一样,ALB在网卡驱动程序里带有智能软件,为了配合ALB工作,智能软件动态管理ALB网卡组,连续分析服务器各块网卡上的数据流量。对服务器来说,ALB网卡组中一条通道双向通信,其余的只向外发送。ALB可为网络客户提供同样的服务器响应等级。采用四块网卡的ALB技术,吞吐量可近400Mbps。

2、交换机相关模式

顾名思义,交换机相关模式既是交换机端与服务器端一起参与网卡组操作。此种模式Braodcom的有静态中继(Generic Trunking)和 Link Aggregation(动态链路聚合);Intel有静态链路聚合(Static Link Aggregation,SLA)和动态链路聚合(Dynamic Link Aggregation,DLA)。

名字尽管不一样,其实也就两类:静态和动态。它们之间唯一的区别就是组中的交换机端口(或网卡)是手工配置的还是自动配置。这些技术最早应用与交换机之间的链路聚合,例如,为扩展交换机之间的带宽,常见的CISCO 快速以太网通道(FEC)、千兆以太网通道(GEC)等技术,如图3所示。这些都需要在链路连接的两端交换机上配置,后来CISCO开发了一种用于交换机端口自动聚合的协议PAgP,启用了PAgP的端口可以与对端自行协商,自动聚合端口,动态管理参与聚合的端口。PAgP是CISCO私有协议,而LACP则是实现类似功能的标准协议,也就是IEEE802.3ad标准。

这类模式的网卡组技术实际上是用软件将服务器端多块网卡,模拟为一台交换机的多个端口。在交换机看来,服务器就是一台支持链路聚合协议的交换机。

(1)静态链路聚合

静态链路聚合是将交换机上的端口手工配置为一个聚合链路,例如FEC或GEC。

这种模式即实现出、入负载均衡,又可以实现网卡容错。在交换机端,所有聚合端口被视为一个逻辑端口,出流量可以按预先配置的模式,均匀分布到各实际物理端口上。因此,交换机端负责服务器入流量的负载均衡;服务器端,仍然使用哈系表分布出流量的负载均衡。 所有网卡使用一个MAC地址,任何一块物理网卡的损坏,除了分布在该网卡上的网络连接会出现短暂中断外,无其他影响。

(2)动态链路聚合

除了生成链路聚合的方式是自动进行外,其他同静态链路聚合。另外,动态链路聚合是依靠协议进行链路聚合管理,因此和静态链路聚合比较,会产生一定的资源开销。

无论动态还是静态链路聚合,交换机端所有参与聚合的端口,必须在同一交换机上,即,不能跨越交换机聚合链路。

二、网卡组配置实例

下面,我们将以intel的intel PRO 1000 PT 服务器网卡为例,配置服务器网卡组。

首先安装随卡提供的网卡驱动程序,如果没有驱动,可以到intel的网站下载网卡的驱动程序,目前该网卡最新的驱动程序为PRO2KXP_v13_1_2.exe。

(一)安装网卡驱动

(1)直接双击驱动程序,执行解压缩后,出现如图4的画面:

(2)点击“下一步”后,出现如图5所示画面:

(3)点击“下一步”后,出现如图6所示画面:

(4)如果想安装SNMP代理,可以在图中勾选对应的选项。不安装的话,直接点击“下一步”,进入如图7所示画面:

(5)点击“安装”,出现如图8的画面:

(6)点击“完成”,系统自动完成相关配置。重新启动机器后,网卡驱动安装完毕。

(二)配置网卡组

网卡驱动安装好后,可以配置网卡组了。

(1)右键点击任何一块网卡,进入如图9所示的画面:

(2)点“配置”,出现如图10所示画面:

(3)点“分组”,出现如图11所示画面:

(4)勾选“将此适配器与其他适配器组合(T)”,然后点“新组”,出现如图12所示画面:

(5)点“下一步”,出现如图13所示画面:

(6)选择对应的分组类型后,点“下一步”,出现如图14所示画面:

(7)点击“完成”,完成配置。

网卡组配置完成后,系统会自动生成一块逻辑网卡。从功能上看,与其他物理网卡无任何区别。接下来,为逻辑网卡设置IP地址,子网掩码和缺省网关等网络参数后,组就可以正常工作了。

(三)管理网卡组

配置完网卡组后,可以通过对逻辑网卡的属性设置,对网卡组进行管理。下面是一些管理界面。

(1)在“属性”对话框中,切换到“设置”页面,可以看到如图15所示画面:

这里可以看到,网卡组类型(AFT,SFT等),组中网卡状态和管理组有关的一些按钮。

(2)点“修改组”,出现如图16所示画面:

在“适配器”页,可以增加、删除组中的网卡,设置组中网卡的优先级等。在“类型”页,可以修改组的类型,如图17所示。

图18所示为在AFT组模式中,将第一块网卡设置为“主适配器”。当第一块网卡出现故障,第二块网卡变为活动后,如果第一块网卡故障恢复,则第一块网卡继续成为活动网卡。

三、网卡组模式实际应用测试

交换机相关模式,实际上就是以前的交换机链路聚合技术,例如CISCO的FEC和GEC。交换机和服务器两端通过手工配置和自动协商,把多个端口虚拟成一个逻辑接口。这种技术出现比较早,相对成熟,也容易理解。

交换机无关方式,是服务器端team驱动唱“独角戏”,交换机端透明,那么,网卡组的功能又是如何具体实现的呢?

下面,我们对intel网卡实现的AFT、SFT和RLB三种交换机无关模式,通过检查交换机中MAC转发表,捕获包等手段,揭示网卡组功能是如何实现的。

测试环境如图19所示。

客户端IP 10.1.1.19 MAC:be34

服务器IP(team) 10.1.13 .MAC1:8451, MAC2:853F

(一)SFT

将网卡组模式设置为SFT,检查组信息,显示为“适配器容错”,MAC地址为:8451。

首先进行功能性测试。在客户端不间断ping服务器地址,此时,检查交换机转发表,输出如图20所示:

由输出结果可见,交换机识别出两块网卡分别接在Gi0/5和Gi0/6两个接口上。在客户端上观察ARP缓存,10.1.1.3 的MAC地址为8451。 断开活动网卡连接的网线,观察客户端ping进程,丢失一个ping数据包,后续正常,如图21所示。

此时检查交换机转发表,输出如图22所示。

与图20比较,可以看到,交换机接口Gi0/5(team主网卡接口)已经不可用,原来的备份网卡交换机接口Gi0/6,变成了原来team主网卡物理地址的接口,即,备网卡接管了team主网卡的物理地址。

这个“戏法”是如何完成的呢?图23是通过协议分析软件抓包得到的结果。

在第30个数据包之前,主网卡状态是正常工作的。可以看到,主、备两块网卡是通过发送广播包,表明自己的活动状态。第30个数据包之后,主网卡网线被断开,只剩下备网卡(MAC地址:853 f)还在不断发送广播包。经过大约30个数据包时间(这段时间导致一个ping包丢失),备网卡一直接收不到主网卡发送的广播包,它断定主网卡已经停止工作,因此,它发送了图23中第58个包,这个包的源、目的物理地址都是8451,也就是自己发给自己。

交换机收到这个包后,根据源地址发现端口Gi0/6连接了终端8451,马上修改了转发表,后续所有ping包就可以正常转发给服务器了。

这个过程在交换机看来,相当于服务器(10.1.1.3 ,MAC:8451)从交换机一个端口转接到了另外一个端口。

SFT除了主、备网卡接不同的交换机外,其余和AFT行为基本一致。

当主网卡恢复后,除非设置了优先级,否则主网卡使用备网卡的MAC地址。即,活动网卡才能使用网卡组虚拟网卡的物理地址,不管这个物理地址具体属于哪块网卡。

(二)ALB

适应性负载均衡,服务器端负责发送数据的均衡,接收数据均衡主要依靠客户机端映射不同网卡的物理地址完成。

ALB模式中,组中所有的网卡同时工作,它们使用各自的物理地址,但对应同一个IP地址。同时,通过控制ARP应答包,将来自不同的客户端数据包分布在不同的网卡上。

当其中一块网卡出现故障时,分布在该网卡上的ping数据流会丢失一个包,未分布在该网卡上的数据流则不会受到影响。

图24-图26所示是ALB模式中,当其中一块网卡出现问题时,交换机中的转发表变化和网卡组驱动做出的响应动作。

从图中可以看出,8451和853F两块网卡位于同一交换机端口Gi0/6。

此时,物理地址为853F(Gi0/5)的网卡故障,另一块网卡8541(Gi0/6)在探测不到它发出的广播包,确认其失效后,同时发送两个源、目的物理地址相同数据包(图26中序号为170、171,174、175等),分别是失效网卡的物理地址和自身的的物理地址。交换机接到这些数据包后,根据源地址,很快会修改转发表。

四、结束语

下面是一些关于网卡组技术的总结,可以帮助读者更深刻地理解网卡组的实现技术。

1、网卡组技术是提高终端(不仅仅是服务器)接入网络带宽和可用性的一种技术。因此,它只涉及终端和网络接入设备(交换机、HUB和路由器),参与的双方必须直接连接,中间不能跨接其他设备。关于网卡组,目前都是各厂商自行实现,尚无统一的国际标准。

2、提高带宽是通过多块网卡的负载均衡手段,所有的交换机相关网卡组模式(静态或动态)、ALB和RLB,都提供负载均衡模式。负载均衡参与者必须是同一局域网的设备,即,客户端与服务器必须是同一IP网段,且处于同一广播域。

3、负载均衡不是基于单个数据包的,而是基于客户端或网络应用的。也就是说,某个网络应用的所有数据流,自始至终,只使用组中的某一特定网卡,除非该网卡故障而发生切换;另外,由于发送和接收数据均衡由不同的设备实现,因此同一网络应用的收、发数据流可能会经过不同的网卡。

4、HUB属于物理层设备,处于同一冲突域,不能增加接入带宽;路由器属于网络层设备,HUB和路由器都不能象交换机那样处理设备物理地址,因此,网卡组技术不能在HUB或路由器上实现。

5、无论AFT、SFT、ALB还是其他交换机无关网卡组技术,在交换机转发表中,组中每块网卡的物理地址都正常出现,需要调整时,由网卡组驱动程序控制网卡发送特定的数据包,改变交换机中的MAC表,以实现冗余互备。基于这个原理,虽然intel网卡支持的AFT,ALB等模式要求接入同一台交换机,但经过测试(在组中只有两块网卡的情况下,多块网卡的情况未测试)在分接两台不同的交换机时,效果基本上是相同的。

6、Intel的技术资料说明,在做SFT模式时,启用STP协议,但网卡连接接口应启用STP速端口(portfast),其余模式的网卡组也应该如此。其给出的理由是启用STP协议的交换机端口状态转变时候大约有40秒的延迟,会增加网卡切换时的时间,增加网络应用中断的时间。

事实上,无论何种模式,只要在STP协议稳定后,参与网卡组的交换机全部处于正常转发状态,此时如果仅仅是发生网卡故障,故障网卡上的数据流切换到正常网卡上,只要交换机上的端口物理状态没有改变,STP协议也不会发生状态转换,整个切换时间取决于交换机中转发表的修改时间。

7、关于交换机相关网卡组模式。这种模式实际上是一种“分流、互备”方式,配置时选择余地大,技术成熟,唯一的缺点是,所有与交换机相关的网卡组模式,不能跨接交换机,必须接入同一台交换机上,即,这种模式只能提供带宽扩展和网卡容错,无法提供交换机容错。

在可用性要求较高的场合,交换机容错是必须的。如何解决这个问题呢?最理想的方式是借助交换机堆叠技术。就CISCO交换机来说,两台堆叠的交换机逻辑上可以看做是一台交换机。但配置FEC或GEC时,要求成员接口必须位于同一台物理交换机上。CISCO 3750在堆叠时没有这个限制,即,两台3750交换机堆叠后,可以将不同物理交换机上的交换机端口捆绑在一起。网卡组技术结合CISCO 3750堆叠技术,就可以采用交换机相关模式,同时提供交换机容错功能。

服务器网卡组(team)技术原理与实践相关推荐

  1. 干货:服务器网卡组技术原理与实践

    摘要:证券行业为了保障其业务的高可用性,数据中心服务器接入大量采用了服务器网卡(Team)技术.Team技术不完全属于网络系统,也不完全属于主机系统负责,而是介于两者的中间地带,因此极易出现问题.最常 ...

  2. 【java】Java 动态调试技术原理及实践

    1.概述 转载:Java 动态调试技术原理及实践 一.动态调试要解决的问题 断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径.但断点调试会在断点位置停 ...

  3. 解密“达达-京东到家”的订单即时派发技术原理和实践

    本文由达达京东到家Java工程师季炳坤原创分享. 1.前言 达达-京东到家作为优秀的即时配送物流平台,实现了多渠道的订单配送,包括外卖平台的餐饮订单.新零售的生鲜订单.知名商户的优质订单等.为了提升平 ...

  4. 【Spark】Spark SQL 物化视图技术原理与实践

    1.概述 转载:Spark SQL 物化视图技术原理与实践 2.导言 本文将基于 SparkSQL(2.4.4) + Hive (2.3.6), 介绍物化视图在SparkSQL中的实现及应用. 3.什 ...

  5. Atitit.ide技术原理与实践attilax总结

    Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...

  6. 百分点认知智能实验室:智能校对的技术原理和实践

    编者按 :大数据时代下各种文本信息爆炸,传统的文本分析处理工作逐渐被计算机取代.文本数据量越大,其中所包含的错误的总数也越多,通过校对工作来纠正文本中的错误显得尤其重要.传统的校对主要依赖人工,通过人 ...

  7. 服务器网卡的Teaming技术

    就是把同一台服务器上的多个物理网卡通过软件绑定成一个虚拟的网卡,也就是说,对于外部网络而言,这台服务器只有一个可见的网卡.对于任何应用程序,以及本服务器所在的网络,这台服务器只有一个网络链接或者说只有 ...

  8. Java 动态调试技术原理及实践

    调试是发现和减少计算机程序或电子仪器设备中程序错误的一个过程.最常用的断点调试技术会在断点位置停顿,导致应用停止响应.本文将介绍一种Java动态调试技术,希望能对大家有帮助.同时也欢迎读者朋友们一起交 ...

  9. 2MyBatis入门--深入浅出MyBatis技术原理与实践(笔记)

    什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

最新文章

  1. 如何用TensorFlow训练词向量
  2. caffe修改hdf5的datalayer
  3. kotlin为什么比java编译慢_为什么Kotlin编译速度比Scala快? [关闭]
  4. 投身管理工作(项目经理修炼手册正文的开头)
  5. 英语总结系列(九):百忙中依然坚持的九月
  6. DXP-2004软件安装
  7. linux spi flash id,SPI读flash的ID问题
  8. gradle切换online/offline mode模式
  9. html视频如何转换成mp4视频格式,将MP4、MPEG、MOV等格式的视频转换成WEBM格式的方法...
  10. 使用react开发谷歌插件
  11. 如何挑选无线路由器?
  12. ESP8266 Blinker 小爱同学 本地控制 手机配网 四路开关 物联网 arduino编程详细注释
  13. golang 枚举 iota
  14. 生活-象棋-蹩马腿-1
  15. 修改完bug GIT的提交流程 及NVM的常用指令
  16. python股票技术分析库Ta-Lib安装日记(windows 下 talib 安装)
  17. IEC60870-5-103继电保护设备信息接口通信协议测试方法
  18. vb.net读取写入EXCEl的终极方法-NOPI
  19. php laravel 入门教程,PHP语言菜鸟笔记,laravel 入门教程
  20. java从入门到精通pdf下载,太香了

热门文章

  1. 用计算机亩换算成平方,公倾,平方米,英亩,市亩,平方公里等常见面积单位转换在线计算器_三贝计算网_23bei.com...
  2. python爬虫爬取百度文档
  3. python 同时输出国际和国内BMI值
  4. 一个完整简单而又强力的计算器程序--用python实现(Python3.7)
  5. 已解决selenium.common.exceptions.WebDriverException: Messag: ‘geckodriver‘ executable needs to be in PA
  6. Internal error. Please report to https://code.google.com/p/android/issues
  7. 如何渲染精美3D PCB图
  8. android 获取iccid imsi
  9. bigemap手机版app如何加载矢量数据
  10. Gartner:云安全进入高速发展期