Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Virual Organizations use dedicated endpoint storm for data managemant and data transfer:

For example, AMS use storm-fe-ams for the disco area (/storage/gpfs_ams), but storm-archive to write on the buffer tape (/storage/gpfs_archive/ams).

...

Now we consider two tools for the SRM protocol: Gfal utils e ClientSRM.

...

Gfal utils

$ gfal-ls srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4

L’access path “virgo4” punta (nella configurazione dell’endpoint storm) a /storage/gpfs_virgo/virgo4.

$ gfal-copy srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia_2905 .

Copying srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia_2905   [DONE]  after 4s

$ gfal-rm srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia_2905

srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia_2905 DELETED

$ gfal-copy /etc/services srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia

Copying file:///etc/services   [DONE]  after 4s

$ gfal-sum srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia ADLER32

srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia 6408a0a8

(Di default, StoRM salva per i file che processa il checksum di tipo ADLER32 in un attributo dedicato:

# getfattr -d /storage/gpfs_virgo4/virgo4/prova_lucia

getfattr: Removing leading '/' from absolute path names

# file: storage/gpfs_virgo4/virgo4/prova_lucia

user.storm.checksum.adler32="6408a0a8"

)

Tutti i comandi gfal: https://dmc-docs.web.cern.ch/dmc-docs/gfal2-util.html

2.3.2 clientSRM utils:

Con questi tool:

  • leggere un file equivale a fare una clientSRM PrepareToGet, una o più clientSRM StatusPrepareToGet, globus-url-copy.
  • scrivere un file equivale a fare una clientSRM PrepareToPut, una o più clientSRM StatusPrepareToPut, globus-url-copy e una clientSRM PutDone.

Tutti questi passaggi di cui gfal è un wrapper semplificato possono essere utili per debuggare e capire dove sta un problema (se lato backend o lato gridftp).

Esempio di scrittura:

(obbligatorio specificare l’endpoint con la porta e il SURL su cui si vuole andare a scrivere)

$ clientSRM PtP -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia

============================================================

...

Documentation is available here [15]. However the user can get the full list using the command: man gfal-copy.


Most used commands are:

  • gfal-ls: List information about the file
  • gfal-xattr: Display attributes of a file or set them to a new value
  • gfal-cat: Concatenate file to standard output
  • gfal-mkdir: Create the DIRECTORY(ies), if they do not already exist
  • gfal-stat: Display extended information about a file or directory
  • gfal-chmod: Change the permissions of a file
  • gfal-rename: Renames SOURCE to DESTINATION
  • gfal-sum: Calculates the checksum of the specified file, using a specified checksum algoritm
  • gfal-rm: Removes each specified file or directory
  • gfal-save: Reads from stdin and writes to a file until it finds EOF

These are the steps to install Gfal assuming the machine is CentOS7:

  1. Enable epel repo:
    curl http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm >/tmp/epel-release-latest-7.noarch.rpm
    sudo rpm -ivh /tmp/epel-release-latest-7.noarch.rpm
  2. Enable egi repo:
    echo '\[EGI-trustanchors\]name=EGI-trustanchorsbaseurl=http://repository.egi.eu/sw/production/cas/1/current/gpgkey=http://repository.egi.eu/sw/production/cas/1/GPG-KEY-EUGridPMA-RPM-3gpgcheck=1enabled=1' | sudo tee /etc/yum.repos.d/egi.repo

  3. Install several tools:
    sudo yum install -y gfal2-util gfal2-all fetch-crl ca-policy-egi-core globus-proxy-utils
  4. Install personal certificate on the machine:
    cd $HOME
    mkdir -p .globus
    cd .globus
    openssl pkcs12 -clcerts -nokeys -in cert.p12 -out usercert.pem
    openssl pkcs12 -nocerts -in cert.p12 -out userkey.pem
    chmod 600 usercert.pem
    chmod 400 userkey.pem

To check all is correctly working:

grid-proxy-init -valid 168:00
gfal-copy --version

The last command should produce a list of the available protocols. The list should include gridftp. If this is not the case, try to do: yum update.

Some examples below.

-bash-4.2$ gfal-ls srm:

...

//storm-fe-archive.cr.cnaf.infn.it:8444/virgo4

Before execute:

Afer execute:

Request Status Code 17

Poll Flag 0

============================================================

Request status:

  statusCode="SRM_REQUEST_QUEUED"(17)

============================================================

