GT 4.1.0 Release Notes: XIO

1. Component Overview

Globus XIO is an extensible input/output library written in C for the Globus Toolkit. It provides a single API (open/close/read/write) that supports multiple wire protocols, with protocol implementations encapsulated as drivers. The XIO drivers distributed with 4.1.0 include TCP, UDP, file, HTTP, GSI, GSSAPI_FTP, TELNET and queuing.

In addition, Globus XIO provides a driver development interface for use by protocol developers. This interface allows the developer to concentrate on writing protocol code rather than infrastructure, as XIO provides a framework for error handling, asynchronous message delivery, timeouts, etc.

The XIO driver-based approach maximizes the reuse of code by supporting the notion of a driver stack. XIO drivers can be written as atomic units and stacked on top of one another. This modularization provides maximum flexibility and simplifies the design and evaluation of individual protocols.

2. Feature Summary

Features new in release 4.1.0

  • Wrapblock API for easily creating drivers from 3rd party libraries
  • globus-xioperf network speed measuring tool
  • No more dependency on openssl

Other Supported Features

  • Mode E Driver
  • Telnet Driver
  • Queuing Driver
  • Ordering Driver
  • Dynamically loadable drivers.
  • Single API to swappable IO implementations.
  • Asynchronous IO support.
  • Native timeout support.
  • Data descriptors for providing driver specific hints.
  • Modular driver stacks to maximize code reuse.
  • TCP, UDP, file, HTTP, telnet, mode E.

Deprecated Features

  • GSSAPI_FTP driver now distributed with the GridFTP Server
  • GSI driver now in its own package

3. Changes Summary

The following changes have occurred for XIO since the last stable release, 4.0.2:

  • globus-xioperf The globus-xioperf program has been added to the release. This program opperates much like iperf. It allows uses to test network speeds using any GlobusXIO stack.

  • Token Bucket Bandwidth Limiting Driver This new driver allows users to set a bandwidth cap on a GlobusXIO handle.

  • Seperated Out The GSI Driver The GSI driver is now loaded dynamically and thus GlobusXIO can be built without a dependecy on openssl in environmennts that do not need security.

  • Wrapblock Driver Development We added wrapblock functionality which allows driver developers to create drivers using third party libraries much easier. A UDT driver was created using this feature and is available outside of this release.

  • Set Driver Specific Parameters With A String In order to allow end users to set optimization parameters in drivers in such a way that it is transparent to the application we created the SET_STRING functionality. This allows a driver to define a key=value pair string format which the end user can pass directly to the driver without the application needing to know what driver set will be used.

  • Additionally, all platforms supported by GT 4.1.0 Platforms.

6. Technology Dependencies

XIO depends on the following GT components:

  • Globus Core
  • Globus Common
  • Globus GSSAPI

7. Tested Platforms

Tested Platforms for XIO:

  • Linux

    • Mandrakelinux release 10.1
    • SuSE Linux 9.1 (i586)
    • Debian GNU/Linux 3.1
    • Red Hat Linux release 9

  • SunOS

    • SunOS 5.9 sun4u sparc SUNW,Sun-Fire-280R

  • MacOS

    • Darwin Kernel Version 7.9.0

  • Additionally, all platforms supported by GT 4.1.0 Platforms.

8. Backward Compatibility Summary

Protocol changes since GT version 4.0.2

  • None.

API changes since GT version 4.0.2

  • globus_xio_stack_copy added to the API. This allows a user to duplicated a configured stack.
  • globus_xio_driver_set_eof_received added to the driver API. This function allows drivers to have multiple outstanding reads at one time.
  • globus_xio_driver_eof_received added to the driver API. Working in conjunction with globus_xio_driver_set_eof_received to allow drivers to have multiple outstanding reads.
  • Users can now pass in a NULL callback for timeouts and it is assumed that when time expires the user wants the operation to timeout. Previously a user callback was required where the user would decide if they wanted the timeout.

9. Associated Standards

Associated standards for XIO:

Adoption of standards in XIO is determined by the drivers. All drivers distributed by XIO are compliant with the protocol they implement.

10. For More Information

See GT 4.1.0 XIO for more information about this component.