​ GridFTP对文件传输协议的扩展定义了一种安全、可靠、高性能数据移动的通用机制。这里介绍了Globus的Striped GridFTP框架,旨在支持数据密集型工具和应用程序的建设。

The Globus Striped GridFTP Framework and Server | Proceedings of the 2005 ACM/IEEE conference on Supercomputing

gridftp_final.pdf

Introduction

  • 存储在二级和三级存储系统上的数据的数量和多样性以及广域网的原始容量的迅速增加,使得至少在原则上在广域网上移动大量数据是可取的和可行的。

  • 在实践中,协调这种转移在技术上具有挑战性。

    a. 经常需要在多个维度上利用并行性,包括(取决于上下文)存储系统,网络接口和骨干网络干线。

    b.处理各种各样的失败。防火墙、并行文件系统和其他专用设备也会造成困难,因为需要在传输之前和/或之后转换数据。

    由于这些和其他原因,快速、高效和稳健的广域端到端传输需要在多个级别管理复杂的系统。例如,在最近的工作中,我们需要32台以1 Gbit/s连接的主机来驱动30 Gbit/s的连接。

  • 有效的端到端数据传输需要一种系统方法,其中文件系统,计算机,网络接口和网络协议以集成的方式进行管理,以满足性能和鲁棒性目标。且需要被封装在易于使用和跨不同的最终系统和网络架构的便携式软件中,以便被广泛使用。

  • 以上考虑促使我们在这里描述的工作,这涉及到一个模块化的和可扩展的数据传输系统架构,适用于广域和高性能环境的设计,实现和评估。这个Globus striped GridFTP框架实现了对文件传输协议(FTP)的GridFTP扩展,它提供了对来自多个数据源的条带传输,故障检测和其他功能的支持。框架和在框架内构建的高性能条带服务器都是Globus Toolkit 版本4(GT 4)的一部分,并利用Globus组件来实现安全性和I/O。Globus GridFTP框架具有模块化结构,允许协调多个数据流,替换可选择的传输协议以及其他所需的功能。这些功能使我们能够在局域网和广域网上实现高比例的端到端带宽。

  • Operating System Support for Planetary-Scale Services.中描述了GridFTP协议的早期实现。该实现基于WU-FTPD,并且不具有该协议的所有功能。在这里,我们讨论了一个全新的协议实现,并提供了一组广泛的性能数据的新的实现。此实现提供了第一个公开可用的条带化版本。此外,该实现基于Globus可扩展输入/输出(XIO)系统,并提供了几个新的干净接口用于修改和扩展服务器。此实现还提供对IPv6的支持。

    WU-FTPD : WU-FTPD(Washington University FTP Daemon)是 华盛顿大学开发的一款 FTP 服务器软件,用于提供 文件传输协议(FTP)服务.

Related Work

​ 分布式数据的高效移动并不是什么新问题。并行I/O系统通常将对分布式数据的访问视为集体操作,集体通信操作通过协调相关活动来优化数据转换和传输。在两阶段I/O和远程I/O中,数据被读取,然后在传输之前通过进程间通信重新组织。HPF/MPI使用FALLS表示来计算有效的集群间通信调度。

  1. HPF(High Performance Fortran)
    • 一种并行编程语言,扩展自 Fortran 90,主要用于数据并行计算。
    • 适用于分布式存储架构,常用于高性能计算(HPC)。

  2. MPI(Message Passing Interface)
    • 一种用于分布式计算的消息传递标准。
    • 允许在多个计算节点之间进行数据通信,提高并行计算性能。

  3. FALLS(FAmiLy of Line Segments)表示法
    • 一种用于优化通信调度的数学模型或方法。
    • 可能涉及将通信任务表示为线段,以优化数据流在集群中的传输。
    • 主要目标是减少通信开销、提高并行计算效率。
  4. 集群间通信调度(Inter-cluster Communication Schedules)
    • 在 HPC 环境下,不同计算节点或计算集群之间需要交换数据。
    • 高效调度算法可以减少数据传输延迟、避免通信瓶颈,提高整体计算性能。