SRM Response:

  requestToken="f0d142d9-06d0-46a0-a822-d9903ab051f9"

  arrayOfFileStatuses (size=1)

...

generated
virgo
RomePSS
virgoin
virgoout_O2LH_01_0127_067_-81.305_-90.000_.mat
prova_lucia2
prova_lucia3
vedovato
virgojob_summary_O2LH_01_0127_067_-81.305_-90.000_.mat
virgoRomePSS
testalbe
vdbroeck
prova_lucia
prova_andrea


...

-bash-4.2$ gfal-rm 
srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_

...

andrea
srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_andrea DELETED


-bash-4.2$ gfal-copy /home/USER-SUPPORT/arendina/sleep.sub srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_andrea
Copying file:///home/USER-SUPPORT/arendina/sleep.sub [DONE] after 2s


-bash-4.2$ gfal-sum srm

   [0] status: statusCode="SRM_REQUEST_QUEUED"(17)

               explanation=""

============================================================

Verificare lo status passando il token (step che può essere evitato con l’opzione -p a clientSRM PtP):

...

://storm-fe-archive.cr.cnaf.infn.it:8444

...

/virgo4/prova_andrea ADLER32
srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_andrea 2bca5372


For all the gfal commands see [16].

ClientSRM utils

Con questi tool:

  • leggere un file equivale a fare una clientSRM PrepareToGet, una o più clientSRM StatusPrepareToGet, globus-url-copy.
  • scrivere un file equivale a fare una clientSRM PrepareToPut, una o più clientSRM StatusPrepareToPut, globus-url-copy e una clientSRM PutDone.


Tutti questi passaggi di cui gfal è un wrapper semplificato possono essere utili per debuggare e capire dove sta un problema (se lato backend o lato gridftp).

Esempio di scrittura:

(obbligatorio specificare l’endpoint con la porta e il SURL su cui si vuole andare a scrivere)

$ clientSRM PtP -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia

============================================================

Sending StatusPtP request to: httpg://storm-fe-archive.cr.cnaf.infn.it:8444

Before execute:

Afer execute:

Request Status Code 0

Poll Flag 0

============================================================

Request status:

  statusCode="SRM_SUCCESS"(0)

  explanation="All chunks successfully handled!"

Sending PtP request to: httpg://storm-fe-archive.cr.cnaf.infn.it:8444

Before execute:

Afer execute:

Request Status Code 17

Poll Flag 0

=============================================================

SRM Response:

  arrayOfFileStatuses (size=1)

   [0] SURL="srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia"

Request status:

  statusCode   [0] status: statusCode="SRM_SPACEREQUEST_AVAILABLEQUEUED"(2417)

               explanation="srmPrepareToPut successfully handled!"

   [0] TURL="gsiftp://ds-915.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/prova_lucia"

===============================================================

Il TURL così ottenuto (notare che contiene un gridftp di storm-archive, ds-915) può essere usato per fare la copia su file locale “copia”:

$ globus-url-copy gsiftp://ds-915.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/prova_lucia copia

Occorre terminare con una PutDone, perché la richiesta non resti aperta nel database di StoRM:

SRM Response:

  requestToken="f0d142d9-06d0-46a0-a822-d9903ab051f9"

  arrayOfFileStatuses (size=1)

   [0] SURL="srm$ clientSRM Pd -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -t "9bcfa6fa-8626-4f8e-a1a3-0947fc449736" -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia/virgo4/prova_lucia"

   [0] status: statusCode="SRM_REQUEST_QUEUED"(17)

               explanation=""

============================================================

Verificare lo status passando il token (step che può essere evitato con l’opzione -p a clientSRM PtP):

$ clientSRM SPtP -e Sending PutDone request to: httpg://storm-fe-archive.cr.cnaf.infn.it:8444

Before execute:

Afer execute:

Request Status Code 0

Poll Flag 0

-t "f0d142d9-06d0-46a0-a822-d9903ab051f9"

=============================================================

Request status:

  statusCode="SRM_SUCCESS"(0)

Sending StatusPtP request to: httpg://storm-fe-archive.cr.cnaf.infn.it:8444

Before execute:

Afer execute:

Request Status Code 0

Poll Flag 0  explanation="All file requests are successfully completed"

============================================================

SRM ResponseRequest status:

  arrayOfFileStatuses (size=1)

   [0] SURL="srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia"

   [0] status: statusCode="SRM_SUCCESS"  statusCode="SRM_SUCCESS"(0)

               explanation  explanation="SuccessAll chunks successfully handled!"

