sábado, 31 de julho de 2010

Simulação: globus-url-copy e gridftp

== Cenário para simulação ==
O objetivo é testar o funcionamento de serviços de transferência de arquivos do Globus 5.0, utilizando o cliente globus-url-copy e o gridftp-server, no entanto, com uma particularidade: o ipv6.
Após realizar algumas pesquisas em artigos científicos, e em sites de busca, identificamos a escassez de materiais demonstrando o uso destas ferramentas com o ipv6. Dessa forma, preparamos um cenário de simulação para realizar os testes e verificar esta funcionalidade.
Os testes foram realizados em máquinas virtuais Fedora Core 12, com 256MB de  memória. Foram instalados os softwares globus-url-copy e globus-gridftp-server, respectivamente, na máquina virtual cliente e servidor.

== Desabilitamos os serviços: ==
su -c 'chkconfig --level 2345 sendmail off'
su -c 'chkconfig --level 2345 ip6tables off'
su -c 'chkconfig --level 2345 iptables off'


== Instalação apartir dos fontes ==
wget http://www.globus.org/ftppub/gt5/5.0/5.0.2/installers/src/gt5.0.2-all-source-installer.tar.bz2
bunzip2 gt5.0.2-all-source-installer.tar.bz2
tar xvf gt5.0.2-all-source-installer.tar
cd gt5.0.2-all-source-installer
./configure --prefix=/usr/share/globus
make gridftp install


Com o processo de instalação bem sucedido, é necessário realizar as configurações recomendadas.
== Criar arquivo gridftp.conf em /etc ==
port 5000
allow_anonymous 1
anonymous_user root
debug 1
log_single /var/log/gridftp_s.log

log_level ALL
banner "Saudacoes"

== Para rodar utilizando o xinetd, criar o arquivo gsiftp (/etc/xinet.d/) ==
service gsiftp
{
instances = 1000
socket_type = stream
protocol = tcp
wait = no
user = root
env += GLOBUS_LOCATION=/usr/share/globus
env += LD_LIBRARY_PATH=/usr/share/globus/lib
env += GLOBUS_TCP_PORT_RANGE=50000,51000
server = /usr/share/globus/sbin/globus-gridftp-server
server_args =  -i
nice = 10
flags = KEEPALIVE
disable = no
}

Para utilizar as aplicações por meio do ipv6, é necessário configurar um endereço para os dispositivos de interface.
Utilizamos o endereço a:b:c:d:e:f:1:1/64 para o cliente, a:b:c:d:e:f:1:3/64 para o servidor.
ifconfig eth0 add a:b:c:d:e:f:1:2/64

ifconfig eth0 add a:b:c:d:e:f:1:3/64

Para realizar o teste de conectividade, utilize:
ping6 a:b:c:d:e:f:1:3 (apartir da estação cliente) ou

ping6 a:b:c:d:e:f:1:2 (apartir da estação servidor)

O arquivo /etc/resolv.conf não deve ter conteúdo. A próxima etapa é dar início aos testes. O comando abaixo realiza a execução do serviço gridftp, no servidor. O parâmetro -hostname :: identifica que o serviço estará utilizando ipv6.
/usr/share/globus/sbin# ./globus-gridftp-server -c /etc/gridftp.conf -hostname ::

Utilizando outro terminal, é possível verificar a execução do serviço gridftp-server, na porta 5000, por meio do comando:
netstat --inet6 -l -n

Para realizar uma transferência, apartir da estação cliente, utilize o comando:
/usr/share/globus/bin# ./globus-url-copy -dbg -vb -ipv6 file:///home/sander/PC_Lab_2.pdf ftp://[a:b:c:d:e:f:1:6]:5000/tmp/PC_Lab_2.pdf

Realizamos o monitoramento do servidor, e coletamos as seguintes informações:
root@Matrix:/home/sander# more /var/log/gridftp_s.log
[22848] Tue Aug  3 18:03:47 2010 :: GFork functionality not enabled: globus_gfork_child_worker_start() failed:
globus_gfork: GFork error: Env not set

[22848] Tue Aug  3 18:03:47 2010 :: Configuration read from /etc/gridftp.conf.
[22848] Tue Aug  3 18:03:47 2010 :: Server started in daemon mode.
[22848] Tue Aug  3 18:03:50 2010 :: New connection from: maquina2:59794
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: USER anonymous
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 331 Password required for anonymous.
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: PASS globus@
[22848] Tue Aug  3 18:03:50 2010 :: User anonymous successfully authorized.
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: PASS globus@
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 230 User anonymous logged in.
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: SITE HELP
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 214-The following commands are recognized:
    ALLO    APPE    REST    CWD     CDUP    DCAU    EPSV    FEAT
    ERET    MDTM    STAT    ESTO    HELP    LIST    MODE    NLST
    MLSD    PASV    RNFR    MLST    NOOP    OPTS    STOR    PASS
    PBSZ    PORT    PROT    SITE    EPRT    RETR    SPOR    SCKS
    TREV    PWD     QUIT    SBUF    SIZE    SPAS    STRU    SYST
    RNTO    TYPE    USER    LANG    MKD     RMD     DELE    CKSM
214 End
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: FEAT
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 211-Extensions supported
 AUTHZ_ASSERT
 UTF8
 LANG EN
 DCAU
 PARALLEL
 SIZE
 MLST Type*;Size*;Modify*;Perm*;Charset;UNIX.mode*;UNIX.owner*;UNIX.group*;Unique*;UNIX.slink*;
 ERET
 ESTO
 SPAS
 SPOR
 REST STREAM
 MDTM
 PASV AllowDelayed;