​ 研究人员已经提出了许多解决方案来解决TCP 基于AIMD的拥塞控制机制的局限性。这些解决方案包括对TCP的改进,新的传输协议,如XCP,XTP 和UDP之上的可靠层。我们的系统被设计为与这样的高性能通信协议和服务质量协商系统接口。到目前为止,我们的工作主要集中在有效地使用TCP或其他传输协议的每个流的基础上。我们的系统还可以以协调的方式管理与单个传输相关联的所有流。

​ 分布式并行存储系统(DPSS)是一个可动态配置的广泛分布的磁盘服务器的集合,这些服务器并行运行,以提供对大型数据集的高速随机访问。Beck等人的物流式网络也使数据的广泛分发(和复制)成为可能。我们的系统可以利用这样的系统时,单节点或站点的性能是瓶颈。

Logistical Networking物流式网络是一种数据传输和存储优化技术,主要用于高效调度和管理大规模数据流,类似于现实世界中的物流管理。它的核心思想是:

  • 数据存储和传输的调度像物流系统一样,可以进行智能管理。
  • 利用分布式存储和缓存(如中转节点)优化数据传输路径,提高吞吐量和可靠性。
  • 动态优化数据流,减少网络拥塞,提高数据分发效率。
  • Thain等人和Swany描述了数据移动系统,这些系统在中间节点中机会性地使用磁盘来提高端到端性能。我们的系统可用于在端到端路径中的节点之间传输数据

  • BitTorrent和Slurpie允许客户端在多人同时下载同一文件时从多个来源上传文件片段。由于我们的系统支持条带化和部分文件传输,它可以用来作为这些系统中的数据传输工具,以产生良好的效果。

  • 分布式文件系统可以用于在维护文件系统语义的同时访问远程数据。通用并行文件系统(GPFS)在广域网上实现了与我们的系统相当的性能。GridFTP旨在用于不太紧密耦合的环境中,其中文件系统语义可能既不能实现,也不可取。

  • Weigle和Chien的工作在目标和方法上可能与我们的最接近。他们将M到N通信问题概念化为称为复合端点的节点集。它们定义了一个API,用于定义复合端点内的发送方和接收方数据分布,并引入和评估用于计算有效通信调度的算法。他们的技术可以与GridFTP自然集成。

Problem Statement

Striping:希望支持条带化数据移动操作,其中将分布在网络一端的一组计算机 或 存储系统上的数据传送到另一组远程存储系统或计算机。

Collective operations:希望将条带化传输视为集体操作。

Uniform interfaces:希望能够轻松地调整我们的系统,以支持不同的汇和源。

Network protocol issues: 希望支持这种TCP替代协议的办法。

End-to-end performance :希望提供一个框架,在这个框架内,可以方便地应用一系列这样的端到端管理方法。

Diverse failure modes:集体操作、条带传输和端到端管理为增强性能提供了机会,但也引入了新的故障模式。我们的设计必须解决鲁棒性和容错性。

GridFTP Protocol

我们采用GridFTP数据传输协议,而不是像WebDAV这样的替代方案,原因有五个:

  • GridFTP所基于的FTP协议分离了控制和数据通道,使第三方传输成为可能;
  • FTP是一种广泛实现和理解的IETF标准协议,具有大量的代码和专业知识;
  • FTP为协议扩展提供了定义良好的体系结构,并支持动态发现特定实现所支持的扩展;
  • IETF已经定义了许多扩展,其中一些在当前环境中是有用的;
  • GridFTP增加了与我们关注的问题相关的新功能。

WebDAV(web分布式创作和版本控制):基于 HTTP/HTTPS 的文件管理协议,用于远程创建、编辑、删除和管理文件。它扩展了 HTTP,使用户可以像操作本地文件一样,在 Web 服务器上管理文件和目录。