============================================================

SRM Response:

  arrayOfFileStatuses (size=1)

   [0] SURL="srmTutti i comandi clientSRM: https://italiangrid.github.io/storm/documentation/clientsrm-guide/

In case of local to remote transfer, you have to request the storage space in the destination filesystem and this is done with the command clientSRM PTP, where PTP stands for Prepare To Put. In case of remote to local transfer the command is clientSRM PTG, where PTG stands for Prepare To Get.

clientSRM PTP –v NIG -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/srm/managerv2?SFN=/virgo4/test.mt.002 
clientSRM PTG –v NIG -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/srm/managerv2?SFN=/virgo4/test.mt.002
where:
  • -v is the verbose level,
  • -e is used to specify the endpoint,
  • -s is used to specify the destination surl, which is composed by a space token (virgo4 in the example) and the file path. The space token will be communicated by the Experiment Support group.

and the complete list of options is listed by the command clientSRM PTP -help or in [17]. The output should be something like this:

storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia"

   [0] status: statusCode="SRM_SPACE_AVAILABLE"(24)

               explanation="srmPrepareToPut successfully handled!"

   [0] TURL="gsiftp://ds-915.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/prova_lucia"

============================================================

...

Il TURL così ottenuto (notare che contiene un gridftp di storm-archive, ds-915) può essere usato per fare la copia su file locale “copia”:

$ globus-url-copy gsiftp://ds-915.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/prova_lucia copia

Occorre terminare con una PutDone, perché la richiesta non resti aperta nel database di StoRM:

$ clientSRM Pd -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -t "9bcfa6fa-8626-4f8e-a1a3-0947fc449736" -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia

============================================================

...

Sending PutDone request to: httpg://storm-fe-archive.cr.cnaf.infn.it:8444

...

Before execute:

Afer execute:

Request Status Code 0

Poll Flag 0

============================================================

...

Request status:

  statusCode="SRM_SUCCESS"(0)

  explanation="All file requests are successfully completed"

============================================================

SRM Response:

  arrayOfFileStatuses (size=1)

   [0] SURL="srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/prova_lucia"

   [0] status: statusCode="SRM_SUCCESS"(0)

               explanation="Success"

======================

...

=

...

=

...

====================================




Tutti i comandi clientSRM: https://italiangrid.github.io/storm/documentation/clientsrm-guide/

In case of local to remote transfer, you have to request the storage space in the destination filesystem and this is done with the command clientSRM PTP, where PTP stands for Prepare To Put. In case of remote to local transfer the command is clientSRM PTG, where PTG stands for Prepare To Get.

clientSRM PTP –v NIG -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -s ========================
SRM Response:
requestToken="{*}fd5256b6-5cb3-4fe2-a82d-3ba316f1f1f8{*}"
remainingTotalRequestTime=NULL
arrayOfFileStatuses (size=1)
\[0\] SURL="srm://storm-fe-archive.cr.cnaf.infn.it:8444/srm/managerv2?SFN=/virgo4/test.mt.002"
\[0\] status: statusCode="SRM_REQUEST_QUEUED"(17)
explanation=""
\[0\] fileSize=NULL
\[0\] estimatedWaitTime=NULL
\[0\] remainingPinLifetime=NULL
\[0\] remainingFileLifetime=NULL
\[0\] TURL=NULL
\[0\] transferProtocolInfo=NULL
============================================================

It is important to pay attention to the request token, which will be used later. Then it is necessary to check the status of the request with clientSRM SPTP (Status of Prepare To Put) or clientSRM SPTG (Status of Prepare To Get).

clientSRM SPTP -v -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -t fd5256b6-5cb3-4fe2-a82d-3ba316f1f1f8
clientSRM SPTG -v -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -t fd5256b6-5cb3-4fe2-a82d-3ba316f1f1f8

where with –t you provide the token shown in the output of the clientSRM PTP command. The output will show you whether the request is successful in the status field.


clientSRM PTG –v NIG -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/srm/managerv2?SFN=/virgo4/test.mt.002
where:
  • -v is the verbose level,
  • -e is used to specify the endpoint,
  • -s is used to specify the destination surl, which is composed by a space token (virgo4 in the example) and the file path. The space token will be communicated by the Experiment Support group.

and the complete list of options is listed by the command clientSRM PTP -help or in [17]. The output should be something like this:

