由图2 可知, 本文提出的多网卡绑定方法在一颗多核处理器上实现, Linux 操作系统和实时操作系统运 行于同一多核处理器的不同处理核心上, 实时操作系统 SE 上运行物理网络接口驱动程序和多网口绑定处 理程序, Linux 操作系统上运行虚拟网络接口驱动程序和多网口绑定管理程序 通过 Linux 操作系统和 SE 实时操作系统的管理接口完成对多网卡的绑定及传输模式等参数的配置 Linux 系统和 SE 系统通过核间 通信机制进行通信, 核间通信机制是借助处理核心之间的消息交互 数据内存共享等方法实现, 数据的传输 流程及其传递形式如图3 所示。 ![]() 图3 数据传输流程 数据接收过程: 数据接收模块接收每个网络接口的数据包, 将数据包存入共享内存中, 按照接收规则进 行处理, 生成核间消息, 并通过核间通信机制将数据递交给 Linux 上的虚拟网络接口驱动程序; Linux 虚拟网 络接口驱动程序的接收函数通过核间通信机制接收数据, 获取数据包, 并将数据包提交给 Linux 网络协议栈 处理 数据发送过程: Linux 虚拟网络接口驱动程序的发送函数将 Linux 网络协议栈处理完的数据包存放到共享内存中, 生成核间消息, 并通过核间通信机制发送给数据发送模块; 数据发送模块通过核间通信机制接收 数据, 获取数据包; 数据发送模块按照发送规则对数据包进行处理, 然后将数据包递交给实时操作系统 SE 上的物理网络接口驱动程序进行发送 参考 Linux 现有多网卡绑定方法的自适应负载均衡模式, 本文提出的多网卡绑定方法维护一个发送规 则表, 在规则表中将客户端的 IP 地址与网卡做映射, 发送数据时使用客户端 IP 地址所对应的网卡发送数 据 接收数据时采用接收负载均衡( Receive Load Balance, RLB) 算法, RLB 算法是通过 ARP 协商机制实现 的, 运行在实时操作系统上的多网卡绑定程序截获服务器发送的 ARP 应答, 根据发送数据时采用的算法, 在 绑定设备中挑选一块网卡, 把 ARP 请求报文中的源 MAC 地址改写为选定网卡的 MAC 地址, 可以利用这块 网卡来接收客户端的数据 在 RLB 算法中, 绑定设备中的每一个网卡的 MAC 地址必须是全局唯一的, 但所 有网卡的 IP 地址是相同的, 使用的都是服务器端统一的 IP, 每一个客户端可以与服务器中某一块网卡建立 通信联系[9] 根据以上原理, 本文在基于多核处理器的嵌入式服务器上实现了多网卡绑定的数据传输过程及传输算 法, 并在实验中对多网卡绑定的功能及性能进行了测试 4 性能测试与分析 在进行多网卡绑定之后, 服务器网络接口的实际性能如何是引起注意的问题, 本文采用基于多核网络 处理的嵌入式服务器, 对 Linux 现有的多网卡绑定技术和本文提出的多网卡绑定方法的性能进行了定量的 比较测试 本文测试使用的嵌入式服务器具有多个千兆以太网接口, 测试使用的存储设备为中科蓝鲸公司的 BW2000, BW2000 是一个低成本的 IP - SAN 存储产品, 配置 12 个支持热插拔的 SATA I / II 磁盘, 主要提供 iSCSI 的主机连接模式, 多达6 个千兆以太网端口, 提供了更高的带宽和更高的性能 服务器和 IP - SAN 可 以通过千兆交换机形成互联, 满足高吞吐率 高伸缩性的要求 也可以让服务器主机不通过交换机直接同 磁盘阵列网络接口相连, 称为 直连 , 此时存储阵列为服务器的专属存储设备。 ![]() 测试环境如图 4 所示, 图中的 X 代表绑定的网卡数目, BW2000 配置 12 块硬盘, 每两块硬盘做一组 RAID0, 共6 组, 每组 RAID0 下创建一个虚拟磁盘, 这样 IP - SAN 可以对外提供更高的带宽和性能 嵌入式 服务器在使用 iSCSI 工具连接 IP - SAN 的时候可看到6 块磁盘 本文使用 Iometer 工具评测服务器访问存储设备的性能 Iometer 最初由英特尔公司开发, 并得到了广。泛应用, 此后 Iometer 成为一个开源项目, 在 GPL 协议下发布 本文中使用的 Iometer 工具包含两部分, 分别 为 Linux 下的负载发生器 Dynamo 和 Windows 下的控制端, 该控制端也称为 Iometer ( 以下用 Iometer 指代 Windows 下的控制端) Iometer 与 Dynamo 通信, 操纵 Dynamo 对目标磁盘发起读写访问, 并控制 I /O 访问参 |