以下是GridFTP关键特性的摘要。

  • Third-party control of data transfer. 为了管理分布式社区的大型数据集,我们必须为存储服务器之间的数据传输提供经过身份验证的第三方控制。第三方操作允许一个站点的用户或应用程序启动、监视和控制两个其他站点(数据传输的源和目的地)之间的数据传输操作。

  • Authentication, data integrity, data confidentiality. GridFTP支持对控制通道(RFC 2228)和数据通道(GridFTP扩展)的通用安全服务(GSS)API身份验证,并支持用户控制的数据完整性和机密性级别。数据通道验证在第三方传输中特别重要,因为连接数据通道的主机的IP地址将不同于连接在控制通道上的主机的IP地址,并且必须有某种方法来验证它是否是预期的一方。

  • Striped data transfer. 数据可以在多个服务器之间进行条带化或交错,如在并行文件系统或DPSS(分布式并行存储系统)磁盘缓存中。因此,GridFTP定义了支持在多个服务器之间传输分区数据的协议扩展。

  • Parallel data transfer. 在广域链路上,在单个源和目的地之间并行使用多个TCP流可以相提高总带宽。GridFTP通过FTP命令扩展和数据通道扩展支持这种并行性。当使用并行或条带化时,GridFTP实现可以使用较长的虚拟往返时间来实现公平性。注意,条带化和并行化可以一前一后地使用,即,在参与分条传输的多个服务器中的每一个之间可能有多个TCP流打开。

    虚拟往返时间:当多个数据流共享同一条网络链路时,如果某些流的 RTT 非常短,它们可能会占用过多带宽,而影响其他流的公平性。GridFTP 在传输过程中人为地增加 TCP 连接的虚拟往返时间,模拟更长的网络时延,防止某些 TCP 连接因短 RTT 过快增长窗口,而导致其他连接无法获得足够带宽。

  • Partial file transfer. 某些应用程序可以从传输部分文件而不是完整文件中获益。FTP允许从指定的偏移量开始传输文件的其余部分。GridFTP**支持对任意文件区域的请求。**

  • Automatic negotiation of TCP buffer/window sizes. 使用TCP缓冲区/窗口大小的最佳设置可以显著提高数据传输性能。GridFTP扩展了FTP命令集和数据通道协议,以支持针对大文件和大量小文件手动设置和自动协商TCP缓冲区大小。我们的系统目前只支持手动设置TCP缓冲区大小。

  • Support for reliable and restartable data transfer. FTP标准包括用于重新启动失败传输的基本功能,这些功能尚未广泛实现。GridFTP利用了这些特性,并对其进行了扩展,以覆盖其新的数据通道协议。

Globus Striped GridFTP Design

Globus分条GridFTP系统的目标是:

  • 模块化,以便于替代机制和在不同环境和配置中的使用 ;

  • 效率,特别是避免数据副本。正如在xKernel等系统中一样,我们通过一种架构来实现这些目标,该架构允许通过组成负责不同功能的独立模块来构建协议处理管道。

    xKernel 是一个专为网络协议研究和实验设计的微内核框架,它允许用户在一个模块化的环境中开发、测试和优化网络协议。适用于计算机网络研究、教学和协议测试,但不适合作为常规的操作系统使用。

实现(图1)包括三个逻辑上不同的组件:

  • 客户端和服务器协议解释器(PI): 用来处理控制通道协议(这两个功能不同,因为协议交换不对称);

  • 数据传输进程(DTP): 处理实际数据的访问及其通过数据通道协议的移动。

​ 这些组件可以以各种方式组合,以创建具有不同功能的服务器。例如,在一个进程中组合服务器PI和DTP组件可以创建传统的FTP服务器,而条带化服务器可能在群集的头节点上使用一个服务器PI,在所有其他节点上使用DTP。(IPC: Inter-Process Communication,进程间通信)

image-20250322165249001

Figure 1: Globus GridFTP architecture

​ DTP本身被进一步分解为一个三层流水线(图2)。

  • 数据访问模块提供了与数据源或数据接收的接口;
  • 如果收到扩展存储/检索(ESTO/ERET)命令的请求,则数据处理模块在服务器端执行数据处理;
  • 数据通道协议模块从数据通道读取或写入数据通道。