============================================================
Behavior:
poll: 0
verbose level: NIG
============================================================
Input data:
authorizationID=NULL
storageSystemInfo=NULL
arrayOfFileRequests (size=

...

1)
\[0\] targetSURL="srm://storm-fe-archive.cr.cnaf.infn.it:8444

...

/srm/managerv2?SFN=/virgo4/test.mt.002"
\[0\] expectedFileSize=NULL
userRequestDescription=NULL
overwriteOption=NULL
desiredTotalRequestTime=NULL
desiredPinLifeTime=NULL
desiredFileLifeTime=NULL
desiredFileStorageType=NULL
targetSpaceToken=NULL
targetFileRetentionPolicyInfo=NULL
transferParameters=NULL
==================================================

...

=

...

=

...

========
Sending PtP request to: httpg://storm-fe-archive.cr.cnaf.infn.it:8444
Before execute:
Afer execute:
Request Status Code 17
Poll Flag 0
====================================================

...

========
Request status:
statusCode="SRM_REQUEST_QUEUED"(17)
explanation=NULL
============================================================

...


SRM Response:
requestToken="{*}fd5256b6-5cb3-4fe2-a82d-3ba316f1f1f8{*}"
remainingTotalRequestTime=NULL
arrayOfFileStatuses (size=1)
\[0\] SURL="srm://storm-fe

It is important to remember the TURL which will be used in transfer command with globus-url-copy command. After that we can perform the file transfer. In case of local to remote:

globus-url-copy file:///<local_path>/file gsiftp://gridftp-storm-archive.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/test.mt.002

or in case of remote to local:

globus-url-copy gsiftp://gridftp-storm-archive.cr.cnaf.infn.it:28118444//storage/gpfs_virgo4/virgo4/test.mt.002* *file:///<local_path>/file

The full list of the available options is available using:

man globus-url-copy

