写点什么

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

作者:C++后台开发
  • 2022 年 8 月 10 日
    湖南
  • 本文字数:10261 字

    阅读完需:约 34 分钟

摘要:证券行业为了保障其业务的高可用性,数据中心服务器接入大量采用了服务器网卡(Team)技术。Team 技术不完全属于网络系统,也不完全属于主机系统负责,而是介于两者的中间地带,因此极易出现问题。最常见的错误就是服务器端选择了交换机相关的 team 模式,但交换机端网络人员却没有做任何设置。在一定条件触发下,会引起交换机报主机物理地址 flapping 错误,继而导致整个交换机 CPU 利用率居高不下。

本文通过对两种常见服务器网卡的 Team 技术原理的探讨,分析了各种 Team 模式的实现方式和配置方式。IT 系统运维人员熟练掌握这些知识和技巧后,可根据自身系统的需要,选择合适的 Team 模式,有效避免后期的运行风险。

证券行业因其自身业务特点,可用性要求极高。为保证业务系统可用性和连续性,从网络层面讲,整个通道的网络设备和通信线路,全部是冗余设计:

既从客户机到服务器之间的网络通道,任一物理设备宕机,或任一通信线路中断,都不会影响到证券业务的连续。然而,服务器和客户机,特别是服务器单线路接入网络时,存在以下单点故障:

  • 接入物理设备(通常是交换机)宕机;

  • 接入设备的网口损坏;

  • 使用的网线损坏;

  • 服务器、客户机的网卡故障。

解决这种单点故障只能使用服务器网卡组(Team)技术。本质上说,网卡 team 技术是将同一主机上的两块或两块以上的网卡,通过软件控制,虚拟出一个逻辑网卡。实际工作时多块网卡可以是一主一备模式,或者是双活模式。这种技术的初衷是为了解决服务器的带宽瓶颈,随着近年来千兆和万兆级的服务器网卡的出现,服务器带宽瓶颈得以缓解。因而现在实施服务器网卡组,主要是为服务器网络接入提供冗余,提高服务器可用性。

这种技术的出现很好地解决了证券行业数据中心服务器接入的单点故障问题,因此在行业内被大量使用。目前市场上流行的可以实施网卡组技术的网卡有 intel 和 broadcom 服务器网卡,本文也将重点介绍 intel 和 broadcom 服务器网卡组技术。

一、服务器网卡组工作原理

服务器网卡组主要实现两个功能:服务器接入的带宽扩展(负载均衡)和网络接入冗余,因此,它只涉及服务器接入的本地局域网。由于服务器一般只是直接接入交换机,因此涉及到的设备往往也只有服务器和交换机。网卡组的实现可以只在服务器一端实现,也可以在服务器、交换机两端都实现。前者的实现方式称为交换机无关方式(switch independent),后者称为交换机相关方式(switch dependent)。

(一) 基础知识

网卡组是在局域网上实现的,其中涉及到的网络概念有物理地址、网络地址和 ARP 协议。IT 运维护人员要想深入了解网卡组技术,首先要学习熟悉这些相关知识。

1、物理地址

我们知道,和广域网不同,局域网的网络传输介质,一般都是共享的。依据工作站使用网络传输介质的控制方式不同,局域网分为以太网、令牌环和 FDDI 等几种。任何一种局域网,都要使用自己的编址方式,对网络节点分配一个唯一地址,用以标识网络节点。这个地址就是物理地址。对应地,物理地址有以太网物理地址、令牌环网物理地址和 FDDI 网等物理地址。就以太网来说,网络节点的物理地址是全球唯一的。

不同技术的局域网,由不同的网卡实现。例如,平时我们使用的大多是以太网卡。如果要组建 FDDI 网,则要使用 FDDI 网卡。适用不同网络类型的网卡上,已经固化了它的物理地址。同样,不同技术的局域网,也必须由不同的网络交换机组成。

数据在以太网上传输,必须遵循以太网协议,即要使用以太网的数据帧格式。发送一帧数据前,网卡驱动首先构造一个合法的以太网数据帧,这个帧中包含自身的物理地址和目标节点的物理地址。因此,任何通信行为发生前,必须知道目标节点的物理地址。

2、网络地址

如果通信仅仅发生在局域网内,那么,使用物理地址就已经足够。当出现网络互联时,即不同的局域网之间要进行通信,特别是,令牌环网与以太网之间要进行通信,该使用谁的地址呢?

IP 协议和 IPX 协议是一种网络互联协议,它的主要作用就是屏蔽下层不同的网络技术细节。例如对于地址,不管具体的局域网是采用何种地址,网络互联协议另起炉灶,使用自己的定义的地址进行通信,这种地址称为网络地址。多个局域网(可以是以太网或 FDDI 或其他)可以使用网络互联协议(IP 或 IPX 或其他)互联为一个更大的网络,这个网络也称为网间网。络地址是整个网间网有效的,应用程序传输数据时使用网络地址。网络层协议根据目标网络地址,决定数据包是否需要转发给三层设备。

无论使用何种网络互联协议,数据包最终的传输,还是要交给底层的物理网络来完成。而底层的物理网络传输数据必须使用自己的数据帧格式,因此,要想完成数据的实际传输,需要将网络地址转换为具体的物理地址。

3、ARP