image-20250322171223774

Figure 2: Globus GridFTP data transfer pipeline

The Protocol Interpreter

服务器PI处理控制信道交换

  • 为了让客户端联系GridFTP服务器,要么服务器PI必须作为守护进程运行并监听一个已知的端口(GridFTP为2811),要么其他服务(如inetd)必须监听该端口并配置为调用服务器PI。

  • 客户端PI则执行其与服务器PI的协议交换。

    inetd(Internet Service Daemon)是 Unix/Linux 系统上的超级服务器(Super Server),用于管理基于 TCP/IP 的网络服务(如 FTP、Telnet、SSH、SMTP 等)。它的主要作用是监听多个端口,并在有请求时动态启动相应的服务进程,从而减少系统资源消耗。

​ 在协议交换的准备阶段,服务器 PI 仅关注制定即将进行的传输的描述。此时不需要与DTP通信;实际上,DTP甚至不需要运行。当接收到需要DTP活动的命令时,服务器PI将传送的描述传递给它(如果需要,首先启动它),之后DTP可以自己执行传送。一旦传送请求被传递,服务器PI就简单地充当传送状态信息的中继。例如,服务器DTP可以发送性能标记、重启标记等到服务器PI,服务器PI可选地处理它们,然后将它们发送到客户机PI。

PI到DTP的通信是服务器内部的,因此所使用的协议可以在不影响客户端的情况下发展。

​ 数据通道通信结构由数据布局控制。一般来说,如果两端的节点数量相等,则每个节点只与另一个节点通信。否则,每个发送方建立到每个接收方的连接,并基于数据偏移向每个接收方发送数据。

DTP Data Access Module

​ 此模块负责从数据源或接收端进行阅读或向数据源或接收器进行写入。它的公共接口包括传输操作(列表、发送、接收)和命令操作(例如,生成/删除目录、重命名、校验和)。可以提供该接口的不同实现。

DTP Data Processing Module

​ 此模块允许服务器端数据处理,例如压缩、缩放或多个文件的动态连接。正常的(没有服务器端处理)传输是用STOR <filename>(对于put)或RETR <filename>(对于get)启动的。数据处理模块分别通过ESTO和ERET命令调用puts和gets,这两个命令都接受三个字符串作为参数:模块名、不透明模块参数和文件名。模块名用于在模块注册表中定位加载的模块。模块被传递参数字符串和文件名,并在数据传输到服务器时对数据执行任何必要的处理。

DTP Data Channel Protocol Module

​ 该模块负责数据通道处理,即从数据通道获取数据或向数据通道发送数据所需的操作。单个服务器可以支持多个数据通道协议,在这种情况下,MODE命令用于选择要用于特定传输的协议。我们使用Globus可扩展输入/输出(XIO)系统[10]作为数据通道协议模块接口,目前支持两种绑定:Stream mode TCP和Extended Block Mode TCP。

MODE 命令:在不同的网络协议或操作系统环境下有不同的作用,主要用于设置数据传输模式或设备模式

1、FTP中规范定义了三种传输模式:

  • MODE S(Stream mode,默认):数据按流方式传输,没有额外的格式化或分块处理。适用于大多数 FTP 传输。
  • MODE B(Block mode): 数据以块的形式传输,每个块都有标识符和校验信息。适用于高可靠性传输,较少使用。
  • MODE C(Compressed mode):采用 Lempel-Ziv 压缩算法减少数据传输量。现在几乎不用,因为现代 FTP 传输通常由外部压缩(如 gzipzstd)或 MODE Z(FTP 扩展)代替。

2、在 Windows/Linux 命令行中的 MODE 命令

  • 用于配置 串行端口(COM 端口)、显示模式等设备设置 。

    1
    2
    MODE COM1: BAUD=9600 PARITY=N DATA=8 STOP=1
    #作用: 设置串口 `COM1` 的波特率为 `9600`、无奇偶校验(`N`)、数据位 `8`、停止位 `1`。