Some useful options:

  • -f FILENAME : Read a list of URL pairs from filename. Each line should contain sourceURL destURL. Enclose URLs with spaces in double qoutes ("). Blank lines and lines beginning with # will be ignored.
  • -df FILENAME, -dumpfile FILENAME : Path to a file where untransferred URLs will be saved for later restarting. Resulting file is the same format as the -f input file. If file exists, it will be read and all other URL input will be ignored.
  • -cd, -create-dest : Create destination directory if needed.
  • -r : Copy files in subdirectories
  • -v, -verbose : Display URLs being transferred
  • -p PARALLELISM, -parallel PARALLELISM : pecify the number of parallel data connections should be used.
  • -list URL : List the files located at URL.
  • -sync : Only transfer files where the destination does not exist or differs from the source. -sync-level controls how to determine if files differ.
  • -sync-level number : Criteria for determining if files differ when performing a sync transfer. The default sync level is 2.
    The available levels are:
    • Level 0: will only transfer if the destination does not exist.
    • Level 1: will transfer if the size of the destination does not match the size of the source.
    • Level 2: will transfer if the time stamp of the destination is older than the time stamp of the source.
    • Level 3: will perform a checksum of the source and destination and transfer if the checksums do not match.

To list the file in a directory, you can use the command clientSRM LS.

...

virgo4/test.mt.002"
\[0\] status: statusCode="SRM_REQUEST_QUEUED"(17)
explanation=""
\[0\] fileSize=NULL
\[0\] estimatedWaitTime=NULL
\[0\] remainingPinLifetime=NULL
\[0\] remainingFileLifetime=NULL
\[0\] TURL=NULL
\[0\] transferProtocolInfo=NULL
============================================================

It is important to pay attention to the request token, which will be used later. Then it is necessary to check the status of the request with clientSRM SPTP (Status of Prepare To Put) or clientSRM SPTG (Status of Prepare To Get).

clientSRM SPTP -v -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -t fd5256b6-5cb3-4fe2-a82d-3ba316f1f1f8
clientSRM SPTG -v -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -t fd5256b6-5cb3-4fe2-a82d-3ba316f1f1f8

where with –t you provide the token shown in the output of the clientSRM PTP command. The output will show you whether the request is successful in the status field.

============================================================
Sending StatusPtP request to: httpg://storm-fe-archive.cr.cnaf.infn.it:8444

...

More information on using SRM clients can be found here [18].

...

Wiki Markup
Documentation is available here \[22\].
These are the steps to install Gfal assuming the machine is CentOS7:
  1. Enable epel repo:
    curl http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm >/tmp/epel-release-latest-7.noarch.rpm
    sudo rpm -ivh /tmp/epel-release-latest-7.noarch.rpm
  2. Enable egi repo:
    echo '\[EGI-trustanchors\]name=EGI-trustanchorsbaseurl=http://repository.egi.eu/sw/production/cas/1/current/gpgkey=http://repository.egi.eu/sw/production/cas/1/GPG-KEY-EUGridPMA-RPM-3gpgcheck=1enabled=1' | sudo tee /etc/yum.repos.d/egi.repo
  3. Install several tools:
    sudo yum install -y gfal2-util gfal2-all fetch-crl ca-policy-egi-core globus-proxy-utils
  4. Install personal certificate on the machine:
    cd $HOME
    mkdir -p .globus
    cd .globus
    openssl pkcs12 -clcerts -nokeys -in cert.p12 -out usercert.pem
    openssl pkcs12 -nocerts -in cert.p12 -out userkey.pem
    chmod 600 usercert.pem
    chmod 400 userkey.pem

To check all is correctly working:

grid-proxy-init -valid 168:00
gfal-copy --version

The last command should produce a list of the available protocols. The list should include gridftp. If this is not the case, try to do: yum update
Here an example, to copy file:
gfal-copy /home/CTA/tenticta/file_1MB srm://storm-fe-archive.cr.cnaf.infn.it:8444/srm/managerv2?SFN=/ctadisk /vo.cta.in2p3.fr/user/t/tenticta/file_1MB.03
GFal options are very similar to the ones of lcg-utils. You could get the full list using the command: man gfal-copy
Most used commands are:

...


Before execute:
Afer execute:
Request Status Code 0
Poll Flag 0
============================================================
Request status:
statusCode="SRM_SUCCESS"(0)
explanation="All chunks successfully handled!"
============================================================
SRM Response:
  arrayOfFileStatuses (size=1)
      \[0\] SURL="srm://storm-fe-archive.cr.cnaf.infn.it:8444/virgo4/test.mt.002"
      \[0\] status: statusCode="{*}SRM_SPACE_AVAILABLE{*}"(24)
             explanation="srmPrepareToPut successfully handled!"
      \[0\] *TURL="gsiftp://gridftp-storm-archive.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/test.mt.002"*
============================================================

It is important to remember the TURL which will be used in transfer command with globus-url-copy command. After that we can perform the file transfer. In case of local to remote:

globus-url-copy file:///<local_path>/file gsiftp://gridftp-storm-archive.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/test.mt.002

or in case of remote to local:

globus-url-copy gsiftp://gridftp-storm-archive.cr.cnaf.infn.it:2811//storage/gpfs_virgo4/virgo4/test.mt.002* *file:///<local_path>/file

The full list of the available options is available using:

man globus-url-copy

Some useful options:

  • -f FILENAME : Read a list of URL pairs from filename. Each line should contain sourceURL destURL. Enclose URLs with spaces in double qoutes ("). Blank lines and lines beginning with # will be ignored.
  • -df FILENAME, -dumpfile FILENAME : Path to a file where untransferred URLs will be saved for later restarting. Resulting file is the same format as the -f input file. If file exists, it will be read and all other URL input will be ignored.
  • -cd, -create-dest : Create destination directory if needed.
  • -r : Copy files in subdirectories
  • -v, -verbose : Display URLs being transferred
  • -p PARALLELISM, -parallel PARALLELISM : pecify the number of parallel data connections should be used.
  • -list URL : List the files located at URL.
  • -sync : Only transfer files where the destination does not exist or differs from the source. -sync-level controls how to determine if files differ.
  • -sync-level number : Criteria for determining if files differ when performing a sync transfer. The default sync level is 2.
    The available levels are:
    • Level 0: will only transfer if the destination does not exist.
    • Level 1: will transfer if the size of the destination does not match the size of the source.
    • Level 2: will transfer if the time stamp of the destination is older than the time stamp of the source.
    • Level 3: will perform a checksum of the source and destination and transfer if the checksums do not match.

To list the file in a directory, you can use the command clientSRM LS.

clientSRM Ls -e httpg://storm-fe-archive.cr.cnaf.infn.it:8444 -s srm://storm-fe-archive.cr.cnaf.infn.it:8444/srm/managerv2?SFN=/virgo4/

More information on using SRM clients can be found here [18].

...

Anchor
trans_http
trans_http
Data transfers using http endpoints (with both proxies and tokens)

...