Universidade Federal de Santa Catarina Departamento de Automação e Sistemas Grupo de Estudos de Agentes Móveis e Segurança RELATÓRIO TÉCNICO Testes de Desempenho do protocolo SSL over RMI no Aglets-2.0.2 Galeno Augusto Jung Florianópolis, julho de 2003.
1 Introdução Esta seção tem como objetivo relatar os testes de desempenho realizados na plataforma de agentes móveis Aglets-2.0.2. Esta plataforma foi estendida para suportar o protocolo SSL em todas as suas comunicações, conforme foi descrito anteriormente. 2 - Cenário dos Testes As medições de tempo foram realizadas utilizando o método System.currentTimeMillis(), que obtém os milisegundos da máquina. Assim, obtendo-se os tempos do início e fim da execução da tarefa desejada e subtraindo-se estes tempos, têm-se quantos milisegundos durou a execução em questão. No SSL, quando o cliente faz a primeira requisição no servidor, são executados vários procedimentos no sentido de estabelecer um contexto de segurança SSL o handshake SSL. Para realizar as medidas foram utilizados dois computadores Intel Pentium 4, 2.4GHz com 512MB de memória RAM DDR 333MHz. Além disto, os testes realizados de forma distribuída foram realizados em uma rede local com 100 Mbps Ethernet. Além disto, foi criado um agente móvel, chamado TravelerAgent.java, para a realização das medidas de tempo entre as plataformas. O Código-fonte e a descrição das funcionalidades deste agente podem ser encontrados no Anexo A deste relatório. Abaixo serão descritas as características de cada teste, o procedimento utilizado para sua realização e os resultados obtidos. local. 2.1 - Tempos para inicialização do Tahiti com Serviço de Nomes Procedimento: Inicialização do Tahiti com o Serviço de Nomes na mesma máquina, utilizando o protocolo RMI over SSL. No momento da
inicialização do Tahiti, este se registra no serviço de nomes do Sistema de Agentes Aglets, chamado MAFFinder. Os resultados estão apresentados na Tabela 1. Sem SSL (em ms) Com SSL (em ms) 1 1000 2875 2 984 2828 3 1000 2891 4 990 2875 5 969 2822 6 1004 2890 7 1016 2854 8 998 2846 9 1002 2902 10 978 2828 média 994,1 2861,1 Tabela 1 - Inic. do Tahiti com serviço de nomes local 2.2 - Tempos para inicialização do Tahiti com Serviço de Nomes remoto. Procedimento: Inicialização do Tahiti com o Serviço de Nomes em outra máquina (remoto), utilizando o protocolo SSL over RMI. No momento da inicialização do Tahiti, este se registra no serviço de nomes do Sistema de Agentes Aglets, chamado MAFFinder. Os resultados estão apresentados na Tabela 2. Sem SSL (em ms) Com SSL (em ms) 1 1012 2006 2 1008 1986 3 996 1990 4 1024 1986 5 1027 2024 6 1036 2060
7 1016 2054 8 1028 2022 9 1016 2040 10 1000 2026 média 1016,3 2019,4 Tabela 2 - Inic. do Tahiti com serviço de nomes local 2.3 - Tempos de ida e volta de um agente, com e sem SSL. Procedimento: Tempo que o agente móvel TravelerAgent.java leva para ir de uma máquina para outra e voltar à primeira. Os tempos obtidos são: na criação do agente e no momento de sua chegada na plataforma origem. Na primeira viagem ocorre o handshake SSL, quando acontecem várias trocas de mensagens entre as plataformas envolvidas, por isso, esta viagem é mais demorada. O segundo tempo foi obtido com handshake já finalizado e, por isso, é menor. Os resultados estão apresentados na Tabela 3. Primeira ida e volta (em ms) Segunda ida e volta (em ms) com SSL sem SSL com SSL sem SSL 1 810 653 120 38 2 801 612 116 40 3 789 632 124 44 4 791 591 108 50 5 813 598 112 30 6 803 628 106 34 7 799 609 100 40 8 795 589 112 34 9 790 610 122 38 10 812 591 108 34
média 800,3 611,3 112,8 38,2 Tabela 3 - Tempos de ida e volta de um agente, com e sem SSL 2.4 - Tempos de ida e volta de um agente carregando um array de tamanho variável, com e sem SSL. Procedimento: Tempo que o agente móvel TravelerAgent.java leva para ir de uma máquina para outra e voltar para a primeira. Os tempos obtidos são na criação do agente e no momento de sua chegada na plataforma origem. A primeira volta caracteriza o handshake SSL, quando acontecem várias trocas de mensagens entre as plataformas envolvidas, por isso é mais demorado. O segundo tempo foi obtido com handshake já feito e, por isso, é menor. Além disto, o agente carrega consigo um array de bytes. O tamanho deste array é aumentado conforme mostrado na primeira coluna da Tabela 4, que também apresenta os resultados obtidos. Primeira ida e volta (em ms) Segunda ida e volta (em ms) Array (em bits) com SSL sem SSL com SSL sem SSL 256 1001 691 181 50 512 990 667 201 54 1024 1010 688 160 51 2048 1012 690 171 50 4096 1031 710 180 58 8192 1027 699 177 60 16348 1061 773 190 80 32768 1090 791 191 80 65536 1110 902 230 124 128k 1192 981 460 204 256k 1551 1193 641 480 512k 1991 1410 990 802 1024k 2612 1897 2011 1298 Tabela 4 - Tempos de um agente carregando um array de tamanho variável
Tempos locais Tempo médio (em ms) Inicialização do Tahiti (com SSL) 2861,1 Inicialização do Tahiti (sem SSL) 994,1 Tabela 5 - Tempos obtidos numa mesma máquina Rede Local Tempo médio (em ms) Inicialização do Tahiti (com SSL) 2019,4 Inicialização do Tahiti (sem SSL) 1016,3 RMI over SSL (primeira ida e volta) 800,3 RMI over SSL (segunda ida e volta) 112,8 RMI sem SSL (primeira ida e volta) 611,3 RMI sem SSL (segunda ida e volta) 38,2 Tabela 6 - Tempos obtidos na Rede Local 3 - Análise dos Resultados As Tabelas 5 e 6 apresentam as médias dos tempos de ida e volta do agente TravelerAgent.java em diferentes situações de rede, obtidos nas medições feitas entre a plataforma fonte e a plataforma destino. A Tabela 5 Tabela mostra as medidas realizadas em apenas um computador, estando o cliente, o servidor e o serviço de nomes executando nele. Estas medidas permitem avaliar o custo de processamento adicional relativo às computações do código SSL. Da Tabela 5, observa-se que o tempo de processamento adicional torna o tempo de inicialização do Tahiti com SSL é praticamente 3 (três) vezes maior do que sem SSL. A Tabela 6 apresenta as medidas obtidas de forma distribuída (em uma rede local com 100 Mbps Ethernet), utilizando dois computadores, ambos da mesma configuração da máquina descrita anteriormente. Através desta tabela, pode-se concluir que a inicialização do Tahiti utilizando SSL torna-se 2 (duas)
vezes mais lenta se comparada com a sem SSL. Outra análise importante é quanto aos tempos de ida e volta de um agente através da Rede Local descrita acima. Quanto a primeira ida e volta, a degradação imposta pelo SSL é de aproximadamente 35 %. Para a segunda ida e volta, a degradação fica em torno de 300%. Além destas, outra importante medida realizada foi a do tempo de envio de pacotes (Figura 1) com diferentes tamanhos, entre a plataforma fonte e a plataforma destino, com as mesmas configurações de hardware comentadas acima. O tamanho dos pacotes e os tempos obtidos estão especificados na Tabela. Tempos de envio de pacotes 3000 2500 Tempo (ms) 2000 1500 1000 500 0 256 512 1024 2048 4096 8192 16348 32768 65536 128k 256k 512k 1024k Tamanho do pacote (bits) primeira ida e volta om SSL segunda ida e volta com SSL primeira ida e volta sem SSL terceira ida e volta sem SSL Figura 1 - Tempo de envio de pacotes Pode-se observar no gráfico acima que os tempos de envio de pacotes sem SSL são sempre menores. Estes resultados refletem o custo do suporte de segurança para criptografar mensagens transmitidas pela rede. Quando se analisa a primeira ida e volta do Agente, nota-se uma degradação quase constante de aproximadamente 30%. Ao analisar a segunda ida e volta, esta degradação diminui, ficando em torno de 20%.