3、在 GridFTP 传输协议中的 MODE

  • 扩展了FTP版本的 MODE 命令,比如:

    MODE E(Extended Block Mode):允许并行传输多个数据流,提高大文件传输性能。支持错误恢复,如果某个块丢失,只需重传该块而不是整个文件。

    1
    2
    MODE E
    200 Extended Block Mode Enabled.

Security Considerations

  • Globus GridFTP设计提供控制通道请求的安全认证(强制性)和数据通道完整性和机密性(可选)。支持 GSS-API 网格安全基础设施 (GSI) 和 Kerberos 认证绑定。标准 Kerberos 不支持数据通道认证,但存在支持该功能的“用户对用户”扩展。

  • 在这里讨论GSI。

    • 建立控制通道

    ​ 当客户端发起到服务器正在侦听的端口的TCP连接时,会话就建立了。第一件必须发生的事情是根据RFC 2228进行身份验证。默认情况下,客户端提供一个委托代理证书,服务器必须提供由客户端信任的 CA(证书颁发机构)签发的“host certificate”,并且该证书的可分辨名称(DN)必须以通用名称(CN)结尾,该通用名称应与服务器 IP 地址的反向 DNS 查询结果完全匹配。如果身份验证成功,则调用授权验证器来(a)验证授权,以及(b)确定应执行请求的本地用户id。如果授权成功,则控制信道已经建立。

    • 建立数据通道

      • GridFTP协议要求接收方是监听方,发送方发出TCP连接。

      • 因此,客户端向要接收数据的服务器发送PASV命令。接收器开始监听TCP端口,并相应命令将IP地址和端口信息发送给客户端。

        PASV(Passive Mode)命令是 FTP(文件传输协议) 中的一种数据传输模式。它用于让 服务器 进入被动模式,等待客户端来建立数据连接。

      • 然后客户端向另一个服务器发送PORT(或SPOR,用于条带端口)命令,该命令将IP/ports作为参数。此命令指示服务器启动TCP连接,并建立数据通道。

        PORT 命令是 FTP 主动模式(Active Mode)中使用的命令,它用于告诉服务器,客户端希望在特定的 IP 地址和端口上接收数据连接。

      • 第三方传输存在安全问题,因为接收服务器开始监听端口,但它无法知道将连接到它的服务器的IP地址。为了缓解此问题,默认要求在数据通道上进行GSI身份验证。在这种情况下,服务器执行委托,身份验证的两端必须提供用户的主题名称(不涉及主机证书)。参与传输的所有各方必须接受同一CA。

      • 数据通道上支持加密保密性和完整性保护,但由于其成本(数量级在高速链路上并不罕见),默认情况下不启用。

​ 当PI和DTP在单独的进程中运行时,它们通过进程间通信链路进行通信。该链路的建立完全按照控制信道,PI充当客户端(使用委托凭证),DTP提供其主机证书。

Experimental Studies

​ 我们在三个设置进行实验:

  • 一个局域网(LAN )与0.2毫秒(msec)的往返时间(RTT)和612 Mbit/s的瓶颈链路;
  • 一个城域网(MAN)与2.2毫秒的RTT和1 Gbit/s的瓶颈链路;
  • 一个广域网(WAN)与60毫秒的RTT和30 Gbit/s的瓶颈链路。

​ 在所有测试中,我们将TCP缓冲区大小设置为BDP/number-of-stream

在 TCP 传输中,带宽-时延积(BDP,Bandwidth-Delay Product) 是一个关键指标,它表示在网络传输中,保持链路充分利用所需的最大未确认数据量,即网络中的最大数据窗口