211 End.
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: SITE CLIENTINFO scheme=ftp;appname="globus-url-copy";appver="5.7 (gcc32dbg, 1279048311-80) [Globus Toolkit 5.0.2]";
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 250 OK.
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: TYPE I
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 200 Type set to I.
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: EPSV
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 229 Entering Passive Mode (|2|::|43935|)
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: ALLO 106588
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [SERVER]: 200 ALLO command successful.
[22848] Tue Aug  3 18:03:50 2010 :: maquina2:59794: [CLIENT]: STOR /tmp/PC_Lab_2.pdf
[22848] Tue Aug  3 18:18:50 2010 :: Requesting abort...
[22848] Tue Aug  3 18:18:50 2010 :: Finished transferring "/tmp/PC_Lab_2.pdf".
[22848] Tue Aug  3 18:18:50 2010 :: Transfer stats: DATE=20100803211850.938161 HOST=:: PROG=globus-gridftp-server NL.EVNT=FTP_INFO START=20100803210350.848819 USER=anonymous FILE=
/tmp/PC_Lab_2.pdf BUFFER=0 BLOCK=262144 NBYTES=0 VOLUME=/ STREAMS=1 STRIPES=1 DEST=[0.0.0.0] TYPE=STOR CODE=226
[22848] Tue Aug  3 18:18:50 2010 :: Closed connection from maquina2:59794


Para demonstrar que as aplicações funcionam, utilizamos o ipv4, e apresentamos as informações coletadas no monitoramento logo abaixo. Para executar o servidor, utilizamos o comando:
/usr/share/globus/sbin# ./globus-gridftp-server -c /etc/gridftp.conf

Utilizando outro terminal, é possível verificar a execução do serviço gridftp-server, na porta 5000, por meio do comando:
netstat -l -n

Para realizar uma transferência, apartir da estação cliente, utilize o comando:
/usr/share/globus/bin# ./globus-url-copy -dbg -vb file:///home/sander/PC_Lab_2.pdf ftp://192.168.1.67:5000/tmp/PC_Lab_2.pdf

root@Matrix:/home/sander# more /var/log/gridftp_s.log
[24646] Tue Aug  3 18:55:22 2010 :: GFork functionality not enabled: globus_gfork_child_worker_start() failed:
globus_gfork: GFork error: Env not set

[24646] Tue Aug  3 18:55:22 2010 :: Configuration read from /etc/gridftp.conf.
[24646] Tue Aug  3 18:55:22 2010 :: Server started in daemon mode.
[24646] Tue Aug  3 18:55:25 2010 :: New connection from: Matrix.local:37723
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: USER anonymous
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 331 Password required for anonymous.
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: PASS globus@
[24646] Tue Aug  3 18:55:25 2010 :: User anonymous successfully authorized.
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: PASS globus@
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 230 User anonymous logged in.
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: SITE HELP
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 214-The following commands are recognized:
    ALLO    APPE    REST    CWD     CDUP    DCAU    EPSV    FEAT
    ERET    MDTM    STAT    ESTO    HELP    LIST    MODE    NLST
    MLSD    PASV    RNFR    MLST    NOOP    OPTS    STOR    PASS
    PBSZ    PORT    PROT    SITE    EPRT    RETR    SPOR    SCKS
    TREV    PWD     QUIT    SBUF    SIZE    SPAS    STRU    SYST
    RNTO    TYPE    USER    LANG    MKD     RMD     DELE    CKSM
214 End
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: FEAT
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 211-Extensions supported
 AUTHZ_ASSERT
 UTF8
 LANG EN
 DCAU
 PARALLEL
 SIZE
 MLST Type*;Size*;Modify*;Perm*;Charset;UNIX.mode*;UNIX.owner*;UNIX.group*;Unique*;UNIX.slink*;
 ERET
 ESTO
 SPAS
 SPOR
 REST STREAM
 MDTM
 PASV AllowDelayed;
211 End.
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: SITE CLIENTINFO scheme=ftp;appname="globus-url-copy";appver="5.7 (gcc32dbg, 1279048311-80) [Globus Toolkit 5.0.2]
";
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 250 OK.
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: TYPE I
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 200 Type set to I.
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: PASV
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 227 Entering Passive Mode (10,10,0,72,223,54)
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: ALLO 106588
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 200 ALLO command successful.
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [CLIENT]: STOR /tmp/PC_Lab_2.pdf
[24646] Tue Aug  3 18:55:25 2010 :: Starting to transfer "/tmp/PC_Lab_2.pdf".
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 150 Begining transfer.
[24646] Tue Aug  3 18:55:25 2010 :: Finished transferring "/tmp/PC_Lab_2.pdf".
[24646] Tue Aug  3 18:55:25 2010 :: Transfer stats: DATE=20100803215525.193049 HOST=matrix PROG=globus-gridftp-server NL.EVNT=FTP_INFO START=20100803215525.164476 USER=anonymous F
ILE=/tmp/PC_Lab_2.pdf BUFFER=65536 BLOCK=262144 NBYTES=106588 VOLUME=/ STREAMS=1 STRIPES=1 DEST=[10.10.0.72] TYPE=STOR CODE=226
[24646] Tue Aug  3 18:55:25 2010 :: Matrix.local:37723: [SERVER]: 226 Transfer Complete.
[24646] Tue Aug  3 18:55:25 2010 :: Closed connection from Matrix.local:37723


Os testes para realizar transferências com o ipv6 (cliente globus-url-copy e o servidor GridFTP) não foram bem sucedidos, e esperamos encontrar a solução em breve.

== References ==
https://wiki.birncommunity.org:8443/display/BIRNDOC/GridFTP+Guides

http://www.globus.org/toolkit/docs/5.0/5.0.0/data/gridftp/

http://technical.bestgrid.org/index.php/Setup_GridFTP_on_IBM_p520