Grid ASCII Helper Protocol


Introduction

The objective of the Grid ASCII Helper Protocol (GAHP) is to provide services to a variety of grid interfaces (including the Globus Toolkit) via a simple ASCII-based protocol. A process that implements GAHP is referred to as a GAHP server. GAHP is designed to handle both synchronous (blocking) and asynchronous (non-blocking) calls.

The first GAHP specification focuses upon GRAM, GASS, MyPROXY, and DUROC grid services. This document assumes the reader is familiar with general Globus Toolkit concepts and functionality.

Why GAHP?

Although the Globus Toolkit provides a C API and implementation, and CoG kits based upon Globus technology provide bindings in a variety of other languages, there are several distinct advantages to using an independent GAHP server process instead of linking a library into a body of existing code. For instance, parts of the native Globus Toolkit API provide only synchronous/blocking calls. Toolkit users that require a non-blocking/asynchronous interface must make use of multiple threads, which is assisted by the fact that the Globus Toolkit is thread-safe. However, thread safety requires that _all_ modules linked into the process be both re-entrant and in agreement upon a threading model. This may be a significant barrier when trying to integrate Globus Toolkit services into legacy non-thread-safe code, or when attempting to link with commercial libraries which either have no support for threads or define their own threading model. But because the GAHP server runs as a separate process, it can be easily implemented as a multi-threaded server, and still present an asynchronous non-blocking protocol.

GAHP facilitates the construction of multi-tier systems. A first tier client can easily send ASCII commands via a socket (perhaps securely via an SSH or SSL tunnel) to a second tier running a GAHP server, allowing Grid services to be consolidated at the second or third tier with minimal effort.

Furthermore GAHP, like many other simple ASCII-based protocols, supports the concept of component-based development independent of the software language used with minimal complexity. The C API for Globus technologies differ from the Java bindings which differ from the Perl bindings. By using GAHP, a body of software could be written once with one interface and then subsequently utilize a GAHP server written in C, Java, or Perl -- and said GAHP server could be running locally or as a daemon on a remote host.

Does this sound like many of the same advantages often associated with web services? Absolutely. The "GAHP" is intended to "fill the gap" until grid services are exposed as either web services or via the Open Grid Services Architecture (OGSA). But this could take quite some time -- until then, the GAHP protocol is useful to satisfy immediate needs. The protocol is designed first and foremost for the ease and rapid development of GAHP servers.

Downloads

There are several GAHP protocols available, each designed to communicate with a specific remote job submission system. At the time of this writing they are:

The Condor Project at University of Wisconsin-Madison has developed the following GAHP server implementations:
NameGrid systemImplemenationAvailabilitySource Code
GT2 GAHPGlobus 2 GRAMCCondor 6.4.*Source code
GT3.2 GAHPGlobus 3.2 WS GRAMJavaCondor 6.7.* Source code
GT4 GAHPGlobus 4 WS GRAMJavaTBA (or by request) 
C-GAHPCondorC++Condor 6.7.9Source code
Unicore GAHPUNICOREJavaCondor 6.9.x+Gzipped Tar Source code

The National Computing Science Alliance (NCSA) has developed a GAHP server written in pure Java, using the Java CoG. Any platform with a Java 1.2 virtual machine available can run this GAHP server. Contact jalameda@ncsa.uiuc.edu for up-to-date information about this Java CoG-based GAHP server.

Our collaborators at INFN have developed a GAHP server (unoficially called BLAHP) for submitting to PBS & LSF schedulers. Please contact Francesco Prelz (Francesco.Prelz@mi.infn.it) for more info.