为什么设置 TCP 缓冲区大小为 (BDP / number-of-streams)

  • 在高带宽、长延迟(高 BDP)网络中,例如跨数据中心传输或卫星通信,TCP 发送窗口必须足够大,以避免带宽浪费。
  • 但是,如果我们使用多个并行流进行数据传输,每个流应该分配到合适的缓冲区大小,以均衡利用整个网络。
  • 因此,我们将总的 TCP 缓冲区大小(BDP)均分到 number-of-streams 个并行流,以优化传输效率并防止某个流占用过多资源。

Comparison with Other FTP Servers

​ 我们首先将我们的服务器与两个流行的FTP服务器WU-FTPD 和NCFTP 进行比较,在相同的条件下:没有条带化,并行或身份验证,并且处于流模式。对于磁盘IO,我们使用了64 KB的块大小。我们在图3和图4中展示了在LAN和WAN中传输大小为1、10、100和1000 MB的文件时的性能。所有数据点均为10次运行的平均值,还显示了误差条。

实验结论:

​ 我们的服务器在所有情况下都实现了上级性能,并且相对于其他系统在处理较大文件时表现更好。这可能是因为我们的实现中使用了高效的异步事件处理机制。

Harnessing Parallelism

​ 接下来我们来看看多个流对总体实现性能的影响。图5-7显示了在LAN、MAN和WAN设置中实现的性能与数据流数量的函数关系。我们展示了四种不同情况下的数据:

  • Iperfmemory-to-memory Globus(/dev/zero to /dev/null)disk-to-disk Globus,每个都运行在单个节点上,作为所使用的流数量的函数、

  • Bonnie文件系统基准测试,它首先在我们实验中使用的两台计算机之一上先写后读1 GB的文件。

    ​ 对于Iperfmemory-to-memory Globus,我们运行应用程序60秒。对于disk-to-disk Globus测试,我们传输一个1 GB的文件。对于Bonnie,我们测量了发送方的读性能和接收方的写性能,并报告了两个值中较低的一个。

  • Iperf - 网络性能测试工具

    Iperf是一个 网络带宽测试工具,用于测量 TCP、UDP 和 SCTP 网络性能。它广泛用于测试网络吞吐量、丢包率、时延(延迟)和抖动(Jitter)。

  • Bonnie++ - 硬盘 I/O 测试工具

    Bonnie++ 是一个 磁盘 I/O 性能测试工具,主要用于测量硬盘读写速度、文件系统吞吐量和 IOPS(每秒输入/输出操作数)。它适用于存储系统、RAID 设备、数据库服务器的性能测试。

实验结论:

​ 在LAN的情况下,memory-to-memory Globus性能与Iperf相当,达到瓶颈带宽的92%; disk-to-disk Globus性能与Bonnie相当。

​ 在所有情况下,最多五个流似乎能产生显著差异,之后增加流的数量显示的收益较小。在WAN的disk-to-disk Globus的情况下,我们看到随着数据流的增加,性能会有更多的下降。我们将这一结果归因于当使用更多流时,由于接收到的块无序,在接收器处进行了更多的“查找”操作

Striping

memory-to-memorydisk-to-disk模式下测试了条带数据传输。

实验结论:

  • 在较低的速度下,增加的数据流并不等同于提高的性能,只有当我们接近瓶颈链路速度时,数据流的数量开始才有影响
  • 一般来说,并行流在RTT更高和丢包率更高的情况下更有效,但如果丢包率变得极端到所有流都丢失数据包的程度,我们可能会失去多个流的好处。我们的结果似乎验证了霍华德等人的结论。[31]关于并行TCP流的有效性。我们没有分析公平性或并行TCP对其他网络流的影响。

Scalability

评估Globus GridFTP性能作为客户端数量的函数。使用DiPerf测试框架在多个服务器上部署客户端并收集性能数据。

实验结论:

  • 该服务器支持1800个并发请求,而每个请求只有70%的CPU和0.94 Mbyte内存。
  • 此外,即使分配的内存超过物理内存(意味着正在进行分页),CPU使用率、吞吐量和响应时间也保持合理。
  • 总吞吐量在少于100个客户端的情况下达到25 Mbyte/s,在大约600个客户端的情况下超过40 Mbyte/s。