**[GSM-WG plans for SRM interface specification]{.underline}**

Arie Shoshani

(with inputs from Peter Kunszt, Alex Sim, Junmin Gu)

In the GSM charter, we have indicated that the SRM interface
specification for GGF will proceed in two steps: SRM-Basic and
SRM-advanced. The table below summarizes the features that we plan to
include in each. A short explanation of the features follows the table.

+-------------------------+--------------------+----------------------+
| **SRM feature**         | **basic**          | **advanced**         |
+-------------------------+--------------------+----------------------+
| get/put multiple files  | yes                | yes                  |
+-------------------------+--------------------+----------------------+
| lifetime per file       | negotiated         | negotiated           |
| (TURL)                  |                    |                      |
+-------------------------+--------------------+----------------------+
| Reserve space           | implicit           | Explicit/negotiated  |
+-------------------------+--------------------+----------------------+
| Find out space assigned | no                 | yes                  |
+-------------------------+--------------------+----------------------+
| SRM service status      | yes                | yes                  |
+-------------------------+--------------------+----------------------+
| User service status     | no                 | yes                  |
+-------------------------+--------------------+----------------------+
| release file            | yes                | yes                  |
+-------------------------+--------------------+----------------------+
| lifetime per space      | no                 | negotiated           |
+-------------------------+--------------------+----------------------+
| release space           | automatic          | yes                  |
+-------------------------+--------------------+----------------------+
| multi-file streaming\*  | optional           | yes                  |
+-------------------------+--------------------+----------------------+
| transfer protocol       | yes                | yes                  |
| negotiation             |                    |                      |
+-------------------------+--------------------+----------------------+
| Namespace (directory)   | no                 | yes                  |
| support                 |                    |                      |
+-------------------------+--------------------+----------------------+
| File metadata discovery | yes                | yes                  |
+-------------------------+--------------------+----------------------+
| file and space types    | Volatile,          | yes                  |
|                         | permanent          |                      |
+-------------------------+--------------------+----------------------+
| Get/put files from/to   | no                 | no                   |
| remote sites            |                    |                      |
+-------------------------+--------------------+----------------------+
| copy from/to remote     | no                 | Yes                  |
| sites                   |                    |                      |
|                         |                    | Copy&get             |
|                         |                    |                      |
|                         |                    | Put&copy             |
+-------------------------+--------------------+----------------------+

\* not affecting interfaces

Feature groups

1\. remote copy

2\. namespace management

3\. Space Management

4\. Adminstrative status

Future features groups

1\. Authorization --ACLs

2\. Accounting

[Features and their explanation]{.underline}

1)  Get/put files -- the ability to request to get multiple files from
    the SRM or to put multiple files into the SRM in a single function
    call. In the case of a request-to-get the SRM returns the location
    of the files. In the case of a request-to-put, the SRM returns the
    locations where to put the files into. This is a basic feature
    required for both the Basic and Advanced SRMs.

2)  Lifetime per file -- the ability to "pin" a file for a certain
    "lifetime". The file can be removed by the SRM when lifetime
    expires, or the SRM can choose to take another action. In the
    SRM-Basic version, the lifetime is system assigned. In the
    SRM-Advanced version this can be negotiated by the client.

3)  Release file -- the ability for the client to "release" the pin of a
    file. This allows the client to have more space as soon as the file
    is released, and makes the SRM space management more efficient. This
    feature is required for both the SRM-Basic and the SRM-Advanced
    versions.

4)  Space reservation -- this refers to the allocation of space to a
    client upon a request to get or put files, and as an explicit
    request for space. In the SRM-Basic version there is no support for
    explicit request for space. In the SRM-Advanced version, space can
    be negotiated.

5)  Lifetime per space -- this refers to the ability to reserve multiple
    spaces, each with its own lifetime. In the SRM-Basic version there
    is no support for explicit request for space lifetime. In the
    SRM-Advanced version, space lifetime can be negotiated.

6)  Release space -- the ability to release the space even if the
    lifetime of the files in that space did not expire. This lets the
    SRM know to release all the unused space, and continue to release
    the space as files are released or their lifetime expires. This
    feature is only available in the SRM-Advanced version.

7)  Multi-file streaming -- the ability to queue a large file request
    and pin only part of the files according to the client's space
    quota. As files are released by the client, additional files are
    pinned as the space quota permits. This allows the files to get
    files in a "streaming" fashion, even if the space quota is smaller
    than the total size of the files requested.

8)  Transfer protocol negotiation -- This refers to the ability of the
    client to provide an ordered list of transfer protocols such as
    GridFTP, FTP, HTTP, etc. and have the SRM return the highest
    possible protocol that its system can support. This allows the
    flexibility to adapt various transfer protocols as needed. This
    feature is required for both the SRM-Basic and the SRM-Advanced
    versions.

9)  File system support -- the ability to provide a file system
    management in the spaces that are allocated to clients, and the
    ability of the client to refer to that file structure. This includes
    the usual capability of making directories, putting and removing
    files from them, etc. This feature is only available in the
    SRM-Advanced version.

10) File and space types -- This refers to file types "permanent",
    "durable", and "volatile". Permanent files have no lifetime,
    volatile files have a lifetime and can be removed by the SRM when
    the lifetime expires, and durable files have a lifetime, but cannot
    be removed by the SRM, but the SRM can archive them and release the
    space and/or notify the client. This feature is only available in
    the SRM-Advanced version.

11) Get/put files from/to remote sites -- This refers to the ability of
    an SRM to get/put files from/to other sites, not only from spaces it
    manages. This feature is optional for both the SRM-Basic and the
    SRM-Advanced versions. If this option is not supported the SRM is
    considered "local". A local SRM is one that only supports requests
    to get or put files into its managed spaces.

12) Copy directory from/to remote sites -- This is similar to the above
    capability, except that an entire directory can be specified in a
    single function call. In the SRM-Basic version this feature is not
    available. In the SRM-Advanced version, this feature is optional (in
    the case of a "local" SRM), but if the option to get/put files
    from/to other sites is supported, then copying of entire directories
    is supported as well.

The intention of the SRM-Basic is to minimize the requirements for an
SRM. An SRM-basic that is local and that does not support "data
streaming" (no queuing of requests are needed) is very simple to
implement, in that very few features are needed, yet it can respond to
requests for files it manages or files that can be put into its system.

[Distinguishing between the functionality and the framework]{.underline}

We intend to generate specifications that are independent from a
specific framework, as well as a specification for a framework endorsed
by GGF. It seems that the current trend is to move all specifications
towards the WSRF. Accordingly, we plan to generate along with the
functional specification, as WSRF-specific SRM specification.