引言 信息化已经发展到了以数据为中心的阶段, 存储在其中已处于核心地位, 随着信息技术与存储技术的发 展, 各种应用对服务器数据的海量存储和高速存取提出了更高的要求, 使得传统的存储体系逐渐不能满足用户 需求, 网络存储技术应运而生 网络存储技术将存储设备从服务器中分离出来, 搭建存储网络, 可以实现数据 的大规模存储, 并具有良好的易扩展性 易接入性与易管理性[1, 2] 网络存储技术经历了 DAS NAS 和 SAN 三 个阶段, 其中, IP - SAN 利用了现有IP 网络成熟性和普及性的优势, 越来越引起人们的关注[3, 4] 为了增加服务器访问 IP - SAN 的性能, 不仅需要高吞吐率的网络存储设备, 还需要高性能的服务器与 高带宽网络的支持 在利用现有网络硬件设备的环境下, 通过软件方式提高网络吞吐率已经成为 IP - SAN 及其它服务器亟待解决的问题, 采用多网卡绑定技术正是在这种背景下提出来的[5], 多网卡绑定技术又称为 通道聚合技术, 它是在网卡驱动程序之上, 数据链路层之下实现的一个虚拟层 它把多个网卡虚拟成一块虚拟网卡, 具有一个相同的 IP 层地址, 客户端向服务器请求数据, 服务器上的网卡接到请求后, 网卡根据某种 算法智能决定由谁来处理数据的传输[6], 多网卡绑定技术可以提高服务器的网络吞吐量和可用性 随着处理器技术的不断发展, 多核处理器成了提升处理器性能的有效手段 多核处理器相对于单核处 理器来说, 虽然每个处理器核心的主频较低, 但是整体功耗更小; 而且多个处理器核心可以通过串行 并行 混合流水线等结构对不同的应用进行优化, 既可以充分发挥处理器的性能, 又能提高应用程序的执行效率 本文基于多核处理器平台, 提出并实现了一种面向 IP - SAN 的多网卡绑定方法, 有效利用了多核处理器的 优势, 提升了多网卡绑定的数据传输效率 2 Linux 现有多网卡绑定技术 目前与绑定相关的技术有 Sun 的Trunking( 链路聚集) 技术, Cisco 的Fast Ether Channel( FEC) 技术, Intel 的 Advanced Network Service( iANS) 和 Alteon 的 Fault Tolerance 2000 年3 月, 国际电气和电子工程师协会 ( IEEE) 通过了802. 3ad 端口聚集标准, 这个标准提供了链路聚集或绑定以达到更高的带宽和一组融入连接 之间提供故障接管的功能, 通过多网卡绑定技术, 在提供较高带宽的同时提高了服务器的可用性[7] 在 Linux2. 4 以后的内核中采用了多网卡绑定技术, 它最早应用在 Beowulf 集群上, 是为了提高集群节点 间的数据传输而设计的 Beowulf 系统一般由一个管理节点和多个计算节点构成 管理节点控制整个集群 系统, 同时为计算节点提供文件服务和附外的网络连接 管理节点和计算节点使用以太网( 或其他网络) 通 信, 然而单个以太网卡会形成数据传输瓶颈 集群设备专家 Don Becker 是 Beowulf 工程的创建者之一, Bec- ker 发现, 如果每个节点有两到三个以太网连接的话, 可以使这些连接表现得只有一个连接一样, 这样可以 减弱网络瓶颈, Becker 把这种技术称作通道绑定, Becker 写出一个定制的以太网驱动程序, 用于支持通道绑 定, 这就是多网卡绑定技术的来源 Linux 的多网卡绑定技术是在网卡驱动程序之上 数据链路层之下实现的一个虚拟层, 它将多个网卡虚 拟成一块虚拟网卡, 所以多网卡绑定驱动程序实际上是一种中间驱动程序( 见图1), 是基本驱动程序与网络 协议栈之间的接口。 ![]() Linux 多网卡绑定原理图 它的工作机制是由多网卡绑定驱动程序统一管理和配置网卡资源, 在发送数据时, 对于数据链路层来 说, 网卡设备是透明的 应用程序发送的数据包经由 IP 层和数据链路层发往绑定设备, 而不是那些具体的 物理接口 多网卡绑定设备驱动程序根据事先设定好的传输模式( 算法) 调度设备中的网卡资源, 由网卡把 数据发送出去[6] 出于传输效率的考虑, 多网卡绑定设备在接收从其他节点发送来的数据时都是并行处理的 一个接口 接收数据的同时其他的网口可以发送数据 绑定设备驱动中除了适配器适应性负载均衡( Adaptive load bal- ancing, ALB) 算法外的其他数据传输算法都只允许一个网卡接收数据 它的实现原理如下: 正常情况下, 网 |