ARP 协议的作用,就是在知道网络节点 IP 地址的情况下,得到节点的物理地址。平时,每个节点维护称为 ARP 缓存的表,表中有具体的 IP 地址与其物理地址的对应关系。一个 ARP 解析的过程具体细节为:

  • (1) 当一个节点需要知道某个已知 IP 地址的节点物理地址时,首先查询本地 ARP 缓存,如有直接使用;如无,则发送一个网内广播包,称为 ARP 请求包,其中包含目标节点的 IP 地址。

  • (2) 网内所有节点都收到了该广播包。所有接收到该请求包的节点,都会查找本地 ARP 缓存是否有发送节点的 ARP 条目,如无则根据该请求包的源物理地址,构造一个 ARP 条目保存,以避免将来需要和该节点通信时,再做额外的 ARP 解析。

因为 ARP 请求包中包含有目标节点的 IP 地址,因此接收节点还要判断对方是不是解析本节点的物理地址。如果是,则向发送节点发送一个称为 ARP 应答的数据包(非广播包),告知本节点的物理地址。ARP 缓存条目如果在一定的时间没有使用,则会被从表中清除,以节省存贮空间。

4、特殊 ARP (Gratuitous ARP,也有翻译为免费 ARP)

一般地,节点在需要和某个节点通信时,需要知道对方的物理地址,而本地 ARP 缓存中又没有对应的 ARP 条目时,才广播一个 ARP 请求包,解析目标节点的物理地址。

特殊 ARP 也是一个 ARP 请求包,但它解析的是却自己的物理地址,即目标节点的 IP 地址是自身的 IP 地址。而且是在特定时间发出的,比如某个节点网卡刚接入网络时。难道节点不知道自己的物理地址吗?原来,特殊 ARP 并不是用来解析某个节点的 IP 地址,它有两个作用:

  • (1) 自己是新来的,主动向网内广播自己的 IP 地址和对应的 MAC 地址,以避免过多的 ARP 请求包;

  • (2) 检测网内是否有其他节点使用和自己一样的 IP 地址。如果收到了一个 ARP 应答,则说明网内已有节点在使用和自己相同的 IP 地址。

需要明确的是,在以太网内,某台主机要发送一个数据包,这个数据包实际上发送给了哪台主机(或网卡),和目标 IP 地址无关,而是和 ARP 缓存内的 IP 地址对应的物理地址有关。ARP 病毒大行其道,实际上就是通过在网络内发送一些欺骗性的 ARP 包,是的被欺骗主机 ARP 缓存信息错误,达到扰乱正常通信的目的。

5、HUB 和交换机

这两者都属于局域网设备,从 OSI 七层互联模型上看,HUB 是物理层设备,交换机是数据链路层设备。

HUB 可以等效为一段物理网线。例如,用 HUB 连接的两台主机,和用一根交叉双绞线直接连接的两台主机,没任何区别。

交换机相对复杂一些。它的工作原理是,在内存中维护一张表,表中记录的交换机每个端口接了哪些主机,即端口与主机物理地址的映射表。一个交换机端口可以通过 HUB 或其他交换机接多台主机,因此端口和主机物理地址的映射是一对多的关系。这个表称为地址转发表,转发数据帧时,根据目的地址,查转发表后,决定将数据帧发送到哪个交换机端口。如表中未查到,则将数据帧发送到所有交换机端口。

这个表是如何形成的呢?在交换机刚初始化时,这张表是空的,进入交换机的数据帧,被发送到所有端口。但只要有数据帧进入交换机,则根据数据帧的源地址和进入的交换机端口,得到主机物理地址和交换机端口之间的关系。

即,交换机通过检查进入数据帧的源物理地址,逐步构造地址转发表;根据数据帧的目的物理地址和转发表内容,决定将数据帧发到哪个端口。

需要注意的是,交换机地址转发表不是固定的,而是随时根据实际情况动态修改的。

(二) 网卡组技术架构

网卡组技术的实质是对多个物理网络接口进行统一管理,将多个物理接口虚拟成一个逻辑网络接口。具体到服务器网卡上,可以看作将多块网卡虚拟为一块逻辑网卡。从属性上看,虚拟逻辑网卡和物理网卡无任何不同,也有自己的物理地址和网络地址。

服务器使用逻辑网卡与外部的主机通信。外部主机只能看到服务器的逻辑网卡,至于服务器具体的物理网卡个数、物理地址等细节,外部主机是不清楚的。网卡组逻辑结构如图 1 所示

无论是 intel 还是 broadcom,一般都是在原有网卡驱动程序基础上,增加一个网卡组驱动程序,由该驱动程序完成网卡组功能。

网络协议直接访问网卡组驱动程序,网卡组驱动程序负责完成负载均衡等功能。一般地,网卡组驱动负责对组成网卡组的各个物理网卡进行管理,例如,活动探测,流量探测等,并根据实际情况,实现负载均衡和网卡容错功能。

【文章福利】另外小编还整理了一些 C/C++后台开发教学视频,相关面试题,后台学习路线图免费分享,需要的可以自行添加:Q群:720209036 点击加入~ 群文件共享

小编强力推荐 C++后台开发免费学习地址:C/C++Linux服务器开发高级架构师/C++后台开发架构师​

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 的地址,这样,就实现了服务器接收不同客户端的数据负载均衡。

(1) 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 模式大同小异,这里不再赘述。

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 堆叠技术,就可以采用交换机相关模式,同时提供交换机容错功能。

参考资料

推荐一个零声教育 C/C++后台开发的免费公开课程,个人觉得老师讲得不错,分享给大家:C/C++后台开发高级架构师,内容包括Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习


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

用户头像

还未添加个人签名 2022.05.06 加入

还未添加个人简介

评论

发布
暂无评论
干货:服务器网卡组技术原理与实践_服务器_C++后台开发_InfoQ写作社区